166 lines
3.5 KiB
Vue
166 lines
3.5 KiB
Vue
|
|
<template>
|
|||
|
|
<view>
|
|||
|
|
<text class="sms" @tap="openPopup">{{ smsTxt }}</text>
|
|||
|
|
<verify @success="onSuccess" mode="pop" captchaType="blockPuzzle" :imgSize="{ width: '330px', height: '155px' }"
|
|||
|
|
ref="verify"></verify>
|
|||
|
|
</view>
|
|||
|
|
</template>
|
|||
|
|
|
|||
|
|
<script>
|
|||
|
|
import verify from "./verify/verify.vue"
|
|||
|
|
import uniPopup from "./uni-popup/uni-popup.vue"
|
|||
|
|
import { baseUrl } from "../common/http/index.js"
|
|||
|
|
import url from "@/common/http/url.js"
|
|||
|
|
export default {
|
|||
|
|
props: {
|
|||
|
|
phone: {
|
|||
|
|
type: String,
|
|||
|
|
default: ""
|
|||
|
|
},
|
|||
|
|
username: {
|
|||
|
|
type: String,
|
|||
|
|
default: ""
|
|||
|
|
},
|
|||
|
|
// 短信验证码类型:0=注册,1=找回密码,2=短信验证码登入,3=修改手机号, 4=修改支付密码
|
|||
|
|
typeCode: {
|
|||
|
|
type: String,
|
|||
|
|
default: "1"
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
components: { uniPopup, verify },
|
|||
|
|
data () {
|
|||
|
|
return {
|
|||
|
|
imageCodeUrl: baseUrl + url.common.getImgCode,
|
|||
|
|
smsTxt: "发送验证码",
|
|||
|
|
disable: false,
|
|||
|
|
time: 60,
|
|||
|
|
pic: "",
|
|||
|
|
code: ""
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
mounted () {
|
|||
|
|
let time = uni.getStorageSync('smsTime') || 60
|
|||
|
|
time = parseInt(time)
|
|||
|
|
console.log("time...", time)
|
|||
|
|
if (time < 60) {
|
|||
|
|
this.time = time
|
|||
|
|
this.timer()
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
methods: {
|
|||
|
|
openPopup () {
|
|||
|
|
if (!this.phone) {
|
|||
|
|
this.$msg("请输入手机号")
|
|||
|
|
return
|
|||
|
|
}
|
|||
|
|
if (this.disable) return
|
|||
|
|
// this.code = ""
|
|||
|
|
// this.generationImg()
|
|||
|
|
// this.$refs.popup.open()
|
|||
|
|
// this.$refs.verify.show()
|
|||
|
|
this.sendSMS()
|
|||
|
|
},
|
|||
|
|
closePopup () {
|
|||
|
|
this.$refs.popup.close()
|
|||
|
|
},
|
|||
|
|
onSuccess () {
|
|||
|
|
|
|||
|
|
this.sendSMS()
|
|||
|
|
},
|
|||
|
|
generationImg () {
|
|||
|
|
let time = new Date().getTime();
|
|||
|
|
this.pic = this.imageCodeUrl + '?telephone=' + this.phone + "&time=" + time;
|
|||
|
|
},
|
|||
|
|
sendSMS () {
|
|||
|
|
this.$http("POST", url.common.getSmsCode, {
|
|||
|
|
phone: this.phone,
|
|||
|
|
username: this.username,
|
|||
|
|
// captchaVerification: params,
|
|||
|
|
typeCode: this.typeCode
|
|||
|
|
}).then(res => {
|
|||
|
|
this.$msg("发送成功,请注意查收")
|
|||
|
|
this.timer()
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
timer () {
|
|||
|
|
this.disable = true
|
|||
|
|
let _this = this;
|
|||
|
|
let interval = setInterval(() => {
|
|||
|
|
if ((_this.time <= 60 && _this.time > 0) && this.disable) {
|
|||
|
|
_this.time--
|
|||
|
|
_this.smsTxt = _this.time + 's'
|
|||
|
|
uni.setStorageSync("smsTime", _this.time)
|
|||
|
|
} else {
|
|||
|
|
_this.disable = false;
|
|||
|
|
_this.time = 60
|
|||
|
|
_this.smsTxt = "发送验证码"
|
|||
|
|
// uni.setStorageSync("smsTime", _this.time)
|
|||
|
|
uni.removeStorageSync('smsTime')
|
|||
|
|
clearInterval(interval);
|
|||
|
|
}
|
|||
|
|
}, 1000)
|
|||
|
|
this.closePopup()
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
</script>
|
|||
|
|
|
|||
|
|
<style scoped lang="scss">
|
|||
|
|
.sms {
|
|||
|
|
font-size: 26rpx;
|
|||
|
|
color: #333;
|
|||
|
|
// border: 2rpx solid #0065cd;
|
|||
|
|
width: 165rpx;
|
|||
|
|
text-align: center;
|
|||
|
|
// height: 55rpx;
|
|||
|
|
// line-height: 55rpx;
|
|||
|
|
display: inline-block;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.con {
|
|||
|
|
width: 700rpx;
|
|||
|
|
border-radius: 10rpx;
|
|||
|
|
|
|||
|
|
.title {
|
|||
|
|
width: 700rpx;
|
|||
|
|
padding: 30rpx 0;
|
|||
|
|
text-align: center;
|
|||
|
|
display: inline-block;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.image {
|
|||
|
|
padding: 50rpx;
|
|||
|
|
|
|||
|
|
.pic {
|
|||
|
|
width: 600rpx;
|
|||
|
|
height: 180rpx;
|
|||
|
|
margin-bottom: 20rpx;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.input {
|
|||
|
|
width: 600rpx;
|
|||
|
|
height: 100rpx;
|
|||
|
|
text-align: center;
|
|||
|
|
border-radius: 50rpx;
|
|||
|
|
border: 2rpx solid #eee;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.bom {
|
|||
|
|
height: 100rpx;
|
|||
|
|
|
|||
|
|
.btn {
|
|||
|
|
display: inline-block;
|
|||
|
|
width: 350rpx;
|
|||
|
|
font-size: 30rpx;
|
|||
|
|
text-align: center;
|
|||
|
|
line-height: 100rpx;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.green {
|
|||
|
|
color: #32b748;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
</style>
|