管道基础大数据平台系统开发-【前端】-新系統界面
Surpriseplus
2023-02-28 1b1ed68312363574ba3170aa4cb777fbd1ec25da
运维管理菜单修改
已添加3个文件
已修改4个文件
1129 ■■■■■ 文件已修改
src/components/mapol.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/index.js 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/datamanage/projectManage.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/maintenance/empowerController.vue 321 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/maintenance/opexController.vue 321 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/maintenance/parameterConfiguration.vue 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/maintenance/systemController.vue 321 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/mapol.vue
@@ -93,6 +93,7 @@
    });
  },
  methods: {
    init2DMap() {
      var vectorLayer = new TileLayer({
        source: new XYZ({
src/router/index.js
@@ -51,7 +51,9 @@
import bankController from '../views/datamanage/bankController.vue';//数据库管理
import projectController from '../views/datamanage/projectController.vue';//项目管理
import systemController from '@/views/maintenance/systemController.vue';//系统管理
import empowerController from '@/views/maintenance/empowerController.vue';//授权管理
import opexController from '@/views/maintenance/opexController.vue';//运维监控
//包二
import WareInspection from '@/views/PackageTwo/WareInspection.vue'; //数据质检-入库质检
@@ -119,6 +121,33 @@
        },
      },
      {
        path: '/systemController',
        component: systemController,
        name: 'systemController',
        meta: {
          title: '系统管理',
          requireAuth: true, // æ ‡è¯†è¯¥è·¯ç”±æ˜¯å¦éœ€è¦ç™»å½•
        },
      },
      {
        path: '/empowerController',
        component: empowerController,
        name: 'empowerController',
        meta: {
          title: '授权管理',
          requireAuth: true, // æ ‡è¯†è¯¥è·¯ç”±æ˜¯å¦éœ€è¦ç™»å½•
        },
      },
      {
        path: '/opexController',
        component: opexController,
        name: 'opexController',
        meta: {
          title: '运维监控',
          requireAuth: true, // æ ‡è¯†è¯¥è·¯ç”±æ˜¯å¦éœ€è¦ç™»å½•
        },
      },
      {
        path: '/bankController',
        component: bankController,
        name: 'bankController',
src/views/datamanage/projectManage.vue
@@ -1,5 +1,5 @@
<template>
  <div class="verSionBox">
  <div class="verSionBox  ">
    <My-bread :list="[
        `${$t('dataManage.dataManage')}`,
        `${$t('dataManage.projectManage')}`,
src/views/maintenance/empowerController.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,321 @@
<template>
  <div class="contentBox">
    <div
      class="box"
      ref="box"
    >
      <div class="left box_div">
        <el-menu
          :default-active="activeIndex"
          background-color="transparent"
          @select="handleselect"
        >
          <customElMenu :menuData="menuList"></customElMenu>
        </el-menu>
      </div>
      <div
        class="resize"
        title="收缩侧边栏"
      >
        â‹®
      </div>
      <div class="mid box_div">
        <menu-settings v-if="setMenuFlag == 'menuSettings'"></menu-settings>
        <user-management v-if="setMenuFlag == 'userInfoManage'"></user-management>
        <org-manage v-if="setMenuFlag == 'orgManage'"></org-manage>
        <resource-manage v-if="setMenuFlag == 'resourceManage'"></resource-manage>
        <role-manage v-if="setMenuFlag == 'roleManage'"></role-manage>
        <authority-manage v-if="setMenuFlag == 'authorityManage'"></authority-manage>
        <user-role-authorization v-if="setMenuFlag == 'userRoleAuthorization'"></user-role-authorization>
        <menu-role-authorization v-if="setMenuFlag == 'menuRoleAuthorization'"></menu-role-authorization>
        <role-menu-authorization v-if="setMenuFlag == 'roleMenuAuthorization'">
        </role-menu-authorization>
        <role-res-authorization v-if="setMenuFlag == 'roleResAuthorization'"></role-res-authorization>
        <log-log v-if="setMenuFlag == 'logLog'"> </log-log>
        <operation-log v-if="setMenuFlag == 'operationLog'"></operation-log>
        <eventlog-manage v-if="setMenuFlag == 'eventlogManage'"></eventlog-manage>
        <tokentool v-if="setMenuFlag == 'tokentool'"></tokentool>
        <blackwhite-list v-if="setMenuFlag == 'blackwhiteList'"></blackwhite-list>
        <database-monitoring v-if="setMenuFlag == 'dataIfream'"></database-monitoring>
        <system-monitoring v-if="setMenuFlag == 'systemMonitoring'"></system-monitoring>
        <parameter-configuration v-if="setMenuFlag == 'parameterConfiguration'"></parameter-configuration>
        <downlog v-if="setMenuFlag == 'downlog'"></downlog>
        <template-manage v-if="setMenuFlag == 'templateManage'"></template-manage>
        <data-statistics v-if="setMenuFlag == 'dataStatistics'"></data-statistics>
      </div>
    </div>
  </div>
</template>
<script>
import menuSettings from '@/views/maintenance/menuSettings.vue'; //菜单管理
import userManagement from '@/views/maintenance/userManagement.vue'; //用户管理
import orgManage from '@/views/userManage/orgManage.vue'; //单位管理
import resourceManage from '@/views/userManage/resourceManage.vue'; //资源管理
import roleManage from '@/views/userManage/roleManage.vue'; //角色管理
import authorityManage from '@/views/userManage/authorityManage.vue'; //权限管理
import userRoleAuthorization from '@/views/AuthorizationManagement/userRoleAuthorization.vue'; //用户角色授权
import menuRoleAuthorization from '@/views/AuthorizationManagement/menuRoleAuthorization.vue'; //菜单权限授权
import roleMenuAuthorization from '@/views/AuthorizationManagement/roleMenuAuthorization.vue'; //角色菜单授权
import roleResAuthorization from '@/views/AuthorizationManagement/roleResAuthorization.vue'; //角色资源授权
import logLog from '@/views/maintenance/logLog.vue'; //登录日志
import operationLog from '@/views/maintenance/operationLog.vue'; //操作日志
import eventlogManage from '@/views/maintenance/eventlogManage.vue'; //资源日志
import tokentool from '@/views/maintenance/tokentool.vue'; //令牌管理
import blackwhiteList from '@/views/maintenance/blackwhiteList.vue'; //黑白名单
import databaseMonitoring from '@/views/maintenance/databaseMonitoring.vue'; //数据库监控
import systemMonitoring from '@/views/maintenance/systemMonitoring.vue'; //系统监控
import parameterConfiguration from '@/views/maintenance/parameterConfiguration.vue'; //系统配置
import downlog from '@/views/maintenance/downlog.vue'; //下载日志
import templateManage from '@/views/userManage/templateManage.vue'//模板管理
import { selectMenuRecursive, queryMenuTree, getPerms, sign_insertOpLog } from '../../api/api';
import customElMenu from '../../components/customElMenu.vue';
import dataStatistics from '@/views/datamanage/dataStatistics.vue'; //数据统计
export default {
  components: {
    menuSettings,
    userManagement,
    orgManage,
    resourceManage,
    roleManage,
    authorityManage,
    userRoleAuthorization,
    menuRoleAuthorization,
    roleMenuAuthorization,
    roleResAuthorization,
    logLog,
    operationLog,
    eventlogManage,
    tokentool,
    blackwhiteList,
    databaseMonitoring,
    systemMonitoring,
    parameterConfiguration,
    customElMenu,
    downlog,
    templateManage,
    dataStatistics
  },
  data() {
    return {
      setMenuFlag: '   ',
      activeIndex: ' ',
      oriData: [], //原始树数据
      dirData: [], //el树数据
      newData: [], //拖动后数据
      lang: 'zh',
      menuList: [],
      editTitle: '',
      showPopover: false,
      showEditInfoWrapper: false,
      showEdit: false,
      editMenu: false,
      editCatalogue: false,
      editUnit: false,
      itemdetail: {},
      formLabelWidth: '70px',
      m1: null,
      menuId: null,
    };
  },
  created() { },
  mounted() {
    this.getTreeData();
    //左右拖動
    this.dragControllerDiv();
  },
  methods: {
    //左右拖動
    dragControllerDiv: function () {
      var resize = document.getElementsByClassName('resize');
      var left = document.getElementsByClassName('left');
      var mid = document.getElementsByClassName('mid');
      var box = document.getElementsByClassName('box');
      for (let i = 0; i < resize.length; i++) {
        // é¼ æ ‡æŒ‰ä¸‹äº‹ä»¶
        resize[i].onmousedown = function (e) {
          //颜色改变提醒
          resize[i].style.background = '#818181';
          var startX = e.clientX;
          resize[i].left = resize[i].offsetLeft;
          // é¼ æ ‡æ‹–动事件
          document.onmousemove = function (e) {
            var endX = e.clientX;
            var moveLen = resize[i].left + (endX - startX); // ï¼ˆendx-startx)=移动的距离。resize[i].left+移动的距离=左边区域最后的宽度
            var maxT = box[i].clientWidth - resize[i].offsetWidth; // å®¹å™¨å®½åº¦ - å·¦è¾¹åŒºåŸŸçš„宽度 = å³è¾¹åŒºåŸŸçš„宽度
            if (moveLen < 205) moveLen = 205; // å·¦è¾¹åŒºåŸŸçš„æœ€å°å®½åº¦ä¸º32px
            if (moveLen > maxT - 300) moveLen = maxT - 300; //右边区域最小宽度为150px
            resize[i].style.left = moveLen; // è®¾ç½®å·¦ä¾§åŒºåŸŸçš„宽度
            for (let j = 0; j < left.length; j++) {
              left[j].style.width = moveLen + 'px';
              mid[j].style.width = (box[i].clientWidth - moveLen - 10) + 'px';
            }
          };
          // é¼ æ ‡æ¾å¼€äº‹ä»¶
          document.onmouseup = function (evt) {
            //颜色恢复
            resize[i].style.background = '#d6d6d6';
            document.onmousemove = null;
            document.onmouseup = null;
            resize[i].releaseCapture && resize[i].releaseCapture(); //当你不在需要继续获得鼠标消息就要应该调用ReleaseCapture()释放掉
          };
          resize[i].setCapture && resize[i].setCapture(); //该函数在属于当前线程的指定窗口里设置鼠标捕获
          return false;
        };
      }
    },
    async getCookies() {
      var boolean = this.getTimeCookies();
      if (boolean != true) {
        this.$router.push('/login');
        return;
      }
      if (this.$store.state.permsEntity.length == 0) {
        const data = await getPerms();
        this.$store.state.permsEntity = data.result;
      }
      var store = this.menuList[0];
      this.m1 = store.cnName;
      this.setViewController(store);
    },
    getTimeCookies() {
      var time1 = new Date(JSON.parse(localStorage.getItem('LFToken')).time);
      var time2 = new Date();
      if (time2 > time1) {
        return false;
      } else {
        return true;
      }
    },
    //获取树
    async getTreeData() {
      const data = await queryMenuTree();
      let menuLists = data.result.filter((value) => {
        return value.url == '/empowerController';
      });
      this.menuId = menuLists[0].id
      const res = await selectMenuRecursive({ id: menuLists[0].id });
      if (res.code == 200) {
        if (res.result.length != 0) {
          let menuList = res.result.filter((value) => {
            return value.type == 1;
          })
            .filter(value => {
              return value.isShow == 1;
            });
          this.menuList = this.treeData(menuList);
          this.getCookies();
          const hanleselectmochaitmo = sessionStorage.getItem('hanleselectmochaitmo')
          if (hanleselectmochaitmo) {
            this.$nextTick(function () {
              this.handleselecttwo(JSON.parse(hanleselectmochaitmo).url, JSON.parse(hanleselectmochaitmo))
              this.setViewController(JSON.parse(hanleselectmochaitmo))
            })
          }
          //
        } else {
          alert('暂无菜单栏数据');
        }
      } else {
        console.log('接口报错');
      }
      // this.treeList = this.treeData(data.result);
    },
    async signInsertOpLog(m1, m2) {
      var obj = {
        m1: m1,
        m2: m2,
      }
      const data = await sign_insertOpLog(obj);
    },
    setViewController(res) {
      if (res == null) {
        return;
      }
      if (res.children != null) {
        this.setViewController(res.children[0]);
      } else {
        this.$store.state.currentPerms = res.perms;
        this.signInsertOpLog(this.m1, res.cnName)
        this.setMenuFlag = res.url;
        this.activeIndex = res.url;
      }
    },
    treeData(source) {
      let cloneData = JSON.parse(JSON.stringify(source)); // å¯¹æºæ•°æ®æ·±åº¦å…‹éš†
      // console.log(cloneData);
      if (cloneData.length != 0) {
        return cloneData.filter((father) => {
          // å¾ªçŽ¯æ‰€æœ‰é¡¹
          let branchArr = cloneData.filter((child) => father.id == child.pid); // å¯¹æ¯”ID,分别上下级菜单,并返回数据
          branchArr.length > 0 ? (father.children = branchArr) : ''; // ç»™çˆ¶çº§æ·»åŠ ä¸€ä¸ªchildren属性,并赋值
          // å±žäºŽåŒä¸€å¯¹è±¡é—®é¢˜ï¼Œä¾‹å¦‚:令 a=b、c=1 ï¼Œç„¶åŽå†ä»¤ b.c=c ï¼Œ é‚£ä¹ˆ a.c=b.c=c=1 ï¼›åŒç†ï¼ŒåŽç»­ä»¤ c.d=2 ,那么 a.c.d ä¹Ÿæ˜¯=2;
          // ç”±æ­¤å¾ªçŽ¯å¤šæ¬¡åŽï¼Œå°±èƒ½å½¢æˆç›¸åº”çš„æ ‘å½¢æ•°æ®ç»“æž„
          return father.pid == this.menuId; // è¿”回一级菜单
        });
      } else {
        alert('暂无菜单栏数据');
      }
    },
    handleselect(index, indexPath, e) {
      this.getTimeCookies();
      this.signInsertOpLog(this.m1, e.$attrs.perms.cnName)
      const a = JSON.stringify(e.$attrs.perms)
      sessionStorage.setItem('hanleselectmochaitmo', a)
      var data = e.$attrs.perms;
      this.$store.state.currentPerms = data.perms;
      var index = data.url;
      if (index != null) {
        if (index.indexOf('http') != -1) {
          this.$store.commit('getIframe', data.url);
          index = 'dataIfream';
        }
      }
      this.setMenuFlag = index;
    },
    handleselecttwo(index, e) {
      this.getTimeCookies();
      const a = JSON.stringify(e)
      sessionStorage.setItem('hanleselectmochaitmo', a)
      var data = e;
      this.$store.state.currentPerms = data.perms;
      var index = data.url;
      if (index != null) {
        if (index.indexOf('http') != -1) {
          this.$store.commit('getIframe', data.url);
          index = 'dataIfream';
        }
      }
      this.setMenuFlag = index;
    },
  },
};
</script>
src/views/maintenance/opexController.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,321 @@
<template>
  <div class="contentBox">
    <div
      class="box"
      ref="box"
    >
      <div class="left box_div">
        <el-menu
          :default-active="activeIndex"
          background-color="transparent"
          @select="handleselect"
        >
          <customElMenu :menuData="menuList"></customElMenu>
        </el-menu>
      </div>
      <div
        class="resize"
        title="收缩侧边栏"
      >
        â‹®
      </div>
      <div class="mid box_div">
        <menu-settings v-if="setMenuFlag == 'menuSettings'"></menu-settings>
        <user-management v-if="setMenuFlag == 'userInfoManage'"></user-management>
        <org-manage v-if="setMenuFlag == 'orgManage'"></org-manage>
        <resource-manage v-if="setMenuFlag == 'resourceManage'"></resource-manage>
        <role-manage v-if="setMenuFlag == 'roleManage'"></role-manage>
        <authority-manage v-if="setMenuFlag == 'authorityManage'"></authority-manage>
        <user-role-authorization v-if="setMenuFlag == 'userRoleAuthorization'"></user-role-authorization>
        <menu-role-authorization v-if="setMenuFlag == 'menuRoleAuthorization'"></menu-role-authorization>
        <role-menu-authorization v-if="setMenuFlag == 'roleMenuAuthorization'">
        </role-menu-authorization>
        <role-res-authorization v-if="setMenuFlag == 'roleResAuthorization'"></role-res-authorization>
        <log-log v-if="setMenuFlag == 'logLog'"> </log-log>
        <operation-log v-if="setMenuFlag == 'operationLog'"></operation-log>
        <eventlog-manage v-if="setMenuFlag == 'eventlogManage'"></eventlog-manage>
        <tokentool v-if="setMenuFlag == 'tokentool'"></tokentool>
        <blackwhite-list v-if="setMenuFlag == 'blackwhiteList'"></blackwhite-list>
        <database-monitoring v-if="setMenuFlag == 'dataIfream'"></database-monitoring>
        <system-monitoring v-if="setMenuFlag == 'systemMonitoring'"></system-monitoring>
        <parameter-configuration v-if="setMenuFlag == 'parameterConfiguration'"></parameter-configuration>
        <downlog v-if="setMenuFlag == 'downlog'"></downlog>
        <template-manage v-if="setMenuFlag == 'templateManage'"></template-manage>
        <data-statistics v-if="setMenuFlag == 'dataStatistics'"></data-statistics>
      </div>
    </div>
  </div>
</template>
<script>
import menuSettings from '@/views/maintenance/menuSettings.vue'; //菜单管理
import userManagement from '@/views/maintenance/userManagement.vue'; //用户管理
import orgManage from '@/views/userManage/orgManage.vue'; //单位管理
import resourceManage from '@/views/userManage/resourceManage.vue'; //资源管理
import roleManage from '@/views/userManage/roleManage.vue'; //角色管理
import authorityManage from '@/views/userManage/authorityManage.vue'; //权限管理
import userRoleAuthorization from '@/views/AuthorizationManagement/userRoleAuthorization.vue'; //用户角色授权
import menuRoleAuthorization from '@/views/AuthorizationManagement/menuRoleAuthorization.vue'; //菜单权限授权
import roleMenuAuthorization from '@/views/AuthorizationManagement/roleMenuAuthorization.vue'; //角色菜单授权
import roleResAuthorization from '@/views/AuthorizationManagement/roleResAuthorization.vue'; //角色资源授权
import logLog from '@/views/maintenance/logLog.vue'; //登录日志
import operationLog from '@/views/maintenance/operationLog.vue'; //操作日志
import eventlogManage from '@/views/maintenance/eventlogManage.vue'; //资源日志
import tokentool from '@/views/maintenance/tokentool.vue'; //令牌管理
import blackwhiteList from '@/views/maintenance/blackwhiteList.vue'; //黑白名单
import databaseMonitoring from '@/views/maintenance/databaseMonitoring.vue'; //数据库监控
import systemMonitoring from '@/views/maintenance/systemMonitoring.vue'; //系统监控
import parameterConfiguration from '@/views/maintenance/parameterConfiguration.vue'; //系统配置
import downlog from '@/views/maintenance/downlog.vue'; //下载日志
import templateManage from '@/views/userManage/templateManage.vue'//模板管理
import { selectMenuRecursive, queryMenuTree, getPerms, sign_insertOpLog } from '../../api/api';
import customElMenu from '../../components/customElMenu.vue';
import dataStatistics from '@/views/datamanage/dataStatistics.vue'; //数据统计
export default {
  components: {
    menuSettings,
    userManagement,
    orgManage,
    resourceManage,
    roleManage,
    authorityManage,
    userRoleAuthorization,
    menuRoleAuthorization,
    roleMenuAuthorization,
    roleResAuthorization,
    logLog,
    operationLog,
    eventlogManage,
    tokentool,
    blackwhiteList,
    databaseMonitoring,
    systemMonitoring,
    parameterConfiguration,
    customElMenu,
    downlog,
    templateManage,
    dataStatistics
  },
  data() {
    return {
      setMenuFlag: '   ',
      activeIndex: ' ',
      oriData: [], //原始树数据
      dirData: [], //el树数据
      newData: [], //拖动后数据
      lang: 'zh',
      menuList: [],
      editTitle: '',
      showPopover: false,
      showEditInfoWrapper: false,
      showEdit: false,
      editMenu: false,
      editCatalogue: false,
      editUnit: false,
      itemdetail: {},
      formLabelWidth: '70px',
      m1: null,
      menuId: null
    };
  },
  created() { },
  mounted() {
    this.getTreeData();
    //左右拖動
    this.dragControllerDiv();
  },
  methods: {
    //左右拖動
    dragControllerDiv: function () {
      var resize = document.getElementsByClassName('resize');
      var left = document.getElementsByClassName('left');
      var mid = document.getElementsByClassName('mid');
      var box = document.getElementsByClassName('box');
      for (let i = 0; i < resize.length; i++) {
        // é¼ æ ‡æŒ‰ä¸‹äº‹ä»¶
        resize[i].onmousedown = function (e) {
          //颜色改变提醒
          resize[i].style.background = '#818181';
          var startX = e.clientX;
          resize[i].left = resize[i].offsetLeft;
          // é¼ æ ‡æ‹–动事件
          document.onmousemove = function (e) {
            var endX = e.clientX;
            var moveLen = resize[i].left + (endX - startX); // ï¼ˆendx-startx)=移动的距离。resize[i].left+移动的距离=左边区域最后的宽度
            var maxT = box[i].clientWidth - resize[i].offsetWidth; // å®¹å™¨å®½åº¦ - å·¦è¾¹åŒºåŸŸçš„宽度 = å³è¾¹åŒºåŸŸçš„宽度
            if (moveLen < 205) moveLen = 205; // å·¦è¾¹åŒºåŸŸçš„æœ€å°å®½åº¦ä¸º32px
            if (moveLen > maxT - 300) moveLen = maxT - 300; //右边区域最小宽度为150px
            resize[i].style.left = moveLen; // è®¾ç½®å·¦ä¾§åŒºåŸŸçš„宽度
            for (let j = 0; j < left.length; j++) {
              left[j].style.width = moveLen + 'px';
              mid[j].style.width = (box[i].clientWidth - moveLen - 10) + 'px';
            }
          };
          // é¼ æ ‡æ¾å¼€äº‹ä»¶
          document.onmouseup = function (evt) {
            //颜色恢复
            resize[i].style.background = '#d6d6d6';
            document.onmousemove = null;
            document.onmouseup = null;
            resize[i].releaseCapture && resize[i].releaseCapture(); //当你不在需要继续获得鼠标消息就要应该调用ReleaseCapture()释放掉
          };
          resize[i].setCapture && resize[i].setCapture(); //该函数在属于当前线程的指定窗口里设置鼠标捕获
          return false;
        };
      }
    },
    async getCookies() {
      var boolean = this.getTimeCookies();
      if (boolean != true) {
        this.$router.push('/login');
        return;
      }
      if (this.$store.state.permsEntity.length == 0) {
        const data = await getPerms();
        this.$store.state.permsEntity = data.result;
      }
      var store = this.menuList[0];
      this.m1 = store.cnName;
      this.setViewController(store);
    },
    getTimeCookies() {
      var time1 = new Date(JSON.parse(localStorage.getItem('LFToken')).time);
      var time2 = new Date();
      if (time2 > time1) {
        return false;
      } else {
        return true;
      }
    },
    //获取树
    async getTreeData() {
      const data = await queryMenuTree();
      let menuLists = data.result.filter((value) => {
        return value.url == '/opexController';
      });
      this.menuId = menuLists[0].id
      const res = await selectMenuRecursive({ id: menuLists[0].id });
      if (res.code == 200) {
        if (res.result.length != 0) {
          let menuList = res.result.filter((value) => {
            return value.type == 1;
          })
            .filter(value => {
              return value.isShow == 1;
            });
          this.menuList = this.treeData(menuList);
          this.getCookies();
          const hanleselectmochaitmo = sessionStorage.getItem('hanleselectmochaitmo')
          if (hanleselectmochaitmo) {
            this.$nextTick(function () {
              this.handleselecttwo(JSON.parse(hanleselectmochaitmo).url, JSON.parse(hanleselectmochaitmo))
              this.setViewController(JSON.parse(hanleselectmochaitmo))
            })
          }
          //
        } else {
          alert('暂无菜单栏数据');
        }
      } else {
        console.log('接口报错');
      }
      // this.treeList = this.treeData(data.result);
    },
    async signInsertOpLog(m1, m2) {
      var obj = {
        m1: m1,
        m2: m2,
      }
      const data = await sign_insertOpLog(obj);
    },
    setViewController(res) {
      if (res == null) {
        return;
      }
      if (res.children != null) {
        this.setViewController(res.children[0]);
      } else {
        this.$store.state.currentPerms = res.perms;
        this.signInsertOpLog(this.m1, res.cnName)
        this.setMenuFlag = res.url;
        this.activeIndex = res.url;
      }
    },
    treeData(source) {
      let cloneData = JSON.parse(JSON.stringify(source)); // å¯¹æºæ•°æ®æ·±åº¦å…‹éš†
      // console.log(cloneData);
      if (cloneData.length != 0) {
        return cloneData.filter((father) => {
          // å¾ªçŽ¯æ‰€æœ‰é¡¹
          let branchArr = cloneData.filter((child) => father.id == child.pid); // å¯¹æ¯”ID,分别上下级菜单,并返回数据
          branchArr.length > 0 ? (father.children = branchArr) : ''; // ç»™çˆ¶çº§æ·»åŠ ä¸€ä¸ªchildren属性,并赋值
          // å±žäºŽåŒä¸€å¯¹è±¡é—®é¢˜ï¼Œä¾‹å¦‚:令 a=b、c=1 ï¼Œç„¶åŽå†ä»¤ b.c=c ï¼Œ é‚£ä¹ˆ a.c=b.c=c=1 ï¼›åŒç†ï¼ŒåŽç»­ä»¤ c.d=2 ,那么 a.c.d ä¹Ÿæ˜¯=2;
          // ç”±æ­¤å¾ªçŽ¯å¤šæ¬¡åŽï¼Œå°±èƒ½å½¢æˆç›¸åº”çš„æ ‘å½¢æ•°æ®ç»“æž„
          return father.pid == this.menuId; // è¿”回一级菜单
        });
      } else {
        alert('暂无菜单栏数据');
      }
    },
    handleselect(index, indexPath, e) {
      this.getTimeCookies();
      this.signInsertOpLog(this.m1, e.$attrs.perms.cnName)
      const a = JSON.stringify(e.$attrs.perms)
      sessionStorage.setItem('hanleselectmochaitmo', a)
      var data = e.$attrs.perms;
      this.$store.state.currentPerms = data.perms;
      var index = data.url;
      if (index != null) {
        if (index.indexOf('http') != -1) {
          this.$store.commit('getIframe', data.url);
          index = 'dataIfream';
        }
      }
      this.setMenuFlag = index;
    },
    handleselecttwo(index, e) {
      this.getTimeCookies();
      const a = JSON.stringify(e)
      sessionStorage.setItem('hanleselectmochaitmo', a)
      var data = e;
      this.$store.state.currentPerms = data.perms;
      var index = data.url;
      if (index != null) {
        if (index.indexOf('http') != -1) {
          this.$store.commit('getIframe', data.url);
          index = 'dataIfream';
        }
      }
      this.setMenuFlag = index;
    },
  },
};
</script>
src/views/maintenance/parameterConfiguration.vue
@@ -1,13 +1,14 @@
<template>
  <div class="parameterConfiguration_box">
    <My-bread
      :list="[
  <div class="parameterConfiguration_box box_div">
    <My-bread :list="[
        `${$t('operatManage.operatManage')}`,
        `${$t('operatManage.systemLayout')}`,
      ]"
    ></My-bread>
      ]"></My-bread>
    <el-divider />
    <div class="table_box" :style="styleVar">
    <div
      class="table_box"
      :style="styleVar"
    >
      <el-table
        ref="filterTable"
        :data="tableData"
@@ -62,12 +63,14 @@
              type="warning"
              plain
              size="small"
              >{{ $t("common.edit") }}</el-button
            >
            >{{ $t("common.edit") }}</el-button>
          </template>
        </el-table-column>
      </el-table>
      <div class="pagination_box" style="margin-top: 10px">
      <div
        class="pagination_box"
        style="margin-top: 10px"
      >
        <el-pagination
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
@@ -83,55 +86,72 @@
    <el-dialog
      :title="$t('operatManage.sysLayOutObj.editSysLayOut')"
       top="2vh"
      top="2vh"
      :visible.sync="EditFormdialog"
      :before-close="EditFromDataClose"
    >
     <div style="height: 500px; overflow: auto">
      <el-form :model="upform" label-position="top">
        <el-form-item
          :label="$t('operatManage.sysLayOutObj.name')"
          :label-width="formLabelWidth"
      <div style="height: 500px; overflow: auto">
        <el-form
          :model="upform"
          label-position="top"
        >
          <label class="boxlabel">{{ upform.name }}</label>
        </el-form-item>
        <el-form-item
          :label="$t('operatManage.sysLayOutObj.cvalue')"
          :label-width="formLabelWidth"
        >
          <el-input v-model="upform.cvalue" autocomplete="off"  style="width:85%"></el-input>
        </el-form-item>
        <el-form-item
          :label="$t('operatManage.sysLayOutObj.dvalue')"
          :label-width="formLabelWidth"
        >
          <label class="boxlabel">{{ upform.dvalue }}</label>
        </el-form-item>
        <el-form-item
          :label="$t('operatManage.sysLayOutObj.minValue')"
          :label-width="formLabelWidth"
        >
          <label class="boxlabel">{{ upform.minValue }}</label>
        </el-form-item>
        <el-form-item
          :label="$t('operatManage.sysLayOutObj.maxValue')"
          :label-width="formLabelWidth"
        >
          <label class="boxlabel">{{ upform.maxValue }}</label>
        </el-form-item>
        <el-form-item
          :label="$t('operatManage.sysLayOutObj.descr')"
          :label-width="formLabelWidth"
        >
          <label class="boxlabel">{{ upform.descr }}</label>
        </el-form-item>
      </el-form>
     </div>
      <div slot="footer" class="dialog-footer">
        <el-button size="small" @click="EditFromDataClose">{{
          <el-form-item
            :label="$t('operatManage.sysLayOutObj.name')"
            :label-width="formLabelWidth"
          >
            <label class="boxlabel">{{ upform.name }}</label>
          </el-form-item>
          <el-form-item
            :label="$t('operatManage.sysLayOutObj.cvalue')"
            :label-width="formLabelWidth"
          >
            <el-input
              v-model="upform.cvalue"
              autocomplete="off"
              style="width:85%"
            ></el-input>
          </el-form-item>
          <el-form-item
            :label="$t('operatManage.sysLayOutObj.dvalue')"
            :label-width="formLabelWidth"
          >
            <label class="boxlabel">{{ upform.dvalue }}</label>
          </el-form-item>
          <el-form-item
            :label="$t('operatManage.sysLayOutObj.minValue')"
            :label-width="formLabelWidth"
          >
            <label class="boxlabel">{{ upform.minValue }}</label>
          </el-form-item>
          <el-form-item
            :label="$t('operatManage.sysLayOutObj.maxValue')"
            :label-width="formLabelWidth"
          >
            <label class="boxlabel">{{ upform.maxValue }}</label>
          </el-form-item>
          <el-form-item
            :label="$t('operatManage.sysLayOutObj.descr')"
            :label-width="formLabelWidth"
          >
            <label class="boxlabel">{{ upform.descr }}</label>
          </el-form-item>
        </el-form>
      </div>
      <div
        slot="footer"
        class="dialog-footer"
      >
        <el-button
          size="small"
          @click="EditFromDataClose"
        >{{
          $t("common.close")
        }}</el-button>
        <el-button @click="EditFromData" size="small" type="primary">{{
        <el-button
          @click="EditFromData"
          size="small"
          type="primary"
        >{{
          $t("common.confirm")
        }}</el-button>
      </div>
@@ -260,10 +280,10 @@
<style lang="less" scoped>
//@import url(); å¼•入公共cssç±»
.parameterConfiguration_box {
  height: 98%;
  width: 98%;
  padding: 0.5% 1%;
  height: calc(100% - 20px);
  width: calc(100% - 20px);
  padding: 10px;
  position: relative;
  .parameterConfiguration {
    padding-top: 10px;
    padding-bottom: 10px;
src/views/maintenance/systemController.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,321 @@
<template>
  <div class="contentBox">
    <div
      class="box"
      ref="box"
    >
      <div class="left box_div">
        <el-menu
          :default-active="activeIndex"
          background-color="transparent"
          @select="handleselect"
        >
          <customElMenu :menuData="menuList"></customElMenu>
        </el-menu>
      </div>
      <div
        class="resize"
        title="收缩侧边栏"
      >
        â‹®
      </div>
      <div class="mid box_div">
        <menu-settings v-if="setMenuFlag == 'menuSettings'"></menu-settings>
        <user-management v-if="setMenuFlag == 'userInfoManage'"></user-management>
        <org-manage v-if="setMenuFlag == 'orgManage'"></org-manage>
        <resource-manage v-if="setMenuFlag == 'resourceManage'"></resource-manage>
        <role-manage v-if="setMenuFlag == 'roleManage'"></role-manage>
        <authority-manage v-if="setMenuFlag == 'authorityManage'"></authority-manage>
        <user-role-authorization v-if="setMenuFlag == 'userRoleAuthorization'"></user-role-authorization>
        <menu-role-authorization v-if="setMenuFlag == 'menuRoleAuthorization'"></menu-role-authorization>
        <role-menu-authorization v-if="setMenuFlag == 'roleMenuAuthorization'">
        </role-menu-authorization>
        <role-res-authorization v-if="setMenuFlag == 'roleResAuthorization'"></role-res-authorization>
        <log-log v-if="setMenuFlag == 'logLog'"> </log-log>
        <operation-log v-if="setMenuFlag == 'operationLog'"></operation-log>
        <eventlog-manage v-if="setMenuFlag == 'eventlogManage'"></eventlog-manage>
        <tokentool v-if="setMenuFlag == 'tokentool'"></tokentool>
        <blackwhite-list v-if="setMenuFlag == 'blackwhiteList'"></blackwhite-list>
        <database-monitoring v-if="setMenuFlag == 'dataIfream'"></database-monitoring>
        <system-monitoring v-if="setMenuFlag == 'systemMonitoring'"></system-monitoring>
        <parameter-configuration v-if="setMenuFlag == 'parameterConfiguration'"></parameter-configuration>
        <downlog v-if="setMenuFlag == 'downlog'"></downlog>
        <template-manage v-if="setMenuFlag == 'templateManage'"></template-manage>
        <data-statistics v-if="setMenuFlag == 'dataStatistics'"></data-statistics>
      </div>
    </div>
  </div>
</template>
<script>
import menuSettings from '@/views/maintenance/menuSettings.vue'; //菜单管理
import userManagement from '@/views/maintenance/userManagement.vue'; //用户管理
import orgManage from '@/views/userManage/orgManage.vue'; //单位管理
import resourceManage from '@/views/userManage/resourceManage.vue'; //资源管理
import roleManage from '@/views/userManage/roleManage.vue'; //角色管理
import authorityManage from '@/views/userManage/authorityManage.vue'; //权限管理
import userRoleAuthorization from '@/views/AuthorizationManagement/userRoleAuthorization.vue'; //用户角色授权
import menuRoleAuthorization from '@/views/AuthorizationManagement/menuRoleAuthorization.vue'; //菜单权限授权
import roleMenuAuthorization from '@/views/AuthorizationManagement/roleMenuAuthorization.vue'; //角色菜单授权
import roleResAuthorization from '@/views/AuthorizationManagement/roleResAuthorization.vue'; //角色资源授权
import logLog from '@/views/maintenance/logLog.vue'; //登录日志
import operationLog from '@/views/maintenance/operationLog.vue'; //操作日志
import eventlogManage from '@/views/maintenance/eventlogManage.vue'; //资源日志
import tokentool from '@/views/maintenance/tokentool.vue'; //令牌管理
import blackwhiteList from '@/views/maintenance/blackwhiteList.vue'; //黑白名单
import databaseMonitoring from '@/views/maintenance/databaseMonitoring.vue'; //数据库监控
import systemMonitoring from '@/views/maintenance/systemMonitoring.vue'; //系统监控
import parameterConfiguration from '@/views/maintenance/parameterConfiguration.vue'; //系统配置
import downlog from '@/views/maintenance/downlog.vue'; //下载日志
import templateManage from '@/views/userManage/templateManage.vue'//模板管理
import { selectMenuRecursive, queryMenuTree, getPerms, sign_insertOpLog } from '../../api/api';
import customElMenu from '../../components/customElMenu.vue';
import dataStatistics from '@/views/datamanage/dataStatistics.vue'; //数据统计
export default {
  components: {
    menuSettings,
    userManagement,
    orgManage,
    resourceManage,
    roleManage,
    authorityManage,
    userRoleAuthorization,
    menuRoleAuthorization,
    roleMenuAuthorization,
    roleResAuthorization,
    logLog,
    operationLog,
    eventlogManage,
    tokentool,
    blackwhiteList,
    databaseMonitoring,
    systemMonitoring,
    parameterConfiguration,
    customElMenu,
    downlog,
    templateManage,
    dataStatistics
  },
  data() {
    return {
      setMenuFlag: '   ',
      activeIndex: ' ',
      oriData: [], //原始树数据
      dirData: [], //el树数据
      newData: [], //拖动后数据
      lang: 'zh',
      menuList: [],
      editTitle: '',
      showPopover: false,
      showEditInfoWrapper: false,
      showEdit: false,
      editMenu: false,
      editCatalogue: false,
      editUnit: false,
      itemdetail: {},
      formLabelWidth: '70px',
      m1: null,
      menuId: null,
    };
  },
  created() { },
  mounted() {
    this.getTreeData();
    //左右拖動
    this.dragControllerDiv();
  },
  methods: {
    //左右拖動
    dragControllerDiv: function () {
      var resize = document.getElementsByClassName('resize');
      var left = document.getElementsByClassName('left');
      var mid = document.getElementsByClassName('mid');
      var box = document.getElementsByClassName('box');
      for (let i = 0; i < resize.length; i++) {
        // é¼ æ ‡æŒ‰ä¸‹äº‹ä»¶
        resize[i].onmousedown = function (e) {
          //颜色改变提醒
          resize[i].style.background = '#818181';
          var startX = e.clientX;
          resize[i].left = resize[i].offsetLeft;
          // é¼ æ ‡æ‹–动事件
          document.onmousemove = function (e) {
            var endX = e.clientX;
            var moveLen = resize[i].left + (endX - startX); // ï¼ˆendx-startx)=移动的距离。resize[i].left+移动的距离=左边区域最后的宽度
            var maxT = box[i].clientWidth - resize[i].offsetWidth; // å®¹å™¨å®½åº¦ - å·¦è¾¹åŒºåŸŸçš„宽度 = å³è¾¹åŒºåŸŸçš„宽度
            if (moveLen < 205) moveLen = 205; // å·¦è¾¹åŒºåŸŸçš„æœ€å°å®½åº¦ä¸º32px
            if (moveLen > maxT - 300) moveLen = maxT - 300; //右边区域最小宽度为150px
            resize[i].style.left = moveLen; // è®¾ç½®å·¦ä¾§åŒºåŸŸçš„宽度
            for (let j = 0; j < left.length; j++) {
              left[j].style.width = moveLen + 'px';
              mid[j].style.width = (box[i].clientWidth - moveLen - 10) + 'px';
            }
          };
          // é¼ æ ‡æ¾å¼€äº‹ä»¶
          document.onmouseup = function (evt) {
            //颜色恢复
            resize[i].style.background = '#d6d6d6';
            document.onmousemove = null;
            document.onmouseup = null;
            resize[i].releaseCapture && resize[i].releaseCapture(); //当你不在需要继续获得鼠标消息就要应该调用ReleaseCapture()释放掉
          };
          resize[i].setCapture && resize[i].setCapture(); //该函数在属于当前线程的指定窗口里设置鼠标捕获
          return false;
        };
      }
    },
    async getCookies() {
      var boolean = this.getTimeCookies();
      if (boolean != true) {
        this.$router.push('/login');
        return;
      }
      if (this.$store.state.permsEntity.length == 0) {
        const data = await getPerms();
        this.$store.state.permsEntity = data.result;
      }
      var store = this.menuList[0];
      this.m1 = store.cnName;
      this.setViewController(store);
    },
    getTimeCookies() {
      var time1 = new Date(JSON.parse(localStorage.getItem('LFToken')).time);
      var time2 = new Date();
      if (time2 > time1) {
        return false;
      } else {
        return true;
      }
    },
    //获取树
    async getTreeData() {
      const data = await queryMenuTree();
      let menuLists = data.result.filter((value) => {
        return value.url == '/systemController';
      });
      this.menuId = menuLists[0].id;
      const res = await selectMenuRecursive({ id: menuLists[0].id });
      if (res.code == 200) {
        if (res.result.length != 0) {
          let menuList = res.result.filter((value) => {
            return value.type == 1;
          })
            .filter(value => {
              return value.isShow == 1;
            });
          this.menuList = this.treeData(menuList);
          this.getCookies();
          const hanleselectmochaitmo = sessionStorage.getItem('hanleselectmochaitmo')
          if (hanleselectmochaitmo) {
            this.$nextTick(function () {
              this.handleselecttwo(JSON.parse(hanleselectmochaitmo).url, JSON.parse(hanleselectmochaitmo))
              this.setViewController(JSON.parse(hanleselectmochaitmo))
            })
          }
          //
        } else {
          alert('暂无菜单栏数据');
        }
      } else {
        console.log('接口报错');
      }
      // this.treeList = this.treeData(data.result);
    },
    async signInsertOpLog(m1, m2) {
      var obj = {
        m1: m1,
        m2: m2,
      }
      const data = await sign_insertOpLog(obj);
    },
    setViewController(res) {
      if (res == null) {
        return;
      }
      if (res.children != null) {
        this.setViewController(res.children[0]);
      } else {
        this.$store.state.currentPerms = res.perms;
        this.signInsertOpLog(this.m1, res.cnName)
        this.setMenuFlag = res.url;
        this.activeIndex = res.url;
      }
    },
    treeData(source) {
      let cloneData = JSON.parse(JSON.stringify(source)); // å¯¹æºæ•°æ®æ·±åº¦å…‹éš†
      // console.log(cloneData);
      if (cloneData.length != 0) {
        return cloneData.filter((father) => {
          // å¾ªçŽ¯æ‰€æœ‰é¡¹
          let branchArr = cloneData.filter((child) => father.id == child.pid); // å¯¹æ¯”ID,分别上下级菜单,并返回数据
          branchArr.length > 0 ? (father.children = branchArr) : ''; // ç»™çˆ¶çº§æ·»åŠ ä¸€ä¸ªchildren属性,并赋值
          // å±žäºŽåŒä¸€å¯¹è±¡é—®é¢˜ï¼Œä¾‹å¦‚:令 a=b、c=1 ï¼Œç„¶åŽå†ä»¤ b.c=c ï¼Œ é‚£ä¹ˆ a.c=b.c=c=1 ï¼›åŒç†ï¼ŒåŽç»­ä»¤ c.d=2 ,那么 a.c.d ä¹Ÿæ˜¯=2;
          // ç”±æ­¤å¾ªçŽ¯å¤šæ¬¡åŽï¼Œå°±èƒ½å½¢æˆç›¸åº”çš„æ ‘å½¢æ•°æ®ç»“æž„
          return father.pid == this.menuId; // è¿”回一级菜单
        });
      } else {
        alert('暂无菜单栏数据');
      }
    },
    handleselect(index, indexPath, e) {
      this.getTimeCookies();
      this.signInsertOpLog(this.m1, e.$attrs.perms.cnName)
      const a = JSON.stringify(e.$attrs.perms)
      sessionStorage.setItem('hanleselectmochaitmo', a)
      var data = e.$attrs.perms;
      this.$store.state.currentPerms = data.perms;
      var index = data.url;
      if (index != null) {
        if (index.indexOf('http') != -1) {
          this.$store.commit('getIframe', data.url);
          index = 'dataIfream';
        }
      }
      this.setMenuFlag = index;
    },
    handleselecttwo(index, e) {
      this.getTimeCookies();
      const a = JSON.stringify(e)
      sessionStorage.setItem('hanleselectmochaitmo', a)
      var data = e;
      this.$store.state.currentPerms = data.perms;
      var index = data.url;
      if (index != null) {
        if (index.indexOf('http') != -1) {
          this.$store.commit('getIframe', data.url);
          index = 'dataIfream';
        }
      }
      this.setMenuFlag = index;
    },
  },
};
</script>