index.vue 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. <template>
  2. <div class="app-container">
  3. <!-- 查询和其他操作 -->
  4. <div class="filter-container">
  5. <el-radio-group v-model="listQuery.type" class="filter-item" size="mini" @input="handleSearch">
  6. <el-radio-button :label="1">全部</el-radio-button>
  7. <el-radio-button :label="2">我参与的</el-radio-button>
  8. </el-radio-group>
  9. <el-radio-group
  10. v-model="listQuery.signType" class="filter-item" style="margin-left:10px;" size="mini"
  11. @input="handleSearch"
  12. >
  13. <el-radio-button :label="1">平台优惠券</el-radio-button>
  14. <el-radio-button :label="2">平台秒杀</el-radio-button>
  15. <el-radio-button :label="3">平台限时折扣</el-radio-button>
  16. <el-radio-button :label="5">消费金活动</el-radio-button>
  17. <el-radio-button :label="6">组合活动</el-radio-button>
  18. </el-radio-group>
  19. <el-input
  20. v-model="listQuery.activityName" clearable size="mini" class="filter-item"
  21. maxlength="15"
  22. style="width: 200px;margin-left:10px;" placeholder="请输入活动名称"
  23. />
  24. <el-select
  25. v-model="listQuery.state" clearable size="mini" class="filter-item"
  26. style="width: 200px;margin-left: 10px;" placeholder="请选择活动状态"
  27. >
  28. <el-option label="报名未开始" value="0" />
  29. <el-option label="报名进行中" value="1" />
  30. <el-option label="活动待开始" value="2" />
  31. <el-option label="活动进行中" value="3" />
  32. <el-option label="活动已结束" value="4" />
  33. </el-select>
  34. <el-select
  35. v-model="listQuery.state" clearable size="mini" class="filter-item"
  36. style="width: 200px;margin-left: 10px;" placeholder="请选择审核状态"
  37. >
  38. <el-option label="待审核" value="0" />
  39. <el-option label="报名成功" value="1" />
  40. <el-option label="报名失败" value="2" />
  41. </el-select>
  42. <el-button
  43. size="mini" class="filter-item" type="primary" icon="el-icon-search"
  44. style="margin-left:10px;"
  45. @click="handleSearch"
  46. >
  47. 查找
  48. </el-button>
  49. <el-button size="mini" type="info" class="filter-item" @click="handleReset">
  50. 重置
  51. </el-button>
  52. </div>
  53. <!-- 查询结果 -->
  54. <div v-tableHeight>
  55. <el-table
  56. v-loading="listLoading" height="100%" element-loading-text="正在查询中。。。" :data="list"
  57. v-bind="{ stripe: true, size: 'small', border: true, fit: true, highlightCurrentRow: true }"
  58. >
  59. <el-table-column prop="activityName" label="活动名称" show-overflow-tooltip />
  60. <el-table-column prop="bondMoney" label="活动保证金" show-overflow-tooltip />
  61. <el-table-column prop="signTime" label="报名时间" width="170" />
  62. <el-table-column prop="activityTime" label="活动时间" width="170" />
  63. <el-table-column label="活动优惠" show-overflow-tooltip>
  64. <template slot-scope="scope">
  65. <div v-if="scope.row.discountProgramme == 1">满减</div>
  66. <div v-if="scope.row.discountProgramme == 2">优惠券</div>
  67. <div>{{ scope.row.details }}</div>
  68. </template>
  69. </el-table-column>
  70. <el-table-column prop="activityIntroduce" label="活动简介" show-overflow-tooltip />
  71. <el-table-column label="活动状态" show-overflow-tooltip>
  72. <template slot-scope="scope">
  73. <span v-if="scope.row.state == 0">报名未开始</span>
  74. <span v-if="scope.row.state == 1">报名进行中</span>
  75. <span v-if="scope.row.state == 2">活动待开始</span>
  76. <span v-if="scope.row.state == 3">活动进行中</span>
  77. <span v-if="scope.row.state == 4">活动已结束</span>
  78. </template>
  79. </el-table-column>
  80. <el-table-column label="报名状态" show-overflow-tooltip>
  81. <template slot-scope="scope">
  82. <span v-if="scope.row.signState == 0">待审核</span>
  83. <span v-if="scope.row.signState == 1">报名成功</span>
  84. <span v-if="scope.row.signState == 2">报名失败</span>
  85. <span v-if="scope.row.signState == null">未报名</span>
  86. </template>
  87. </el-table-column>
  88. <el-table-column align="center" label="操作" width="260" fixed="right" class-name="small-padding fixed-width">
  89. <template slot-scope="{ row }">
  90. <el-button
  91. v-if="row.operation === 1" type="primary" size="mini"
  92. @click="$refs.SignActivity && $refs.SignActivity.handleOpen(row)"
  93. >
  94. 立即报名
  95. </el-button>
  96. <el-button
  97. v-if="row.operation === 2" type="primary" size="mini" disabled
  98. @click="$refs.SignActivity && $refs.SignActivity.handleOpen(row)"
  99. >
  100. 立即报名
  101. </el-button>
  102. <el-button
  103. v-if="row.operation === 3" type="warning" size="mini"
  104. @click="$refs.ActivityDetail && $refs.ActivityDetail.handleOpen(row)"
  105. >
  106. 活动数据
  107. </el-button>
  108. <el-button
  109. v-if="row.operation === 4" type="primary" size="mini"
  110. @click="$refs.SignActivity && $refs.SignActivity.handleOpen(row)"
  111. >
  112. 重新报名
  113. </el-button>
  114. <el-button
  115. v-if="row.operation === 5" type="primary" size="mini"
  116. @click="$refs.SignActivity && $refs.SignActivity.handleOpen(row)"
  117. >
  118. 继续报名
  119. </el-button>
  120. </template>
  121. </el-table-column>
  122. </el-table>
  123. </div>
  124. <div>
  125. <el-pagination
  126. :current-page="listQuery.page" :page-sizes="[10, 20, 50, 100]" :page-size="listQuery.pageSize"
  127. layout="total, sizes, prev, pager, next, jumper" :total="total"
  128. @size-change="(val) => ((listQuery.pageSize = val) && getList())"
  129. @current-change="(val) => ((listQuery.page = val) && getList())"
  130. />
  131. </div>
  132. <!-- 活动报名 -->
  133. <SignActivity ref="SignActivity" @success="getList" />
  134. <!-- 查看活动详情 -->
  135. <ActivityDetail ref="ActivityDetail" @success="getList" />
  136. </div>
  137. </template>
  138. <script>
  139. import SignActivity from './components/SignActivity'
  140. import ActivityDetail from './components/ActivityDetail'
  141. import { activityGetAll } from '@/api/active'
  142. export default {
  143. name: 'Active',
  144. components: {
  145. SignActivity,
  146. ActivityDetail
  147. },
  148. data() {
  149. return {
  150. list: [],
  151. total: 0,
  152. listLoading: true,
  153. listQuery: {
  154. page: 1,
  155. pageSize: 10,
  156. type: 1, // 查询类型 1-全部 2-我参与的
  157. activityName: '', // 活动名称
  158. state: '',
  159. examineState: '',
  160. signType: 1
  161. }
  162. }
  163. },
  164. created() {
  165. this.getList()
  166. },
  167. methods: {
  168. async getList() {
  169. this.listLoading = true
  170. try {
  171. const res = await activityGetAll(this.listQuery)
  172. this.list = res.data.list
  173. this.total = res.data.total
  174. } finally {
  175. this.listLoading = false
  176. }
  177. },
  178. handleSearch() {
  179. this.listQuery.page = 1
  180. this.getList()
  181. },
  182. handleReset() {
  183. this.listQuery = { page: 1, pageSize: 10, type: 1, activityName: '', state: '', examineState: '', signType: 1 }
  184. this.getList()
  185. }
  186. }
  187. }
  188. </script>
  189. <style lang="scss" scoped>
  190. .app-container {
  191. padding: 20px;
  192. display: flex;
  193. flex-direction: column;
  194. .filter-container {
  195. .filter-item {
  196. display: inline-block;
  197. vertical-align: middle;
  198. margin-bottom: 10px;
  199. }
  200. }
  201. .small-padding {
  202. .cell {
  203. padding-left: 5px;
  204. padding-right: 5px;
  205. }
  206. }
  207. .fixed-width {
  208. .el-button--mini {
  209. padding: 7px 10px;
  210. }
  211. }
  212. }
  213. </style>