summaryrefslogtreecommitdiff
path: root/UI source code/dns_mapping_ui-master/src/layout/index.vue
diff options
context:
space:
mode:
Diffstat (limited to 'UI source code/dns_mapping_ui-master/src/layout/index.vue')
-rw-r--r--UI source code/dns_mapping_ui-master/src/layout/index.vue118
1 files changed, 118 insertions, 0 deletions
diff --git a/UI source code/dns_mapping_ui-master/src/layout/index.vue b/UI source code/dns_mapping_ui-master/src/layout/index.vue
new file mode 100644
index 0000000..6e83e5c
--- /dev/null
+++ b/UI source code/dns_mapping_ui-master/src/layout/index.vue
@@ -0,0 +1,118 @@
+<template>
+ <div :class="classObj" class="app-wrapper">
+ <div v-if="device==='mobile'&&sidebar.opened" class="drawer-bg" @click="handleClickOutside" />
+ <sidebar v-if="menuInLeft" class="sidebar-container" />
+ <div :class="{hasTagsView:needTagsView,'main-container':menuInLeft}" class="main-container">
+ <div :class="{'fixed-header':fixedHeader}">
+ <!-- <navbar /> -->
+ <HeadNavbar v-if="!menuInLeft" />
+ <!-- <tags-view v-if="needTagsView" /> -->
+ </div>
+ <app-main />
+ <right-panel v-if="showSettings">
+ <settings />
+ </right-panel>
+ </div>
+ <!-- 防止刷新后主题丢失 -->
+ <Theme v-show="false" ref="theme" />
+ </div>
+</template>
+
+<script>
+import RightPanel from '@/components/RightPanel'
+import { AppMain, Navbar, Settings, Sidebar, TagsView, HeadNavbar } from './components'
+import ResizeMixin from './mixin/ResizeHandler'
+import { mapState } from 'vuex'
+import Theme from '@/components/ThemePicker'
+import Cookies from 'js-cookie'
+export default {
+ name: 'Layout',
+ components: {
+ AppMain,
+ RightPanel,
+ HeadNavbar,
+ Settings,
+ Sidebar,
+ TagsView,
+ Theme
+ },
+ mixins: [ResizeMixin],
+ computed: {
+ ...mapState({
+ sidebar: state => state.app.sidebar,
+ device: state => state.app.device,
+ showSettings: state => state.settings.showSettings,
+ needTagsView: state => state.settings.tagsView,
+ fixedHeader: state => state.settings.fixedHeader,
+ menuInLeft: state => state.settings.menuInLeft
+ }),
+ classObj() {
+ return {
+ hideSidebar: !this.sidebar.opened,
+ openSidebar: this.sidebar.opened,
+ withoutAnimation: this.sidebar.withoutAnimation,
+ mobile: this.device === 'mobile'
+ }
+ }
+ },
+ mounted() {
+ if (Cookies.get('theme')) {
+ this.$refs.theme.theme = Cookies.get('theme')
+ this.$store.dispatch('settings/changeSetting', {
+ key: 'theme',
+ value: Cookies.get('theme')
+ })
+ }
+ },
+ methods: {
+ handleClickOutside() {
+ this.$store.dispatch('app/closeSideBar', { withoutAnimation: false })
+ }
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+ @import "~@/assets/styles/mixin.scss";
+ @import "~@/assets/styles/variables.scss";
+
+ .rapper {
+ @include clearfix;
+ position: relative;
+ height: 100%;
+ // width: 100%;
+
+ &.mobile.openSidebar {
+ position: fixed;
+ top: 0;
+ }
+ }
+
+ .drawer-bg {
+ background: #000;
+ opacity: 0.3;
+ width: 100%;
+ top: 0;
+ height: 100%;
+ position: absolute;
+ z-index: 999;
+ }
+
+ .fixed-header {
+ position: fixed;
+ top: 0;
+ right: 0;
+ z-index: 9;
+ width: calc(100% - #{$sideBarWidth});
+ transition: width 0.28s;
+ padding: 0;
+ }
+
+ .hideSidebar .fixed-header {
+ width: calc(100% - 54px)
+ }
+
+ .mobile .fixed-header {
+ width: 100%;
+ }
+</style>