mall-front/src/pages/forgot/index.jsx
2023-05-20 21:33:01 +08:00

136 lines
4.9 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { Image, Input, Text, View } from "@tarojs/components"
import back from '@/images/back.png'
import checked from '@/images/checked.png'
import eyeClose from '@/images/eyeClose.png'
import eye from '@/images/eye.png'
import './index.scss'
import { Button } from "@nutui/nutui-react-taro"
import { useState } from "react"
import Taro from "@tarojs/taro"
const activeEye = eye
const Login = () => {
const [account, setAccount] = useState('')
const [pwd, setPwd] = useState()
const [showPwd, setShowPwd] = useState(false)
const [loginMode, setLoginMode] = useState('account')
const [mobile, setMobile] = useState('')
const [smsCode, setSmsCode] = useState('')
const [interval, setIntervalTime] = useState(0)
// 返回页面
const backFn = () => {
Taro.getCurrentPages().length > 0 && Taro.navigateBack()
}
// 去登陆
const loginFn = () => {
Taro.redirectTo({
url: '/pages/login/index'
})
}
//清理数据
const cleanFn = () => {
if (loginMode === 'account') {
setAccount('')
setPwd('')
return
}
setMobile('')
setSmsCode('')
}
// 倒计时
const countDown = () => {
if (!mobile) {
return
}
setIntervalTime(60)
if (interval > 0) {
return
}
let start = 60
const timer = setInterval(() => {
if (start > 0) {
start--
if (start <= 0) {
clearInterval(timer)
}
setIntervalTime(start)
}
}, 1000)
}
return <View className="login-frame bg-slate-50 h-screen text-base">
<View className="login-header flex justify-center items-center text-lg font-bold">
<Image src={back} className="square-35 absolute left-7" onClick={backFn} />
<View>新起点</View>
</View>
<View className="forgot-container relative">
<View className="relative font-bold text-lg block h-6 ">忘记密码</View>
<View>
<View className="form-item mt-58">
<View className="form-label">账号</View>
<View className="form-control relative">
<Input className="form-input" placeholder="请输入手机号" onInput={(v) => {
setAccount(v.detail.value)
}} />
{
account && <Image className="w-6 h-6 absolute right-0 bottom-16" src={checked} />
}
</View>
</View>
<View className="form-item mt-22">
<View className="form-label">验证码</View>
<View className="form-control relative">
<Input className="form-input" maxlength={6} placeholder="请输入验证码" onInput={(v) => {
setSmsCode(v.detail.value)
}} />
<Button className="code-btn" disabled={interval > 0} onClick={countDown}>{interval ? interval + 's' : '获取验证码'}</Button>
</View>
</View>
<View className="form-item mt-22">
<View className="form-label">密码</View>
<View className="form-control relative">
<Input className="form-input" type={showPwd ? 'text' : 'password'} placeholder="设置新密码" onInput={(v) => {
setPwd(v.detail.value)
}} />
<Image className="w-6 h-6 absolute right-0 bottom-16" src={showPwd ? activeEye : eyeClose} onClick={() => {
setShowPwd(v => !v)
}} />
</View>
</View>
<View className="form-item mt-22">
<View className="form-label">密码</View>
<View className="form-control relative">
<Input className="form-input" type={showPwd ? 'text' : 'password'} placeholder="再次确认新密码" onInput={(v) => {
setPwd(v.detail.value)
}} />
<Image className="w-6 h-6 absolute right-0 bottom-16" src={showPwd ? activeEye : eyeClose} onClick={() => {
setShowPwd(v => !v)
}} />
</View>
</View>
<View className="forgot-form-helper">
<View className="forgot-password" onClick={loginFn}>已有账号去登陆</View>
</View>
<View className="login-footer flex flex-col justify-center">
<Button className="login-btn">找回密码</Button>
</View>
</View>
</View>
</View>
}
export default Login