4 changed files with 186 additions and 8 deletions
@ -0,0 +1,160 @@ |
|||
<template> |
|||
<view> |
|||
<view class="pure_top"></view> |
|||
<view class="content"> |
|||
<view class="list"> |
|||
<input class="input" placeholder="输入手机号" v-model="phone" maxlength="11" /> |
|||
<view class="clear" v-if="phone.length" @click="phone = ''"> |
|||
<text class="lf-iconfont icon-shanchu"></text> |
|||
</view> |
|||
</view> |
|||
<view class="list"> |
|||
<input class="input input-code" placeholder="输入验证码" v-model="code" /> |
|||
<view class="code" :class="{'active-bg': is_code}" @click="getCode"> |
|||
<text>{{ is_code ? num +'秒后重新获取' : '获取验证码' }}</text> |
|||
</view> |
|||
</view> |
|||
<button class="confirm" hover-class="lf-opacity" @click="confirm">确认</button> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
export default { |
|||
data(){ |
|||
return { |
|||
phone: '', |
|||
code: '', |
|||
is_code: false, |
|||
timer: null, |
|||
num: 10, |
|||
click_button: false |
|||
} |
|||
}, |
|||
onLoad(){ |
|||
|
|||
}, |
|||
onUnload(){ |
|||
if(this.timer){ |
|||
clearInterval(this.timer); |
|||
this.timer = null; |
|||
} |
|||
}, |
|||
methods: { |
|||
getCode(){ |
|||
if(this.is_code) return; |
|||
this.is_code = true; |
|||
if(this.timer){ |
|||
clearInterval(this.timer); |
|||
this.timer = null; |
|||
} |
|||
console.log("测试重复点击", Math.random()) |
|||
// TODO 在此发送网络请求 |
|||
this.timer = setInterval(() => { |
|||
this.num--; |
|||
if(this.num <= 0){ |
|||
clearInterval(this.timer); |
|||
this.timer = null; |
|||
this.num = 10; |
|||
this.is_code = false; |
|||
} |
|||
}, 1000); |
|||
}, |
|||
confirm(){ |
|||
if(this.click_button) return; |
|||
this.click_button = true; |
|||
this.$msg('确定').then(() => this.click_button = false); |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style> |
|||
page{ |
|||
background-color: #F5F5F5; |
|||
overflow: hidden; |
|||
} |
|||
</style> |
|||
<style lang="scss" scoped="scoped"> |
|||
.pure_top { |
|||
width: 100%; |
|||
height: 210rpx; |
|||
position: relative; |
|||
z-index: 1; |
|||
} |
|||
.pure_top::after { |
|||
content: ''; |
|||
width: 140%; |
|||
height: 210rpx; |
|||
position: absolute; |
|||
left: -20%; |
|||
top: 0; |
|||
z-index: -1; |
|||
border-radius: 0 0 55% 55%; |
|||
background: linear-gradient(180deg, #FE3EA5 0%, #FE7749 100%); |
|||
} |
|||
|
|||
.content{ |
|||
width: 686rpx; |
|||
height: max-content; |
|||
background-color: #FFFFFF; |
|||
position: fixed; |
|||
top: 100rpx; |
|||
left: calc(50% - 343rpx); |
|||
z-index: 3; |
|||
border-radius: 20rpx; |
|||
box-sizing: border-box; |
|||
padding: 60rpx; |
|||
.list{ |
|||
height: 106rpx; |
|||
width: 100%; |
|||
border-bottom: 1rpx solid #e5e5e5; |
|||
display: flex; |
|||
justify-content: space-between; |
|||
align-items: center; |
|||
&:nth-child(2n){ |
|||
margin-top: 30rpx; |
|||
} |
|||
.input{ |
|||
width: 490rpx; |
|||
height: 80rpx; |
|||
font-size: 32rpx; |
|||
} |
|||
.input-code{ |
|||
width: 360rpx; |
|||
} |
|||
.clear{ |
|||
padding: 20rpx; |
|||
} |
|||
.code{ |
|||
min-width: 154rpx; |
|||
max-width: 220rpx; |
|||
height: 43rpx; |
|||
padding: 0 4rpx; |
|||
background: linear-gradient(180deg, #FE3EA5 0%, #FE7251 100%); |
|||
border-radius: 5rpx; |
|||
font-size: 24rpx; |
|||
color: #FFFFFF; |
|||
display: flex; |
|||
justify-content: center; |
|||
align-items: center; |
|||
} |
|||
.active-bg{ |
|||
background: #adb5bd; |
|||
} |
|||
} |
|||
.confirm{ |
|||
width: 100%; |
|||
height: 100rpx; |
|||
background-color: #E21196; |
|||
border-radius: 60rpx; |
|||
color: #FFFFFF; |
|||
font-size: 36rpx; |
|||
display: flex; |
|||
justify-content: center; |
|||
align-items: center; |
|||
margin-top: 100rpx; |
|||
margin-bottom: 20rpx; |
|||
} |
|||
} |
|||
</style> |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue