From f1d079f9c0b3d384090477ca54e0548373d62b57 Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Thu, 16 Jan 2025 11:56:39 +0800
Subject: [PATCH] 配置修改

---
 web_src/src/components/dialog/changePassword.vue |  131 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 131 insertions(+), 0 deletions(-)

diff --git a/web_src/src/components/dialog/changePassword.vue b/web_src/src/components/dialog/changePassword.vue
new file mode 100644
index 0000000..77e1d2a
--- /dev/null
+++ b/web_src/src/components/dialog/changePassword.vue
@@ -0,0 +1,131 @@
+<template>
+  <div id="changePassword" v-loading="isLoging">
+    <el-dialog
+      title="修改密码"
+      width="40%"
+      top="2rem"
+      :close-on-click-modal="false"
+      :visible.sync="showDialog"
+      :destroy-on-close="true"
+      @close="close()"
+    >
+      <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>
+              <el-form-item label="确认密码" prop="confirmPassword">
+                <el-input v-model="confirmPassword" autocomplete="off"></el-input>
+              </el-form-item>
+
+              <el-form-item>
+                <div style="float: right;">
+                  <el-button type="primary" @click="onSubmit">保存</el-button>
+                  <el-button @click="close">取消</el-button>
+                </div>
+              </el-form-item>
+            </el-form>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import crypto from 'crypto'
+export default {
+  name: "changePassword",
+  props: {},
+  computed: {},
+  created() {},
+  data() {
+    let validatePass0 = (rule, value, callback) => {
+      if (value === '') {
+        callback(new Error('请输入旧密码'));
+      } else {
+        callback();
+      }
+    };
+    let validatePass1 = (rule, value, callback) => {
+      if (value === '') {
+        callback(new Error('请输入新密码'));
+      } else {
+        if (this.confirmPassword !== '') {
+          this.$refs.passwordForm.validateField('confirmPassword');
+        }
+        callback();
+      }
+    };
+    let validatePass2 = (rule, value, callback) => {
+      if (this.confirmPassword === '') {
+        callback(new Error('请再次输入密码'));
+      } else if (this.confirmPassword !== this.newPassword) {
+        callback(new Error('两次输入密码不一致!'));
+      } else {
+        callback();
+      }
+    };
+    return {
+      oldPassword: null,
+      newPassword: null,
+      confirmPassword: null,
+      showDialog: false,
+      isLoging: false,
+      rules: {
+        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" }],
+      },
+    };
+  },
+  methods: {
+    openDialog: function () {
+      this.showDialog = true;
+    },
+    onSubmit: function () {
+      this.$axios({
+        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.code === 0) {
+          this.$message({
+            showClose: true,
+            message: '修改成功,请重新登录',
+            type: 'success'
+          });
+          this.showDialog = false;
+          setTimeout(()=>{
+            // 删除cookie,回到登录页面
+            this.$cookies.remove("session");
+            this.$router.push('/login');
+            this.sseSource.close();
+          },800)
+        }else {
+          this.$message({
+            showClose: true,
+            message: '修改密码失败,是否已登录(接口鉴权关闭无法修改密码)',
+            type: 'error'
+          });
+        }
+      }).catch((error)=> {
+        console.error(error)
+      });
+    },
+    close: function () {
+      this.showDialog = false;
+      this.oldPassword = null;
+      this.newPassword = null;
+      this.confirmPassword = null;
+    },
+  },
+};
+</script>

--
Gitblit v1.9.3