From c9ef2687d3460da668d08d58dee6af468ed6693e Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期二, 05 十一月 2024 11:48:34 +0800
Subject: [PATCH] 最新版本541200007
---
admin/src/views/login.vue | 128 +++++++++++++++++++++++++++++++-----------
1 files changed, 94 insertions(+), 34 deletions(-)
diff --git a/admin/src/views/login.vue b/admin/src/views/login.vue
index 296a05e..f75520c 100644
--- a/admin/src/views/login.vue
+++ b/admin/src/views/login.vue
@@ -3,6 +3,7 @@
<img src="@/assets/images/bg@2x.png" class="main_bg" alt="">
<div class="login_wrap">
<div class="login_img">
+ <div class="h2">瀹夊窘瀹夋嘲鐗╂祦鏈夐檺璐d换鍏徃</div>
<div class="h3">鏅烘収鐗╂祦鍥尯瀹夋秷涓�浣撳寲绯荤粺</div>
</div>
<div class="form_wrap">
@@ -42,14 +43,15 @@
<div class="df_ac">
<div class="label">鎵嬫満鍙�</div>
<div class="line">
- <el-input v-model="password" placeholder="璇疯緭鍏ユ墜鏈哄彿" type="password" maxlength="30" show-password />
+ <el-input v-model="phone" placeholder="璇疯緭鍏ユ墜鏈哄彿" type="text" maxlength="16" />
</div>
</div>
<div class="df_ac">
<div class="label">楠岃瘉鐮�</div>
<div class="line">
- <el-input v-model="captcha.value" placeholder="璇疯緭鍏ラ獙璇佺爜" maxlength="4" @keypress.enter.native="login" />
- <span class="code_get" @click="getCode">鑾峰彇楠岃瘉鐮�</span>
+ <el-input v-model="smsCode" placeholder="璇疯緭鍏ラ獙璇佺爜" maxlength="6" @keypress.enter.native="login" />
+ <span v-if="downTime == 0" class="code_get" @click="getCode">鑾峰彇楠岃瘉鐮�</span>
+ <span v-else class="code_get downtime">{{ downTime }}</span>
</div>
</div>
</template>
@@ -57,7 +59,8 @@
<el-button :loading="loading" type="primary" class="login_btn" @click.native.prevent="login">绔嬪嵆鐧诲綍</el-button>
<div class="btn_wrap">
<el-checkbox v-model="isRemPsd">
- <span style="font-size: 13px; font-weight: 400" class="placeholder9">璁颁綇瀵嗙爜</span>
+ <span style="font-size: 13px; font-weight: 400" class="placeholder9">{{ activeTab == 0 ? '璁颁綇瀵嗙爜' : '璁颁綇鎵嬫満鍙�'
+ }}</span>
</el-checkbox>
</div>
<div class="google">
@@ -71,8 +74,9 @@
<script>
import { mapMutations } from 'vuex'
-import { getCaptcha, loginByPassword } from '@/api/system/common'
+import { getCaptcha, loginByPassword, sendSmsPost, loginByPhone } from '@/api/system/common'
import Cookies from "js-cookie"
+import { Message } from 'element-ui'
export default {
name: 'Login',
@@ -82,6 +86,10 @@
isRemPsd: false,
username: '',
password: '',
+ phone: '',
+ downTime: 0,
+
+ smsCode: '',
activeTab: '0',
// 楠岃瘉鐮�
captcha: {
@@ -95,6 +103,7 @@
mounted() {
this.username = localStorage.getItem('username') || ''
this.password = localStorage.getItem('password') || ''
+ this.phone = localStorage.getItem('phone') || ''
const isRemPsd = localStorage.getItem('isRemPsd') || false
this.isRemPsd = JSON.parse(isRemPsd)
this.refreshCaptcha()
@@ -106,41 +115,73 @@
if (this.loading) {
return
}
- if (!this.__check()) {
- return
- }
this.loading = true
- loginByPassword({
- username: this.username.trim(),
- password: this.password,
- code: this.captcha.value.trim(),
- uuid: this.captcha.uuid
- })
- .then((res) => {
- // window.location.href = process.env.VUE_APP_CONTEXT_PATH
+ if (this.activeTab == 0) {
+ if (!this.__check()) {
+ return
+ }
+ loginByPassword({
+ username: this.username.trim(),
+ password: this.password,
+ code: this.captcha.value.trim(),
+ uuid: this.captcha.uuid
+ })
+ .then((res) => {
+ // window.location.href = process.env.VUE_APP_CONTEXT_PATH
+ if (this.isRemPsd) {
+ localStorage.setItem('username', this.username.trim())
+ localStorage.setItem('password', this.password.trim())
+ localStorage.setItem('isRemPsd', this.isRemPsd)
+ } else {
+ localStorage.removeItem('username')
+ localStorage.removeItem('password')
+ localStorage.removeItem('isRemPsd')
+ }
+ Cookies.set('dm_user_token', res)
+ this.$router.push('index')
+ })
+ .catch(e => {
+ this.refreshCaptcha()
+ })
+ .finally(() => {
+ this.loading = false
+ })
+ } else {
+ const { smsCode, phone } = this
+ if (!phone || phone.length != 11) {
+ return Message.error('璇疯緭鍏ユ纭殑鎵嬫満鍙�')
+ }
+ if (!smsCode) {
+ return Message.error('璇疯緭鍏ラ獙璇佺爜')
+ }
+ loginByPhone({ phone, code: smsCode }).then(res => {
if (this.isRemPsd) {
- localStorage.setItem('username', this.username.trim())
- localStorage.setItem('password', this.password.trim())
- localStorage.setItem('isRemPsd', this.isRemPsd)
- } else {
- localStorage.removeItem('username')
- localStorage.removeItem('password')
- localStorage.removeItem('isRemPsd')
+ localStorage.setItem('phone', this.username.trim())
}
Cookies.set('dm_user_token', res)
this.$router.push('index')
- })
- .catch(e => {
- this.refreshCaptcha()
- // this.$tip.apiFailed(e)
- })
- .finally(() => {
+ }).finally(() => {
this.loading = false
})
+ }
+
},
getCode() {
- console.log('getCode');
-
+ console.log('getCode')
+ const { phone } = this
+ if (!phone || phone.length != 11) {
+ return Message.error('璇疯緭鍏ユ纭殑鎵嬫満鍙�')
+ }
+ sendSmsPost({ phone, type: 0 }).then(res => {
+ Message.success('鐭俊鍙戦�佹垚鍔�')
+ this.downTime = 10
+ let timer = setInterval(() => {
+ if (this.downTime == 0) {
+ return clearInterval(timer)
+ }
+ this.downTime--
+ }, 1000)
+ })
},
tabClick(val) {
this.activeTab = val
@@ -224,8 +265,19 @@
background: url("../assets/images/login_img@2x.png");
background-size: 100% 100%;
padding-left: 40px;
- padding-top: 80px;
-
+ padding-top: 60px;
+ .h2{
+ color: $primary-color;
+ background-color: #fff;
+ height: 24px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ border-radius: 4px;
+ width: 186px;
+ display: flex;
+ margin-bottom: 12px;
+ }
.h3 {
font-size: 28px;
font-weight: 700;
@@ -314,9 +366,11 @@
width: 100%;
align-items: center;
position: relative;
+
.el-input {
height: 40px;
flex: 1;
+
// font-size: 14px;
::v-deep .el-input__inner {
height: 40px !important;
@@ -327,7 +381,8 @@
width: 100px;
margin-left: 10px;
}
- .code_get{
+
+ .code_get {
position: absolute;
top: 10px;
right: 10px;
@@ -337,6 +392,11 @@
margin-left: 10px;
cursor: pointer;
color: $primary-color;
+ text-align: right;
+ }
+
+ .downtime {
+ color: #999999;
}
}
--
Gitblit v1.9.3