From 031e36213941ad3430da2b0429701e742f09f5d8 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期二, 18 三月 2025 11:14:20 +0800
Subject: [PATCH] Merge branch 'front' into devlop

---
 rsf-admin/src/page/basicInfo/matnr/MatnrListAside.jsx |   64 +++++++++++++++++++-------------
 1 files changed, 38 insertions(+), 26 deletions(-)

diff --git a/rsf-admin/src/page/basicInfo/matnr/MatnrListAside.jsx b/rsf-admin/src/page/basicInfo/matnr/MatnrListAside.jsx
index 5246f3a..e20ce92 100644
--- a/rsf-admin/src/page/basicInfo/matnr/MatnrListAside.jsx
+++ b/rsf-admin/src/page/basicInfo/matnr/MatnrListAside.jsx
@@ -11,14 +11,27 @@
 import { RichTreeView } from "@mui/x-tree-view/RichTreeView";
 import { TreeItem2 } from "@mui/x-tree-view/TreeItem2";
 
-
 const MatListAside = () => {
     const theme = useTheme();
     const notify = useNotify();
     const { setFilters } = useListContext(); // 鑾峰彇鍒楄〃涓婁笅鏂�
     const [selectedOption, setSelectedOption] = useState(null);
     const [treeData, setTreeData] = useState([]);
-    const trees = []
+    // 鐢ㄤ簬绠$悊灞曞紑椤圭殑鐘舵��
+    const [expandedItems, setExpandedItems] = useState([]);
+
+    // 閫掑綊鏀堕泦鎵�鏈夎妭鐐圭殑 id
+    const collectAllNodeIds = (nodes) => {
+        let allIds = [];
+        nodes.forEach((node) => {
+            allIds.push(node.id.toString());
+            if (node.children && Array.isArray(node.children)) {
+                allIds = allIds.concat(collectAllNodeIds(node.children));
+            }
+        });
+        return allIds;
+    };
+
     const haveChildren = (item) => {
         // 濡傛灉 item 鏄竴涓暟缁勶紝閬嶅巻鏁扮粍涓殑姣忎釜鍏冪礌
         if (Array.isArray(item)) {
@@ -40,19 +53,16 @@
 
         return item;
     };
+
     useEffect(() => {
         request.post('/matnrGroup/tree')
             .then(res => {
-                console.log('Tree Data:', res);
                 if (res?.data?.code === 200) {
                     let data = res.data.data;
-                    // for (let k of data) {
-                    //     k.id = k.id.toString();
-
-                    // }
-                    let items = haveChildren(data)
-                    setTreeData(items)
-                    console.log('Tree Data:', items);
+                    let items = haveChildren(data);
+                    setTreeData(items);
+                    // 褰撴爲鏁版嵁鏇存柊鏃讹紝鏇存柊灞曞紑椤圭姸鎬�
+                    setExpandedItems(collectAllNodeIds(items));
                 } else {
                     notify(res.data.msg);
                 }
@@ -60,12 +70,7 @@
             .catch(error => {
                 notify('Error fetching tree data');
             });
-
-
-
     }, []);
-
-
 
     const treeData1 = [
         {
@@ -74,8 +79,12 @@
             editable: true,
             children: [
                 {
-                    id: 'grid-community', label: '@mui/x-data-grid', editable: true, children: [
-                        { id: 'grid-community22', label: '@mui/x-data-grid', editable: true },]
+                    id: 'grid-community',
+                    label: '@mui/x-data-grid',
+                    editable: true,
+                    children: [
+                        { id: 'grid-community22', label: '@mui/x-data-grid', editable: true },
+                    ],
                 },
                 { id: 'grid-pro', label: '@mui/x-data-grid-pro', editable: true },
                 { id: 'grid-premium', label: '@mui/x-data-grid-premium', editable: true },
@@ -101,15 +110,16 @@
             children: [{ id: 'tree-view-community1', label: '@mui/x-tree-view' }],
         },
     ];
+
     const handleNodeSelect = (event, nodeId) => {
         console.log('Selected Node ID:', nodeId);
         setFilters({ groupId: nodeId });
         // 鍦ㄨ繖閲屽彲浠ユ牴鎹� nodeId 鏇存柊涓诲唴瀹瑰尯鍩�
     };
+
     const handleSearch = () => {
         console.log('Search Input:', selectedOption);
     };
-
 
     const CustomCheckbox = React.forwardRef(function CustomCheckbox(props, ref) {
         return <input type="checkbox" ref={ref} {...props} />;
@@ -127,33 +137,35 @@
         );
     });
 
-
     return (
         <Card
             sx={{
-                display: { xs: 'none', md: 'block', },
                 order: -1,
                 mr: 2,
                 mt: 8,
                 alignSelf: 'flex-start',
                 border: theme.palette.mode === 'light' && '1px solid #e0e0e3',
-                width: 250
+                width: 250,
+                minWidth: 150,
+                height: `calc(100% - 120px)`,
             }}
         >
             <CardContent>
                 <SavedQueriesList icon={<BookmarkIcon />} />
                 <FilterLiveSearch source="condition" />
                 <RichTreeView
-                    defaultExpandedItems={['grid', 'pickers']}
+                    // 浣跨敤 expandedItems 鎺у埗灞曞紑鐘舵��
+                    expandedItems={expandedItems}
+                    // 澶勭悊灞曞紑椤圭姸鎬佺殑鍙樺寲
+                    onExpandedItemsChange={(newExpandedItems) => setExpandedItems(newExpandedItems)}
                     expansionTrigger="iconContainer"
                     items={treeData}
                     slots={CustomTreeItem}
                     onItemClick={handleNodeSelect} // 鐩戝惉鑺傜偣鐐瑰嚮浜嬩欢
-
                 />
             </CardContent>
         </Card>
-    )
-}
+    );
+};
 
-export default MatListAside;
+export default MatListAside;
\ No newline at end of file

--
Gitblit v1.9.1