From 96783deec8d19e03d4484751df0a2ccd252a9716 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期四, 17 十月 2024 18:40:00 +0800
Subject: [PATCH] 密碼失效修改密碼
---
src/api/index.js | 6 +-
src/api/modules/user.js | 6 ++
src/views/login/index.vue | 107 +++++++++++++++++++++++++++++++++++++++++++++--------
3 files changed, 98 insertions(+), 21 deletions(-)
diff --git a/src/api/index.js b/src/api/index.js
index 6457384..353b3a7 100644
--- a/src/api/index.js
+++ b/src/api/index.js
@@ -22,7 +22,7 @@
case 401:
console.log("鏈嶅姟鍣ㄨ璇佸け璐�");
location.href = '/login';
-
+
break;
case 403:
console.log("鏈嶅姟鍣ㄦ嫆缁濊闂�");
@@ -50,7 +50,7 @@
// request鎷︽埅鍣�
service.interceptors.request.use(
(config) => {
-
+
// const token = localStorage.getItem('authToken');
// if (token) {
// config.headers['Authorization'] = `Bearer ${token}`;
@@ -67,7 +67,7 @@
// response鎷︽埅鍣�
service.interceptors.response.use(
(response) => {
- if (response.status === 200 && response.data.code === 1){
+ if (response.status === 200 && (response.data.code === 1 || response.data.code ===205)){
return Promise.resolve(response.data);
} else {
errorHandle(response.data.code, response.data);
diff --git a/src/api/modules/user.js b/src/api/modules/user.js
index b2dd01a..a3076ef 100644
--- a/src/api/modules/user.js
+++ b/src/api/modules/user.js
@@ -8,4 +8,8 @@
// 閫�鍑虹櫥褰�
export const logout = () => {
return service.post('/api/user/logout');
-}
\ No newline at end of file
+}
+//淇敼瀵嗙爜
+export const updatePassword = (data= {}) => {
+ return service.post('/api/common/user/update/password', data)
+}
diff --git a/src/views/login/index.vue b/src/views/login/index.vue
index 544195b..f0d0e6c 100644
--- a/src/views/login/index.vue
+++ b/src/views/login/index.vue
@@ -14,37 +14,67 @@
<el-form-item prop="userName">
<label>鐢ㄦ埛鍚� </label>
<el-input ref="userName" v-model="loginForm.userName" class="lowin-input" placeholder="鐢ㄦ埛鍚�"
- name="userName" type="text" tabindex="1" auto-complete="on" />
+ name="userName" type="text" tabindex="1" auto-complete="on"/>
</el-form-item>
</div>
<div class="lowin-group password-group">
<el-form-item prop="password">
<!-- <label>瀵嗙爜 <a href="#" class="forgot-link">蹇樿瀵嗙爜?</a></label> -->
<el-input class="lowin-input" :key="passwordType" ref="password" v-model="loginForm.password"
- :type="passwordType" placeholder="瀵嗙爜" name="password" tabindex="2" auto-complete="on"
- @keyup.native="checkCapslock" @blur="capsTooltip = false" @keyup.enter.native="handleLogin" />
+ :type="passwordType" placeholder="瀵嗙爜" name="password" tabindex="2" auto-complete="on"
+ @keyup.native="checkCapslock" @blur="capsTooltip = false"
+ @keyup.enter.native="handleLogin"/>
</el-form-item>
</div>
<el-button :loading="loading" class="lowin-btn login-btn" @click="handleLogin">鐧诲綍</el-button>
</el-form>
+
</div>
</div>
</div>
</div>
</div>
+ <el-dialog
+ title="淇敼瀵嗙爜"
+ v-model="forceUpdateShow"
+ width="400px"
+ >
+ <div style="margin-bottom: 10px; color: #aa1111">鎮ㄧ殑瀵嗙爜宸茬粡杩囨湡锛岃閲嶆柊璁剧疆~</div>
+ <el-form ref="updatePasswordFormRef" :model="updatePasswordForm" :rules="updatePasswordRules">
+ <el-form-item label="鏂板瘑鐮�" prop="newPassword">
+ <el-input v-model="updatePasswordForm.newPassword" placeholder="搴斿寘鍚ぇ灏忓啓銆佹暟瀛�" show-password></el-input>
+ </el-form-item>
+ <el-form-item label="纭瀵嗙爜">
+ <el-input v-model="updatePasswordForm.confirmPassword" placeholder="纭瀵嗙爜" show-password></el-input>
+ </el-form-item>
+ </el-form>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="forceUpdateShow = false">鍏� 闂�</el-button>
+ <el-button type="primary" @click="changePassword">淇� 鏀�</el-button>
+ </span>
+ </el-dialog>
</template>
<script setup>
-import { ref, reactive, onMounted, nextTick } from 'vue';
-import { useRouter } from 'vue-router';
-import { login } from '@/api/modules/user.js';
-import { useUserStore } from '@/store/index.js';
+import {ref, reactive, onMounted, nextTick} from 'vue';
+import {useRouter} from 'vue-router';
+import {ElMessage} from 'element-plus';
+import {login, updatePassword} from '@/api/modules/user.js';
+import {useUserStore} from '@/store/index.js';
const userStore = useUserStore();
const router = useRouter();
+
+const forceUpdateShow = ref(false);
+
+const updatePasswordForm = reactive({
+ userId: null,
+ newPassword: '',
+ confirmPassword: ''
+});
const validateUsername = (rule, value, callback) => {
if (value.length < 5) {
@@ -60,6 +90,19 @@
callback();
}
};
+const validateNewPassword = (rule, value, callback) => {
+ if (value === '') {
+ callback(new Error('璇疯緭鍏ュ瘑鐮�'))
+ } else if (!/[A-Z]/.test(value)) {
+ callback(new Error('瀵嗙爜蹇呴』鍖呭惈鑷冲皯涓�涓ぇ鍐欏瓧姣�'))
+ } else if (!/[a-z]/.test(value)) {
+ callback(new Error('瀵嗙爜蹇呴』鍖呭惈鑷冲皯涓�涓皬鍐欏瓧姣�'))
+ } else if (!/[0-9]/.test(value)) {
+ callback(new Error('瀵嗙爜蹇呴』鍖呭惈鑷冲皯涓�涓暟瀛�'))
+ } else {
+ callback()
+ }
+}
const loginForm = reactive({
userName: '',
@@ -67,22 +110,25 @@
remember: false
});
const loginRules = reactive({
- userName: [{ required: true, trigger: 'blur', validator: validateUsername }],
- password: [{ required: true, trigger: 'blur', validator: validatePassword }]
+ userName: [{required: true, trigger: 'blur', validator: validateUsername}],
+ password: [{required: true, trigger: 'blur', validator: validatePassword}]
+});
+const updatePasswordRules = reactive({
+ newPassword: [{required: true, trigger: 'blur', validator: validateNewPassword}]
});
const passwordType = ref('password');
const capsTooltip = ref(false);
const loading = ref(false);
const showDialog = ref(false);
+
const userName = ref(null);
const password = ref(null);
const loginFormRef = ref(null);
+const updatePasswordFormRef = ref(null);
-
-
-const checkCapslock = ({ shiftKey, key } = {}) => {
+const checkCapslock = ({shiftKey, key} = {}) => {
if (key && key.length === 1) {
if (shiftKey && (key >= 'a' && key <= 'z') || !shiftKey && (key >= 'A' && key <= 'Z')) {
capsTooltip.value = true;
@@ -111,16 +157,43 @@
if (valid) {
loading.value = true;
login(loginForm).then(res => {
- loading.value = false;
- userStore.setUserInfo(res.data);
- router.push('/index');
+ // 濡傛灉code涓�205锛屽垯寮哄埗淇敼瀵嗙爜
+ if (res && res.code === 205) {
+ updatePasswordForm.userId = res.data
+ console.log(updatePasswordForm.userId)
+ forceUpdateShow.value = true;
+ console.log(forceUpdateShow.value)
+ loading.value = false
+ } else {
+ loading.value = false;
+ userStore.setUserInfo(res.data);
+ router.push('/index');
+ }
}).catch(err => {
loading.value = false;
});
}
});
};
-
+const changePassword = () => {
+ updatePasswordFormRef.value.validate((valid) => {
+ if (valid) {
+ if (updatePasswordForm.newPassword !== updatePasswordForm.confirmPassword) {
+ ElMessage.error('涓ゆ杈撳叆鐨勫瘑鐮佷笉涓�鑷�');
+ return;
+ }
+ updatePassword(updatePasswordForm).then(res => {
+ if (res.code === 1) {
+ ElMessage.success('瀵嗙爜淇敼鎴愬姛銆傝閲嶆柊鐧诲綍');
+ loginForm.password = '';
+ forceUpdateShow.value = false;
+ }
+ }).catch(error => {
+ ElMessage.error('瀵嗙爜淇敼澶辫触锛�' + error.message);
+ });
+ }
+ });
+};
onMounted(() => {
if (loginForm.userName === '') {
userName.value.focus();
@@ -398,4 +471,4 @@
padding: 0 10px;
}
}
-</style>
\ No newline at end of file
+</style>
--
Gitblit v1.8.0