You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
194 lines
4.7 KiB
194 lines
4.7 KiB
4 years ago
|
<template>
|
||
|
<view class="OrderCancellation">
|
||
|
<view class="header">
|
||
|
<image mode="aspectFit" :src="`${$VUE_APP_RESOURCES_URL}/images/writeOffBg.jpg`" @click="openQRCode" />
|
||
|
</view>
|
||
|
<view class="whiteBg">
|
||
|
<view class="input">
|
||
|
<input type="number" placeholder="0" v-model="verify_code" />
|
||
|
</view>
|
||
|
<view class="bnt" @click="storeCancellation">立即核销</view>
|
||
|
<view class="bnt" v-if="$deviceType !== 'weixin'" @click="openQRCode">扫码核销</view>
|
||
|
</view>
|
||
|
<!-- #ifndef H5 -->
|
||
|
<!-- <view class="scan" v-if="iswechat">
|
||
|
<image :src="`${$VUE_APP_RESOURCES_URL}/images/scan.gif`" @click="openQRCode" />
|
||
|
</view> -->
|
||
|
<!-- #endif -->
|
||
|
<WriteOff :iShidden="iShidden" :orderInfo="orderInfo" @cancel="cancel" @confirm="confirm"></WriteOff>
|
||
|
</view>
|
||
|
</template>
|
||
|
|
||
|
<script>
|
||
|
import WriteOff from '@/components/WriteOff'
|
||
|
import { isWeixin } from '@/utils'
|
||
|
// import { wechatEvevt } from "@/libs/wechat";
|
||
|
import { orderVerific } from '@/api/order'
|
||
|
const NAME = 'OrderCancellation'
|
||
|
|
||
|
export default {
|
||
|
name: NAME,
|
||
|
components: {
|
||
|
WriteOff,
|
||
|
},
|
||
|
props: {},
|
||
|
data: function() {
|
||
|
return {
|
||
|
iShidden: true,
|
||
|
orderInfo: {},
|
||
|
verify_code: '',
|
||
|
}
|
||
|
},
|
||
|
mounted: function() {},
|
||
|
methods: {
|
||
|
cancel: function(res) {
|
||
|
this.iShidden = res
|
||
|
},
|
||
|
confirm: function() {
|
||
|
orderVerific(this.verify_code, 1)
|
||
|
.then(res => {
|
||
|
this.iShidden = true
|
||
|
this.verify_code = ''
|
||
|
uni.showToast({
|
||
|
title: res.msg,
|
||
|
icon: 'none',
|
||
|
duration: 2000,
|
||
|
})
|
||
|
})
|
||
|
.catch(err => {
|
||
|
uni.showToast({
|
||
|
title: err.msg || err.response.data.msg || err.response.data.message,
|
||
|
icon: 'none',
|
||
|
duration: 2000,
|
||
|
})
|
||
|
})
|
||
|
},
|
||
|
storeCancellation: function() {
|
||
|
let ref = /[0-9]{12}/
|
||
|
if (!this.verify_code) {
|
||
|
uni.showToast({
|
||
|
title: '请输入核销码',
|
||
|
icon: 'none',
|
||
|
duration: 2000,
|
||
|
})
|
||
|
return
|
||
|
}
|
||
|
if (!ref.test(this.verify_code)) {
|
||
|
uni.showToast({
|
||
|
title: '请输入正确的核销码',
|
||
|
icon: 'none',
|
||
|
duration: 2000,
|
||
|
})
|
||
|
return
|
||
|
}
|
||
|
uni.showLoading({
|
||
|
title: '查询中',
|
||
|
})
|
||
|
orderVerific(this.verify_code, 0)
|
||
|
.then(res => {
|
||
|
uni.hideLoading()
|
||
|
this.orderInfo = res.data
|
||
|
this.iShidden = false
|
||
|
uni.showToast({
|
||
|
title: res.msg,
|
||
|
icon: 'success',
|
||
|
duration: 2000,
|
||
|
})
|
||
|
})
|
||
|
.catch(error => {
|
||
|
uni.hideLoading()
|
||
|
uni.showToast({
|
||
|
title: error.msg || error.response.data.msg || error.response.data.message,
|
||
|
icon: 'none',
|
||
|
duration: 2000,
|
||
|
})
|
||
|
})
|
||
|
},
|
||
|
openQRCode: function() {
|
||
|
let that = this
|
||
|
// 这里需要调用扫码功能
|
||
|
uni.scanCode({
|
||
|
success: res => {
|
||
|
var result = res.result
|
||
|
if (result) {
|
||
|
that.verify_code = res.result
|
||
|
that.storeCancellation()
|
||
|
} else {
|
||
|
uni.showToast({
|
||
|
title: '没有扫描到什么!',
|
||
|
icon: 'none',
|
||
|
duration: 2000,
|
||
|
})
|
||
|
}
|
||
|
},
|
||
|
})
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
</script>
|
||
|
|
||
|
<style scoped lang="less">
|
||
|
.OrderCancellation .header {
|
||
|
width: 100%;
|
||
|
height: 3 * 100rpx;
|
||
|
background-size: 100% 100%;
|
||
|
|
||
|
image {
|
||
|
width: 100%;
|
||
|
height: 3 * 100rpx;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
.OrderCancellation .whiteBg {
|
||
|
width: 6.9 * 100rpx;
|
||
|
background-color: #fff;
|
||
|
margin: -0.93 * 100rpx auto 0 auto;
|
||
|
padding-top: 0.8 * 100rpx;
|
||
|
padding-bottom: 30rpx;
|
||
|
z-index: 20;
|
||
|
position: relative;
|
||
|
border-radius: 0.06 * 100rpx 0.06 * 100rpx 0 0;
|
||
|
}
|
||
|
|
||
|
.OrderCancellation .whiteBg .input {
|
||
|
width: 5.8 * 100rpx;
|
||
|
margin: 0 auto;
|
||
|
border-bottom: 0.01 * 100rpx solid #eee;
|
||
|
}
|
||
|
|
||
|
.OrderCancellation .whiteBg .input input {
|
||
|
padding-bottom: 0.25 * 100rpx;
|
||
|
font-size: 0.6 * 100rpx;
|
||
|
height: auto;
|
||
|
color: #282828;
|
||
|
width: 100%;
|
||
|
text-align: center;
|
||
|
}
|
||
|
|
||
|
.OrderCancellation .whiteBg .bnt {
|
||
|
font-size: 0.32 * 100rpx;
|
||
|
color: #fff;
|
||
|
width: 5.8 * 100rpx;
|
||
|
height: 0.86 * 100rpx;
|
||
|
border-radius: 0.43 * 100rpx;
|
||
|
background-image: linear-gradient(to right, #eb3729 0%, #eb3729 100%);
|
||
|
background-image: -webkit-linear-gradient(to right, #eb3729 0%, #eb3729 100%);
|
||
|
background-image: -moz-linear-gradient(to right, #eb3729 0%, #eb3729 100%);
|
||
|
text-align: center;
|
||
|
line-height: 0.86 * 100rpx;
|
||
|
margin: 0.55 * 100rpx auto 0 auto;
|
||
|
}
|
||
|
|
||
|
.OrderCancellation .scan {
|
||
|
width: 3 * 100rpx;
|
||
|
height: 3 * 100rpx;
|
||
|
margin: 1.1 * 100rpx auto 0 auto;
|
||
|
}
|
||
|
|
||
|
.OrderCancellation .scan image {
|
||
|
width: 100%;
|
||
|
height: 100%;
|
||
|
display: block;
|
||
|
}
|
||
|
</style>
|