longyvfengyun
2022-03-14 9fcb46f05e975092ac573699b688108b645a09c5
内容提交
9个文件已修改
2个文件已添加
549 ■■■■■ 已修改文件
src/assets/js/const/const_num.js 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/tools/getPageMenu.js 177 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/tools/getPasswordRule.js 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/tools/validateRules.js 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/FlexBox.vue 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/PageHeader.vue 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/PwdChange.vue 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/login.vue 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/pageSetting/components/passwordComplex.vue 177 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/pageSetting/realTime.vue 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/userMager/powerMager.vue 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/const/const_num.js
@@ -1,14 +1,14 @@
export default {
  // privateKey: "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAI+kneP5IdDr2Wqr5KF"+
  //   "Xt14DjRj7ytitrquvhF44n5QTt6Ty2wkmtzLXEw7VKimEl0ddfBI1tlaGclb0aUirVSboimWTAVz8C3Kh4kM/cQm1RmAjkfp"+
  //   "9LPQE8sUefXwLQ3HPUGvXT1TTsOpB0yxqtwGYpdhDD7ahk7PQqkDlvQVrAgMBAAECgYA8ASdX4W2n6a4kKnRSleLqqg8aHazqAP"+
  //   "vTinmAJqU65VW02SJ42yxyV3gFnTSErXfIfxviO3/U+0ruWiFVEwV5oDEh0dOd+HHGm4YzFXIRglMeRBgLuVJ+owzoVDwZsti"+
  //   "IBa69DIjaJtmpSf5FjwxAth+gtCv3e11IXHraKN720QJBAMPMB1WtmpRGYHxWVYjKSL+RGw+h3gMQLk3exZjhmYRlXuqfVZ2Zol+NazDc59"+
  //   "K5f+geMdJ0/X2kKnKLVjWzYHMCQQC7z1cFYswtLemxGfj+dwlVC01VL4pKa7HGHl/FAQ2UNYZY2d5hE/nXYbTpfI0gMowX926/aFpia7Nb"+
  //   "AUJO7WEpAkAyUFa+LJthaOhYazMVsK2bFKW4kabkcJ8Fga6TR73UaNxIPGOa2SUBmuylpM6ptuNoeYHiDBAr3ijOQIIJ0KuDAkBy9fPahCNe9F+73"+
  //   "J4hhVPdDtIDdto7u7hSAX215XMeabUW5iXNXqDsSg6nbWolb0t50CemWoYZALwE1Lx1+7AhAkEAoZtFt+2skjAxHEqNUye4vKBqB2Ng/wmfitCfT34"+
  //   "lXWQsxs4BGk/8eQMzkam9bcB7FcinolxHF/1UjsUYpI+AgA==",
  privateKey: "",
  privateKey: "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAI+kneP5IdDr2Wqr5KF"+
    "Xt14DjRj7ytitrquvhF44n5QTt6Ty2wkmtzLXEw7VKimEl0ddfBI1tlaGclb0aUirVSboimWTAVz8C3Kh4kM/cQm1RmAjkfp"+
    "9LPQE8sUefXwLQ3HPUGvXT1TTsOpB0yxqtwGYpdhDD7ahk7PQqkDlvQVrAgMBAAECgYA8ASdX4W2n6a4kKnRSleLqqg8aHazqAP"+
    "vTinmAJqU65VW02SJ42yxyV3gFnTSErXfIfxviO3/U+0ruWiFVEwV5oDEh0dOd+HHGm4YzFXIRglMeRBgLuVJ+owzoVDwZsti"+
    "IBa69DIjaJtmpSf5FjwxAth+gtCv3e11IXHraKN720QJBAMPMB1WtmpRGYHxWVYjKSL+RGw+h3gMQLk3exZjhmYRlXuqfVZ2Zol+NazDc59"+
    "K5f+geMdJ0/X2kKnKLVjWzYHMCQQC7z1cFYswtLemxGfj+dwlVC01VL4pKa7HGHl/FAQ2UNYZY2d5hE/nXYbTpfI0gMowX926/aFpia7Nb"+
    "AUJO7WEpAkAyUFa+LJthaOhYazMVsK2bFKW4kabkcJ8Fga6TR73UaNxIPGOa2SUBmuylpM6ptuNoeYHiDBAr3ijOQIIJ0KuDAkBy9fPahCNe9F+73"+
    "J4hhVPdDtIDdto7u7hSAX215XMeabUW5iXNXqDsSg6nbWolb0t50CemWoYZALwE1Lx1+7AhAkEAoZtFt+2skjAxHEqNUye4vKBqB2Ng/wmfitCfT34"+
    "lXWQsxs4BGk/8eQMzkam9bcB7FcinolxHF/1UjsUYpI+AgA==",
  //privateKey: "",
  publicKey: "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCPpJ3j+SHQ69lqq+ShV7deA40Y+8rYra6rr4ReOJ+UE7ek8tsJJrcy1xMO1SophJdH"+
    "XXwSNbZWhnJW9GlIq1Um6IplkwFc/AtyoeJDP3EJtUZgI5H6fSz0BPLFHn18C0Nxz1Br109U07DqQdMsarcBmKXYQw+2oZOz0KpA5b0FawIDAQAB"
}
src/assets/js/tools/getPageMenu.js
@@ -44,7 +44,6 @@
                label: "用户信息管理",
                name: "userInfoMager",
                src: "#/userMager/userInfo",
                permitName: "usr_query_permit",
                closable: true,
                id: 7001,
                menuId: 7,
@@ -67,7 +66,6 @@
                label: "权限管理",
                name: "powerMager",
                src: "#/userMager/powerMager",
                permitName: "permit_query_permit",
                closable: true,
                id: 7003,
                menuId: 7,
@@ -79,7 +77,6 @@
                label: "包机组管理",
                name: "baojiMager",
                src: "#/userMager/baojiMager",
                permitName: "usr_query_permit",
                closable: true,
                id: 7004,
                menuId: 7,
@@ -106,7 +103,6 @@
              {
                label: "系统配置",
                name: "realTimeSetting",
                permitName: "batt_test_op_permit",
                src: "#/pageSetting/realTime",
                closable: true,
                id: 8001,
@@ -144,6 +140,152 @@
        ];
        break;
      case 2:
        list = [
          {
            label: "首页",
            name: "index",
            src: homeSrc,
            icon: "el-icon-s-home",
            noChild: true,
            closable: false,
            id: 1,
            menuId: 0,
            enableduse: true,
            ord: 1,
            level: 1,
            disabled: true
          },
          {
            label: "用户管理",
            name: "userMager",
            src: "",
            icon: "el-icon-user-solid",
            closable: false,
            noChild: false,
            id: 7,
            menuId: 7,
            enableduse: true,
            ord: 7,
            level: 1,
            childrens: [
              {
                label: "操作事件管理",
                name: "operationRecordMager",
                src: "#/userMager/operationRecord",
                closable: true,
                id: 7005,
                menuId: 7,
                enableduse: true,
                ord: 5,
                level: 2,
              },
              // 最大ord=6
            ]
          },
        ];
        break;
      case 3:
        list = [
          {
            label: "首页",
            name: "index",
            src: homeSrc,
            icon: "el-icon-s-home",
            noChild: true,
            closable: false,
            id: 1,
            menuId: 0,
            enableduse: true,
            ord: 1,
            level: 1,
            disabled: true
          },
          {
            label: "系统设置",
            name: "systemPageSetting",
            src: "",
            icon: "el-icon-s-management",
            closable: false,
            noChild: false,
            id: 8,
            menuId: 8,
            enableduse: true,
            ord: 8,
            level: 1,
            childrens: [
              {
                label: "系统配置",
                name: "realTimeSetting",
                src: "#/pageSetting/realTime",
                closable: true,
                id: 8001,
                menuId: 8,
                enableduse: true,
                ord: 1,
                level: 2,
                disabled: true
              },
            ]
          }
        ];
        break;
      case 4:
        list = [
          {
            label: "首页",
            name: "index",
            src: homeSrc,
            icon: "el-icon-s-home",
            noChild: true,
            closable: false,
            id: 1,
            menuId: 0,
            enableduse: true,
            ord: 1,
            level: 1,
            disabled: true
          },
          {
            label: "用户管理",
            name: "userMager",
            src: "",
            icon: "el-icon-user-solid",
            closable: false,
            noChild: false,
            id: 7,
            menuId: 7,
            enableduse: true,
            ord: 7,
            level: 1,
            childrens: [
              {
                label: "权限管理",
                name: "powerMager",
                src: "#/userMager/powerMager",
                closable: true,
                id: 7003,
                menuId: 7,
                enableduse: true,
                ord: 3,
                level: 2,
              },
              {
                label: "包机组管理",
                name: "baojiMager",
                src: "#/userMager/baojiMager",
                closable: true,
                id: 7004,
                menuId: 7,
                enableduse: true,
                ord: 4,
                level: 2,
              },
              // 最大ord=6
            ]
          }
        ];
        break;
      case 5:
        list = [
          {
            label: "首页",
@@ -763,6 +905,33 @@
              // 最大ord=3
            ],
          },
          {
            label: "用户管理",
            name: "userMager",
            src: "",
            icon: "el-icon-user-solid",
            closable: false,
            noChild: false,
            id: 7,
            menuId: 7,
            enableduse: true,
            ord: 7,
            level: 1,
            childrens: [
              {
                label: "用户人脸管理",
                name: "userFaceManager",
                src: "#/faceManager/userFaceManager",
                closable: true,
                id: 7002,
                menuId: 7,
                enableduse: true,
                ord: 2,
                level: 2,
              },
              // 最大ord=6
            ]
          },
        ];
        break;
    }
src/assets/js/tools/getPasswordRule.js
New file
@@ -0,0 +1,38 @@
/**
 * 获取密码的校验规则
 * @param type 密码的校验类型
 * @param num 密码的最小长度
 * @returns {{msg: string, pattern: string, regVal: boolean}}
 */
function getPasswordRule(type, num) {
  let result = {
    pattern: "",
    regVal: false,
    msg: ""
  };
  switch (Number(type)) {
    case 1:
      result.pattern = new RegExp("(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)[^]{"+num+",}");
      result.msg="最少"+num+"个字符,至少1个大写字母,1个小写字母和1个数字";
      break;
    case 2:
      result.pattern = new RegExp("(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[$@$!%*?&.])[A-Za-z\\d$@$!%*?&.]{"+num+",}");
      result.msg="最少"+num+"个字符,至少1个大写字母,1个小写字母和1个特殊字符";
      break;
    case 3:
      result.pattern = new RegExp("(?=.*[A-Z])(?=.*\\d)(?=.*[$@$!%*#?&])[A-Z\\d$@$!%*#?&][^]{"+num+",}");
      result.msg="最少"+num+"个字符,至少1个大写字母,1个数字和1个特殊字符";
      break;
    case 4:
      result.pattern = new RegExp("(?=.*[a-z])(?=.*\\d)(?=.*[$@$!%*#?&])[a-z\\d$@$!%*#?&][^]{"+num+",}");
      result.msg = "最少"+num+"个字符,至少1个小写字母,1个数字和1个特殊字符";
      break;
    default:
      result.pattern = new RegExp("(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[$@$!%*?&])[A-Za-z\\d$@$!%*?&]{"+num+",}");
      result.msg="最少"+num+"个字符,至少1个大写字母,1个小写字母,1个数字和1个特殊字符";
      break;
  }
  return result;
}
export default getPasswordRule;
src/assets/js/tools/validateRules.js
@@ -1,3 +1,5 @@
import getPasswordRule from "@/assets/js/tools/getPasswordRule";
export default {
  /**
   * 用户名校验
@@ -21,9 +23,17 @@
    if (!value) {
      return callback(new Error('密码不能为空'));
    }
    let pattern = /^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\\W_!@#$%^&*`~()-+=]+$)(?![a-z0-9]+$)(?![a-z\\W_!@#$%^&*`~()-+=]+$)(?![0-9\\W_!@#$%^&*`~()-+=]+$)[a-zA-Z0-9\\W_!@#$%^&*`~()-+=]{8,30}$/;
    // 根据密码类型和长度动态生成校验规则
    let type = sessionStorage.getItem("passwordType");
    let num = sessionStorage.getItem("passwordNum");
    type = type?Number(type):5;
    num = num?Number(num):8;
    let passwordRule = getPasswordRule(type, num);
    let pattern = passwordRule.pattern;
    if(!pattern.test(value)) {
      return callback(new Error('长度至少8位,必须符合由数字,大写字母,小写字母,特殊符,至少其中三种组成密码'));
      return callback(new Error(passwordRule.msg));
    }
    return callback();
  }
src/components/FlexBox.vue
@@ -1,5 +1,11 @@
<template>
  <div class="flex-box" :class="sizeClass">
  <div
      class="flex-box"
      :class="sizeClass"
      v-loading="loading"
      element-loading-text="拼命加载中"
      element-loading-spinner="el-icon-loading"
      element-loading-background="rgba(0, 0, 0, 0.2)">
    <div class="flex-box-border border-top-left"></div>
    <div class="flex-box-border border-top-right"></div>
    <div class="flex-box-border border-bottom-left"></div>
@@ -61,6 +67,10 @@
      type: String,
      default: "",
    },
    loading: {
      type: Boolean,
      default: false,
    },
  },
  computed: {
    sizeClass() {
src/components/PageHeader.vue
@@ -1219,7 +1219,31 @@
    },
    showSingularDrawer() {
      this.showSingular = true;
    }
    },
    searchPasswordRules() {
      this.$apis.pageSetting.realTime.searchParam({
        categoryId: 10
      }).then(res=>{
        let rs = JSON.parse(res.data.result);
        if(rs.code == 1 && rs.data.length != 0) {
          let data = rs.data;
          // 读取字符长度
          sessionStorage.setItem("passwordNum", data[0].status);
          // 读取密码类型
          sessionStorage.setItem("passwordType", data[1].status);
        }else {
          // 读取字符长度
          sessionStorage.setItem("passwordNum", "8");
          // 读取密码类型
          sessionStorage.setItem("passwordType", "4");
        }
      }).catch(error=>{
        // 读取字符长度
        sessionStorage.setItem("passwordNum", "8");
        // 读取密码类型
        sessionStorage.setItem("passwordType", "4");
      });
    },
  },
  computed: {
    processAlarmMsg() {
@@ -1387,6 +1411,9 @@
    // 初始化实时页面页签
    this.initPageConfig();
    // 查询密码规则
    this.searchPasswordRules();
  },
  destroyed() {
    this.timer.stop();
src/components/PwdChange.vue
@@ -28,6 +28,8 @@
</template>
<script>
import getPasswordRule from "@/assets/js/tools/getPasswordRule";
export default {
    name: "PwdChange",
    props: {
@@ -50,16 +52,23 @@
    },
    data() {
        let name = this.name;
        // 根据密码类型和长度动态生成校验规则
        let type = sessionStorage.getItem("passwordType");
        let num = sessionStorage.getItem("passwordNum");
        type = type?Number(type):5;
        num = num?Number(num):8;
        let passwordRule = getPasswordRule(type, num);
        let validatePass = (rule, value, callback) => {
            let name = this.params.userName;
            let pwdRegex = /^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\\W_!@#$%^&*`~()-+=]+$)(?![a-z0-9]+$)(?![a-z\\W_!@#$%^&*`~()-+=]+$)(?![0-9\\W_!@#$%^&*`~()-+=]+$)[a-zA-Z0-9\\W_!@#$%^&*`~()-+=]{8,30}$/;;
            let pwdRegex = passwordRule.pattern;
            let nameReg = new RegExp(name);
            if (pwdRegex.test(value)) { // 校验密码规则是否正确
                callback();
            } else if(nameReg.test(value)) {    // 校验密码中是否存在用户名
              callback(new Error("密码中存在用户名信息"));
            } else {
                callback(new Error('长度至少8位,必须符合由数字,大写字母,小写字母,特殊符,至少其中三种组成密码'));
                callback(new Error(passwordRule.msg));
            }
        };
        return {
src/pages/login.vue
@@ -636,6 +636,8 @@
        this.startReadSeconds();
      }
      // 查询密码规则
      this.searchPasswordRules();
      // 初始化置动
      this.$store.dispatch("user/changeAutoLogin", 0);
      this.$store.dispatch("user/changePage", "m1c0");
@@ -694,6 +696,30 @@
        console.log(res);
      }).catch(error => {
        console.log(error);
      });
    },
    searchPasswordRules() {
      this.$apis.pageSetting.realTime.searchParam({
        categoryId: 10
      }).then(res=>{
        let rs = JSON.parse(res.data.result);
        if(rs.code == 1 && rs.data.length != 0) {
          let data = rs.data;
          // 读取字符长度
          sessionStorage.setItem("passwordNum", data[0].status);
          // 读取密码类型
          sessionStorage.setItem("passwordType", data[1].status);
        }else {
          // 读取字符长度
          sessionStorage.setItem("passwordNum", "8");
          // 读取密码类型
          sessionStorage.setItem("passwordType", "4");
        }
      }).catch(error=>{
        // 读取字符长度
        sessionStorage.setItem("passwordNum", "8");
        // 读取密码类型
        sessionStorage.setItem("passwordType", "4");
      });
    },
  },
@@ -801,7 +827,7 @@
    //console.log(JSON.stringify("5OUaEnC33sVNY+jeXlx3Qg=="));
    // let rsaWord = RSA.encrypt("123456");
    // console.log(rsaWord);
    //console.log(RSA.decrypt("", const_num.privateKey));
    console.log(RSA.decrypt("f/SEw4pYzY2kAhgBOSOh5CCstWQqh5G2D0w+d7OyvhQ/H25Ph0WelI2JezrOFzNuAA4jCDJljNqzMio+hIYRVoXGWtSr4+PDro4GabjNh2wOb2Y9z9EJExphgr9/igpOqodHPXIZwbC+I8VakHLmeodpvPGx4EQD4/Tq2Czxov0=", const_num.privateKey));
  },
};
</script>
src/pages/pageSetting/components/passwordComplex.vue
New file
@@ -0,0 +1,177 @@
<template>
  <div class="limit-lock">
    <div class="limit-lock-content">
      <flex-box title="密码复杂度配置" size="mini" :loading="loading">
        <div class="input-wrapper">
          <div class="input-content">
            <span class="input-label">密码长度(8~24)</span>
            <el-input size="small" v-model.number="passwordNum.status"></el-input>
            <br>
            <br>
            <span class="input-label">密码组合方式</span>
            <el-select v-model="passwordType.status" size="small">
              <el-option
                  v-for="(item, key) in types" :key="'key'+key"
                  :label="item.label"
                  :value="item.value"></el-option>
            </el-select>
          </div>
        </div>
        <div class="flex-box-footer" slot="footer">
          <el-button type="primary" @click="updateAll">确认修改</el-button>
          <el-button type="warning" @click="search">恢复/刷新</el-button>
        </div>
      </flex-box>
    </div>
  </div>
</template>
<script>
import FlexBox from "@/components/FlexBox";
import checkVal from "@/assets/js/tools/checkVal";
export default {
  name: "passwordComplex",
  components: {
    FlexBox
  },
  data() {
    return {
      loading: false,
      passwordNum: {
        categoryId: 0,
        id: 42,
        param: "密码设置规则-位数",
        status: 8,
      },
      passwordType: {
        categoryId: 0,
        id: 43,
        param: "密码设置规则-符号类型",
        status: 1,
      },
      types: [
        {
          value: 1,
          label: "大写字母,小写字母,数字"
        },
        {
          value: 2,
          label: "大写字母,小写字母,特殊字符"
        },
        {
          value: 3,
          label: "大写字母,数字,特殊字符"
        },
        {
          value: 4,
          label: "小写字母,数字,特殊字符"
        },
        {
          value: 5,
          label: "大写字母,小写字母,数字,特殊字符"
        },
      ],
    }
  },
  methods: {
    updateAll() {
      if(!this.passwordNum.status) {
        this.$layer.msg("请输入失败次数!");
        return;
      }
      let checkPasswordNumRs = checkVal(this.passwordNum.status, {
        pattern: /^[0-9]+(\.[0-9]*)?$/,
        regVal: true,
        min: 8,
        max: 24,
        msg: '取值范围8~24'
      });
      if(checkPasswordNumRs.code == 0) {
        this.$layer.msg(checkPasswordNumRs.msg);
        return;
      }
      this.loading = true;
      // 请求后台
      this.$axios.all([
        this.update(this.passwordType),
        this.update(this.passwordNum),
      ]).then(res=>{
        this.loading = false;
        this.$layer.msg("修改成功");
      }).catch(error=>{
        this.loading = false;
        console.log(error);
        this.$layer.msg("修改失败");
      });
    },
    update(data) {
      // 请求后台
      this.$apis.pageSetting.realTime.updateStatus(data).then(res=>{
        let rs = JSON.parse(res.data.result);
      }).catch(error=>{});
    },
    search() {
      this.loading=true;
      this.$apis.pageSetting.realTime.searchParam({
        categoryId: 10
      }).then(res=>{
        this.loading = false;
        let rs = JSON.parse(res.data.result);
        if(rs.code == 1 && rs.data.length != 0) {
          let data = rs.data;
          // 读取字符长度
          this.passwordNum.status = data[0].status;
          this.passwordNum.id = data[0].id;
          // 读取密码类型
          this.passwordType.status = data[1].status;
          this.passwordType.id = data[1].id;
        }else {
          this.$layer.msg("获取密码规则失败,请联系管理员。");
        }
      }).catch(error=>{
        this.loading = false;
        this.$layer.msg("获取密码规则失败,请联系管理员。");
      });
    },
  },
  mounted() {
    this.search();
  }
}
</script>
<style scoped>
.limit-lock {
  display: flex;
  justify-content: center;
  height: 100%;
}
.limit-lock-content {
  width: 450px;
  height: 260px;
  margin-top: 160px;
}
.flex-box-footer {
  padding: 16px;
  text-align: right;
}
.input-wrapper {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100%;
}
.input-content {
  width: 80%;
}
.input-content .el-select {
  width: 100%;
}
.input-label {
  display: inline-block;
  padding: 4px 0;
  font-size: 14px;
}
</style>
src/pages/pageSetting/realTime.vue
@@ -55,6 +55,9 @@
            <el-tab-pane label="审计容量配置" v-if="isSystemAdmin">
              <audit-cap-setting></audit-cap-setting>
            </el-tab-pane>
            <el-tab-pane label="口令复杂度" v-if="isSystemAdmin">
              <password-complex></password-complex>
            </el-tab-pane>
        </el-tabs>
    </content-box>
</template>
@@ -70,9 +73,11 @@
import IpLimit from "@/pages/pageSetting/components/ipLimit";
import MenuApprove from "@/pages/pageSetting/components/menuApprove";
import AuditCapSetting from "@/pages/pageSetting/components/auditCapSetting";
import PasswordComplex from "@/pages/pageSetting/components/passwordComplex";
export default {
    components: {
      PasswordComplex,
      AuditCapSetting,
      MenuApprove,
      IpLimit,
@@ -85,7 +90,7 @@
      ContentBox
    },
    data() {
        let isSystemAdmin = sessionStorage.getItem("userId");
        let isSystemAdmin = sessionStorage.getItem("userPowerGroup");
        return {
            status: {
src/pages/userMager/powerMager.vue
@@ -261,22 +261,22 @@
            },
          ]
        },
        // {
        //   id: 'power_manage',
        //   label: '权限管理',
        //   children: [
        //     {
        //       id: 'permit_query_permit',
        //       label: '查询',
        //       leaf: true,
        //     },
        //     {
        //       id: 'permit_edit_permit',
        //       label: '编辑',
        //       leaf: true,
        //     },
        //   ]
        // },
        {
          id: 'power_manage',
          label: '权限管理',
          children: [
            {
              id: 'permit_query_permit',
              label: '查询',
              leaf: true,
            },
            {
              id: 'permit_edit_permit',
              label: '编辑',
              leaf: true,
            },
          ]
        },
        {
          id: 'server_manage',
          label: '服务器参数设置权限',
@@ -523,7 +523,7 @@
        }
        // 设置权限组
        this.powergrouplist = data.filter(item => {
          if (item.key != 100002 && item.key >100) {
          if (item.key != 100002) {
            return true;
          }
        });