Files
2026-03-08 20:07:52 +08:00

295 lines
6.7 KiB
Vue
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<view class="">
<!-- 次卡商品核销次数弹窗 -->
<uni-popup ref="punchCardPopup" type="bottom" borderRadius="20px 20px 0 0">
<view class="punch-card-pop" v-if="punchCardOrderInfo">
<view class="title">
<view class="">立即核销</view>
<CloseIcon @handle-close="punchCardPopupHandle(false)"></CloseIcon>
</view>
<view class="content-box">
<text>订单号{{verificationOrderData.orderNo}}</text>
<view class="goods-box flex">
<view class="goods-img-box"><img :src="punchCardOrderInfo.image" alt="" class="goods-img" /></view>
<view class="goods-info-box ml-20 flex-col">
<view class="">{{punchCardOrderInfo.productName}}</view>
<view class="sku-text fs-24">{{punchCardOrderInfo.sku}}</view>
<view class="verified-box fs-24">
已核销
<text>{{punchCardOrderInfo.verifyTotalTimes-punchCardOrderInfo.verifyRemainingTimes}}</text>
<text>/{{punchCardOrderInfo.verifyTotalTimes}}</text>
</view>
</view>
</view>
<view class="item acea-row row-between">
<view class="">核销次数</view>
<view class='carnum acea-row row-center-wrapper'>
<view class="reduce iconfont icon-ic_Reduce mr-8" :class="verifyCount == 1 ? 'on' : ''"
@click.stop='subCart()'></view>
<view class='flex-center num rd-12rpx'>
<view class="verify-number-box">
<text class="verify-number">{{verifyCount}}</text>
</view>
</view>
<view class="plus iconfont icon-ic_increase ml-8" :class="verifyCount == verifyRemainingTimes ? 'on' : ''"
@click.stop='addCart()'></view>
</view>
</view>
</view>
<view class="verify-btn" @click="toCancel">
确认核销
</view>
</view>
</uni-popup>
<!-- 普通商品核销确认弹窗 -->
<uni-popup ref="normalPopup" background-color="#fff" borderRadius="10px">
<view class="normal-pop">
<view class="title">
核销订单
</view>
<view class="text">
你确定要核销此订单吗
</view>
<view class="btn-box">
<view class="no-btn btn" @click="normalPopupHandle(false)">取消</view>
<view class="yes-btn btn" @click="toCancel">确认</view>
</view>
</view>
</uni-popup>
</view>
</template>
<script>
import {
ProductTypeEnum
} from "@/enums/productEnums.js";
import {
Debounce
} from '@/utils/validate.js'
import {
employeeOrderCancel
} from '@/api/work.js'
export default {
name: 'verificationPopup',
props: {
// 核销订单数据
verificationOrderData: {
type: Object,
default: () => {
return {}
}
}
},
data() {
return {
popup_center: 'center',
info: {},
verifyCode: '',
ProductTypeEnum,
punchCardOrderInfo: {}, // 次卡订单数据
verifyCount: 1, // 核销次数
verifyRemainingTimes: 1, // 剩余核销次数
}
},
computed: {
},
watch: {
verificationOrderData(nVal) {
this.punchCardOrderInfo = nVal.infoResponseList ? nVal.infoResponseList[0] : nVal.orderDetailList[0]
this.verifyCount = 1
this.verifyRemainingTimes = nVal.infoResponseList ? nVal.infoResponseList[0].verifyRemainingTimes :
nVal.orderDetailList[0].verifyRemainingTimes
}
},
mounted() {
this.verifyCount = 1
},
methods: {
// 次卡商品核销次数弹窗
punchCardPopupHandle(type) {
if (type) {
this.$refs.punchCardPopup.open()
} else {
this.$refs.punchCardPopup.close()
this.verifyCount = 1
}
},
// 核销确认弹窗
normalPopupHandle(type) {
if (type) {
this.$refs.normalPopup.open()
} else {
this.$refs.normalPopup.close()
this.verifyCount = 1
}
},
// 核销次数减
subCart() {
this.verifyCount--;
if (this.verifyCount <= 1) {
this.verifyCount = 1
}
},
// 核销次数加
addCart() {
this.verifyCount++;
if (this.verifyCount >= this.punchCardOrderInfo.verifyRemainingTimes) {
this.verifyCount = this.punchCardOrderInfo.verifyRemainingTimes
}
},
// 核销
toCancel: Debounce(function() {
{
employeeOrderCancel({
orderNo: this.verificationOrderData.orderNo,
verifyCount: this.verifyCount
}).then(res => {
if (res.code == 200) {
uni.navigateTo({
url: `/pages/admin/cancel/result?type=1&&orderNo=${this.verificationOrderData.orderNo}`
})
} else {
uni.navigateTo({
url: '/pages/admin/cancel/result?type=0'
})
}
}).catch(err => {
return this.$util.Tips({
title: err
});
})
}
}),
}
}
</script>
<style lang="scss" scoped>
.punch-card-pop {
width: 100%;
background-color: #fff;
border-top-left-radius: 40rpx;
border-top-right-radius: 40rpx;
padding-bottom: 22rpx;
padding-top: 30rpx;
padding-bottom: calc(22rpx+ constant(safe-area-inset-bottom)); ///兼容 IOS<11.2/
padding-bottom: calc(22rpx + env(safe-area-inset-bottom)); ///兼容 IOS>11.2/
.title {
font-size: 32rpx;
color: #282828;
text-align: center;
position: relative;
}
.content-box {
margin: 66rpx 30rpx 30rpx;
.goods-box {
background: #FFFFFF;
border-radius: 24rpx 24rpx 24rpx 24rpx;
padding: 26rpx 0rpx;
.goods-img-box {
.goods-img {
width: 136rpx;
height: 136rpx;
border-radius: 16rpx 16rpx 16rpx 16rpx;
}
}
.goods-info-box {
justify-content: space-around;
.sku-text {
color: #999;
}
.verified-box {
color: #666;
.verified-text {
color: #2A7EFB;
}
}
}
}
.verify-number-box {
padding: 0 30rpx;
background: #F5F5F5;
border-radius: 4rpx 4rpx 4rpx 4rpx;
}
.on {
border-color: #e3e3e3;
color: #dedede;
}
}
.verify-btn {
margin: 0 30rpx;
height: 86rpx;
text-align: center;
line-height: 86rpx;
border-radius: 43rpx;
font-size: 30rpx;
color: #FFFFFF !important;
background-color: #2A7EFB !important;
border-color: #2A7EFB !important;
}
.btn {
@include main_bg_color(theme);
}
}
.normal-pop {
width: 600rpx;
height: 270rpx;
// border-radius: 14rpx;
// padding-bottom: 20rpx;
.title {
font-weight: 500;
font-size: 32rpx;
color: #333333;
text-align: center;
margin-top: 40rpx;
}
.text {
font-weight: 400;
font-size: 30rpx;
color: #666666;
text-align: center;
margin-top: 30rpx;
}
.btn-box {
display: flex;
justify-content: space-between;
margin-top: 40rpx;
padding: 0 47rpx;
.btn {
width: 244rpx;
height: 72rpx;
border-radius: 50rpx;
text-align: center;
line-height: 72rpx;
}
.no-btn {
border: 1px solid #2A7EFB;
color: #2A7EFB;
}
.yes-btn {
background: #2A7EFB;
color: #FFFFFF;
}
}
}
</style>