Browse Source

add ticket check logic

privacy
刘嘉炜 2 years ago
parent
commit
452dbcced7
  1. 69
      src/components/order_list/modal/ticket_check.vue
  2. 6
      src/components/reservation_order/reservation_order.vue
  3. 1
      src/js/api.js
  4. 5
      src/pages/order_list/order_list.vue
  5. 11
      src/subpackage/device/components/order/reservation_people_detail/reservation_people_detail.vue
  6. 28
      src/subpackage/device/pages/order_details/order_details.vue

69
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;

6
src/components/reservation_order/reservation_order.vue

@ -67,7 +67,11 @@
</view>
<view class="ro-bot">
<view class="rb-total">实付款 <text class="rt-txt"> ¥{{orderInfo.pay_amount || '0'}}</text></view>
<view class="rb-btn" v-if="orderInfo.order_type == 1" @click.stop="verifyBtn">核销</view>
<view
class="rb-btn"
v-if="orderInfo.order_type == 1&&orderInfo.available_num > 0"
@click.stop="verifyBtn"
>核销</view>
</view>
</view>
</template>

1
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`, // 次票核销,输入二维码数量核销
}

5
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;

11
src/subpackage/device/components/order/reservation_people_detail/reservation_people_detail.vue

@ -45,7 +45,11 @@
<view class="rb-title">
验证信息
<text>({{orderInfo.available_num || 0}}张可用)</text>
<view class="rb-verify-btn">核销</view>
<view
class="rb-verify-btn"
v-if="orderInfo.available_num > 0"
@click="verifyBtn"
>核销</view>
</view>
<!-- 人次+随时用 -->
<view class="rb-time" v-if="orderInfo.person_number_rule.order_method==1">
@ -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({

28
src/subpackage/device/pages/order_details/order_details.vue

@ -3,7 +3,13 @@
<block v-if="optionsQuery.order_type==3">
<!-- pageInfo.order_type 场次(0)/人次(1) -->
<reservation-site-detail :orderInfo="pageInfo" v-if="pageInfo.order_type == 0" @refundbtn='refundBtn' ></reservation-site-detail>
<reservation-people-detail :orderInfo="pageInfo" v-if="pageInfo.order_type == 1" @recoverBtn="peopleRecoverBtn" @okChange="okChange"></reservation-people-detail>
<reservation-people-detail
v-if="pageInfo.order_type == 1"
:orderInfo="pageInfo"
@recoverBtn="peopleRecoverBtn"
@okChange="okChange"
@verify="verifyBtn"
></reservation-people-detail>
</block>
<timing-detail :orderInfo="pageInfo" @completeBtn="completeBtn" @refreshPage="refreshPage" v-if="optionsQuery.order_type==1"></timing-detail>
<organize-detail :orderInfo="pageInfo" v-if="optionsQuery.order_type==10"></organize-detail>
@ -28,7 +34,10 @@
</view>
</view>
<!-- 次票核销弹窗 -->
<ticket-check></ticket-check>
<ticket-check
ref="ticketCheckModal"
@confirm="verifyConfirm"
></ticket-check>
</view>
</template>
@ -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;

Loading…
Cancel
Save