From e7f675f4a8f5f24755f46717d1b06b8d5f2e5028 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期四, 09 四月 2026 16:12:24 +0800
Subject: [PATCH] 1.产品维护产品大类新增时产品名称字数不做限制
---
src/views/basicData/product/index.vue | 82 +++++++++++++++++++++++++++++++++++------
1 files changed, 70 insertions(+), 12 deletions(-)
diff --git a/src/views/basicData/product/index.vue b/src/views/basicData/product/index.vue
index 6b07c14..6df1263 100644
--- a/src/views/basicData/product/index.vue
+++ b/src/views/basicData/product/index.vue
@@ -111,8 +111,6 @@
<el-input
v-model="form.productName"
placeholder="璇疯緭鍏ヤ骇鍝佸悕绉�"
- maxlength="20"
- show-word-limit
clearable
@keydown.enter.prevent
/>
@@ -177,7 +175,7 @@
</template>
<script setup>
-import { ref } from "vue";
+import { nextTick, ref } from "vue";
import { ElMessageBox } from "element-plus";
import {
addOrEditProduct,
@@ -194,7 +192,7 @@
const containerRef = ref(null);
const treeKey = ref(0);
const expandedKeySet = new Set();
-const EXPANDED_STORAGE_KEY = "basicData_product_tree_expanded_keys";
+const EXPANDED_STORAGE_KEY = "basicData_product_tree_expanded_keys_v2";
const loadExpandedKeys = () => {
if (typeof window === "undefined") {
@@ -220,6 +218,64 @@
};
loadExpandedKeys().forEach((key) => expandedKeySet.add(key));
+
+const syncExpandedKeysFromTree = () => {
+ const keys = [];
+ const walk = (nodes) => {
+ (nodes || []).forEach((item) => {
+ if (item.expanded && item.data?.id !== undefined) {
+ keys.push(item.data.id);
+ }
+ if (item.childNodes && item.childNodes.length) {
+ walk(item.childNodes);
+ }
+ });
+ };
+
+ walk(tree.value?.root?.childNodes);
+ expandedKeySet.clear();
+ keys.forEach((key) => expandedKeySet.add(key));
+ expandedKeys.value = keys;
+ saveExpandedKeys();
+};
+
+const normalizeExpandedKeys = (treeData) => {
+ const parentMap = new Map();
+ const walk = (nodes, parentId = null) => {
+ (nodes || []).forEach((item) => {
+ parentMap.set(item.id, parentId);
+ if (item.children && item.children.length) {
+ walk(item.children, item.id);
+ }
+ });
+ };
+
+ walk(treeData);
+
+ const normalizedKeys = Array.from(expandedKeySet).filter((key) => {
+ if (!parentMap.has(key)) {
+ return false;
+ }
+ let currentId = key;
+ while (parentMap.has(currentId)) {
+ const parentId = parentMap.get(currentId);
+ if (!parentId) {
+ return true;
+ }
+ if (!expandedKeySet.has(parentId)) {
+ return false;
+ }
+ currentId = parentId;
+ }
+ return true;
+ });
+
+ if (normalizedKeys.length !== expandedKeySet.size) {
+ expandedKeySet.clear();
+ normalizedKeys.forEach((key) => expandedKeySet.add(key));
+ saveExpandedKeys();
+ }
+};
const productDia = ref(false);
const modelDia = ref(false);
@@ -271,7 +327,6 @@
rules: {
productName: [
{ required: true, message: "璇疯緭鍏�", trigger: "blur" },
- { max: 20, message: "浜у搧鍚嶇О涓嶈兘瓒呰繃20涓瓧绗�", trigger: "blur" },
],
},
modelForm: {
@@ -290,8 +345,12 @@
productTreeList()
.then((res) => {
list.value = res || [];
+ normalizeExpandedKeys(list.value);
expandedKeys.value = Array.from(expandedKeySet);
treeKey.value += 1;
+ nextTick(() => {
+ tree.value?.setDefaultExpandedKeys?.(expandedKeys.value);
+ });
})
.catch((err) => {
console.error(err);
@@ -301,14 +360,13 @@
});
};
const handleNodeExpand = (data) => {
- expandedKeySet.add(data.id);
- expandedKeys.value = Array.from(expandedKeySet);
- saveExpandedKeys();
+ nextTick(syncExpandedKeysFromTree);
};
-const handleNodeCollapse = (data) => {
- expandedKeySet.delete(data.id);
- expandedKeys.value = Array.from(expandedKeySet);
- saveExpandedKeys();
+const handleNodeCollapse = (data, node) => {
+ node?.eachNode?.((item) => {
+ item.collapse();
+ });
+ nextTick(syncExpandedKeysFromTree);
};
// 杩囨护浜у搧鏍�
const searchFilter = () => {
--
Gitblit v1.9.3