feat: 搭建后台管理框架
This commit is contained in:
1 parent
6d28bab72b
commit
40546bfd01
238 files changed
+18160
-3837
No files matched your search
@@ -15,33 +15,49 @@ export function useRolePermissionEditor() {
|
||||
const treeRef = ref()
|
||||
const syncingTree = ref(false)
|
||||
const permissionTree = computed(() => {
|
||||
const groups = permissionGroups.map(group => ({
|
||||
const groups = permissionGroups.map((group) => ({
|
||||
id: `group-${group.name}`,
|
||||
label: group.name,
|
||||
children: group.items.map(permission => ({ id: permission, label: permission, permission })),
|
||||
children: group.items.map((permission) => ({ id: permission, label: permission, permission }))
|
||||
}))
|
||||
if (customMenus.length) {
|
||||
groups.push({
|
||||
id: 'group-custom-menus',
|
||||
label: '自定义菜单',
|
||||
children: customMenus.map(menu => ({ id: menu.permission, label: menu.title, permission: menu.permission })),
|
||||
children: customMenus.map((menu) => ({
|
||||
id: menu.permission,
|
||||
label: menu.title,
|
||||
permission: menu.permission
|
||||
}))
|
||||
})
|
||||
}
|
||||
return groups
|
||||
})
|
||||
const currentLevel = computed(() => roleData.find(role => role.name === currentRole.value)?.level || 1)
|
||||
const selectedRoleRecord = computed(() => roleData.find(role => role.name === selectedRole.value))
|
||||
const canEditSelectedRole = computed(() => (selectedRoleRecord.value?.level || 1) >= currentLevel.value)
|
||||
const currentLevel = computed(
|
||||
() => roleData.find((role) => role.name === currentRole.value)?.level || 1
|
||||
)
|
||||
const selectedRoleRecord = computed(() =>
|
||||
roleData.find((role) => role.name === selectedRole.value)
|
||||
)
|
||||
const canEditSelectedRole = computed(
|
||||
() => (selectedRoleRecord.value?.level || 1) >= currentLevel.value
|
||||
)
|
||||
|
||||
watch(selectedRole, async role => {
|
||||
syncingTree.value = true
|
||||
await nextTick()
|
||||
treeRef.value?.setCheckedKeys(rolePermissions[role] || [])
|
||||
await nextTick()
|
||||
syncingTree.value = false
|
||||
}, { immediate: true })
|
||||
watch(
|
||||
selectedRole,
|
||||
async (role) => {
|
||||
syncingTree.value = true
|
||||
await nextTick()
|
||||
treeRef.value?.setCheckedKeys(rolePermissions[role] || [])
|
||||
await nextTick()
|
||||
syncingTree.value = false
|
||||
},
|
||||
{ immediate: true }
|
||||
)
|
||||
|
||||
function selectRole(row) { selectedRole.value = row.name }
|
||||
function selectRole(row) {
|
||||
selectedRole.value = row.name
|
||||
}
|
||||
function handleCheck(data, checked) {
|
||||
if (!syncingTree.value && data.permission && canEditSelectedRole.value) {
|
||||
updateRolePermission(selectedRole.value, data.permission, checked)
|
||||
@@ -50,10 +66,15 @@ export function useRolePermissionEditor() {
|
||||
function addRole() {
|
||||
const name = newRoleName.value.trim()
|
||||
if (!name) return ElMessage.warning('请输入角色名称')
|
||||
if (roleData.some(role => role.name === name)) return ElMessage.warning('角色名称已存在')
|
||||
if (roleData.some((role) => role.name === name)) return ElMessage.warning('角色名称已存在')
|
||||
roleData.push({
|
||||
id: Date.now(), name, description: '自定义权限角色', memberCount: 0,
|
||||
category: '自定义角色', level: currentLevel.value + 1, status: '启用',
|
||||
id: Date.now(),
|
||||
name,
|
||||
description: '自定义权限角色',
|
||||
memberCount: 0,
|
||||
category: '自定义角色',
|
||||
level: currentLevel.value + 1,
|
||||
status: '启用'
|
||||
})
|
||||
createRole(name)
|
||||
selectedRole.value = name
|
||||
@@ -63,7 +84,17 @@ export function useRolePermissionEditor() {
|
||||
}
|
||||
|
||||
return {
|
||||
roleData, rolePermissions, selectedRole, selectedRoleRecord, canEditSelectedRole,
|
||||
permissionTree, treeRef, dialogVisible, newRoleName, selectRole, handleCheck, addRole,
|
||||
roleData,
|
||||
rolePermissions,
|
||||
selectedRole,
|
||||
selectedRoleRecord,
|
||||
canEditSelectedRole,
|
||||
permissionTree,
|
||||
treeRef,
|
||||
dialogVisible,
|
||||
newRoleName,
|
||||
selectRole,
|
||||
handleCheck,
|
||||
addRole
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user