From f481c5fe4fc2aa80c77a760f4161e4ab3912cb45 Mon Sep 17 00:00:00 2001
From: zhoushihao <zsh19950802@163.com>
Date: 星期六, 06 七月 2024 15:07:01 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 UI-Project/src/views/User/rolelist.vue |  204 ++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 153 insertions(+), 51 deletions(-)

diff --git a/UI-Project/src/views/User/rolelist.vue b/UI-Project/src/views/User/rolelist.vue
index 5dcbb0b..df11be3 100644
--- a/UI-Project/src/views/User/rolelist.vue
+++ b/UI-Project/src/views/User/rolelist.vue
@@ -13,7 +13,7 @@
 // import { ref } from 'vue'
 import { ElMessage, ElMessageBox } from 'element-plus'
 //  import LanguageMixin from './lang/LanguageMixin'
-const selectedProjectNoa = ref(''); // 褰撳墠閫変腑鐨勮鑹� 
+const selectedProjectNoa = ref(null); // 褰撳墠閫変腑鐨勮鑹� 
 // const options = ref<any[]>([]); // 涓嬫媺閫夐」鍒楄〃  
   const name = ref('');
 const tableData = ref([])
@@ -53,26 +53,34 @@
     console.error('Error fetching options:', error);  
   }  
 }; 
-// 娣诲姞 
+// 娣诲姞
 const getTableRow = async () => {
   try {  
     let menuList = [];
-    selectedOptions.value.forEach(array => {
-      if (array.length >= 2) {
-        let id = array[0];
-        let parentId = array[1];
-        menuList.push({  
-          id: id,  
-          parentId: 0,  
-          children: [
-        {
-          id: parentId,
-          parentId: id,
-        }
-      ],
-        });  
+     let parentIdMap = {}; // 鐢ㄤ簬瀛樺偍宸茬粡娣诲姞鐨勭埗椤�  
+    selectedOptions.value.forEach(array => {  
+      if (array.length >= 2) {  
+        let id = array[0];  
+        let parentId = array[1];  
+        // 濡傛灉id杩樻湭浣滀负鐖堕」娣诲姞锛屽垯娣诲姞瀹�  
+        if (!parentIdMap[id]) {  
+          menuList.push({  
+            id: id,  
+            parentId: 0, // 閫氬父锛岄《绾ч」鐨刾arentId鍙兘鏄痭ull鎴栫壒瀹氱殑鏍笽D锛岃繖閲岃涓�0鍙兘鏄釜鐗规畩鐢ㄩ��  
+            children: []  
+          });  
+          parentIdMap[id] = menuList[menuList.length - 1]; // 鏇存柊鏄犲皠  
+        }  
+        // 鍚戝搴旂殑鐖堕」娣诲姞瀛愰」  
+        if (!parentIdMap[id].children.some(child => child.id === parentId)) {  
+          // 妫�鏌ユ槸鍚﹀凡瀛樺湪鐩稿悓鐨勫瓙椤癸紙鍩轰簬id锛夛紝閬垮厤閲嶅娣诲姞  
+          parentIdMap[id].children.push({  
+            id: parentId,  
+            parentId: id  
+          });  
+        }  
       }  
-    });
+    });  
     const dataToSend = {  
       name: name.value,
       menuList: menuList
@@ -91,61 +99,155 @@
     console.error(error);
   }
 };
-// 澶勭悊缂栬緫鎸夐挳鐐瑰嚮  
+
+// function buildCascaderOptions(menuList) {  
+//   // 鍒涘缓涓�涓槧灏勬潵蹇�熸煡鎵剧埗椤�  
+//   const parentIdMap = {};  
+//   // 鍒濆鍖栨渶缁堢殑绾ц仈閫夐」鏁扮粍  
+//   const options = [];  
+//   // 閬嶅巻鎵�鏈夎彍鍗曢」锛屽皢瀹冧滑娣诲姞鍒版槧灏勪腑锛屽苟鏋勫缓椤剁骇鑿滃崟椤�  
+//   menuList.forEach(item => {  
+//     // 濡傛灉parentId涓�0锛屽垯涓洪《绾ц彍鍗曢」  
+//     if (item.parentId === 0) {  
+//       // 鍒濆鍖朿hildren鏁扮粍  
+//       item.children = [];  
+//       // 娣诲姞鍒版渶缁堢殑閫夐」涓�  
+//       options.push({  
+//         value: item.id,  
+//         label: item.menuName,  
+//         children: item.children  
+//       });  
+//       // 灏嗛《绾ц彍鍗曢」娣诲姞鍒版槧灏勪腑锛堣櫧鐒跺湪杩欎釜鐗瑰畾鍦烘櫙涓彲鑳戒笉鏄繀闇�鐨勶紝浣嗗彲浠ョ敤浜庡叾浠栫洰鐨勶級  
+//       parentIdMap[item.id] = item;  
+//     } else {  
+//       // 濡傛灉parentId涓嶆槸0锛屽垯鏌ユ壘鐖堕」骞舵坊鍔犲埌鍏禼hildren鏁扮粍涓�  
+//       // 娉ㄦ剰锛氳繖閲屽亣璁緋arentIdMap鍦ㄤ箣鍓嶅凡缁忓~鍏呬簡鎵�鏈夐《绾ц彍鍗曢」  
+//       if (!parentIdMap[item.parentId]) {  
+//         // 濡傛灉鐖堕」涓嶅瓨鍦紝鍒欏彲鑳芥槸鏁版嵁涓嶅畬鏁存垨閿欒锛岄渶瑕佸鐞嗚繖绉嶆儏鍐�  
+//         console.error(`Parent item with ID ${item.parentId} not found for child item with ID ${item.id}`);  
+//       } else {  
+//         parentIdMap[item.parentId].children.push({  
+//           value: item.id,  
+//           label: item.menuName  
+//           // 杩欓噷涓嶉渶瑕佸祵濂楃殑children锛岄櫎闈炰綘鐨勮彍鍗曟湁澶氫簬涓ょ骇鐨勭粨鏋�  
+//         });  
+//       }  
+//     }  
+//   });  
+//   return options;  
+// }  
 function handleEdit(row) {  
-  name.value = row.name; 
-  selectedOptions.value = row.selectedOptions
-//  options.value = res.data.tree
- adda.value = true; // 鏄剧ず瀵硅瘽妗�  
-  window.localStorage.setItem('id', row.id)
-}
+  name.value = row.name;  
+  const parentIdMap = {};  
+  const menuItems = row.menuList.map(item => {  
+    let parentId = item.parentId || null; // 鎴栬�呬娇鐢� 0锛屽鏋滀綘鐨勭郴缁熸槸杩欐牱璁捐鐨�  
+    if (!parentIdMap[parentId]) {  
+      parentIdMap[parentId] = [];  
+    }  
+    parentIdMap[parentId].push({  
+      id: item.id,  
+      menuName: item.menuName,  
+      children: [] // 鍒濆涓虹┖锛岀◢鍚庝細濉厖瀛愰」  
+    });  
+    return { id: item.id, menuName: item.menuName, parentId: parentId };  
+  });  
+  
+  // 鐜板湪锛屾垜浠亶鍘嗘墍鏈夐」锛屽苟灏嗗畠浠垎閰嶇粰瀹冧滑鐨勭埗椤癸紙濡傛灉鏈夌殑璇濓級  
+  menuItems.forEach(item => {  
+    if (item.parentId !== null && parentIdMap[item.parentId]) {  
+      // 灏嗗綋鍓嶉」娣诲姞鍒板叾鐖堕」鐨� children 鏁扮粍涓�  
+      parentIdMap[item.parentId].push({  
+        ...item, // 澶嶅埗闄や簡 parentId 涔嬪鐨勬墍鏈夊睘鎬�  
+        children: [] // 杩欓噷鎴戜滑涓嶉渶瑕佸啀娆℃坊鍔� children锛屽洜涓哄畠宸茬粡鍦� parentIdMap 涓鍒濆鍖栦簡  
+      });  
+      // 娉ㄦ剰锛氳繖閲屽疄闄呬笂鏄竴涓敊璇紝鍥犱负鎴戜滑涓嶅簲璇ュ悜 parentIdMap[item.parentId] 鏁扮粍涓坊鍔犳暣涓」锛�  
+      // 鑰屽簲璇ュ彧鏇存柊瀹冪殑 children 鏁扮粍銆備絾涓婇潰鐨勪唬鐮佺ず渚嬩簡濡備綍璁块棶鐖堕」銆�  
+      // 姝g‘鐨勫仛娉曟槸鍦ㄦ瀯寤� parentIdMap 鏃跺氨璁剧疆濂� children 鏁扮粍锛屽苟鍦ㄥ悗闈笉鍐嶄慨鏀� parentIdMap[item.parentId] 鏁扮粍銆�  
+    }  
+    // 娉ㄦ剰锛氫笂闈㈢殑浠g爜閫昏緫鏈夎锛屽洜涓烘垜浠湪鏋勫缓 parentIdMap 鏃跺凡缁忎负姣忎釜椤硅缃簡 children 鏁扮粍銆�  
+    // 鎴戜滑搴旇鐩存帴淇敼杩欎簺 children 鏁扮粍锛岃�屼笉鏄悜 parentIdMap[item.parentId] 鏁扮粍娣诲姞鏂伴」銆�  
+  });  
+  
+  // 浣嗘槸锛岀敱浜庢垜浠湪鏋勫缓 parentIdMap 鏃跺凡缁忎负姣忎釜椤癸紙鍖呮嫭鍏剁埗椤癸級璁剧疆浜� children 鏁扮粍锛�  
+  // 鎴戜滑瀹為檯涓婁笉闇�瑕佷笂闈㈢殑寰幆鏉ラ噸鏂板垎閰嶅瓙椤广��  
+  // 鎴戜滑鍙渶瑕佹壘鍒伴《绾ч」锛坧arentId 涓� null 鎴� 0 鐨勯」锛夛紝骞跺皢瀹冧滑璁剧疆涓� selectedOptions.value  
+  
+  // 鍋囪椤剁骇椤圭殑 parentId 涓� null锛堟垨 0锛屾牴鎹綘鐨勭郴缁燂級  
+  const topLevelItems = parentIdMap[null] || parentIdMap[0] || [];  
+  
+  // selectedOptions.value 搴旇鏄《绾ч」鐨勬暟缁勶紝浣嗛鍏堟垜浠渶瑕佸皢瀹冧滑浠� parentIdMap 鐨勫�间腑鎻愬彇鍑烘潵  
+  // 鐢变簬鎴戜滑鍦ㄦ瀯寤� parentIdMap 鏃跺凡缁忎负姣忎釜椤剁骇椤硅缃簡 children锛屾墍浠ユ垜浠彲浠ョ洿鎺ヤ娇鐢ㄨ繖浜涢」  
+  selectedOptions.value = topLevelItems;  
+  
+  // 娉ㄦ剰锛歴electedOptions.value 鐨勫叿浣撴牸寮忓簲璇ヤ笌浣犵殑绾ц仈閫夋嫨鍣ㄧ粍浠舵墍鏈熸湜鐨勬牸寮忕浉鍖归厤  
+  // 濡傛灉浣犵殑绾ц仈閫夋嫨鍣ㄧ粍浠舵湡鏈涚殑鏄竴涓寘鍚� value 鍜� label 鐨勬暟缁勬暟缁勶紝浣犲彲鑳借繕闇�瑕佽繘涓�姝ヨ浆鎹� topLevelItems  
+  adda.value = true; // 鏄剧ず瀵硅瘽妗�  
+
+}  
+  
+// 娉ㄦ剰锛氫笂闈㈢殑浠g爜鍙兘浠嶇劧闇�瑕佹牴鎹綘鐨勫叿浣撴暟鎹粨鏋勮繘琛岃皟鏁�  
+// 鐗瑰埆鏄叧浜� parentId 鐨勫鐞嗭紝浠ュ強濡備綍灏嗚彍鍗曢」姝g‘鍦板垎閰嶇粰瀹冧滑鐨勭埗椤�
+// 澶勭悊缂栬緫鎸夐挳鐐瑰嚮  
+// function handleEdit(row) {  
+//   name.value = row.name; 
+//   let cascaderOptions = buildCascaderOptions(row.menuList);  
+//   selectedOptions.value = cascaderOptions; // 鍋囪selectedOptions鏄痸-model缁戝畾鐨勭骇鑱旈�夋嫨鍣ㄧ殑鍊�  
+//   console.log(cascaderOptions); // 鏌ョ湅鏋勫缓鍚庣殑绾ц仈閫夐」  
+//   // let transformedMenuList = row.menuList.map(item => ({  
+//   //   id: item.id, // 鍋囪姣忎釜椤归兘鏈変竴涓猧d浣滀负鍞竴鏍囪瘑  
+//   //   menuName: item.menuName, // 鏄剧ず缁欑敤鎴风殑鏂囨湰  
+//   //   // children: item.children ? item.children.map(child => ({ value: child.id, label: child.name })) : []  
+//   // }));
+//   // selectedOptions.value = transformedMenuList
+//   console.log(transformedMenuList);
+//   adda.value = true; // 鏄剧ず瀵硅瘽妗�  
+//   window.localStorage.setItem('id', row.id)
+// } 
 // 缂栬緫
 const getTableRowa = async () => {
   let id = window.localStorage.getItem('id')
   try {  
     let menuList = [];
-    selectedOptions.value.forEach(array => {
-      if (array.length >= 2) {
-        let id = array[0];
-        let parentId = array[1];
-        menuList.push({  
-          id: id,  
-          parentId: 0,  
-          children: [
-        {
-          id: parentId,
-          parentId: id,
-        }
-      ],
-        });  
+     let parentIdMap = {}; // 鐢ㄤ簬瀛樺偍宸茬粡娣诲姞鐨勭埗椤�  
+    selectedOptions.value.forEach(array => {  
+      if (array.length >= 2) {  
+        let id = array[0];  
+        let parentId = array[1];  
+        // 濡傛灉id杩樻湭浣滀负鐖堕」娣诲姞锛屽垯娣诲姞瀹�  
+        if (!parentIdMap[id]) {  
+          menuList.push({  
+            id: id,  
+            parentId: 0, // 閫氬父锛岄《绾ч」鐨刾arentId鍙兘鏄痭ull鎴栫壒瀹氱殑鏍笽D锛岃繖閲岃涓�0鍙兘鏄釜鐗规畩鐢ㄩ��  
+            children: []  
+          });  
+          parentIdMap[id] = menuList[menuList.length - 1]; // 鏇存柊鏄犲皠  
+        }  
+        // 鍚戝搴旂殑鐖堕」娣诲姞瀛愰」  
+        if (!parentIdMap[id].children.some(child => child.id === parentId)) {  
+          // 妫�鏌ユ槸鍚﹀凡瀛樺湪鐩稿悓鐨勫瓙椤癸紙鍩轰簬id锛夛紝閬垮厤閲嶅娣诲姞  
+          parentIdMap[id].children.push({  
+            id: parentId,  
+            parentId: id  
+          });  
+        }  
       }  
-    });
+    });  
     const dataToSend = {  
       id:id,
       name: name.value,
       menuList: menuList
     };  
     const response = await request.post('/loadGlass/sys/role/updateRole', dataToSend);
-  // try {
-  //   const response = await request.post('/loadGlass/sys/role/updateRole', {
-  //     id: id,
-  //     name: name.value,
-  //   }); 
- 
     if (response.code == 200) {
-      // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
       ElMessage.success(response.message);
       adda.value = false;
       name.value = '';
-       selectedOptions.value = '';
-      fetchOptionsa()
-      tableData.value = response.data;
+      selectedOptions.value = '';
+      fetchOptionsa();
     } else {
-      // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
       ElMessage.error(response.message);
     }
   } catch (error) {
-    // 澶勭悊閿欒
     console.error(error);
   }
 };

--
Gitblit v1.8.0