feat: 初始化菜单项及页面
This commit is contained in:
parent
546c35f1e5
commit
32eae40ada
|
@ -467,7 +467,7 @@
|
||||||
|
|
||||||
/** 开关 **/
|
/** 开关 **/
|
||||||
.arco-switch {
|
.arco-switch {
|
||||||
background: var(--color-fill-4);
|
background: var(--color-fill-4) !important;
|
||||||
}
|
}
|
||||||
.arco-switch-checked {
|
.arco-switch-checked {
|
||||||
background: rgb(var(--primary-6)) !important;
|
background: rgb(var(--primary-6)) !important;
|
||||||
|
|
|
@ -14,7 +14,26 @@
|
||||||
@selection-change="(e) => selectionChange(e, true)"
|
@selection-change="(e) => selectionChange(e, true)"
|
||||||
>
|
>
|
||||||
<template #columns>
|
<template #columns>
|
||||||
<a-table-column v-for="(item, idx) in columns" :key="idx">
|
<a-table-column
|
||||||
|
v-for="(item, idx) in columns"
|
||||||
|
:key="idx"
|
||||||
|
:width="item.width"
|
||||||
|
:align="item.align"
|
||||||
|
:fixed="item.fixed"
|
||||||
|
:ellipsis="item.ellipsis"
|
||||||
|
:sortable="item.sortable"
|
||||||
|
:filterable="item.filterable"
|
||||||
|
:cell-class="item.cellClass"
|
||||||
|
:header-cell-class="item.headerCellClass"
|
||||||
|
:body-cell-class="item.bodyCellClass"
|
||||||
|
:summary-cell-class="item.summaryCellClass"
|
||||||
|
:cell-style="item.cellStyle"
|
||||||
|
:header-cell-style="item.headerCellStyle"
|
||||||
|
:body-cell-style="item.bodyCellStyle"
|
||||||
|
:summary-cell-style="item.summaryCellStyle"
|
||||||
|
:index="item.index"
|
||||||
|
:tooltip="item.tooltip"
|
||||||
|
>
|
||||||
<template #title>
|
<template #title>
|
||||||
<div v-if="attrs.showSetting && idx === columns.length - 1" class="column-selector">
|
<div v-if="attrs.showSetting && idx === columns.length - 1" class="column-selector">
|
||||||
<div class="title">{{ t(item.title as string) }}</div>
|
<div class="title">{{ t(item.title as string) }}</div>
|
||||||
|
@ -56,7 +75,7 @@
|
||||||
} from './type';
|
} from './type';
|
||||||
import BatchAction from './batchAction.vue';
|
import BatchAction from './batchAction.vue';
|
||||||
|
|
||||||
import type { TableData } from '@arco-design/web-vue';
|
import type { TableColumnData, TableData } from '@arco-design/web-vue';
|
||||||
import ColumnSelector from './columnSelector.vue';
|
import ColumnSelector from './columnSelector.vue';
|
||||||
|
|
||||||
const batchleft = ref('10px');
|
const batchleft = ref('10px');
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
enum menuEnum {
|
||||||
|
APITEST = 'apiTest',
|
||||||
|
BUGMANAGEMENT = 'bugManagement',
|
||||||
|
FEATURETEST = 'featureTest',
|
||||||
|
PERFORMANCETEST = 'performanceTest',
|
||||||
|
PROJECTMANAGEMENT = 'projectManagement',
|
||||||
|
SETTING = 'setting',
|
||||||
|
TESTPLAN = 'testPlan',
|
||||||
|
UITEST = 'uiTest',
|
||||||
|
WORKPLACE = 'workplace',
|
||||||
|
}
|
||||||
|
|
||||||
|
export default menuEnum;
|
|
@ -17,7 +17,14 @@ Object.keys(_Vmodules).forEach((key) => {
|
||||||
});
|
});
|
||||||
export default {
|
export default {
|
||||||
message: {
|
message: {
|
||||||
'menu.apiTest': 'Api Test',
|
'menu.workplace': 'Workplace',
|
||||||
|
'menu.testPlan': 'Test plan',
|
||||||
|
'menu.bugManagement': 'Bug management',
|
||||||
|
'menu.featureTest': 'Feature test',
|
||||||
|
'menu.apiTest': 'API test',
|
||||||
|
'menu.uiTest': 'UI test',
|
||||||
|
'menu.performanceTest': 'Performance test',
|
||||||
|
'menu.projectManagement': 'Project management',
|
||||||
'menu.settings': 'System Settings',
|
'menu.settings': 'System Settings',
|
||||||
'menu.settings.system': 'System',
|
'menu.settings.system': 'System',
|
||||||
'menu.settings.organization': 'Organization',
|
'menu.settings.organization': 'Organization',
|
||||||
|
|
|
@ -17,7 +17,14 @@ Object.keys(_Vmodules).forEach((key) => {
|
||||||
});
|
});
|
||||||
export default {
|
export default {
|
||||||
message: {
|
message: {
|
||||||
|
'menu.workplace': '工作台',
|
||||||
|
'menu.testPlan': '测试计划',
|
||||||
|
'menu.bugManagement': '缺陷管理',
|
||||||
|
'menu.featureTest': '功能测试',
|
||||||
'menu.apiTest': '接口测试',
|
'menu.apiTest': '接口测试',
|
||||||
|
'menu.uiTest': 'UI测试',
|
||||||
|
'menu.performanceTest': '性能测试',
|
||||||
|
'menu.projectManagement': '项目管理',
|
||||||
'menu.settings': '系统设置',
|
'menu.settings': '系统设置',
|
||||||
'menu.settings.system': '系统',
|
'menu.settings.system': '系统',
|
||||||
'menu.settings.organization': '组织',
|
'menu.settings.organization': '组织',
|
||||||
|
|
|
@ -1,26 +1,25 @@
|
||||||
import { DEFAULT_LAYOUT } from '../base';
|
import { DEFAULT_LAYOUT } from '../base';
|
||||||
import { AppRouteRecordRaw } from '../types';
|
import { AppRouteRecordRaw } from '../types';
|
||||||
|
import menuEnum from '@/enums/menuEnum';
|
||||||
|
|
||||||
const ApiTest: AppRouteRecordRaw = {
|
const ApiTest: AppRouteRecordRaw = {
|
||||||
path: '/api-test',
|
path: '/api-test',
|
||||||
name: 'apiTest',
|
name: menuEnum.APITEST,
|
||||||
redirect: '/api-test/list',
|
redirect: '/api-test/index',
|
||||||
component: DEFAULT_LAYOUT,
|
component: DEFAULT_LAYOUT,
|
||||||
meta: {
|
meta: {
|
||||||
locale: 'menu.apiTest',
|
locale: 'menu.apiTest',
|
||||||
icon: 'icon-dashboard',
|
icon: 'icon_api-test-filled',
|
||||||
order: 0,
|
order: 4,
|
||||||
hideChildrenInMenu: true,
|
hideChildrenInMenu: true,
|
||||||
},
|
},
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
path: 'list',
|
path: 'index',
|
||||||
name: 'apiTestList',
|
name: 'ApiTestIndex',
|
||||||
component: () => import('@/views/api-test/index.vue'),
|
component: () => import('@/views/api-test/index.vue'),
|
||||||
meta: {
|
meta: {
|
||||||
locale: 'menu.apiTest',
|
|
||||||
roles: ['*'],
|
roles: ['*'],
|
||||||
icon: 'icon-computer',
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
|
@ -0,0 +1,28 @@
|
||||||
|
import { DEFAULT_LAYOUT } from '../base';
|
||||||
|
import { AppRouteRecordRaw } from '../types';
|
||||||
|
import menuEnum from '@/enums/menuEnum';
|
||||||
|
|
||||||
|
const BugManagement: AppRouteRecordRaw = {
|
||||||
|
path: '/bug-management',
|
||||||
|
name: menuEnum.BUGMANAGEMENT,
|
||||||
|
redirect: '/bug-management/index',
|
||||||
|
component: DEFAULT_LAYOUT,
|
||||||
|
meta: {
|
||||||
|
locale: 'menu.bugManagement',
|
||||||
|
icon: 'icon_defect',
|
||||||
|
order: 2,
|
||||||
|
hideChildrenInMenu: true,
|
||||||
|
},
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: 'index',
|
||||||
|
name: 'BugManagementIndex',
|
||||||
|
component: () => import('@/views/bug-management/index.vue'),
|
||||||
|
meta: {
|
||||||
|
roles: ['*'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
export default BugManagement;
|
|
@ -0,0 +1,28 @@
|
||||||
|
import { DEFAULT_LAYOUT } from '../base';
|
||||||
|
import { AppRouteRecordRaw } from '../types';
|
||||||
|
import menuEnum from '@/enums/menuEnum';
|
||||||
|
|
||||||
|
const FeatureTest: AppRouteRecordRaw = {
|
||||||
|
path: '/feature-test',
|
||||||
|
name: menuEnum.FEATURETEST,
|
||||||
|
redirect: '/feature-test/index',
|
||||||
|
component: DEFAULT_LAYOUT,
|
||||||
|
meta: {
|
||||||
|
locale: 'menu.featureTest',
|
||||||
|
icon: 'icon_functional_testing',
|
||||||
|
order: 3,
|
||||||
|
hideChildrenInMenu: true,
|
||||||
|
},
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: 'index',
|
||||||
|
name: 'FeatureTestIndex',
|
||||||
|
component: () => import('@/views/feature-test/index.vue'),
|
||||||
|
meta: {
|
||||||
|
roles: ['*'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
export default FeatureTest;
|
|
@ -0,0 +1,28 @@
|
||||||
|
import { DEFAULT_LAYOUT } from '../base';
|
||||||
|
import { AppRouteRecordRaw } from '../types';
|
||||||
|
import menuEnum from '@/enums/menuEnum';
|
||||||
|
|
||||||
|
const PerformanceTest: AppRouteRecordRaw = {
|
||||||
|
path: '/performtest-test',
|
||||||
|
name: menuEnum.PERFORMANCETEST,
|
||||||
|
redirect: '/performtest-test/index',
|
||||||
|
component: DEFAULT_LAYOUT,
|
||||||
|
meta: {
|
||||||
|
locale: 'menu.performanceTest',
|
||||||
|
icon: 'icon_performance-test-filled',
|
||||||
|
order: 6,
|
||||||
|
hideChildrenInMenu: true,
|
||||||
|
},
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: 'index',
|
||||||
|
name: 'apiTestList',
|
||||||
|
component: () => import('@/views/performance-test/index.vue'),
|
||||||
|
meta: {
|
||||||
|
roles: ['*'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
export default PerformanceTest;
|
|
@ -0,0 +1,28 @@
|
||||||
|
import { DEFAULT_LAYOUT } from '../base';
|
||||||
|
import { AppRouteRecordRaw } from '../types';
|
||||||
|
import menuEnum from '@/enums/menuEnum';
|
||||||
|
|
||||||
|
const ProjectManagement: AppRouteRecordRaw = {
|
||||||
|
path: '/project-management',
|
||||||
|
name: menuEnum.PROJECTMANAGEMENT,
|
||||||
|
redirect: '/project-management/index',
|
||||||
|
component: DEFAULT_LAYOUT,
|
||||||
|
meta: {
|
||||||
|
locale: 'menu.projectManagement',
|
||||||
|
icon: 'icon_project-settings-filled',
|
||||||
|
order: 7,
|
||||||
|
hideChildrenInMenu: true,
|
||||||
|
},
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: 'index',
|
||||||
|
name: 'ProjectManagementIndex',
|
||||||
|
component: () => import('@/views/project-management/index.vue'),
|
||||||
|
meta: {
|
||||||
|
roles: ['*'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
export default ProjectManagement;
|
|
@ -8,7 +8,7 @@ const Setting: AppRouteRecordRaw = {
|
||||||
meta: {
|
meta: {
|
||||||
locale: 'menu.settings',
|
locale: 'menu.settings',
|
||||||
icon: 'icon-a-icon_system_settings',
|
icon: 'icon-a-icon_system_settings',
|
||||||
order: 0,
|
order: 8,
|
||||||
},
|
},
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
import { DEFAULT_LAYOUT } from '../base';
|
||||||
|
import { AppRouteRecordRaw } from '../types';
|
||||||
|
import menuEnum from '@/enums/menuEnum';
|
||||||
|
|
||||||
|
const TestPlan: AppRouteRecordRaw = {
|
||||||
|
path: '/test-plan',
|
||||||
|
name: menuEnum.TESTPLAN,
|
||||||
|
redirect: '/test-plan/index',
|
||||||
|
component: DEFAULT_LAYOUT,
|
||||||
|
meta: {
|
||||||
|
locale: 'menu.testPlan',
|
||||||
|
icon: 'icon_test-tracking_filled',
|
||||||
|
order: 1,
|
||||||
|
hideChildrenInMenu: true,
|
||||||
|
},
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: 'index',
|
||||||
|
name: 'testPlanIndex',
|
||||||
|
component: () => import('@/views/test-plan/index.vue'),
|
||||||
|
meta: {
|
||||||
|
roles: ['*'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
export default TestPlan;
|
|
@ -0,0 +1,28 @@
|
||||||
|
import { DEFAULT_LAYOUT } from '../base';
|
||||||
|
import { AppRouteRecordRaw } from '../types';
|
||||||
|
import menuEnum from '@/enums/menuEnum';
|
||||||
|
|
||||||
|
const UiTest: AppRouteRecordRaw = {
|
||||||
|
path: '/ui-test',
|
||||||
|
name: menuEnum.UITEST,
|
||||||
|
redirect: '/ui-test/index',
|
||||||
|
component: DEFAULT_LAYOUT,
|
||||||
|
meta: {
|
||||||
|
locale: 'menu.uiTest',
|
||||||
|
icon: 'icon_ui-test-filled',
|
||||||
|
order: 5,
|
||||||
|
hideChildrenInMenu: true,
|
||||||
|
},
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: 'index',
|
||||||
|
name: 'UiTestIndex',
|
||||||
|
component: () => import('@/views/ui-test/index.vue'),
|
||||||
|
meta: {
|
||||||
|
roles: ['*'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
export default UiTest;
|
|
@ -0,0 +1,28 @@
|
||||||
|
import { DEFAULT_LAYOUT } from '../base';
|
||||||
|
import { AppRouteRecordRaw } from '../types';
|
||||||
|
import menuEnum from '@/enums/menuEnum';
|
||||||
|
|
||||||
|
const WorkPlace: AppRouteRecordRaw = {
|
||||||
|
path: '/workplace',
|
||||||
|
name: menuEnum.WORKPLACE,
|
||||||
|
redirect: '/workplace/index',
|
||||||
|
component: DEFAULT_LAYOUT,
|
||||||
|
meta: {
|
||||||
|
locale: 'menu.workplace',
|
||||||
|
icon: 'icon_pc_filled',
|
||||||
|
order: 0,
|
||||||
|
hideChildrenInMenu: true,
|
||||||
|
},
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: 'index',
|
||||||
|
name: 'WorkPlaceIndex',
|
||||||
|
component: () => import('@/views/workplace/index.vue'),
|
||||||
|
meta: {
|
||||||
|
roles: ['*'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
export default WorkPlace;
|
|
@ -0,0 +1,3 @@
|
||||||
|
<template> loding... </template>
|
||||||
|
|
||||||
|
<script setup></script>
|
|
@ -0,0 +1,3 @@
|
||||||
|
<template> Loading ... </template>
|
||||||
|
|
||||||
|
<script></script>
|
|
@ -2,7 +2,7 @@
|
||||||
<div class="login-form flex flex-col items-center">
|
<div class="login-form flex flex-col items-center">
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<div class="mt-40 flex justify-center">
|
<div class="mt-40 flex justify-center">
|
||||||
<svg-icon :width="'290px'" :height="'60px'" :name="'login-logo'" />
|
<svg-icon width="290px" height="60px" name="login-logo" />
|
||||||
</div>
|
</div>
|
||||||
<div class="title-0 flex justify-center">
|
<div class="title-0 flex justify-center">
|
||||||
<span class="title-welcome">{{ $t('login.form.title') }}</span>
|
<span class="title-welcome">{{ $t('login.form.title') }}</span>
|
||||||
|
@ -112,7 +112,7 @@
|
||||||
const { redirect, ...othersQuery } = router.currentRoute.value.query;
|
const { redirect, ...othersQuery } = router.currentRoute.value.query;
|
||||||
setLoginExpires();
|
setLoginExpires();
|
||||||
router.push({
|
router.push({
|
||||||
name: (redirect as string) || 'apiTest',
|
name: (redirect as string) || 'setting',
|
||||||
query: {
|
query: {
|
||||||
...othersQuery,
|
...othersQuery,
|
||||||
},
|
},
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
<template> Loading ... </template>
|
||||||
|
|
||||||
|
<script></script>
|
|
@ -0,0 +1,3 @@
|
||||||
|
<template> Loading ... </template>
|
||||||
|
|
||||||
|
<script></script>
|
|
@ -0,0 +1,3 @@
|
||||||
|
<template> Loading ... </template>
|
||||||
|
|
||||||
|
<script></script>
|
|
@ -0,0 +1,3 @@
|
||||||
|
<template> Loading ... </template>
|
||||||
|
|
||||||
|
<script></script>
|
|
@ -0,0 +1,3 @@
|
||||||
|
<template> Loading ... </template>
|
||||||
|
|
||||||
|
<script></script>
|
Loading…
Reference in New Issue