|
|
|
|
@ -60,9 +60,6 @@
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-form-item label="发货类型" prop="shippingType">
|
|
|
|
|
<el-select v-model="form.shippingType" placeholder="请选择发货类型" style="width: 100%">
|
|
|
|
|
<!-- <el-option label="普通发货" value="1" />
|
|
|
|
|
<el-option label="备件发货" value="2" />
|
|
|
|
|
<el-option label="物流发货" value="3" /> -->
|
|
|
|
|
<el-option v-for="dict in shipping_type" :key="dict.value" :label="dict.label" :value="dict.value" />
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
@ -255,7 +252,7 @@
|
|
|
|
|
<el-col :span="3">
|
|
|
|
|
<!-- 物料来源切换 -->
|
|
|
|
|
<el-radio-group v-model="materialSourceType" size="small" @change="handleMaterialSourceChange" :disabled="detailFormDisabled">
|
|
|
|
|
<!-- <el-radio-button value="1">ERP物料</el-radio-button>-->
|
|
|
|
|
<el-radio-button value="1">ERP物料</el-radio-button>
|
|
|
|
|
<el-radio-button value="2">WMS物料</el-radio-button>
|
|
|
|
|
</el-radio-group>
|
|
|
|
|
</el-col>
|
|
|
|
|
@ -580,7 +577,7 @@ const approvalRecordRef = ref<InstanceType<typeof ApprovalRecord>>();
|
|
|
|
|
// 任务变量
|
|
|
|
|
const taskVariables = ref<Record<string, any>>({});
|
|
|
|
|
|
|
|
|
|
// 物料来源类型(1-ERP物料,2-WMS物料),默认使用WMS物料
|
|
|
|
|
// 物料来源类型(1-ERP物料,2-WMS物料),新建空白单据时默认使用WMS物料
|
|
|
|
|
const materialSourceType = ref('2');
|
|
|
|
|
|
|
|
|
|
// 下拉数据源
|
|
|
|
|
@ -692,6 +689,23 @@ const data = reactive<{ form: WmsShippingBillForm; rules: any }>({
|
|
|
|
|
|
|
|
|
|
const { form, rules } = toRefs(data);
|
|
|
|
|
|
|
|
|
|
const syncMaterialSourceTypeByDetails = () => {
|
|
|
|
|
if (!detailsList.value.length) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
const hasErpMaterial = detailsList.value.some((item) => item.materialSourceType === '1');
|
|
|
|
|
const hasWmsMaterial = detailsList.value.some((item) => item.materialSourceType === '2');
|
|
|
|
|
// Why:项目自动生成的发货草稿物料属于 ERP 物料,页面回显后默认切到 ERP,
|
|
|
|
|
// 用户继续点“新增物料”时才能沿用当前草稿的物料语义,而不是误切回 WMS 选料
|
|
|
|
|
if (hasErpMaterial && !hasWmsMaterial) {
|
|
|
|
|
materialSourceType.value = '1';
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (!hasErpMaterial && hasWmsMaterial) {
|
|
|
|
|
materialSourceType.value = '2';
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const normalizeWorkflowUserIds = (value: unknown): string | undefined => {
|
|
|
|
|
if (Array.isArray(value)) {
|
|
|
|
|
const ids = value.map((item) => String(item ?? '').trim()).filter((item) => item.length > 0);
|
|
|
|
|
@ -930,7 +944,7 @@ const handleAddDetail = () => {
|
|
|
|
|
}
|
|
|
|
|
if (materialSourceType.value === '1') {
|
|
|
|
|
// ERP物料选择
|
|
|
|
|
saleMaterialSelectRef.value?.openDialog();
|
|
|
|
|
saleMaterialSelectRef.value?.open();
|
|
|
|
|
} else {
|
|
|
|
|
// WMS物料选择
|
|
|
|
|
wmsMaterialDialog.visible = true;
|
|
|
|
|
@ -950,6 +964,9 @@ const erpMaterialSelectCallBack = (materials: any[]) => {
|
|
|
|
|
shippingBillId: form.value.shippingBillId,
|
|
|
|
|
materialSourceType: '1', // ERP物料
|
|
|
|
|
erpMaterialId: material.materialId,
|
|
|
|
|
// Why:项目自动生成的 ERP 草稿明细同时带有 erpMaterialId 与 materielId,
|
|
|
|
|
// 手动新增 ERP 物料时保持同一口径,后续保存、回显和扩展处理才不会出现字段缺失
|
|
|
|
|
materielId: material.materialId,
|
|
|
|
|
wmsMaterialId: undefined,
|
|
|
|
|
materialCode: material.materialCode,
|
|
|
|
|
materialName: material.materialName,
|
|
|
|
|
@ -964,6 +981,7 @@ const erpMaterialSelectCallBack = (materials: any[]) => {
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
syncMaterialSourceTypeByDetails();
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
@ -1140,6 +1158,7 @@ const loadFormData = async (id: string | number) => {
|
|
|
|
|
totalPrice: item.totalPrice,
|
|
|
|
|
remark: item.remark
|
|
|
|
|
}));
|
|
|
|
|
syncMaterialSourceTypeByDetails();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 编辑模式下:如果有客户ID,加载客户联系人列表
|
|
|
|
|
|