diff --git a/src/router/modules/system.ts b/src/router/modules/system.ts index f39f4b2..c14d206 100644 --- a/src/router/modules/system.ts +++ b/src/router/modules/system.ts @@ -227,7 +227,7 @@ meta: { title: '登录日志', icon: 'ep:key', - auth: '/sys/role', + auth: '/sys/loginLog/list', }, children: [ { diff --git a/src/router/modules/system.ts b/src/router/modules/system.ts index f39f4b2..c14d206 100644 --- a/src/router/modules/system.ts +++ b/src/router/modules/system.ts @@ -227,7 +227,7 @@ meta: { title: '登录日志', icon: 'ep:key', - auth: '/sys/role', + auth: '/sys/loginLog/list', }, children: [ { diff --git a/src/views/system/dict/list.dict.vue b/src/views/system/dict/list.dict.vue index 2730e6c..f84accc 100644 --- a/src/views/system/dict/list.dict.vue +++ b/src/views/system/dict/list.dict.vue @@ -1,13 +1,12 @@ + + + + + + 展开/折叠 + + + 全选 + + + 父子联动 + + + + + + + + + + + + + diff --git a/src/router/modules/system.ts b/src/router/modules/system.ts index f39f4b2..c14d206 100644 --- a/src/router/modules/system.ts +++ b/src/router/modules/system.ts @@ -227,7 +227,7 @@ meta: { title: '登录日志', icon: 'ep:key', - auth: '/sys/role', + auth: '/sys/loginLog/list', }, children: [ { diff --git a/src/views/system/dict/list.dict.vue b/src/views/system/dict/list.dict.vue index 2730e6c..f84accc 100644 --- a/src/views/system/dict/list.dict.vue +++ b/src/views/system/dict/list.dict.vue @@ -1,13 +1,12 @@ + + + + + + 展开/折叠 + + + 全选 + + + 父子联动 + + + + + + + + + + + + + diff --git a/src/views/system/role/function.perm.vue b/src/views/system/role/function.perm.vue index 178e924..294dc9f 100644 --- a/src/views/system/role/function.perm.vue +++ b/src/views/system/role/function.perm.vue @@ -24,6 +24,8 @@ children: 'children', } const filterText = ref('') +// 所有资源id +const resourceIds = ref([]) // 资源树列表数据 const treeList = ref([]) // 默认展开项 @@ -65,10 +67,12 @@ loading.value = true getResourceListByRole(roleid).then((response) => { if (response.data) { + resourceIds.value = response.data.map((item: { id: string }) => item.id) treeList.value = toTreeList(response.data) const temp = getShowItem(response.data) // 获取展开项和选中项 defaultExpanded.value = temp.expandList defaultChecked.value = temp.openedList + tree.value.setCheckedKeys(temp.openedList) loading.value = false } }) @@ -101,7 +105,7 @@ } // 全选或全不选 function handleCheckedTreeNodeAll(value: boolean) { - tree.value.setCheckedNodes(value ? treeList.value : []) + tree.value.setCheckedKeys(value ? resourceIds.value : []) } const filterNode = (value: string, data: { name: string }) => data.name?.includes(value) diff --git a/src/router/modules/system.ts b/src/router/modules/system.ts index f39f4b2..c14d206 100644 --- a/src/router/modules/system.ts +++ b/src/router/modules/system.ts @@ -227,7 +227,7 @@ meta: { title: '登录日志', icon: 'ep:key', - auth: '/sys/role', + auth: '/sys/loginLog/list', }, children: [ { diff --git a/src/views/system/dict/list.dict.vue b/src/views/system/dict/list.dict.vue index 2730e6c..f84accc 100644 --- a/src/views/system/dict/list.dict.vue +++ b/src/views/system/dict/list.dict.vue @@ -1,13 +1,12 @@ + + + + + + 展开/折叠 + + + 全选 + + + 父子联动 + + + + + + + + + + + + + diff --git a/src/views/system/role/function.perm.vue b/src/views/system/role/function.perm.vue index 178e924..294dc9f 100644 --- a/src/views/system/role/function.perm.vue +++ b/src/views/system/role/function.perm.vue @@ -24,6 +24,8 @@ children: 'children', } const filterText = ref('') +// 所有资源id +const resourceIds = ref([]) // 资源树列表数据 const treeList = ref([]) // 默认展开项 @@ -65,10 +67,12 @@ loading.value = true getResourceListByRole(roleid).then((response) => { if (response.data) { + resourceIds.value = response.data.map((item: { id: string }) => item.id) treeList.value = toTreeList(response.data) const temp = getShowItem(response.data) // 获取展开项和选中项 defaultExpanded.value = temp.expandList defaultChecked.value = temp.openedList + tree.value.setCheckedKeys(temp.openedList) loading.value = false } }) @@ -101,7 +105,7 @@ } // 全选或全不选 function handleCheckedTreeNodeAll(value: boolean) { - tree.value.setCheckedNodes(value ? treeList.value : []) + tree.value.setCheckedKeys(value ? resourceIds.value : []) } const filterNode = (value: string, data: { name: string }) => data.name?.includes(value) diff --git a/src/views/system/role/list.role.vue b/src/views/system/role/list.role.vue index 96f4dfb..be01103 100644 --- a/src/views/system/role/list.role.vue +++ b/src/views/system/role/list.role.vue @@ -6,12 +6,21 @@ import type { DataScopeTypeInfo, RoleInfo } from './role_interface' import SystemEditRole from './edit.role.vue' import FunctionPerm from './function.perm.vue' +import DataPerm from './data.perm.vue' import { delRole, getDataScopeTypeList, getRoleList } from '@/api/system/role' import { toTreeList } from '@/utils/structure' const { proxy } = getCurrentInstance() as any const editDialog = ref() // 组件 +// 数据权限类型字典 +const dataScopeTypeDict: { [key: string]: string } = { + 1: '所有数据', + 2: '所属及下属部门', + 3: '本部门', + 4: '自定义', +} + // 默认查询条件 const defaultQuery = { keyword: '', @@ -27,8 +36,9 @@ const columns = ref([ { text: '角色名称', value: 'name', align: 'left' }, { text: '所在组织机构', value: 'deptName' }, - { text: '排序', value: 'num', width: 80 }, + { text: '数据权限类型', value: 'dataScopeTypeName' }, { text: '别名', value: 'tips' }, + { text: '排序', value: 'num', width: 80 }, ]) // 数据列表 const list: Ref = ref([]) @@ -42,7 +52,13 @@ function fetchData() { loading.value = true getRoleList(listQuery).then((res) => { - const treeData = toTreeList(res.data) + const data = res.data.map((item: RoleInfo): RoleInfo => { + return { + ...item, + dataScopeTypeName: dataScopeTypeDict[parseInt(item.dataScopeType)], + } + }) + const treeData = toTreeList(data) list.value = treeData loading.value = false }) @@ -81,10 +97,17 @@ editDialog.value.initDialog('create') } +// 打开功能权限菜单 const functionPerm = ref() function openFunctionPerm(row: RoleInfo) { functionPerm.value.initDialog(row) } + +// 打开数据权限菜单 +const dataPerm = ref() +function openDataPerm(row: RoleInfo) { + dataPerm.value.initDialog(row) +} // 表格组件 const table = ref() const expansion = ref(false) @@ -126,26 +149,28 @@ - + - - 功能权限 - - - 数据权限 - 修改 删除 + + 功能权限 + + + + 数据权限 + + diff --git a/src/router/modules/system.ts b/src/router/modules/system.ts index f39f4b2..c14d206 100644 --- a/src/router/modules/system.ts +++ b/src/router/modules/system.ts @@ -227,7 +227,7 @@ meta: { title: '登录日志', icon: 'ep:key', - auth: '/sys/role', + auth: '/sys/loginLog/list', }, children: [ { diff --git a/src/views/system/dict/list.dict.vue b/src/views/system/dict/list.dict.vue index 2730e6c..f84accc 100644 --- a/src/views/system/dict/list.dict.vue +++ b/src/views/system/dict/list.dict.vue @@ -1,13 +1,12 @@ + + + + + + 展开/折叠 + + + 全选 + + + 父子联动 + + + + + + + + + + + + + diff --git a/src/views/system/role/function.perm.vue b/src/views/system/role/function.perm.vue index 178e924..294dc9f 100644 --- a/src/views/system/role/function.perm.vue +++ b/src/views/system/role/function.perm.vue @@ -24,6 +24,8 @@ children: 'children', } const filterText = ref('') +// 所有资源id +const resourceIds = ref([]) // 资源树列表数据 const treeList = ref([]) // 默认展开项 @@ -65,10 +67,12 @@ loading.value = true getResourceListByRole(roleid).then((response) => { if (response.data) { + resourceIds.value = response.data.map((item: { id: string }) => item.id) treeList.value = toTreeList(response.data) const temp = getShowItem(response.data) // 获取展开项和选中项 defaultExpanded.value = temp.expandList defaultChecked.value = temp.openedList + tree.value.setCheckedKeys(temp.openedList) loading.value = false } }) @@ -101,7 +105,7 @@ } // 全选或全不选 function handleCheckedTreeNodeAll(value: boolean) { - tree.value.setCheckedNodes(value ? treeList.value : []) + tree.value.setCheckedKeys(value ? resourceIds.value : []) } const filterNode = (value: string, data: { name: string }) => data.name?.includes(value) diff --git a/src/views/system/role/list.role.vue b/src/views/system/role/list.role.vue index 96f4dfb..be01103 100644 --- a/src/views/system/role/list.role.vue +++ b/src/views/system/role/list.role.vue @@ -6,12 +6,21 @@ import type { DataScopeTypeInfo, RoleInfo } from './role_interface' import SystemEditRole from './edit.role.vue' import FunctionPerm from './function.perm.vue' +import DataPerm from './data.perm.vue' import { delRole, getDataScopeTypeList, getRoleList } from '@/api/system/role' import { toTreeList } from '@/utils/structure' const { proxy } = getCurrentInstance() as any const editDialog = ref() // 组件 +// 数据权限类型字典 +const dataScopeTypeDict: { [key: string]: string } = { + 1: '所有数据', + 2: '所属及下属部门', + 3: '本部门', + 4: '自定义', +} + // 默认查询条件 const defaultQuery = { keyword: '', @@ -27,8 +36,9 @@ const columns = ref([ { text: '角色名称', value: 'name', align: 'left' }, { text: '所在组织机构', value: 'deptName' }, - { text: '排序', value: 'num', width: 80 }, + { text: '数据权限类型', value: 'dataScopeTypeName' }, { text: '别名', value: 'tips' }, + { text: '排序', value: 'num', width: 80 }, ]) // 数据列表 const list: Ref = ref([]) @@ -42,7 +52,13 @@ function fetchData() { loading.value = true getRoleList(listQuery).then((res) => { - const treeData = toTreeList(res.data) + const data = res.data.map((item: RoleInfo): RoleInfo => { + return { + ...item, + dataScopeTypeName: dataScopeTypeDict[parseInt(item.dataScopeType)], + } + }) + const treeData = toTreeList(data) list.value = treeData loading.value = false }) @@ -81,10 +97,17 @@ editDialog.value.initDialog('create') } +// 打开功能权限菜单 const functionPerm = ref() function openFunctionPerm(row: RoleInfo) { functionPerm.value.initDialog(row) } + +// 打开数据权限菜单 +const dataPerm = ref() +function openDataPerm(row: RoleInfo) { + dataPerm.value.initDialog(row) +} // 表格组件 const table = ref() const expansion = ref(false) @@ -126,26 +149,28 @@ - + - - 功能权限 - - - 数据权限 - 修改 删除 + + 功能权限 + + + + 数据权限 + + diff --git a/src/views/system/role/role_interface.ts b/src/views/system/role/role_interface.ts index 47032e6..d3847c3 100644 --- a/src/views/system/role/role_interface.ts +++ b/src/views/system/role/role_interface.ts @@ -10,6 +10,7 @@ name: string // 角色名 tips: string // 别名 dataScopeType: string // 数据权限类型 + dataScopeTypeName?: string // 数据权限类型名称 pid: string // 父角色 deptId: string // 组织机构 num: number // 排序