解绑和绑定逻辑调整

dev-scheduling
zhangdi 2 weeks ago
parent e95f1d789f
commit 3a558297c4
  1. 53
      src/views/logisticsManagement/components/addPackingDialog.vue
  2. 119
      src/views/logisticsManagement/components/unbindDialog.vue

@ -1,6 +1,13 @@
<template> <template>
<el-dialog title="新增" append-to-body :modelValue="openShow" width="30%" @close="closeDialog"> <el-dialog title="新增" append-to-body :modelValue="openShow" width="30%" @close="closeDialog">
<el-form :model="form" ref="form" :rules="rules" label-width="auto" @submit.prevent> <el-form
:model="form"
ref="form"
:rules="rules"
label-width="auto"
@submit.prevent
v-loading="formLoading"
>
<el-form-item label="箱条码:" prop="boxBarcode"> <el-form-item label="箱条码:" prop="boxBarcode">
<el-input <el-input
v-model="form.boxBarcode" v-model="form.boxBarcode"
@ -8,6 +15,9 @@
placeholder="请扫描箱条码" placeholder="请扫描箱条码"
/> />
</el-form-item> </el-form-item>
<el-form-item label="配送终点:">
{{ boxBarInfo.wcName }}-{{ boxBarInfo.stationRegion }}
</el-form-item>
<el-form-item label="流程卡号:" prop="orderNo"> <el-form-item label="流程卡号:" prop="orderNo">
<el-input <el-input
v-model="form.orderNo" v-model="form.orderNo"
@ -19,7 +29,6 @@
<el-tag <el-tag
:key="tag" :key="tag"
v-for="tag in orderIdList" v-for="tag in orderIdList"
closable
:disable-transitions="false" :disable-transitions="false"
@close="handleClose(tag)" @close="handleClose(tag)"
> >
@ -39,16 +48,21 @@
</el-table-column> </el-table-column>
</el-table> --> </el-table> -->
<template #footer> <!-- <template #footer>
<span class="dialog-footer"> <span class="dialog-footer">
<el-button @click="closeDialog"> </el-button> <el-button @click="closeDialog"> </el-button>
<el-button type="primary" @click="submit" :loading="submitLoading"> </el-button> <el-button type="primary" @click="submit" :loading="submitLoading"> </el-button>
</span> </span>
</template> </template> -->
</el-dialog> </el-dialog>
</template> </template>
<script> <script>
import { boxBinding, getOrderInfo, getCardNo } from '@/api/logisticsManagement/materialPacking'; import {
boxBinding,
getOrderInfo,
getCardNo,
getQuantityLocation,
} from '@/api/logisticsManagement/materialPacking';
export default { export default {
props: { props: {
showDialog: { showDialog: {
@ -58,6 +72,7 @@ export default {
}, },
data() { data() {
return { return {
formLoading: false,
submitLoading: false, submitLoading: false,
tableData: [], tableData: [],
openShow: false, openShow: false,
@ -67,6 +82,7 @@ export default {
}, },
workCenterOptions: [], workCenterOptions: [],
orderIdList: [], orderIdList: [],
boxBarInfo: {},
}; };
}, },
mounted() { mounted() {
@ -75,8 +91,15 @@ export default {
methods: { methods: {
// //
changeCode() { changeCode() {
console.log('箱条码:', this.form.boxBarcode); getQuantityLocation({ boxBarcode: this.form.boxBarcode }).then(res => {
// this.formLoading = true;
this.boxBarInfo = res.data.data;
this.orderIdList = res.data.data.yieldOrderList.map(item => item.cardNo);
setTimeout(() => {
this.$message.success('箱条码获取数据成功!');
this.formLoading = false;
}, 500);
});
}, },
// - // -
changeOrderCode() { changeOrderCode() {
@ -97,6 +120,22 @@ export default {
} }
// API // API
this.orderIdList.push(orderNo); this.orderIdList.push(orderNo);
//
let params = {
boxBarcode: this.form.boxBarcode,
orderIdList: [this.form.orderNo],
};
boxBinding(params)
.then(res => {
this.$message.success('绑定成功');
this.submitLoading = false;
// this.closeDialog();
this.changeCode();
})
.catch(err => {
this.submitLoading = false;
this.orderIdList.pop(orderNo);
});
this.form.orderNo = ''; this.form.orderNo = '';
}) })
.catch(err => { .catch(err => {

@ -1,32 +1,56 @@
<template> <template>
<el-dialog <el-dialog title="解绑" append-to-body :modelValue="openShow" width="30%" @close="closeDialog">
title="解绑"
append-to-body
:modelValue="openShow"
width="30%"
@close="closeDialog"
>
<el-form :model="form" ref="form" :rules="rules" label-width="auto" @submit.prevent> <el-form :model="form" ref="form" :rules="rules" label-width="auto" @submit.prevent>
<el-form-item label="箱条码:" prop="boxBarcode"> <el-form-item label="箱条码:" prop="boxBarcode" style="width: 100%">
<div style="display: flex; gap: 10px">
<el-input <el-input
v-model="form.boxBarcode" v-model="form.boxBarcode"
@keyup.enter.prevent="changeCode" @keyup.enter.prevent="changeCode"
placeholder="请扫描箱条码" placeholder="请扫描箱条码"
style="flex: 1"
/> />
<el-button type="primary" @click="quickUnbind" :loading="submitLoading">
一键解绑
</el-button>
</div>
</el-form-item>
<el-form-item label="配送终点:">
{{ boxBarInfo.wcName }}-{{ boxBarInfo.stationRegion }}
</el-form-item>
<el-form-item label="流程卡号:" prop="orderNo">
<el-input
v-model="form.orderNo"
@keyup.enter.prevent="changeOrderCode"
placeholder="请扫描箱条码"
/>
</el-form-item>
<el-form-item label="" prop="orderNo">
<el-tag
:key="tag"
v-for="tag in orderIdList"
:disable-transitions="false"
@close="handleClose(tag)"
>
{{ tag }}
</el-tag>
</el-form-item> </el-form-item>
</el-form> </el-form>
<template #footer> <!-- <template #footer>
<span class="dialog-footer"> <span class="dialog-footer">
<el-button @click="closeDialog"> </el-button> <el-button @click="closeDialog"> </el-button>
<el-button type="primary" @click="submit" :loading="submitLoading"> </el-button> <el-button type="primary" @click="submit" :loading="submitLoading"> </el-button>
</span> </span>
</template> </template> -->
</el-dialog> </el-dialog>
</template> </template>
<script> <script>
import { boxBinding, getOrderInfo,boxUnbind } from '@/api/logisticsManagement/materialPacking'; import {
boxBinding,
getOrderInfo,
boxUnbind,
getQuantityLocation,
} from '@/api/logisticsManagement/materialPacking';
export default { export default {
props: { props: {
showDialog: { showDialog: {
@ -44,7 +68,8 @@ export default {
boxBarcode: [{ required: true, message: '请扫描箱条码', trigger: 'blur' }], boxBarcode: [{ required: true, message: '请扫描箱条码', trigger: 'blur' }],
}, },
workCenterOptions: [], workCenterOptions: [],
orderIdList:[] orderIdList: [],
boxBarInfo: {}, //
}; };
}, },
mounted() { mounted() {
@ -55,6 +80,15 @@ export default {
changeCode() { changeCode() {
console.log('箱条码:', this.form.boxBarcode); console.log('箱条码:', this.form.boxBarcode);
// //
getQuantityLocation({ boxBarcode: this.form.boxBarcode }).then(res => {
this.formLoading = true;
this.boxBarInfo = res.data.data;
this.orderIdList = res.data.data.yieldOrderList.map(item => item.cardNo);
setTimeout(() => {
this.$message.success('箱条码获取数据成功!');
this.formLoading = false;
}, 500);
});
}, },
// - // -
changeOrderCode() { changeOrderCode() {
@ -64,17 +98,26 @@ export default {
return; return;
} }
// // //
const exists = this.orderIdList.includes(orderNo); // const exists = this.orderIdList.includes(orderNo);
if (exists) { // if (exists) {
this.$message.warning('该订单号已添加'); // this.$message.warning('');
this.form.orderNo = ''; // this.form.orderNo = '';
return; // return;
} // }
// API // API
this.orderIdList.push(orderNo); // this.orderIdList.push(orderNo);
boxUnbind({ orderIdList: [this.form.orderNo] })
.then(res => {
this.form.orderNo = ''; this.form.orderNo = '';
this.$message.success('解绑成功');
this.changeCode()
})
.catach(err => {
this.orderIdList.pop(orderNo);
this.form.orderNo = '';
});
}, },
// //
handleClose(tag) { handleClose(tag) {
@ -89,6 +132,34 @@ export default {
this.orderIdList = []; this.orderIdList = [];
this.$emit('closeDialog'); this.$emit('closeDialog');
}, },
//
async quickUnbind() {
//
if (!this.form.boxBarcode?.trim()) {
this.$message.warning('请先扫描箱条码');
return;
}
this.submitLoading = true;
try {
//
const res = await getQuantityLocation({ boxBarcode: this.form.boxBarcode });
this.boxBarInfo = res.data.data;
//
const params = {
boxBarcode: this.form.boxBarcode,
};
await boxUnbind(params);
this.$message.success('解绑成功');
this.closeDialog();
} catch (err) {
this.$message.error(err.message || '解绑失败');
} finally {
this.submitLoading = false;
}
},
submit() { submit() {
this.$refs.form.validate(async valid => { this.$refs.form.validate(async valid => {
if (valid) { if (valid) {
@ -118,4 +189,8 @@ export default {
}, },
}; };
</script> </script>
<style lang="scss" scoped></style> <style lang="scss" scoped>
:deep(.el-form-item__content) {
width: 100%;
}
</style>

Loading…
Cancel
Save