index.vue 4.3 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">
				<view style="display: flex; justify-content: flex-start;" @click="radioChange">
					<u-checkbox-group v-model="agree" placement="row" @change="groupChange">
						<!-- 选中颜色为绿色 -->
						<u-checkbox shape="square" activeColor="green" :size="24"
							:customStyle="{ marginBottom: '0px', marginTop: '1px' }" :key="0" :name="true">
						</u-checkbox>
					</u-checkbox-group>
				</view>
				<view class="prompt-txt">
					登录代表同意
					<text class="link" @click="handleUserAgreement">用户协议、隐私政策,</text>
					并授权使用您的账号信息(如昵称、头像、收获地址)以便您统一管理。
				</view>
			</view>
		</view>
	</view>
</template>

<script>
import { userLogin } from "@/apis/user.js";
export default {
	data() {
		return {
			tel: '18966667777',
			agree: []
		}
	},
	computed: {
		inputStyle() {
			let style = {};
			if (this.tel) {
				style.color = "#fff";
				style.backgroundColor = this.$u.color['success'];
			}
			return style;
		}
	},
	methods: {
		groupChange(e) {
			console.log(e);
		},
		submit() {
			if (this.$u.test.mobile(this.tel)) {
				if (this.agree[0]) {
					this.$u.route({
						url: `pages/login/code?iphoneNumber=${this.tel}`,
					})
				} else {
					let that = this
					uni.showModal({
						title: '提示',
						content: '需要同意登录协议',
						success: function (res) {
							if (res.confirm) {
								that.agree[0] = true
							} else if (res.cancel) {
							}
						}
					})
				}
			} else {
				this.$refs.uToastRef.show({
					type: 'default',
					title: '默认主题',
					message: "手机号不对",
					complete() {

					}
				})
			}
		},
		handleUserAgreement() {
			console.log("user click agreement");
		},
		radioChange() {
			this.agree[0] = !this.agree[0]
		},
		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: 25rpx;
			color: $u-tips-color;
			display: flex;
			justify-content: flex-start;

			.prompt-txt {
				.link {
					color: $u-warning;
				}
			}


		}
	}
}
</style>