From 96783deec8d19e03d4484751df0a2ccd252a9716 Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期四, 17 十月 2024 18:40:00 +0800 Subject: [PATCH] 密碼失效修改密碼 --- src/views/login/index.vue | 107 +++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 90 insertions(+), 17 deletions(-) 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