Преглед на файлове

Merge branch 'all-v4-liufei' into 'all-v4'

1. 前端路由表更新  2. 菜单表单增加菜单编码字段  3. 获取角色列表bugfix

See merge request skyeye/skyeye_frontend/skyeye-admin!218
Fei Liu преди 1 година
родител
ревизия
17428a45ff

+ 1 - 1
src/layout/components/Header/index.vue

@@ -281,7 +281,7 @@
 
   const getUsername = computed(() => {
     // return userStore.getUserInfo.username;
-    return userStore.getUserInfo.nickname;
+    return userStore.getUserInfo.realname;
   });
 
   const getTenantName = computed(() => {

+ 61 - 26
src/router/full-routes.ts

@@ -1,8 +1,7 @@
 /**
  * 1. 前端维护的完整路由表, 用于创建"菜单"
- * 2. component 是 string,并不是 组件对象
+ * 2. component 是 string,并不是 组件对象
  * 3. 生成菜单,关注的 path,name,component,icon
- * 4. 以用户填写的数据为准
  */
 import { AppRouteRecordRaw } from './types';
 import { getTreeItem } from '@/utils';
@@ -128,7 +127,7 @@ const fullRoutes: AppRouteRecordRaw[] = [
     },
     children: [
       {
-        // 场景布局
+        // 公司场景布局入口页,选择PC端还是手机端
         path: 'scene',
         name: 'LayoutScene',
         component: '/page-config/PageConfig',
@@ -137,6 +136,26 @@ const fullRoutes: AppRouteRecordRaw[] = [
           title: '场景布局', 
         },
       },
+      {
+        // 公司场景布局卡片列表 
+        path: 'scene-list',
+        name: 'LayoutSceneList',
+        component: '/page-config/PageSceneLayout',
+        meta: {
+          icon: '',
+          title: '场景布局列表'
+        }
+      },
+      {
+        // 公司场景配置页面(菜单不可见)
+        path: 'scene-config',
+        name: 'LayoutSceneConfig',
+        component: '/page-config/ConfigEdit',
+        meta: {
+          icon: '',
+          title: '场景布局配置(菜单不可见)'
+        }
+      },
       {
         // 相机布局
         path: 'camera',
@@ -226,6 +245,16 @@ const fullRoutes: AppRouteRecordRaw[] = [
           icon: '',
           title: '组织管理',
         }
+      },
+      {
+        // 岗位管理 (目前不需要)
+        path: 'post',
+        name: 'UserPost',
+        component: '/auth/post/post',
+        meta: {
+          icon: '',
+          title: '岗位管理'
+        }
       }
     ]
   },
@@ -478,6 +507,7 @@ const fullRoutes: AppRouteRecordRaw[] = [
     path: '/exception',
     name: 'Exception',
     component: 'LAYOUT',
+    redirect: '/exception/403',
     meta: {
       icon: 'ExclamationCircleOutlined',
       title: '异常页面', 
@@ -492,35 +522,40 @@ const fullRoutes: AppRouteRecordRaw[] = [
           icon: '',
           title: '403',
         },
-      }
-    ]
-  },
-
-  /**
-   * 测试
-   */
-  {
-    path: '/lf-test',
-    name: 'LFTest',
-    component: 'LAYOUT',
-    meta: {
-      icon: '',
-      title: '测试菜单,可删除'
-    },
-    children: [
+      },
       {
-        path: 'test1',
-        name: 'LFTest-1',
-        component: '/exception/403',
+        path: '404',
+        name: '/exception/404',
+        component: '/exception/404',
         meta: {
           icon: '',
-          title: '403',
-        }, 
-      }
+          title: '404',
+        },
+      },
+      {
+        path: '500',
+        name: 'Exception500',
+        component: '/exception/500',
+        meta: {
+          icon: '',
+          title: '500',
+        },
+        
+      },
     ]
-  }
+  },
 ] as const;
 
+
+/**
+ * 仅超级管可见的路由。 一级路由 name
+ */
+export const ROUTE_ONLY_TO_SUPER_ADMIN: string[] = ['System', 'Exception'];
+
+
+/**
+ * 类型定义。避免与已有的定义冲突,避免与 vue-router的类型定义冲突,前面加 _ 前缀
+ */
 export interface _RouteViewItem {
   label: string;
   value: string;

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

@@ -19,7 +19,7 @@ export interface IUserState {
   info: {
     userId: number;
     username: string;
-    realName: string;
+    realname: string;
     avatar: string;
     desc: string;
     token: string;

+ 6 - 1
src/views/system/menu/MenuForm.vue

@@ -135,7 +135,12 @@
 
     <el-row :gutter="24">
       <el-col :span="12">
-        <el-form-item label="显示排序" prop="orderNum">
+        <el-form-item label="菜单编码">
+          <el-input placeholder="菜单编码" v-model="formParams.menuCode" />
+        </el-form-item>
+      </el-col>
+      <el-col :span="12">
+        <el-form-item label="显示排序">
           <el-input-number placeholder="显示排序" v-model="formParams.orderNum" class="w-full" />
         </el-form-item>
       </el-col>

+ 4 - 1
src/views/system/role/hooks/useMenuPermissionTree.ts

@@ -2,11 +2,14 @@ import { shallowRef, onMounted } from 'vue';
 import { queryOwnedMenuTree } from "@/api/system/menu";
 import { PermissionViewTree } from "@/types/permission/type";
 import { transformToViewTree } from '../utils/tree';
+import { ROUTE_ONLY_TO_SUPER_ADMIN} from '@/router/full-routes';
 export default function useMenuPermissionTree() {
   const menuPermTreeData = shallowRef<PermissionViewTree>([]);
   const buildPermissionTree = async () => {
     try {
-      const result = await queryOwnedMenuTree();
+      let result = await queryOwnedMenuTree();
+      // 去除仅超管可见的一级菜单,其不可在菜单权限分配中可见
+      result = result.filter(item => !ROUTE_ONLY_TO_SUPER_ADMIN.includes(item.routeName));
       menuPermTreeData.value = transformToViewTree(result, 'menuName', 'id');
     } catch (e) {
       console.error(e);

+ 9 - 1
src/views/system/role/hooks/useRolesQuery.ts

@@ -3,6 +3,9 @@ import { DEFAULT_PAGE_SIZE } from '@/types/common/constants';
 import { Role, RolePageRequest } from '@/types/role/type';
 import { cloneDeep } from 'lodash-es';
 import { getRolesPage, getRoles } from '@/api/system/role';
+import { useTargetTenantIdSetting } from '@/utils/useTargetTenantIdSetting';
+
+const { getValue } = useTargetTenantIdSetting();
 
 const defaultRolePageRequest: RolePageRequest = {
   pageNumber: 1,
@@ -12,7 +15,6 @@ const defaultRolePageRequest: RolePageRequest = {
   }
 }
 
-
 export default function useRolesQuery() {
   const requestParams = reactive<RolePageRequest>(cloneDeep(defaultRolePageRequest));
   const roleList = shallowRef<Role[]>([]);
@@ -30,6 +32,12 @@ export default function useRolesQuery() {
 
   const queryRolesPage = async () => {
     try {
+      //  当右上角“选择租户”切换租户时,查询当前租户下的拥有和创建的角色
+      const targetTenantId = getValue();
+      if (targetTenantId != null) {
+        requestParams.queryParam!.tenantId = +targetTenantId;
+      }
+
       loading.value = true;
       const result = await getRolesPage(toRaw(requestParams));
       roleList.value = result.records;