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.
190 lines
3.5 KiB
190 lines
3.5 KiB
<template>
|
|
<view class="main">
|
|
<view :style="{height:iSMT+'px'}"></view>
|
|
|
|
<view style="height:1.5vh;" />
|
|
|
|
<view class="top">
|
|
<view class="top-list">
|
|
<view class="left">
|
|
<image class="image" src="/static/my/bindedEmail.png" />
|
|
<text class="label">已绑邮箱:{{ email }}</text>
|
|
</view>
|
|
</view>
|
|
|
|
<view class="top-list">
|
|
<view class="left">
|
|
<image class="image" src="/static/my/changeEmail.png" />
|
|
<input v-model="userEmail" placeholder="请输入您的换绑邮箱" class="input" />
|
|
</view>
|
|
<view class="right">
|
|
<button class="verification" :class="{ 'disabled': gettingCode }" @click="getCode"
|
|
:disabled="gettingCode">
|
|
{{ gettingCode ? `重新发送 ${time}s` : '获取验证码' }}
|
|
</button>
|
|
</view>
|
|
</view>
|
|
|
|
<view class="top-list">
|
|
<view class="left">
|
|
<image class="image" src="/static/my/verification.png" />
|
|
<input type="text" placeholder="请输入验证码" class="input" />
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
<view class="bottom">
|
|
<button class="change-btn" @click="changeAccount">换绑</button>
|
|
</view>
|
|
</view>
|
|
</template>
|
|
|
|
<script setup>
|
|
import {
|
|
ref,
|
|
onMounted
|
|
} from 'vue'
|
|
import {
|
|
getUserInfo
|
|
} from "@/api/member"
|
|
import {
|
|
sendEmail,
|
|
changeBind
|
|
} from "@/api/setting/password"
|
|
const iSMT = ref(0)
|
|
const email = ref('')
|
|
const gettingCode = ref(false)
|
|
const time = ref(60)
|
|
const userEmail = ref('')
|
|
|
|
const userInfoPromise = getUserInfo()
|
|
userInfoPromise.then(res => {
|
|
if (res.code === 200) {
|
|
console.log('个人信息', res.data)
|
|
email.value = res.data.email
|
|
} else {
|
|
uni.showToast({
|
|
title: '用户信息请求失败',
|
|
icon: 'none',
|
|
})
|
|
}
|
|
})
|
|
|
|
const changeAccount = () => {
|
|
const res = changeBind({
|
|
verificateType: 0,
|
|
account: userEmail.value
|
|
})
|
|
if(res.code === 200){
|
|
uni.showToast({
|
|
title: '绑定成功',
|
|
icon: 'none',
|
|
})
|
|
}else {
|
|
uni.showToast({
|
|
title: '用户绑定失败',
|
|
icon: 'none',
|
|
})
|
|
}
|
|
}
|
|
|
|
const getCode = () => {
|
|
if (gettingCode.value) return
|
|
gettingCode.value = true
|
|
|
|
time.value = 2
|
|
|
|
const timer = setInterval(() => {
|
|
time.value--
|
|
if (time.value <= 0) {
|
|
clearInterval(timer)
|
|
gettingCode.value = false
|
|
time.value = 2
|
|
}
|
|
}, 1000)
|
|
sendEmail({
|
|
email: userEmail.value
|
|
})
|
|
}
|
|
|
|
onMounted(() => {
|
|
// 状态栏高度
|
|
iSMT.value = uni.getSystemInfoSync().statusBarHeight;
|
|
console.log('看看高度', iSMT.value)
|
|
})
|
|
</script>
|
|
|
|
<style>
|
|
.top {
|
|
height: auto;
|
|
background-color: white;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
.top-list {
|
|
width: 630rpx;
|
|
height: 7vh;
|
|
margin: 0rpx 40rpx;
|
|
display: flex;
|
|
align-items: center;
|
|
border-bottom: 1rpx solid #eee;
|
|
}
|
|
|
|
.left {
|
|
flex: 1;
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
|
|
.label {
|
|
font-size: 28rpx;
|
|
margin-left: 10rpx;
|
|
}
|
|
|
|
.right {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
.input {
|
|
flex: 1;
|
|
height: 70rpx;
|
|
font-size: 29rpx;
|
|
margin-left: 20rpx;
|
|
}
|
|
|
|
.verification {
|
|
font-size: 24rpx;
|
|
border-radius: 10rpx;
|
|
background-color: rgb(230, 230, 230);
|
|
}
|
|
|
|
.bottom {
|
|
height: 22vh;
|
|
background-color: white;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
.change-btn {
|
|
height: 85rpx;
|
|
width: 610rpx;
|
|
padding: 0 20rpx;
|
|
background-color: black;
|
|
color: white;
|
|
border-radius: 40rpx;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
.image{
|
|
width:40rpx;
|
|
height:40rpx;
|
|
}
|
|
</style>
|