index.vue 6.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. <template>
  2. <div class="subPage">
  3. <div class="system-table-search">
  4. <div class="flex-h">
  5. <ul class="searchFilterLine" style="white-space: normal;">
  6. <li>
  7. <el-select v-model="postData.caseid" placeholder="请选择案场">
  8. <el-option
  9. v-for="item in cases"
  10. :key="item.CaseId"
  11. :label="item.CaseName"
  12. :value="item.CaseId">
  13. </el-option>
  14. </el-select>
  15. </li>
  16. <li>
  17. <el-select v-model="postData.typeid" placeholder="请选择课程类别">
  18. <el-option
  19. v-for="item in courseTypeList"
  20. :key="item.LocationId"
  21. :label="item.LocationName"
  22. :value="item.LocationId">
  23. </el-option>
  24. </el-select>
  25. </li>
  26. <li>
  27. <el-input
  28. placeholder="请输入课程活动名称"
  29. v-model="postData.name"
  30. clearable>
  31. </el-input>
  32. </li>
  33. <li style="white-space: nowrap;">
  34. <span>下单时间:</span>
  35. <el-date-picker
  36. value-format="yyyy-MM-dd"
  37. v-model="postData.begindate"
  38. type="date"
  39. placeholder="选择起始日期">
  40. </el-date-picker>
  41. <span></span>
  42. <el-date-picker
  43. value-format="yyyy-MM-dd"
  44. v-model="postData.enddate"
  45. type="date"
  46. placeholder="选择截止日期">
  47. </el-date-picker>
  48. </li>
  49. </ul>
  50. </div>
  51. <div class="flex-h">
  52. <div class="flex-item flex-h"></div>
  53. <el-button
  54. size="mini"
  55. type="primary" @click="search">搜索</el-button>
  56. <el-button
  57. size="mini"
  58. type="success" @click="exportExcel">导出Excel</el-button>
  59. </div>
  60. <div class="moreFilter"></div>
  61. </div>
  62. <div class="system-table-box">
  63. <el-table
  64. :data="courseOrderList"
  65. stripe
  66. style="width: 100%">
  67. <el-table-column
  68. prop="OrdersNo"
  69. label="订单编号">
  70. </el-table-column>
  71. <el-table-column
  72. prop="CourseName"
  73. label="课程名称">
  74. </el-table-column>
  75. <el-table-column
  76. prop="CaseName"
  77. label="所属案场">
  78. </el-table-column>
  79. <el-table-column
  80. prop="LocationName"
  81. label="课程类别">
  82. </el-table-column>
  83. <el-table-column
  84. prop="BeginDate"
  85. label="课程时间"
  86. width="140px">
  87. <template slot-scope="scope">
  88. {{scope.row.BeginDate === '0001-01-01T00:00:00Z' ? '-' : toolClass.dateFormat(scope.row.BeginDate)}}<br>
  89. -<br>
  90. {{scope.row.EndDate === '0001-01-01T00:00:00Z' ? '-' : toolClass.dateFormat(scope.row.EndDate)}}
  91. </template>
  92. </el-table-column>
  93. <el-table-column
  94. prop="CustomerName"
  95. label="用户姓名">
  96. </el-table-column>
  97. <el-table-column
  98. prop="Name"
  99. label="微信昵称">
  100. </el-table-column>
  101. <el-table-column
  102. prop="Phone"
  103. label="手机号">
  104. </el-table-column>
  105. <el-table-column
  106. prop="CreateDate"
  107. label="下单时间"
  108. width="140px">
  109. <template slot-scope="scope">
  110. {{scope.row.CreateDate === '0001-01-01T00:00:00Z' ? '-' : toolClass.dateFormat(scope.row.CreateDate)}}
  111. </template>
  112. </el-table-column>
  113. </el-table>
  114. </div>
  115. <el-pagination
  116. @current-change="handleCurrentChange"
  117. :current-page.sync="postData.page"
  118. :page-size="postData.pagesize"
  119. layout="prev, pager, next, jumper"
  120. :total="total">
  121. </el-pagination>
  122. </div>
  123. </template>
  124. <script>
  125. import { mapState, createNamespacedHelpers } from 'vuex'
  126. import tableSearch from '@/components/tableSearch/index'
  127. const { mapState: mapStaState, mapActions: mapStaActions } = createNamespacedHelpers('sta')
  128. const { mapState: mapCmsState, mapActions: mapCmsActions } = createNamespacedHelpers('cms')
  129. export default {
  130. name: '',
  131. data () {
  132. return {
  133. total: 0,
  134. postData: { // 表格搜索条件
  135. caseid: '', // 案场id
  136. typeid: '', // 获取方式
  137. begindate: '', // 起始日期
  138. enddate: '', // 截止日期
  139. name: '', // 卡券名称
  140. page: 1, // 当前页码
  141. pagesize: 10, // 请求数据量
  142. },
  143. currentList: [],
  144. typeList: [],
  145. statusList: [],
  146. }
  147. },
  148. computed: {
  149. ...mapState({
  150. cases: x => x.app.cases.list,
  151. defaultCaseId: x => x.app.cases.default
  152. }),
  153. ...mapStaState({
  154. courseOrderList: x => x.courseOrder.list || [],
  155. }),
  156. ...mapCmsState({
  157. courseTypeList: x => x.location || [],
  158. }),
  159. CaseId: {
  160. get () {
  161. return this.postData.caseid || this.defaultCaseId
  162. },
  163. set (val) {
  164. this.postData.caseid = val
  165. }
  166. }
  167. },
  168. components: {
  169. tableSearch,
  170. },
  171. mounted () {
  172. this.$nextTick(function () {
  173. this.updateLocationInfo().then((res) => {
  174. // console.log(JSON.stringify(res))
  175. })
  176. this.getList()
  177. })
  178. },
  179. methods: {
  180. ...mapCmsActions([
  181. 'updateLocationInfo',
  182. ]),
  183. ...mapStaActions([
  184. 'getCourseOrderList',
  185. ]),
  186. search () { // 搜索
  187. this.page = 1
  188. this.getList()
  189. },
  190. handleCurrentChange (val) { // 跳转到分页
  191. this.page = val
  192. this.getList()
  193. },
  194. getList () {
  195. this.getCourseOrderList(this.postData).then((res) => {
  196. // console.log(JSON.stringify(res))
  197. this.postData.page = res.page
  198. this.total = res.pagenum
  199. })
  200. },
  201. exportExcel () {
  202. window.location.href = `${this.toolClass.ReplaceOrg(this.$api.statistics.courseOrderExcel.url)}?token=${localStorage.getItem('JWT')}`
  203. },
  204. }
  205. }
  206. </script>
  207. <!-- Add "scoped" attribute to limit CSS to this component only -->
  208. <style lang="scss" scoped>
  209. @import "page.scss";
  210. .searchFilterLine{
  211. >li{
  212. margin-bottom: 20px;
  213. }
  214. }
  215. </style>