From b176162c23294d8d1bfb9f09cf6bb759efb0124a Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期三, 15 七月 2026 14:10:26 +0800
Subject: [PATCH] 银川 1.库存现有量添加自定义出库入库功能 2.整理重复文件

---
 src/views/basicData/mdm/data.ts |  222 ++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 163 insertions(+), 59 deletions(-)

diff --git a/src/views/basicData/mdm/data.ts b/src/views/basicData/mdm/data.ts
index f294908..bbde65a 100644
--- a/src/views/basicData/mdm/data.ts
+++ b/src/views/basicData/mdm/data.ts
@@ -5,31 +5,29 @@
 import { getDictOptions } from "#/packages/effects/hooks/src";
 
 import { z } from '#/adapter/form';
+import { getItemTypeSimpleList } from '#/api/mes/md/item/type';
 import { getUnitPage } from '#/api/mdm/unit';
 
-/** 鐗╂枡绫诲瀷閫夐」 */
-export const ITEM_TYPE_OPTIONS = [
-  { label: "鍘熸枡", value: 1 },
-  { label: "鍗婃垚鍝�", value: 2 },
-  { label: "鎴愬搧", value: 3 },
-  { label: "杈呮枡", value: 4 },
-];
+// 缂撳瓨鍗曚綅鍒楄〃
+let unitListCache: any[] | null = null;
+let unitListPromise: Promise<any[]> | null = null;
 
-/** 鐗╂枡绫诲瀷鏄犲皠 */
-export const ITEM_TYPE_MAP: Record<number, string> = {
-  1: "鍘熸枡",
-  2: "鍗婃垚鍝�",
-  3: "鎴愬搧",
-  4: "杈呮枡",
-};
-
-/** 鐗╂枡绫诲瀷棰滆壊鏄犲皠 */
-export const ITEM_TYPE_COLOR_MAP: Record<number, string> = {
-  1: "green",
-  2: "orange",
-  3: "blue",
-  4: "purple",
-};
+/** 鑾峰彇鍗曚綅鍒楄〃锛堝甫缂撳瓨锛� */
+async function getUnitListCached() {
+  if (unitListCache) {
+    return unitListCache;
+  }
+  if (unitListPromise) {
+    return unitListPromise;
+  }
+  unitListPromise = getUnitPage({ pageNo: 1, pageSize: 100, status: 0 }).then((res) => {
+    unitListCache = res.list || [];
+    return unitListCache;
+  }).finally(() => {
+    unitListPromise = null;
+  });
+  return unitListPromise;
+}
 
 /** 鏂板/淇敼鐨勮〃鍗� */
 export function useFormSchema(): VbenFormSchema[] {
@@ -61,15 +59,20 @@
       rules: "required",
     },
     {
-      component: "RadioGroup",
-      fieldName: "itemType",
-      label: "鐗╂枡绫诲瀷",
+      component: "ApiSelect",
+      fieldName: "categoryId",
+      label: "鐗╂枡鍒嗙被",
+      rules: "selectRequired",
       componentProps: {
-        options: ITEM_TYPE_OPTIONS,
-        buttonStyle: "solid",
-        optionType: "button",
+        placeholder: "璇烽�夋嫨鐗╂枡鍒嗙被",
+        allowClear: true,
+        api: async () => {
+          const res = await getItemTypeSimpleList();
+          return res || [];
+        },
+        labelField: "name",
+        valueField: "id",
       },
-      rules: "required",
     },
     {
       component: "Input",
@@ -88,10 +91,7 @@
       componentProps: {
         placeholder: "璇烽�夋嫨璁¢噺鍗曚綅",
         allowClear: true,
-        api: async () => {
-          const res = await getUnitPage({ pageNo: 1, pageSize: 100, status: 0 });
-          return res.list || [];
-        },
+        api: getUnitListCached,
         labelField: "name",
         valueField: "id",
       },
@@ -104,10 +104,7 @@
       componentProps: {
         placeholder: "璇烽�夋嫨杈呭崟浣�1",
         allowClear: true,
-        api: async () => {
-          const res = await getUnitPage({ pageNo: 1, pageSize: 100, status: 0 });
-          return res.list || [];
-        },
+        api: getUnitListCached,
         labelField: "name",
         valueField: "id",
       },
@@ -132,10 +129,7 @@
       componentProps: {
         placeholder: "璇烽�夋嫨杈呭崟浣�2",
         allowClear: true,
-        api: async () => {
-          const res = await getUnitPage({ pageNo: 1, pageSize: 100, status: 0 });
-          return res.list || [];
-        },
+        api: getUnitListCached,
         labelField: "name",
         valueField: "id",
       },
@@ -238,13 +232,13 @@
       component: 'Switch',
       fieldName: 'isBatchManaged',
       label: '鎵规绠$悊',
-      defaultValue: true,
+      defaultValue: false,
       componentProps: {
         class: "w-auto",
         checkedChildren: "鏄�",
         unCheckedChildren: "鍚�",
       },
-      rules: z.boolean().default(true),
+      rules: z.boolean().default(false),
     },
     {
       component: "Switch",
@@ -288,6 +282,126 @@
         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,
+      },
+    },
   ];
 }
 
@@ -310,16 +424,6 @@
       componentProps: {
         placeholder: "璇疯緭鍏ョ墿鏂欏悕绉�",
         allowClear: true,
-      },
-    },
-    {
-      fieldName: "itemType",
-      label: "鐗╂枡绫诲瀷",
-      component: "Select",
-      componentProps: {
-        placeholder: "璇烽�夋嫨鐗╂枡绫诲瀷",
-        allowClear: true,
-        options: ITEM_TYPE_OPTIONS,
       },
     },
     {
@@ -355,6 +459,12 @@
       minWidth: 150,
     },
     {
+      field: "categoryName",
+      title: "鐗╂枡鍒嗙被",
+      minWidth: 120,
+      slots: { default: "categoryName" },
+    },
+    {
       field: "unitMeasureName",
       title: "鍗曚綅",
       minWidth: 80,
@@ -383,12 +493,6 @@
       field: "warehouseName",
       title: "榛樿浠撳簱",
       minWidth: 100,
-    },
-    {
-      field: "itemType",
-      title: "鐗╂枡绫诲瀷",
-      minWidth: 100,
-      slots: { default: "itemType" },
     },
     {
       field: "purchasePrice",

--
Gitblit v1.9.3