Pre Merge pull request !639 from 郭晓阳/N/A

pull/639/MERGE
郭晓阳 2025-01-04 03:41:46 +00:00 committed by Gitee
commit c95ee06a1a
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
1 changed files with 111 additions and 0 deletions

View File

@ -0,0 +1,111 @@
<template>
<el-form ref="formRef" :model="password" :rules="rules" label-width="auto" v-show="getShow" size="large">
<el-form-item :label="t('profile.password.newPassword')" prop="password">
<InputPassword v-model="password.password" strength />
</el-form-item>
<el-form-item :label="t('profile.password.confirmPassword')" prop="confirmPassword">
<InputPassword v-model="password.confirmPassword" strength />
</el-form-item>
<el-form-item label="手机号" prop="mobile">
<el-input v-model="password.mobile" placeholder="输入手机号码" style="max-width: 280px;"/>
</el-form-item>
<el-form-item label="验证码" prop="code">
<el-input v-model="password.code" placeholder="输入验证码" style="max-width: 280px;">
<template #append>
<el-button @click="getCode(formRef)"></el-button>
</template>
</el-input>
</el-form-item>
<el-form-item>
<XButton :title="t('common.save')" type="primary" @click="submit(formRef)" />
<XButton :title="t('common.reset')" type="danger" @click="reset(formRef)" />
</el-form-item>
</el-form>
</template>
<script lang="ts" setup>
import type { FormInstance, FormRules } from 'element-plus'
import { useUserStore } from '@/store/modules/user'
import { InputPassword } from '@/components/InputPassword'
import { updateResetPassword,userGetCode } from '@/api/system/user/profile'
import { LoginStateEnum,useLoginState } from './useLogin';
defineOptions({ name: 'ForgetPwd' })
const { t } = useI18n()
const { getLoginState } = useLoginState()
const userStore = useUserStore()
const message = useMessage()
const formRef = ref<FormInstance>()
const password = reactive({
mobile:undefined,
code: undefined,
id: undefined,
password: undefined,
confirmPassword:undefined
})
const codeParams=reactive({
mobile:undefined,
scene:4,
})
const getShow = computed(() => unref(getLoginState) === LoginStateEnum.FORGET)
//
const equalToPassword = (_rule, value, callback) => {
if (password.password !== value) {
callback(new Error(t('profile.password.diffPwd')))
} else {
callback()
}
}
const pattern = {
password: /^\d{4,12}$/
}
const rules = reactive<FormRules>({
password: [
{ message: '数字', trigger: 'change', pattern: pattern.password },
{ required: true, message: '请输入密码', trigger: 'blur' }
],
mobile: [
{ message: '数字', trigger: 'change', pattern: pattern.password },
{ required: true, message: '请输入手机号', trigger: 'blur' }
],
code: [
{ message: '数字', trigger: 'change', pattern: pattern.password },
{ required: true, message: '请输入验证码', trigger: 'blur' }
],
confirmPassword: [
{ required: true, message: t('profile.password.cfPwdMsg'), trigger: 'blur' },
{ required: true, validator: equalToPassword, trigger: 'blur' }
]
})
const submit = (formEl: FormInstance | undefined) => {
if (!formEl) return
formEl.validate(async (valid) => {
if (valid) {
password.id=userStore.getUser.id as any
await updateResetPassword(password)
message.success(t('common.submitsuccessful'))
await userStore.setUserInfoAction()
window.location.reload()
}
})
}
//
const getCode=async(formEl)=>{
try {
await formEl.validateField('mobile')
if(!password.mobile) return message.warning('请填写手机号')
codeParams.mobile=password.mobile
await userGetCode(codeParams)
message.success('发送'+t('common.success'))
} catch (error) {
return error
}
}
const reset = (formEl: FormInstance | undefined) => {
if (!formEl) return
formEl.resetFields()
}
</script>