2020-06-08 07:23:23 +00:00
|
|
|
|
<template>
|
|
|
|
|
<view class="update-phone">
|
|
|
|
|
<view class="update-main">
|
|
|
|
|
<view class="old-phone">
|
|
|
|
|
<view class="phone-number">
|
|
|
|
|
<view class="title">原手机号</view>
|
2020-06-19 10:07:11 +00:00
|
|
|
|
<input type="text" v-model="oldNumber" placeholder="请输入手机号码" />
|
2020-06-08 07:23:23 +00:00
|
|
|
|
</view>
|
|
|
|
|
<view class="code">
|
|
|
|
|
<view class="title">验证码</view>
|
2020-06-19 10:07:11 +00:00
|
|
|
|
<input type="text" v-model="oldCode" placeholder="请输入验证码" />
|
2020-07-03 01:08:53 +00:00
|
|
|
|
<u-verification-code :seconds="seconds" @end="end" @start="start" ref="uOldCode" @change="oldCodeChange" unique-key="old" change-text="x秒"></u-verification-code>
|
|
|
|
|
<view class="get-code" @click="getCode(0)">{{ btnText[0] }}</view>
|
2020-06-08 07:23:23 +00:00
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="new-phone">
|
|
|
|
|
<view class="phone-number">
|
|
|
|
|
<view class="title">新手机号</view>
|
2020-06-19 10:07:11 +00:00
|
|
|
|
<input type="text" v-model="newNumber" placeholder="请输入手机号码" />
|
2020-06-08 07:23:23 +00:00
|
|
|
|
</view>
|
|
|
|
|
<view class="code">
|
|
|
|
|
<view class="title">验证码</view>
|
2020-06-19 10:07:11 +00:00
|
|
|
|
<input type="text" v-model="newCode" placeholder="请输入验证码" />
|
2020-07-03 01:08:53 +00:00
|
|
|
|
<u-verification-code :seconds="seconds" @end="end" @start="start" ref="uNewCode" @change="newCodeChange" unique-key="new" change-text="x秒"></u-verification-code>
|
|
|
|
|
<view class="get-code" @click="getCode(1)">{{ btnText[1] }}</view>
|
2020-06-08 07:23:23 +00:00
|
|
|
|
</view>
|
2020-07-03 01:08:53 +00:00
|
|
|
|
<u-toast ref="uToast" />
|
2020-06-08 07:23:23 +00:00
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="tips">注意:修改手机号需要原手机号获取验证码,无原手机验证码,请联系后台</view>
|
2020-06-19 10:07:11 +00:00
|
|
|
|
<view class="btn">保存</view>
|
2020-06-08 07:23:23 +00:00
|
|
|
|
</view>
|
|
|
|
|
</template>
|
|
|
|
|
<script>
|
|
|
|
|
export default {
|
|
|
|
|
data() {
|
2020-06-19 10:07:11 +00:00
|
|
|
|
return {
|
|
|
|
|
oldNumber: '',
|
|
|
|
|
oldCode: '',
|
|
|
|
|
newNumber: '',
|
2020-07-03 01:08:53 +00:00
|
|
|
|
newCode: '',
|
|
|
|
|
btnText: ['获取验证码', '获取验证码'],
|
|
|
|
|
seconds: 60, // 获取验证码间隔时间
|
2020-06-19 10:07:11 +00:00
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
methods: {
|
2020-07-03 01:08:53 +00:00
|
|
|
|
verifyValue(type) {
|
|
|
|
|
const phone = type == 0 ? this.oldNumber : this.newNumber;
|
|
|
|
|
return this.$u.test.mobile(phone);
|
|
|
|
|
},
|
|
|
|
|
// @param Number type 0: 原手机号 1: 新手机号
|
|
|
|
|
getSmsCode (type) {
|
|
|
|
|
if(!this.verifyValue(type)) {
|
|
|
|
|
let tips = type == 0 ? '请填写正确的原手机号' : '请填写正确的新手机号';
|
|
|
|
|
this.$u.toast(tips);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
if(this.seconds > 0) {
|
|
|
|
|
this.$u.toast('倒计时结束后再发送');
|
|
|
|
|
}
|
|
|
|
|
uni.showLoading({
|
|
|
|
|
title: '正在获取验证码'
|
|
|
|
|
})
|
|
|
|
|
this.$u.api.sendSmsCode({
|
|
|
|
|
member_mobile: type == 0 ? this.oldNumber: this.newNumber,
|
|
|
|
|
smslog_type: 4 // 类型[1:注册,2:登录,3:找回密码,4:绑定手机]
|
|
|
|
|
}).then(res => {
|
|
|
|
|
uni.hideLoading();
|
|
|
|
|
if(res.errCode == 0) {
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
this.$u.toast(res.message);
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
oldCodeChange(text) {
|
|
|
|
|
this.$set(this.btnText, 0, text);
|
|
|
|
|
},
|
|
|
|
|
newCodeChange(text) {
|
|
|
|
|
this.$set(this.btnText, 1, text);
|
|
|
|
|
},
|
|
|
|
|
getCode(type) {
|
|
|
|
|
const refs = type == 0 ? this.$refs.uOldCode : this.$refs.uNewCode;
|
|
|
|
|
if(refs.canGetCode) {
|
|
|
|
|
// 模拟向后端请求验证码
|
|
|
|
|
uni.showLoading({
|
|
|
|
|
title: '正在获取验证码'
|
|
|
|
|
})
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
uni.hideLoading();
|
|
|
|
|
// 这里此提示会被this.start()方法中的提示覆盖
|
|
|
|
|
this.$u.toast('验证码已发送');
|
|
|
|
|
// 通知验证码组件内部开始倒计时
|
|
|
|
|
refs.start();
|
|
|
|
|
}, 2000);
|
|
|
|
|
} else {
|
|
|
|
|
this.$u.toast('倒计时结束后再发送');
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
changeMemberPhone() {
|
|
|
|
|
this.$u.api.changeMemberPhone({
|
|
|
|
|
old_mobile: this.oldNumber,
|
|
|
|
|
old_code: this.oldCode,
|
|
|
|
|
new_mobile: this.newNumber,
|
|
|
|
|
new_code: this.newCode,
|
|
|
|
|
}).then(res => {
|
|
|
|
|
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
end() {
|
|
|
|
|
this.$u.toast('倒计时结束');
|
|
|
|
|
},
|
|
|
|
|
start() {
|
|
|
|
|
this.$u.toast('倒计时开始');
|
2020-06-19 10:07:11 +00:00
|
|
|
|
}
|
|
|
|
|
},
|
2020-06-08 07:23:23 +00:00
|
|
|
|
};
|
|
|
|
|
</script>
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
|
.update-phone {
|
|
|
|
|
min-height: calc(100vh - var(--window-top));
|
|
|
|
|
background-color: #ECECEC;
|
|
|
|
|
padding-top: 1rpx;
|
|
|
|
|
.update-main {
|
|
|
|
|
@mixin update-General() {
|
|
|
|
|
> view {
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
padding: 35rpx 30rpx;
|
|
|
|
|
background-color: #ffffff;
|
|
|
|
|
.title {
|
|
|
|
|
width: 156rpx;
|
|
|
|
|
font-size: 28rpx;
|
|
|
|
|
color: rgba(51,51,51,1);
|
|
|
|
|
}
|
|
|
|
|
.input {
|
2020-07-03 01:08:53 +00:00
|
|
|
|
width: 340rpx;
|
2020-06-08 07:23:23 +00:00
|
|
|
|
font-size: 26rpx;
|
|
|
|
|
}
|
|
|
|
|
.get-code {
|
2020-07-03 01:08:53 +00:00
|
|
|
|
flex: 1;
|
2020-06-08 07:23:23 +00:00
|
|
|
|
font-size: 28rpx;
|
|
|
|
|
color: rgba(153,153,153,1);
|
|
|
|
|
position: relative;
|
|
|
|
|
padding: 0 25rpx;
|
|
|
|
|
margin-left: 20rpx;
|
2020-07-03 01:08:53 +00:00
|
|
|
|
text-align: center;
|
2020-06-08 07:23:23 +00:00
|
|
|
|
&::after {
|
|
|
|
|
position: absolute;
|
|
|
|
|
content: "";
|
|
|
|
|
width: 2rpx;
|
|
|
|
|
height: 43rpx;
|
|
|
|
|
background: rgba(242,242,242,1);
|
|
|
|
|
left: 0;
|
|
|
|
|
top: 50%;
|
|
|
|
|
transform: translate(0, -50%);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.code {
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
.title {
|
|
|
|
|
font-size: 28rpx;
|
|
|
|
|
color: rgba(51,51,51,1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.old-phone {
|
|
|
|
|
@include update-General()
|
|
|
|
|
}
|
|
|
|
|
.new-phone {
|
|
|
|
|
@include update-General()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.tips {
|
|
|
|
|
padding: 20rpx 30rpx;
|
|
|
|
|
font-size: 24rpx;
|
|
|
|
|
color: rgba(102,102,102,1);
|
|
|
|
|
line-height: 40rpx;
|
|
|
|
|
}
|
2020-06-19 10:07:11 +00:00
|
|
|
|
.btn {
|
|
|
|
|
margin: 120rpx auto 0;
|
|
|
|
|
width: 690rpx;
|
|
|
|
|
height: 98rpx;
|
|
|
|
|
background: rgba(255,120,15,1);
|
|
|
|
|
border-radius: 49rpx;
|
|
|
|
|
font-size: 36rpx;
|
|
|
|
|
color: rgba(255,255,255,1);
|
|
|
|
|
line-height: 98rpx;
|
|
|
|
|
text-align: center;
|
|
|
|
|
}
|
2020-06-08 07:23:23 +00:00
|
|
|
|
}
|
|
|
|
|
</style>
|