gaoluyang
9 小时以前 0fca4eca794dba7ac8a6f89d4ce2636de00fd413
src/views/basicData/product/index.vue
@@ -25,6 +25,9 @@
          :data="list"
          @node-click="handleNodeClick"
          :expand-on-click-node="false"
          @node-expand="handleNodeExpand"
          @node-collapse="handleNodeCollapse"
          :key="treeKey"
          :default-expanded-keys="expandedKeys"
          :filter-node-method="filterNode"
          :props="{ children: 'children', label: 'label' }"
@@ -189,6 +192,34 @@
const { proxy } = getCurrentInstance();
const tree = ref(null);
const containerRef = ref(null);
const treeKey = ref(0);
const expandedKeySet = new Set();
const EXPANDED_STORAGE_KEY = "basicData_product_tree_expanded_keys";
const loadExpandedKeys = () => {
  if (typeof window === "undefined") {
    return [];
  }
  try {
    const saved = localStorage.getItem(EXPANDED_STORAGE_KEY);
    return saved ? JSON.parse(saved) : [];
  } catch (error) {
    console.error(error);
    return [];
  }
};
const saveExpandedKeys = () => {
  if (typeof window === "undefined") {
    return;
  }
  localStorage.setItem(
    EXPANDED_STORAGE_KEY,
    JSON.stringify(Array.from(expandedKeySet))
  );
};
loadExpandedKeys().forEach((key) => expandedKeySet.add(key));
const productDia = ref(false);
const modelDia = ref(false);
@@ -258,16 +289,27 @@
  treeLoad.value = true;
  productTreeList()
    .then((res) => {
      list.value = res;
      list.value.forEach((a) => {
        expandedKeys.value.push(a.label);
      });
      treeLoad.value = false;
      list.value = res || [];
      expandedKeys.value = Array.from(expandedKeySet);
      treeKey.value += 1;
    })
    .catch((err) => {
      console.error(err);
    })
    .finally(() => {
      treeLoad.value = false;
    });
};
const handleNodeExpand = (data) => {
  expandedKeySet.add(data.id);
  expandedKeys.value = Array.from(expandedKeySet);
  saveExpandedKeys();
};
const handleNodeCollapse = (data) => {
  expandedKeySet.delete(data.id);
  expandedKeys.value = Array.from(expandedKeySet);
  saveExpandedKeys();
};
// 过滤产品树
const searchFilter = () => {
  proxy.$refs.tree.filter(search.value);