product_order.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372
  1. <template>
  2. <div class="body-wrapper">
  3. <el-tabs v-model="activeName">
  4. <el-tab-pane label="停车卡订单查询" name="停车卡订单查询">
  5. <el-form class="form-wrapper" :inline="true" :model="formInline1" style="margin-bottom: 20px;">
  6. <el-row>
  7. <el-col :span="6">
  8. <el-form-item label="商品名称:">
  9. <el-input v-model="formInline1.goods_name" placeholder="请输入"></el-input>
  10. </el-form-item>
  11. </el-col>
  12. <el-col :span="6">
  13. <el-form-item label="发布状态:">
  14. <el-select clearable v-model="formInline1.release_status" placeholder="请选择" popper-class="cur-select">
  15. <el-option label="全部" value=""></el-option>
  16. <el-option label="上架" value="1"></el-option>
  17. <el-option label="下架" value="0"></el-option>
  18. </el-select>
  19. </el-form-item>
  20. </el-col>
  21. <el-col :span="8">
  22. <el-form-item label="可购买时间:">
  23. <el-date-picker
  24. v-model="formInline1.time"
  25. type="daterange"
  26. range-separator="至"
  27. value-format="yyyy-MM-dd"
  28. start-placeholder="开始日期"
  29. end-placeholder="结束日期">
  30. </el-date-picker>
  31. </el-form-item>
  32. </el-col>
  33. <el-col :span="4">
  34. <el-form-item>
  35. <el-button type="primary" class="query-btn" @click="onSubmit1" icon="el-icon-search">查询</el-button>
  36. </el-form-item>
  37. </el-col>
  38. </el-row>
  39. </el-form>
  40. <el-table border :row-class-name="rowClassName" :data="tableData1" v-loading="loading1">
  41. <el-table-column v-for="(item, index) in columns1" :key="index" :label="item.label" :prop="item.key">
  42. </el-table-column>
  43. </el-table>
  44. <div class="table-pagination">
  45. <el-pagination layout="total, prev, pager, next, jumper" :total="total1" @current-change="handlePageChange1"
  46. :current-page.sync="pageNum1" :page-size.sync="pageSize1">
  47. </el-pagination>
  48. </div>
  49. </el-tab-pane>
  50. <el-tab-pane label="错峰卡订单查询" name="错峰卡订单查询">
  51. <el-form class="form-wrapper" :inline="true" :model="formInline2" style="margin-bottom: 20px;">
  52. <el-row>
  53. <el-col :span="8">
  54. <el-form-item label="订单号: ">
  55. <el-input v-model="formInline2.orderNo" placeholder="请输入"></el-input>
  56. </el-form-item>
  57. </el-col>
  58. <el-col :span="8">
  59. <el-form-item label="车牌号: ">
  60. <el-input v-model="formInline2.plateNo" placeholder="请输入"></el-input>
  61. </el-form-item>
  62. </el-col>
  63. <el-col :span="8">
  64. <el-form-item>
  65. <el-button type="primary" class="query-btn" @click="onSubmit2" icon="el-icon-search">查询</el-button>
  66. </el-form-item>
  67. </el-col>
  68. </el-row>
  69. </el-form>
  70. <el-table border :row-class-name="rowClassName" :data="tableData2" v-loading="loading2">
  71. <el-table-column v-for="(item, index) in columns2" :key="index" :label="item.label" :prop="item.key">
  72. </el-table-column>
  73. </el-table>
  74. <div class="table-pagination">
  75. <el-pagination layout="total, prev, pager, next, jumper" :total="total1" @current-change="handlePageChange2"
  76. :current-page.sync="pageNum2" :page-size.sync="pageSize2">
  77. </el-pagination>
  78. </div>
  79. </el-tab-pane>
  80. <el-tab-pane label="预约停车订单" name="预约停车订单">
  81. <el-form class="form-wrapper" :inline="true" :model="formInline3" style="margin-bottom: 20px;">
  82. <el-row>
  83. <el-col :span="6">
  84. <el-form-item label="手机号:">
  85. <el-input v-model="formInline3.user_phone" placeholder="请输入"></el-input>
  86. </el-form-item>
  87. </el-col>
  88. <el-col :span="6">
  89. <el-form-item label="车牌号:">
  90. <el-input v-model="formInline3.plate_no" placeholder="请输入"></el-input>
  91. </el-form-item>
  92. </el-col>
  93. <el-col :span="6">
  94. <el-form-item label="停车场:">
  95. <el-select filterable v-model="formInline3.car_park_id" placeholder="请选择" clearable>
  96. <el-option
  97. v-for="(item,index) in parkDic"
  98. :key="index"
  99. :label="item.parkName"
  100. :value="item.id" />
  101. </el-select>
  102. </el-form-item>
  103. </el-col>
  104. <el-col :span="5">
  105. <el-form-item>
  106. <el-button type="primary" class="query-btn" @click="onSubmit3" icon="el-icon-search">查询</el-button>
  107. </el-form-item>
  108. </el-col>
  109. </el-row>
  110. </el-form>
  111. <el-table border :row-class-name="rowClassName" :data="tableData3" v-loading="loading3">
  112. <el-table-column v-for="(item, index) in columns3" :key="index" :label="item.label" :prop="item.key">
  113. </el-table-column>
  114. </el-table>
  115. <div class="table-pagination">
  116. <el-pagination layout="total, prev, pager, next, jumper" :total="total3" @current-change="handlePageChange3"
  117. :current-page.sync="pageNum3" :page-size.sync="pageSize3">
  118. </el-pagination>
  119. </div>
  120. </el-tab-pane>
  121. </el-tabs>
  122. </div>
  123. </template>
  124. <script>
  125. import api from "@/api/audit.js";
  126. import dictionary from "@/util/dictionary";
  127. import api_z from "@/api/article_z.js";
  128. import moment from 'moment'
  129. export default {
  130. components: {},
  131. data() {
  132. return {
  133. loading1: false,
  134. loading2: false,
  135. loading3: false,
  136. activeName: '停车卡订单查询',
  137. columns1: [
  138. {
  139. label: '商品名称',
  140. key: 'goods_name'
  141. },
  142. {
  143. label: '所需金额(分)',
  144. key: 'reality_price'
  145. },
  146. {
  147. label: '总库存',
  148. key: 'goods_total_number'
  149. },
  150. {
  151. label: '剩余库存量',
  152. key: 'goods_number'
  153. },
  154. {
  155. label: '发布状态',
  156. key: 'release_status'
  157. },
  158. {
  159. label: '可购买时间',
  160. key: 'good_range'
  161. },
  162. {
  163. label: '创建时间',
  164. key: 'goods_create_time'
  165. },
  166. {
  167. label: '最后修改时间',
  168. key: 'goods_update_time'
  169. },
  170. ],
  171. tableData1: [],
  172. total1: 0,
  173. pageSize1: 10,
  174. pageNum1: 1,
  175. formInline1: {
  176. goods_name: '',
  177. release_status:'',
  178. time: []
  179. },
  180. columns2: [
  181. {
  182. label: '订单编号',
  183. key: 'orderNo'
  184. },
  185. {
  186. label: '车牌号',
  187. key: 'plateNo'
  188. },
  189. {
  190. label: '停车场',
  191. key: 'parkName'
  192. },
  193. {
  194. label: '支付金额',
  195. key: 'payAmount'
  196. },
  197. {
  198. label: '支付方式',
  199. key: 'payWay'
  200. },
  201. {
  202. label: '支付状态',
  203. key: 'payStatus'
  204. },
  205. ],
  206. tableData2: [],
  207. total2: 0,
  208. pageSize2: 10,
  209. pageNum2: 1,
  210. formInline2: {
  211. orderNo: '',
  212. plateNo:''
  213. },
  214. columns3: [
  215. {
  216. label: '手机号',
  217. key: 'appointment_phone'
  218. },
  219. {
  220. label: '车牌号',
  221. key: 'plate_no'
  222. },
  223. {
  224. label: '车场',
  225. key: 'car_park_name'
  226. },
  227. {
  228. label: '车位',
  229. key: 'parking_space'
  230. },
  231. {
  232. label: '预约时间',
  233. key: 'appointment_time'
  234. },
  235. {
  236. label: '状态',
  237. key: 'appointment_status'
  238. },
  239. {
  240. label: '取消方',
  241. key: 'cancel_type'
  242. },
  243. {
  244. label: '取消原因',
  245. key: 'cancel_reason'
  246. },
  247. {
  248. label: '最后更新时间',
  249. key: 'latest_time'
  250. },
  251. ],
  252. tableData3: [],
  253. total3: 0,
  254. pageSize3: 10,
  255. pageNum3: 1,
  256. formInline3: {
  257. user_phone: '',
  258. plate_no: '',
  259. car_park_id:'',
  260. },
  261. appointmentMap: {
  262. 0: '进行中',
  263. 1: '已完成',
  264. 2: '已取消',
  265. 3: '已违约'
  266. },
  267. parkDic: []
  268. }
  269. },
  270. mounted() {
  271. this.getParkDic()
  272. this.getTableData1()
  273. this.getTableData2()
  274. this.getTableData3()
  275. },
  276. watch: {
  277. },
  278. methods: {
  279. //车场
  280. getParkDic() {
  281. api.parkDic().then(res => {
  282. this.parkDic = res.data || []
  283. })
  284. },
  285. rowClassName({ rowIndex }) {
  286. // 偶数行和奇数行分别返回不同的类名,也可以根据实际需求基于rowData进行条件判断
  287. return rowIndex % 2 === 0 ? 'even-row' : 'odd-row';
  288. },
  289. onSubmit1() {
  290. this.pageNum1 = 1
  291. this.getTableData1()
  292. },
  293. onSubmit2() {
  294. this.pageNum2 = 1
  295. this.getTableData2()
  296. },
  297. onSubmit3() {
  298. this.pageNum3 = 1
  299. this.getTableData3()
  300. },
  301. handlePageChange1() {
  302. this.getTableData1()
  303. },
  304. getTableData1() {
  305. this.loading1 = true
  306. const {pageNum1, pageSize1} = this
  307. let params = {...this.formInline1}
  308. if (
  309. this.formInline1.time && this.formInline1.time.length === 2 &&
  310. this.formInline1.time[1] !== ""
  311. ) {
  312. params.goods_start_time = this.formInline1.time[0].substring(0, 10) + " 00:00:00";
  313. params.goods_end_time = this.formInline1.time[1].substring(0, 10) + " 23:59:59";
  314. }
  315. delete params.time
  316. api_z.queryProductOrderParkingByPage({curPage: pageNum1, pageSize: pageSize1, ...this.params}).then(res => {
  317. this.tableData1 = res.data.data.goods_list.map(item => ({...item, release_status: item.release_status === '1' ? '上架' : '下架', good_range: `${moment(item.goods_start_time).format('YYYY-MM-DD')}~${moment(item.goods_end_time).format('YYYY-MM-DD')}`})) || []
  318. this.total1 = res.data.data.total_rows
  319. this.loading1 = false
  320. })
  321. },
  322. handlePageChange2() {
  323. this.getTableData2()
  324. },
  325. getTableData2() {
  326. this.loading2 = true
  327. const {pageNum2, pageSize2} = this
  328. api_z.queryProductOrderUnpeakByPage({current: pageNum2, size: pageSize2, ...this.formInline2}).then(res => {
  329. this.tableData2 = res.data.records || []
  330. this.total2 = res.data.total
  331. this.loading2 = false
  332. })
  333. },
  334. handlePageChange3() {
  335. this.getTableData3()
  336. },
  337. getTableData3() {
  338. this.loading3 = true
  339. api.orderListByPage({cur_page: pageNum3, page_size: pageSize3, ...this.formInline3}).then(res => {
  340. this.tableData3 = res.data.data.map(item => ({...item, cancel_type: item.cancel_type === 1 ? '平台':'用户',appointment_status: this.appointmentMap[item.appointment_status]})) || []
  341. this.total3 = res.data.totalRows
  342. this.loading3 = false
  343. })
  344. },
  345. }
  346. }
  347. </script>
  348. <style lang="scss" scoped>
  349. .body-wrapper {
  350. .form-wrapper {
  351. .el-form-item {
  352. margin-bottom: 0px;
  353. }
  354. }
  355. .button-block{
  356. text-align: right;
  357. margin-bottom: 20px;
  358. }
  359. .table-pagination{
  360. text-align: right;
  361. }
  362. .search-card{
  363. margin-bottom: 20px;
  364. text-align: center;
  365. .input-wrapper{
  366. width: 36%;
  367. }
  368. }
  369. }
  370. </style>