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.
|
|
<script setup lang="ts"> import { ref, reactive } from "vue"; import Motion from "../utils/motion"; import { updateRules } from "../utils/rule"; import { message } from "@pureadmin/components"; import type { FormInstance } from "element-plus"; import { useVerifyCode } from "../utils/verifyCode"; import { useUserStoreHook } from "/@/store/modules/user"; import { useRenderIcon } from "/@/components/ReIcon/src/hooks";
const loading = ref(false); const ruleForm = reactive({ phone: "", verifyCode: "", password: "", repeatPassword: "" }); const ruleFormRef = ref<FormInstance>(); const { isDisabled, text } = useVerifyCode(); const repeatPasswordRule = [ { validator: (rule, value, callback) => { if (value === "") { callback(new Error("请输入确认密码")); } else if (ruleForm.password !== value) { callback(new Error("两次密码不一致!")); } else { callback(); } }, trigger: "blur" } ];
const onUpdate = async (formEl: FormInstance | undefined) => { loading.value = true; if (!formEl) return; await formEl.validate((valid, fields) => { if (valid) { // 模拟请求,需根据实际开发进行修改
setTimeout(() => { message.success("修改密码成功"); loading.value = false; }, 2000); } else { loading.value = false; return fields; } }); };
function onBack() { useVerifyCode().end(); useUserStoreHook().SET_CURRENTPAGE(0); } </script>
<template> <el-form ref="ruleFormRef" :model="ruleForm" :rules="updateRules" size="large" > <Motion> <el-form-item prop="phone"> <el-input clearable v-model="ruleForm.phone" placeholder="手机号码" :prefix-icon="useRenderIcon('iphone')" /> </el-form-item> </Motion>
<Motion :delay="100"> <el-form-item prop="verifyCode"> <div class="w-full flex justify-between"> <el-input clearable v-model="ruleForm.verifyCode" placeholder="短信验证码" /> <el-button :disabled="isDisabled" class="ml-2" @click="useVerifyCode().start(ruleFormRef, 'phone')" > {{ text }} </el-button> </div> </el-form-item> </Motion>
<Motion :delay="150"> <el-form-item prop="password"> <el-input clearable show-password v-model="ruleForm.password" placeholder="密码" :prefix-icon="useRenderIcon('lock')" /> </el-form-item> </Motion>
<Motion :delay="200"> <el-form-item :rules="repeatPasswordRule" prop="repeatPassword"> <el-input clearable show-password v-model="ruleForm.repeatPassword" placeholder="确认密码" :prefix-icon="useRenderIcon('lock')" /> </el-form-item> </Motion>
<Motion :delay="250"> <el-form-item> <el-button class="w-full" size="default" type="primary" :loading="loading" @click="onUpdate(ruleFormRef)" > 确定 </el-button> </el-form-item> </Motion>
<Motion :delay="300"> <el-form-item> <el-button class="w-full" size="default" @click="onBack"> 返回 </el-button> </el-form-item> </Motion> </el-form> </template>
|