feat(wms): 优化发货单功能实现发货类型联动和合同选择增强

- 添加发货类型变更时自动设置到货确认标识的联动逻辑
- 实现合同表格单选功能并同步选中状态
- 将计划到货时间选择器从日期时间改为日期格式
- 修复字典选项错误引用问题
- 更新需到货确认字段的显示逻辑为根据发货类型自动计算
dev
yangk 4 weeks ago
parent 9a65dc5dc6
commit af703708fe

@ -89,7 +89,7 @@
</el-col>
<el-col :span="12">
<el-form-item label="发货类型" prop="shippingType">
<el-select v-model="form.shippingType" placeholder="请选择发货类型" style="width: 100%">
<el-select v-model="form.shippingType" placeholder="请选择发货类型" style="width: 100%" @change="handleShippingTypeChange">
<el-option v-for="dict in shipping_type" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
@ -198,8 +198,8 @@
<el-form-item label="计划到货时间" prop="planArrivalTime">
<el-date-picker
v-model="form.planArrivalTime"
type="datetime"
value-format="YYYY-MM-DD HH:mm:ss"
type="date"
value-format="YYYY-MM-DD"
placeholder="请选择计划到货时间"
style="width: 100%"
/>
@ -377,7 +377,16 @@
<el-button icon="Refresh" @click="resetContractQuery"></el-button>
</el-form-item>
</el-form>
<el-table v-loading="contractLoading" :data="contractList" border @row-click="handleContractRowClick" max-height="400">
<el-table
ref="contractTableRef"
v-loading="contractLoading"
:data="contractList"
border
@row-click="handleContractRowClick"
@select="handleContractSelect"
max-height="400"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="合同编号" align="center" prop="contractCode" min-width="120" />
<el-table-column label="合同名称" align="center" prop="contractName" min-width="180" show-overflow-tooltip />
<el-table-column label="合同总价" align="center" prop="totalPrice" min-width="120" />
@ -640,6 +649,7 @@ const projectSelectRef = ref<InstanceType<typeof ProjectSelect>>();
//
const selectedContractName = ref<string>('');
const selectedSapOrderCode = ref<string>(''); // SAP
const contractTableRef = ref();
const contractDialog = reactive({ visible: false });
const contractLoading = ref(false);
const contractList = ref<ContractInfoVO[]>([]);
@ -884,6 +894,24 @@ const resetContractQuery = () => {
const handleContractRowClick = (row: ContractInfoVO) => {
selectedContract.value = row;
//
if (contractTableRef.value) {
contractTableRef.value.clearSelection();
contractTableRef.value.toggleRowSelection(row, true);
}
};
/** 合同选择框点击事件 - 实现单选 */
const handleContractSelect = (selection: any[], row: any) => {
if (contractTableRef.value) {
contractTableRef.value.clearSelection();
if (selection.length > 0) {
contractTableRef.value.toggleRowSelection(row, true);
selectedContract.value = row;
} else {
selectedContract.value = null;
}
}
};
const submitContractSelect = () => {
@ -1090,6 +1118,23 @@ const handleWarehouseChange = (warehouseId: any) => {
}
};
/** 发货类型变化 - 联动需到货确认标识 */
const handleShippingTypeChange = (val: any) => {
if (val === '1') {
form.value.needArrivalConfirm = '1';
} else if (val === '2' || val === '3') {
form.value.needArrivalConfirm = '0';
}
};
/** 监听发货类型,确保逻辑一致性 */
watch(
() => form.value.shippingType,
(val) => {
handleShippingTypeChange(val);
}
);
/** 物料来源切换 */
const handleMaterialSourceChange = () => {
//

@ -109,12 +109,12 @@
<el-table-column label="供应商" align="center" prop="supplier" min-width="120" show-overflow-tooltip v-if="columns[6].visible" />
<el-table-column label="发货单状态" align="center" prop="outStockBillStatus" width="110" v-if="columns[7].visible">
<template #default="scope">
<dict-tag :options="shipping_bill_status" :value="scope.row.outStockBillStatus" />
<dict-tag :options="out_stock_bill_status" :value="scope.row.outStockBillStatus" />
</template>
</el-table-column>
<el-table-column label="需到货确认" align="center" prop="needArrivalConfirm" width="100" v-if="columns[8].visible">
<template #default="scope">
<dict-tag :options="need_arrival_confirm" :value="scope.row.needArrivalConfirm" />
<dict-tag :options="need_arrival_confirm" :value="scope.row.shippingType === '1' ? '1' : '0'" />
</template>
</el-table-column>
<el-table-column label="到货标识" align="center" prop="isAllReceiving" width="100" v-if="columns[9].visible">
@ -329,8 +329,8 @@ const router = useRouter();
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
//
const { shipping_mode, shipping_bill_status, shipping_type, need_arrival_confirm, is_all_receiving } = toRefs<any>(
proxy?.useDict('shipping_mode', 'shipping_bill_status', 'shipping_type', 'need_arrival_confirm', 'is_all_receiving')
const { shipping_mode, shipping_type, need_arrival_confirm, is_all_receiving, out_stock_bill_status } = toRefs<any>(
proxy?.useDict('shipping_mode', 'shipping_type', 'need_arrival_confirm', 'is_all_receiving', 'out_stock_bill_status')
);
const wmsShippingBillList = ref<WmsShippingBillVO[]>([]);

Loading…
Cancel
Save