Commit b0678edfaa068793ac3291f36584c65a1eb18069

Authored by ww
1 parent 24f768d2

fix: 修复角色创建时选择菜单权限全部选择功能无效

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