295 lines
6.7 KiB
Vue
295 lines
6.7 KiB
Vue
<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> |