longyvfengyun
2024-04-18 fb53e9f8ee45dde0448c799f4ed997b7faa133ba
内容修改
5个文件已修改
1个文件已添加
127 ■■■■ 已修改文件
src/assets/js/config.module.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/tools/getPasswordRule.js 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/layout/components/Navbar.vue 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/layout/components/PwdChange.vue 47 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/home/home-conductor.vue 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/pageSetting/components/passwordComplex.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/config.module.js
@@ -91,8 +91,8 @@
     * 南京测控: 'njck'
     * 云南昆明供电局:'ynkm'
     */
     // name: '',
    name: 'sxty',   // 请查看alarmPopup是否开启,logo是否开启且为gjdw
     name: '',
    //name: 'sxty',   // 请查看alarmPopup是否开启,logo是否开启且为gjdw
    // name: 'tydc',
    // name: 'njck',
    //name: 'ynkm',
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)[a-zA-Z\\d!@#$%^&*()_+]{"+num+",}$");
      result.msg="最少"+num+"个字符,至少1个大写字母,1个小写字母和1个数字";
      break;
    case 2:
      result.pattern = new RegExp("^(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*()_+])[a-zA-Z\\d!@#$%^&*()_+]{"+num+",}$");
      result.msg="最少"+num+"个字符,至少1个大写字母,1个小写字母和1个特殊字符";
      break;
    case 3:
      result.pattern = new RegExp("^(?=.*[A-Z])(?=.*\\d)(?=.*[!@#$%^&*()_+])[a-zA-Z\\d!@#$%^&*()_+]{"+num+",}$");
      result.msg="最少"+num+"个字符,至少1个大写字母,1个数字和1个特殊字符";
      break;
    case 4:
      result.pattern = new RegExp("^(?=.*[a-z])(?=.*\\d)(?=.*[!@#$%^&*()_+])[a-zA-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/layout/components/Navbar.vue
@@ -272,7 +272,7 @@
      class="dialog-center"
      :modal-append-to-body="false"
    >
      <pwd-change v-if="pwd.show" :visible.sync="pwd.show"></pwd-change>
      <pwd-change v-if="pwd.show" :visible.sync="pwd.show" :name="username"></pwd-change>
    </el-dialog>
    <!-- 短信猫和声光告警的配置 -->
    <el-dialog
@@ -353,6 +353,7 @@
import UsefulTools from "@/layout/components/UsefulTools.vue";
import config from "@/assets/js/config";
import HomeTy from "@/views/home/home-ty.vue";
import { searchParam } from "@/views/pageSetting/js/api";
export default {
  bMapTools: new BMapTools(BMap),
  components: {
@@ -1024,6 +1025,31 @@
        // 用户登录状态 0-(不做动作) 2-首次登录 3-密码长时间未登录
        sessionStorage.setItem("useLoginState", "0");
      });
    },
    async searchPasswordRules() {
      try {
        let res = await searchParam({categoryId: 10});
        let rs = res.data;
        if (rs.code === 1 && rs.data.list.length !== 0) {
          let data = rs.data.list;
          // 读取字符长度
          sessionStorage.setItem("passwordNum", data[0].status);
          // 读取密码类型
          sessionStorage.setItem("passwordType", data[1].status);
        } else {
          // 读取字符长度
          sessionStorage.setItem("passwordNum", "8");
          // 读取密码类型
          sessionStorage.setItem("passwordType", "4");
        }
      }catch (e){
        // 读取字符长度
        sessionStorage.setItem("passwordNum", "8");
        // 读取密码类型
        sessionStorage.setItem("passwordType", "4");
        console.log("查询密码规则错误:"+e);
      }
    }
  },
  computed: {
@@ -1189,6 +1215,9 @@
    },
  },
  mounted() {
    this.searchPasswordRules();
    this.showPasswordMessage();
    this.getMacUks();
src/layout/components/PwdChange.vue
@@ -5,10 +5,10 @@
                <el-input type="password" v-model="params.oldPwd"></el-input>
            </el-form-item>
            <el-form-item label="新密码" prop="newPwd">
                <el-input type="password" v-model="params.newPwd"></el-input>
                <el-input type="password" v-model="params.newPwd" show-password></el-input>
            </el-form-item>
            <el-form-item label="确认密码" prop="enPwd">
                <el-input type="password" v-model="params.enPwd"></el-input>
                <el-input type="password" v-model="params.enPwd" show-password></el-input>
            </el-form-item>
            <div class="form-footer">
                <three-btn @click="submitForm">确定</three-btn>
@@ -20,25 +20,42 @@
<script>
import { checkUserPwd, updateUserPwd } from "@/views/login/js/api"
import getPasswordRule from "@/assets/js/tools/getPasswordRule";
export default {
    name: "PwdChange",
    props: {
        visible: {
            type: Boolean,
            default: false
        }
        },
    name: {
      type: String,
      default: ""
    },
    },
    data() {
        let validatePass = (rule, value, callback) => {
            let pwdRegex = new RegExp('(?=.*[0-9])(?=.*[a-zA-Z]).{6,30}');
            if (pwdRegex.test(value)) {
                callback();
            } else {
                callback(new Error('您的密码复杂度太低(密码中必须包含字母、数字、至少6位)'));
            }
        };
    // 根据密码类型和长度动态生成校验规则
    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 = passwordRule.pattern;
      let nameReg = new RegExp(name);
      if (pwdRegex.test(value)) { // 校验密码规则是否正确
        callback();
      } else if(nameReg.test(value)) {    // 校验密码中是否存在用户名
        callback(new Error("密码中存在用户名信息"));
      } else {
        callback(new Error(passwordRule.msg));
      }
    };
        return {
            params: {
        userName: "",
                oldPwd: "",
                newPwd: "",
                enPwd: ""
@@ -119,7 +136,10 @@
        close() {
            this.$emit("update:visible", false);
        }
    }
    },
  mounted() {
    this.params.userName = this.name;
  }
}
</script>
@@ -137,4 +157,7 @@
.form-footer .three-btn {
    margin-left: 12px;
}
/deep/ .el-input__icon.el-icon-view.el-input__clear {
  color: #FFFFFF;
}
</style>
src/views/home/home-conductor.vue
@@ -960,9 +960,11 @@
      this.prodList.forEach((v) => {
        let flag = arr.filter((val) => val.name == v.name)[0];
        if (flag) {
          v.good = flag.good;
          v.alarm = flag.alarm;
          v.change = flag.change;
        } else {
          v.good = 0;
          v.alarm = 0;
          v.change = 0;
        }
@@ -977,6 +979,7 @@
        xLabel: ["劣化", "损坏"],
        sData: [Ores.alarm, Ores.change],
        colorList: [
          // ["#00fefe", "#23b5f5"],
          ["#f8f38d", "#23b5f5"],
          ["#51eab2", "#23b5f5"],
        ],
src/views/pageSetting/components/passwordComplex.vue
@@ -103,6 +103,10 @@
        .then(res => {
          this.loading = false;
          this.$layer.msg("修改成功");
          // 读取字符长度
          sessionStorage.setItem("passwordNum", this.passwordNum.status);
          // 读取密码类型
          sessionStorage.setItem("passwordType", this.passwordType.status);
        })
        .catch(error => {
          this.loading = false;