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
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>
|