Commit c71159a824b59512f8a77ff3c93628d4b9833c4f
Merge branch 'fix-role-manange' into 'main_dev'
fix: 修复角色创建时选择菜单权限全部选择功能无效 See merge request yunteng/thingskit-front!612
Showing
2 changed files
with
12 additions
and
27 deletions
| @@ -18,7 +18,6 @@ | @@ -18,7 +18,6 @@ | ||
| 18 | :treeData="treeData" | 18 | :treeData="treeData" |
| 19 | :replace-fields="{ title: 'name', key: 'id' }" | 19 | :replace-fields="{ title: 'name', key: 'id' }" |
| 20 | :checkedKeys="roleMenus" | 20 | :checkedKeys="roleMenus" |
| 21 | - @check="handleCheckClick" | ||
| 22 | title="菜单分配" | 21 | title="菜单分配" |
| 23 | /> | 22 | /> |
| 24 | </Spin> | 23 | </Spin> |
| @@ -31,7 +30,7 @@ | @@ -31,7 +30,7 @@ | ||
| 31 | import { BasicForm, useForm } from '/@/components/Form/index'; | 30 | import { BasicForm, useForm } from '/@/components/Form/index'; |
| 32 | import { formSchema, KeysTypeEnum, RoleMenuDictEnum } from './role.data'; | 31 | import { formSchema, KeysTypeEnum, RoleMenuDictEnum } from './role.data'; |
| 33 | import { BasicDrawer, useDrawerInner } from '/@/components/Drawer'; | 32 | import { BasicDrawer, useDrawerInner } from '/@/components/Drawer'; |
| 34 | - import { BasicTree, TreeItem } from '/@/components/Tree'; | 33 | + import { BasicTree, TreeActionType, TreeItem } from '/@/components/Tree'; |
| 35 | import { useMessage } from '/@/hooks/web/useMessage'; | 34 | import { useMessage } from '/@/hooks/web/useMessage'; |
| 36 | const { t } = useI18n(); //加载国际化 | 35 | const { t } = useI18n(); //加载国际化 |
| 37 | // 加载菜单数据 | 36 | // 加载菜单数据 |
| @@ -55,9 +54,8 @@ | @@ -55,9 +54,8 @@ | ||
| 55 | const isUpdate = ref<boolean>(true); | 54 | const isUpdate = ref<boolean>(true); |
| 56 | const treeData = ref<TreeData[]>([]); | 55 | const treeData = ref<TreeData[]>([]); |
| 57 | const roleMenus = ref<string[]>([]); | 56 | const roleMenus = ref<string[]>([]); |
| 58 | - const allCheckedKeys = ref<string[]>([]); | ||
| 59 | const roleId = ref<string>(''); | 57 | const roleId = ref<string>(''); |
| 60 | - const treeRef = ref(); | 58 | + const treeRef = ref<Nullable<TreeActionType>>(); |
| 61 | const checked = ref<string[]>([]); //需要选中的节点 | 59 | const checked = ref<string[]>([]); //需要选中的节点 |
| 62 | const spinning = ref(false); | 60 | const spinning = ref(false); |
| 63 | 61 | ||
| @@ -80,7 +78,6 @@ | @@ -80,7 +78,6 @@ | ||
| 80 | const { isTenantAdmin, isSysadmin, getRole } = useRole(); | 78 | const { isTenantAdmin, isSysadmin, getRole } = useRole(); |
| 81 | const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner( | 79 | const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner( |
| 82 | async (data: { isUpdate: boolean; record: RoleListItem }) => { | 80 | async (data: { isUpdate: boolean; record: RoleListItem }) => { |
| 83 | - allCheckedKeys.value = []; | ||
| 84 | resetFields(); | 81 | resetFields(); |
| 85 | roleId.value = ''; | 82 | roleId.value = ''; |
| 86 | // 在打开弹窗时清除所有选择的菜单 | 83 | // 在打开弹窗时清除所有选择的菜单 |
| @@ -129,10 +126,10 @@ | @@ -129,10 +126,10 @@ | ||
| 129 | roleId.value = data.record.id; | 126 | roleId.value = data.record.id; |
| 130 | 127 | ||
| 131 | //通过角色id去获取角色对应的菜单的ids | 128 | //通过角色id去获取角色对应的菜单的ids |
| 132 | - allCheckedKeys.value = roleMenus.value = await getMenusIdsByRoleId(data.record.id); | 129 | + roleMenus.value = await getMenusIdsByRoleId(data.record.id); |
| 133 | excludeHalfCheckedKeys(unref(treeData)); | 130 | excludeHalfCheckedKeys(unref(treeData)); |
| 134 | await nextTick(); | 131 | await nextTick(); |
| 135 | - treeRef.value.setCheckedKeys(roleMenus.value); | 132 | + unref(treeRef)?.setCheckedKeys(roleMenus.value); |
| 136 | setFieldsValue(data.record); | 133 | setFieldsValue(data.record); |
| 137 | } else { | 134 | } else { |
| 138 | } | 135 | } |
| @@ -150,13 +147,14 @@ | @@ -150,13 +147,14 @@ | ||
| 150 | setDrawerProps({ confirmLoading: true }); | 147 | setDrawerProps({ confirmLoading: true }); |
| 151 | const { createMessage } = useMessage(); | 148 | const { createMessage } = useMessage(); |
| 152 | try { | 149 | try { |
| 150 | + const menu = (unref(treeRef)?.getCheckedKeys() as string[]) || []; | ||
| 153 | const values = await validate(); | 151 | const values = await validate(); |
| 154 | const req = { | 152 | const req = { |
| 155 | id: roleId.value, | 153 | id: roleId.value, |
| 156 | name: values.name, | 154 | name: values.name, |
| 157 | remark: values.remark, | 155 | remark: values.remark, |
| 158 | status: values.status, | 156 | status: values.status, |
| 159 | - menu: unref(allCheckedKeys) || [], | 157 | + menu, |
| 160 | }; | 158 | }; |
| 161 | if (req.menu == undefined) return createMessage.error('请勾选权限菜单'); | 159 | if (req.menu == undefined) return createMessage.error('请勾选权限菜单'); |
| 162 | saveOrUpdateRoleInfoWithMenu(req).then(() => { | 160 | saveOrUpdateRoleInfoWithMenu(req).then(() => { |
| @@ -170,10 +168,6 @@ | @@ -170,10 +168,6 @@ | ||
| 170 | }, 300); | 168 | }, 300); |
| 171 | } | 169 | } |
| 172 | } | 170 | } |
| 173 | - // Tree check事件 | ||
| 174 | - const handleCheckClick = (checkedNodes, { halfCheckedKeys }) => { | ||
| 175 | - allCheckedKeys.value = [...checkedNodes, ...halfCheckedKeys]; | ||
| 176 | - }; | ||
| 177 | 171 | ||
| 178 | const getPermissionByRole = async (roleType: RoleEnum) => { | 172 | const getPermissionByRole = async (roleType: RoleEnum) => { |
| 179 | try { | 173 | try { |
| @@ -254,8 +248,6 @@ | @@ -254,8 +248,6 @@ | ||
| 254 | treeData, | 248 | treeData, |
| 255 | roleMenus, | 249 | roleMenus, |
| 256 | treeRef, | 250 | treeRef, |
| 257 | - handleCheckClick, | ||
| 258 | - allCheckedKeys, | ||
| 259 | }; | 251 | }; |
| 260 | }, | 252 | }, |
| 261 | }); | 253 | }); |
| @@ -15,7 +15,6 @@ | @@ -15,7 +15,6 @@ | ||
| 15 | :treeData="treeData" | 15 | :treeData="treeData" |
| 16 | :replaceFields="{ title: 'name', key: 'id' }" | 16 | :replaceFields="{ title: 'name', key: 'id' }" |
| 17 | :checkedKeys="roleMenus" | 17 | :checkedKeys="roleMenus" |
| 18 | - @check="handleCheckClick" | ||
| 19 | checkable | 18 | checkable |
| 20 | toolbar | 19 | toolbar |
| 21 | ref="treeRef" | 20 | ref="treeRef" |
| @@ -31,7 +30,7 @@ | @@ -31,7 +30,7 @@ | ||
| 31 | import { BasicForm, useForm } from '/@/components/Form/index'; | 30 | import { BasicForm, useForm } from '/@/components/Form/index'; |
| 32 | import { formSchema } from './role.data'; | 31 | import { formSchema } from './role.data'; |
| 33 | import { BasicDrawer, useDrawerInner } from '/@/components/Drawer'; | 32 | import { BasicDrawer, useDrawerInner } from '/@/components/Drawer'; |
| 34 | - import { BasicTree, TreeItem } from '/@/components/Tree'; | 33 | + import { BasicTree, TreeActionType, TreeItem } from '/@/components/Tree'; |
| 35 | const { t } = useI18n(); //加载国际化 | 34 | const { t } = useI18n(); //加载国际化 |
| 36 | // 加载菜单数据 | 35 | // 加载菜单数据 |
| 37 | import { getAdminMenuList, getMenuList, getMenusIdsByRoleId } from '/@/api/sys/menu'; | 36 | import { getAdminMenuList, getMenuList, getMenusIdsByRoleId } from '/@/api/sys/menu'; |
| @@ -55,9 +54,8 @@ | @@ -55,9 +54,8 @@ | ||
| 55 | const isUpdate = ref(true); | 54 | const isUpdate = ref(true); |
| 56 | const treeData = ref<TreeData[]>([]); | 55 | const treeData = ref<TreeData[]>([]); |
| 57 | const roleMenus = ref<string[]>([]); | 56 | const roleMenus = ref<string[]>([]); |
| 58 | - const allCheckedKeys = ref<string[]>([]); | ||
| 59 | const roleId = ref(''); | 57 | const roleId = ref(''); |
| 60 | - const treeRef = ref(); | 58 | + const treeRef = ref<Nullable<TreeActionType>>(null); |
| 61 | const checked = ref<string[]>([]); //需要选中的节点 | 59 | const checked = ref<string[]>([]); //需要选中的节点 |
| 62 | const spinning = ref(false); | 60 | const spinning = ref(false); |
| 63 | 61 | ||
| @@ -79,7 +77,6 @@ | @@ -79,7 +77,6 @@ | ||
| 79 | 77 | ||
| 80 | const { isPlatformAdmin } = useRole(); | 78 | const { isPlatformAdmin } = useRole(); |
| 81 | const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => { | 79 | const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => { |
| 82 | - allCheckedKeys.value = []; | ||
| 83 | resetFields(); | 80 | resetFields(); |
| 84 | roleId.value = ''; | 81 | roleId.value = ''; |
| 85 | // 在打开弹窗时清除所有选择的菜单 | 82 | // 在打开弹窗时清除所有选择的菜单 |
| @@ -111,11 +108,11 @@ | @@ -111,11 +108,11 @@ | ||
| 111 | roleId.value = data.record.id; | 108 | roleId.value = data.record.id; |
| 112 | 109 | ||
| 113 | //通过角色id去获取角色对应的菜单的ids | 110 | //通过角色id去获取角色对应的菜单的ids |
| 114 | - allCheckedKeys.value = roleMenus.value = await getMenusIdsByRoleId(data.record.id); | 111 | + roleMenus.value = await getMenusIdsByRoleId(data.record.id); |
| 115 | excludeHalfCheckedKeys(unref(treeData)); | 112 | excludeHalfCheckedKeys(unref(treeData)); |
| 116 | 113 | ||
| 117 | await nextTick(); | 114 | await nextTick(); |
| 118 | - treeRef.value.setCheckedKeys(roleMenus.value); | 115 | + treeRef.value?.setCheckedKeys(roleMenus.value); |
| 119 | setFieldsValue(data.record); | 116 | setFieldsValue(data.record); |
| 120 | } else { | 117 | } else { |
| 121 | } | 118 | } |
| @@ -131,6 +128,7 @@ | @@ -131,6 +128,7 @@ | ||
| 131 | setDrawerProps({ loading: true }); | 128 | setDrawerProps({ loading: true }); |
| 132 | setDrawerProps({ confirmLoading: true }); | 129 | setDrawerProps({ confirmLoading: true }); |
| 133 | const { createMessage } = useMessage(); | 130 | const { createMessage } = useMessage(); |
| 131 | + const menu = (unref(treeRef)?.getCheckedKeys() as string[]) || []; | ||
| 134 | try { | 132 | try { |
| 135 | const values = await validate(); | 133 | const values = await validate(); |
| 136 | const req = { | 134 | const req = { |
| @@ -139,7 +137,7 @@ | @@ -139,7 +137,7 @@ | ||
| 139 | remark: values.remark, | 137 | remark: values.remark, |
| 140 | status: values.status, | 138 | status: values.status, |
| 141 | roleType: RoleEnum.TENANT_ADMIN, | 139 | roleType: RoleEnum.TENANT_ADMIN, |
| 142 | - menu: unref(allCheckedKeys) || [], | 140 | + menu, |
| 143 | }; | 141 | }; |
| 144 | if (req.menu == undefined) return createMessage.error('请勾选权限菜单'); | 142 | if (req.menu == undefined) return createMessage.error('请勾选权限菜单'); |
| 145 | const res = await saveOrUpdateRoleInfoWithMenu(req); | 143 | const res = await saveOrUpdateRoleInfoWithMenu(req); |
| @@ -157,10 +155,6 @@ | @@ -157,10 +155,6 @@ | ||
| 157 | }, 300); | 155 | }, 300); |
| 158 | } | 156 | } |
| 159 | } | 157 | } |
| 160 | - // Tree check事件 | ||
| 161 | - const handleCheckClick = (checkedNodes, { halfCheckedKeys }) => { | ||
| 162 | - allCheckedKeys.value = [...checkedNodes, ...halfCheckedKeys]; | ||
| 163 | - }; | ||
| 164 | 158 | ||
| 165 | const getPermissionByRole = async (roleType: RoleEnum) => { | 159 | const getPermissionByRole = async (roleType: RoleEnum) => { |
| 166 | try { | 160 | try { |
| @@ -241,7 +235,6 @@ | @@ -241,7 +235,6 @@ | ||
| 241 | treeData, | 235 | treeData, |
| 242 | roleMenus, | 236 | roleMenus, |
| 243 | treeRef, | 237 | treeRef, |
| 244 | - handleCheckClick, | ||
| 245 | }; | 238 | }; |
| 246 | }, | 239 | }, |
| 247 | }); | 240 | }); |