|
|
@@ -38,6 +38,7 @@
|
|
|
import useFuncPermTree from '../hooks/useFunctionPermissionTree';
|
|
|
import useCameraPermTree from '../hooks/useCameraPermissionTree';
|
|
|
import { createRole, editRole, getAssignedPerms } from '@/api/system/role';
|
|
|
+ import { PermissionTreeKey } from '@/types/permission/type';
|
|
|
|
|
|
defineProps<{
|
|
|
title: string;
|
|
|
@@ -104,7 +105,8 @@
|
|
|
}
|
|
|
|
|
|
const displayAssignedPermissions = (result: AssignedPermissions) => {
|
|
|
- cameraCardInstance.value?.setAssignedPermissions(result.cameraIds ?? []);
|
|
|
+ // 相机树很有可能会有 id 重复的情况,比如说 一个camera id 和 一个 workspace id 相同,这样会导致 tree 节点 value 不唯一,因此需要给个前缀
|
|
|
+ cameraCardInstance.value?.setAssignedPermissions(result.cameraIds ?? [], 'camera');
|
|
|
menuCardInstance.value?.setAssignedPermissions(result.menuIds ?? []);
|
|
|
funcCardInstance.value?.setAssignedPermissions(result.permIds ?? []);
|
|
|
}
|
|
|
@@ -124,7 +126,7 @@
|
|
|
* 提交。创建和编辑统一
|
|
|
*/
|
|
|
const submit = async () => {
|
|
|
- formData.cameraIds = cameraCardInstance.value!.getSelectedPermissions();
|
|
|
+ formData.cameraIds = cleanCameraPermissions(cameraCardInstance.value!.getSelectedPermissions());
|
|
|
formData.menuIds = menuCardInstance.value!.getSelectedPermissions();
|
|
|
formData.permIds = funcCardInstance.value!.getSelectedPermissions();
|
|
|
|
|
|
@@ -140,5 +142,20 @@
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 获取到的相机的权限码是 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>
|