<template> <view class="container"> <view class="logo-img"><image src="../../static/img/log.png" mode=""></image></view> <view class="logo">LALA</view> <view class="login_text"> <view class="login_input flex_item"> <view class="login_img"><image class="phone" src="/static/img/phone.png"></image></view> <view class="login_name"><input class="uni-input" type="text" disabled="true" v-model="phone" focus placeholder="请输入邮箱" /></view> </view> <view class="login_input flex_item"> <view class="login_img"><image src="/static/img/password.png"></image></view> <view class="login_name"><input class="uni-input" type="password" v-model="password" focus placeholder=" 请输入新的密码" /></view> </view> <view class="login_input flex_item"> <view class="login_img"><image src="/static/img/password.png"></image></view> <view class="login_name"><input class="uni-input" type="password" v-model="password2" focus placeholder="请重复输入新密码" /></view> </view> <view class="login_input flex"> <view class="login_img"><image class="codeimg" src="/static/img/yan.png"></image></view> <view class="login_name flex"> <input class="uni-input width" v-model="code" type="number" focus placeholder="请输入验证码" /> <view class="code" @click="verification">{{ countDown == 0 ? '发送验证码' : countDown }}</view> </view> </view> </view> <view class="login" @click="updatalogin">确认修改</view> </view> </template> <script> import { registerReset } from '@/api/set.js'; import { verify } from '@/api/login.js'; export default { data() { return { phone: '', //用户 code: '', //验证码 password2: '', password: '', time: '', //保存倒计时对象 countDown: 0 //倒计时 }; }, onLoad() { let userInfo = uni.getStorageSync('userInfo') || ''; this.phone = userInfo.account }, watch: { // 监听倒计时 countDown(i) { if (i == 0) { clearInterval(this.time); } } }, methods: { updatalogin() { let obj = this; // if (obj.phone == '') { // obj.$api.msg('请输入邮箱'); // return; // } // if (!/^([a-zA-Z]|[0-9])(\w|\-|\.)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/.test(obj.phone)) { // obj.$api.msg('请输入正确的邮箱'); // return; // } if (obj.password == '') { obj.$api.msg('请输入密码'); return; } if (obj.password2 == '') { obj.$api.msg('请再次输入密码'); return; } if (obj.password2 != obj.password) { obj.$api.msg('两次密码不正确'); return; } if (obj.code == '') { obj.$api.msg('请输入验证码'); return; } registerReset({ account: obj.phone, //账号 password: obj.password, password2: obj.password2, type: 1, captcha: obj.code }) .then(function(e) { obj.$api.msg(e.msg); uni.navigateTo({ url: '/pages/public/login' }); }) .catch(e => { console.log(e); }); }, //发送验证码 verification() { let obj = this; if (this.phone == '') { this.$api.msg('请输入电话号码'); return; } if (this.phone.length < 11) { this.$api.msg('请输入正确的手机号'); return; } // 判断是否在倒计时 if (obj.countDown > 0) { return false; } else { obj.countDown = 60; obj.time = setInterval(() => { obj.countDown--; }, 1000); //调用验证码接口 verify({ phone: obj.phone, type: 'login' }) .then(({ data }) => { uni.showToast({ title: '验证码已发送', duration: 2000, position: 'top', icon: 'none' }); }) .catch(err => { console.log(err); }); } } } }; </script> <style lang="scss"> page { min-height: 100%; background-color: #ffffff; .container { width: 100%; padding: 60rpx 70rpx; } } .logo-img { width: 161rpx; height: 161rpx; margin:auto; margin-top: 52rpx !important; margin-bottom: 15rpx !important; box-shadow: 0px 12rpx 13rpx 0px rgba(68, 150, 157, 0.47); border-radius: 50%; image { width: 161rpx; height: 161rpx; border-radius: 50%; } } .logo { font-size: 36rpx; font-weight: 400; color: #44969d; text-align: center; } .phone { height: 43rpx !important; width: 27rpx !important; } .codeimg { height: 39rpx !important; width: 31rpx !important; } .login_text { border-radius: 20rpx; margin-top: 80rpx; .login_input { // border-bottom: 1px solid #C5CEE0; margin-bottom: 35rpx; padding-bottom: 60rpx; .login_img { height: 35rpx; width: 31rpx; margin-right: 20rpx; image { width: 100%; height: 100%; } } .uni-input { text-align: left; width: 400rpx; font-size: 32rpx !important; } .login_name { color: #333333; .code { color: #60bab0; font-size: 23rpx; border-left: 1px solid #eeeeee; width: 150rpx; flex-shrink: 0; text-align: center; } } } } .login { background: linear-gradient(90deg, #60bab0, #60bab0, #45969b); margin-top: 96rpx; color: #ffffff; text-align: center; padding: 26rpx 0rpx; border-radius: 20rpx; } </style>