Files
water_dealer-agent/src/views/auth/Login.vue
JasonChen b0c8ee91c5 merbe
2023-08-02 14:26:01 +08:00

306 lines
7.6 KiB
Vue

<template>
<div class="main">
<a-form id="formLogin" ref="formLogin" :form="form" class="user-layout-login" @submit="handleSubmit">
<a-form-item class="inputT">
<a-input
:placeholder="$t('user.login.mobile.placeholder')"
size="large"
oninput="value=value.replace(/[, ]/g,'')"
onkeyup="value=value.replace(/[, ]/g,'')"
onblur="value=value.replace(/\s+/g,'')"
type="text"
v-model="postData.phone"
>
<template v-slot:prefix>
<a-icon :style="{ color: 'rgba(0,0,0,.25)' }" type="mobile" />
</template>
</a-input>
</a-form-item>
<a-form-item class="inputT">
<a-input
placeholder="请输入密码"
size="large"
type="password"
oninput="value=value.replace(/[, ]/g,'')"
onkeyup="value=value.replace(/[, ]/g,'')"
onblur="value=value.replace(/\s+/g,'')"
v-model="postData.password"
>
<template v-slot:prefix>
<a-icon :style="{ color: 'rgba(0,0,0,.25)' }" type="lock" />
</template>
</a-input>
</a-form-item>
<a-form-item class="inputT">
<a-button :disabled="btn" class="login-button" htmlType="submit" size="large" type="primary"> 登录 </a-button>
</a-form-item>
<a-form-item>
<!-- <a class="login-form-forgot" @click="goForget"> 忘记密码 </a> -->
</a-form-item>
</a-form>
<!-- 二维码展示区域 -->
<!-- title="消息实时提醒" -->
<a-modal
v-model="showScan"
ok-text="我已关注"
cancel-text="再想想"
:bodyStyle="{ padding: 0}"
:closable="false"
@ok="OnSubOk"
@cancel="OnSubCancel"
>
<div class="ewmcode">
<div class="ewmcodetop">
<div>关注微信公众平台</div>
<div style="font-size:70%;">关注后 即可实时获取最新的订单信息</div>
</div>
<img :src="subscribeUrl" alt="二维码" />
<p>使用微信扫一扫关注微信公众平台</p>
</div>
</a-modal>
</div>
</template>
<script>
import { mapActions } from 'vuex'
import {
timeFix
} from '@/utils/util'
import storage from 'store'
import { ACCESS_TOKEN } from '@/store/mutation-types'
import {
// getScanCode,
getVerifyScanCode
} from '@/api/login'
export default {
name: 'Login',
data () {
return {
customActiveKey: 'phone',
form: this.$form.createForm(this),
postData: {
phone: '',
password: ''
},
btn: true,
showScan: false,
subscribeUrl: ''
}
},
watch: {
postData: {
handler (postData) {
if (postData.phone.length === 11 && postData.password.trim().length >= 6) {
// 监听用户输入的账号和密码
this.btn = false
} else {
this.btn = true
}
},
deep: true,
immediate: true
}
},
methods: {
...mapActions(['commonLogin']),
handleSubmit (e) {
e.preventDefault()
this.commonLogin({
username: this.postData.phone,
password: this.postData.password
})
.then((res) => {
this.loginSuccess(res)
})
.catch((err) => {
this.requestFailed(err)
})
},
loginSuccess (res) {
// if (res.is_company === false) {
// this.$notification['error']({
// message: '错误',
// description: '不是供应商,不能登录供应商平台',
// duration: 4
// })
// } else {
// // if (!res.real_name_status) {
// // this.$confirm({
// // content: '当前用户还没有完成实名认证,请先完成实名认证',
// // onOk: () => {
// // window.location.href = res.auth_url
// // },
// // cancelText: '再想想'
// // })
// // return
// // }
// // if (res.real_name_status && !res.is_subscribe) {
// // getScanCode()
// // .then((res) => {
// // this.subscribeUrl = res.code
// // this.showScan = true
// // })
// // .catch((err) => {
// // this.$notification.error(err)
// // })
// // return
// // }
// // storage.set('is_subscribe', true)
// // 延迟 1 秒显示欢迎信息
// setTimeout(() => {
// this.$notification.success({
// message: '欢迎',
// description: `${ timeFix() },欢迎回来`
// })
// this.$router.replace({
// path: '/'
// })
// }, 500)
// }
this.$notification.success({
message: '欢迎',
description: `${ timeFix() },欢迎回来`
})
setTimeout(() => {
this.$router.push('/home')
}, 1000)
},
OnSubCancel () {
storage.set(ACCESS_TOKEN, '')
},
OnSubOk () {
getVerifyScanCode()
.then((res1) => {
storage.set('is_subscribe', res1.is_subscribe)
if (res1.is_subscribe) {
this.commonLogin({
username: this.postData.phone,
password: this.postData.password
}).then((res) => {
this.loginSuccess(res)
}).catch((err) => {
this.requestFailed(err)
})
} else {
this.$notification.warn({
message: '温馨提醒',
description: '您还没有关注公众号'
})
}
})
.catch((err) => {
this.$notification.warn(err)
})
},
requestFailed (err) {
this.$notification['error']({
message: '错误',
// description: ((err || {}).data || {}).message || '请求出现错误,请稍后再试',
description: err.message || '请求出现错误,请稍后再试',
duration: 4
})
},
goForget () {
this.$router.push({ name: 'forgetPassword' })
}
}
}
</script>
<style lang="less" scoped>
.user-layout-login {
label {
font-size: 14px;
}
.getCaptcha {
display: block;
width: 100%;
height: 40px;
}
.forge-password {
font-size: 14px;
}
button.login-button {
padding: 0 15px;
font-size: 16px;
height: 40px;
width: 100%;
}
.user-login-other {
text-align: left;
margin-top: 24px;
line-height: 22px;
.item-icon {
font-size: 24px;
color: rgba(0, 0, 0, 0.2);
margin-left: 16px;
vertical-align: middle;
cursor: pointer;
transition: color 0.3s;
&:hover {
color: #1890ff;
}
}
.register {
float: right;
}
}
}
.login-form-forgot {
margin-left: 29px;
}
.inputT {
padding: 10px 24px !important;
}
.ant-modal-body{
padding: 0!important;
}
.ewmcode {
width: 520px;
height: 568px;
position: relative;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
box-sizing: border-box;
.ewmcodetop{
width: 100%;
height: 140px;
background: #fff url(~@/assets/scan_top_bg.png) no-repeat;
background-size: 100% auto;
background-position: center;
text-align: center;
font-size: 26px;
color:rgba(255, 255, 255, 0.989998);
font-weight: bold;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
box-sizing: border-box;
}
.ewmcode_bg{
width: 100%;
height: 100%;
position: relative;
}
img {
padding-top: 10px;
width: 380px;
}
p{
padding-bottom: 10px;
}
}
</style>