From 66f3bc61fe5bbc5bc1eecdb1bdc839af2fd62afd Mon Sep 17 00:00:00 2001 From: GraceWalk Date: Tue, 13 Sep 2022 11:44:08 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=88=9B=E5=BB=BA/=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E8=A7=92=E8=89=B2=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserManage/CheckboxGroupContainer.tsx | 4 +- .../src/pages/UserManage/RoleTabContent.tsx | 38 +++++++++++++++---- .../src/pages/UserManage/config.ts | 1 + 3 files changed, 33 insertions(+), 10 deletions(-) diff --git a/km-console/packages/config-manager-fe/src/pages/UserManage/CheckboxGroupContainer.tsx b/km-console/packages/config-manager-fe/src/pages/UserManage/CheckboxGroupContainer.tsx index 6a46411d..91de7742 100644 --- a/km-console/packages/config-manager-fe/src/pages/UserManage/CheckboxGroupContainer.tsx +++ b/km-console/packages/config-manager-fe/src/pages/UserManage/CheckboxGroupContainer.tsx @@ -73,12 +73,12 @@ const CheckboxGroupContainer = (props: CheckboxGroupType) => { - + {options.map((option) => { return ( - {option.label} + {option.label.replace('Cluster-Load', '')} ); diff --git a/km-console/packages/config-manager-fe/src/pages/UserManage/RoleTabContent.tsx b/km-console/packages/config-manager-fe/src/pages/UserManage/RoleTabContent.tsx index 67dd0634..2ab8b223 100644 --- a/km-console/packages/config-manager-fe/src/pages/UserManage/RoleTabContent.tsx +++ b/km-console/packages/config-manager-fe/src/pages/UserManage/RoleTabContent.tsx @@ -20,7 +20,7 @@ import { IconFont, } from 'knowdesign'; import moment from 'moment'; -import { CloseOutlined, LoadingOutlined, PlusOutlined } from '@ant-design/icons'; +import { LoadingOutlined, PlusOutlined } from '@ant-design/icons'; import { defaultPagination } from 'constants/common'; import { RoleProps, PermissionNode, AssignUser, RoleOperate, FormItemPermission } from './config'; import api from 'api'; @@ -50,11 +50,21 @@ const RoleDetailAndUpdate = forwardRef((props, ref): JSX.Element => { useEffect(() => { const globalPermissions = global.permissions; if (globalPermissions && globalPermissions.length) { - const sysPermissions = globalPermissions.map((sys: PermissionNode) => ({ - id: sys.id, - name: sys.permissionName, - options: sys.childList.map((node) => ({ label: node.permissionName, value: node.id })), - })); + const sysPermissions = globalPermissions.map((sys: PermissionNode) => { + const result = { + id: sys.id, + name: sys.permissionName, + essentialPermission: undefined, + options: [], + }; + result.options = sys.childList.map((node) => { + if (node.permissionName === '多集群管理查看' || node.permissionName === '系统管理查看') { + result.essentialPermission = { label: node.permissionName, value: node.id }; + } + return { label: node.permissionName, value: node.id }; + }); + return result; + }); setPermissions(sysPermissions); } }, [global]); @@ -77,10 +87,12 @@ const RoleDetailAndUpdate = forwardRef((props, ref): JSX.Element => { const onSubmit = () => { form.validateFields().then((formData) => { - formData.permissionIdList = formData.permissionIdList.filter((l) => l); formData.permissionIdList.forEach((arr, i) => { // 如果分配的系统下的子权限,自动赋予该系统的权限 - if (arr !== null && arr.length) { + if (!Array.isArray(arr)) { + arr = []; + } + if (arr?.length) { arr.push(permissions[i].id); } }); @@ -210,10 +222,20 @@ const RoleDetailAndUpdate = forwardRef((props, ref): JSX.Element => { ({ validator(_, value) { if (Array.isArray(value) && value.some((item) => !!item?.length)) { + const errs = []; + value.forEach((arr, i) => { + if (arr?.length && !arr.includes(permissions[i].essentialPermission.value)) { + errs.push(`[${permissions[i].essentialPermission.label}]`); + } + }); + if (errs.length) { + return Promise.reject(`您必须分配 ${errs.join(' 和 ')} 权限`); + } return Promise.resolve(); } return Promise.reject(new Error('请为角色至少分配一项权限')); diff --git a/km-console/packages/config-manager-fe/src/pages/UserManage/config.ts b/km-console/packages/config-manager-fe/src/pages/UserManage/config.ts index 294fee90..95a5659b 100644 --- a/km-console/packages/config-manager-fe/src/pages/UserManage/config.ts +++ b/km-console/packages/config-manager-fe/src/pages/UserManage/config.ts @@ -59,5 +59,6 @@ export enum RoleOperate { export interface FormItemPermission { id: number; name: string; + essentialPermission: { label: string; value: number }; options: { label: string; value: number }[]; }