From 5667b66612a281078fb586b8eca713cb40f61c20 Mon Sep 17 00:00:00 2001 From: jingna <1264204245@qq.com> Date: Thu, 22 May 2025 18:12:49 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=9D=83=E9=99=90=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/core-frontend/src/api/permission/menu.ts | 8 + .../src/api/permission/organization.ts | 3 +- core/core-frontend/src/api/permission/role.ts | 4 +- core/core-frontend/src/api/permission/user.ts | 13 +- .../assets/svg/menuconfig_treeadd_white.svg | 6 + .../src/assets/svg/reset_password_blue.svg | 6 + .../src/assets/svg/user_connect_white.svg | 1 + core/core-frontend/src/router/index.ts | 7 + .../src/viewsnew/application/index.vue | 2 +- .../application/menuconfig/header.vue | 104 ++++ .../viewsnew/application/menuconfig/index.vue | 498 +++++++++++++++++ .../application/module/Leftmenu/index.vue | 3 +- .../permissionset/organization/index.vue | 4 +- .../application/permissionset/role/index.vue | 85 ++- .../application/permissionset/user/index.vue | 500 ++++++++++-------- 15 files changed, 1008 insertions(+), 236 deletions(-) create mode 100644 core/core-frontend/src/api/permission/menu.ts create mode 100644 core/core-frontend/src/assets/svg/menuconfig_treeadd_white.svg create mode 100644 core/core-frontend/src/assets/svg/reset_password_blue.svg create mode 100644 core/core-frontend/src/assets/svg/user_connect_white.svg create mode 100644 core/core-frontend/src/viewsnew/application/menuconfig/header.vue create mode 100644 core/core-frontend/src/viewsnew/application/menuconfig/index.vue diff --git a/core/core-frontend/src/api/permission/menu.ts b/core/core-frontend/src/api/permission/menu.ts new file mode 100644 index 0000000..bed76e6 --- /dev/null +++ b/core/core-frontend/src/api/permission/menu.ts @@ -0,0 +1,8 @@ +import request from '@/config/axios' + +export const getMenuTree = params => request.post({ url: '/menuInterface/getMenuTree', params }) // 查询用户 +export const addMenu = data => request.post({ url: '/menuInterface/addMenu', data }) // 新增用户 +export const updateMenuById = data => request.post({ url: '/menuInterface/updateMenuById', data }) //修改用户 +export const deleteMenuById = id => request.post({ url: '/menuInterface/deleteMenuById?id=' + id }) //删除 +// export const setStatus = params => request.post({ url: '/user/setStatus', params }) //设置有效状态 +// export const resetPassword = id => request.post({ url: '/user/resetPassword?id=' + id }) //重置密码 \ No newline at end of file diff --git a/core/core-frontend/src/api/permission/organization.ts b/core/core-frontend/src/api/permission/organization.ts index b9fb0f9..1dcd7a2 100644 --- a/core/core-frontend/src/api/permission/organization.ts +++ b/core/core-frontend/src/api/permission/organization.ts @@ -1,9 +1,8 @@ import request from '@/config/axios' -import { param } from 'jquery' export const getOrganizations = params => request.post({ url: '/organization/getOrganizations', params }) // 查询企业/部门 export const addOrganization = data => request.post({ url: '/organization/addOrganization', data }) // 新增企业/部门 export const updateOrganizationById = data => request.post({ url: '/organization/updateOrganizationById', data }) //修改企业/部门 export const setIsValid = params => request.post({ url: '/organization/setIsValid', params }) //设置有效状态 export const deleteById = id => request.delete({ url: '/organization/deleteById?id=' + id }) //删除 -export const getOrganizationById = data => request.post({ url: '/organization/getOrganizationById', data })//根据id查询部门 +export const getOrganizationById = appId => request.post({ url: '/organization/listOrganization?appId=' + appId })//查询所有 diff --git a/core/core-frontend/src/api/permission/role.ts b/core/core-frontend/src/api/permission/role.ts index 77f23c4..48a93cf 100644 --- a/core/core-frontend/src/api/permission/role.ts +++ b/core/core-frontend/src/api/permission/role.ts @@ -5,4 +5,6 @@ export const addRole = data => request.post({ url: '/role/addRole', data }) // export const updateRole = data => request.post({ url: '/role/updateRole', data }) //修改企业/部门 export const setIsValid = params => request.post({ url: '/role/setIsvaild', params }) //设置有效状态 export const deleteRoleById = id => request.post({ url: '/role/deleteRoleById?id=' + id }) //删除 -export const deleteRoleByIds = id => request.post({ url: '/role/deleteRoleByIds?ids=' + id }) //删除 \ No newline at end of file +export const deleteRoleByIds = id => request.post({ url: '/role/deleteRoleByIds?ids=' + id }) //删除 +export const permissionAssignment = params => request.post({ url: '/menuInterface/permissionAssignment', params }) //查询角色权限 +export const setMenuByRoleId = params => request.post({ url: '/menuInterface/setMenuByRoleId', params }) //设置角色权限 \ No newline at end of file diff --git a/core/core-frontend/src/api/permission/user.ts b/core/core-frontend/src/api/permission/user.ts index 77f23c4..eda4bc6 100644 --- a/core/core-frontend/src/api/permission/user.ts +++ b/core/core-frontend/src/api/permission/user.ts @@ -1,8 +1,9 @@ import request from '@/config/axios' -export const listRole = params => request.post({ url: '/role/listRole', params }) // 查询角色 -export const addRole = data => request.post({ url: '/role/addRole', data }) // 新增角色 -export const updateRole = data => request.post({ url: '/role/updateRole', data }) //修改企业/部门 -export const setIsValid = params => request.post({ url: '/role/setIsvaild', params }) //设置有效状态 -export const deleteRoleById = id => request.post({ url: '/role/deleteRoleById?id=' + id }) //删除 -export const deleteRoleByIds = id => request.post({ url: '/role/deleteRoleByIds?ids=' + id }) //删除 \ No newline at end of file +export const queryUsers = params => request.get({ url: '/user/queryUsers', params }) // 查询用户 +export const addUser = data => request.post({ url: '/user/addUser', data }) // 新增用户 +export const updateUser = data => request.post({ url: '/user/updateUser', data }) //修改用户 +export const setStatus = params => request.post({ url: '/user/setStatus', params }) //设置有效状态 +export const deleteUserById = id => request.post({ url: '/user/deleteUserById?id=' + id }) //删除 +export const deleteUserByIds = id => request.post({ url: '/user/deleteUserByIds?ids=' + id }) //删除 +export const resetPassword = id => request.post({ url: '/user/resetPassword?id=' + id }) //重置密码 \ No newline at end of file diff --git a/core/core-frontend/src/assets/svg/menuconfig_treeadd_white.svg b/core/core-frontend/src/assets/svg/menuconfig_treeadd_white.svg new file mode 100644 index 0000000..bd5e1d9 --- /dev/null +++ b/core/core-frontend/src/assets/svg/menuconfig_treeadd_white.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/core/core-frontend/src/assets/svg/reset_password_blue.svg b/core/core-frontend/src/assets/svg/reset_password_blue.svg new file mode 100644 index 0000000..0028219 --- /dev/null +++ b/core/core-frontend/src/assets/svg/reset_password_blue.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/core/core-frontend/src/assets/svg/user_connect_white.svg b/core/core-frontend/src/assets/svg/user_connect_white.svg new file mode 100644 index 0000000..bc107b3 --- /dev/null +++ b/core/core-frontend/src/assets/svg/user_connect_white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/core/core-frontend/src/router/index.ts b/core/core-frontend/src/router/index.ts index 49ca9f8..ab66a0e 100644 --- a/core/core-frontend/src/router/index.ts +++ b/core/core-frontend/src/router/index.ts @@ -212,6 +212,13 @@ export const routes: AppRouteRecordRaw[] = [ hidden: true, meta: {}, component: () => import('@/viewsnew/application/permissionset/index.vue') + }, + { + path: '/menuconfig', + name: 'menuconfig', + hidden: true, + meta: {}, + component: () => import('@/viewsnew/application/menuconfig/index.vue') } ] diff --git a/core/core-frontend/src/viewsnew/application/index.vue b/core/core-frontend/src/viewsnew/application/index.vue index ae4b6d9..94c09b8 100644 --- a/core/core-frontend/src/viewsnew/application/index.vue +++ b/core/core-frontend/src/viewsnew/application/index.vue @@ -104,7 +104,7 @@ function delClick(row){ - + diff --git a/core/core-frontend/src/viewsnew/application/menuconfig/header.vue b/core/core-frontend/src/viewsnew/application/menuconfig/header.vue new file mode 100644 index 0000000..0910b53 --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/menuconfig/header.vue @@ -0,0 +1,104 @@ + + + + diff --git a/core/core-frontend/src/viewsnew/application/menuconfig/index.vue b/core/core-frontend/src/viewsnew/application/menuconfig/index.vue new file mode 100644 index 0000000..cef7299 --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/menuconfig/index.vue @@ -0,0 +1,498 @@ + + + + + + \ No newline at end of file diff --git a/core/core-frontend/src/viewsnew/application/module/Leftmenu/index.vue b/core/core-frontend/src/viewsnew/application/module/Leftmenu/index.vue index c5a3477..3dfde66 100644 --- a/core/core-frontend/src/viewsnew/application/module/Leftmenu/index.vue +++ b/core/core-frontend/src/viewsnew/application/module/Leftmenu/index.vue @@ -357,7 +357,8 @@ function delTreeClic(){ // 删除 border-style: solid; border-color: rgba(51, 51, 51, 0); border-radius: 4px; - box-shadow:0 0 0 1px transparent ; + box-shadow:none ; + border: none !important; } :deep(.ed-input__inner){ background-color: rgba(37, 38, 38, 1); diff --git a/core/core-frontend/src/viewsnew/application/permissionset/organization/index.vue b/core/core-frontend/src/viewsnew/application/permissionset/organization/index.vue index a5f17d7..dc8e31f 100644 --- a/core/core-frontend/src/viewsnew/application/permissionset/organization/index.vue +++ b/core/core-frontend/src/viewsnew/application/permissionset/organization/index.vue @@ -7,7 +7,7 @@ import icon_permission_del_blue from '@/assets/svg/permission_del_blue.svg' import permission_table_edit_blue from '@/assets/svg/permission_table_edit_blue.svg' import permission_table_del_blue from '@/assets/svg/permission_table_del_blue.svg' import icon_add from '@/assets/svg/add_white.svg' -import type { FormInstance, FormRules } from 'element-plus' +import type { FormInstance } from 'element-plus' import { ElMessage, ElMessageBox } from 'element-plus' import { Delete } from '@element-plus/icons-vue' import { ElTable,ElTree } from 'element-plus' @@ -735,6 +735,6 @@ function formatDateTime(dateTimeStr:any){ box-shadow: none; } .el-loading-mask{ - background-color: rgba(41, 41, 41, 0.9) + background-color: rgba(37,38, 38, 0.9); } \ No newline at end of file diff --git a/core/core-frontend/src/viewsnew/application/permissionset/role/index.vue b/core/core-frontend/src/viewsnew/application/permissionset/role/index.vue index e56e23b..fa96789 100644 --- a/core/core-frontend/src/viewsnew/application/permissionset/role/index.vue +++ b/core/core-frontend/src/viewsnew/application/permissionset/role/index.vue @@ -4,11 +4,11 @@ import permission_table_edit_blue from '@/assets/svg/permission_table_edit_blue. import permission_table_del_blue from '@/assets/svg/permission_table_del_blue.svg' import perission_role_blue from '@/assets/svg/perission_role_blue.svg' import icon_add from '@/assets/svg/add_white.svg' -import type { FormInstance, FormRules } from 'element-plus' -import { ElMessage, ElMessageBox } from 'element-plus' +import type { FormInstance } from 'element-plus' import { Delete } from '@element-plus/icons-vue' -import { ElTable } from 'element-plus' -import { listRole,addRole,updateRole,setIsValid,deleteRoleById,deleteRoleByIds } from '@/api/permission/role' +import { ElTable,ElTree,ElMessage, ElMessageBox } from 'element-plus' +import { listRole,addRole,updateRole,setIsValid,deleteRoleById,deleteRoleByIds,permissionAssignment,setMenuByRoleId } from '@/api/permission/role' +import { getMenuTree } from '@/api/permission/menu' const props = defineProps({ applicationId:String }) @@ -34,6 +34,14 @@ const typeoptions = ref([ { value: '1', label: '管理员' }, { value: '2', label: '普通用户' }, ]) +const configdialog = ref(false) +const treeData:any = ref([]) +const defaultProps = { + children: 'children', + label: 'name' +} +const treeloading = ref(false); +const treeRef = ref>() const submitForm = (formEl: FormInstance | undefined) => { if (!formEl) return formEl.validate((valid) => { @@ -83,7 +91,22 @@ onMounted(() => { gettable() }) function permissionset(row:any){ - + // const params = { + // roleId: row.id, + // appId: row.appId + // } + // permissionAssignment(params).then(res => { + // console.log(res,'权限设置') + // }) + const params = { + appId: props.applicationId, + name:'', + isdisplay:'' + } + getMenuTree(params).then(res => { + treeData.value = res.data + }) + configdialog.value = true } function gettable(){ tableloading.value = true @@ -200,6 +223,19 @@ function setisValid(row:any){ tableloading.value = false }) } +function confighandleClose(){ + configdialog.value = false +} +function consfigsubmit(){ + const params = { + id: '', + menuIds: '' + } + setMenuByRoleId(params).then(res => { + console.log(res,'权限设置') + }) + configdialog.value = false +} + + + + + @@ -323,4 +371,31 @@ function setisValid(row:any){ .ed-select-dropdown__item.selected{ color: #0089ff; } + .el-tree{ + background:#212121; + color: #ffffff; + font-size: 14px; + } + .el-tree-node__content{ + height: 40px; + line-height: 40px; + } + .el-tree-node__content:hover{ + background: rgba(61,158, 255, 0.1); + color: #0089FF; + } + .el-tree-node:focus>.el-tree-node__content{ + background:#212121; + color: #ffffff; + } + .el-text{ + color: #ffffff; + } + .el-tree-node__expand-icon{ + color: #ffffff; + } + .el-checkbox__inner{ + background:#212121; + border-color:#636363; + } \ No newline at end of file diff --git a/core/core-frontend/src/viewsnew/application/permissionset/user/index.vue b/core/core-frontend/src/viewsnew/application/permissionset/user/index.vue index ec5c3ef..0bad951 100644 --- a/core/core-frontend/src/viewsnew/application/permissionset/user/index.vue +++ b/core/core-frontend/src/viewsnew/application/permissionset/user/index.vue @@ -1,76 +1,81 @@ @@ -406,35 +420,45 @@ function depthandleClose() { align-items: center; justify-content: center; } - :deep(.ed-tree){ + :deep(.el-tree){ background:#212121; - height: calc(100vh - 210px); - margin-top: 20px; + height: calc(100vh - 145px); + margin-top: 5px; color: #ffffff; font-size: 14px; } - :deep(.ed-tree-node__content){ + :deep(.el-tree-node__content){ height: 40px; line-height: 40px; } - :deep(.ed-tree-node__content:hover){ + :deep(.el-tree-node__content:hover){ background: rgba(61,158, 255, 0.1); color: #0089FF; } - :deep(.ed-tree--highlight-current .ed-tree-node.is-current>.ed-tree-node__content){ + :deep(.custom-tree-node){ + flex: 1; + display: flex; + align-items: center; + justify-content: space-between; + font-size: 14px; + padding-right: 8px; + } + :deep(.el-tree-node__content>.ed-tree-node__expand-icon){ + padding: 2px; + } + :deep(.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content){ background: #409eff; color: #ffffff; } - :deep(.custom-tree-node){ - flex: 1; - display: flex; - align-items: center; - justify-content: space-between; - font-size: 14px; - padding-right: 8px; + :deep(.el-tree-node:focus>.el-tree-node__content){ + background:#212121; + color: #ffffff; } - :deep(.ed-tree-node__content>.ed-tree-node__expand-icon){ - padding: 2px; + :deep(.el-text){ + color: #ffffff; + } + :deep(.el-tree-node__expand-icon){ + color: #ffffff; } } .organization-rightbox{ @@ -579,5 +603,45 @@ function depthandleClose() { box-shadow: none; border: 1px solid #0089ff; } - + .ed-pagination__total{ + color: #F2F4F5; + } + .ed-pagination__jump{ + color: #F2F4F5; + } + .ed-pagination .ed-pager li{ + background: #252626; + border: 1px solid #434343 !important; + color:#fff !important; + } + .ed-pagination .ed-pager li:hover{ + background: #252626; + } + .ed-pagination button.is-disabled, .ed-pagination button:disabled { + color: #787878; + background-color: #252626; + border-color: #636363 !important; + } + .ed-pagination .btn-next[aria-disabled=true]:active, .ed-pagination .btn-next[aria-disabled=true]:hover, .ed-pagination .btn-prev[aria-disabled=true]:active, .ed-pagination .btn-prev[aria-disabled=true]:hover{ + color: #bbbfc4 !important; + background-color: #252626 !important; + border-color: #636363 !important; + } + .ed-pagination__jump{ + color:#fff !important; + } + .ed-pagination .btn-next:hover, .ed-pagination .btn-prev:hover{ + background: #252626 !important; + border: 1px solid #0089ff !important; + color:#0089ff !important; + } + .ed-pagination button{ + background: #252626; + border: 1px solid #434343 !important; + color:#fff !important; + } + .ed-pagination.is-background .btn-next.is-active, .ed-pagination.is-background .btn-prev.is-active, .ed-pagination.is-background .ed-pager li.is-active { + border-color: #0089ff !important; + color: #0089ff !important; + } \ No newline at end of file From 9fdffd83dac65375301d929af9bb0332555c5856 Mon Sep 17 00:00:00 2001 From: jingna <1264204245@qq.com> Date: Fri, 23 May 2025 18:33:18 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=8F=9C=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/core-frontend/src/api/permission/menu.ts | 11 +- core/core-frontend/src/api/permission/role.ts | 2 +- .../src/viewsnew/application/addpopup.vue | 6 +- .../application/menuconfig/assocmenu.vue | 557 ++++++++++++++++++ .../application/menuconfig/assocmodule.vue | 119 ++++ .../viewsnew/application/menuconfig/index.vue | 210 +++++-- .../application/module/Leftmenu/index.vue | 1 - .../src/viewsnew/application/module/index.vue | 3 +- .../application/permissionset/index.vue | 6 +- .../permissionset/organization/index.vue | 1 + .../application/permissionset/role/index.vue | 70 ++- .../application/permissionset/user/index.vue | 1 + .../service/dataset/form/CalcFieldEdit.vue | 7 +- .../application/service/dataset/index.vue | 5 +- .../application/service/datasource/index.vue | 3 +- 15 files changed, 916 insertions(+), 86 deletions(-) create mode 100644 core/core-frontend/src/viewsnew/application/menuconfig/assocmenu.vue create mode 100644 core/core-frontend/src/viewsnew/application/menuconfig/assocmodule.vue diff --git a/core/core-frontend/src/api/permission/menu.ts b/core/core-frontend/src/api/permission/menu.ts index bed76e6..345393a 100644 --- a/core/core-frontend/src/api/permission/menu.ts +++ b/core/core-frontend/src/api/permission/menu.ts @@ -1,8 +1,7 @@ import request from '@/config/axios' -export const getMenuTree = params => request.post({ url: '/menuInterface/getMenuTree', params }) // 查询用户 -export const addMenu = data => request.post({ url: '/menuInterface/addMenu', data }) // 新增用户 -export const updateMenuById = data => request.post({ url: '/menuInterface/updateMenuById', data }) //修改用户 -export const deleteMenuById = id => request.post({ url: '/menuInterface/deleteMenuById?id=' + id }) //删除 -// export const setStatus = params => request.post({ url: '/user/setStatus', params }) //设置有效状态 -// export const resetPassword = id => request.post({ url: '/user/resetPassword?id=' + id }) //重置密码 \ No newline at end of file +export const getMenuTree = params => request.post({ url: '/menuInterface/getMenuTree', params }) // 查询菜单 +export const addMenu = data => request.post({ url: '/menuInterface/addMenu', data }) // 新增菜单 +export const updateMenuById = data => request.post({ url: '/menuInterface/updateMenuById', data }) //修改菜单 +export const deleteMenuById = id => request.post({ url: '/menuInterface/deleteMenuById?id=' + id }) //删除菜单 +export const setModuleId = params => request.post({ url: '/menuInterface/setModuleId',params }) //关联模块 \ No newline at end of file diff --git a/core/core-frontend/src/api/permission/role.ts b/core/core-frontend/src/api/permission/role.ts index 48a93cf..e4e6f1b 100644 --- a/core/core-frontend/src/api/permission/role.ts +++ b/core/core-frontend/src/api/permission/role.ts @@ -7,4 +7,4 @@ export const setIsValid = params => request.post({ url: '/role/setIsvaild', para export const deleteRoleById = id => request.post({ url: '/role/deleteRoleById?id=' + id }) //删除 export const deleteRoleByIds = id => request.post({ url: '/role/deleteRoleByIds?ids=' + id }) //删除 export const permissionAssignment = params => request.post({ url: '/menuInterface/permissionAssignment', params }) //查询角色权限 -export const setMenuByRoleId = params => request.post({ url: '/menuInterface/setMenuByRoleId', params }) //设置角色权限 \ No newline at end of file +export const setMenuByRoleId = params => request.post({ url: '/role/setMenuByRoleId', params }) //设置角色权限 diff --git a/core/core-frontend/src/viewsnew/application/addpopup.vue b/core/core-frontend/src/viewsnew/application/addpopup.vue index 8eccee9..97493b2 100644 --- a/core/core-frontend/src/viewsnew/application/addpopup.vue +++ b/core/core-frontend/src/viewsnew/application/addpopup.vue @@ -277,14 +277,12 @@ const handleAvatarSuccess = file => { } .ed-dialog__headerbtn{ color: #ffffff; + top: 11px !important; + right: 15px !important; } .ed-dialog__title{ color: #ffffff; } -.ed-dialog__headerbtn{ - top: 10px !important; - right: 15px !important; -} .ed-dialog { border: 1px solid #4f5052; border-radius: 4px; diff --git a/core/core-frontend/src/viewsnew/application/menuconfig/assocmenu.vue b/core/core-frontend/src/viewsnew/application/menuconfig/assocmenu.vue new file mode 100644 index 0000000..9c61ce8 --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/menuconfig/assocmenu.vue @@ -0,0 +1,557 @@ + + + + \ No newline at end of file diff --git a/core/core-frontend/src/viewsnew/application/menuconfig/assocmodule.vue b/core/core-frontend/src/viewsnew/application/menuconfig/assocmodule.vue new file mode 100644 index 0000000..2c043d8 --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/menuconfig/assocmodule.vue @@ -0,0 +1,119 @@ + + + \ No newline at end of file diff --git a/core/core-frontend/src/viewsnew/application/menuconfig/index.vue b/core/core-frontend/src/viewsnew/application/menuconfig/index.vue index cef7299..058f0c9 100644 --- a/core/core-frontend/src/viewsnew/application/menuconfig/index.vue +++ b/core/core-frontend/src/viewsnew/application/menuconfig/index.vue @@ -1,23 +1,23 @@ - + + \ No newline at end of file diff --git a/core/core-frontend/src/viewsnew/application/module/Leftmenu/index.vue b/core/core-frontend/src/viewsnew/application/module/Leftmenu/index.vue index 3dfde66..7097a87 100644 --- a/core/core-frontend/src/viewsnew/application/module/Leftmenu/index.vue +++ b/core/core-frontend/src/viewsnew/application/module/Leftmenu/index.vue @@ -259,7 +259,6 @@ function delTreeClic(){ // 删除 height: 24px;"> -
-import { ref, onMounted,reactive} from 'vue' +import { ref, onMounted,nextTick} from 'vue' import permission_table_edit_blue from '@/assets/svg/permission_table_edit_blue.svg' import permission_table_del_blue from '@/assets/svg/permission_table_del_blue.svg' import perission_role_blue from '@/assets/svg/perission_role_blue.svg' @@ -8,7 +8,6 @@ import type { FormInstance } from 'element-plus' import { Delete } from '@element-plus/icons-vue' import { ElTable,ElTree,ElMessage, ElMessageBox } from 'element-plus' import { listRole,addRole,updateRole,setIsValid,deleteRoleById,deleteRoleByIds,permissionAssignment,setMenuByRoleId } from '@/api/permission/role' -import { getMenuTree } from '@/api/permission/menu' const props = defineProps({ applicationId:String }) @@ -42,6 +41,10 @@ const defaultProps = { } const treeloading = ref(false); const treeRef = ref>() +const currenttableid = ref('') +const Passparameter = ref([]) +//默认展开节点的key数组 +const DefaultDeployment: any = ref([]) const submitForm = (formEl: FormInstance | undefined) => { if (!formEl) return formEl.validate((valid) => { @@ -91,22 +94,23 @@ onMounted(() => { gettable() }) function permissionset(row:any){ - // const params = { - // roleId: row.id, - // appId: row.appId - // } - // permissionAssignment(params).then(res => { - // console.log(res,'权限设置') - // }) - const params = { - appId: props.applicationId, - name:'', - isdisplay:'' - } - getMenuTree(params).then(res => { - treeData.value = res.data - }) + currenttableid.value = row.id configdialog.value = true + treeloading.value = true + const params = { + roleId: row.id, + appId: props.applicationId, + } + permissionAssignment(params).then(res => { + treeData.value = res.data + let ids: any = [] + menuChange(res.data, ids) + nextTick(() => { + treeRef.value!.setCheckedKeys(ids) + }) + treeloading.value = false + }) + } function gettable(){ tableloading.value = true @@ -213,7 +217,6 @@ function setisValid(row:any){ isvaild:row.isvaild } setIsValid(params).then(res => { - console.log(res,'res') if(res.code == '0'){ gettable() ElMessage.success('设置成功') @@ -228,14 +231,33 @@ function confighandleClose(){ } function consfigsubmit(){ const params = { - id: '', - menuIds: '' + id: currenttableid.value, + menuIds: Passparameter.value.join(',') } setMenuByRoleId(params).then(res => { - console.log(res,'权限设置') + if(res.code == '0'){ + gettable() + ElMessage.success('设置成功') + }else{ + ElMessage.error('设置失败') + } }) configdialog.value = false } +function currentChecked(nodeObj: any, SelectedObj: any){ + Passparameter.value = SelectedObj.checkedKeys.concat(SelectedObj.halfCheckedKeys) +} +function menuChange(data: any, ids: any) { + data.forEach((item: any) => { + if (item.checkinfo == true) { + ids.push(item.id) + DefaultDeployment.value.push(item.id) + } + if (item.children) { + menuChange(item.children, ids) + } + }) +}