Commit 5387cdbf authored by “yiyousong”'s avatar “yiyousong”

perf: 优化页面配置

parent 1159c387
<template>
<div class="page-tab-view">
<el-tabs :value="activeKey" @tab-click="changeRouter">
<el-tab-pane v-for="v in secondaryRoutes" :key="v.path" :name="v.path">
<template slot="label">
<i v-if="v.meta.icon" :class="['tab-icon', v.meta.icon]"></i>
<span class="tab-label">{{ v.meta.title }}</span>
</template>
</el-tab-pane>
</el-tabs>
<div class="out-box">
<router-view></router-view>
</div>
</div>
</template>
<script>
import { mapGetters } from 'vuex';
export default {
data() {
return {};
},
computed: {
activeKey() {
return this.$route.path;
},
...mapGetters('user', ['secondaryRoutes'])
},
created() {},
methods: {
changeRouter(e) {
this.$router.push(e.name);
}
}
};
</script>
<style lang="less" scoped>
:deep(.el-tabs__nav-scroll) {
padding-left: 15px;
.tab-icon {
margin-right: 5px;
color: #2681e8;
}
.tab-label {
font-weight: bold;
color: rgba(0, 0, 0, 0.65);
}
.is-active {
.tab-label {
color: #2681e8;
}
}
}
.page-tab-view {
width: 100%;
height: 100%;
background: #fff;
display: flex;
flex-direction: column;
.out-box {
flex: 1;
padding: 15px;
overflow-y: auto;
}
}
</style>
......@@ -45,7 +45,7 @@
<script>
import HeaderSite from './HeaderSite.vue';
import { mapState,mapMutations } from 'vuex';
import { mapState, mapMutations } from 'vuex';
import { systemName } from '@/config';
export default {
components: {
......@@ -66,7 +66,7 @@ export default {
}
return path;
},
...mapState('user', ['menus', 'sysName', 'sysLogo', 'path', 'menus'])
...mapState('user', ['sysName', 'sysLogo', 'path', 'menus'])
},
created() {
......
......@@ -64,7 +64,7 @@ import storage from '@/utils/storage';
import { mapMutations } from 'vuex';
import { getHomeData } from '@/api/home';
import { generateRoutes, filterBtn } from '@/utils';
import { calcMenu } from '@/router';
import { calcMenu, menusFilter } from '@/router';
import { login, loginCode } from '@/api/login';
import { systemName } from '@/config';
export default {
......@@ -162,6 +162,7 @@ export default {
// 过滤掉按钮
let menus = filterBtn(menuList, false);
let routes = generateRoutes(menus);
routes = menusFilter(routes);
// this.SET_routes(routes);
this.SET_menusList(menus);
this.setBtnPermissions(menuList);
......
......@@ -9,7 +9,7 @@ import storage from '@/utils/storage';
import { mapMutations } from 'vuex';
import { getHomeData } from '@/api/home';
import { generateRoutes, filterBtn } from '@/utils';
import { calcMenu } from '@/router';
import { calcMenu, menusFilter } from '@/router';
export default {
data() {
return {
......@@ -58,6 +58,7 @@ export default {
// 过滤掉按钮
let menus = filterBtn(menuList, false);
let routes = generateRoutes(menus);
routes = menusFilter(routes);
// this.SET_routes(routes);
this.SET_menusList(menus);
this.setBtnPermissions(menuList);
......@@ -66,7 +67,7 @@ export default {
let path = routes[0].path;
this.$router.push(path);
} else {
this.$message.warning('暂无权限,请联系管理员!');
this.$message.warning('暂无页面权限,请联系管理员!');
}
}
},
......
<template>
<div class="system">
<tab-menu-bar></tab-menu-bar>
</div>
</template>
<script>
import TabMenuBar from '@/components/TabMenuBar/TabMenuBar.vue';
export default {
components: { TabMenuBar },
data() {
return {
subMenus: []
};
},
computed: {},
created() {},
methods: {}
};
</script>
<style lang="less" scoped>
.system {
width: 100%;
height: 100%;
}
</style>
......@@ -108,11 +108,11 @@ export default {
prop: 'name'
// align: "center",
},
{
label: 'ID',
prop: 'id',
align: 'center'
},
// {
// label: 'ID',
// prop: 'id',
// align: 'center'
// },
{
label: '图标',
align: 'center',
......@@ -131,11 +131,11 @@ export default {
// return this.dict.authType[row.authType];
// }
// },
{
label: '父ID',
prop: 'parentId',
align: 'center'
},
// {
// label: '父ID',
// prop: 'parentId',
// align: 'center'
// },
{
label: '地址',
prop: 'url',
......@@ -146,9 +146,28 @@ export default {
prop: 'menuType',
align: 'center',
formatter: (row) => {
return this.dict.menuType[row.menuType];
if (row.menuType === 0) {
return (
<el-tag size="small" type="info">
{this.dict.menuType[row.menuType]}
</el-tag>
);
} else if (row.menuType === 1) {
return (
<el-tag size="small" type="success">
{this.dict.menuType[row.menuType]}
</el-tag>
);
} else if (row.menuType === 2) {
return <el-tag size="small">{this.dict.menuType[row.menuType]}</el-tag>;
}
}
},
{
label: '权限字符',
prop: 'perms',
align: 'center'
},
{
label: '状态',
prop: 'status',
......@@ -175,12 +194,12 @@ export default {
return (
<div class="flex items-center justify-center gap-4">
<i
v-hasPermi={['system:menu:up']}
v-hasPermi={['system:menu:sort']}
class="el-icon-top primary cursor-pointer"
onClick={() => this.changeMenuSort(row.id, 0)}
></i>
<i
v-hasPermi={['system:menu:down']}
v-hasPermi={['system:menu:sort']}
class="el-icon-bottom primary cursor-pointer"
onClick={() => this.changeMenuSort(row.id, 1)}
></i>
......
......@@ -287,7 +287,11 @@ export default {
if (this.form.resourceType === 1) {
resourceUrl = this.form.resourceUrl.join(',');
} else {
resourceUrl = this.form.urls.map((v) => v.value).join(',');
resourceUrl = this.form.urls
.map((v) => {
return v.value.startsWith('/') ? v.value : '/' + v.value;
})
.join(',');
}
this.$delete(form, 'resourceType');
this.$delete(form, 'urls');
......
......@@ -266,7 +266,7 @@ router.beforeEach((to, from, next) => {
});
// 过滤菜单
function menusFilter(arr) {
export function menusFilter(arr) {
let router = arr.filter((v) => {
if (!v.hidden) {
if (v.children) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment