From 495088e8272e54ad244655b78be53d1400ffd2d4 Mon Sep 17 00:00:00 2001
From: zuozhengqing <a13193816592@163.com>
Date: 星期一, 05 二月 2024 19:16:21 +0800
Subject: [PATCH] 添加修改密码功能,api拦截
---
src/common/untils/request.js | 12 ++
src/api/admin/user.js | 20 ++++
src/components/layout/components/appHeader/index.vue | 34 ++++++
src/components/layout/components/appHeader/components/updatePassWord.vue | 182 ++++++++++++++++++++++++++++++++++++
4 files changed, 245 insertions(+), 3 deletions(-)
diff --git a/src/api/admin/user.js b/src/api/admin/user.js
new file mode 100644
index 0000000..c676610
--- /dev/null
+++ b/src/api/admin/user.js
@@ -0,0 +1,20 @@
+import request from "@/common/untils/request"
+
+// 閲嶇疆瀵嗙爜
+export function initPassword(data) {
+ return request({
+ url: "/api/user/initPassword",
+ method: "post",
+ data,
+ });
+}
+// 璁剧疆鏂板瘑鐮�
+export function modifiedPwd(data) {
+ return request({
+ url: "/api/user/modifiedPwd",
+ method: "post",
+ data,
+ });
+}
+
+
diff --git a/src/common/untils/request.js b/src/common/untils/request.js
index 3e507c4..1c10074 100644
--- a/src/common/untils/request.js
+++ b/src/common/untils/request.js
@@ -78,6 +78,18 @@
// duration: 5 * 1000
// })
return Promise.reject(res.data)
+ }else if([2036].includes(res.data.code)){
+ if (isDev){
+ window.location = getApsPage()+'/commonWeb?resetPwd=true'
+ }else {
+ // JWT閴存潈澶辨晥 璺宠浆鍒扮櫥褰曢〉
+ window.location = getApsPage()+'/commonWeb?resetPwd=true'
+ }
+ return Promise.reject(res.data)
+
+ // if(window.location.pathname && window.location.pathname !== '/login'){
+ // window.location = window.location.origin+'/login'
+ // }
}
},
(error) => {
diff --git a/src/components/layout/components/appHeader/components/updatePassWord.vue b/src/components/layout/components/appHeader/components/updatePassWord.vue
new file mode 100644
index 0000000..8d089bf
--- /dev/null
+++ b/src/components/layout/components/appHeader/components/updatePassWord.vue
@@ -0,0 +1,182 @@
+<template>
+ <div>
+ <el-dialog
+ title="淇敼瀵嗙爜"
+ :visible.sync="editConfig.dialogVisible"
+ width="30%"
+ :before-close="handleClose">
+ <el-form :label-position="labelPosition" :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
+ <el-form-item label="鏃у瘑鐮�:" prop="oldPass">
+ <el-input type="password" clearable v-model="ruleForm.oldPass" autocomplete="off"></el-input>
+ </el-form-item>
+ <el-form-item label="鏂板瘑鐮�:" prop="pass">
+ <el-input type="password" clearable v-model="ruleForm.pass" autocomplete="off"></el-input>
+ </el-form-item>
+ <el-form-item label="纭瀵嗙爜:" prop="checkPass">
+ <el-input type="password" clearable v-model="ruleForm.checkPass" autocomplete="off"></el-input>
+ </el-form-item>
+ <el-form-item>
+ <el-button type="primary" @click="submitForm('ruleForm')" style="margin-bottom:20px;">纭</el-button>
+ </el-form-item>
+ </el-form>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+import { modifiedPwd } from "@/api/admin/user";
+export default {
+ props: {
+ editCommonConfig: {
+ type: Object,
+ default: () => {
+ return {
+ dialogVisible:false,
+ userId:"",
+ };
+ },
+ },
+ },
+ data() {
+ var validatePass = (rule, value, callback) => {
+ if (value === '') {
+ callback(new Error('璇疯緭鍏ユ棫瀵嗙爜'));
+ }else{
+ callback();
+ }
+ };
+ var validatePass1 = (rule, value, callback) => {
+ if (value === '') {
+ callback(new Error('璇疯緭鍏ユ柊瀵嗙爜'));
+ } else {
+ if (this.ruleForm.checkPass !== '') {
+ this.$refs.ruleForm.validateField('checkPass');
+ }
+ callback();
+ }
+ };
+ var validatePass2 = (rule, value, callback) => {
+ if (value === '') {
+ callback(new Error('璇峰啀娆¤緭鍏ュ瘑鐮�'));
+ } else if (value !== this.ruleForm.pass) {
+ callback(new Error('涓ゆ杈撳叆瀵嗙爜涓嶄竴鑷�!'));
+ } else {
+ callback();
+ }
+ };
+ return {
+ editConfig:this.editCommonConfig,
+ // dialogVisible: false
+ ruleForm: {
+ oldPass:'',
+ pass: '',
+ checkPass: '',
+ },
+ rules: {
+ oldPass: [
+ { validator: validatePass, trigger: 'blur', required: true, }
+ ],
+ pass: [
+ { validator: validatePass1, trigger: 'blur', required: true, }
+ ],
+ checkPass: [
+ { validator: validatePass2, trigger: 'blur', required: true, }
+ ],
+ },
+ labelPosition:"left",
+ userId : '',
+ };
+ },
+ computed: {
+
+ },
+ created() {
+
+ },
+ mounted() {
+ },
+ watch: {
+
+ },
+ methods: {
+ //
+ environmentType(){
+ let type
+ if (location.href.includes('192.168.20.119')) {
+ type = 'test'
+ } else if (location.href.includes('192.168') || location.href.includes('localhost')) {
+ type = 'dev'
+ } else {
+ type = 'prod'
+ }
+ return type
+ },
+ //
+ getApsPage(){
+ // 棣栭〉閮ㄧ讲鍦ㄥ悇涓幆澧冪殑绔彛
+ const loginPathMap = {
+ prod:`//${window.location.hostname}:9080`,
+ test:`//192.168.20.119:9080`,
+ // 鎯宠烦鍒版湰鍦板惎鍔ㄧ殑鐧诲綍椤电殑璇濋渶瑕佹妸dev鏀规垚浣犳湰鍦伴」鐩矾寰�
+ dev: `//192.168.8.108:8080`
+ }
+
+ return loginPathMap[this.environmentType()]
+ },
+ handleClose(done){
+ done();
+ },
+ modifiedPwd(params){
+ modifiedPwd(params).then((res)=>{
+ if(res.code==200){
+ this.editConfig.dialogVisible=false
+ alert("瀵嗙爜淇敼鎴愬姛,璇烽噸鏂扮櫥褰�!")
+ window.location = this.getApsPage()+'/login'
+ }
+ })
+ },
+ submitForm(formName) {
+ this.$refs[formName].validate((valid) => {
+ if (valid) {
+ console.log(this.ruleForm,"鐪嬬湅琛ㄥ崟")
+ this.modifiedPwd({
+ userId:this.editConfig.userId,
+ oldPwd:this.ruleForm.oldPass,
+ newPwd:this.ruleForm.pass,
+ })
+
+ } else {
+ console.log('error submit!!');
+ return false;
+ }
+ });
+ },
+
+ },
+ components: {
+
+ },
+};
+</script>
+
+<style scoped lang="scss">
+.el-form{
+ margin-top:20px;
+}
+::v-deep {
+ .el-form-item__content{
+ display: flex;
+ flex-direction: row-reverse;
+ }
+ .el-dialog__header{
+ .el-dialog__title{
+ font-size:18px;
+
+ }
+ }
+ .el-form{
+ margin:20px;
+ }
+
+}
+</style>
diff --git a/src/components/layout/components/appHeader/index.vue b/src/components/layout/components/appHeader/index.vue
index 5c33bdc..038b472 100644
--- a/src/components/layout/components/appHeader/index.vue
+++ b/src/components/layout/components/appHeader/index.vue
@@ -4,29 +4,53 @@
<div class="header-user-info">
<div class="avatar"><el-avatar icon="el-icon-user-solid"></el-avatar></div>
<el-dropdown @command="handleCommand">
- <div class="el-dropdown-link">{{ username }}<i class="el-icon-arrow-down el-icon--right"></i></div>
+ <div class="el-dropdown-link">浣犲ソ {{ username }}<i class="el-icon-arrow-down el-icon--right"></i></div>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="logout">閫�鍑�</el-dropdown-item>
+ <el-dropdown-item @click.native="updatePwd">
+ <d2-icon name="unlock" class="d2-mr-5" />
+ 淇敼瀵嗙爜
+ </el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
+ <UpdatePassWord :editCommonConfig="editConfig"></UpdatePassWord>
+
</div>
</div>
</template>
<script>
import Cookies from "js-cookie"
+import UpdatePassWord from "./components/updatePassWord"
export default {
name: "SalesLead",
props: {
headerTitle: String
},
+ components:{
+ UpdatePassWord,
+ },
data() {
return {
- username: ""
+ username: "",
+ editConfig:{
+ dialogVisible:false,
+ userId:"",
+ }
}
},
+ created(){
+ const userObj = Cookies.get('userObj');
+ if (userObj) {
+ let userInfo = JSON.parse(userObj);
+ this.editConfig.userId=userInfo.id
+ this.username=userInfo.nickName
+ } else {
+ console.log('Object not found in cookie');
+ }
+ },
mounted() {
- this.username = document.cookie.replace(/(?:(?:^|.*;\s*)username\s*=\s*([^;]*).*$)|^.*$/, "$1")
+ // this.username = document.cookie.replace(/(?:(?:^|.*;\s*)username\s*=\s*([^;]*).*$)|^.*$/, "$1")
},
methods: {
environmentType() {
@@ -77,6 +101,10 @@
})
})
}
+
+ },
+ updatePwd(){
+ this.editConfig.dialogVisible=true
}
}
}
--
Gitblit v1.8.0