add tags-view control
This commit is contained in:
parent
fd550545af
commit
4414a25b77
|
@ -18,10 +18,6 @@ import { addClass, removeClass } from '@/utils'
|
|||
export default {
|
||||
name: 'RightPanel',
|
||||
props: {
|
||||
value: {
|
||||
default: false,
|
||||
type: Boolean
|
||||
},
|
||||
clickNotClose: {
|
||||
default: false,
|
||||
type: Boolean
|
||||
|
@ -29,7 +25,7 @@ export default {
|
|||
},
|
||||
data() {
|
||||
return {
|
||||
show: false
|
||||
show: true
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
|
@ -52,7 +48,7 @@ export default {
|
|||
window.addEventListener('click', this.closeSidebar)
|
||||
},
|
||||
closeSidebar(evt) {
|
||||
const parent = evt.target.closest('.rightPanel')
|
||||
const parent = evt.target.closest('.rightPanel-container')
|
||||
if (!parent) {
|
||||
this.show = false
|
||||
window.removeEventListener('click', this.closeSidebar)
|
||||
|
|
|
@ -2,18 +2,20 @@
|
|||
<div :class="classObj" class="app-wrapper">
|
||||
<div v-if="device==='mobile'&&sidebar.opened" class="drawer-bg" @click="handleClickOutside" />
|
||||
<sidebar class="sidebar-container" />
|
||||
<div class="main-container">
|
||||
<div :class="{hasTagsView:needTagsView}" class="main-container">
|
||||
<navbar />
|
||||
<tags-view />
|
||||
<tags-view v-if="needTagsView" />
|
||||
<app-main />
|
||||
<right-panel v-if="showSettings" />
|
||||
<right-panel v-if="showSettings">
|
||||
<settings />
|
||||
</right-panel>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import RightPanel from '@/components/RightPanel'
|
||||
import { Navbar, Sidebar, AppMain, TagsView } from './components'
|
||||
import { Navbar, Sidebar, AppMain, TagsView, Settings } from './components'
|
||||
import ResizeMixin from './mixin/ResizeHandler'
|
||||
import { mapState } from 'vuex'
|
||||
|
||||
|
@ -24,14 +26,16 @@ export default {
|
|||
Navbar,
|
||||
Sidebar,
|
||||
AppMain,
|
||||
TagsView
|
||||
TagsView,
|
||||
Settings
|
||||
},
|
||||
mixins: [ResizeMixin],
|
||||
computed: {
|
||||
...mapState({
|
||||
sidebar: state => state.app.sidebar,
|
||||
device: state => state.app.device,
|
||||
showSettings: state => state.app.showSettings
|
||||
showSettings: state => state.settings.showSettings,
|
||||
needTagsView: state => state.settings.tagsView
|
||||
}),
|
||||
classObj() {
|
||||
return {
|
||||
|
|
|
@ -24,11 +24,16 @@ export default {
|
|||
|
||||
<style scoped>
|
||||
.app-main {
|
||||
/*84 = navbar + tags-view = 50 +34 */
|
||||
min-height: calc(100vh - 84px);
|
||||
/*50= navbar 50 */
|
||||
min-height: calc(100vh - 50px);
|
||||
width: 100%;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.hasTagsView .app-main {
|
||||
/*84 = navbar + tags-view = 50 + 34 */
|
||||
min-height: calc(100vh - 84px);
|
||||
}
|
||||
</style>
|
||||
|
||||
|
|
|
@ -92,9 +92,16 @@ export default {
|
|||
</script>
|
||||
|
||||
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||
.hasTagsView {
|
||||
.navbar {
|
||||
border-bottom: none;
|
||||
}
|
||||
}
|
||||
|
||||
.navbar {
|
||||
height: 50px;
|
||||
overflow: hidden;
|
||||
box-shadow: 0 1px 4px rgba(0,21,41,.08);
|
||||
|
||||
.hamburger-container {
|
||||
line-height: 46px;
|
||||
|
@ -150,6 +157,7 @@ export default {
|
|||
.avatar-wrapper {
|
||||
margin-top: 5px;
|
||||
position: relative;
|
||||
|
||||
.user-avatar {
|
||||
cursor: pointer;
|
||||
width: 40px;
|
||||
|
|
|
@ -0,0 +1,68 @@
|
|||
<template>
|
||||
<div class="drawer-container">
|
||||
<div>
|
||||
<h3 class="drawer-title">
|
||||
系统布局配置
|
||||
</h3>
|
||||
|
||||
<div class="drawer-item">
|
||||
<span>开启 Tags-View</span>
|
||||
<el-switch v-model="tagsView" class="drawer-switch" />
|
||||
</div>
|
||||
|
||||
<div class="drawer-item">
|
||||
<span>显示 Logo</span>
|
||||
<el-switch v-model="sidebarLogo" class="drawer-switch" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
sidebarLogo: true
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
tagsView: {
|
||||
get() {
|
||||
return this.$store.state.settings.tagsView
|
||||
},
|
||||
set(val) {
|
||||
this.$store.dispatch('changeSetting', {
|
||||
key: 'tagsView',
|
||||
value: val
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||
.drawer-container {
|
||||
padding: 24px;
|
||||
font-size: 14px;
|
||||
line-height: 1.5;
|
||||
word-wrap: break-word;
|
||||
|
||||
.drawer-title {
|
||||
margin-bottom: 12px;
|
||||
color: rgba(0, 0, 0, .85);
|
||||
font-size: 14px;
|
||||
line-height: 22px;
|
||||
}
|
||||
|
||||
.drawer-item {
|
||||
color: rgba(0, 0, 0, .65);
|
||||
font-size: 14px;
|
||||
padding: 12px 0;
|
||||
}
|
||||
|
||||
.drawer-switch {
|
||||
float: right
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -2,3 +2,4 @@ export { default as Navbar } from './Navbar'
|
|||
export { default as Sidebar } from './Sidebar/index.vue'
|
||||
export { default as TagsView } from './TagsView/index.vue'
|
||||
export { default as AppMain } from './AppMain'
|
||||
export { default as Settings } from './Settings'
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
export default {
|
||||
|
||||
/**
|
||||
* @type {boolean} true | false
|
||||
* @description Whether show the settings right-panel
|
||||
*/
|
||||
showSettings: true,
|
||||
|
||||
/**
|
||||
* @type {boolean} true | false
|
||||
* @description Whether need tagsView
|
||||
*/
|
||||
tagsView: true,
|
||||
|
||||
/**
|
||||
* @type {string | array} 'production' | ['production','development']
|
||||
* @description Need show err logs component.
|
||||
* The default is only used in the production env
|
||||
* If you want to use it in dev, you can pass ['production','development']
|
||||
*/
|
||||
errorLog: 'production'
|
||||
}
|
|
@ -4,6 +4,7 @@ import app from './modules/app'
|
|||
import errorLog from './modules/errorLog'
|
||||
import permission from './modules/permission'
|
||||
import tagsView from './modules/tagsView'
|
||||
import settings from './modules/settings'
|
||||
import user from './modules/user'
|
||||
import getters from './getters'
|
||||
|
||||
|
@ -15,6 +16,7 @@ const store = new Vuex.Store({
|
|||
errorLog,
|
||||
permission,
|
||||
tagsView,
|
||||
settings,
|
||||
user
|
||||
},
|
||||
getters
|
||||
|
|
|
@ -8,8 +8,7 @@ const app = {
|
|||
},
|
||||
device: 'desktop',
|
||||
language: Cookies.get('language') || 'en',
|
||||
size: Cookies.get('size') || 'medium',
|
||||
showSettings: true
|
||||
size: Cookies.get('size') || 'medium'
|
||||
},
|
||||
mutations: {
|
||||
TOGGLE_SIDEBAR: state => {
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
import defaultSettings from '@/settings'
|
||||
const { showSettings, tagsView } = defaultSettings
|
||||
|
||||
const settings = {
|
||||
state: {
|
||||
showSettings: showSettings,
|
||||
tagsView: tagsView
|
||||
},
|
||||
mutations: {
|
||||
CHANGE_SETTING: (state, { key, value }) => {
|
||||
if (state.hasOwnProperty(key)) {
|
||||
state[key] = value
|
||||
}
|
||||
}
|
||||
},
|
||||
actions: {
|
||||
changeSetting({ commit }, data) {
|
||||
commit('CHANGE_SETTING', data)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default settings
|
Loading…
Reference in New Issue