diff --git a/src/components/order_list/modal/ticket_check.vue b/src/components/order_list/modal/ticket_check.vue index 1bf7981..03f628a 100644 --- a/src/components/order_list/modal/ticket_check.vue +++ b/src/components/order_list/modal/ticket_check.vue @@ -63,43 +63,78 @@ export default { this.ticketNumber--; } }, - confirm(){ - let { ticketNumber, orderInfo } = this; + confirm: util.debounce(async function(){ + let { ticketNumber, orderInfo, orderIndex } = this; let { available_num, id } = orderInfo; if(+available_num === 0)return; if(+ticketNumber > +available_num)return util.showNone('核销次数不能大于剩余次数'); - this.getOrderInfo({ - order_no: orderInfo.order_no, - stadium_id: orderInfo.stadium_id - }) + try{ + util.showLoad(); + let _verifyInfo = await this.sessionVerify({ + brand_id: orderInfo.brand_id || '', + nums: ticketNumber, + order_no: orderInfo.order_no || '' + }); + util.hideLoad(); + util.showNone('核销成功!'); + await new Promise(resolve => setTimeout(resolve, 1200)); + + if(orderIndex>=0){ // 列表刷新 + try{ + let _orderInfo = await this.getOrderInfo({ + order_no: orderInfo.order_no, + stadium_id: orderInfo.stadium_id + }); + if(!_orderInfo.order_no)return util.showNone('加载订单信息失败!'); + this.$emit('confirm', { orderInfo: _orderInfo || {}, orderIndex }); + }catch(err){ + console.warn('加载订单信息失败!', err); + } + this.getOrderInfo({ + order_no: orderInfo.order_no, + stadium_id: orderInfo.stadium_id + }) + }else{ // 详情页直接调用详情方法 + this.$emit('confirm'); + } + + this.hide(); + }catch(err){ + util.hideLoad(); + console.warn('核销失败', err); + } - this.hide(); - }, + }, 300, true), getOrderInfo({ order_no, stadium_id }){ let { orderIndex } = this; util.showLoad(); - servers.get({ + return servers.get({ url: API.order.reservationDetail, data: { order_no, stadium_id }, failMsg: '加载订单信息失败!' }) .then(res => { util.hideLoad(); - this.$emit('confirm', { orderInfo: res || {}, orderIndex }); + return this.orderInfo = res || {}; + }) }, - show({ info, index }) { - let { orderInfo } = this; - this.orderInfo = info || {}; - this.orderIndex = index; + sessionVerify({ brand_id, nums, order_no }){ + return servers.post({ + url: API.order.sessionVerify, + data: { brand_id, nums, order_no }, + failMsg: '核销失败!' + }) + }, + show({ order_no, stadium_id, index }) { + this.ticketNumber = 1; + this.orderIndex = isNaN(index) || index < 0 ? -1 : index; this.isShow = true; this.$emit('show'); - if(orderInfo?.id !== info?.id){ - this.ticketNumber = 1; - } + this.getOrderInfo({ order_no, stadium_id }); }, hide() { this.isShow = false; diff --git a/src/components/reservation_order/reservation_order.vue b/src/components/reservation_order/reservation_order.vue index e3db0af..bef6e11 100644 --- a/src/components/reservation_order/reservation_order.vue +++ b/src/components/reservation_order/reservation_order.vue @@ -67,7 +67,11 @@ 实付款 ¥{{orderInfo.pay_amount || '0'}} - 核销 + 核销 diff --git a/src/js/api.js b/src/js/api.js index bf95320..c582d83 100644 --- a/src/js/api.js +++ b/src/js/api.js @@ -144,6 +144,7 @@ API['writeOff'] = { API['order'] = { reservationDetail:`${ORIGIN}/admin/assistant/stadiumOrder/detail`, //k-订单管理-场馆预约订单-预约场馆订单详情/ 次卡订单详情 + sessionVerify:`${ORIGIN}/admin/person/number/rule/orderinfo/sessionVerify`, // 次票核销,输入二维码数量核销 } diff --git a/src/pages/order_list/order_list.vue b/src/pages/order_list/order_list.vue index 7525d73..658e3d6 100644 --- a/src/pages/order_list/order_list.vue +++ b/src/pages/order_list/order_list.vue @@ -272,12 +272,15 @@ methods: { reservationVerify(index){ let { orderList } = this; + let _orderInfo = orderList?.[index] || {}; this.$refs.ticketCheckModal.show({ - info: orderList?.[index] || {}, + order_no: _orderInfo.order_no, + stadium_id: _orderInfo.stadium_id, index, }); }, verifyConfirm({ orderInfo, orderIndex }){ + console.log('verifyConfirm',orderInfo, orderIndex); if(!orderInfo?.id || isNaN(orderIndex) ||+orderIndex < 0)return; let _orderList = this?.orderList?.slice() || []; _orderList[orderIndex] = orderInfo; diff --git a/src/subpackage/device/components/order/reservation_people_detail/reservation_people_detail.vue b/src/subpackage/device/components/order/reservation_people_detail/reservation_people_detail.vue index 0b56217..d0dde75 100644 --- a/src/subpackage/device/components/order/reservation_people_detail/reservation_people_detail.vue +++ b/src/subpackage/device/components/order/reservation_people_detail/reservation_people_detail.vue @@ -45,7 +45,11 @@ 验证信息 ({{orderInfo.available_num || 0}}张可用) - 核销 + 核销 @@ -316,6 +320,9 @@ export default { }; }, methods:{ + verifyBtn(){ + this.$emit('verify'); + }, recoverBtn(ele){ console.warn('orderInfo',this.orderInfo); console.warn('ele', ele); @@ -323,8 +330,8 @@ export default { util.showModal({ title: '提示', content: '是否确认恢复该验证码为待使用状态', + showCancel: true, success: res=> { - if(res.confirm){ util.showLoad(); deviceServer.get({ diff --git a/src/subpackage/device/pages/order_details/order_details.vue b/src/subpackage/device/pages/order_details/order_details.vue index ff1b0e8..432e762 100644 --- a/src/subpackage/device/pages/order_details/order_details.vue +++ b/src/subpackage/device/pages/order_details/order_details.vue @@ -3,7 +3,13 @@ - + @@ -28,7 +34,10 @@ - + @@ -90,6 +99,21 @@ }) }, methods: { + verifyConfirm(){ + let { optionsQuery } = this; + this.getPageInfo({ + orderType: optionsQuery.order_type, + stadium_id: optionsQuery.stadium_id, + order_no: optionsQuery.order_no, + }) + }, + verifyBtn(){ + let { pageInfo } = this; + this.$refs.ticketCheckModal.show({ + order_no: pageInfo.order_no, + stadium_id: pageInfo.stadium_id, + }); + }, refreshPage(){ let { optionsQuery } = this; this.isOrderRefund = false;