Merge branch 'master' into deploy
This commit is contained in:
		@@ -4,15 +4,24 @@
 | 
			
		||||
      <svg-icon class-name="size-icon" icon-class="size" />
 | 
			
		||||
    </div>
 | 
			
		||||
    <el-dropdown-menu slot="dropdown">
 | 
			
		||||
      <el-dropdown-item :disabled="size==='medium'" command="medium">Medium</el-dropdown-item>
 | 
			
		||||
      <el-dropdown-item :disabled="size==='small'" command="small">Small</el-dropdown-item>
 | 
			
		||||
      <el-dropdown-item :disabled="size==='mini'" command="mini">Mini</el-dropdown-item>
 | 
			
		||||
      <el-dropdown-item v-for="item of sizeOptions" :key="item.value" :disabled="size===item.value" :command="item.value">{{
 | 
			
		||||
      item.label }}</el-dropdown-item>
 | 
			
		||||
    </el-dropdown-menu>
 | 
			
		||||
  </el-dropdown>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
export default {
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      sizeOptions: [
 | 
			
		||||
        { label: 'Default', value: 'default' },
 | 
			
		||||
        { label: 'Medium', value: 'medium' },
 | 
			
		||||
        { label: 'Small', value: 'small' },
 | 
			
		||||
        { label: 'Mini', value: 'mini' }
 | 
			
		||||
      ]
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  computed: {
 | 
			
		||||
    size() {
 | 
			
		||||
      return this.$store.getters.size
 | 
			
		||||
 
 | 
			
		||||
@@ -56,23 +56,27 @@ export default {
 | 
			
		||||
      this.width = this.width + 'px'
 | 
			
		||||
      this.isSticky = true
 | 
			
		||||
    },
 | 
			
		||||
    reset() {
 | 
			
		||||
    handleReset() {
 | 
			
		||||
      if (!this.active) {
 | 
			
		||||
        return
 | 
			
		||||
      }
 | 
			
		||||
      this.reset()
 | 
			
		||||
    },
 | 
			
		||||
    reset() {
 | 
			
		||||
      this.position = ''
 | 
			
		||||
      this.width = 'auto'
 | 
			
		||||
      this.active = false
 | 
			
		||||
      this.isSticky = false
 | 
			
		||||
    },
 | 
			
		||||
    handleScroll() {
 | 
			
		||||
      this.width = this.$el.getBoundingClientRect().width
 | 
			
		||||
      const width = this.$el.getBoundingClientRect().width
 | 
			
		||||
      this.width = width || 'auto'
 | 
			
		||||
      const offsetTop = this.$el.getBoundingClientRect().top
 | 
			
		||||
      if (offsetTop < this.stickyTop) {
 | 
			
		||||
        this.sticky()
 | 
			
		||||
        return
 | 
			
		||||
      }
 | 
			
		||||
      this.reset()
 | 
			
		||||
      this.handleReset()
 | 
			
		||||
    },
 | 
			
		||||
    handleReize() {
 | 
			
		||||
      if (this.isSticky) {
 | 
			
		||||
 
 | 
			
		||||
@@ -82,8 +82,7 @@ export default {
 | 
			
		||||
        const reader = new FileReader()
 | 
			
		||||
        reader.onload = e => {
 | 
			
		||||
          const data = e.target.result
 | 
			
		||||
          const fixedData = this.fixData(data)
 | 
			
		||||
          const workbook = XLSX.read(btoa(fixedData), { type: 'base64' })
 | 
			
		||||
          const workbook = XLSX.read(data, { type: 'array' })
 | 
			
		||||
          const firstSheetName = workbook.SheetNames[0]
 | 
			
		||||
          const worksheet = workbook.Sheets[firstSheetName]
 | 
			
		||||
          const header = this.getHeaderRow(worksheet)
 | 
			
		||||
@@ -95,14 +94,6 @@ export default {
 | 
			
		||||
        reader.readAsArrayBuffer(rawFile)
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    fixData(data) {
 | 
			
		||||
      let o = ''
 | 
			
		||||
      let l = 0
 | 
			
		||||
      const w = 10240
 | 
			
		||||
      for (; l < data.byteLength / w; ++l) o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w, l * w + w)))
 | 
			
		||||
      o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w)))
 | 
			
		||||
      return o
 | 
			
		||||
    },
 | 
			
		||||
    getHeaderRow(sheet) {
 | 
			
		||||
      const headers = []
 | 
			
		||||
      const range = XLSX.utils.decode_range(sheet['!ref'])
 | 
			
		||||
 
 | 
			
		||||
@@ -10,8 +10,8 @@ import 'element-ui/lib/theme-chalk/index.css'
 | 
			
		||||
import '@/styles/index.scss' // global css
 | 
			
		||||
 | 
			
		||||
import App from './App'
 | 
			
		||||
import router from './router'
 | 
			
		||||
import store from './store'
 | 
			
		||||
import router from './router'
 | 
			
		||||
 | 
			
		||||
import i18n from './lang' // Internationalization
 | 
			
		||||
import './icons' // icon
 | 
			
		||||
 
 | 
			
		||||
@@ -36,7 +36,7 @@ function filterAsyncRouter(routes, roles) {
 | 
			
		||||
 | 
			
		||||
const permission = {
 | 
			
		||||
  state: {
 | 
			
		||||
    routers: constantRouterMap,
 | 
			
		||||
    routers: [],
 | 
			
		||||
    addRouters: []
 | 
			
		||||
  },
 | 
			
		||||
  mutations: {
 | 
			
		||||
 
 | 
			
		||||
@@ -58,8 +58,26 @@
 | 
			
		||||
      width: 100% !important;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // menu hover
 | 
			
		||||
    .submenu-title-noDropdown,
 | 
			
		||||
    .el-submenu__title {
 | 
			
		||||
      &:hover {
 | 
			
		||||
        background-color: $menuHover !important;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .is-active>.el-submenu__title {
 | 
			
		||||
      color: #f4f4f5 !important;
 | 
			
		||||
      color: $subMenuActiveText !important;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    & .nest-menu .el-submenu>.el-submenu__title,
 | 
			
		||||
    & .el-submenu .el-menu-item {
 | 
			
		||||
      min-width: $sideBarWidth !important;
 | 
			
		||||
      background-color: $subMenuBg !important;
 | 
			
		||||
 | 
			
		||||
      &:hover {
 | 
			
		||||
        background-color: $subMenuHover !important;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@@ -108,16 +126,6 @@
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .sidebar-container .nest-menu .el-submenu>.el-submenu__title,
 | 
			
		||||
  .sidebar-container .el-submenu .el-menu-item {
 | 
			
		||||
    min-width: $sideBarWidth !important;
 | 
			
		||||
    background-color: $subMenuBg !important;
 | 
			
		||||
 | 
			
		||||
    &:hover {
 | 
			
		||||
      background-color: $menuHover !important;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .el-menu--collapse .el-menu .el-submenu {
 | 
			
		||||
    min-width: $sideBarWidth !important;
 | 
			
		||||
  }
 | 
			
		||||
@@ -135,6 +143,7 @@
 | 
			
		||||
 | 
			
		||||
    &.hideSidebar {
 | 
			
		||||
      .sidebar-container {
 | 
			
		||||
        pointer-events: none;
 | 
			
		||||
        transition-duration: 0.3s;
 | 
			
		||||
        transform: translate3d(-$sideBarWidth, 0, 0);
 | 
			
		||||
      }
 | 
			
		||||
@@ -150,10 +159,19 @@
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// when menu collapsed
 | 
			
		||||
.el-menu--vertical {
 | 
			
		||||
  &>.el-menu {
 | 
			
		||||
    .svg-icon {
 | 
			
		||||
      margin-right: 16px;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .nest-menu .el-submenu>.el-submenu__title,
 | 
			
		||||
  .el-menu-item {
 | 
			
		||||
    &:hover {
 | 
			
		||||
      // You can use $subMenuHover
 | 
			
		||||
      background-color: $menuHover !important;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,26 @@ $yellow:#FEC171;
 | 
			
		||||
$panGreen: #30B08F;
 | 
			
		||||
 | 
			
		||||
//sidebar
 | 
			
		||||
$menuText:#bfcbd9;
 | 
			
		||||
$menuActiveText:#409EFF;
 | 
			
		||||
$subMenuActiveText:#f4f4f5; //https://github.com/ElemeFE/element/issues/12951
 | 
			
		||||
 | 
			
		||||
$menuBg:#304156;
 | 
			
		||||
$menuHover:#263445;
 | 
			
		||||
 | 
			
		||||
$subMenuBg:#1f2d3d;
 | 
			
		||||
$menuHover:#001528;
 | 
			
		||||
$subMenuHover:#001528;
 | 
			
		||||
 | 
			
		||||
$sideBarWidth: 180px;
 | 
			
		||||
 | 
			
		||||
// the :export directive is the magic sauce for webpack
 | 
			
		||||
:export {
 | 
			
		||||
  menuText: $menuText;
 | 
			
		||||
  menuActiveText: $menuActiveText;
 | 
			
		||||
  subMenuActiveText: $subMenuActiveText;
 | 
			
		||||
  menuBg: $menuBg;
 | 
			
		||||
  menuHover: $menuHover;
 | 
			
		||||
  subMenuBg: $subMenuBg;
 | 
			
		||||
  subMenuHover: $subMenuHover;
 | 
			
		||||
  sideBarWidth: $sideBarWidth;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,12 @@ export function parseTime(time, cFormat) {
 | 
			
		||||
  if (typeof time === 'object') {
 | 
			
		||||
    date = time
 | 
			
		||||
  } else {
 | 
			
		||||
    if (('' + time).length === 10) time = parseInt(time) * 1000
 | 
			
		||||
    if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
 | 
			
		||||
      time = parseInt(time)
 | 
			
		||||
    }
 | 
			
		||||
    if ((typeof time === 'number') && (time.toString().length === 10)) {
 | 
			
		||||
      time = time * 1000
 | 
			
		||||
    }
 | 
			
		||||
    date = new Date(time)
 | 
			
		||||
  }
 | 
			
		||||
  const formatObj = {
 | 
			
		||||
 
 | 
			
		||||
@@ -4,10 +4,10 @@
 | 
			
		||||
      :show-timeout="200"
 | 
			
		||||
      :default-active="$route.path"
 | 
			
		||||
      :collapse="isCollapse"
 | 
			
		||||
      :background-color="variables.menuBg"
 | 
			
		||||
      :text-color="variables.menuText"
 | 
			
		||||
      :active-text-color="variables.menuActiveText"
 | 
			
		||||
      mode="vertical"
 | 
			
		||||
      background-color="#304156"
 | 
			
		||||
      text-color="#bfcbd9"
 | 
			
		||||
      active-text-color="#409EFF"
 | 
			
		||||
    >
 | 
			
		||||
      <sidebar-item v-for="route in permission_routers" :key="route.path" :item="route" :base-path="route.path"/>
 | 
			
		||||
    </el-menu>
 | 
			
		||||
@@ -17,6 +17,7 @@
 | 
			
		||||
<script>
 | 
			
		||||
import { mapGetters } from 'vuex'
 | 
			
		||||
import SidebarItem from './SidebarItem'
 | 
			
		||||
import variables from '@/styles/variables.scss'
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
  components: { SidebarItem },
 | 
			
		||||
@@ -25,6 +26,9 @@ export default {
 | 
			
		||||
      'permission_routers',
 | 
			
		||||
      'sidebar'
 | 
			
		||||
    ]),
 | 
			
		||||
    variables() {
 | 
			
		||||
      return variables
 | 
			
		||||
    },
 | 
			
		||||
    isCollapse() {
 | 
			
		||||
      return !this.sidebar.opened
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user