zxl
2025-06-12 9f16b5c553b479ea12fe368a7ecc748872ea8b98
web_src/src/components/dialog/changePassword.vue
old mode 100644 new mode 100755
@@ -11,6 +11,9 @@
    >
      <div id="shared" style="margin-right: 20px;">
        <el-form ref="passwordForm" :rules="rules" status-icon label-width="80px">
              <el-form-item label="旧密码" prop="oldPassword" >
                <el-input v-model="oldPassword" autocomplete="off"></el-input>
              </el-form-item>
              <el-form-item label="新密码" prop="newPassword" >
                <el-input v-model="newPassword" autocomplete="off"></el-input>
              </el-form-item>
@@ -31,15 +34,24 @@
</template>
<script>
import crypto from 'crypto'
import userService from "../service/UserService";
export default {
  name: "changePassword",
  props: {},
  computed: {},
  created() {},
  data() {
    let validatePass = (rule, value, callback) => {
    let validatePass0 = (rule, value, callback) => {
      if (value === '') {
        callback(new Error('请输入密码'));
        callback(new Error('请输入旧密码'));
      } else {
        callback();
      }
    };
    let validatePass1 = (rule, value, callback) => {
      if (value === '') {
        callback(new Error('请输入新密码'));
      } else {
        if (this.confirmPassword !== '') {
          this.$refs.passwordForm.validateField('confirmPassword');
@@ -57,12 +69,17 @@
      }
    };
    return {
      oldPassword: null,
      newPassword: null,
      confirmPassword: null,
      showDialog: false,
      isLoging: false,
      rules: {
        newPassword: [{ required: true, validator: validatePass, trigger: "blur" }],
        oldPassword: [{ required: true, validator: validatePass0, trigger: "blur" }],
        newPassword: [{ required: true, validator: validatePass1, trigger: "blur" }, {
            pattern: /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,.\/]).{8,20}$/,
            message: "密码长度在8-20位之间,由字母+数字+特殊字符组成",
          },],
        confirmPassword: [{ required: true, validator: validatePass2, trigger: "blur" }],
      },
    };
@@ -76,22 +93,29 @@
        method: 'post',
        url:"/api/user/changePassword",
        params: {
          oldPassword: crypto.createHash('md5').update(this.oldPassword, "utf8").digest('hex'),
          password: this.newPassword
        }
      }).then((res)=> {
        if (res.data === "success"){
        if (res.data.code === 0) {
          this.$message({
            showClose: true,
            message: '修改成功,请重新登陆',
            message: '修改成功,请重新登录',
            type: 'success'
          });
          this.showDialog = false;
          setTimeout(()=>{
            // 删除cookie,回到登录页面
            this.$cookies.remove("session");
            userService.clearUserInfo();
            this.$router.push('/login');
            this.sseSource.close();
          },800)
        }else {
          this.$message({
            showClose: true,
            message: '修改密码失败,是否已登录(接口鉴权关闭无法修改密码)',
            type: 'error'
          });
        }
      }).catch((error)=> {
        console.error(error)
@@ -99,8 +123,9 @@
    },
    close: function () {
      this.showDialog = false;
      this.newPassword= null;
      this.confirmPassword=null;
      this.oldPassword = null;
      this.newPassword = null;
      this.confirmPassword = null;
    },
  },
};