From eb010c8d0f12c4861d2fde556f8ca441ba5e10d9 Mon Sep 17 00:00:00 2001 From: lohir <3399054449@qq.com> Date: 星期三, 16 十月 2024 09:59:24 +0800 Subject: [PATCH] bug --- src/views/login/index.vue | 115 +++++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 83 insertions(+), 32 deletions(-) diff --git a/src/views/login/index.vue b/src/views/login/index.vue index d3d36d8..888e086 100644 --- a/src/views/login/index.vue +++ b/src/views/login/index.vue @@ -1,14 +1,15 @@ <template> <div class="login-container"> - <el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form" auto-complete="on" label-position="left"> + <el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form" auto-complete="on" + label-position="left"> <div class="title-container"> - <h3 class="title">瀛︿箣鎬濈鐞嗙郴缁�</h3> + <h3 class="title">姹熻タ璇煶瑙嗛鍩硅绯荤粺</h3> </div> <el-form-item prop="userName"> <span class="svg-container"> - <svg-icon icon-class="user" /> + <svg-icon icon-class="user"/> </span> <el-input ref="userName" @@ -24,7 +25,7 @@ <el-tooltip v-model="capsTooltip" content="Caps lock is On" placement="right" manual> <el-form-item prop="password"> <span class="svg-container"> - <svg-icon icon-class="password" /> + <svg-icon icon-class="password"/> </span> <el-input :key="passwordType" @@ -40,26 +41,49 @@ @keyup.enter.native="handleLogin" /> <span class="show-pwd" @click="showPwd"> - <svg-icon :icon-class="passwordType === 'password' ? 'eye' : 'eye-open'" /> + <svg-icon :icon-class="passwordType === 'password' ? 'eye' : 'eye-open'"/> </span> </el-form-item> </el-tooltip> <el-checkbox v-model="loginForm.remember" style="margin-bottom: 20px;margin-left: 5px;">璁颁綇瀵嗙爜</el-checkbox> - <el-button :loading="loading" type="primary" style="width:100%;margin-bottom:30px;" @click.native.prevent="handleLogin">鐧诲綍</el-button> + <el-button :loading="loading" type="primary" style="width:100%;margin-bottom:30px;" + @click.native.prevent="handleLogin">鐧诲綍 + </el-button> </el-form> - <div class="account-foot-copyright"> - <span>Copyright 漏2019-2024 姝︽眽鎬濈淮璺宠穬绉戞妧鏈夐檺鍏徃 鐗堟潈鎵�鏈�</span> - </div> + <el-dialog + title="淇敼瀵嗙爜" + :visible.sync="forceUpdateShow" + :close-on-click-modal="false" + :close-on-press-escape="false" + width="400px" + :show-close="false" + > + <div style="margin-bottom: 10px; color: #aa1111">鎮ㄧ殑瀵嗙爜宸茬粡杩囨湡锛岃閲嶆柊璁剧疆~</div> + <el-form :model="updatePasswordForm"> + <el-form-item label="鏂板瘑鐮�"> + <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="updatePassword">淇� 鏀�</el-button> + </span> + </el-dialog> + </div> </template> <script> import { mapMutations } from 'vuex' import loginApi from '@/api/login' +import UserApi from '@/api/user' export default { name: 'Login', @@ -79,14 +103,20 @@ } } return { + forceUpdateShow: false, + updatePasswordForm: { + userId: null, + newPassword: '', + confirmPassword: '' + }, loginForm: { userName: '', password: '', remember: false }, loginRules: { - userName: [{ required: true, trigger: 'blur', validator: validateUsername }], - password: [{ required: true, trigger: 'blur', validator: validatePassword }] + userName: [{ required: true, trigger: 'blur' }], + password: [{ required: true, trigger: 'blur' }] }, passwordType: 'password', capsTooltip: false, @@ -108,6 +138,19 @@ // window.removeEventListener('storage', this.afterQRScan) }, methods: { + updatePassword () { + if (this.updatePasswordForm.newPassword !== this.updatePasswordForm.confirmPassword) { + this.$message.error('涓ゆ杈撳叆鐨勫瘑鐮佷笉涓�鑷�') + return + } + UserApi.updatePassword(this.updatePasswordForm).then(res => { + if (res.code === 1) { + this.$message.success('瀵嗙爜淇敼鎴愬姛銆傝閲嶆柊鐧诲綍') + this.loginForm.password = '' + this.forceUpdateShow = false + } + }) + }, checkCapslock ({ shiftKey, key } = {}) { if (key && key.length === 1) { // eslint-disable-next-line no-mixed-operators @@ -136,9 +179,17 @@ this.$refs.loginForm.validate(valid => { if (valid) { this.loading = true - loginApi.login(this.loginForm).then(function (result) { + loginApi.login(this.loginForm).then(result => { + // 濡傛灉code涓�205锛屽垯寮哄埗淇敼瀵嗙爜 + if (result && result.code === 205) { + this.updatePasswordForm.userId = result.data + this.forceUpdateShow = true + this.loading = false + return + } if (result && result.code === 1) { _this.setUserName(_this.loginForm.userName) + _this.setUserInfo(result.data) _this.$router.push({ path: '/dashboard' }) } else { _this.loading = false @@ -155,7 +206,7 @@ } }) }, - ...mapMutations('user', ['setUserName']) + ...mapMutations('user', ['setUserName', 'setUserInfo']) } } </script> @@ -164,13 +215,12 @@ /* 淇input 鑳屾櫙涓嶅崗璋� 鍜屽厜鏍囧彉鑹� */ /* Detail see https://github.com/PanJiaChen/vue-element-admin/pull/927 */ -$bg:#283443; -$light_gray:#fff; +$bg: #283443; +$light_gray: #fff; $cursor: #fff; @supports (-webkit-mask: none) and (not (cater-color: $cursor)) { .login-container .el-input input { - color: $cursor; } } @@ -182,50 +232,52 @@ width: 85%; input { - background: transparent; + background: white; border: 0px; -webkit-appearance: none; border-radius: 0px; padding: 12px 5px 12px 15px; - color: $light_gray; + color: black; height: 47px; - caret-color: $cursor; + caret-color: black; &:-webkit-autofill { - box-shadow: 0 0 0px 1000px $bg inset !important; - -webkit-text-fill-color: $cursor !important; + box-shadow: 0 0 0px 1000px white inset !important; + -webkit-text-fill-color: black !important; } } } .el-form-item { - border: 1px solid rgba(255, 255, 255, 0.1); - background: rgba(0, 0, 0, 0.1); + border: 1px solid darkgrey; border-radius: 5px; - color: #454545; + color: white; } } </style> <style lang="scss" scoped> -$bg:#2d3a4b; -$dark_gray:#889aa4; -$light_gray:#eee; +$bg: #2d3a4b; +$dark_gray: #889aa4; +$light_gray: #eee; .login-container { + background-image: url('../../assets/loginBackground.png'); + background-size: cover; + background-attachment: fixed; min-height: 100%; width: 100%; - background-color: $bg; + background-color: white; overflow: hidden; .login-form { position: relative; width: 520px; max-width: 100%; - padding:30px 50px 10px 50px; - margin:120px auto auto auto; + padding: 30px 50px 10px 50px; + margin: 200px auto auto auto; overflow: hidden; - background: rgba(252, 254, 255, 0.11) + background: white; } .tips { @@ -253,7 +305,6 @@ .title { font-size: 26px; - color: $light_gray; margin: 0px auto 40px auto; text-align: center; font-weight: bold; -- Gitblit v1.8.0