Files

197 lines
3.8 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<layout class="login">
<uv-navbar
:fixed="false"
title="登录"
left-arrow
@leftClick="goBack"
/>
<blank size="30"></blank>
<container>
<view class="card paddingH-10">
<uv-form
labelPosition="left"
@submit="handleLogin"
>
<uv-form-item borderBottom>
<uv-input
v-model="mobile"
border="none"
placeholder="请输入用户名"
>
</uv-input>
</uv-form-item>
<uv-form-item borderBottom>
<uv-input
v-model="code"
border="none"
placeholder="请输入验证码"
>
</uv-input>
<template #right>
<verification
:mobile="mobile"
scene="1"
/>
</template>
</uv-form-item>
</uv-form>
</view>
<view class="form-buttons">
<uv-button
round
block
type="primary"
@tap="handleLogin"
>
登录
</uv-button>
</view>
<!-- #ifdef MP -->
<view class="form-buttons">
<uv-button
open-type="getPhoneNumber"
@getphonenumber="getPhoneNumber"
>微信登录
</uv-button>
</view>
<!-- #endif -->
</container>
<blank size="15"></blank>
<view class="protocol">
登录代表同意<span class="protocol-main">用户协议</span><span
class="protocol-main"
>隐私政策</span>并授权使用您的账号信息如昵称头像收获地址以便您统一管理
</view>
</layout>
</template>
<script setup>
import { ref } from 'vue'
import { storeToRefs } from 'pinia'
import { smsLogin, weixinLogin } from '@/api/auth'
import { useMainStore } from '@/store/store'
import { onLoad } from '@dcloudio/uni-app'
import { useRouter } from "@/hooks/useRouter";
const {goBack} = useRouter()
const mobile = ref('')
const code = ref('')
const loginCode = ref('')
const store = useMainStore()
const {user} = storeToRefs(store)
onLoad(async () => {
// #ifdef MP
uni.login({
provider: 'weixin'
}).then(res => {
loginCode.value = res.code
});
// #endif
})
const handleLogin = async () => {
if (!mobile.value) {
uni.showToast({
title: '手机号不能为空',
duration: 2000
});
return
}
if (!mobile.value) {
uni.showToast({
title: '验证码不能为空',
duration: 2000
});
return
}
uni.showLoading({
title: '登录中'
});
let loginInfo = await smsLogin({
"mobile": mobile.value,
"code": code.value,
})
if (loginInfo) {
await store.setAccessToken(loginInfo)
uni.hideLoading();
uni.switchTab({
url: '/root/index/index'
})
}
}
const getPhoneNumber = async ({code}) => {
if (code) {
const loginInfo = await weixinLogin({
phoneCode: code,
loginCode: loginCode.value
})
await store.setAccessToken(loginInfo)
uni.switchTab({
url: '/root/index/index'
})
}
}
</script>
<style lang="scss">
.user-card {
padding: 50rpx 0;
}
.avatar-box {
display: flex;
align-items: center;
.avatar {
width: 120rpx;
height: 120rpx;
background: #FFFFFF;
border-radius: 50%;
opacity: 1;
margin-right: 30rpx;
}
.avatar-name {
font-size: 34rpx;
color: #333333;
}
}
.protocol {
padding: 0 34rpx;
position: absolute;
bottom: 0;
left: 0;
right: 0;
color: #999999;
font-size: 24rpx;
line-height: 40rpx;
margin-bottom: constant(safe-area-inset-bottom);
margin-bottom: env(safe-area-inset-bottom);
&-main {
color: #ee6d46;
}
}
</style>