You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

350 lines
9.8 KiB
Vue

4 weeks ago
<template>
<view class="box-container">
<u-navbar leftIconSize="25px" title="核对监装" :titleStyle="{fontWeight:700}" height="70px" @leftClick="leftClick"
:autoBack="true">
</u-navbar>
<view class="entry-info">
<view style="padding: 10rpx;">
<u-text text="出库编码"></u-text>
<u-text :text="orderNoForm.outNo"></u-text>
</view>
<view style="margin-top: 10px;padding: 10rpx;">
<u-text text="柜号"></u-text>
<u-text :text="orderNoForm.containerNo"></u-text>
</view>
<view style="margin-top: 10px;padding: 10rpx;">
<u-text text="监装方式" @click="openPicker"></u-text>
<u-text :text="orderNoForm.containerNo1" @click="openPicker"></u-text>
<u-picker
ref="pickerRef"
:show="show"
:mode="pickerMode"
:columns="pickerOptions"
v-model="selectedValue"
@confirm="onConfirm"
@cancel="show = false"
/>
</view>
<view class="backgro"></view>
<view style="padding: 10rpx;" v-show="orderNoForm.containerNo1 == '按票监装'">
<u-form labelPosition="left" labelWidth="9px" :model="ruleForm" :rules="rules" ref="ruleFormRef">
<u-form-item prop="boxNo">
<u-search :customStyle="{backgroundColor: '#F5F5F5'}" @clickIcon="getSearchData"
@search="getSearchData" @scanIcon="getScanData" clearable placeholder="请输入或扫码箱号"
v-model="ruleForm.busNo" shape="round" :showAction="false">
</u-search>
</u-form-item>
</u-form>
</view>
<view v-show="orderNoForm.containerNo1 == '按票监装'">
<view v-for="item in boxNoOrderList "
style="display: flex;justify-content: space-between;padding: 10px 20px;border-bottom: 1px solid #dedfe0;">
<view>
{{item.orderNo}}
</view>
<view>
{{item.verifyStatus}}
</view>
</view>
</view>
<view v-show="orderNoForm.containerNo1 == '按箱监装'">
<u-tabs :list="tabList" @click="clicktab" :lineWidth="90"></u-tabs>
</view>
<view class="formContainer" v-show="tabIndex == 0&&orderNoForm.containerNo1 == '按箱监装'">
<view style="margin 15rpx;">
<view v-for="item in unVerifyList " >
<view style="display: flex;justify-content: space-between;padding: 10px 20px;border-bottom: 1px solid #dedfe0;" @click="goVerifyDetail(item.orderNo)">
<view>
订单号
</view>
<view>
{{item.orderNo}}
</view>
<view>{{item.warehouseName}}</view>
</view>
</view>
</view>
</view>
<view v-show="tabIndex == 1">
<view style="margin-top: 10px;padding: 15rpx;" v-for="(item,index) in orderNoForm.verifyed"
:key="index">
<view style="display: flex;align-items: center;justify-content: space-between;">
<view>
<u-text text="订单号"></u-text>
<u-text :text="item.orderNo"></u-text>
</view>
<u-icon name="close-circle" size="18px" @click="moveVerifyed(item.orderNo)"></u-icon>
</view>
</view>
</view>
<button type="primary" class="btn" @click="submitData"></button>
</view>
<u-toast ref="uToast"></u-toast>
</view>
</template>
<script>
import store from '@/store/index'
import Api from '@/api/api.js'
import {
initScan,
startScan,
stopScan
} from "@/libs/scan.js"
export default {
data() {
return {
show:false,
selectedValue: '', // 当前选中的值
pickerOptions: [['按箱监装', '按票监装']], // 下拉选项
pickerMode: 'selector' ,// selector模式下拉
ruleForm: {
warehouseId: store.state.userInfo.branchId,
orderNo: "",
busNo: "",
orderNos: [],
workType: "8",
location: "",
number: "",
userId: "",
},
orderNoForm: {
containerNo: "",
containerNo1: "按箱监装",
outNo: "",
verifyed: [],
unVerify: [],
outId: ""
},
rules: {
orderNos: {
type: 'array',
required: true,
message: '请选择订单号',
trigger: ['blur']
},
},
unVerifyList: [],
checked: false,
tabList: [{
name: '选择监装订单',
}, {
name: '已监装订单',
badge: {
value: 0,
}
}, ],
boxNoList: [],
boxNoOrderList: [],
tabIndex: 0
}
},
onShow(op) {
initScan(this.scanSuccess);
},
onLoad(op) {
if (op.data) {
// 获取本地存储的值
const storedContainerNo1 = uni.getStorageSync('containerNo1');
if (storedContainerNo1) {
console.log(storedContainerNo1,'storedContainerNo1')
this.orderNoForm.containerNo1 = storedContainerNo1;
}
const resData = JSON.parse(op.data)
Object.assign(this.orderNoForm, resData)
console.log(this.orderNoForm,'this.orderNoForm')
console.log(resData,'this.orderNoForm')
this.ruleForm.orderNo = resData.orderNo
this.ruleForm.outNo = resData.outNo
this.boxNoOrderList = resData.verifyOrder
// this.handleContainerNoChange(false);
this.unVerifyList = resData?.unVerify || []
if (resData?.verifyed && Array.isArray(resData?.verifyed)) {
this.tabList[1].badge.value = resData?.verifyed?.length || 0
}
console.log(this.ruleForm, 'this.boxNoOrderList');
}
},
// watch: {
// // 监听 containerNo1 的变化
// 'orderNoForm.containerNo1': function(newVal, oldVal) {
// if (newVal) {
// // 当 containerNo1 发生变化时,执行你需要的逻辑
// console.log(`containerNo1 从 ${oldVal} 变为 ${newVal}`);
// if(newVal==='按票监装'){
// console.log(this.ruleForm,'this.ruleForm')
// this.handleContainerNoChange(); // 调用自定义的方法处理变化
// }
// }
// }
// },
methods: {
getSearchData() {
this.handleContainerNoChange(true)
},
async scanSuccess(code) {
// 下面就是写取到结果后的事情
this.ruleForm.busNo = code.trim()
1 day ago
this.handleContainerNoChange(true)
4 weeks ago
},
getScanData() {
uni.scanCode({
success: (res) => {
if (res.result) {
this.ruleForm.busNo = res.result.trim()
this.handleContainerNoChange(true)
}
},
fail: (err) => {
},
complete: () => {
}
})
},
openPicker() {
this.show = true;
},
handleContainerNoChange(val) {
// 调用 Api.storge.verifyOrder 接口
Api.storge.verifyOrder({
...this.ruleForm, // 扩展现有表单数据
isSubmit: val
})
.then(({ data }) => {
// 接口成功返回数据,更新 boxNoOrderList
this.boxNoOrderList = data.verifyOrder;
console.log(this.boxNoOrderList,this.ruleForm, 'this.boxNoOrderList');
})
.catch((err) => {
// 处理错误情况
console.log(err, 'errr');
});
},
// 确认选择后的操作
onConfirm(event) {
this.show = false;
this.orderNoForm.containerNo1 = event.value[0]
// 存储选中的值
uni.setStorageSync('containerNo1', this.orderNoForm.containerNo1);
console.log('选中的值是:', this.selectedValue);
const storedContainerNo1 = uni.getStorageSync('containerNo1');
console.log(storedContainerNo1,'storedContainerNo1')
},
moveVerifyed(orderNo) {
uni.showModal({
title: `移除监装订单`,
content: `是否将订单号为${orderNo}转成未监装状态`,
success: (res) => {
if (res.confirm) {
Api.storge.fallbackVerify({
"outNo": this.orderNoForm.outNo,
orderNo,
}).then(res => {
Object.assign(this.orderNoForm, res.data)
this.ruleForm.orderNos = []
this.unVerifyList = res?.data?.unVerify || []
if (res?.data?.verifyed && Array.isArray(res?.data?.verifyed)) {
this.tabList[1].badge.value = res?.data?.verifyed.length
}
this.$refs.uToast.show({
type: 'success',
message: "移除成功",
})
})
}
}
})
},
clicktab(item) {
this.tabIndex = item.index
},
leftClick() {},
goVerifyDetail(val){
// this.handleContainerNoChange(true);
uni.navigateTo({
url: `/pages/outBound/superviseOrderDetail?orderNo=${val}&&outNo=${this.ruleForm.outNo}`
})
},
submitData() {
1 day ago
// if (this.unVerifyList.length) {
// this.$refs.uToast.show({
// type: 'warning',
// message: "请监装完所有订单号",
// })
// return
// }
4 weeks ago
this.ruleForm.isSubmit = true
Api.storge.verify(this.ruleForm).then(res => {
if (res?.data?.outStatus == "1") {
uni.navigateTo({
url: `/pages/outBound/superviseLoadingImg?id=${this.orderNoForm.outId}`
})
1 day ago
}
else {
// Object.assign(this.orderNoForm, res.data)
// this.ruleForm.orderNos = []
// this.unVerifyList = res?.data?.unVerify || []
// if (res?.data?.verifyed && Array.isArray(res?.data?.verifyed)) {
// this.tabList[1].badge.value = res?.data?.verifyed.length
// }
this.$refs.uToast.show({
type: 'warning',
message: "请监装完所有订单号",
})
4 weeks ago
}
1 day ago
}) .catch(err => {
// Display an error message using the toast component if the API call fails
this.$refs.uToast.show({
type: 'error',
message: err.message || '提交失败,请重试。',
});
});
4 weeks ago
}
}
}
</script>
<style lang="scss" scoped>
.box-container {
.entry-info {
width: 85%;
margin: auto;
margin-top: 230rpx;
.backgro {
margin-top: 20rpx;
width: 100%;
height: 44rpx;
background-color: #FBFCFE;
}
.formContainer {
margin-left: 20prx;
}
.btn {
border-radius: 12px;
font-size: 28rpx;
margin-top: 80rpx;
background-color: #1A4F94;
}
}
}
</style>