From 867c818b7660373ab7ca410a923c47e4b6602e2e Mon Sep 17 00:00:00 2001 From: wuyouming666 <2265557248@qq.com> Date: 星期三, 10 七月 2024 14:05:21 +0800 Subject: [PATCH] 增加原片仓储模块, --- UI-Project/src/views/User/rolelist.vue | 280 +++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 228 insertions(+), 52 deletions(-) diff --git a/UI-Project/src/views/User/rolelist.vue b/UI-Project/src/views/User/rolelist.vue index 5dcbb0b..d5fd898 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,229 @@ console.error(error); } }; -// 澶勭悊缂栬緫鎸夐挳鐐瑰嚮 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; + adda.value = true; + window.localStorage.setItem('ids', row.id); + const parentIdMap = {}; + const menuItemsById = {}; // 蹇�熸煡鎵捐彍鍗曢」 + let topLevelItems = []; // 瀛樺偍椤剁骇鑿滃崟椤� + row.menuList.forEach(item => { + const parentId = item.parentId === 0 ? null : item.parentId; + const menuItem = { + id: item.id, + parentId: parentId, + menuName: item.menuName, + children: [] + }; + menuItemsById[item.id] = menuItem; + // 鍒濆鍖栨垨鏇存柊parentIdMap涓殑鏁扮粍 + if (!parentIdMap[parentId]) { + parentIdMap[parentId] = []; + } + if (parentId === null) { + // 椤剁骇鑿滃崟椤圭洿鎺ユ坊鍔犲埌topLevelItems + topLevelItems.push(menuItem); + } else { + // 闈為《绾ц彍鍗曢」娣诲姞鍒皃arentIdMap涓� + parentIdMap[parentId].push(menuItem); + } + }); + for (const parentId in parentIdMap) { + if (parentId !== 'null') { // 璺宠繃椤剁骇鑿滃崟椤� + parentIdMap[parentId].forEach(child => { + // 鏌ユ壘鐖堕」骞舵坊鍔犲瓙椤� + if (menuItemsById[parentId]) { + menuItemsById[parentId].children.push(child); + } + }); + } + } + if (selectedOptions.value !== topLevelItems) { + selectedOptions.value = topLevelItems; + } + + const topLevelItemsWithChildren = topLevelItems; // 鍖呭惈椤剁骇鑿滃崟椤瑰強鍏跺瓙鑿滃崟椤圭殑鏁扮粍 + let selectedPath = []; + +// 寰幆閬嶅巻 topLevelItemsWithChildren 鏁扮粍 +for (let i = 0; i < topLevelItemsWithChildren.length; i++) { + // 娣诲姞椤剁骇鑿滃崟椤圭殑 id + selectedPath.push(topLevelItemsWithChildren[i].id); + + // 閬嶅巻璇ラ《绾ц彍鍗曢」鐨勫瓙鑿滃崟椤� + if (topLevelItemsWithChildren[i].children && topLevelItemsWithChildren[i].children.length > 0) { + for (let j = 0; j < topLevelItemsWithChildren[i].children.length; j++) { + // 娣诲姞姣忎釜瀛愯彍鍗曢」鐨� id + selectedPath.push(topLevelItemsWithChildren[i].children[j].id); + } + } } + + console.log(selectedPath); +selectedOptions.value = selectedPath; +} +// function handleEdit(row) { +// name.value = row.name; +// adda.value = true; +// window.localStorage.setItem('ids', row.id); +// // 鏋勫缓鑿滃崟鏍� +// const buildMenuTree = (menuList) => { +// const parentIdMap = {}; +// const menuItemsById = {}; +// menuList.forEach(item => { +// const parentId = item.parentId === 0 ? null : item.parentId; +// const menuItem = { +// id: item.id, +// parentId: parentId, +// menuName: item.menuName, +// children: [] +// }; +// menuItemsById[item.id] = menuItem; + +// if (!parentIdMap[parentId]) { +// parentIdMap[parentId] = []; +// } +// parentIdMap[parentId].push(menuItem); +// }); +// // 鏋勫缓鐖跺瓙鍏崇郴 +// for (const parentId in parentIdMap) { +// if (parentId !== 'null') { +// parentIdMap[parentId].forEach(child => { +// if (menuItemsById[parentId]) { +// menuItemsById[parentId].children.push(child); +// } +// }); +// } +// } +// return parentIdMap[null] || []; +// }; +// const options = buildMenuTree(row.menuList); +// const selectedIds = row.menuList.filter(item => item.parentId === 0).map(item => item.id); +// selectedOptions.value = selectedIds; +// console.log(options); // 杈撳嚭鏁翠釜鑿滃崟鏍� +// console.log(selectedIds); // 杈撳嚭搴旈粯璁ら�変腑鐨勮妭鐐笽D鏁扮粍 +// } +// function handleEdit(row) { +// name.value = row.name; +// adda.value = true; +// window.localStorage.setItem('ids', row.id); +// // 鍒濆鍖� parentIdMap 鍜� menuItemsById +// const parentIdMap = {}; +// const menuItemsById = {}; +// let topLevelItems = []; + +// // 鏋勫缓鏍戝舰缁撴瀯 +// row.menuList.forEach(item => { +// const parentId = item.parentId === 0 ? null : item.parentId; +// const menuItem = { +// id: item.id, +// parentId: parentId, +// label: item.menuName, // 娉ㄦ剰锛歟l-cascader 浣跨敤 label 鑰屼笉鏄� menuName +// value: item.id, // 閫氬父 value 鏄敮涓�鏍囪瘑绗� +// children: [] +// }; +// menuItemsById[item.id] = menuItem; + +// if (!parentIdMap[parentId]) { +// parentIdMap[parentId] = []; +// } + +// if (parentId === null) { +// topLevelItems.push(menuItem); +// } else { +// parentIdMap[parentId].push(menuItem); +// } +// }); + +// // 鏋勫缓鐖跺瓙鍏崇郴 +// for (const parentId in parentIdMap) { +// if (parentId !== 'null') { +// parentIdMap[parentId].forEach(child => { +// if (menuItemsById[parentId]) { +// menuItemsById[parentId].children.push(child); +// } +// }); +// } +// } + +// // 璁剧疆 options +// options.value = topLevelItems; + +// // 鏋勫缓 selectedOptions +// let selected = []; +// // 鍋囪浣犳兂閫変腑鎵�鏈夎妭鐐癸紝浣犲彲浠ラ亶鍘� row.menuList 骞舵瀯寤鸿矾寰� +// row.menuList.forEach(item => { +// let path = []; +// let currentParentId = item.parentId; +// while (currentParentId !== null) { +// const parentItem = menuItemsById[currentParentId]; +// if (parentItem) { +// path.unshift(parentItem.value); // 浠庣埗鑺傜偣鍒板瓙鑺傜偣 +// currentParentId = parentItem.parentId; +// } else { +// break; // 濡傛灉鎵句笉鍒扮埗鑺傜偣锛屽垯鍋滄 +// } +// } +// // 娣诲姞褰撳墠鑺傜偣鐨� ID 鍒拌矾寰勬湯灏� +// path.push(item.id); +// // 濡傛灉璺緞涓嶄负绌猴紝鍒欐坊鍔犲埌 selectedOptions +// if (path.length > 0) { +// selected.push(path); +// } +// }); + +// // 鏇存柊 selectedOptions +// selectedOptions.value = selected; +// console.log(selected); +// console.log(topLevelItems); +// // 娉ㄦ剰锛氱‘淇� selectedOptions 鍜� options 鏄搷搴斿紡鐨� +// } // 缂栬緫 const getTableRowa = async () => { - let id = window.localStorage.getItem('id') + let ids = window.localStorage.getItem('ids') 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, + id:ids, 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