Files
dou_fire/pages/auth/auth.vue
2023-01-04 15:26:48 +08:00

191 lines
4.1 KiB
Vue

<template>
<view class="auth-center">
<view class="login-left" @click="onBack()">
<u-icon name="close" color="#000" size="24"></u-icon>
</view>
<view class="login">
<view class="logo">
<image class="logo-src" src="@/static/imgs/logo.png"/>
</view>
<view class="hello">欢迎使用抖火法律</view>
<view class="input input-phone">
<label>+86</label>
<input type="number" v-model="phone" maxlength="11" placeholder="请输入手机号码">
</view>
<view class="input">
<input type="safe-password" password v-model="password" placeholder="请输入密码">
</view>
<view class="btn">
<button :disabled="phone.length < 11 || password == '' || agreement.length == 0" @click="onAuth()">登录</button>
</view>
<view class="agreement">
<u-checkbox-group
v-model="agreement"
placement="row"
>
<u-checkbox shape="circle" name="agreement" activeColor="#446EFE"></u-checkbox>
我已阅读并同意
<my-link class="agreement-nav" :to="{name: 'RichText', params: {id: 1}}">服务协议</my-link>
<my-link class="agreement-nav" :to="{name: 'RichText', params: {id: 2}}">隐私权政策</my-link>
</u-checkbox-group>
</view>
</view>
<view class="footer">
<my-link class="footer-nav" :to="{ name: 'Registered' }">注册账号</my-link>
<my-link class="footer-nav" :to="{ name: 'ResetPassword' }">找回密码</my-link>
</view>
</view>
</template>
<script>
import { auth } from '@/apis/interfaces/auth.js'
export default {
data() {
return {
phone : '',
password : '',
agreement : []
};
},
methods: {
onAuth(){
uni.showLoading({
title: '登录中...'
})
auth({
username: this.phone,
password: this.password
}).then(res => {
// 存储登录凭证
this.$store.commit('setToken', res.token_type + ' ' + res.access_token);
this.onBack()
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
onBack(){
try{
this.$Router.back()
}catch(e){
this.$Router.replaceAll({name: 'Index'})
}
}
}
}
</script>
<style lang="scss">
.auth-center{
position: relative;
background: white;
display: flex;
flex-direction: column;
justify-content: space-between;
min-height: 100vh;
box-sizing: border-box;
@extend .ios-bottom;
@extend .ios-top;
}
// 关闭登录
.login-left{
position: absolute;
right: $padding * 2;
top: $padding;
@extend .ios-top;
}
// 登录
.login{
padding: $padding * 2;
.logo{
padding-top: $padding * 2;
padding-bottom: $padding / 2;
.logo-src{
width: 98rpx;
height: 98rpx;
border-radius: $radius;
vertical-align: top;
}
}
.hello{
font-weight: bold;
font-size: 54rpx;
color: $text-color;
padding-bottom: $padding * 2;
}
.input{
border-bottom: solid 1rpx $border-color;
height: 100rpx;
line-height: 100rpx;
margin-bottom: $margin;
input{
height: 100rpx;
box-sizing: border-box;
font-size: 32rpx;
color: $text-color;
}
&.input-phone{
display: flex;
align-items: center;
label{
border-right: solid 1rpx $border-color;
padding: 0 $padding;
box-sizing: border-box;
width: 140rpx;
height: 50rpx;
line-height: 50rpx;
font-size: 32rpx;
color: $text-color;
}
input{
padding: 0 $padding;
flex: 1;
}
}
}
.btn{
button{
background: $main-color;
border-radius: $radius-lg;
height: 100rpx;
line-height: 100rpx;
color: white;
font-size: 38rpx;
&::after{
display: none;
}
&[disabled]{
opacity: .5;
}
}
}
.agreement{
padding-top: $padding * 2;
font-size: 30rpx;
color: $text-gray;
&-nav{
display: inline-block;
font-size: 30rpx;
color: $main-color;
}
}
}
// 底部
.footer{
padding: 50rpx 50rpx 100rpx;
height: 100rpx;
text-align: center;
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
&-nav{
font-size: 30rpx;
margin: 0 $margin;
color: $text-gray;
}
}
</style>