From ba3cb9849a452b760bd8566934b65cd534b536bb Mon Sep 17 00:00:00 2001
From: feige <feige@qq.com>
Date: 星期二, 21 十月 2025 08:09:55 +0800
Subject: [PATCH] 修改忘记密码
---
ruoyi-ui/src/views/travel/travelInfo.vue | 6
ruoyi-ui/src/api/login.js | 21 +++++
ruoyi-ui/src/views/login.vue | 169 +++++++++++++++++++++++++++++++++++++++++
3 files changed, 191 insertions(+), 5 deletions(-)
diff --git a/ruoyi-ui/src/api/login.js b/ruoyi-ui/src/api/login.js
index ce50a53..888805c 100644
--- a/ruoyi-ui/src/api/login.js
+++ b/ruoyi-ui/src/api/login.js
@@ -1,5 +1,26 @@
import request from '@/utils/request'
+
+
+// 鑾峰彇楠岃瘉鐮�
+export function getEmailCode(data) {
+ return request({
+ url: '/getCode',
+ // headers: {
+ // 'Content-Type': 'application/',
+ // },
+ method: 'post',
+ data: data
+ })
+}
+// 閲嶇疆瀵嗙爜
+export function resetPassword(data) {
+ return request({
+ url: '/reset',
+ method: 'post',
+ data: data
+ })
+}
// 鐧诲綍鏂规硶
export function login(nickname, password, code, uuid) {
//alert(nickname)
diff --git a/ruoyi-ui/src/views/login.vue b/ruoyi-ui/src/views/login.vue
index 992b754..1d197f8 100644
--- a/ruoyi-ui/src/views/login.vue
+++ b/ruoyi-ui/src/views/login.vue
@@ -141,6 +141,11 @@
</el-button>
</el-form-item>
+
+ <!-- 娣诲姞蹇樿瀵嗙爜鎸夐挳 -->
+ <el-form-item>
+ <el-link type="primary" @click="openForgotPasswordDialog">蹇樿瀵嗙爜</el-link>
+ </el-form-item>
<el-form-item>
<a href="https://www.bendudu.com:8080/profile/upload/2023/10/10/Bendudu20231010_20231010203358A033.apk">鐐瑰嚮姝ゅ涓嬭浇搴旂敤绋嬪簭</a>
@@ -214,7 +219,77 @@
</div>
</el-dialog>
-
+ <el-dialog :visible.sync="forgotPasswordDialogVisible" :title="forgotPasswordStep === 1 ? '蹇樿瀵嗙爜' : '閲嶇疆瀵嗙爜'" width="30%">
+ <!-- 姝ラ 1锛氳緭鍏ラ偖绠卞彂閫侀獙璇佺爜 -->
+ <div v-if="forgotPasswordStep === 1">
+ <p style="margin-bottom: 20px; color: #666;">蹇樿瀵嗙爜锛屽彲浠ラ�氳繃閭鎵惧洖锛岃杈撳叆娉ㄥ唽閭鑾峰彇楠岃瘉鐮�</p>
+ <el-form ref="forgotPasswordFormStep1" :model="forgotPasswordForm" :rules="forgotPasswordRulesStep1">
+ <el-form-item prop="nickName">
+ <el-input
+ v-model="forgotPasswordForm.nickName"
+ type="text"
+ auto-complete="off"
+ placeholder="璇疯緭鍏ョ敤鎴峰悕"
+ ></el-input>
+ </el-form-item>
+ <el-form-item prop="email">
+ <el-input
+ v-model="forgotPasswordForm.email"
+ type="text"
+ auto-complete="off"
+ placeholder="璇疯緭鍏ユ敞鍐岄偖绠�"
+ ></el-input>
+ </el-form-item>
+
+ </el-form>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="forgotPasswordDialogVisible = false">鍙栨秷</el-button>
+ <el-button type="primary" @click="sendVerificationCode">鍙戦�侀獙璇佺爜</el-button>
+ </span>
+ </div>
+ <!-- 姝ラ 2锛氳緭鍏ラ獙璇佺爜鍜屾柊瀵嗙爜杩涜淇敼 -->
+ <div v-else>
+ <p style="margin-bottom: 20px; color: #666;">璇疯緭鍏ユ敹鍒扮殑楠岃瘉鐮佸拰鏂板瘑鐮侀噸缃瘑鐮�</p>
+ <el-form ref="forgotPasswordFormStep2" :model="forgotPasswordForm" :rules="forgotPasswordRulesStep2">
+ <el-form-item prop="nickName">
+ <el-input
+ v-model="forgotPasswordForm.nickName"
+ type="text"
+ auto-complete="off"
+ placeholder="璇疯緭鍏ョ敤鎴峰悕"
+ ></el-input>
+ </el-form-item>
+ <el-form-item prop="code">
+ <el-input
+ v-model="forgotPasswordForm.code"
+ auto-complete="off"
+ placeholder="璇疯緭鍏ラ獙璇佺爜"
+ ></el-input>
+ </el-form-item>
+ <el-form-item prop="newPassword">
+ <el-input
+ v-model="forgotPasswordForm.newPassword"
+ type="password"
+ auto-complete="off"
+ placeholder="璇疯緭鍏ユ柊瀵嗙爜"
+ ></el-input>
+ </el-form-item>
+ <el-form-item prop="confirmNewPassword">
+ <el-input
+ v-model="forgotPasswordForm.confirmNewPassword"
+ type="password"
+ auto-complete="off"
+ placeholder="璇峰啀娆¤緭鍏ユ柊瀵嗙爜"
+ ></el-input>
+ </el-form-item>
+ </el-form>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="goBackToStep1">杩斿洖</el-button>
+ <el-button @click="forgotPasswordDialogVisible = false">鍙栨秷</el-button>
+ <el-button type="primary" @click="submitPasswordReset">纭畾</el-button>
+ </span>
+ </div>
+ </el-dialog>
<el-dialog :visible.sync="qqDialogVisible" title="QQ瀹㈡湇" width="400px">
<div style="text-align: center; padding: 20px;">
@@ -248,7 +323,7 @@
</template>
<script>
-import { getCodeImg,Download,register } from "@/api/login";
+import { getCodeImg,Download,register,getEmailCode, resetPassword } from "@/api/login";
import Cookies from "js-cookie";
import { encrypt, decrypt } from '@/utils/jsencrypt'
@@ -263,7 +338,53 @@
}
};
+ const validateEmail = (rule, value, callback) => {
+ const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
+ if (!value) {
+ return callback(new Error('璇疯緭鍏ラ偖绠�'));
+ }
+ if (!emailRegex.test(value)) {
+ return callback(new Error('璇疯緭鍏ユ纭殑閭鏍煎紡'));
+ }
+ callback();
+ };
+ const equalToNewPassword = (rule, value, callback) => {
+ if (this.forgotPasswordForm.newPassword !== value) {
+ callback(new Error("涓ゆ杈撳叆鐨勬柊瀵嗙爜涓嶄竴鑷�"));
+ } else {
+ callback();
+ }
+ };
return {
+ // ... existing code ...
+ nnme: '',
+ forgotPasswordDialogVisible: false,
+ forgotPasswordStep: 1, // 1 琛ㄧず杈撳叆閭姝ラ锛�2 琛ㄧず杈撳叆楠岃瘉鐮佸拰鏂板瘑鐮佹楠�
+ forgotPasswordForm: {
+ nickName: '',
+ email: '',
+ code: '',
+ newPassword: '',
+ confirmNewPassword: ''
+ },
+ forgotPasswordRulesStep1: {
+ email: [
+ { validator: validateEmail, trigger: 'blur' }
+ ]
+ },
+ forgotPasswordRulesStep2: {
+ code: [
+ { required: true, trigger: 'blur', message: '璇疯緭鍏ラ獙璇佺爜' }
+ ],
+ newPassword: [
+ { required: true, trigger: 'blur', message: '璇疯緭鍏ユ柊瀵嗙爜' },
+ { min: 5, max: 20, message: '鏂板瘑鐮侀暱搴﹀繀椤讳粙浜� 5 鍜� 20 涔嬮棿', trigger: 'blur' }
+ ],
+ confirmNewPassword: [
+ { required: true, trigger: 'blur', message: '璇峰啀娆¤緭鍏ユ柊瀵嗙爜' },
+ { validator: equalToNewPassword, trigger: 'blur' }
+ ]
+ },
qqDialogVisible: false,
url: require('../assets/images/index.png'),
openRegister: false,
@@ -337,6 +458,50 @@
this.getCookie();
},
methods: {
+ openForgotPasswordDialog() {
+ this.forgotPasswordDialogVisible = true;
+ this.forgotPasswordStep = 1;
+ this.forgotPasswordForm = {
+ nickName: '',
+ email: '',
+ code: '',
+ newPassword: '',
+ confirmNewPassword: ''
+ };
+ },
+ sendVerificationCode() {
+ this.nnme = this.forgotPasswordForm.nickName;
+ this.$refs.forgotPasswordFormStep1.validate(valid => {
+ if (valid) {
+ getEmailCode({ nickName:this.forgotPasswordForm.nickName, email: this.forgotPasswordForm.email }).then(() => {
+ this.$message.success('楠岃瘉鐮佸凡鍙戦�佽嚦鎮ㄧ殑閭锛岃鏌ユ敹');
+ this.forgotPasswordStep = 2;
+ }).catch(() => {
+ this.$message.error('楠岃瘉鐮佸彂閫佸け璐ワ紝璇烽噸璇�');
+ });
+ }
+ });
+ },
+ submitPasswordReset() {
+ this.$refs.forgotPasswordFormStep2.validate(valid => {
+ if (valid) {
+ var formData = new FormData();
+ formData.append('nickName', this.forgotPasswordForm.nickName);
+ formData.append('verificationCode', this.forgotPasswordForm.code);
+ formData.append('newPassword', this.forgotPasswordForm.newPassword);
+ resetPassword(formData).then(() => {
+ this.$message.success('瀵嗙爜淇敼鎴愬姛');
+ this.forgotPasswordDialogVisible = false;
+ }).catch(() => {
+ this.$message.error('瀵嗙爜淇敼澶辫触锛岃閲嶈瘯');
+ });
+ }
+ });
+ },
+ goBackToStep1() {
+ this.forgotPasswordStep = 1;
+ },
+
openQQChat() {
this.qqDialogVisible = true;
},
diff --git a/ruoyi-ui/src/views/travel/travelInfo.vue b/ruoyi-ui/src/views/travel/travelInfo.vue
index 94ae0bb..c171a2e 100644
--- a/ruoyi-ui/src/views/travel/travelInfo.vue
+++ b/ruoyi-ui/src/views/travel/travelInfo.vue
@@ -678,9 +678,9 @@
// alert(response.fileNames)
_this.formData.url = _this.formData.url+","+response.fileNames
_this.uploadFileList = []
- alert(response.urls)
- alert(_this.formData.url)
- alert(response.fileNames)
+ // alert(response.urls)
+ // alert(_this.formData.url)
+ // alert(response.fileNames)
// alert(87)
updateTravelBase(_this.formData).then(response => {
_this.$modal.msgSuccess("鍥剧墖涓婁紶鎴愬姛");
--
Gitblit v1.9.1