<template> <view class="container"> <view class="logo-img"><image src="../../static/img/logo.png" mode=""></image></view> <view class="logo">艺绘</view> <view class="login_text"> <view class="login_input flex_item"> <view class="login_img"><image class="phone" src="/static/img/pass03.png"></image></view> <view class="login_name"><input class="uni-input" type="text" v-model="phone" focus placeholder="请输入手机" /></view> </view> <view class="login_input flex_item"> <view class="login_img"><image src="/static/img/pass02.png"></image></view> <view class="login_name"><input class="uni-input" type="password" v-model="password" focus placeholder=" 请输入新的不少于6位的密码" /></view> </view> <view class="login_input flex_item"> <view class="login_img"><image src="/static/img/pass02.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/pass01.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() {}, watch: { // 监听倒计时 countDown(i) { if (i == 0) { clearInterval(this.time); } } }, methods: { updatalogin() { let obj = this; if (obj.phone == '') { obj.$api.msg('请输入手机号'); return; } if (!/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/.test(obj.phone) && (!/(^1[3|4|5|6|7|8|9][0-9]{9}$)/.test(this.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 (!/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/.test(obj.phone) && (!/(^1[3|4|5|6|7|8|9][0-9]{9}$)/.test(this.phone))) { obj.$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: #111111; .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(150, 150, 157, 0.47); border-radius: 50%; image { width: 161rpx; height: 161rpx; border-radius: 50%; } } .logo { font-size: 36rpx; font-weight: 400; color: #9F570E; 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: 100%; color: #9F570E; font-size: 32rpx !important; } .login_name { color: #333333; flex-grow: 1; .code { flex-shrink: 0; width: 190rpx; height: 50rpx; line-height: 50rpx; text-align: center; border-radius: 10rpx; color: #9F570E; background: $bgBaseBg; } } } } .login { background: $bgBaseBg; margin-top: 96rpx; color: #9F570E; text-align: center; padding: 26rpx 0rpx; border-radius: 20rpx; } </style>