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