170 lines
3.9 KiB
Vue
170 lines
3.9 KiB
Vue
<template>
|
||
<view class="writeoff-order">
|
||
<u-tabs :list="order" :active-color="primaryColor" inactive-color="#333" :is-scroll="false" :current="current"
|
||
@change="changeCurrent"></u-tabs>
|
||
<view class="list">
|
||
<view class="item bg-white" v-for="(item, index) in orderList" :key="index">
|
||
<view class="row-between title">
|
||
<view>联系人:{{item.consignee}}</view>
|
||
<view :class="[item.verification_status == 0 ? 'primary' : 'muted']">{{item.verification_status_desc}}</view>
|
||
</view>
|
||
<order-goods :list="item.order_goods"></order-goods>
|
||
</view>
|
||
</view>
|
||
<loading-footer :status="status" :slot-empty="true" @refresh="reflesh">
|
||
<view slot="empty" class="column-center" style="padding-top: 200rpx">
|
||
<image class="img-null" src="/static/images/order_null.png"></image>
|
||
<text class="lighter">暂无订单</text>
|
||
</view>
|
||
</loading-footer>
|
||
<view class="btns row-between">
|
||
<button class="bg-primary br60 white btn" size="lg" @tap="onScanCode">扫码核销</button>
|
||
<button class="bg-primary br60 white btn ml20" size="lg" @tap="showModal=true">手动核销</button>
|
||
</view>
|
||
<u-modal ref="uModalInput" v-model="showModal" show-cancel-button :confirm-color="primaryColor"
|
||
confirm-text="确定" @confirm="onConfirm" title="手动核销">
|
||
<view class="slot-content row-center" style="padding: 40rpx;">
|
||
<u-input type="number" v-model="code" :border="true" placeholder="请输入核销码" style="width: 100%" />
|
||
</view>
|
||
</u-modal>
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
import {
|
||
getVerifyLists,
|
||
verification
|
||
} from '@/api/order'
|
||
import {
|
||
loadingType
|
||
} from '@/utils/type';
|
||
import {
|
||
loadingFun,
|
||
isWeixinClient
|
||
} from '@/utils/tools';
|
||
import wechath5 from '@/utils/wechath5'
|
||
export default {
|
||
data() {
|
||
return {
|
||
page: 1,
|
||
orderList: [],
|
||
status: loadingType.LOADING,
|
||
current: 0,
|
||
showModal: false,
|
||
code: '',
|
||
order: [{
|
||
name: '待核销',
|
||
type: 0
|
||
}, {
|
||
name: '已核销',
|
||
type: 1
|
||
}]
|
||
}
|
||
},
|
||
methods: {
|
||
reflesh() {
|
||
this.page = 1
|
||
this.orderList = []
|
||
this.status = loadingType.LOADING
|
||
this.getVerifyListsFun();
|
||
},
|
||
changeCurrent(current) {
|
||
this.current = current
|
||
this.reflesh()
|
||
},
|
||
onScanCode() {
|
||
// #ifdef H5
|
||
if(!isWeixinClient()) return this.$toast({title: 'h5暂不支持扫码'})
|
||
wechath5.scanQRCode().then(res => {
|
||
this.toDetail(res)
|
||
})
|
||
// #endif
|
||
// #ifndef H5
|
||
uni.scanCode({
|
||
scanType: ['qrCode'],
|
||
success: (res) => {
|
||
console.log(res)
|
||
this.toDetail(res.result)
|
||
},
|
||
fail: (res) => {
|
||
console.log(res)
|
||
}
|
||
});
|
||
// #endif
|
||
|
||
},
|
||
async getVerifyListsFun() {
|
||
let {
|
||
page,
|
||
orderList,
|
||
status,
|
||
current,
|
||
order
|
||
} = this;
|
||
const type = order[current].type
|
||
const data = await loadingFun(getVerifyLists, page, orderList, status, {
|
||
type
|
||
})
|
||
if (!data) return
|
||
this.page = data.page
|
||
this.orderList = data.dataList
|
||
this.status = data.status
|
||
},
|
||
onConfirm() {
|
||
if(this.code === '') return this.$toast({title: '请输入核销码'})
|
||
this.toDetail(this.code)
|
||
},
|
||
toDetail(code) {
|
||
this.code = ''
|
||
uni.navigateTo({
|
||
url: `/bundle/pages/writeoff_detail/writeoff_detail?code=${code}`,
|
||
})
|
||
}
|
||
},
|
||
async onLoad() {
|
||
uni.$on("refreshverify", () => {
|
||
this.reflesh()
|
||
})
|
||
this.getVerifyListsFun()
|
||
},
|
||
onUnload() {
|
||
uni.$off('refreshverify')
|
||
},
|
||
onPullDownRefresh: function() {
|
||
this.reflesh()
|
||
},
|
||
|
||
onReachBottom: function() {
|
||
this.getVerifyListsFun()
|
||
},
|
||
}
|
||
</script>
|
||
|
||
<style lang="scss">
|
||
.writeoff-order {
|
||
padding-bottom: 120rpx;
|
||
.list {
|
||
padding: 20rpx;
|
||
.item {
|
||
border-radius: 10rpx;
|
||
&:not(:last-of-type) {
|
||
margin-bottom: 20rpx;
|
||
}
|
||
.title {
|
||
padding: 20rpx;
|
||
}
|
||
}
|
||
}
|
||
.btns {
|
||
position: fixed;
|
||
bottom: env(safe-area-inset-bottom);
|
||
width: 100%;
|
||
padding: 20rpx 25rpx;
|
||
|
||
.btn {
|
||
flex: 1;
|
||
}
|
||
}
|
||
}
|
||
</style>
|