|
@@ -11,7 +11,7 @@
|
|
|
<el-tree
|
|
|
ref="treeRef"
|
|
|
show-checkbox
|
|
|
- node-key="id"
|
|
|
+ node-key="code"
|
|
|
:data="myTreeData || []"
|
|
|
:props="treeProps"
|
|
|
:filter-node-method="filterTree"
|
|
@@ -74,13 +74,13 @@ const getTreeList = (oldDataList: any[], sortField = false): any[] => {
|
|
|
const dataList: any[] = cloneDeep(oldDataList)
|
|
|
// 第一次是将全部的permissionId作为对象的key重组成一个对象
|
|
|
const formatObj: any = dataList.reduce((pre, cur) => {
|
|
|
- return { ...pre, [cur['id']]: cur }
|
|
|
+ return { ...pre, [cur['code']]: cur }
|
|
|
}, {})
|
|
|
// 排序
|
|
|
const sortArray = sortField ? dataList.sort((a: any, b: any) => a['sort'] - b['sort']) : dataList
|
|
|
const formatArray = sortArray.reduce((arr: any[], cur: any) => {
|
|
|
- const pid = cur.parentId ? cur.parentId : 0
|
|
|
- const parent = formatObj[pid]
|
|
|
+ const pCode = cur.parentCode ? cur.parentCode : '0'
|
|
|
+ const parent = formatObj[pCode]
|
|
|
if (parent) {
|
|
|
parent.children ? parent.children.push(cur) : (parent.children = [cur])
|
|
|
} else {
|
|
@@ -99,7 +99,7 @@ watch(
|
|
|
{ immediate: true }
|
|
|
)
|
|
|
const filterTree = (value: string, data: any) => {
|
|
|
- return !data.originId
|
|
|
+ return !data.originCode
|
|
|
}
|
|
|
const myTreeData = ref<any[]>([])
|
|
|
const treeProps = {
|
|
@@ -111,7 +111,7 @@ watch(myTreeData, () => {
|
|
|
})
|
|
|
})
|
|
|
const renderContent = (h: any, { node, data, store }: any) => {
|
|
|
- if (data.originId) {
|
|
|
+ if (data.originCode) {
|
|
|
return h(
|
|
|
'span',
|
|
|
{
|
|
@@ -133,15 +133,15 @@ const renderContent = (h: any, { node, data, store }: any) => {
|
|
|
return data.name
|
|
|
}
|
|
|
|
|
|
-const getPIds = (treeData: any, pIds: any = []) => {
|
|
|
+const getPCodes = (treeData: any, pCodes: any = []) => {
|
|
|
for (let i = 0; i < treeData.length; i++) {
|
|
|
let item: any = treeData[i]
|
|
|
if (item.children && item.children.length) {
|
|
|
- pIds.push(item.id)
|
|
|
- getPIds(item.children, pIds)
|
|
|
+ pCodes.push(item.code)
|
|
|
+ getPCodes(item.children, pCodes)
|
|
|
}
|
|
|
}
|
|
|
- return pIds
|
|
|
+ return pCodes
|
|
|
}
|
|
|
const newFlatArr = ref<any[]>([])
|
|
|
watch(privilege, () => {
|
|
@@ -155,18 +155,15 @@ watch(privilege, () => {
|
|
|
for (let i = 0; i < data.length; i++) {
|
|
|
let node = data[i]
|
|
|
if (ROLE_BUTTON_CODES.includes(node.code)) {
|
|
|
- let pNode: any = data.find((v: any) => v.id == node.parentId) || {}
|
|
|
+ let pNode: any = data.find((v: any) => v.code == node.parentCode) || {}
|
|
|
if (!hasPermBtnPageNodes.find((v: any) => v.code == pNode.code + '_in_page')) {
|
|
|
let id = createNum(-100000, -10000)
|
|
|
hasPermBtnPageNodes.push(
|
|
|
Object.assign({}, node, {
|
|
|
code: pNode.code + '_in_page',
|
|
|
- nodeCode: pNode.nodeCode + '_in_page',
|
|
|
name: '页面',
|
|
|
hasPrivilege: !!pNode.hasPrivilege,
|
|
|
- id,
|
|
|
- nodeId: id + '',
|
|
|
- originId: node.id,
|
|
|
+ originCode: node.code,
|
|
|
type: 'page',
|
|
|
})
|
|
|
)
|
|
@@ -179,34 +176,34 @@ watch(privilege, () => {
|
|
|
let treeData = getTreeList(concatData)
|
|
|
myTreeData.value = treeData
|
|
|
|
|
|
- let pIds = getPIds(treeData)
|
|
|
+ let pCodes = getPCodes(treeData)
|
|
|
|
|
|
nextTick(() => {
|
|
|
treeRef?.value?.setCheckedKeys(
|
|
|
- newFlatArr.value?.filter((d) => d.hasPrivilege && pIds.indexOf(d.id) == -1)?.map((d) => d.id)
|
|
|
+ newFlatArr.value?.filter((d) => d.hasPrivilege && pCodes.indexOf(d.code) == '-1')?.map((d) => d.code)
|
|
|
)
|
|
|
})
|
|
|
})
|
|
|
|
|
|
-function filterPrivilege(
|
|
|
- item: MenuItem,
|
|
|
- privilege: ExtractApiResponse<'getRolePrivilege'>
|
|
|
-): MenuItemWithId | undefined {
|
|
|
- const privilegeItem = privilege.find((d) => item.index === d.code)
|
|
|
- if (privilegeItem) {
|
|
|
- return {
|
|
|
- ...item,
|
|
|
- id: privilegeItem.id,
|
|
|
- children: item.children?.map((child) => filterPrivilege(child, privilege)).filter((d) => !!d) as MenuItemWithId[],
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
+// function filterPrivilege(
|
|
|
+// item: MenuItem,
|
|
|
+// privilege: ExtractApiResponse<'getRolePrivilege'>
|
|
|
+// ): MenuItemWithId | undefined {
|
|
|
+// const privilegeItem = privilege.find((d) => item.index === d.code)
|
|
|
+// if (privilegeItem) {
|
|
|
+// return {
|
|
|
+// ...item,
|
|
|
+// id: privilegeItem.id,
|
|
|
+// children: item.children?.map((child) => filterPrivilege(child, privilege)).filter((d) => !!d) as MenuItemWithId[],
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
|
|
|
-const menuTree = computed(() => {
|
|
|
- return mainLayoutStore.menuList?.reduce((menus, menu) => {
|
|
|
- return menus.concat(filterPrivilege(menu, privilege.value || []) || [])
|
|
|
- }, [] as MenuItem[])
|
|
|
-})
|
|
|
+// const menuTree = computed(() => {
|
|
|
+// return mainLayoutStore.menuList?.reduce((menus, menu) => {
|
|
|
+// return menus.concat(filterPrivilege(menu, privilege.value || []) || [])
|
|
|
+// }, [] as MenuItem[])
|
|
|
+// })
|
|
|
const onCheckChange = (a: any, b: any) => {
|
|
|
let resultKeys: any = treeRef?.value?.getCheckedKeys(true)
|
|
|
if (a.type == 'page') {
|
|
@@ -214,8 +211,8 @@ const onCheckChange = (a: any, b: any) => {
|
|
|
if (!b) {
|
|
|
for (let i = 0; i < newFlatArr.value.length; i++) {
|
|
|
let item = newFlatArr.value[i]
|
|
|
- if (item.parentId == a.parentId && item.type === 'button') {
|
|
|
- underPageBtnKeys.push(item.id)
|
|
|
+ if (item.parentCode == a.parentCode && item.type === 'button') {
|
|
|
+ underPageBtnKeys.push(item.code)
|
|
|
}
|
|
|
}
|
|
|
resultKeys = resultKeys?.filter((k: any) => !underPageBtnKeys.includes(k))
|
|
@@ -224,10 +221,10 @@ const onCheckChange = (a: any, b: any) => {
|
|
|
}
|
|
|
if (a.type == 'button') {
|
|
|
if (!!b) {
|
|
|
- let page = newFlatArr.value.find((item: any) => item.type === 'page' && item.parentId == a.parentId)
|
|
|
+ let page = newFlatArr.value.find((item: any) => item.type === 'page' && item.parentCode == a.parentCode)
|
|
|
|
|
|
- if (!resultKeys?.includes(page.id)) {
|
|
|
- treeRef?.value?.setCheckedKeys([...resultKeys, page.id])
|
|
|
+ if (!resultKeys?.includes(page.code)) {
|
|
|
+ treeRef?.value?.setCheckedKeys([...resultKeys, page.code])
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -243,10 +240,10 @@ const onSubmit = async () => {
|
|
|
const checkedHalfNodes = treeRef?.value?.getHalfCheckedNodes() || []
|
|
|
const privilegeIds = checkedNodes
|
|
|
.concat(checkedHalfNodes)
|
|
|
- .map((d) => d.id)
|
|
|
- .filter((id) => id > -1)
|
|
|
+ .map((d) => d.code)
|
|
|
+ .filter((code) => code != '-1')
|
|
|
|
|
|
- await setPrivilege({ role: roleSelf.value, privilegeIds })
|
|
|
+ await setPrivilege({ role: roleSelf.value, privilegeCodes: privilegeIds })
|
|
|
ElMessage.success('保存成功')
|
|
|
} catch (error) {
|
|
|
console.error(error)
|