|  |  |  | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <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> | 
|---|
|  |  |  | 
|---|
|  |  |  | </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'); | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | 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" }], | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | 
|---|
|  |  |  | 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) | 
|---|
|  |  |  | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | close: function () { | 
|---|
|  |  |  | this.showDialog = false; | 
|---|
|  |  |  | this.newPassword= null; | 
|---|
|  |  |  | this.confirmPassword=null; | 
|---|
|  |  |  | this.oldPassword = null; | 
|---|
|  |  |  | this.newPassword = null; | 
|---|
|  |  |  | this.confirmPassword = null; | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }; | 
|---|