12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- import { router } from "@/router";
- import { permission } from "@/store/permission";
- import { DataScope, RoleLevel, roleLevel } from "@/store/role";
- import { Scene } from "@/store/scene";
- import { user } from "@/store/user";
- import { App } from "vue";
- // 操作某个场景 查看是否有权限
- export const operateIsPermissionByScene = (scene: Scene) => {
- return true;
- // return (
- // [RoleLevel.admin, RoleLevel.systemAdmin].includes(roleLevel.value) ||
- // user.value.info.cameraSns.includes(scene.snCode)
- // );
- };
- // 查看某个操作是否有权限
- export const operateIsPermissionByPath = (...operate: string[]) => {
- // if (import.meta.env.DEV) {
- // return true;
- // }
- const routeName = router.currentRoute.value.name as string;
- const currentRoleName = `${routeName}:${operate.join(":")}`;
- return permission.value.find((item) => item.resourceKey === currentRoleName);
- };
- // 查看某个数据操作是否有权限操作
- export const operateIsPermissionByDept = (data: any[]) => {
- const permission = operateIsPermissionByPath(...data.slice(1));
- if (!permission) {
- return false;
- } else {
- // 4 5 只有相同depId才能操作
- const sameDeptScopes = [DataScope.personCreate, DataScope.selfInner];
- return (
- !sameDeptScopes.includes((permission as any).dataScope) ||
- data[0].deptId === user.value.info.deptId
- );
- }
- };
- const argsCover = (value: string | string[] | string[][]): string[][] => {
- if (!Array.isArray(value)) {
- return [[value]];
- } else if (value.length > 0 && !Array.isArray(value[0])) {
- return [value as string[]];
- } else {
- return value as string[][];
- }
- };
- export const permissionSetup = (app: App) => {
- app.directive("pscene", (el, binding) => {
- const value = argsCover(binding.value) as any;
- value.every((data: any[]) => operateIsPermissionByScene(data[0])) ||
- (el.parentNode && el.parentNode.removeChild(el));
- });
- app.directive("pdscene", (el, binding) => {
- const value = argsCover(binding.value) as any;
- value.every((data: any[]) => operateIsPermissionByScene(data[0])) ||
- el.classList.add("disable");
- });
- app.directive("ppath", (el, binding) => {
- const value = argsCover(binding.value) as any;
- value.every((data: any) => operateIsPermissionByPath(...data)) ||
- (el.parentNode && el.parentNode.removeChild(el));
- });
- app.directive("pdpath", (el, binding) => {
- const value = argsCover(binding.value) as any;
- value.every((data: any) => operateIsPermissionByPath(...data)) ||
- el.classList.add("disable");
- });
- app.directive("pdept", (el, binding) => {
- const value = argsCover(binding.value) as any;
- value.every(operateIsPermissionByDept) ||
- (el.parentNode && el.parentNode.removeChild(el));
- });
- app.directive("pddept", (el, binding) => {
- const value = argsCover(binding.value) as any;
- value.every(operateIsPermissionByDept) || el.classList.add("disable");
- });
- };
|