UnisKB/ui/src/views/login/reset-password/index.vue

132 lines
3.2 KiB
Vue
Raw Normal View History

2023-10-12 08:36:16 +00:00
<template>
<login-layout>
2023-12-12 03:34:38 +00:00
<LoginContainer subTitle="欢迎使用 MaxKB 管理平台">
2023-12-12 03:32:45 +00:00
<h4 class="mb-24">修改密码</h4>
2023-10-12 08:36:16 +00:00
<el-form
class="reset-password-form"
ref="resetPasswordFormRef"
:model="resetPasswordForm"
:rules="rules"
>
<el-form-item prop="password">
<el-input
type="password"
size="large"
class="input-item"
v-model="resetPasswordForm.password"
placeholder="请输入密码"
show-password
>
</el-input>
</el-form-item>
<el-form-item prop="re_password">
<el-input
type="password"
size="large"
class="input-item"
v-model="resetPasswordForm.re_password"
placeholder="请输入确认密码"
show-password
>
</el-input>
</el-form-item>
</el-form>
2023-12-12 03:32:45 +00:00
<el-button type="primary" class="login-submit-button w-full mt-4" @click="resetPassword"
2023-10-12 08:36:16 +00:00
>确认修改</el-button
>
2023-12-12 03:32:45 +00:00
<div class="operate-container mt-12">
2023-10-12 08:36:16 +00:00
<el-button
class="register"
@click="router.push('/login')"
link
type="primary"
2023-12-12 03:32:45 +00:00
icon="ArrowLeft"
2023-10-12 08:36:16 +00:00
>
返回登录
</el-button>
</div>
</LoginContainer>
</login-layout>
</template>
<script setup lang="ts">
import { ref, onMounted } from 'vue'
2023-10-20 03:26:14 +00:00
import type { ResetPasswordRequest } from '@/api/type/user'
2023-10-12 08:36:16 +00:00
import { useRouter, useRoute } from 'vue-router'
2023-10-13 08:11:54 +00:00
import { MsgSuccess } from '@/utils/message'
2023-10-12 08:36:16 +00:00
import type { FormInstance, FormRules } from 'element-plus'
2023-10-20 03:26:14 +00:00
import UserApi from '@/api/user'
2023-10-12 08:36:16 +00:00
const router = useRouter()
const route = useRoute()
2023-11-10 09:18:00 +00:00
const {
params: { code, email }
} = route
2023-10-12 08:36:16 +00:00
const resetPasswordForm = ref<ResetPasswordRequest>({
password: '',
re_password: '',
email: '',
code: ''
})
onMounted(() => {
if (code && email) {
resetPasswordForm.value.code = code as string
resetPasswordForm.value.email = email as string
} else {
router.push('forgot_password')
}
})
const rules = ref<FormRules<ResetPasswordRequest>>({
password: [
{
required: true,
message: '请输入密码',
trigger: 'blur'
},
{
min: 6,
2023-12-12 03:32:45 +00:00
max: 20,
message: '长度在 6 到 20 个字符',
2023-10-12 08:36:16 +00:00
trigger: 'blur'
}
],
re_password: [
{
required: true,
message: '请输入确认密码',
trigger: 'blur'
},
{
min: 6,
2023-12-12 03:32:45 +00:00
max: 20,
message: '长度在 6 到 20 个字符',
2023-10-12 08:36:16 +00:00
trigger: 'blur'
},
{
validator: (rule, value, callback) => {
if (resetPasswordForm.value.password != resetPasswordForm.value.re_password) {
callback(new Error('密码不一致'))
} else {
callback()
}
},
trigger: 'blur'
}
]
})
const resetPasswordFormRef = ref<FormInstance>()
const loading = ref<boolean>(false)
const resetPassword = () => {
resetPasswordFormRef.value
?.validate()
.then(() => UserApi.resetPassword(resetPasswordForm.value, loading))
.then(() => {
2023-10-13 08:11:54 +00:00
MsgSuccess('修改密码成功')
2023-10-12 08:36:16 +00:00
router.push({ name: 'login' })
})
}
</script>
<style lang="scss" scope>
@import '../index.scss';
2023-11-07 11:04:59 +00:00
</style>