Pre Merge pull request !639 from 郭晓阳/N/A
commit
c95ee06a1a
|
|
@ -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>
|
||||
Loading…
Reference in New Issue