vr-shopxo-source/sourcecode/alipay/default/pages/login/login.js

195 lines
5.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

const app = getApp();
Page({
data: {
params: null,
user: null,
mobile: null,
verify_submit_text: '获取验证码',
verify_loading: false,
verify_disabled: false,
form_submit_loading: false,
verify_time_total: 60,
temp_clear_time: null,
},
/**
* 页面加载初始化
*/
onLoad(option) {
// 标题设置
my.setNavigationBar({title: (this.data.user == null) ? '授权用户信息' : '手机绑定'});
// 设置用户信息
this.setData({params: option, user: app.get_user_cache_info() || null});
},
/**
* 登录授权事件
*/
get_user_info_event(e) {
this.user_auth_code(null, null, e.detail);
},
/**
* 用户授权
* object 回调操作对象
* method 回调操作对象的函数
* auth_data 授权数据
*/
user_auth_code(object, method, auth_data) {
my.getOpenUserInfo({
success: (userinfo) => {
// 字符串则转为json对象兼容支付宝框架bug
if(typeof(userinfo.response) == 'string')
{
userinfo = JSON.parse(userinfo.response);
}
app.user_auth_login(this, 'user_auth_back_event', userinfo.response);
}
});
},
/**
* 授权返回事件
*/
user_auth_back_event() {
var user = app.get_user_cache_info();
this.setData({user: user || null});
if (app.user_is_need_login(user) == false)
{
my.navigateBack();
}
},
/**
* 输入手机号码事件
*/
bind_key_input(e)
{
this.setData({mobile: e.detail.value});
},
/**
* 短信验证码发送
*/
verify_send()
{
// 数据验证
var validation = [{fields: 'mobile', msg: '请填写手机号码'}];
if(app.fields_check(this.data, validation))
{
// 网络请求
var self = this;
my.showLoading({content: '发送中...'});
this.setData({verify_submit_text: '发送中', verify_loading: true, verify_disabled: true});
my.request({
url: app.get_request_url('appmobilebindverifysend', 'user'),
method: 'POST',
data: {mobile: this.data.mobile},
dataType: 'json',
headers: { 'content-type': 'application/x-www-form-urlencoded' },
success: (res) => {
my.hideLoading();
if(res.data.code == 0)
{
this.setData({verify_loading: false});
var temp_time = this.data.verify_time_total;
this.data.temp_clear_time = setInterval(function()
{
if(temp_time <= 1)
{
clearInterval(self.data.temp_clear_time);
self.setData({verify_submit_text: '获取验证码', verify_disabled: false});
} else {
temp_time--;
self.setData({verify_submit_text: '剩余 '+temp_time+' 秒'});
}
}, 1000);
} else {
this.setData({verify_submit_text: '获取验证码', verify_loading: false, verify_disabled: false});
app.showToast(res.data.msg);
}
},
fail: () => {
my.hideLoading();
this.setData({verify_submit_text: '获取验证码', verify_loading: false, verify_disabled: false});
app.showToast('服务器请求出错');
}
});
}
},
/**
* 表单提交
*/
formSubmit(e)
{
// 邀请人参数
var params = my.getStorageSync({key: app.data.cache_launch_info_key}) || null;
// 数据验证
var validation = [
{fields: 'mobile', msg: '请填写手机号码'},
{fields: 'verify', msg: '请填写验证码'},
{fields: 'alipay_openid', msg: '授权id不能为空'}
];
e.detail.value['alipay_openid'] = this.data.user.alipay_openid;
e.detail.value['nickname'] = this.data.user.nickname;
e.detail.value['avatar'] = this.data.user.avatar;
e.detail.value['province'] = this.data.user.province;
e.detail.value['city'] = this.data.user.city;
e.detail.value['gender'] = this.data.user.gender;
e.detail.value['referrer'] = (params == null || (params.data || null) == null) ? (this.data.user.referrer || 0) : (params.data.referrer || 0);
if(app.fields_check(e.detail.value, validation))
{
my.showLoading({content: '处理中...'});
this.setData({form_submit_loading: true});
// 网络请求
my.request({
url: app.get_request_url('appmobilebind', 'user'),
method: 'POST',
data: e.detail.value,
dataType: 'json',
headers: { 'content-type': 'application/x-www-form-urlencoded' },
success: (res) => {
my.hideLoading();
if(res.data.code == 0 && (res.data.data || null) != null)
{
clearInterval(this.data.temp_clear_time);
app.showToast(res.data.msg, 'success');
my.setStorage({
key: app.data.cache_user_info_key,
data: res.data.data
});
var event_callback = this.data.params.event_callback || null;
setTimeout(function()
{
// 触发回调函数
if(event_callback != null)
{
getCurrentPages()[getCurrentPages().length-2][event_callback]();
}
my.navigateBack();
}, 1000);
} else {
this.setData({form_submit_loading: false});
app.showToast(res.data.msg);
}
},
fail: () => {
my.hideLoading();
this.setData({form_submit_loading: false});
app.showToast('服务器请求出错');
}
});
}
}
});