|
|
@@ -31,7 +31,6 @@
|
|
|
import useMenuPermTree from '../hooks/useMenuPermissionTree';
|
|
|
import useFuncPermTree from '../hooks/useFunctionPermissionTree';
|
|
|
import { createRole, editRole, getAssignedPerms } from '@/api/system/role';
|
|
|
- import { PermissionTreeKey } from '@/types/permission/type';
|
|
|
|
|
|
defineProps<{
|
|
|
title: string;
|
|
|
@@ -48,6 +47,8 @@
|
|
|
const menuCardInstance = ref<InstanceType<typeof PermissioTreeCard>>();
|
|
|
const funcCardInstance = ref<InstanceType<typeof PermissioTreeCard>>();
|
|
|
|
|
|
+ let initialPermissions: AssignedPermissions | null = null;
|
|
|
+
|
|
|
// 表单相关
|
|
|
const defaultFormData = (): RoleForm => ({
|
|
|
id: null,
|
|
|
@@ -78,6 +79,9 @@
|
|
|
getAssignedPermissions(role.id);
|
|
|
|
|
|
// TODO: 获取已拥有的权限
|
|
|
+ } else {
|
|
|
+ menuCardInstance.value?.setAssignedPermissions([]);
|
|
|
+ funcCardInstance.value?.setAssignedPermissions([]);
|
|
|
}
|
|
|
|
|
|
drawerOpened.value = true;
|
|
|
@@ -88,36 +92,34 @@
|
|
|
*/
|
|
|
const getAssignedPermissions = async (roleId: number) => {
|
|
|
try {
|
|
|
- const result = await getAssignedPerms(roleId);
|
|
|
- displayAssignedPermissions(result);
|
|
|
+ initialPermissions = await getAssignedPerms(roleId);
|
|
|
+ displayAssignedPermissions(initialPermissions);
|
|
|
} catch (e) {
|
|
|
console.error(e);
|
|
|
}
|
|
|
};
|
|
|
|
|
|
const displayAssignedPermissions = (result: AssignedPermissions) => {
|
|
|
- if (result.cameraIds?.length) {
|
|
|
- // 相机树很有可能会有 id 重复的情况,比如说 一个camera id 和 一个 workspace id 相同,这样会导致 tree 节点 value 不唯一,因此需要给个前缀
|
|
|
- const cameraIds = result.cameraIds.map((id) => `camera-${id}`);
|
|
|
- }
|
|
|
-
|
|
|
- if (result.menuIds?.length) {
|
|
|
+ if (result?.menuIds?.length) {
|
|
|
menuCardInstance.value?.setAssignedPermissions(result.menuIds);
|
|
|
+ } else {
|
|
|
+ menuCardInstance.value?.setAssignedPermissions([]);
|
|
|
}
|
|
|
|
|
|
- if (result.permIds?.length) {
|
|
|
+ if (result?.permIds?.length) {
|
|
|
funcCardInstance.value?.setAssignedPermissions(result.permIds);
|
|
|
+ } else {
|
|
|
+ funcCardInstance.value?.setAssignedPermissions([]);
|
|
|
}
|
|
|
};
|
|
|
|
|
|
/**
|
|
|
- * 重置表单
|
|
|
+ * 重置表单,回复为修改之前的默认值
|
|
|
*/
|
|
|
const reset = () => {
|
|
|
formInstance.value?.resetFields();
|
|
|
Object.assign(formData, defaultFormData());
|
|
|
- menuCardInstance.value?.reset();
|
|
|
- funcCardInstance.value?.reset();
|
|
|
+ displayAssignedPermissions(initialPermissions!);
|
|
|
};
|
|
|
|
|
|
/**
|
|
|
@@ -140,20 +142,5 @@
|
|
|
}
|
|
|
};
|
|
|
|
|
|
- /**
|
|
|
- * 获取到的相机的权限码是 camera-xxx, 例如 camera-11, 提交后端转换成数字 11
|
|
|
- */
|
|
|
- const cleanCameraPermissions = (perms: PermissionTreeKey[]) => {
|
|
|
- return perms.map((perm) => {
|
|
|
- if (typeof perm === 'string' && perm.includes('-')) {
|
|
|
- const splits = perm.split('-');
|
|
|
- return +splits[1];
|
|
|
- }
|
|
|
-
|
|
|
- // 否则正常返回
|
|
|
- return perm;
|
|
|
- });
|
|
|
- };
|
|
|
-
|
|
|
defineExpose({ open });
|
|
|
</script>
|