list.vue 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. <template>
  2. <div class="app-container">
  3. <!-- 顶部操作区域 -->
  4. <div class="filter-container">
  5. <div class="filter-control">
  6. <span>活动名称:</span>
  7. <el-input
  8. v-model="listQuery.name"
  9. placeholder="活动名称"
  10. clearable
  11. @keyup.enter.native="getList"
  12. @clear="getList"
  13. />
  14. </div>
  15. <div class="filter-control">
  16. <span>小程序状态:</span>
  17. <el-select v-model="listQuery.status" style="width: 120px" clearable @change="getList">
  18. <el-option value="" label="请选择" />
  19. <el-option :value="1" label="未开始" />
  20. <el-option :value="2" label="进行中" />
  21. <el-option :value="3" label="已结束" />
  22. </el-select>
  23. </div>
  24. <div class="filter-control">
  25. <span>状态:</span>
  26. <el-select v-model="listQuery.activityStatus" style="width: 120px" clearable @change="getList">
  27. <el-option value="" label="请选择" />
  28. <el-option :value="1" label="已启用" />
  29. <el-option :value="2" label="已停用" />
  30. </el-select>
  31. </div>
  32. <div class="filter-control">
  33. <el-button type="primary" @click="getList"> 查询 </el-button>
  34. <el-button type="primary" @click="getList"> 添加活动 </el-button>
  35. </div>
  36. </div>
  37. <!-- 列表 -->
  38. <el-table v-loading="isLoading" :data="list" border style="width: 100%" height="660">
  39. <el-table-column prop="name" label="活动名称" align="center" width="200">
  40. <template slot-scope="{ row }">
  41. {{ row.name ? row.name : '---' }}
  42. </template>
  43. </el-table-column>
  44. <el-table-column prop="status" label="小程序状态" align="center" width="200">
  45. <template slot-scope="{ row }">
  46. <el-tag v-if="row.status === 1" type="success" size="small">已启用</el-tag>
  47. <el-tag v-else type="info" size="small">已停用</el-tag>
  48. <el-button
  49. v-if="row.status === 2"
  50. type="success"
  51. size="mini"
  52. style="margin: 4px"
  53. @click="handleShangeStatus(row.id, row.status)"
  54. >
  55. 启用
  56. </el-button>
  57. <el-button
  58. v-else
  59. type="warning"
  60. size="mini"
  61. style="margin: 4px"
  62. @click="handleShangeStatus(row.id, row.status)"
  63. >
  64. 停用
  65. </el-button>
  66. </template>
  67. </el-table-column>
  68. <el-table-column prop="status" label="小程序状态" align="center" width="200">
  69. <template slot-scope="{ row }">
  70. <el-tag v-if="row.status === 1" type="warning" size="small">未开始</el-tag>
  71. <el-tag v-if="row.status === 2" type="success" size="small">进行中</el-tag>
  72. <el-tag v-if="row.status === 3" type="info" size="small">已结束</el-tag>
  73. </template>
  74. </el-table-column>
  75. <el-table-column prop="beginTime" label="开始时间" align="center">
  76. <template slot-scope="{ row }">
  77. {{ row.beginTime ? row.beginTime : '---' }}
  78. </template>
  79. </el-table-column>
  80. <el-table-column prop="endTime" label="结束时间" align="center">
  81. <template slot-scope="{ row }">
  82. {{ row.endTime ? row.endTime : '---' }}
  83. </template>
  84. </el-table-column>
  85. <el-table-column prop="addTime" label="创建时间" align="center">
  86. <template slot-scope="{ row }">
  87. {{ row.addTime ? row.addTime : '---' }}
  88. </template>
  89. </el-table-column>
  90. <el-table-column fixed="right" label="操作" align="center">
  91. <template slot-scope="{ row }">
  92. <el-button type="primary" size="mini" style="margin: 2px" @click="handleRecordDetail(3, row)">
  93. 商品列表
  94. </el-button>
  95. <el-button type="primary" size="mini" style="margin: 2px" @click="handleRecordDetail(3, row)">
  96. 编辑
  97. </el-button>
  98. <el-button type="danger" size="mini" style="margin: 2px" @click="handleRecordDetail(3, row)">
  99. 删除
  100. </el-button>
  101. </template>
  102. </el-table-column>
  103. </el-table>
  104. <!-- 页码 -->
  105. <pagination
  106. :total="total"
  107. :page-sizes="[10, 20, 30, 100]"
  108. :page-size="20"
  109. :page.sync="listQuery.pageNum"
  110. :limit.sync="listQuery.pageSize"
  111. @pagination="getHeHeProductActive"
  112. />
  113. </div>
  114. </template>
  115. <script>
  116. import { getHeHeProductActive } from '@/api/stricts/active/active'
  117. export default {
  118. name: 'ActivitysList',
  119. filters: {
  120. activityStatusFilters(value) {
  121. const map = {
  122. 1: '未开始',
  123. 2: '进行中',
  124. 3: '已结束'
  125. }
  126. return map[value]
  127. }
  128. },
  129. data() {
  130. return {
  131. isLoading: true,
  132. listQuery: {
  133. status: '',
  134. name: '',
  135. activityStatus: '',
  136. pageNum: 1,
  137. pageSize: 20
  138. },
  139. list: [],
  140. total: 0
  141. }
  142. },
  143. computed: {},
  144. created() {
  145. this.getList()
  146. },
  147. mounted() {},
  148. methods: {
  149. // 获取行为记录列表
  150. getList() {
  151. this.list = []
  152. this.listQuery.pageNum = 1
  153. this.getHeHeProductActive()
  154. },
  155. // 获取首页导航列表
  156. async getHeHeProductActive() {
  157. try {
  158. this.isLoading = true
  159. const res = await getHeHeProductActive(this.listQuery)
  160. this.list = res.data.results
  161. this.total = res.data.totalRecord
  162. this.isLoading = false
  163. } catch (error) {
  164. console.log(error)
  165. }
  166. },
  167. // 菜单排序
  168. async consultSort(row) {
  169. try {
  170. // await consultSort({ id: row.id, sortNumber: row.sortNumber })
  171. this.getList()
  172. } catch (error) {
  173. console.log(error)
  174. }
  175. }
  176. }
  177. }
  178. </script>
  179. <style>
  180. .avatar-uploader .el-upload {
  181. border: 1px dashed #d9d9d9;
  182. border-radius: 6px;
  183. cursor: pointer;
  184. position: relative;
  185. overflow: hidden;
  186. float: left;
  187. }
  188. .uploader-tips {
  189. position: absolute;
  190. bottom: 0;
  191. left: 160px;
  192. line-height: 28px;
  193. color: red;
  194. margin: 0;
  195. }
  196. </style>