From 634cae1f3f243210b0059aae35a267c375c242a9 Mon Sep 17 00:00:00 2001 From: 田源 <tianyuan@vci-tech.com> Date: 星期四, 02 一月 2025 09:59:47 +0800 Subject: [PATCH] 首页登录默认上次登录成功的账号 --- Source/plt-web/plt-web-ui/src/page/login/userlogin.vue | 143 +++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 123 insertions(+), 20 deletions(-) diff --git a/Source/plt-web/plt-web-ui/src/page/login/userlogin.vue b/Source/plt-web/plt-web-ui/src/page/login/userlogin.vue index fad37a7..027bd01 100644 --- a/Source/plt-web/plt-web-ui/src/page/login/userlogin.vue +++ b/Source/plt-web/plt-web-ui/src/page/login/userlogin.vue @@ -7,17 +7,6 @@ status-icon > - <!-- <el-form-item prop="selectInput">--> - <!-- <el-select v-model="loginForm.value" placeholder="璇烽�夋嫨缁勭粐" style="width: 326px" @change="selectchange">--> - <!-- <i slot="prefix" class="el-icon-s-operation"/>--> - <!-- <el-option--> - <!-- v-for="(item,index) in loginForm.region"--> - <!-- :key="index"--> - <!-- :label="item.TENANT_NAME"--> - <!-- :value="item.TENANT_ID">--> - <!-- </el-option>--> - <!-- </el-select>--> - <!-- </el-form-item>--> <el-form-item prop="username"> <el-input v-model="loginForm.username" :placeholder="$t('login.username')" @@ -46,7 +35,16 @@ @click.native.prevent="handleLogin">{{ $t('login.submit') }} </el-button> </el-form-item> - + <el-dialog + v-dialogDrag + :visible.sync="passwordVisible" + append-to-body="true" + class="avue-dialog" + style="margin-top: -15vh" + title="淇敼瀵嗙爜" + width="50%"> + <avue-form ref="changeForm" v-model="passwordForm" :option="passwordOption" @submit="submitSwitch"/> + </el-dialog> </el-form> </template> @@ -55,11 +53,63 @@ import {mapGetters} from "vuex"; import {info} from "@/api/system/tenant"; import {getTopUrl} from "@/util/util"; +import func from "@/util/func"; +import {changePassword} from "@/api/user"; export default { name: "userlogin", data() { return { + userName: '', + passwordVisible: false, + passwordForm: {}, + passwordOption: { + submitText: '淇濆瓨', + column: [ + { + label: '鐧婚檰瀵嗙爜', + prop: 'oldPassword', + span: 24, + labelWidth: "15%", + type: 'password', + rules: [ + { + required: true, + message: '璇疯緭鍏ョ櫥闄嗗瘑鐮�', + trigger: 'blur' + } + ] + }, + { + label: '鏂扮櫥闄嗗瘑鐮�', + prop: 'password', + span: 24, + labelWidth: "15%", + type: 'password', + rules: [ + { + required: true, + message: '璇疯緭鍏ユ柊鐧婚檰瀵嗙爜', + trigger: 'blur' + } + ] + }, + { + label: '鏂板瘑鐮佺櫥闄嗙‘璁�', + prop: 'confirmPassword', + span: 24, + labelWidth: "15%", + type: 'password', + rules: [ + { + required: true, + message: '璇风‘璁ょ櫥闄嗗瘑鐮�', + trigger: 'blur' + } + ] + } + ] + }, tenantMode: this.website.tenantMode, ButtonList: [], loginForm: { @@ -70,7 +120,7 @@ //瑙掕壊ID roleId: "", //鐢ㄦ埛鍚� - username: "admin", + username: "", //瀵嗙爜 password: "", selectInput: '', @@ -108,6 +158,7 @@ }, created() { // this.getTenant(); + this.loginForm.username = this.userInfo.userId; }, mounted() { //鍦╩ounted鑾峰彇棣栭〉涓嬫媺鑿滃崟鏁版嵁 @@ -162,6 +213,10 @@ done(); }, handleLogin() { + if (!this.loginForm.username) { + this.$message.error('璇疯緭鍏ョ敤鎴峰悕'); + return; + } if (!this.loginForm.password) { this.$message.error('璇疯緭鍏ュ瘑鐮�'); return; @@ -175,9 +230,32 @@ spinner: "el-icon-loading" }); this.$store.dispatch("LoginByUsername", this.loginForm).then((data) => { - if (data.obj.passwordInfo) { - this.$message.warning(data.obj.passwordInfo); + if (data.obj.failCode !== 'loginSuccess') { + if (data.obj.failCode === 'passwordRemainDay') { + this.$message.warning(data.obj.passwordInfo); + this.$router.push({path: this.tagWel.value}); + loading.close(); + return; + } + + if (data.obj.failCode === 'userIsLocked') { + this.$message.error(`鐧诲綍閿欒娆℃暟杩囧锛岃处鍙疯閿佸畾銆�${data.obj.failMsgArray[0]}銆戝垎閽焋); + loading.close(); + return; + } + + if (data.obj.failCode === 'userPwdNotEqual') { + this.$message.error('瀵嗙爜閿欒锛岃閲嶆柊杈撳叆锛�'); + loading.close(); + return; + } + this.$message.error(data.msg); + + if (data.obj.mustChangePassword) { + this.passwordVisible = true; + } } + if (this.website.switchMode) { const deptId = this.userInfo.deptOid; const roleId = this.userInfo.userOid; @@ -190,14 +268,12 @@ }); return false; } - } - ; + }; + this.$router.push({path: this.tagWel.value}); loading.close(); }).catch((err) => { - console.log('err', err) loading.close(); - }); } }); @@ -214,7 +290,34 @@ this.$parent.$refs.login.style.backgroundImage = `url(${data.data.backgroundUrl})`; } }) - } + }, + + submitSwitch(form, done) { + let userInfo = JSON.parse(localStorage.getItem('saber-userInfo')); + + let params = { + userName: this.loginForm.username, + oldPassword: func.encryptData(form.oldPassword, 'daliantan0v0vcip'), + password: func.encryptData(form.password, 'daliantan0v0vcip'), + confirmPassword: func.encryptData(form.confirmPassword, 'daliantan0v0vcip'), + } + changePassword(params).then(res => { + if (res.data.code === 200) { + this.$message.success('淇敼鎴愬姛锛屽嵆灏嗚烦杞埌棣栭〉'); + this.passwordVisible = false; + this.$refs.changeForm.resetFields(); + this.$store.dispatch("LoginByUsername", {...this.loginForm, password: form.confirmPassword}).then(data => { + if (data.obj.failCode !== 'loginSuccess' && data.obj.failCode !== 'passwordRemainDay') { + this.$message.error(data.msg); + } + this.$router.push({path: this.tagWel.value}); + }) + } + }).catch(err => { + console.log(err); + }) + done(); + }, } }; </script> -- Gitblit v1.9.3