Слияние кода завершено, страница обновится автоматически
<template>
<div id="app">
<Login v-if="!isLogin"></Login>
<div class="main layout" v-if="isLogin">
<Layout>
<Sider :style="{height: '100vh'}" ref="side1" hide-trigger collapsible :collapsed-width="80"
v-model="isCollapsed">
<LeftMenu :menuClass="menuitemClasses" :isCollapsed="isCollapsed"></LeftMenu>
</Sider>
<Layout>
<Header style="padding: 0;height:50px;line-height: 50px" class="layout-header-bar">
<Icon @click.native="collapsedSider" :class="rotateIcon" :style="{margin: '0 10px 0 20px'}"
type="md-menu" size="28"></Icon>
<Breadcrumb class="nav">
<BreadcrumbItem v-for="item in nav" :key="item.id">
<Icon :type="item.icon"></Icon>
{{item.name}}
</BreadcrumbItem>
</Breadcrumb>
<Dropdown @on-click="selectDropdown" style="float: right;margin-right: 20px">
<a href="javascript:void(0)">
{{user.username}}
<Icon type="ios-arrow-down"></Icon>
</a>
<DropdownMenu slot="list">
<DropdownItem name="userSetting">用户设置</DropdownItem>
<DropdownItem name="logout">退出</DropdownItem>
</DropdownMenu>
</Dropdown>
</Header>
<Content style="margin:10px 10px 0;background: #fff;padding: 10px">
<router-view/>
</Content>
</Layout>
</Layout>
<userSetting ref="userSetting"></userSetting>
</div>
</div>
</template>
<script>
import Login from './views/system/components/Login.vue'
import LeftMenu from './views/system/components/LeftMenu.vue'
import userSetting from './views/system/components/userSetting.vue'
import {setTitle} from './router'
import {token} from './helper'
import _ from 'lodash'
export default {
components: {
Login,
LeftMenu,
userSetting
},
data() {
return {
isCollapsed: false,
}
},
computed: {
isLogin() {
return this.$store.getters.getAdminUser.hasOwnProperty('id');
},
nav() {
let menus = [];
let ids = this.$store.getters.getCurrentMenuIds;
this.$store.getters.getAdminMenu.forEach((item) => {
if (_.indexOf(ids, item.id) !== -1) {
menus.push(item)
}
});
return menus
},
user() {
return this.$store.getters.getAdminUser;
},
rotateIcon() {
return [
'menu-icon',
this.isCollapsed ? 'rotate-icon' : ''
];
},
menuitemClasses() {
return [
'menu-item',
this.isCollapsed ? 'collapsed-menu' : ''
]
}
},
created() {
},
mounted() {
this.$router.onReady(() => {
this.initialize();
});
},
methods: {
// 初始化系统
initialize() {
if (token()){
this.$request("/load").success((r) => {
this.$store.dispatch('initialize', r.data)
setTitle(this.$route)
}).error(() => {
this.$store.dispatch('logout');
}).complete(() => {
document.querySelector("#loading").remove();
}).get();
}
else{
document.querySelector("#loading").remove();
}
},
selectDropdown(name) {
this[name]();
},
logout() {
this.$request("/logout").success(() => {
this.$store.dispatch('logout');
setTitle(this.$route)
}).get();
},
userSetting() {
this.$refs.userSetting.show();
},
collapsedSider() {
this.$refs.side1.toggleCollapse();
}
},
}
</script>
<style scoped>
.layout {
background: #f5f7f9;
position: relative;
overflow: hidden;
}
.layout-header-bar {
background: #fff;
box-shadow: 0 1px 1px rgba(0, 0, 0, .1);
}
.menu-icon {
transition: all .3s;
}
.rotate-icon {
transform: rotate(-90deg);
}
.nav {
display: inline-block;
width: 500px;
vertical-align: middle;
}
</style>
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарий ( 0 )