|
@@ -1,305 +1,660 @@
|
|
|
<template>
|
|
|
- <view class="container">
|
|
|
- <view class="container_text" >
|
|
|
- <image class="banner-img" src="../../users/static/beijing.jpg" mode="scaleToFill"></image>
|
|
|
+ <view class="login-wrapper" :style="colorStyle">
|
|
|
+ <view class="shading">
|
|
|
+ <image :src="logoUrl" />
|
|
|
</view>
|
|
|
- <!-- <view class="loginTitle"><text>注册</text></view> -->
|
|
|
- <view class="login_text">
|
|
|
- <view class="login_input flex">
|
|
|
- <view class="login_img"><image src="../../users/static/phone.png"></image></view>
|
|
|
- <view class="login_name"><input class="uni-input" v-model="phone" focus placeholder="请输入手机号" /></view>
|
|
|
+ <view class="whiteBg">
|
|
|
+ <view class="list" v-if="current !== 1">
|
|
|
+ <form @submit.prevent="submit">
|
|
|
+ <view class="item">
|
|
|
+ <view class="acea-row row-middle">
|
|
|
+ <image src="../static/phone_1.png" style="width: 24rpx; height: 34rpx;"></image>
|
|
|
+ <input type="text" :placeholder="$t(`输入手机号码`)" v-model="account" maxlength="11" required />
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <view class="item">
|
|
|
+ <view class="acea-row row-middle">
|
|
|
+ <image src="../static/code_1.png" style="width: 28rpx; height: 32rpx;"></image>
|
|
|
+ <input type="password" :placeholder="$t(`填写登录密码`)" v-model="password" required />
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </form>
|
|
|
+ <!-- <navigator class="forgetPwd" hover-class="none" url="/pages/users/retrievePassword/index">
|
|
|
+ <span class="iconfont icon-wenti"></span>忘记密码
|
|
|
+ </navigator> -->
|
|
|
</view>
|
|
|
- <view class="login_input flex">
|
|
|
- <view class="login_img"><image src="../../users/static/code.png"></image></view>
|
|
|
- <view class="login_name"><input class="uni-input" type="password" v-model="password" focus placeholder="请输入密码" /></view>
|
|
|
- </view>
|
|
|
- <view class="login_input flex">
|
|
|
- <view class="login_img"><image src="../../users/static/yzm.png"></image></view>
|
|
|
- <view class="login_name"><input class="uni-input" type="text" v-model="invitation" focus placeholder="请输入邀请码" /></view>
|
|
|
- </view>
|
|
|
- <view class="login_input flex">
|
|
|
- <view class="login_img"><image src="../../users/static/yzm.png"></image></view>
|
|
|
- <view class="login_name flex">
|
|
|
- <input class="uni-input width" v-model="code" focus placeholder="请输入验证码" />
|
|
|
- <view class="code" @click="verification">{{ countDown == 0 ? '验证码' : countDown }}</view>
|
|
|
+ <view class="list" v-if="current !== 0 || appLoginStatus || appleLoginStatus">
|
|
|
+ <view class="item">
|
|
|
+ <view class="acea-row row-middle">
|
|
|
+ <image src="../static/phone_1.png" style="width: 24rpx; height: 34rpx;"></image>
|
|
|
+ <input type="text" :placeholder="$t(`输入手机号码`)" v-model="account" :maxlength="11" />
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <view class="item">
|
|
|
+ <view class="acea-row row-middle">
|
|
|
+ <image src="../static/code_2.png" style="width: 28rpx; height: 32rpx;"></image>
|
|
|
+ <input type="text" :placeholder="$t(`填写邀请码`)" :maxlength="6" class="codeIput"
|
|
|
+ v-model="spread" />
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <view class="item">
|
|
|
+ <view class="acea-row row-middle">
|
|
|
+ <image src="../static/code_2.png" style="width: 28rpx; height: 32rpx;"></image>
|
|
|
+ <input type="text" :placeholder="$t(`填写验证码`)" :maxlength="6" class="codeIput"
|
|
|
+ v-model="captcha" />
|
|
|
+ <button class="code" :disabled="disabled" :class="disabled === true ? 'on' : ''" @click="code">
|
|
|
+ {{ text }}
|
|
|
+ </button>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <view class="item" v-if="isShowCode">
|
|
|
+ <view class="acea-row row-middle">
|
|
|
+ <image src="../static/code_2.png" style="width: 28rpx; height: 32rpx;"></image>
|
|
|
+ <input type="text" :placeholder="$t(`填写验证码`)" class="codeIput" v-model="codeVal" />
|
|
|
+ <view class="code" @click="again"><img :src="codeUrl" /></view>
|
|
|
+ </view>
|
|
|
</view>
|
|
|
</view>
|
|
|
- <view><button type="green" @click="register" class="uni-button uni-button-yello">注册</button></view>
|
|
|
+ <view class="logon" @click="loginMobile" v-if="current !== 0">{{$t(`注册`)}}</view>
|
|
|
+ <view class="logon" @click="submit" v-if="current === 0">{{$t(`登录`)}}</view>
|
|
|
+ <view class="tips">
|
|
|
+ <!-- <view v-if="current==0" @click="current = 1">{{$t(`快速登录`)}}</view> -->
|
|
|
+ <!-- <view v-if="current==1" @click="current = 0">{{$t(`账号登录`)}}</view> -->
|
|
|
+ </view>
|
|
|
+ <!-- TODO -->
|
|
|
<view class="choose">
|
|
|
- <view class="reg" @click="forget">忘记密码</view>
|
|
|
- <view class="xian">|</view>
|
|
|
- <view class="zhuce" @click="deng">手机登录</view>
|
|
|
+ <!-- <view class="reg" @click="forget">忘记密码</view>
|
|
|
+ <view class="xian">|</view> -->
|
|
|
+ <view class="zhuce" @click="zhuce">账号登录</view>
|
|
|
+ </view>
|
|
|
+ <view class="protocol">
|
|
|
+ <checkbox-group @change='ChangeIsDefault'>
|
|
|
+ <checkbox :class="inAnimation?'trembling':''" @animationend='inAnimation=false'
|
|
|
+ :checked="protocol ? true : false" />{{$t(`已阅读并同意`)}} <text class="main-color"
|
|
|
+ @click="privacy(4)">{{$t(`《用户协议》`)}}</text>
|
|
|
+ {{$t(`与`)}}<text class="main-color" @click="privacy(3)">{{$t(`《隐私协议》`)}}</text>
|
|
|
+ </checkbox-group>
|
|
|
</view>
|
|
|
</view>
|
|
|
+ <!-- <view class="bottom">
|
|
|
+ <view class="ver" v-if="copyRight">{{copyRight}}</view>
|
|
|
+ <view v-else class="ver">© 2014-2023
|
|
|
+ <a href="https://www.crmeb.com">www.crmeb.com</a>
|
|
|
+ </view>
|
|
|
+ </view> -->
|
|
|
+ <Verify @success="success" :captchaType="captchaType" :imgSize="{ width: '330px', height: '155px' }"
|
|
|
+ ref="verify"></Verify>
|
|
|
</view>
|
|
|
</template>
|
|
|
<script>
|
|
|
-// import { register, verify } from '@/api/login.js';
|
|
|
-export default {
|
|
|
- data() {
|
|
|
- return {
|
|
|
- phone: '', //用户
|
|
|
- password: '', //密码
|
|
|
- repassword: '',
|
|
|
- invitation: '', //邀请码
|
|
|
- code: '', //验证码
|
|
|
- time: '', //保存倒计时对象
|
|
|
- countDown: 0 ,//倒计时
|
|
|
- nickname: '', // 昵称
|
|
|
- };
|
|
|
- },
|
|
|
- onLoad() {
|
|
|
- this.invitation = uni.getStorageSync('spread')||'';
|
|
|
- console.log(this.invitation);
|
|
|
- },
|
|
|
- watch: {
|
|
|
- // 监听倒计时
|
|
|
- countDown(i) {
|
|
|
- if (i == 0) {
|
|
|
- clearInterval(this.time);
|
|
|
+ import dayjs from "@/plugin/dayjs/dayjs.min.js";
|
|
|
+ import sendVerifyCode from "@/mixins/SendVerifyCode";
|
|
|
+ import {
|
|
|
+ loginH5,
|
|
|
+ loginMobile,
|
|
|
+ registerVerify,
|
|
|
+ register,
|
|
|
+ getCodeApi,
|
|
|
+ getUserInfo,
|
|
|
+ appleLogin
|
|
|
+ } from "@/api/user";
|
|
|
+ import attrs, {
|
|
|
+ required,
|
|
|
+ alpha_num,
|
|
|
+ chs_phone
|
|
|
+ } from "@/utils/validate";
|
|
|
+ import {
|
|
|
+ getLogo
|
|
|
+ } from "@/api/public";
|
|
|
+ // import cookie from "@/utils/store/cookie";
|
|
|
+ import {
|
|
|
+ VUE_APP_API_URL
|
|
|
+ } from "@/utils";
|
|
|
+ // #ifdef APP-PLUS
|
|
|
+ import {
|
|
|
+ wechatAppAuth
|
|
|
+ } from '@/api/api.js'
|
|
|
+ // #endif
|
|
|
+ const BACK_URL = "login_back_url";
|
|
|
+ import colors from '@/mixins/color.js';
|
|
|
+ import Verify from '../components/verify/index.vue';
|
|
|
+ export default {
|
|
|
+ name: "Login",
|
|
|
+ components: {
|
|
|
+ Verify
|
|
|
+ },
|
|
|
+ mixins: [sendVerifyCode, colors],
|
|
|
+ data: function() {
|
|
|
+ return {
|
|
|
+ copyRight: '',
|
|
|
+ inAnimation: false,
|
|
|
+ protocol: false,
|
|
|
+ current: 1,
|
|
|
+ spread:'',
|
|
|
+ account: "",
|
|
|
+ password: "",
|
|
|
+ captcha: "",
|
|
|
+ formItem: 2,
|
|
|
+ type: "login",
|
|
|
+ logoUrl: "",
|
|
|
+ keyCode: "",
|
|
|
+ codeUrl: "",
|
|
|
+ codeVal: "",
|
|
|
+ isShowCode: false,
|
|
|
+ appLoginStatus: false, // 微信登录强制绑定手机号码状态
|
|
|
+ appUserInfo: null, // 微信登录保存的用户信息
|
|
|
+ appleLoginStatus: false, // 苹果登录强制绑定手机号码状态
|
|
|
+ appleUserInfo: null,
|
|
|
+ appleShow: false, // 苹果登录版本必须要求ios13以上的
|
|
|
+ keyLock: true
|
|
|
+ };
|
|
|
+ },
|
|
|
+ watch: {
|
|
|
+ formItem: function(nval, oVal) {
|
|
|
+ if (nval == 1) {
|
|
|
+ this.type = 'login'
|
|
|
+ } else {
|
|
|
+ this.type = 'register'
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- },
|
|
|
- methods: {
|
|
|
- // 注册
|
|
|
- register() {
|
|
|
- let obj = this;
|
|
|
- if (obj.phone == '') {
|
|
|
- obj.$api.msg('请输入电话号码');
|
|
|
- return;
|
|
|
+ },
|
|
|
+ onLoad() {
|
|
|
+ let self = this
|
|
|
+ if (uni.getStorageSync('copyRight').copyrightContext) {
|
|
|
+ this.copyRight = uni.getStorageSync('copyRight').copyrightContext
|
|
|
}
|
|
|
- if (obj.nickname == '') {
|
|
|
- obj.$api.msg('请输入昵称');
|
|
|
- return;
|
|
|
+ self.spread = self.$Cache.get("spread");
|
|
|
+ },
|
|
|
+ mounted: function() {
|
|
|
+ this.getLogoImage();
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ ChangeIsDefault(e) {
|
|
|
+ this.$set(this, 'protocol', !this.protocol);
|
|
|
+ },
|
|
|
+ privacy(type) {
|
|
|
+ uni.navigateTo({
|
|
|
+ url: "/pages/users/privacy/index?type=" + type
|
|
|
+ })
|
|
|
+ },
|
|
|
+ zhuce() {
|
|
|
+ uni.navigateTo({
|
|
|
+ url: "/pages/users/login/index"
|
|
|
+ })
|
|
|
+ },
|
|
|
+ again() {
|
|
|
+ this.codeUrl =
|
|
|
+ VUE_APP_API_URL +
|
|
|
+ "/sms_captcha?" +
|
|
|
+ "key=" +
|
|
|
+ this.keyCode +
|
|
|
+ Date.parse(new Date());
|
|
|
+ },
|
|
|
+ success(data) {
|
|
|
+ this.$refs.verify.hide()
|
|
|
+ getCodeApi()
|
|
|
+ .then(res => {
|
|
|
+ this.keyCode = res.data.key;
|
|
|
+ this.getCode(data);
|
|
|
+ })
|
|
|
+ .catch(res => {
|
|
|
+ this.$util.Tips({
|
|
|
+ title: res
|
|
|
+ });
|
|
|
+ });
|
|
|
+ },
|
|
|
+ code() {
|
|
|
+ let that = this
|
|
|
+ if (!that.protocol) {
|
|
|
+ this.inAnimation = true
|
|
|
+ return that.$util.Tips({
|
|
|
+ title: '请先阅读并同意协议'
|
|
|
+ });
|
|
|
+ }
|
|
|
+ if (!that.account) return that.$util.Tips({
|
|
|
+ title: that.$t(`请填写手机号码`)
|
|
|
+ });
|
|
|
+ if (!/^1(3|4|5|7|8|9|6)\d{9}$/i.test(that.account)) return that.$util.Tips({
|
|
|
+ title: that.$t(`请输入正确的手机号码`)
|
|
|
+ });
|
|
|
+ this.$refs.verify.show()
|
|
|
+ },
|
|
|
+ async getLogoImage() {
|
|
|
+ let that = this;
|
|
|
+ getLogo(2).then(res => {
|
|
|
+ that.logoUrl = res.data.logo_url;
|
|
|
+ });
|
|
|
+ },
|
|
|
+ async loginMobile() {
|
|
|
+ let that = this;
|
|
|
+ if (!that.protocol) {
|
|
|
+ this.inAnimation = true
|
|
|
+ return that.$util.Tips({
|
|
|
+ title: '请先阅读并同意协议'
|
|
|
+ });
|
|
|
+ }
|
|
|
+ if (!that.account) return that.$util.Tips({
|
|
|
+ title: that.$t(`请填写手机号码`)
|
|
|
+ });
|
|
|
+ if (!/^1(3|4|5|7|8|9|6)\d{9}$/i.test(that.account)) return that.$util.Tips({
|
|
|
+ title: that.$t(`请输入正确的手机号码`)
|
|
|
+ });
|
|
|
+ if (!that.captcha) return that.$util.Tips({
|
|
|
+ title: that.$t(`请填写验证码`)
|
|
|
+ });
|
|
|
+ if (!that.spread) return that.$util.Tips({
|
|
|
+ title: that.$t(`请填写邀请码/手机号`)
|
|
|
+ });
|
|
|
+ if (!/^[\w\d]+$/i.test(that.captcha)) return that.$util.Tips({
|
|
|
+ title: that.$t(`请输入正确的验证码`)
|
|
|
+ });
|
|
|
+
|
|
|
+ if (this.keyLock) {
|
|
|
+ this.keyLock = !this.keyLock
|
|
|
+ } else {
|
|
|
+ return that.$util.Tips({
|
|
|
+ title: that.$t(`请勿重复点击`)
|
|
|
+ });
|
|
|
+ }
|
|
|
+ loginMobile({
|
|
|
+ phone: that.account,
|
|
|
+ captcha: that.captcha,
|
|
|
+ spread: that.spread
|
|
|
+ })
|
|
|
+ .then(res => {
|
|
|
+ let data = res.data;
|
|
|
+ that.$store.commit("LOGIN", {
|
|
|
+ 'token': data.token,
|
|
|
+ 'time': data.expires_time - this.$Cache.time()
|
|
|
+ });
|
|
|
+ let backUrl = that.$Cache.get(BACK_URL) || "/pages/index/index";
|
|
|
+ that.$Cache.clear(BACK_URL);
|
|
|
+ getUserInfo().then(res => {
|
|
|
+ this.keyLock = true
|
|
|
+ that.$store.commit("SETUID", res.data.uid);
|
|
|
+ if (backUrl.indexOf('/pages/users/login/index') !== -1) {
|
|
|
+ backUrl = '/pages/index/index';
|
|
|
+ }
|
|
|
+ uni.reLaunch({
|
|
|
+ url: backUrl
|
|
|
+ });
|
|
|
+ })
|
|
|
+ })
|
|
|
+ .catch(res => {
|
|
|
+ this.keyLock = true
|
|
|
+ that.$util.Tips({
|
|
|
+ title: res
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+
|
|
|
+ },
|
|
|
+ async register() {
|
|
|
+ let that = this;
|
|
|
+ if (!that.protocol) {
|
|
|
+ this.inAnimation = true
|
|
|
+ return that.$util.Tips({
|
|
|
+ title: '请先阅读并同意协议'
|
|
|
+ });
|
|
|
+ }
|
|
|
+ if (!that.account) return that.$util.Tips({
|
|
|
+ title: that.$t(`请填写手机号码`)
|
|
|
+ });
|
|
|
+ if (!/^1(3|4|5|7|8|9|6)\d{9}$/i.test(that.account)) return that.$util.Tips({
|
|
|
+ title: that.$t(`请输入正确的手机号码`)
|
|
|
+ });
|
|
|
+ if (!that.captcha) return that.$util.Tips({
|
|
|
+ title: that.$t(`请填写验证码`)
|
|
|
+ });
|
|
|
+ if (!/^[\w\d]+$/i.test(that.captcha)) return that.$util.Tips({
|
|
|
+ title: that.$t(`请输入正确的验证码`)
|
|
|
+ });
|
|
|
+ if (!that.password) return that.$util.Tips({
|
|
|
+ title: that.$t(`请填写密码`)
|
|
|
+ });
|
|
|
+ if (/^([0-9]|[a-z]|[A-Z]){0,6}$/i.test(that.password)) return that.$util.Tips({
|
|
|
+ title: that.$t(`您输入的密码过于简单`)
|
|
|
+ });
|
|
|
+ register({
|
|
|
+ account: that.account,
|
|
|
+ captcha: that.captcha,
|
|
|
+ password: that.password,
|
|
|
+ spread: that.$Cache.get("spread")
|
|
|
+ })
|
|
|
+ .then(res => {
|
|
|
+ that.$util.Tips({
|
|
|
+ title: res
|
|
|
+ });
|
|
|
+ that.formItem = 1;
|
|
|
+ })
|
|
|
+ .catch(res => {
|
|
|
+ that.$util.Tips({
|
|
|
+ title: res
|
|
|
+ });
|
|
|
+ });
|
|
|
+ },
|
|
|
+ async getCode(data) {
|
|
|
+ let that = this;
|
|
|
+ if (!that.protocol) {
|
|
|
+ this.inAnimation = true
|
|
|
+ return that.$util.Tips({
|
|
|
+ title: '请先阅读并同意协议'
|
|
|
+ });
|
|
|
+ }
|
|
|
+ if (!that.account) return that.$util.Tips({
|
|
|
+ title: that.$t(`请填写手机号码`)
|
|
|
+ });
|
|
|
+ if (!/^1(3|4|5|7|8|9|6)\d{9}$/i.test(that.account)) return that.$util.Tips({
|
|
|
+ title: that.$t(`请输入正确的手机号码`)
|
|
|
+ });
|
|
|
+ if (that.formItem == 2) that.type = "register";
|
|
|
+
|
|
|
+ await registerVerify({
|
|
|
+ phone: that.account,
|
|
|
+ type: that.type,
|
|
|
+ key: that.keyCode,
|
|
|
+ captchaType: this.captchaType,
|
|
|
+ captchaVerification: data.captchaVerification
|
|
|
+ })
|
|
|
+ .then(res => {
|
|
|
+ this.sendCode()
|
|
|
+ that.$util.Tips({
|
|
|
+ title: res.msg
|
|
|
+ });
|
|
|
+ })
|
|
|
+ .catch(res => {
|
|
|
+ that.$util.Tips({
|
|
|
+ title: res
|
|
|
+ });
|
|
|
+ });
|
|
|
+ },
|
|
|
+ navTap: function(index) {
|
|
|
+ this.current = index;
|
|
|
+ },
|
|
|
+ async submit() {
|
|
|
+ let that = this;
|
|
|
+ if (!that.protocol) {
|
|
|
+ this.inAnimation = true
|
|
|
+ return that.$util.Tips({
|
|
|
+ title: '请先阅读并同意协议'
|
|
|
+ });
|
|
|
+ }
|
|
|
+ if (!that.account) return that.$util.Tips({
|
|
|
+ title: that.$t(`请填写账号`)
|
|
|
+ });
|
|
|
+ if (!/^[\w\d]{5,16}$/i.test(that.account)) return that.$util.Tips({
|
|
|
+ title: that.$t(`请输入正确的账号`)
|
|
|
+ });
|
|
|
+ if (!that.password) return that.$util.Tips({
|
|
|
+ title: that.$t(`请填写密码`)
|
|
|
+ });
|
|
|
+ if (this.keyLock) {
|
|
|
+ this.keyLock = !this.keyLock
|
|
|
+ } else {
|
|
|
+ return that.$util.Tips({
|
|
|
+ title: that.$t(`请勿重复点击`)
|
|
|
+ });
|
|
|
+ }
|
|
|
+ loginH5({
|
|
|
+ account: that.account,
|
|
|
+ password: that.password,
|
|
|
+ spread: that.$Cache.get("spread")
|
|
|
+ })
|
|
|
+ .then(({
|
|
|
+ data
|
|
|
+ }) => {
|
|
|
+ that.$store.commit("LOGIN", {
|
|
|
+ 'token': data.token,
|
|
|
+ 'time': data.expires_time - this.$Cache.time()
|
|
|
+ });
|
|
|
+ let backUrl = that.$Cache.get(BACK_URL) || "/pages/index/index";
|
|
|
+ that.$Cache.clear(BACK_URL);
|
|
|
+ getUserInfo().then(res => {
|
|
|
+ this.keyLock = true
|
|
|
+ that.$store.commit("SETUID", res.data.uid);
|
|
|
+ uni.reLaunch({
|
|
|
+ url: backUrl
|
|
|
+ });
|
|
|
+ }).catch(error => {
|
|
|
+ this.keyLock = true
|
|
|
+ })
|
|
|
+ })
|
|
|
+ .catch(e => {
|
|
|
+ this.keyLock = true
|
|
|
+ that.$util.Tips({
|
|
|
+ title: e
|
|
|
+ });
|
|
|
+ });
|
|
|
}
|
|
|
- if (!/(^1[1|2|3|4|5|6|7|8|9][0-9]{9}$)/.test(this.phone)) {
|
|
|
- obj.$api.msg('请输入正确的手机号');
|
|
|
- return;
|
|
|
+ }
|
|
|
+ };
|
|
|
+</script>
|
|
|
+<style>
|
|
|
+ page {
|
|
|
+ background: #fff;
|
|
|
+ }
|
|
|
+</style>
|
|
|
+<style lang="scss">
|
|
|
+ .appLogin {
|
|
|
+ margin-top: 60rpx;
|
|
|
+
|
|
|
+ .hds {
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
+ font-size: 24rpx;
|
|
|
+ color: #B4B4B4;
|
|
|
+
|
|
|
+ .line {
|
|
|
+ width: 68rpx;
|
|
|
+ height: 1rpx;
|
|
|
+ background: #CCCCCC;
|
|
|
}
|
|
|
- if (obj.password == '') {
|
|
|
- obj.$api.msg('请输入密码');
|
|
|
- return;
|
|
|
+
|
|
|
+ p {
|
|
|
+ margin: 0 20rpx;
|
|
|
}
|
|
|
- if (obj.repassword == '') {
|
|
|
- obj.$api.msg('请再次输入密码');
|
|
|
- return;
|
|
|
+ }
|
|
|
+
|
|
|
+ .btn-wrapper {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ margin-top: 30rpx;
|
|
|
+
|
|
|
+ .btn {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ width: 68rpx;
|
|
|
+ height: 68rpx;
|
|
|
+ border-radius: 50%;
|
|
|
}
|
|
|
- if (obj.repassword != obj.password) {
|
|
|
- obj.$api.msg('两次密码不正确');
|
|
|
- return;
|
|
|
+
|
|
|
+ .apple-btn {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ width: 68rpx;
|
|
|
+ height: 68rpx;
|
|
|
+ border-radius: 50%;
|
|
|
+ background: #000;
|
|
|
+
|
|
|
+
|
|
|
+ .icon-s-pingguo {
|
|
|
+ color: #fff;
|
|
|
+ font-size: 44rpx;
|
|
|
+ }
|
|
|
}
|
|
|
- // if (obj.invitation == '') {
|
|
|
- // obj.$api.msg('请输入邀请码');
|
|
|
- // return;
|
|
|
- // }
|
|
|
- if (obj.code == '') {
|
|
|
- obj.$api.msg('请输入验证码');
|
|
|
- return;
|
|
|
+
|
|
|
+ .iconfont {
|
|
|
+ font-size: 40rpx;
|
|
|
+ color: #fff;
|
|
|
}
|
|
|
- register({
|
|
|
- nickname:obj.nickname,
|
|
|
- account: obj.phone, //账号
|
|
|
- captcha: obj.code, //验证码
|
|
|
- password: obj.password ,//密码
|
|
|
- spread:obj.invitation//上级推广人
|
|
|
- }).then(function(e) {
|
|
|
- uni.showToast({
|
|
|
- title:'注册成功',
|
|
|
- duration:2000,
|
|
|
- position:'top'
|
|
|
- });
|
|
|
- setTimeout(function () {
|
|
|
- uni.navigateTo({
|
|
|
- url: '/pages/public/login'
|
|
|
- });
|
|
|
- },1000)
|
|
|
-
|
|
|
- });
|
|
|
- //调用注册接口,成功跳转登录页
|
|
|
- },
|
|
|
- // 忘记密码
|
|
|
- forget() {
|
|
|
- uni.navigateTo({
|
|
|
- url: "/pages/users/login/forget"
|
|
|
- })
|
|
|
- },
|
|
|
-
|
|
|
- deng() {
|
|
|
- uni.navigateTo({
|
|
|
- url: "/pages/users/login/index"
|
|
|
- })
|
|
|
- },
|
|
|
- //发送验证码
|
|
|
- verification() {
|
|
|
- let obj = this;
|
|
|
- if (this.phone == '') {
|
|
|
- this.$api.msg('请输入电话号码');
|
|
|
- return;
|
|
|
+
|
|
|
+ .wx {
|
|
|
+ margin-right: 30rpx;
|
|
|
+ background-color: #61C64F;
|
|
|
}
|
|
|
- if (this.phone.length < 11) {
|
|
|
- this.$api.msg('请输入正确的手机号');
|
|
|
- return;
|
|
|
+
|
|
|
+ .mima {
|
|
|
+ margin-right: 30rpx;
|
|
|
+ background-color: #28B3E9;
|
|
|
}
|
|
|
- // 判断是否在倒计时
|
|
|
- if (obj.countDown > 0) {
|
|
|
- return false;
|
|
|
- } else {
|
|
|
- obj.countDown = 60;
|
|
|
- obj.time = setInterval(() => {
|
|
|
- obj.countDown--;
|
|
|
- }, 1000);
|
|
|
- //调用验证码接口
|
|
|
- verify({
|
|
|
- phone: obj.phone,
|
|
|
- type: 'register'
|
|
|
- })
|
|
|
- .then(({ data }) => {})
|
|
|
- .catch(err => {
|
|
|
- console.log(err);
|
|
|
- });
|
|
|
+
|
|
|
+ .yanzheng {
|
|
|
+ margin-right: 30rpx;
|
|
|
+ background-color: #F89C23;
|
|
|
}
|
|
|
- },
|
|
|
- login() {
|
|
|
- //返回登录
|
|
|
- // uni.navigateTo({
|
|
|
- // url: '/pages/public/login'
|
|
|
- // });
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
-};
|
|
|
-</script>
|
|
|
|
|
|
-<style lang="scss">
|
|
|
-page {
|
|
|
- height: 100%;
|
|
|
-}
|
|
|
-.container {
|
|
|
- width: 100%;
|
|
|
- height: 100%;
|
|
|
- background-size: 100%;
|
|
|
-}
|
|
|
-.container_text {
|
|
|
- width: 100%;
|
|
|
- height: 500rpx;
|
|
|
- top: 0rpx;
|
|
|
- .banner-img {
|
|
|
+ .code img {
|
|
|
width: 100%;
|
|
|
height: 100%;
|
|
|
}
|
|
|
-}
|
|
|
-.login_text {
|
|
|
- // margin: auto 30rpx;
|
|
|
- position: relative;
|
|
|
- padding: 100rpx 102rpx;
|
|
|
- background-color: #ffffff;
|
|
|
- margin-top: -20rpx;
|
|
|
- border-radius: 20rpx;
|
|
|
- .login_input {
|
|
|
- border-bottom: 1px solid #f0f0f0;
|
|
|
- margin-bottom: 65rpx;
|
|
|
- .login_img image {
|
|
|
- height: 35rpx;
|
|
|
- width: 29rpx;
|
|
|
- margin-right: 20rpx;
|
|
|
- }
|
|
|
- .uni-input {
|
|
|
- text-align: left;
|
|
|
- width: 470rpx;
|
|
|
- font-size: 28rpx !important;
|
|
|
- }
|
|
|
- .login_name {
|
|
|
- color: #333333;
|
|
|
+
|
|
|
+ .acea-row.row-middle {
|
|
|
+ input {
|
|
|
+ margin-left: 20rpx;
|
|
|
+ display: block;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- .other {
|
|
|
- margin-top: 60rpx;
|
|
|
- .fenge {
|
|
|
- width: 30%;
|
|
|
- height: 2rpx;
|
|
|
- background-color: #eeeeee;
|
|
|
+ .login-wrapper {
|
|
|
+ padding: 30rpx;
|
|
|
+
|
|
|
+ .shading {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ width: 100%;
|
|
|
+
|
|
|
+ /* #ifdef APP-VUE */
|
|
|
+ margin-top: 50rpx;
|
|
|
+ /* #endif */
|
|
|
+ /* #ifndef APP-VUE */
|
|
|
+
|
|
|
+ margin-top: 200rpx;
|
|
|
+ /* #endif */
|
|
|
+
|
|
|
+
|
|
|
+ image {
|
|
|
+ width: 240rpx;
|
|
|
+ height: 240rpx;
|
|
|
+ }
|
|
|
}
|
|
|
- .qita {
|
|
|
- font-size: 28rpx;
|
|
|
- color: #999999;
|
|
|
+
|
|
|
+ .whiteBg {
|
|
|
+ margin-top: 100rpx;
|
|
|
+
|
|
|
+ .list {
|
|
|
+ border-radius: 16rpx;
|
|
|
+ overflow: hidden;
|
|
|
+
|
|
|
+ .item {
|
|
|
+ border-bottom: 1px solid #F0F0F0;
|
|
|
+ background: #fff;
|
|
|
+
|
|
|
+ .row-middle {
|
|
|
+ position: relative;
|
|
|
+ padding: 16rpx 45rpx;
|
|
|
+
|
|
|
+ input {
|
|
|
+ flex: 1;
|
|
|
+ font-size: 28rpx;
|
|
|
+ height: 80rpx;
|
|
|
+ }
|
|
|
+
|
|
|
+ .code {
|
|
|
+ position: absolute;
|
|
|
+ right: 30rpx;
|
|
|
+ top: 50%;
|
|
|
+ color: var(--view-theme);
|
|
|
+ font-size: 26rpx;
|
|
|
+ transform: translateY(-50%);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .logon {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ width: 100%;
|
|
|
+ height: 86rpx;
|
|
|
+ margin-top: 80rpx;
|
|
|
+ background-color: var(--view-theme);
|
|
|
+ border-radius: 120rpx;
|
|
|
+ color: #FFFFFF;
|
|
|
+ font-size: 30rpx;
|
|
|
+ }
|
|
|
+
|
|
|
+ .tips {
|
|
|
+ margin: 30rpx;
|
|
|
+ text-align: center;
|
|
|
+ color: #999;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- .weixin {
|
|
|
- width: 75rpx;
|
|
|
- height: 75rpx;
|
|
|
- margin: 25rpx auto;
|
|
|
- }
|
|
|
- .weixin image {
|
|
|
- width: 100%;
|
|
|
- height: 100%;
|
|
|
- }
|
|
|
- .weixin_text {
|
|
|
- text-align: center;
|
|
|
- font-size: 28rpx;
|
|
|
+
|
|
|
+ .protocol {
|
|
|
+ margin-top: 40rpx;
|
|
|
color: #999999;
|
|
|
+ font-size: 24rpx;
|
|
|
+ text-align: center;
|
|
|
+ bottom: 20rpx;
|
|
|
}
|
|
|
- .forget {
|
|
|
- font-size: 28rpx;
|
|
|
+
|
|
|
+ .bottom {
|
|
|
+ position: fixed;
|
|
|
+ bottom: 30rpx;
|
|
|
+ left: 0;
|
|
|
+ display: flex;
|
|
|
width: 100%;
|
|
|
- text-align: right;
|
|
|
+ justify-content: center;
|
|
|
color: #999999;
|
|
|
+
|
|
|
+ .ver {
|
|
|
+ font-size: 20rpx;
|
|
|
+ }
|
|
|
+
|
|
|
+ .ver-msg {
|
|
|
+ margin-left: 10rpx;
|
|
|
+ }
|
|
|
+
|
|
|
+ a {
|
|
|
+ color: #999999;
|
|
|
+ margin-left: 10rpx;
|
|
|
+ text-decoration: none;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- .uni-button-yello {
|
|
|
- color: #ffffff;
|
|
|
- // margin: 40rpx 10rpx;
|
|
|
- // border-radius: 50rpx;
|
|
|
-
|
|
|
- background: linear-gradient(-30deg, #FF3106, #FF8F3B);
|
|
|
- border-radius: 10rpx;
|
|
|
+ .trembling {
|
|
|
+ animation: shake 0.6s;
|
|
|
}
|
|
|
-
|
|
|
- .uni-button {
|
|
|
- height: 85rpx;
|
|
|
- line-height: 85rpx;
|
|
|
+
|
|
|
+ .main-color {
|
|
|
+ color: var(--view-theme);
|
|
|
}
|
|
|
-}
|
|
|
-.loginTitle {
|
|
|
- position: absolute;
|
|
|
- top: 250rpx;
|
|
|
- width: 100%;
|
|
|
- text-align: center;
|
|
|
- color: white;
|
|
|
- font-size: 40rpx;
|
|
|
-}
|
|
|
-
|
|
|
-.forget {
|
|
|
- width: 100rpx;
|
|
|
- font-size: 24rpx;
|
|
|
- color: #ffffff;
|
|
|
- margin: 0px auto;
|
|
|
- border-bottom: 1px solid #ffffff;
|
|
|
-}
|
|
|
-.width {
|
|
|
- width: 325rpx !important;
|
|
|
-}
|
|
|
-.code {
|
|
|
- color: #ff762d;
|
|
|
- font-size: 23rpx;
|
|
|
- border-left: 1px solid #eeeeee;
|
|
|
- width: 150rpx;
|
|
|
- flex-shrink: 0;
|
|
|
- text-align: center;
|
|
|
-}
|
|
|
-
|
|
|
-.choose {
|
|
|
+
|
|
|
+ .choose {
|
|
|
display: flex;
|
|
|
justify-content: center;
|
|
|
- margin-top: 15rpx;
|
|
|
+
|
|
|
.reg {
|
|
|
font-size: 28rpx;
|
|
|
font-weight: 500;
|
|
|
color: #ff8d3a;
|
|
|
}
|
|
|
+
|
|
|
.xian {
|
|
|
color: #FF4C4C;
|
|
|
padding-left: 10rpx;
|
|
|
}
|
|
|
+
|
|
|
.zhuce {
|
|
|
font-size: 28rpx;
|
|
|
font-weight: 500;
|
|
@@ -307,11 +662,4 @@ page {
|
|
|
padding-left: 10rpx;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
-uni-button {
|
|
|
- height: 80rpx !important;
|
|
|
- line-height: 80rpx !important;
|
|
|
-}
|
|
|
-
|
|
|
-</style>
|
|
|
-
|
|
|
+</style>
|