Commit 0fe8f040 authored by “yiyousong”'s avatar “yiyousong”

perf: 优化菜单管理

parent 6f2cf656
import moment from "moment";
import moment from 'moment';
// 时间格式 年月日时分秒
export function dateFormat(val) {
return moment(val).format("YYYY-MM-DD HH:mm:ss");
return moment(val).format('YYYY-MM-DD HH:mm:ss');
}
// 时间格式 年月日
export function dateDayFormat(val) {
return moment(val).format("YYYY-MM-DD");
return moment(val).format('YYYY-MM-DD');
}
// 时分秒
export function times(val) {
return moment(val).format("HH:mm:ss");
return moment(val).format('HH:mm:ss');
}
// 年
export function year(val) {
return moment(val).format("YYYY");
return moment(val).format('YYYY');
}
// 号数
// 月日
export function days(val) {
return moment(val).format("MM-DD");
}
// 过滤叫号状态
export function filterStyle(val) {
const style = {
0: "排队中",
1: "办理中",
4: "办理完成",
};
let str;
Object.keys(style).forEach((key) => {
if (key == val) {
str = style[key];
}
});
return str;
}
// 过滤政治面貌
export function filterPolitical(val) {
const obj = {
0: "中共党员",
1: "中共预备党员",
2: "共青团员",
3: "普通居民",
4: "其他",
};
let str;
Object.keys(obj).forEach((key) => {
if (key == val) {
str = obj[key];
}
});
return str;
}
// 过滤密码显示*号
export function filterPwd(val) {
let str = val.replace(/\S/g, "*");
return str;
}
// 过滤会员等级
export function filterMember(val) {
const member = {
1: "试用客户",
// 2: "VIP客户",
3: "设计师",
};
let str = "--";
Object.keys(member).forEach((key) => {
if (key == val) {
str = member[key];
}
});
return str;
}
// 过滤客户来源
export function filterCustomerSrc(val) {
const customer = {
1: "申请试用",
2: "顾问签单",
};
let str = "--";
Object.keys(customer).forEach((key) => {
if (key == val) {
str = customer[key];
}
});
return str;
return moment(val).format('MM-DD');
}
......@@ -13,12 +13,7 @@
<HeaderSite class="ml-10"></HeaderSite>
</div>
<!-- 导航 -->
<el-menu
:default-active="activeMenu"
mode="horizontal"
router
@select="selectMenu"
>
<el-menu :default-active="activeMenu" mode="horizontal" router @select="selectMenu">
<template v-for="v in menus">
<el-submenu
v-if="!v.hideChildrenInMenu && v.children && v.children.length"
......@@ -29,11 +24,7 @@
<i v-if="v.meta && v.meta.icon" :class="v.meta.icon"></i>
{{ v.meta.title }}
</template>
<el-menu-item
v-for="item in v.children"
:key="item.path"
:index="item.path"
>
<el-menu-item v-for="item in v.children" :key="item.path" :index="item.path">
<i v-if="item.meta && item.meta.icon" :class="item.meta.icon"></i>
{{ item.meta && item.meta.title }}
</el-menu-item>
......@@ -53,17 +44,17 @@
</template>
<script>
import HeaderSite from "./HeaderSite.vue";
import { mapState, mapActions } from "vuex";
import { systemName } from "@/config";
import HeaderSite from './HeaderSite.vue';
import { mapState, mapActions } from 'vuex';
import { systemName } from '@/config';
export default {
components: {
HeaderSite,
HeaderSite
},
data() {
return {
systemName,
portal: process.env.VUE_APP_API_portal_URL + "/#",
portal: process.env.VUE_APP_API_portal_URL + '/#'
};
},
computed: {
......@@ -75,22 +66,24 @@ export default {
}
return path;
},
...mapState("user", ["menus", "sysName", "sysLogo", "path", "menus"]),
...mapState('user', ['menus', 'sysName', 'sysLogo', 'path', 'menus'])
},
created() {
document.title = this.sysName ? this.sysName : this.systemName; // 设置项目标题
},
methods: {
...mapActions("user", ["setSecondaryRoutes"]),
...mapActions('user', ['setSecondaryRoutes']),
selectMenu(index) {
this.setSecondaryRoutes(index);
},
handleGoHome() {
let path = this.menus[0].path;
if (path) {
this.$router.push(path);
},
},
}
}
}
};
</script>
<style lang="less">
......@@ -114,7 +107,7 @@ export default {
@text-color: #fefefea5;
.mixins(@l,@t) {
content: "";
content: '';
display: inline-block;
height: 4px;
width: 30%;
......
......@@ -123,14 +123,14 @@ export default {
}
}
},
{
label: '权限类型',
prop: 'authType',
align: 'center',
formatter: (row) => {
return this.dict.authType[row.authType];
}
},
// {
// label: '权限类型',
// prop: 'authType',
// align: 'center',
// formatter: (row) => {
// return this.dict.authType[row.authType];
// }
// },
{
label: '父ID',
prop: 'parentId',
......
......@@ -33,7 +33,7 @@
<icon-select v-model="form.imgPath"></icon-select>
</el-form-item>
<el-form-item label="权限类型" prop="authType" v-if="form.menuType != 2">
<!-- <el-form-item label="权限类型" prop="authType" v-if="form.menuType != 2">
<el-select clearable v-model="form.authType" placeholder="请选择权限类型">
<el-option
v-for="(item, key) in dict.authType"
......@@ -43,7 +43,7 @@
>
</el-option>
</el-select>
</el-form-item>
</el-form-item> -->
<el-form-item prop="url" v-if="form.menuType != 2">
<span slot="label">
<el-tooltip content="访问的路由地址,如:`system`" placement="top">
......@@ -261,8 +261,8 @@ export default {
rules: {
name: [{ required: true, message: '请输入菜单名称', trigger: 'blur' }],
url: [{ required: true, message: '请输入菜单访问地址', trigger: 'blur' }],
component: [{ required: true, message: '请输入组件路径', trigger: 'blur' }],
authType: [{ required: true, message: '请输入选择权限类型', trigger: 'change' }]
component: [{ required: true, message: '请输入组件路径', trigger: 'blur' }]
// authType: [{ required: true, message: '请输入选择权限类型', trigger: 'change' }]
}
};
},
......
......@@ -221,16 +221,17 @@ export const generateRoutes = (menuList) => {
// 递归处理子节点
if (item.children && item.children.length > 0) {
newItem.children = generateRoutes(item.children);
// 如果存在子路由,默认重定向到第一个不是在菜单栏隐藏的子路由
let firstChild = newItem.children.find((v) => !v.hidden);
if (firstChild) {
newItem.redirect = firstChild.path;
}
return newItem;
});
routers.forEach((v) => {
if (v.children && v.children.length) {
v.redirect = v.children[0].path;
}
return newItem;
});
return routers;
};
/**
* 过滤菜单按钮项并提取 menuType = 2 的项
* @param {Array} menuList - 菜单列表
......
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