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 | }); |