Procházet zdrojové kódy

权限管理逻辑修改。

jiaxiaoqiang před 10 měsíci
rodič
revize
001305dfba

+ 3 - 1
src/api/user/types.ts

@@ -9,7 +9,9 @@ export interface UserInfo {
   roles: string[];
   perms: string[];
   deptId?: string;
-  sysData?: any[];
+  sysData: any[];
+  canSetPermission: boolean; //是否有设置权限的权限
+  canSetIP: boolean; //是否有设置IP的权限
 }
 
 /**

+ 18 - 1
src/store/modules/user.ts

@@ -10,6 +10,9 @@ export const useUserStore = defineStore("user", () => {
   const user = ref<UserInfo>({
     roles: [],
     perms: [],
+    sysData: [],
+    canSetPermission: false,
+    canSetIP: false,
   });
 
   const isGetAuth = ref(false); //是否已经请求过auth接口活的role和menus了
@@ -48,7 +51,21 @@ export const useUserStore = defineStore("user", () => {
           user.value.avatar = data.avatar ?? "";
           isGetAuth.value = true;
 
-          user.value.sysData = data.menus ?? [];
+          user.value.sysData = [];
+          user.value.canSetPermission = false;
+          user.value.canSetIP = false;
+
+          data.menus.map((menu: any) => {
+            if (menu.isFrame === 1) {
+              user.value!.sysData!.push(menu);
+            } else {
+              if (menu.id === 6) {
+                user.value.canSetPermission = true;
+              } else if (menu.id === 7) {
+                user.value.canSetIP = true;
+              }
+            }
+          });
 
           resolve(data);
         })

+ 6 - 1
src/views/main/main.vue

@@ -7,7 +7,10 @@
           <el-col :span="20">
             <ScreenEntry />
           </el-col>
-          <el-col :span="4">
+          <el-col
+            v-if="userStore.user.canSetIP || userStore.user.canSetPermission"
+            :span="4"
+          >
             <Set />
           </el-col>
         </el-row>
@@ -36,7 +39,9 @@ import ScreenEntry from "@/views/main/screenEntry.vue";
 import Set from "@/views/main/set.vue";
 import Task from "@/views/main/task.vue";
 import Message from "@/views/main/message.vue";
+import { useUserStore } from "@/store";
 
+const userStore = useUserStore();
 const router = useRouter();
 const gotoZHDP = () => {
   router.push({ name: "totalScreen" });

+ 12 - 2
src/views/main/set.vue

@@ -13,10 +13,20 @@
           class="sys-item-img"
           size="60"
         />
-        <h3 class="sys-item-title" @click="gotoUserPage">
+        <h3
+          v-if="userStore.user.canSetPermission"
+          class="sys-item-title"
+          @click="gotoUserPage"
+        >
           {{ item.menuName }}
         </h3>
-        <h3 class="sys-item-title" @click="openDrawer">配置IP地址</h3>
+        <h3
+          v-if="userStore.user.canSetIP"
+          class="sys-item-title"
+          @click="openDrawer"
+        >
+          配置IP地址
+        </h3>
       </div>
     </div>
     <el-drawer

+ 3 - 3
src/views/systems/systems.vue

@@ -26,11 +26,11 @@ import TopTitle from "@/components/TopTitle.vue";
 
 const userStore = useUserStore();
 
-const sysData = ref<any[]>([{}, {}, {}]);
+const sysData = ref<any[]>([]);
 
 onMounted(async () => {
-  let res = await userStore.getUserInfo();
-  sysData.value = res.menus;
+  await userStore.getUserInfo();
+  sysData.value = userStore.user.sysData;
 });
 
 const openInNewTab = (url: string) => {