index.vue 3.37 KB
<template>
	<view class="wrap">
		<view class="top"></view>
		<u-toast ref="uToastRef"></u-toast>
		<view class="content">
			<view class="title">欢迎登录</view>
			<input class="u-border-bottom" type="number" v-model="tel" placeholder="请输入手机号" />
			<view class="tips">未注册的手机号验证后自动创建账号</view>
			<button @tap="submit" :style="[inputStyle]" class="getCaptcha">获取短信验证码</button>
			<view class="alternative">
			</view>
		</view>
		<view class="buttom">
			<view class="loginType">
				<view class="wechat item">
					<button class="box" open-type="getPhoneNumber" @getphonenumber="handleWeixinLogin">
						<view class="icon"><u-icon size="60" name="weixin-fill" color="rgb(83,194,64)"></u-icon>
						</view>
						微信登录
					</button>
				</view>
			</view>
			<view class="hint">
				登录代表同意
				<text class="link" @click="handleUserAgreement">用户协议、隐私政策,</text>
				并授权使用您的账号信息(如昵称、头像、收获地址)以便您统一管理
			</view>
		</view>
	</view>
</template>

<script>
import { userLogin } from "@/apis/user.js";
export default {
	data() {
		return {
			tel: '18977778888'
		}
	},
	computed: {
		inputStyle() {
			let style = {};
			if (this.tel) {
				style.color = "#fff";
				style.backgroundColor = this.$u.color['success'];
			}
			return style;
		}
	},
	methods: {
		submit() {
			if (this.$u.test.mobile(this.tel)) {
				this.$u.route({
					url: `pages/login/code?iphoneNumber=${this.tel}`,
				})
			} else {
				this.$refs.uToastRef.show({
					type: 'default',
					title: '默认主题',
					message: "手机号不对",
					complete() {

					}
				})
			}
		},
		handleUserAgreement() {
			console.log("user click agreement");
		},
		handleWeixinLogin(wxInfo) {
			uni.login({
				provider: 'weixin',
				success: res => {
					userLogin({ loginType: type, encryptedData: wxInfo.detail.encryptedData, iv: wxInfo.detail.iv, wxCode: res.code })
						.then(res => {
							console.log(res);
						})
				}

			});
		}
	}
}
</script>

<style lang="scss" scoped>
.wrap {
	font-size: 28rpx;

	.content {
		width: 600rpx;
		margin: 80rpx auto 0;

		.title {
			text-align: left;
			font-size: 60rpx;
			font-weight: 500;
			margin-bottom: 100rpx;
		}

		input {
			text-align: left;
			margin-bottom: 10rpx;
			padding-bottom: 6rpx;
		}

		.tips {
			color: $u-info;
			margin-bottom: 60rpx;
			margin-top: 8rpx;
			font-size: 12px;
		}

		.getCaptcha {
			background-color: #5ac725;
			color: #ffffff;
			border: none;
			font-size: 30rpx;
			padding: 12rpx 0;

			&::after {
				border: none;
			}
		}

		.alternative {
			color: $u-tips-color;
			display: flex;
			justify-content: space-between;
			margin-top: 30rpx;
		}
	}

	.buttom {
		.loginType {
			display: flex;
			padding: 350rpx 150rpx 150rpx 150rpx;
			justify-content: center;

			.item {
				.box {
					display: flex;
					flex-direction: column;
					align-items: center;
					color: $u-content-color;
					justify-content: center;
					font-size: 28rpx;
					background-color: #ffffff00;
					border-radius: 0 !important;
					border: 0 solid #ffffff00 !important;
					padding: 0 !important;
					margin: 0 !important;

					&::after {
						border: none;
					}

				}

			}

		}

		.hint {
			padding: 20rpx 40rpx;
			font-size: 20rpx;
			color: $u-tips-color;

			.link {
				color: $u-warning;
			}
		}
	}
}
</style>