From 70b7935fc261cd5e8eaaf1cfbc8078b04db576d2 Mon Sep 17 00:00:00 2001
From: liu <2021943741@qq.com>
Date: 星期六, 07 十一月 2026 14:51:06 +0800
Subject: [PATCH] fix(mes): 自动回填销售订单生产信息

---
 src/views/mes/md/item/type/components/tree.vue |   31 ++++++++++++++++++++++++++++---
 1 files changed, 28 insertions(+), 3 deletions(-)

diff --git a/src/views/mes/md/item/type/components/tree.vue b/src/views/mes/md/item/type/components/tree.vue
index be62a8c..f92ab02 100644
--- a/src/views/mes/md/item/type/components/tree.vue
+++ b/src/views/mes/md/item/type/components/tree.vue
@@ -12,11 +12,13 @@
 
 defineOptions({ name: 'MdItemTypeTree' });
 
-withDefaults(
+const props = withDefaults(
   defineProps<{
+    excludeCodes?: string[];
     filterPlaceholder?: string;
   }>(),
   {
+    excludeCodes: () => [],
     filterPlaceholder: '鎼滅储鍒嗙被',
   },
 );
@@ -32,13 +34,36 @@
 const itemTypeList = ref<MesMdItemTypeApi.ItemType[]>([]); // 鐗╂枡鍒嗙被鍒楄〃
 const itemTypeTree = ref<any[]>([]); // 鐗╂枡鍒嗙被鏍�
 
+/** 鎸夊垎绫荤紪鐮佹帓闄ゅ垎绫诲強鍏跺叏閮ㄥ瓙鍒嗙被 */
+function filterExcludedTypes(data: MesMdItemTypeApi.ItemType[]) {
+  const excludedIds = new Set<number>();
+  let changed = true;
+  while (changed) {
+    changed = false;
+    for (const item of data) {
+      if (
+        item.id !== undefined &&
+        (props.excludeCodes.includes(item.code ?? '') ||
+          (item.parentId !== undefined && excludedIds.has(item.parentId))) &&
+        !excludedIds.has(item.id)
+      ) {
+        excludedIds.add(item.id);
+        changed = true;
+      }
+    }
+  }
+  return data.filter(
+    (item) => item.id === undefined || !excludedIds.has(item.id),
+  );
+}
+
 /** 鍔犺浇鍒嗙被鏍� */
 async function loadTree() {
   loading.value = true;
   try {
     const data = await getItemTypeSimpleList();
-    itemTypeList.value = data;
-    itemTypeTree.value = handleTree(data, 'id', 'parentId');
+    itemTypeList.value = filterExcludedTypes(data);
+    itemTypeTree.value = handleTree(itemTypeList.value, 'id', 'parentId');
   } finally {
     loading.value = false;
   }

--
Gitblit v1.9.3