金诚优选前端代码
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.
 
 
 
 
 

274 lines
6.3 KiB

<template>
<view id="bindingphone">
<view class="tips" :hidden="!message">{{message}}</view>
<view class="phone__warning">
<view class="phone__num">
<input type="text" placeholder="手机号码" @input="changeCode"></input>
</view>
<view class="phone__code">
<view class="input">
<input type="text" placeholder="验证码" @input="changeIdentifyCode"></input>
</view>
<view class="code__get code-send" :style="'background: ' + config.mainColor" @tap="getCode">
{{code.codeText}}
</view>
</view>
</view>
<view class="phone__box">
<view class="phone__btn phone-confirm phone-binding" :style="'background: ' + config.mainColor" @tap="submit">
确定绑定
</view>
<view class="phone__btn phone-cancel" @tap="back">
取消
</view>
</view>
</view>
</template>
<script>
import {pageLogin, getUrl,config,is} from '@/common/js/utils.js';
export default {
data() {
return {
code: {
total: 60,
access_token: null,
codeText: "获取验证码"
},
sending: false,
tellphone: '',
identifyingcode: '',
url: '',
config: '',
message:''
};
},
onLoad(e) {
// 第三方平台配置颜色
var bgConfig = this.$cookieStorage.get('globalConfig') || '';
this.setData({
config: bgConfig
});
if (e.url) {
this.setData({
url: e.url
});
}
},
methods: {
getCode() {
if (this.sending) return;
var randoms = this.random();
this.setData({
sending: true,
'code.codeText': "短信发送中",
'code.access_token': randoms
});
var fn;
fn = this.getLoginCode;
fn(() => {
var total = this.code.total;
this.setData({
'code.codeText': total + "秒后再发送"
});
var timer = setInterval(() => {
total--;
this.setData({
'code.codeText': total + "秒后再发送"
});
if (total < 1) {
this.setData({
sending: false,
'code.codeText': "获取验证码"
});
clearInterval(timer);
}
}, 1000);
}, () => {
// this.setData({
// sending: false,
// 'code.codeText': "获取验证码"
// });
this.sending=false;
this.code.codeText="获取验证码";
});
},
changeCode(e) {
this.setData({
tellphone: e.detail.value
});
},
changeIdentifyCode(e) {
this.setData({
identifyingcode: e.detail.value
});
},
random() {
return Math.random().toString(36).substr(2, 24);
},
getLoginCode(resolve, reject) {
var message = null;
if (!is.has(this.tellphone)) {
message = "请输入您的手机号";
} else if (!is.mobile(this.tellphone)) {
message = '手机号格式不正确,请重新输入';
}
if (message) {
this.message=message;
reject();
setTimeout(() => {
this.message='';
}, 3000);
return;
}
this.$http.post({
api: "api/sms/verify-code",
data: {
mobile: this.tellphone,
access_token: this.code.access_token
}
}).then(res => {
if (res.data.success) {
resolve();
} else {
reject();
}
}); // resolve();
},
submit() {
var message = null;
if (!is.has(this.tellphone)) {
message = "请输入您的手机号";
} else if (!is.mobile(this.tellphone)) {
message = '手机号格式不正确,请重新输入';
} else if (!is.has(this.identifyingcode)) {
message = "请填写验证码";
}
if (message) {
this.message=message;
setTimeout(() => {
this.message='';
}, 3000);
return;
}
this.showLoading=true;
this.bindUserMobile();
},
bindUserMobile() {
this.$http.post({
api: 'api/users/update/mobile',
data: {
mobile: this.tellphone,
code: this.identifyingcode,
access_token: this.code.access_token
},
header: {
Authorization: this.$cookieStorage.get('user_token')
}
}).then(res => {
wx.hideLoading();
if (res.statusCode == 200) {
res = res.data;
if (res.status) {
wx.showModal({
content: '绑定成功',
showCancel: false,
success: res => {
if (res.confirm || !res.cancel && !res.confirm) {
if (this.url) {
wx.redirectTo({
url: '/' + decodeURIComponent(this.url)
});
} else {
wx.switchTab({
url: '/pages/user/personal/personal'
});
}
}
}
});
} else {
wx.showModal({
content: res.message || '绑定失败',
showCancel: false
});
}
} else {
wx.showModal({
content: '请求失败,请重试',
showCancel: false
});
}
}).catch(rej => {
res = res.data;
wx.showModal({
content: '请求失败,请重试',
showCancel: false
});
});
},
back() {
if (this.url) {
wx.redirectTo({
url: '/' + decodeURIComponent(this.url)
});
} else {
wx.navigateBack();
}
},
setData: function (obj) {
let that = this;
let keys = [];
let val, data;
Object.keys(obj).forEach(function (key) {
keys = key.split('.');
val = obj[key];
data = that.$data;
keys.forEach(function (key2, index) {
if (index + 1 == keys.length) {
that.$set(data, key2, val);
} else {
if (!data[key2]) {
that.$set(data, key2, {});
}
}
data = data[key2];
});
});
}
},
computed: {},
watch: {}
};
</script>
<style rel="stylesheet/less" lang="less">
@import "bindingphone";
</style>