index.vue 9.0 KB

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