You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

302 lines
11 KiB
Vue

6 years ago
<template>
6 years ago
<div class="layout">
<Layout :style="{minHeight: '100vh'}">
<Sider collapsible :collapsed-width="78" v-model="isCollapsed">
6 years ago
6 years ago
<div style="margin-top: 40px;margin-bottom: 20px;font-weight: bold;font-size: 30px;color: #ffffff;">
<Avatar size="36"></Avatar>
<span>拓客营销</span>
</div>
6 years ago
6 years ago
<Menu ref="menu" :active-name="selectedItemName" :open-names="openName" theme="dark" width="auto"
6 years ago
: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'}">
6 years ago
<router-view/>
</div>
</Card>
</Content>
</Layout>
</Layout>
</div>
6 years ago
</template>
<script>
6 years ago
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: [],
6 years ago
}
},
mounted() {
6 years ago
let that = this;
this.bus.$on('callBack', function () {
that.callBack();
})
6 years ago
this.bus.$on('setHeader', function (data) {
that.setHeader(data);
})
6 years ago
},
6 years ago
created() {
this.mHeight = window.screen.availHeight - 22;
//获取导航栏权限
this.listOnePermission(this.onePermissionLevel);
},
computed: {
rotateIcon() {
return [
'menu-icon',
this.isCollapsed ? 'rotate-icon' : ''
];
6 years ago
},
6 years ago
menuitemClasses() {
return [
'menu-item',
this.isCollapsed ? 'collapsed-menu' : ''
]
6 years ago
}
},
6 years ago
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));
6 years ago
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;
}
}
}
6 years ago
},
6 years ago
//对象属性空检查
checkParamBlank: function (obj) {
for (let param in obj) {
obj[param] = this.checkBlank(obj[param]);
}
},
//数据空检查
checkBlank: function (data) {
if (!data && data != 0) {
6 years ago
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);
}
6 years ago
6 years ago
})
},
//获取二级权限
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;
});
6 years ago
//展开第一个菜单
that.menuInit();
}
})
},
//导航栏点击
menuInit: function () {
let that = this;
that.selectedItemName = that.onePermissionList[0].subMenuList[0].id;
that.openName = [that.onePermissionList[0].id];
this.$nextTick(() => {
6 years ago
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});
6 years ago
},
6 years ago
//账户管理页面回调方法
callBack() {
6 years ago
let that = this;
this.selectedMenu = "设置管理";
this.selectedSubMenu = "账户管理";
this.selectedItemName = this.onePermissionList[0].subMenuList[0].id;
this.$nextTick(() => {
6 years ago
that.$refs.menu.updateActiveName();
})
},
6 years ago
setHeader(data){
let that = this;
this.selectedSubMenu = data.header;
this.$nextTick(() => {
that.$refs.menu.updateActiveName();
})
}
6 years ago
},
6 years ago
}
</script>
<style scoped>
6 years ago
.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;
}
6 years ago
</style>