You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
448 lines
16 KiB
448 lines
16 KiB
<template>
|
|
<view class="container">
|
|
<block v-if="isload">
|
|
<block v-if="logintype!=4">
|
|
<form @submit="formSubmit" @reset="formReset">
|
|
<view class="title">注册账号</view>
|
|
<view class="regform">
|
|
<view class="form-item">
|
|
<image :src="event_rul +'/static/img/static/img/reg-tel.png'" class="img"/>
|
|
<input type="text" class="input" placeholder="请输入手机号" placeholder-style="font-size:30rpx;color:#B2B5BE" name="tel" value="" @input="telinput"/>
|
|
</view>
|
|
<view class="form-item" v-if="needsms">
|
|
<image :src="event_rul +'/static/img/static/img/reg-code.png'" class="img"/>
|
|
<input type="text" class="input" placeholder="请输入验证码" placeholder-style="font-size:30rpx;color:#B2B5BE" name="smscode" value=""/>
|
|
<view class="code" :style="{color:t('color1')}" @tap="smscode">{{smsdjs||'获取验证码'}}</view>
|
|
</view>
|
|
<view class="form-item">
|
|
<image :src="event_rul +'/static/img/static/img/reg-pwd.png'" class="img"/>
|
|
<input type="text" class="input" placeholder="6-16位字母数字组合密码" placeholder-style="font-size:30rpx;color:#B2B5BE" name="pwd" value="" :password="true"/>
|
|
</view>
|
|
<view class="form-item">
|
|
<image :src="event_rul +'/static/img/static/img/reg-pwd.png'" class="img"/>
|
|
<input type="text" class="input" placeholder="再次输入登录密码" placeholder-style="font-size:30rpx;color:#B2B5BE" name="repwd" value="" :password="true"/>
|
|
</view>
|
|
<view class="form-item" v-if="reg_invite_code && !parent">
|
|
<image :src="event_rul +'/static/img/static/img/reg-yqcode.png'" class="img"/>
|
|
<input type="text" class="input" :placeholder="'请输入'+(reg_invite_code_type==0?'邀请人手机号':'邀请码')+(reg_invite_code==2?'(必填)':'(选填)')" placeholder-style="font-size:30rpx;color:#B2B5BE" name="yqcode" value=""/>
|
|
</view>
|
|
<view class="form-item" v-if="reg_invite_code && parent" style="color:#666;">
|
|
<block v-if="reg_invite_code_type == 0 ">
|
|
邀请人:<image :src="parent.headimg" style="width: 80rpx; height: 80rpx;border-radius: 50%;"></image> {{parent.nickname}}
|
|
</block>
|
|
<block v-else>
|
|
邀请码:{{parent.yqcode}}
|
|
</block>
|
|
</view>
|
|
|
|
<view class="xieyi-item" v-if="xystatus==1">
|
|
<checkbox-group @change="isagreeChange"><label class="flex-y-center"><checkbox class="checkbox" value="1" :checked="isagree"/>阅读并同意</label></checkbox-group>
|
|
<text :style="{color:t('color1')}" @tap="showxieyiFun">{{xyname}}</text>
|
|
</view>
|
|
|
|
<button class="form-btn" :style="{background:'linear-gradient(90deg,'+t('color1')+' 0%,rgba('+t('color1rgb')+',0.8) 100%)'}" form-type="submit">注册</button>
|
|
</view>
|
|
</form>
|
|
<view class="tologin" @tap="goto" data-url="login" data-opentype="redirect">已有账号? 前去登录</view>
|
|
|
|
<block v-if="logintype_2 || logintype_3">
|
|
<view class="othertip">
|
|
<view class="othertip-line"></view>
|
|
<view class="othertip-text">
|
|
<text class="txt">其他方式登录</text>
|
|
</view>
|
|
<view class="othertip-line"></view>
|
|
</view>
|
|
<view class="othertype">
|
|
<view class="othertype-item" v-if="logintype_3" @tap="weixinlogin">
|
|
<image class="img" :src="pre_url+'/static/img/login-'+platformimg+'.png'"/>
|
|
<text class="txt">{{platformname}}登录</text>
|
|
</view>
|
|
<view class="othertype-item" v-if="logintype_2" @tap="goto" data-url="login?logintype=2" data-opentype="redirect">
|
|
<image class="img" :src="event_rul +'/static/img/static/img/reg-tellogin.png'"/>
|
|
<text class="txt">手机号登录</text>
|
|
</view>
|
|
</view>
|
|
</block>
|
|
</block>
|
|
<!-- 绑定手机号 -->
|
|
<block v-if="logintype==4">
|
|
<block v-if="platform == 'wx'">
|
|
<view class="authlogin">
|
|
<view class="authlogin-logo"><image :src="logo" style="width:100%;height:100%"/></view>
|
|
<view class="authlogin-name">授权登录{{name}}</view>
|
|
<button class="authlogin-btn" open-type="getPhoneNumber" @getphonenumber="getPhoneNumber" :style="{background:'linear-gradient(90deg,'+t('color1')+' 0%,rgba('+t('color1rgb')+',0.8) 100%)'}">{{platformname}}授权绑定手机号</button>
|
|
<button class="authlogin-btn2" @tap="nobindregister" v-if="login_bind==1">暂不绑定</button>
|
|
</view>
|
|
</block>
|
|
<block v-else>
|
|
<form @submit="bindregister" @reset="formReset">
|
|
<view class="title">绑定手机号</view>
|
|
<view class="regform">
|
|
<view class="form-item">
|
|
<image :src="event_rul +'/static/img/static/img/reg-tel.png'" class="img"/>
|
|
<input type="text" class="input" placeholder="请输入手机号" placeholder-style="font-size:30rpx;color:#B2B5BE" name="tel" value="" @input="telinput"/>
|
|
</view>
|
|
<view class="form-item">
|
|
<image :src="event_rul +'/static/img/static/img/reg-code.png'" class="img"/>
|
|
<input type="text" class="input" placeholder="请输入验证码" placeholder-style="font-size:30rpx;color:#B2B5BE" name="smscode" value=""/>
|
|
<view class="code" :style="{color:t('color1')}" @tap="smscode">{{smsdjs||'获取验证码'}}</view>
|
|
</view>
|
|
<button class="form-btn" form-type="submit" :style="{background:'linear-gradient(90deg,'+t('color1')+' 0%,rgba('+t('color1rgb')+',0.8) 100%)'}">确定</button>
|
|
<button class="form-btn2" @tap="nobindregister" v-if="login_bind==1">暂不绑定</button>
|
|
</view>
|
|
</form>
|
|
</block>
|
|
</block>
|
|
<view v-if="showxieyi" class="xieyibox">
|
|
<view class="xieyibox-content">
|
|
<view style="overflow:scroll;height:100%;">
|
|
<parse :content="xycontent" @navigate="navigate"></parse>
|
|
</view>
|
|
<view style="position:absolute;z-index:9999;bottom:10px;left:0;right:0;margin:0 auto;text-align:center; width: 50%;height: 60rpx; line-height: 60rpx; color: #fff; border-radius: 8rpx;" :style="{background:'linear-gradient(90deg,'+t('color1')+' 0%,rgba('+t('color1rgb')+',0.8) 100%)'}" @tap="hidexieyi">已阅读并同意</view>
|
|
</view>
|
|
</view>
|
|
|
|
</block>
|
|
<loading v-if="loading"></loading>
|
|
<dp-tabbar :opt="opt"></dp-tabbar>
|
|
<popmsg ref="popmsg"></popmsg>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
var app = getApp();
|
|
|
|
export default {
|
|
data() {
|
|
return {
|
|
opt:{},
|
|
loading:false,
|
|
isload: false,
|
|
menuindex:-1,
|
|
pre_url:app.globalData.pre_url,
|
|
platform2:app.globalData.platform2,
|
|
|
|
platform:'',
|
|
platformname:'',
|
|
platformimg:'weixin',
|
|
logintype:0,
|
|
logintype_1:true,
|
|
logintype_2:false,
|
|
logintype_3:false,
|
|
logo:'',
|
|
name:'',
|
|
xystatus:0,
|
|
xyname:'',
|
|
xycontent:'',
|
|
needsms:false,
|
|
showxieyi:false,
|
|
isagree:false,
|
|
smsdjs: '',
|
|
tel:'',
|
|
hqing: 0,
|
|
frompage:'/pages/my/usercenter',
|
|
wxloginclick:false,
|
|
login_bind:0,
|
|
reg_invite_code:0,
|
|
reg_invite_code_text:'',
|
|
reg_invite_code_type:0,
|
|
parent:{},
|
|
|
|
event_rul: app.globalData.event_url,
|
|
};
|
|
},
|
|
|
|
onLoad: function (opt) {
|
|
this.opt = app.getopts(opt);
|
|
if(this.opt.frompage) this.frompage = decodeURIComponent(this.opt.frompage);
|
|
if(this.opt.logintype) this.logintype = this.opt.logintype;
|
|
if(this.opt.login_bind) this.login_bind = this.opt.login_bind;
|
|
this.getdata();
|
|
},
|
|
onPullDownRefresh: function () {
|
|
this.getdata();
|
|
},
|
|
methods: {
|
|
getdata: function () {
|
|
var that = this;
|
|
that.loading = true;
|
|
app.get('ApiIndex/reg', {pid:app.globalData.pid}, function (res) {
|
|
that.loading = false;
|
|
if(res.status == 0){
|
|
app.alert(res.msg);return;
|
|
}
|
|
that.logintype_2 = res.logintype_2;
|
|
that.logintype_3 = res.logintype_3;
|
|
that.logintype_3 = res.logintype_3;
|
|
// #ifdef APP-PLUS
|
|
if(that.platform2 == 'ios'){
|
|
if (plus.runtime.isApplicationExist({ pname: 'com.tencent.mm', action: 'weixin://' })) {
|
|
|
|
}else{
|
|
that.logintype_3 = false;
|
|
}
|
|
}
|
|
// #endif
|
|
|
|
that.xystatus = res.xystatus;
|
|
that.xyname = res.xyname;
|
|
that.xycontent = res.xycontent;
|
|
that.logo = res.logo;
|
|
that.name = res.name;
|
|
that.needsms = res.needsms;
|
|
that.platform = res.platform;
|
|
that.reg_invite_code = res.reg_invite_code;
|
|
that.reg_invite_code_text = res.reg_invite_code_text;
|
|
that.reg_invite_code_type = res.reg_invite_code_type;
|
|
that.parent = res.parent;
|
|
if(that.platform == 'mp' || that.platform == 'wx' || that.platform == 'app'){
|
|
that.platformname = '微信';
|
|
that.platformimg = 'weixin';
|
|
}
|
|
if(that.platform == 'toutiao'){
|
|
that.platformname = '头条';
|
|
that.platformimg = 'toutiao';
|
|
}
|
|
if(that.platform == 'alipay'){
|
|
that.platformname = '支付宝';
|
|
that.platformimg = 'alipay';
|
|
}
|
|
if(that.platform == 'qq'){
|
|
that.platformname = 'QQ';
|
|
that.platformimg = 'qq';
|
|
}
|
|
if(that.platform == 'baidu'){
|
|
that.platformname = '百度';
|
|
that.platformimg = 'baidu';
|
|
}
|
|
that.loaded();
|
|
});
|
|
},
|
|
formSubmit: function (e) {
|
|
var that = this;
|
|
var formdata = e.detail.value;
|
|
if (formdata.tel == ''){
|
|
app.alert('请输入手机号');
|
|
return;
|
|
}
|
|
if (formdata.pwd == '') {
|
|
app.alert('请输入密码');
|
|
return;
|
|
}
|
|
if (formdata.pwd.length < 6) {
|
|
app.alert('新密码不小于6位');
|
|
return;
|
|
}
|
|
if (formdata.repwd == '') {
|
|
app.alert('请再次输入新密码');
|
|
return;
|
|
}
|
|
if (formdata.pwd != formdata.repwd) {
|
|
app.alert('两次密码不一致');
|
|
return;
|
|
}
|
|
if(that.needsms){
|
|
if (formdata.smscode == '') {
|
|
app.alert('请输入短信验证码');
|
|
return;
|
|
}
|
|
}else{
|
|
formdata.smscode = '';
|
|
}
|
|
|
|
if (that.xystatus == 1 && !that.isagree) {
|
|
app.error('请先阅读并同意用户注册协议');
|
|
return false;
|
|
}
|
|
app.showLoading('提交中');
|
|
app.post("ApiIndex/regsub", {tel:formdata.tel,pwd:formdata.pwd,smscode:formdata.smscode,pid:app.globalData.pid,yqcode:formdata.yqcode}, function (data) {
|
|
app.showLoading(false);
|
|
if (data.status == 1) {
|
|
app.success(data.msg);
|
|
setTimeout(function () {
|
|
app.goto('/pages/my/usercenter','redirect');
|
|
}, 1000);
|
|
} else {
|
|
app.error(data.msg);
|
|
}
|
|
});
|
|
},
|
|
getPhoneNumber: function (e) {
|
|
var that = this
|
|
if(e.detail.errMsg == "getPhoneNumber:fail user deny"){
|
|
app.error('请同意授权获取手机号');return;
|
|
}
|
|
wx.login({success (res1){
|
|
console.log(res1);
|
|
var code = res1.code;
|
|
//用户允许授权
|
|
app.post('ApiIndex/wxRegister',{ iv: e.detail.iv,encryptedData:e.detail.encryptedData,code:code,pid:app.globalData.pid},function(res2){
|
|
if (res2.status == 1) {
|
|
app.success(res2.msg);
|
|
setTimeout(function () {
|
|
app.goto(that.frompage,'redirect');
|
|
}, 1000);
|
|
} else {
|
|
app.error(res2.msg);
|
|
}
|
|
return;
|
|
})
|
|
}});
|
|
},
|
|
bindregister:function(e){
|
|
var that = this;
|
|
var formdata = e.detail.value;
|
|
if (formdata.tel == ''){
|
|
app.alert('请输入手机号');
|
|
return;
|
|
}
|
|
if (formdata.smscode == '') {
|
|
app.alert('请输入短信验证码');
|
|
return;
|
|
}
|
|
that.register(formdata.tel,formdata.smscode);
|
|
},
|
|
nobindregister:function(){
|
|
this.register('','');
|
|
},
|
|
register:function(tel,smscode){
|
|
var that = this;
|
|
var url = '';
|
|
if(that.platform == 'app') {
|
|
url = 'ApiIndex/appwxRegister';
|
|
} else if(that.platform=='mp' || that.platform=='h5') {
|
|
url = 'ApiIndex/shouquanRegister';
|
|
} else {
|
|
url = 'ApiIndex/'+that.platform+'Register';
|
|
}
|
|
app.post(url,{tel:tel,smscode:smscode,pid:app.globalData.pid},function(res2){
|
|
if (res2.status == 1) {
|
|
app.success(res2.msg);
|
|
setTimeout(function () {
|
|
app.goto(that.frompage,'redirect');
|
|
}, 1000);
|
|
} else {
|
|
app.error(res2.msg);
|
|
}
|
|
return;
|
|
});
|
|
},
|
|
weixinlogin:function(){
|
|
var that = this;
|
|
if (that.xystatus == 1 && !that.isagree) {
|
|
that.showxieyi = true;
|
|
that.wxloginclick = true;
|
|
return;
|
|
}
|
|
that.wxloginclick = false;
|
|
app.authlogin(function(res){
|
|
if (res.status == 1) {
|
|
app.success(res.msg);
|
|
setTimeout(function () {
|
|
app.goto(that.frompage,'redirect');
|
|
}, 1000);
|
|
} else if (res.status == 2) {
|
|
that.logintype = 4;
|
|
that.login_bind = res.login_bind
|
|
} else {
|
|
app.error(res.msg);
|
|
}
|
|
});
|
|
},
|
|
isagreeChange: function (e) {
|
|
var val = e.detail.value;
|
|
if (val.length > 0) {
|
|
this.isagree = true;
|
|
} else {
|
|
this.isagree = false;
|
|
}
|
|
console.log(this.isagree);
|
|
},
|
|
showxieyiFun: function () {
|
|
this.showxieyi = true;
|
|
},
|
|
hidexieyi: function () {
|
|
this.showxieyi = false;
|
|
this.isagree = true;
|
|
if(this.wxloginclick){
|
|
this.weixinlogin();
|
|
}
|
|
},
|
|
telinput: function (e) {
|
|
this.tel = e.detail.value
|
|
},
|
|
smscode: function () {
|
|
var that = this;
|
|
if (that.hqing == 1) return;
|
|
that.hqing = 1;
|
|
var tel = that.tel;
|
|
if (tel == '') {
|
|
app.alert('请输入手机号码');
|
|
that.hqing = 0;
|
|
return false;
|
|
}
|
|
if (!/^1[3456789]\d{9}$/.test(tel)) {
|
|
app.alert("手机号码有误,请重填");
|
|
that.hqing = 0;
|
|
return false;
|
|
}
|
|
app.post("ApiIndex/sendsms", {tel: tel}, function (data) {
|
|
if (data.status != 1) {
|
|
app.alert(data.msg);
|
|
}
|
|
});
|
|
var time = 120;
|
|
var interval1 = setInterval(function () {
|
|
time--;
|
|
if (time < 0) {
|
|
that.smsdjs = '重新获取';
|
|
that.hqing = 0;
|
|
clearInterval(interval1);
|
|
} else if (time >= 0) {
|
|
that.smsdjs = time + '秒';
|
|
}
|
|
}, 1000);
|
|
}
|
|
}
|
|
};
|
|
</script>
|
|
|
|
<style>
|
|
page{background:#ffffff}
|
|
.container{width:100%;}
|
|
.title{margin:70rpx 50rpx 50rpx 40rpx;height:60rpx;line-height:60rpx;font-size: 48rpx;font-weight: bold;color: #000000;}
|
|
.regform{ width:100%;padding:0 50rpx;border-radius:5px;background: #FFF;}
|
|
.regform .form-item{display:flex;align-items:center;width:100%;border-bottom: 1px #ededed solid;height:88rpx;line-height:88rpx;border-bottom:1px solid #F0F3F6;margin-top:20rpx}
|
|
.regform .form-item:last-child{border:0}
|
|
.regform .form-item .img{width:44rpx;height:44rpx;margin-right:30rpx}
|
|
.regform .form-item .input{flex:1;color: #000;}
|
|
.regform .form-item .code{font-size:30rpx}
|
|
.regform .xieyi-item{display:flex;align-items:center;margin-top:50rpx}
|
|
.regform .xieyi-item{font-size:24rpx;color:#B2B5BE}
|
|
.regform .xieyi-item .checkbox{transform: scale(0.6);}
|
|
.regform .form-btn{margin-top:20rpx;width:100%;height:96rpx;line-height:96rpx;color:#fff;font-size:30rpx;border-radius: 48rpx;}
|
|
.regform .form-btn2{width:100%;height:80rpx;line-height:80rpx;background:#EEEEEE;border-radius:40rpx;color:#A9A9A9;margin-top:30rpx}
|
|
.tologin{color:#737785;font-size:26rpx;display:flex;width:100%;padding:0 80rpx;margin-top:30rpx}
|
|
|
|
.othertip{height:auto;overflow: hidden;display:flex;align-items:center;width:580rpx;padding:20rpx 20rpx;margin:0 auto;margin-top:60rpx;}
|
|
.othertip-line{height: auto; padding: 0; overflow: hidden;flex:1;height:0;border-top:1px solid #F2F2F2}
|
|
.othertip-text{padding:0 32rpx;text-align:center;display:flex;align-items:center;justify-content:center}
|
|
.othertip-text .txt{color:#A3A3A3;font-size:22rpx}
|
|
|
|
.othertype{width:70%;margin:20rpx 15%;display:flex;justify-content:center;}
|
|
.othertype-item{width:50%;display:flex;flex-direction:column;align-items:center;}
|
|
.othertype-item .img{width:88rpx;height:88rpx;margin-bottom:20rpx}
|
|
.othertype-item .txt{color:#A3A3A3;font-size:24rpx}
|
|
|
|
.xieyibox{width:100%;height:100%;position:fixed;top:0;left:0;z-index:99;background:rgba(0,0,0,0.7)}
|
|
.xieyibox-content{width:90%;margin:0 auto;height:80%;margin-top:20%;background:#fff;color:#333;padding:5px 10px 50px 10px;position:relative;border-radius:2px}
|
|
|
|
|
|
.authlogin{display:flex;flex-direction:column;align-items:center}
|
|
.authlogin-logo{width:180rpx;height:180rpx;margin-top:120rpx}
|
|
.authlogin-name{color:#999999;font-size:30rpx;margin-top:60rpx;}
|
|
.authlogin-btn{width:580rpx;height:96rpx;line-height:96rpx;background:#51B1F5;border-radius:48rpx;color:#fff;margin-top:100rpx}
|
|
.authlogin-btn2{width:580rpx;height:96rpx;line-height:96rpx;background:#EEEEEE;border-radius:48rpx;color:#A9A9A9;margin-top:20rpx}
|
|
|
|
</style>
|