liuyg
2021-09-02 8a95f7285758a3051f69ac544c68d79999608e5c
首页配置
5 files modified
248 ■■■■■ changed files
src/config/website.js 76 ●●●●● patch | view | raw | blame | history
src/page/index/tags.vue 3 ●●●●● patch | view | raw | blame | history
src/page/index/top/top-menu.vue 108 ●●●● patch | view | raw | blame | history
src/store/getters.js 1 ●●●● patch | view | raw | blame | history
src/store/modules/user.js 60 ●●●● patch | view | raw | blame | history
src/config/website.js
@@ -54,7 +54,7 @@
                    value: '/securityUnit/localCompany',
                    imgs: 'url(/img/gldw.jpg)'
                }, {
                    label: '统计分析',
                    label: '智能分析',
                    value: '/securityAnalysis/index',
                    imgs: 'url(/img/glgz.jpg)'
                },]
@@ -82,6 +82,80 @@
                    value: '/expression/index',
                    imgs: 'url(/img/tongji.jpg)'
                },]
        },
        {
            userName: '未持证保安',
            list: [
                {
                    label: '保安员信息',
                    value: '/securityMan/index',
                    imgs: 'url(/img/yijianbaoj.jpg)'
                }, {
                    label: '派遣记录',
                    value: '/dispatchChildoperableSee/index',
                    imgs: 'url(/img/fangyi.jpg)'
                }, {
                    label: '从业记录',
                    value: '/job/index',
                    imgs: 'url(/img/anjian.jpg)'
                }, {
                    label: '工作汇报',
                    value: '/workreport/workreport',
                    imgs: 'url(/img/tiwen.jpg)'
                }, {
                    label: '表现记录',
                    value: '/expression/index',
                    imgs: 'url(/img/tongji.jpg)'
                },]
        },
        {
            userName: '保安公司管理员',
            list: [
                {
                    label: '智能分析',
                    value: '/securityAnalysis/index',
                    imgs: 'url(/img/glgz.jpg)'
                }, {
                    label: '保安员管理',
                    value: '/securityGuard/index',
                    imgs: 'url(/img/glba.jpg)'
                }, {
                    label: '单位信息',
                    value: '/securityUnitChild/index',
                    imgs: 'url(/img/gldw.jpg)'
                }, {
                    label: '派遣记录',
                    value: '/dispatch/dispatchChildoperable',
                    imgs: 'url(/img/glgj.jpg)'
                }, {
                    label: '通知公告',
                    value: '/desk/index',
                    imgs: 'url(/img/gltz.jpg)'
                },]
        }, {
            userName: '公安管理员',
            list: [
                {
                    label: '智能分析',
                    value: '/securityAnalysis/index',
                    imgs: 'url(/img/glgz.jpg)'
                }, {
                    label: '保安员管理',
                    value: '/securityGuard/index',
                    imgs: 'url(/img/glba.jpg)'
                }, {
                    label: '公司管理',
                    value: '/securityUnit/index',
                    imgs: 'url(/img/gldw.jpg)'
                }, {
                    label: '通知公告',
                    value: '/desk/index',
                    imgs: 'url(/img/gltz.jpg)'
                }, {
                    label: '工作汇报',
                    value: '/workreport/workreply',
                    imgs: 'url(/img/glgj.jpg)'
                }]
        }
    ],
src/page/index/tags.vue
@@ -80,6 +80,7 @@
    this.tagList.forEach((item, index) => {
      if (item.label == "首页" && this.userInfo.role_name == "培训公司管理员") {
        this.tagList.splice(index, 1);
        this.$store.commit("set_hideHome", true);
        // getRoutes().then((res) => {
        //   const data = res.data.data;
        //   var child = {},
@@ -102,6 +103,8 @@
          }
        }
        this.$router.push({ path: path });
      } else {
        this.$store.commit("set_hideHome", false);
      }
    });
  },
src/page/index/top/top-menu.vue
@@ -1,19 +1,26 @@
<template>
  <div class="top-menu">
    <el-menu :default-active="activeIndex"
             mode="horizontal"
             text-color="#333">
      <el-menu-item index="0" @click.native="openHome(itemHome)" key="0">
    <el-menu :default-active="activeIndex" mode="horizontal" text-color="#333">
      <el-menu-item
        index="0"
        @click.native="openHome(itemHome)"
        key="0"
        v-if="!hideHome"
      >
        <template slot="title">
          <i :class="itemHome.source"></i>
          <span>{{generateTitle(itemHome)}}</span>
          <span>{{ generateTitle(itemHome) }}</span>
        </template>
      </el-menu-item>
      <template v-for="(item,index) in items">
        <el-menu-item :index="item.id+''" @click.native="openMenu(item)" :key="index">
      <template v-for="(item, index) in items">
        <el-menu-item
          :index="item.id + ''"
          @click.native="openMenu(item)"
          :key="index"
        >
          <template slot="title">
            <i :class="item.source" style="padding-right: 5px;"></i>
            <span>{{generateTitle(item)}}</span>
            <i :class="item.source" style="padding-right: 5px"></i>
            <span>{{ generateTitle(item) }}</span>
          </template>
        </el-menu-item>
      </template>
@@ -22,48 +29,51 @@
</template>
<script>
  import {mapGetters} from "vuex";
import { mapGetters } from "vuex";
  export default {
    name: "top-menu",
    data() {
      return {
        itemHome: {
          name: '首页',
          source: 'el-icon-menu',
        },
        activeIndex: "0",
        items: [],
      };
export default {
  name: "top-menu",
  data() {
    return {
      itemHome: {
        name: "首页",
        source: "el-icon-menu",
      },
      activeIndex: "0",
      items: [],
    };
  },
  inject: ["index"],
  created() {
    this.getMenu();
  },
  computed: {
    ...mapGetters(["tagCurrent", "menu", "hideHome"]),
  },
  methods: {
    openHome(itemHome) {
      this.index.openMenu(itemHome);
      this.$router.push({
        path: this.$router.$avueRouter.getPath(
          { name: itemHome.name, src: "" },
          {}
        ),
      });
    },
    inject: ["index"],
    created() {
      this.getMenu();
    openMenu(item) {
      this.index.openMenu(item);
    },
    computed: {
      ...mapGetters(["tagCurrent", "menu"])
    getMenu() {
      this.$store.dispatch("GetTopMenu").then((res) => {
        this.items = res;
      });
    },
    methods: {
      openHome(itemHome) {
        this.index.openMenu(itemHome);
        this.$router.push({
          path: this.$router.$avueRouter.getPath({name: itemHome.name, src: ''}, {})
        });
      },
      openMenu(item) {
        this.index.openMenu(item)
      },
      getMenu() {
        this.$store.dispatch("GetTopMenu").then(res => {
          this.items = res;
        });
      },
      generateTitle(item) {
        return this.$router.$avueRouter.generateTitle(
          item.name,
          (item.meta || {}).i18n
        );
      },
    }
  };
    generateTitle(item) {
      return this.$router.$avueRouter.generateTitle(
        item.name,
        (item.meta || {}).i18n
      );
    },
  },
};
</script>
src/store/getters.js
@@ -19,6 +19,7 @@
  roles: state => state.user.roles,
  permission: state => state.user.permission,
  menu: state => state.user.menu,
  hideHome: state => state.user.hideHome,
  menuId: state => state.user.menuId,
  menuAll: state => state.user.menuAll,
  logsList: state => state.logs.logsList,
src/store/modules/user.js
@@ -1,11 +1,11 @@
import {setToken, setRefreshToken, removeToken, removeRefreshToken} from '@/util/auth'
import {Message} from 'element-ui'
import {setStore, getStore} from '@/util/store'
import {isURL, validatenull} from '@/util/validate'
import {deepClone} from '@/util/util'
import { setToken, setRefreshToken, removeToken, removeRefreshToken } from '@/util/auth'
import { Message } from 'element-ui'
import { setStore, getStore } from '@/util/store'
import { isURL, validatenull } from '@/util/validate'
import { deepClone } from '@/util/util'
import website from '@/config/website'
import {loginByUsername, loginBySocial, getUserInfo, logout, refreshToken, getButtons} from '@/api/user'
import {getTopMenu, getRoutes} from '@/api/system/menu'
import { loginByUsername, loginBySocial, getUserInfo, logout, refreshToken, getButtons } from '@/api/user'
import { getTopMenu, getRoutes } from '@/api/system/menu'
import md5 from 'js-md5'
@@ -34,19 +34,20 @@
const user = {
  state: {
    tenantId: getStore({name: 'tenantId'}) || '',
    userInfo: getStore({name: 'userInfo'}) || [],
    permission: getStore({name: 'permission'}) || {},
    tenantId: getStore({ name: 'tenantId' }) || '',
    userInfo: getStore({ name: 'userInfo' }) || [],
    permission: getStore({ name: 'permission' }) || {},
    roles: [],
    menuId: {},
    menu: getStore({name: 'menu'}) || [],
    menuAll: getStore({name: 'menuAll'}) || [],
    token: getStore({name: 'token'}) || '',
    refreshToken: getStore({name: 'refreshToken'}) || '',
    menu: getStore({ name: 'menu' }) || [],
    menuAll: getStore({ name: 'menuAll' }) || [],
    token: getStore({ name: 'token' }) || '',
    refreshToken: getStore({ name: 'refreshToken' }) || '',
    hideHome: false,
  },
  actions: {
    //根据用户名登录
    LoginByUsername({commit}, userInfo) {
    LoginByUsername({ commit }, userInfo) {
      return new Promise((resolve, reject) => {
        loginByUsername(userInfo.tenantId, userInfo.username, md5(userInfo.password), userInfo.type, userInfo.key, userInfo.code).then(res => {
          const data = res.data;
@@ -70,7 +71,7 @@
      })
    },
    //根据手机号登录
    LoginByPhone({commit}, userInfo) {
    LoginByPhone({ commit }, userInfo) {
      return new Promise((resolve) => {
        loginByUsername(userInfo.phone, userInfo.code).then(res => {
          const data = res.data.data;
@@ -82,7 +83,7 @@
      })
    },
    //根据第三方信息登录
    LoginBySocial({commit}, userInfo) {
    LoginBySocial({ commit }, userInfo) {
      return new Promise((resolve) => {
        loginBySocial(userInfo.tenantId, userInfo.source, userInfo.code, userInfo.state).then(res => {
          const data = res.data;
@@ -103,7 +104,7 @@
      })
    },
    //获取用户信息
    GetUserInfo({commit}) {
    GetUserInfo({ commit }) {
      return new Promise((resolve, reject) => {
        getUserInfo().then((res) => {
          const data = res.data.data;
@@ -115,7 +116,7 @@
      })
    },
    //刷新token
    refreshToken({state, commit}) {
    refreshToken({ state, commit }) {
      window.console.log('handle refresh token')
      return new Promise((resolve, reject) => {
        refreshToken(state.refreshToken, state.tenantId).then(res => {
@@ -129,7 +130,7 @@
      })
    },
    // 登出
    LogOut({commit}) {
    LogOut({ commit }) {
      return new Promise((resolve, reject) => {
        logout().then(() => {
          commit('SET_TOKEN', '');
@@ -148,7 +149,7 @@
      })
    },
    //注销session
    FedLogOut({commit}) {
    FedLogOut({ commit }) {
      return new Promise(resolve => {
        commit('SET_TOKEN', '');
        commit('SET_MENU_ALL_NULL', []);
@@ -172,7 +173,7 @@
      })
    },
    //获取系统菜单
    GetMenu({commit, dispatch}, topMenuId) {
    GetMenu({ commit, dispatch }, topMenuId) {
      return new Promise(resolve => {
        getRoutes(topMenuId).then((res) => {
          const data = res.data.data
@@ -188,7 +189,7 @@
      })
    },
    //获取系统按钮
    GetButtons({commit}) {
    GetButtons({ commit }) {
      return new Promise((resolve) => {
        getButtons().then(res => {
          const data = res.data.data;
@@ -199,10 +200,13 @@
    },
  },
  mutations: {
    set_hideHome: (state, val) => {
      state.hideHome = val;
    },
    SET_TOKEN: (state, token) => {
      setToken(token);
      state.token = token;
      setStore({name: 'token', content: state.token})
      setStore({ name: 'token', content: state.token })
    },
    SET_MENU_ID(state, menuId) {
      state.menuId = menuId;
@@ -228,18 +232,18 @@
    SET_REFRESH_TOKEN: (state, refreshToken) => {
      setRefreshToken(refreshToken)
      state.refreshToken = refreshToken;
      setStore({name: 'refreshToken', content: state.refreshToken})
      setStore({ name: 'refreshToken', content: state.refreshToken })
    },
    SET_TENANT_ID: (state, tenantId) => {
      state.tenantId = tenantId;
      setStore({name: 'tenantId', content: state.tenantId})
      setStore({ name: 'tenantId', content: state.tenantId })
    },
    SET_USER_INFO: (state, userInfo) => {
      if (validatenull(userInfo.avatar)) {
        userInfo.avatar = "/img/bg/img-logo.png";
      }
      state.userInfo = userInfo;
      setStore({name: 'userInfo', content: state.userInfo})
      setStore({ name: 'userInfo', content: state.userInfo })
    },
    SET_ROLES: (state, roles) => {
      state.roles = roles;
@@ -266,7 +270,7 @@
      result.forEach(ele => {
        state.permission[ele] = true;
      });
      setStore({name: 'permission', content: state.permission})
      setStore({ name: 'permission', content: state.permission })
    }
  }