From 0efe01c1702e336f7c46435bbe30ecd7a1af5076 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期一, 19 二月 2024 11:14:50 +0800
Subject: [PATCH] #

---
 zy-asrs-flow/src/pages/system/menu/index.jsx |   21 +++++++---
 zy-asrs-flow/src/utils/tree-util.js          |   86 +++++++++++++++++++++++++++++++++++++++++++
 zy-asrs-flow/tsconfig.json                   |    2 
 3 files changed, 101 insertions(+), 8 deletions(-)

diff --git a/zy-asrs-flow/src/pages/system/menu/index.jsx b/zy-asrs-flow/src/pages/system/menu/index.jsx
index a93be84..ad61038 100644
--- a/zy-asrs-flow/src/pages/system/menu/index.jsx
+++ b/zy-asrs-flow/src/pages/system/menu/index.jsx
@@ -11,6 +11,7 @@
 import Http from '@/utils/http';
 import Edit from './components/edit'
 import { TextFilter, SelectFilter, DatetimeRangeFilter, LinkFilter } from '@/components/TableSearch'
+import { buildTreeData } from '@/utils/tree-util'
 
 const handleSave = async (val) => {
     const hide = message.loading('姝e湪娣诲姞');
@@ -95,17 +96,13 @@
     const [currentRow, setCurrentRow] = useState();
     const [searchParam, setSearchParam] = useState({});
 
+    const [treeData, setTreeData] = useState([]);
+
     useEffect(() => {
 
     }, []);
 
     const columns = [
-        {
-            title: 'No',
-            dataIndex: 'index',
-            valueType: 'indexBorder',
-            width: 48,
-        },
         {
             title: '鍚嶇О',
             dataIndex: 'name',
@@ -474,8 +471,18 @@
                     }}
                     request={(params, sorter, filter) =>
                         Http.doPostPromise('/api/menu/page', { ...params, ...searchParam }, (res) => {
+                            const records = res.data.records;
+                            console.log(records);
+
+                            const rootMenu = { id: 0, label: '涓荤被鐩�', children: [], value: 0 };
+                            const memuData = buildTreeData(records, 'menuId', 'menuName', '', '', '');
+                            rootMenu.children = memuData;
+                            const treeData = [];
+                            treeData.push(rootMenu);
+                            setTreeData(treeData);
+
                             return {
-                                data: res.data.records,
+                                data: treeData,
                                 total: res.data.total,
                                 success: true,
                             }
diff --git a/zy-asrs-flow/src/utils/tree-util.js b/zy-asrs-flow/src/utils/tree-util.js
new file mode 100644
index 0000000..2af1e75
--- /dev/null
+++ b/zy-asrs-flow/src/utils/tree-util.js
@@ -0,0 +1,86 @@
+import { DataNode } from 'antd/es/tree';
+import { parse } from 'querystring';
+
+/**
+ * 鏋勯�犳爲鍨嬬粨鏋勬暟鎹�
+ * @param {*} data 鏁版嵁婧�
+ * @param {*} id id瀛楁 榛樿 'id'
+ * @param {*} parentId 鐖惰妭鐐瑰瓧娈� 榛樿 'parentId'
+ * @param {*} children 瀛╁瓙鑺傜偣瀛楁 榛樿 'children'
+ */
+export function buildTreeData(data, id, name, parentId, parentName, children) {
+  const config = {
+    id: id || 'id',
+    name: name || 'name',
+    parentId: parentId || 'parentId',
+    parentName: parentName || 'parentName',
+    childrenList: children || 'children',
+  };
+
+  const childrenListMap = [];
+  const nodeIds = [];
+  const tree = [];
+  data.forEach((item) => {
+    const d = item;
+    const pId = d[config.parentId];
+    if (!childrenListMap[pId]) {
+      childrenListMap[pId] = [];
+    }
+    d.key = d[config.id];
+    d.title = d[config.name];
+    d.value = d[config.id];
+    d[config.childrenList] = null;
+    nodeIds[d[config.id]] = d;
+    childrenListMap[pId].push(d);
+  });
+
+  data.forEach((item) => {
+    const d = item;
+    const pId = d[config.parentId];
+    if (!nodeIds[pId]) {
+      d[config.parentName] = '';
+      tree.push(d);
+    }
+  });
+
+  function adaptToChildrenList(item) {
+    const o = item;
+    if (childrenListMap[o[config.id]]) {
+      if (!o[config.childrenList]) {
+        o[config.childrenList] = [];
+      }
+      o[config.childrenList] = childrenListMap[o[config.id]];
+    }
+    if (o[config.childrenList]) {
+      o[config.childrenList].forEach((child) => {
+        const c = child;
+        c[config.parentName] = o[config.name];
+        adaptToChildrenList(c);
+      });
+    }
+  }
+
+  tree.forEach((t) => {
+    adaptToChildrenList(t);
+  });
+
+  return tree;
+}
+
+export const getPageQuery = () => parse(window.location.href.split('?')[1]);
+
+export function formatTreeData(arrayList) {
+  const treeSelectData = arrayList.map((item) => {
+    const node = {
+      id: item.id,
+      title: item.label,
+      key: `${item.id}`,
+      value: item.id,
+    };
+    if (item.children) {
+      node.children = formatTreeData(item.children);
+    }
+    return node;
+  });
+  return treeSelectData;
+}
diff --git a/zy-asrs-flow/tsconfig.json b/zy-asrs-flow/tsconfig.json
index fa986e1..d1c6b2b 100644
--- a/zy-asrs-flow/tsconfig.json
+++ b/zy-asrs-flow/tsconfig.json
@@ -19,5 +19,5 @@
       "@@test/*": ["./src/.umi-test/*"]
     }
   },
-  "include": ["./**/*.d.ts", "./**/*.ts", "./**/*.tsx", "src/app.tsx", "src/utils/icon-util.js", "src/pages/User/Login/index1.jsx", "src/components/Footer/index.jsx", "src/components/HeaderDropdown/index.jsx", "src/pages/system/host/components/UpdateForm.jsx", "src/pages/system/host/index.jsx"]
+  "include": ["./**/*.d.ts", "./**/*.ts", "./**/*.tsx", "src/app.tsx", "src/utils/icon-util.js", "src/pages/User/Login/index1.jsx", "src/components/Footer/index.jsx", "src/components/HeaderDropdown/index.jsx", "src/pages/system/host/components/UpdateForm.jsx", "src/pages/system/host/index.jsx", "src/utils/tree-util.js"]
 }

--
Gitblit v1.9.1