fix(测试跟踪): 访问测试跟踪默认跳转到第一个有权限的菜单

--bug=1027268 --user=陈建星 【测试跟踪】系统设置-用户组与权限-不给查看权限-其他任意选择几项-进入测试跟踪-报错 https://www.tapd.cn/55049933/s/1387224
This commit is contained in:
jianxing 2023-06-27 20:04:27 +08:00 committed by fit2-zhao
parent 65e50c118f
commit 8fd4702145
2 changed files with 58 additions and 29 deletions

View File

@ -6,28 +6,8 @@
<el-col :span="14">
<el-menu class="header-menu" :unique-opened="true" mode="horizontal" router
:default-active="pathName">
<el-menu-item :index="'/track/home'" v-permission="['PROJECT_TRACK_HOME:READ']">
{{ $t("i18n.home") }}
</el-menu-item>
<el-menu-item :index="caseListPath" v-permission="['PROJECT_TRACK_CASE:READ']">
{{ $t("test_track.case.test_case") }}
</el-menu-item>
<el-menu-item :index="'/track/review/all'" v-permission="['PROJECT_TRACK_REVIEW:READ']"
popper-class="submenu">
{{ $t('test_track.review.test_review') }}
</el-menu-item>
<el-menu-item :index="'/track/plan/all'" v-permission="['PROJECT_TRACK_PLAN:READ']"
popper-class="submenu">
{{ $t('test_track.plan.test_plan') }}
</el-menu-item>
<el-menu-item :index="'/track/issue'" popper-class="submenu" v-permission="['PROJECT_TRACK_ISSUE:READ']">
{{ $t('test_track.issue.issue_management') }}
</el-menu-item>
<el-menu-item :index="'/track/testPlan/reportList'" popper-class="submenu" v-permission="['PROJECT_TRACK_REPORT:READ']">
{{ $t("commons.report") }}
<el-menu-item v-for="(menu) in menus" :key="menu.path" :index="menu.path" v-permission="[menu.permission]">
{{ menu.name }}
</el-menu-item>
</el-menu>
</el-col>
@ -44,6 +24,7 @@ import ProjectSwitch from "metersphere-frontend/src/components/head/ProjectSwitc
import {getCurrentProjectID} from "metersphere-frontend/src/utils/token";
import MsHeaderRightMenus from "metersphere-frontend/src/components/layout/HeaderRightMenus";
import {PROJECT_NAME} from "metersphere-frontend/src/utils/constants";
import {hasPermission} from "@/business/utils/sdk-utils";
export default {
name: "TrackHeaderMenus",
@ -58,6 +39,38 @@ export default {
isProjectActivation: true,
currentProject: sessionStorage.getItem(PROJECT_NAME),
pathName: '',
menus: [
{
path: '/track/home',
name: this.$t('i18n.home'),
permission: 'PROJECT_TRACK_HOME:READ'
},
{
path: '/track/case/all?projectId=' + this.getProjectId(),
name: this.$t('test_track.case.test_case'),
permission: 'PROJECT_TRACK_CASE:READ'
},
{
path: '/track/review/all',
name: this.$t('test_track.review.test_review'),
permission: 'PROJECT_TRACK_REVIEW:READ'
},
{
path: '/track/plan/all',
name: this.$t('test_track.plan.test_plan'),
permission: 'PROJECT_TRACK_PLAN:READ'
},
{
path: '/track/issue',
name: this.$t('test_track.issue.issue_management'),
permission: 'PROJECT_TRACK_ISSUE:READ'
},
{
path: '/track/testPlan/reportList',
name: this.$t('commons.report'),
permission: 'PROJECT_TRACK_REPORT:READ'
}
]
};
},
watch: {
@ -69,7 +82,22 @@ export default {
} else if (to.path.indexOf("/track/plan") >= 0) {
this.pathName = '/track/plan/all';
} else if (to.path.indexOf("/track/case") >= 0) {
this.pathName = this.caseListPath;
this.pathName = '/track/case/all?projectId=' + this.getProjectId();
} else if(to.path.indexOf("/track/home") >= 0) {
//
for (let menu of this.menus) {
if (hasPermission(menu.permission)) {
//
if(menu.path.indexOf("/track/home") >= 0) {
break;
} else {
//
this.pathName = menu.path;
this.$router.push(this.pathName);
break;
}
}
}
} else {
this.pathName = to.path;
}
@ -80,11 +108,6 @@ export default {
mounted() {
this.init();
},
computed: {
caseListPath() {
return '/track/case/all?projectId=' + this.getProjectId();
}
},
methods: {
reload() {
this.isRouterAlive = false;

View File

@ -1,6 +1,6 @@
<template>
<div style="background-color: #f5f6f7; overflow: auto">
<ms-container>
<ms-container v-if="hasHomePermission">
<ms-main-container style="padding: 0px">
<div class="track-home-layout">
<el-row :gutter="16">
@ -58,6 +58,7 @@ import ReviewList from "./components/ReviewList";
import MsRunningTaskList from "./components/RunningTaskList";
import { getUUID } from "metersphere-frontend/src/utils";
import MsFailureTestCaseList from "@/business/home/components/FailureTestCaseList";
import {hasPermission} from "@/business/utils/sdk-utils";
// require("echarts/lib/component/legend");
export default {
@ -76,6 +77,11 @@ export default {
data() {
return {};
},
computed: {
hasHomePermission() {
return hasPermission("PROJECT_TRACK_HOME:READ");
}
},
methods: {
redirectPage(page, dataType, selectType, projectId, protocol) {
//api