支持主题风格配置
This commit is contained in:
		@@ -1,13 +1,47 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="drawer-container">
 | 
			
		||||
    <div>
 | 
			
		||||
      <h3 class="drawer-title">系统布局配置</h3>
 | 
			
		||||
      <div class="setting-drawer-content">
 | 
			
		||||
        <div class="setting-drawer-title">
 | 
			
		||||
          <h3 class="drawer-title">主题风格设置</h3>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="setting-drawer-block-checbox">
 | 
			
		||||
          <div class="setting-drawer-block-checbox-item" @click="handleTheme('theme-dark')">
 | 
			
		||||
            <img src="@/assets/images/dark.svg" alt="dark">
 | 
			
		||||
            <div v-if="sideTheme === 'theme-dark'" class="setting-drawer-block-checbox-selectIcon" style="display: block;">
 | 
			
		||||
              <i aria-label="图标: check" class="anticon anticon-check">
 | 
			
		||||
                <svg viewBox="64 64 896 896" data-icon="check" width="1em" height="1em" :fill="theme" aria-hidden="true"
 | 
			
		||||
                     focusable="false" class="">
 | 
			
		||||
                  <path
 | 
			
		||||
                    d="M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 0 0-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z"/>
 | 
			
		||||
                </svg>
 | 
			
		||||
              </i>
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="setting-drawer-block-checbox-item" @click="handleTheme('theme-light')">
 | 
			
		||||
            <img src="@/assets/images/light.svg" alt="light">
 | 
			
		||||
            <div v-if="sideTheme === 'theme-light'" class="setting-drawer-block-checbox-selectIcon" style="display: block;">
 | 
			
		||||
              <i aria-label="图标: check" class="anticon anticon-check">
 | 
			
		||||
                <svg viewBox="64 64 896 896" data-icon="check" width="1em" height="1em" :fill="theme" aria-hidden="true"
 | 
			
		||||
                     focusable="false" class="">
 | 
			
		||||
                  <path
 | 
			
		||||
                    d="M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 0 0-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z"/>
 | 
			
		||||
                </svg>
 | 
			
		||||
              </i>
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
      <div class="drawer-item">
 | 
			
		||||
        <span>主题颜色</span>
 | 
			
		||||
        <theme-picker style="float: right;height: 26px;margin: -3px 8px 0 0;" @change="themeChange" />
 | 
			
		||||
        <div class="drawer-item">
 | 
			
		||||
          <span>主题颜色</span>
 | 
			
		||||
          <theme-picker style="float: right;height: 26px;margin: -3px 8px 0 0;" @change="themeChange" />
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
      <el-divider/>
 | 
			
		||||
 | 
			
		||||
      <h3 class="drawer-title">系统布局配置</h3>
 | 
			
		||||
 | 
			
		||||
      <div class="drawer-item">
 | 
			
		||||
        <span>开启 Tags-Views</span>
 | 
			
		||||
        <el-switch v-model="tagsView" class="drawer-switch" />
 | 
			
		||||
@@ -36,6 +70,12 @@ export default {
 | 
			
		||||
    return {}
 | 
			
		||||
  },
 | 
			
		||||
  computed: {
 | 
			
		||||
    theme() {
 | 
			
		||||
      return this.$store.state.settings.theme
 | 
			
		||||
    },
 | 
			
		||||
    sideTheme() {
 | 
			
		||||
      return this.$store.state.settings.sideTheme
 | 
			
		||||
    },
 | 
			
		||||
    fixedHeader: {
 | 
			
		||||
      get() {
 | 
			
		||||
        return this.$store.state.settings.fixedHeader
 | 
			
		||||
@@ -76,33 +116,82 @@ export default {
 | 
			
		||||
        key: 'theme',
 | 
			
		||||
        value: val
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    handleTheme(val) {
 | 
			
		||||
      this.$store.dispatch('settings/changeSetting', {
 | 
			
		||||
        key: 'sideTheme',
 | 
			
		||||
        value: val
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style lang="scss" scoped>
 | 
			
		||||
.drawer-container {
 | 
			
		||||
  padding: 24px;
 | 
			
		||||
  font-size: 14px;
 | 
			
		||||
  line-height: 1.5;
 | 
			
		||||
  word-wrap: break-word;
 | 
			
		||||
  .setting-drawer-content {
 | 
			
		||||
    .setting-drawer-title {
 | 
			
		||||
      margin-bottom: 12px;
 | 
			
		||||
      color: rgba(0, 0, 0, .85);
 | 
			
		||||
      font-size: 14px;
 | 
			
		||||
      line-height: 22px;
 | 
			
		||||
      font-weight: bold;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  .drawer-title {
 | 
			
		||||
    margin-bottom: 12px;
 | 
			
		||||
    color: rgba(0, 0, 0, .85);
 | 
			
		||||
    .setting-drawer-block-checbox {
 | 
			
		||||
      display: flex;
 | 
			
		||||
      justify-content: flex-start;
 | 
			
		||||
      align-items: center;
 | 
			
		||||
      margin-top: 10px;
 | 
			
		||||
      margin-bottom: 20px;
 | 
			
		||||
 | 
			
		||||
      .setting-drawer-block-checbox-item {
 | 
			
		||||
        position: relative;
 | 
			
		||||
        margin-right: 16px;
 | 
			
		||||
        border-radius: 2px;
 | 
			
		||||
        cursor: pointer;
 | 
			
		||||
 | 
			
		||||
        img {
 | 
			
		||||
          width: 48px;
 | 
			
		||||
          height: 48px;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        .setting-drawer-block-checbox-selectIcon {
 | 
			
		||||
          position: absolute;
 | 
			
		||||
          top: 0;
 | 
			
		||||
          right: 0;
 | 
			
		||||
          width: 100%;
 | 
			
		||||
          height: 100%;
 | 
			
		||||
          padding-top: 15px;
 | 
			
		||||
          padding-left: 24px;
 | 
			
		||||
          color: #1890ff;
 | 
			
		||||
          font-weight: 700;
 | 
			
		||||
          font-size: 14px;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .drawer-container {
 | 
			
		||||
    padding: 24px;
 | 
			
		||||
    font-size: 14px;
 | 
			
		||||
    line-height: 22px;
 | 
			
		||||
  }
 | 
			
		||||
    line-height: 1.5;
 | 
			
		||||
    word-wrap: break-word;
 | 
			
		||||
 | 
			
		||||
  .drawer-item {
 | 
			
		||||
    color: rgba(0, 0, 0, .65);
 | 
			
		||||
    font-size: 14px;
 | 
			
		||||
    padding: 12px 0;
 | 
			
		||||
  }
 | 
			
		||||
    .drawer-title {
 | 
			
		||||
      margin-bottom: 12px;
 | 
			
		||||
      color: rgba(0, 0, 0, .85);
 | 
			
		||||
      font-size: 14px;
 | 
			
		||||
      line-height: 22px;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  .drawer-switch {
 | 
			
		||||
    float: right
 | 
			
		||||
    .drawer-item {
 | 
			
		||||
      color: rgba(0, 0, 0, .65);
 | 
			
		||||
      font-size: 14px;
 | 
			
		||||
      padding: 12px 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .drawer-switch {
 | 
			
		||||
      float: right
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,13 +1,13 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="sidebar-logo-container" :class="{'collapse':collapse}">
 | 
			
		||||
  <div class="sidebar-logo-container" :class="{'collapse':collapse}" :style="{ backgroundColor: sideTheme === 'theme-dark' ? variables.menuBg : variables.menuLightBg }">
 | 
			
		||||
    <transition name="sidebarLogoFade">
 | 
			
		||||
      <router-link v-if="collapse" key="collapse" class="sidebar-logo-link" to="/">
 | 
			
		||||
        <img v-if="logo" :src="logo" class="sidebar-logo">
 | 
			
		||||
        <h1 v-else class="sidebar-title">{{ title }} </h1>
 | 
			
		||||
        <h1 v-else class="sidebar-title" :style="{ color: sideTheme === 'theme-dark' ? variables.sidebarTitle : variables.sidebarLightTitle }">{{ title }} </h1>
 | 
			
		||||
      </router-link>
 | 
			
		||||
      <router-link v-else key="expand" class="sidebar-logo-link" to="/">
 | 
			
		||||
        <img v-if="logo" :src="logo" class="sidebar-logo">
 | 
			
		||||
        <h1 class="sidebar-title">{{ title }} </h1>
 | 
			
		||||
        <h1 class="sidebar-title" :style="{ color: sideTheme === 'theme-dark' ? variables.sidebarTitle : variables.sidebarLightTitle }">{{ title }} </h1>
 | 
			
		||||
      </router-link>
 | 
			
		||||
    </transition>
 | 
			
		||||
  </div>
 | 
			
		||||
@@ -15,6 +15,7 @@
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import logoImg from '@/assets/logo/logo.png'
 | 
			
		||||
import variables from '@/assets/styles/variables.scss'
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'SidebarLogo',
 | 
			
		||||
@@ -24,6 +25,14 @@ export default {
 | 
			
		||||
      required: true
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  computed: {
 | 
			
		||||
    variables() {
 | 
			
		||||
      return variables;
 | 
			
		||||
    },
 | 
			
		||||
	sideTheme() {
 | 
			
		||||
      return this.$store.state.settings.sideTheme
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      title: '若依管理系统',
 | 
			
		||||
 
 | 
			
		||||
@@ -56,6 +56,9 @@ export default {
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    hasOneShowingChild(children = [], parent) {
 | 
			
		||||
      if (!children) {
 | 
			
		||||
        children = [];
 | 
			
		||||
      }
 | 
			
		||||
      const showingChildren = children.filter(item => {
 | 
			
		||||
        if (item.hidden) {
 | 
			
		||||
          return false
 | 
			
		||||
 
 | 
			
		||||
@@ -1,12 +1,12 @@
 | 
			
		||||
<template>
 | 
			
		||||
    <div :class="{'has-logo':showLogo}">
 | 
			
		||||
    <div :class="{'has-logo':showLogo}" :style="{ backgroundColor: settings.sideTheme === 'theme-dark' ? variables.menuBg : variables.menuLightBg }">
 | 
			
		||||
        <logo v-if="showLogo" :collapse="isCollapse" />
 | 
			
		||||
        <el-scrollbar wrap-class="scrollbar-wrapper">
 | 
			
		||||
        <el-scrollbar :class="settings.sideTheme" wrap-class="scrollbar-wrapper">
 | 
			
		||||
            <el-menu
 | 
			
		||||
                :default-active="activeMenu"
 | 
			
		||||
                :collapse="isCollapse"
 | 
			
		||||
                :background-color="variables.menuBg"
 | 
			
		||||
                :text-color="variables.menuText"
 | 
			
		||||
                :background-color="settings.sideTheme === 'theme-dark' ? variables.menuBg : variables.menuLightBg"
 | 
			
		||||
                :text-color="settings.sideTheme === 'theme-dark' ? variables.menuText : 'rgba(0,0,0,.65)'"
 | 
			
		||||
                :unique-opened="true"
 | 
			
		||||
                :active-text-color="settings.theme"
 | 
			
		||||
                :collapse-transition="false"
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user