|
|
|
<template>
|
|
|
|
<div class="layout">
|
|
|
|
<Layout :style="{minHeight: '100vh'}">
|
|
|
|
<Sider collapsible :collapsed-width="78" v-model="isCollapsed">
|
|
|
|
|
|
|
|
<div style="margin-top: 40px;margin-bottom: 20px;font-weight: bold;font-size: 30px;color: #ffffff;">
|
|
|
|
<Avatar size="36"></Avatar>
|
|
|
|
<span>拓客营销</span>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<Menu ref="menu" :active-name="selectedItemName" :open-names="openName" theme="dark" width="auto"
|
|
|
|
:class="menuitemClasses"
|
|
|
|
@on-select="onSelectLister" :accordion="true">
|
|
|
|
<Submenu :name="item.id" v-for="item in onePermissionList" :key="item.id">
|
|
|
|
<template slot="title">
|
|
|
|
<Icon type="ios-paper"/>
|
|
|
|
{{item.name}}
|
|
|
|
</template>
|
|
|
|
<MenuItem :name="cItem.id" :to="cItem.resource" v-for="cItem in item.subMenuList"
|
|
|
|
:key="cItem.id">
|
|
|
|
{{cItem.name}}
|
|
|
|
</MenuItem>
|
|
|
|
</Submenu>
|
|
|
|
</Menu>
|
|
|
|
</Sider>
|
|
|
|
<Layout>
|
|
|
|
<!-- <Header :style="{background: '#fff', boxShadow: '0 2px 3px 2px rgba(0,0,0,.1)'}"></Header>-->
|
|
|
|
<Content :style="{padding: '0 16px 16px'}">
|
|
|
|
<Breadcrumb :style="{margin: '16px 0'}">
|
|
|
|
<BreadcrumbItem>{{selectedMenu}}</BreadcrumbItem>
|
|
|
|
<BreadcrumbItem>{{selectedSubMenu}}</BreadcrumbItem>
|
|
|
|
</Breadcrumb>
|
|
|
|
<Card>
|
|
|
|
<div :style="{'height':mHeight + 'px' + ';min-height:' + mHeight + 'px'}">
|
|
|
|
<router-view/>
|
|
|
|
</div>
|
|
|
|
</Card>
|
|
|
|
</Content>
|
|
|
|
</Layout>
|
|
|
|
</Layout>
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
<script>
|
|
|
|
import homeRequest from "../services/home/homeRequest";
|
|
|
|
|
|
|
|
export default {
|
|
|
|
provide() {
|
|
|
|
return {
|
|
|
|
checkParamBlank: this.checkParamBlank,
|
|
|
|
};
|
|
|
|
},
|
|
|
|
data() {
|
|
|
|
return {
|
|
|
|
isCollapsed: false,
|
|
|
|
mHeight: 600,
|
|
|
|
selectedItemName: 0,
|
|
|
|
openName: [],
|
|
|
|
selectedMenu: '',
|
|
|
|
selectedSubMenu: '',
|
|
|
|
//权限等级
|
|
|
|
onePermissionLevel: 1,
|
|
|
|
twoPermissionLevel: 2,
|
|
|
|
threePermissionLevel: 3,
|
|
|
|
//导航栏权限-1级权限
|
|
|
|
onePermissionList: [],
|
|
|
|
//2级权限
|
|
|
|
twoPermissionList: [],
|
|
|
|
//3级权限
|
|
|
|
threePermissionList: [],
|
|
|
|
}
|
|
|
|
},
|
|
|
|
mounted() {
|
|
|
|
let that = this;
|
|
|
|
this.bus.$on('callBack', function () {
|
|
|
|
that.callBack();
|
|
|
|
})
|
|
|
|
},
|
|
|
|
created() {
|
|
|
|
this.mHeight = window.screen.availHeight - 22;
|
|
|
|
|
|
|
|
//获取导航栏权限
|
|
|
|
this.listOnePermission(this.onePermissionLevel);
|
|
|
|
},
|
|
|
|
computed: {
|
|
|
|
rotateIcon() {
|
|
|
|
return [
|
|
|
|
'menu-icon',
|
|
|
|
this.isCollapsed ? 'rotate-icon' : ''
|
|
|
|
];
|
|
|
|
},
|
|
|
|
menuitemClasses() {
|
|
|
|
return [
|
|
|
|
'menu-item',
|
|
|
|
this.isCollapsed ? 'collapsed-menu' : ''
|
|
|
|
]
|
|
|
|
}
|
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
onSelectLister(val) {
|
|
|
|
let i;
|
|
|
|
this.onePermissionList.forEach(function (data) {
|
|
|
|
data.subMenuList.forEach(function (dta) {
|
|
|
|
if(dta.id === val){
|
|
|
|
i = dta;
|
|
|
|
}
|
|
|
|
})
|
|
|
|
});
|
|
|
|
sessionStorage.setItem("threeLevel",JSON.stringify(i.subMenuList));
|
|
|
|
for (let i = 0; i < this.onePermissionList.length; i++) {
|
|
|
|
let item = this.onePermissionList[i];
|
|
|
|
for (let k = 0; k < item.subMenuList.length; k++) {
|
|
|
|
let cItem = item.subMenuList[k];
|
|
|
|
if (cItem.id === val) {
|
|
|
|
this.selectedMenu = item.name;
|
|
|
|
this.selectedSubMenu = cItem.name;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
//对象属性空检查
|
|
|
|
checkParamBlank: function (obj) {
|
|
|
|
for (let param in obj) {
|
|
|
|
obj[param] = this.checkBlank(obj[param]);
|
|
|
|
}
|
|
|
|
},
|
|
|
|
//数据空检查
|
|
|
|
checkBlank: function (data) {
|
|
|
|
if (!data && data != 0) {
|
|
|
|
return "--";
|
|
|
|
} else {
|
|
|
|
return data;
|
|
|
|
}
|
|
|
|
},
|
|
|
|
//获取导航栏一级权限
|
|
|
|
listOnePermission(level) {
|
|
|
|
let that = this;
|
|
|
|
let userId = JSON.parse(sessionStorage.getItem("loginInfo")).userId;
|
|
|
|
let request = {
|
|
|
|
userId: userId,
|
|
|
|
level: level
|
|
|
|
};
|
|
|
|
homeRequest.listUserLoginPermissionApi(request, function (data) {
|
|
|
|
data = data.data;
|
|
|
|
if (data.code === '0001') {
|
|
|
|
that.$Message.error("查询用户权限出错");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (data.code === '0000') {
|
|
|
|
data = data.results;
|
|
|
|
for (let i = 0; i < data.length; i++) {
|
|
|
|
let row = data[i];
|
|
|
|
row.class = 'head-permission';
|
|
|
|
that.onePermissionList.push(row);
|
|
|
|
}
|
|
|
|
that.listTwoPermission(that.twoPermissionLevel);
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
},
|
|
|
|
//获取二级权限
|
|
|
|
listTwoPermission(level) {
|
|
|
|
let userId = JSON.parse(sessionStorage.getItem("loginInfo")).userId;
|
|
|
|
let that = this;
|
|
|
|
that.twoPermissionList = [];
|
|
|
|
let request = {
|
|
|
|
userId: userId,
|
|
|
|
level: level
|
|
|
|
};
|
|
|
|
homeRequest.listUserLoginPermissionApi(request, function (data) {
|
|
|
|
data = data.data;
|
|
|
|
if (data.code === '0001') {
|
|
|
|
that.$Message.error("查询用户权限出错");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (data.code === '0000') {
|
|
|
|
data = data.results;
|
|
|
|
that.twoPermissionList = [];
|
|
|
|
for (let i = 0; i < data.length; i++) {
|
|
|
|
let row = data[i];
|
|
|
|
that.twoPermissionList.push(row);
|
|
|
|
}
|
|
|
|
that.listThreePermission(that.threePermissionLevel);
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
},
|
|
|
|
//获取三级权限
|
|
|
|
listThreePermission(level) {
|
|
|
|
let userId = JSON.parse(sessionStorage.getItem("loginInfo")).userId;
|
|
|
|
let that = this;
|
|
|
|
that.threePermissionList = [];
|
|
|
|
let request = {
|
|
|
|
userId: userId,
|
|
|
|
level: level
|
|
|
|
};
|
|
|
|
homeRequest.listUserLoginPermissionApi(request, function (data) {
|
|
|
|
data = data.data;
|
|
|
|
if (data.code === '0001') {
|
|
|
|
that.$Message.error("查询用户权限出错");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (data.code === '0000') {
|
|
|
|
data = data.results;
|
|
|
|
that.threePermissionList = [];
|
|
|
|
for (let i = 0; i < data.length; i++) {
|
|
|
|
let row = data[i];
|
|
|
|
that.threePermissionList.push(row);
|
|
|
|
}
|
|
|
|
that.twoPermissionList.forEach(function (two) {
|
|
|
|
//把三级导航绑定给第二级导航栏
|
|
|
|
let three = that.threePermissionList.filter(function (data) {
|
|
|
|
return data.pid === two.id
|
|
|
|
});
|
|
|
|
two.subMenuList = three;
|
|
|
|
});
|
|
|
|
that.onePermissionList.forEach(function (one) {
|
|
|
|
//把二级导航绑定给第一级导航栏
|
|
|
|
let two = that.twoPermissionList.filter(function (data) {
|
|
|
|
return data.pid === one.id
|
|
|
|
});
|
|
|
|
one.subMenuList = two;
|
|
|
|
});
|
|
|
|
//展开第一个菜单
|
|
|
|
that.menuInit();
|
|
|
|
}
|
|
|
|
})
|
|
|
|
},
|
|
|
|
//导航栏点击
|
|
|
|
menuInit: function () {
|
|
|
|
let that = this;
|
|
|
|
that.selectedItemName = that.onePermissionList[0].subMenuList[0].id;
|
|
|
|
that.openName = [that.onePermissionList[0].id];
|
|
|
|
this.$nextTick(() => {
|
|
|
|
this.$refs.menu.updateOpened();
|
|
|
|
this.$refs.menu.updateActiveName();
|
|
|
|
});
|
|
|
|
this.selectedMenu = this.onePermissionList[0].name;
|
|
|
|
this.selectedSubMenu = this.onePermissionList[0].subMenuList[0].name;
|
|
|
|
sessionStorage.setItem("threeLevel",JSON.stringify(this.onePermissionList[0].subMenuList[0].subMenuList));
|
|
|
|
this.$router.push({path: that.onePermissionList[0].subMenuList[0].resource});
|
|
|
|
},
|
|
|
|
//账户管理页面回调方法
|
|
|
|
callBack() {
|
|
|
|
let that = this;
|
|
|
|
this.selectedMenu = "设置管理";
|
|
|
|
this.selectedSubMenu = "账户管理";
|
|
|
|
this.selectedItemName = this.onePermissionList[0].subMenuList[0].id;
|
|
|
|
this.$nextTick(() => {
|
|
|
|
that.$refs.menu.updateActiveName();
|
|
|
|
})
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
<style scoped>
|
|
|
|
|
|
|
|
.layout-con {
|
|
|
|
height: 100%;
|
|
|
|
width: 100%;
|
|
|
|
}
|
|
|
|
|
|
|
|
.menu-item span {
|
|
|
|
display: inline-block;
|
|
|
|
overflow: hidden;
|
|
|
|
width: 69px;
|
|
|
|
text-overflow: ellipsis;
|
|
|
|
white-space: nowrap;
|
|
|
|
vertical-align: bottom;
|
|
|
|
transition: width .2s ease .2s;
|
|
|
|
}
|
|
|
|
|
|
|
|
.menu-item i {
|
|
|
|
transform: translateX(0px);
|
|
|
|
transition: font-size .2s ease, transform .2s ease;
|
|
|
|
vertical-align: middle;
|
|
|
|
font-size: 16px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.collapsed-menu span {
|
|
|
|
width: 0px;
|
|
|
|
transition: width .2s ease;
|
|
|
|
}
|
|
|
|
|
|
|
|
.collapsed-menu i {
|
|
|
|
transform: translateX(5px);
|
|
|
|
transition: font-size .2s ease .2s, transform .2s ease .2s;
|
|
|
|
vertical-align: middle;
|
|
|
|
font-size: 22px;
|
|
|
|
}
|
|
|
|
</style>
|