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

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>