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