purchase-let/multipleShop/orderVerification/index.vue

283 lines
6.1 KiB
Vue

<template>
<view class="orderVerification">
<!-- 输入核销码 -->
<view class="verification">
<view class="num">1</view>
<view class="verification-title">核销券码</view>
<u-input v-model="writeCode" inputAlign="center" :customStyle="{'border-color':'#38BE41 !important'}"
placeholder="请输入核销券码"></u-input>
<view class="verification-btn" :style="{opacity:writeCode?1:'.6'}" @click="onConfirmProduct">确认核销</view>
</view>
<!-- 二维码 -->
<view class="verification">
<view class="num">2</view>
<view class="verification-title" style="margin-bottom: 48rpx;">二维码核销</view>
<view class="scan">
<view class="scan1" @click="onScanToWrite">
<u-image width="84rpx" height="84rpx" src="../images/scan.png"></u-image>
</view>
</view>
</view>
<!-- 弹框 1-1717497530223296 -->
<u-popup :show="show" @close="close" @open="open" mode="center" v-if="shopDetail != null">
<view class="popup">
<view class="popup-wrap">
<view class="popup-title">请确认核销订单</view>
<view class="popup-order_num">订单编号:{{shopDetail.order_id}}</view>
<view class="popup-goods-wrap">
<view class="popup-goods" v-for="item in shopDetail.goods_list" :key="item.id">
<view class="popup-goods-left">
<u-image width="100rpx" height="100rpx" radius="8rpx" :src="item.image" />
</view>
<view class="popup-goods-right">
<view class="popup-goods-right-info">
<text class='goods_name'>{{item.store_name}}</text>
<text class="goods_price">¥{{item.price}}</text>
</view>
<view class="popup-goods-num">x{{item.cart_num}}</view>
</view>
</view>
<view class="popup-goods-total">
<text class="popup-goods-total-num">共{{shopDetail.total_num}}件商品,总金额</text>
<text class="popup-goods-total-price">¥{{shopDetail.total_price}}</text>
</view>
</view>
<view class="verification-btn" @click="onConfirmWrite">确认核销</view>
</view>
</view>
</u-popup>
</view>
</template>
<script setup>
import {
ref
} from "vue";
import {
writeOrderApi,
writeCodeApi
} from "@/api/order.js";
const show = ref(true);
const writeCode = ref('');
// 确认核销
const onConfirmWrite = () => {
if (!writeCode) return;
writeOrderApi({
verify_code: writeCode.value
}).then(res => {
writeCode.value = ''; //清空
if (res.code == 1) {
uni.showToast({
title: '核销成功',
icon: 'none',
success() {
uni.$u.sleep(1500).then(rrr => {
uni.navigateBack();
})
}
})
} else {
uni.showToast({
title: '核销失败',
icon: 'none',
success() {
writeCode.value = '';
}
})
}
})
}
const shopDetail = ref(null);
// 根据核销码获取商品
const onConfirmProduct = () => {
writeCodeApi({
code: writeCode.value
}).then(res => {
shopDetail.value = res.data;
})
}
// 二维码
const onScanToWrite = () => {
uni.scanCode({
success(resp) {
writeCode.value = resp.result;
onConfirmProduct();
}
})
}
</script>
<style lang="scss" scoped>
.orderVerification {
padding-top: 68rpx;
.verification {
position: relative;
width: 710rpx;
height: 390rpx;
background-image: url(../images/circle_bg.png);
background-size: 100%;
background-repeat: no-repeat;
margin: 0 auto 66rpx;
padding: 70rpx 30rpx 0 30rpx;
box-sizing: border-box;
.num {
position: absolute;
left: 50%;
top: -36rpx;
transform: translateX(-50%);
width: 72rpx;
height: 72rpx;
line-height: 72rpx;
border-radius: 50%;
background: #20B128;
font-size: 36rpx;
color: #FFFFFF;
text-align: center;
}
.verification-title {
margin-bottom: 24rpx;
font-weight: 600;
font-size: 32rpx;
color: #333333;
text-align: center;
}
.scan {
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 0 4rpx 16rpx rgba(32, 177, 40, .1);
width: 160rpx;
height: 160rpx;
border-radius: 50%;
margin: 0 auto;
}
.scan1 {
display: flex;
align-items: center;
justify-content: center;
width: 152rpx;
height: 152rpx;
background-color: #20B128;
border-radius: 50%;
box-shadow: 0 0 0 8rpx rgba(32, 177, 40, .3);
}
}
.verification-btn {
width: 648rpx;
height: 94rpx;
line-height: 94rpx;
background: #38BE41;
border-radius: 48rpx;
margin-top: 40rpx;
font-weight: 600;
font-size: 32rpx;
color: #FFFFFF;
text-align: center;
transition: opacity .3;
}
::v-deep .u-popup__content {
background-color: transparent;
}
.popup {
.popup-wrap {
width: 710rpx;
border-radius: 12rpx;
padding: 40rpx;
box-sizing: border-box;
background-color: #fff;
.popup-title {
margin-bottom: 60rpx;
font-weight: 600;
font-size: 32rpx;
color: #333333;
text-align: center;
}
.popup-order_num {
margin-bottom: 36rpx;
font-weight: bold;
font-size: 24rpx;
color: #333333;
}
.popup-goods {
display: flex;
justify-content: space-between;
width: 630rpx;
height: 150rpx;
background: #F7F7F7;
border-radius: 16rpx;
padding: 24rpx 24rpx 0;
box-sizing: border-box;
margin-bottom: 20rpx;
.popup-goods-left {
margin-right: 24rpx;
}
.popup-goods-right {
flex-grow: 1;
.popup-goods-right-info {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 20rpx;
.goods_name {
font-size: 24rpx;
color: #333333;
}
.goods_price {
font-weight: bold;
font-size: 24rpx;
color: #060606;
}
}
.popup-goods-num {
margin-bottom: 20rpx;
font-size: 24rpx;
color: #777777;
text-align: right;
}
}
}
.popup-goods-total {
text-align: right;
.popup-goods-total-num {
font-size: 24rpx;
color: #666666;
}
.popup-goods-total-price {
font-size: 24rpx;
color: #F55726;
}
}
}
}
}
</style>