fix: 第一版普遍修复完成。

This commit is contained in:
c
2026-03-21 15:56:53 +08:00
parent d88701f4ee
commit cc87985576
17 changed files with 218 additions and 93 deletions

View File

@@ -30,6 +30,7 @@ const removeUrl = "/purchase/purchaseplan/deletePurchasePlan";
const getItemsUrl = "/purchase/purchaseplan/getPurchasePlanItemsWithVendorSuggestions";
const generateOrderUrl = "/purchase/purchaseplan/generatePurchaseOrder";
const getItemUrl = "/purchase/purchaseplan/getPurchasePlanItems";
const partNumberExistsUrl = "/warehouse/warehouseitem/existsWarehouseItem";
const searchers = [
{ name: "searchCode", type: "text" as const, placeholder: $t("_prop.purchase.purchase_plan.searchCode") },
];
@@ -53,6 +54,28 @@ const rules = reactive<FormRules>({
],
});
const itemArrayName = "planItems";
/**
* 验证物料编号是否存在
*/
const validatePartNumber = (rule: any, value: string, callback: (error?: Error) => void) => {
if (!value) {
callback(new Error($t("_message.purchase.purchase_plan_item.input_partNumber")));
return;
}
get(partNumberExistsUrl, { partNumber: value })
.then(res => {
if (res.data === true) {
callback();
} else {
callback(new Error($t("_message.warehouse.warehouse_item.not_exist_partNumber")));
}
})
.catch(() => {
callback();
});
};
/**
* 基本不变通用变量
*/
@@ -445,8 +468,6 @@ const mappingConfig: FieldMappingConfig = {
<BaseSelect
v-model="form.vendorId"
:url="'/sys/vendor/getVendorList'"
name="id"
label="vendorName"
:placeholder="$t('_message.purchase.purchase_plan.select_vendor')"
/>
</el-form-item>
@@ -455,9 +476,7 @@ const mappingConfig: FieldMappingConfig = {
<el-form-item :label="$t('_prop.purchase.purchase_plan.storeName')" prop="storeNo">
<BaseSelect
v-model="form.storeNo"
:url="'/warehouse/store/getStoreList'"
name="storeNo"
label="storeName"
:url="'/warehouse/warehouse/getWarehouseSelectList'"
:placeholder="$t('_message.purchase.purchase_plan.select_store')"
/>
</el-form-item>
@@ -477,9 +496,7 @@ const mappingConfig: FieldMappingConfig = {
<template #default="{ row, $index }">
<el-form-item
:prop="`${itemArrayName}.${$index}.partNumber`"
:rules="[
{ required: true, message: $t('_message.purchase.purchase_plan_item.input_partNumber'), trigger: 'blur' },
]"
:rules="[{ required: true, validator: validatePartNumber, trigger: 'blur' }]"
>
<el-input v-model="row.partNumber" size="small" />
</el-form-item>