longyvfengyun
2024-04-18 fb53e9f8ee45dde0448c799f4ed997b7faa133ba
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>