From 346a988f537228ae44731cd31007f1412b482e83 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 19 十月 2026 16:32:10 +0800
Subject: [PATCH] refactor(mdm): 移除物料主数据中废弃的字段配置
---
src/views/basicData/mdm/data.ts | 452 ++++++++------------------------------------------------
1 files changed, 65 insertions(+), 387 deletions(-)
diff --git a/src/views/basicData/mdm/data.ts b/src/views/basicData/mdm/data.ts
index 088f514..490572c 100644
--- a/src/views/basicData/mdm/data.ts
+++ b/src/views/basicData/mdm/data.ts
@@ -9,8 +9,8 @@
import { z } from '#/adapter/form';
import { generateAutoCode } from '#/api/mes/md/autocode/record';
import { MesAutoCodeRuleCode } from '@vben/constants';
-import { getItemTypeSimpleList } from '#/api/mes/md/item/type';
import { getUnitPage } from '#/api/mdm/unit';
+import { getWarehouseSimpleList } from '#/api/mes/wm/warehouse';
import { Button } from 'ant-design-vue';
@@ -18,23 +18,9 @@
let unitListCache: any[] | null = null;
let unitListPromise: Promise<any[]> | null = null;
-/** 灏嗘墎骞冲垎绫诲垪琛ㄨ浆涓� TreeSelect 鎵�闇�鐨勬爲褰㈢粨鏋� */
-function buildCategoryTree(list: any[]): any[] {
- const map = new Map<number, any>();
- const roots: any[] = [];
- for (const item of list) {
- map.set(item.id, { label: item.name, value: item.id, children: [] });
- }
- for (const item of list) {
- const node = map.get(item.id)!;
- if (item.parentId && map.has(item.parentId)) {
- map.get(item.parentId)!.children.push(node);
- } else {
- roots.push(node);
- }
- }
- return roots;
-}
+// 缂撳瓨浠撳簱鍒楄〃
+let warehouseListCache: any[] | null = null;
+let warehouseListPromise: Promise<any[]> | null = null;
/** 鑾峰彇鍗曚綅鍒楄〃锛堝甫缂撳瓨锛� */
async function getUnitListCached() {
@@ -53,6 +39,29 @@
return unitListPromise;
}
+/** 鑾峰彇浠撳簱鍒楄〃锛堝甫缂撳瓨锛� */
+async function getWarehouseListCached() {
+ if (warehouseListCache) {
+ return warehouseListCache;
+ }
+ if (warehouseListPromise) {
+ return warehouseListPromise;
+ }
+ warehouseListPromise = getWarehouseSimpleList().then((res) => {
+ warehouseListCache = res || [];
+ return warehouseListCache;
+ }).finally(() => {
+ warehouseListPromise = null;
+ });
+ return warehouseListPromise;
+}
+
+/** 娓呴櫎鍗曚綅鍒楄〃缂撳瓨 */
+export function clearUnitListCache() {
+ unitListCache = null;
+ warehouseListCache = null;
+}
+
/** 鏂板/淇敼鐨勮〃鍗� */
export function useFormSchema(formApi?: VbenFormApi): VbenFormSchema[] {
return [
@@ -67,12 +76,12 @@
{
component: "Input",
fieldName: "code",
- label: "鐗╂枡缂栫爜",
+ label: "鍝佺缂栫爜",
componentProps: {
maxLength: 64,
- placeholder: "璇疯緭鍏ョ墿鏂欑紪鐮�",
+ placeholder: "璇疯緭鍏ュ搧绉嶇紪鐮�",
},
- rules: z.string().min(1, '鐗╂枡缂栫爜涓嶈兘涓虹┖').max(64),
+ rules: z.string().min(1, '鍝佺缂栫爜涓嶈兘涓虹┖').max(64),
suffix: () =>
h(
Button,
@@ -91,26 +100,11 @@
{
component: "Input",
fieldName: "name",
- label: "鐗╂枡鍚嶇О",
+ label: "鍝佺鍚嶇О",
componentProps: {
- placeholder: "璇疯緭鍏ョ墿鏂欏悕绉�",
+ placeholder: "璇疯緭鍏ュ搧绉嶅悕绉�",
},
rules: "required",
- },
- {
- component: "ApiTreeSelect",
- fieldName: "categoryId",
- label: "鐗╂枡鍒嗙被",
- rules: "selectRequired",
- componentProps: {
- placeholder: "璇烽�夋嫨鐗╂枡鍒嗙被",
- allowClear: true,
- treeDefaultExpandAll: true,
- api: async () => {
- const res = await getItemTypeSimpleList();
- return buildCategoryTree(res || []);
- },
- },
},
{
component: "Input",
@@ -135,168 +129,29 @@
},
},
{
- component: "ApiSelect",
- fieldName: "unitMeasureId2",
- label: "杈呭崟浣�1",
- formItemClass: "col-span-1",
+ component: 'ApiSelect',
+ fieldName: 'warehouseId',
+ label: '榛樿浠撳簱',
componentProps: {
- placeholder: "璇烽�夋嫨杈呭崟浣�1",
+ placeholder: '璇烽�夋嫨榛樿浠撳簱',
allowClear: true,
- api: getUnitListCached,
- labelField: "name",
- valueField: "id",
- },
- },
- {
- component: "InputNumber",
- fieldName: "unitMeasureRate1",
- label: "杈呭崟浣�1鎹㈢畻姣旂巼",
- formItemClass: "col-span-1",
- componentProps: {
- class: "!w-full",
- min: 0,
- precision: 6,
- placeholder: "璇疯緭鍏ユ崲绠楁瘮鐜�",
- },
- },
- {
- component: "ApiSelect",
- fieldName: "unitMeasureId3",
- label: "杈呭崟浣�2",
- formItemClass: "col-span-1",
- componentProps: {
- placeholder: "璇烽�夋嫨杈呭崟浣�2",
- allowClear: true,
- api: getUnitListCached,
- labelField: "name",
- valueField: "id",
- },
- },
- {
- component: "InputNumber",
- fieldName: "unitMeasureRate2",
- label: "杈呭崟浣�2鎹㈢畻姣旂巼",
- formItemClass: "col-span-1",
- componentProps: {
- class: "!w-full",
- min: 0,
- precision: 6,
- placeholder: "璇疯緭鍏ユ崲绠楁瘮鐜�",
+ api: getWarehouseListCached,
+ labelField: 'name',
+ valueField: 'id',
+ onChange: async (value: number | undefined) => {
+ const code = value
+ ? ((await getWarehouseListCached()).find((w: any) => w.id === value)?.code || '')
+ : '';
+ formApi?.setFieldValue('warehouseCode', code);
+ },
},
},
{
component: 'Input',
- fieldName: 'warehouseId',
- label: '榛樿浠撳簱',
- componentProps: {
- placeholder: '璇疯緭鍏ラ粯璁や粨搴揑D',
- },
- },
- {
- component: "Input",
- fieldName: "barCode",
- label: "鏉$爜",
- componentProps: {
- placeholder: "璇疯緭鍏ユ潯鐮�",
- },
- },
- {
- component: "InputNumber",
- fieldName: "purchasePrice",
- label: "閲囪喘浠�",
- componentProps: {
- class: "!w-full",
- min: 0,
- precision: 2,
- placeholder: "璇疯緭鍏ラ噰璐环",
- },
- },
- {
- component: "InputNumber",
- fieldName: "salesPrice",
- label: "閿�鍞环",
- componentProps: {
- class: "!w-full",
- min: 0,
- precision: 2,
- placeholder: "璇疯緭鍏ラ攢鍞环",
- },
- },
- {
- component: "InputNumber",
- fieldName: "costPrice",
- label: "鎴愭湰浠�",
- componentProps: {
- class: "!w-full",
- min: 0,
- precision: 2,
- placeholder: "璇疯緭鍏ユ垚鏈环",
- },
- },
- {
- component: "InputNumber",
- fieldName: "safetyStock",
- label: "瀹夊叏搴撳瓨",
- componentProps: {
- class: "!w-full",
- min: 0,
- precision: 2,
- placeholder: "璇疯緭鍏ュ畨鍏ㄥ簱瀛�",
- },
- },
- {
- component: "InputNumber",
- fieldName: "minStock",
- label: "鏈�浣庡簱瀛�",
- componentProps: {
- class: "!w-full",
- min: 0,
- precision: 2,
- placeholder: "璇疯緭鍏ユ渶浣庡簱瀛�",
- },
- },
- {
- component: "InputNumber",
- fieldName: "maxStock",
- label: "鏈�楂樺簱瀛�",
- componentProps: {
- class: "!w-full",
- min: 0,
- precision: 2,
- placeholder: "璇疯緭鍏ユ渶楂樺簱瀛�",
- },
- },
- {
- component: 'Switch',
- fieldName: 'isBatchManaged',
- label: '鎵规绠$悊',
- defaultValue: false,
- componentProps: {
- class: "w-auto",
- checkedChildren: "鏄�",
- unCheckedChildren: "鍚�",
- },
- rules: z.boolean().default(false),
- },
- {
- component: "Switch",
- fieldName: "syncMes",
- label: "鍚屾鍒� MES",
- componentProps: {
- class: "w-auto",
- checkedChildren: "鏄�",
- unCheckedChildren: "鍚�",
- },
- rules: z.boolean().default(false),
- },
- {
- component: "InputNumber",
- fieldName: "expiryDay",
- label: "鏈夋晥鏈�(澶�)",
- componentProps: {
- class: "!w-full",
- min: 0,
- placeholder: "璇疯緭鍏ユ湁鏁堟湡",
+ fieldName: 'warehouseCode',
+ dependencies: {
+ triggerFields: [''],
+ show: () => false,
},
},
{
@@ -310,136 +165,6 @@
},
rules: z.number().default(CommonStatusEnum.ENABLE),
},
- {
- component: "Textarea",
- fieldName: "remark",
- label: "澶囨敞",
- formItemClass: "col-span-2",
- componentProps: {
- placeholder: "璇疯緭鍏ュ娉�",
- rows: 3,
- },
- },
- // ===== 鎵规灞炴�ч厤缃紙isBatchManaged = true 鏃舵樉绀猴級 =====
- {
- component: "Divider",
- fieldName: "batchConfigDivider",
- label: "鎵规灞炴�ч厤缃�",
- formItemClass: "col-span-2",
- componentProps: {
- orientation: "left",
- plain: true,
- },
- dependencies: {
- triggerFields: ["isBatchManaged"],
- show: (values) => values.isBatchManaged === true,
- },
- },
- {
- component: "Switch",
- fieldName: "produceDateFlag",
- label: "鐢熶骇鏃ユ湡蹇呭~",
- defaultValue: false,
- componentProps: {
- class: "w-auto",
- checkedChildren: "鏄�",
- unCheckedChildren: "鍚�",
- },
- dependencies: {
- triggerFields: ["isBatchManaged"],
- show: (values) => values.isBatchManaged === true,
- },
- },
- {
- component: "Switch",
- fieldName: "expireDateFlag",
- label: "鏈夋晥鏈熷繀濉�",
- defaultValue: false,
- componentProps: {
- class: "w-auto",
- checkedChildren: "鏄�",
- unCheckedChildren: "鍚�",
- },
- dependencies: {
- triggerFields: ["isBatchManaged"],
- show: (values) => values.isBatchManaged === true,
- },
- },
- {
- component: "Switch",
- fieldName: "receiptDateFlag",
- label: "鍏ュ簱鏃ユ湡蹇呭~",
- defaultValue: false,
- componentProps: {
- class: "w-auto",
- checkedChildren: "鏄�",
- unCheckedChildren: "鍚�",
- },
- dependencies: {
- triggerFields: ["isBatchManaged"],
- show: (values) => values.isBatchManaged === true,
- },
- },
- {
- component: "Switch",
- fieldName: "vendorFlag",
- label: "渚涘簲鍟嗗繀濉�",
- defaultValue: false,
- componentProps: {
- class: "w-auto",
- checkedChildren: "鏄�",
- unCheckedChildren: "鍚�",
- },
- dependencies: {
- triggerFields: ["isBatchManaged"],
- show: (values) => values.isBatchManaged === true,
- },
- },
- {
- component: "Switch",
- fieldName: "purchaseOrderCodeFlag",
- label: "閲囪喘璁㈠崟鍙峰繀濉�",
- defaultValue: false,
- componentProps: {
- class: "w-auto",
- checkedChildren: "鏄�",
- unCheckedChildren: "鍚�",
- },
- dependencies: {
- triggerFields: ["isBatchManaged"],
- show: (values) => values.isBatchManaged === true,
- },
- },
- {
- component: "Switch",
- fieldName: "lotNumberFlag",
- label: "鐢熶骇鎵瑰彿蹇呭~",
- defaultValue: false,
- componentProps: {
- class: "w-auto",
- checkedChildren: "鏄�",
- unCheckedChildren: "鍚�",
- },
- dependencies: {
- triggerFields: ["isBatchManaged"],
- show: (values) => values.isBatchManaged === true,
- },
- },
- {
- component: "Switch",
- fieldName: "qualityStatusFlag",
- label: "璐ㄩ噺鐘舵�佸繀濉�",
- defaultValue: false,
- componentProps: {
- class: "w-auto",
- checkedChildren: "鏄�",
- unCheckedChildren: "鍚�",
- },
- dependencies: {
- triggerFields: ["isBatchManaged"],
- show: (values) => values.isBatchManaged === true,
- },
- },
];
}
@@ -448,19 +173,19 @@
return [
{
fieldName: "code",
- label: "鐗╂枡缂栫爜",
+ label: "鍝佺缂栫爜",
component: "Input",
componentProps: {
- placeholder: "璇疯緭鍏ョ墿鏂欑紪鐮�",
+ placeholder: "璇疯緭鍏ュ搧绉嶇紪鐮�",
allowClear: true,
},
},
{
fieldName: "name",
- label: "鐗╂枡鍚嶇О",
+ label: "鍝佺鍚嶇О",
component: "Input",
componentProps: {
- placeholder: "璇疯緭鍏ョ墿鏂欏悕绉�",
+ placeholder: "璇疯緭鍏ュ搧绉嶅悕绉�",
allowClear: true,
},
},
@@ -483,12 +208,12 @@
{ type: "checkbox", width: 40 },
{
field: "code",
- title: "鐗╂枡缂栫爜",
+ title: "鍝佺缂栫爜",
minWidth: 120,
},
{
field: "name",
- title: "鐗╂枡鍚嶇О",
+ title: "鍝佺鍚嶇О",
minWidth: 180,
},
{
@@ -497,35 +222,9 @@
minWidth: 150,
},
{
- field: "categoryName",
- title: "鐗╂枡鍒嗙被",
- minWidth: 120,
- slots: { default: "categoryName" },
- },
- {
field: "unitMeasureName",
title: "鍗曚綅",
minWidth: 80,
- },
- {
- field: "unitMeasureName2",
- title: "杈呭崟浣�1",
- minWidth: 80,
- },
- {
- field: "unitMeasureRate1",
- title: "杈呭崟浣�1鎹㈢畻姣旂巼",
- minWidth: 130,
- },
- {
- field: "unitMeasureName3",
- title: "杈呭崟浣�2",
- minWidth: 80,
- },
- {
- field: "unitMeasureRate2",
- title: "杈呭崟浣�2鎹㈢畻姣旂巼",
- minWidth: 130,
},
{
field: "warehouseName",
@@ -533,43 +232,22 @@
minWidth: 100,
},
{
- field: "purchasePrice",
- title: "閲囪喘浠�",
- minWidth: 100,
- formatter: ({ cellValue }) => {
- return cellValue != null ? `楼${Number(cellValue).toFixed(2)}` : "";
- },
- },
- {
- field: "salesPrice",
- title: "閿�鍞环",
- minWidth: 100,
- formatter: ({ cellValue }) => {
- return cellValue != null ? `楼${Number(cellValue).toFixed(2)}` : "";
- },
- },
- {
- field: "isBatchManaged",
- title: "鎵规绠$悊",
- minWidth: 80,
- slots: { default: "isBatchManaged" },
- },
- {
- field: "status",
- title: "鐘舵��",
- minWidth: 80,
- cellRender: {
- name: "CellDict",
- props: { type: DICT_TYPE.COMMON_STATUS },
- },
- },
- {
field: "createTime",
title: "鍒涘缓鏃堕棿",
minWidth: 180,
formatter: "formatDateTime",
},
{
+ field: "status",
+ title: "鐘舵��",
+ width: 80,
+ fixed: "right",
+ cellRender: {
+ name: "CellDict",
+ props: { type: DICT_TYPE.COMMON_STATUS },
+ },
+ },
+ {
title: "鎿嶄綔",
width: 180,
fixed: "right",
--
Gitblit v1.9.3