fix: reset password

This commit is contained in:
wangdan-fit2cloud 2025-02-06 16:11:19 +08:00
parent cad2e3c8c5
commit 9d842f40cb
8 changed files with 154 additions and 19 deletions

View File

@ -1,7 +1,7 @@
export default {
noHistory: 'No History',
createChat: 'Create New Chat',
history: 'History',
createChat: 'New Chat',
history: 'Chat History',
only20history: 'Only showing the last 20 chats',
question_count: 'Questions',
exportRecords: 'Export Chat Records',
@ -17,11 +17,11 @@ export default {
operation: {
play: 'Click to Play',
pause: 'Stop',
regeneration: 'Regenerate Answer',
like: 'Like',
cancelLike: 'Cancel Like',
oppose: 'Dislike',
cancelOppose: 'Cancel Dislike',
regeneration: 'Re-answer',
like: 'Agree',
cancelLike: 'Cancel Agree',
oppose: 'Disagree',
cancelOppose: 'Cancel Disagree',
continue: 'Continue',
stopChat: 'Stop Output'
},
@ -86,9 +86,9 @@ export default {
},
KnowledgeSource: {
title: 'Knowledge Source',
referenceParagraph: 'Referenced Segment',
consume: 'Consumption',
consumeTime: 'Time Consumed'
referenceParagraph: 'Quote',
consume: 'Tokens',
consumeTime: 'Time'
},
paragraphSource: {
title: 'Knowledge Reference',

View File

@ -44,7 +44,7 @@ export default {
},
LimitDialog: {
dialogTitle: 'Access Restrictions',
showSourceLabel: 'Show Source',
showSourceLabel: 'Show Return Knowledge Reference',
clientQueryLimitLabel: 'Each Client Query Limit',
authentication: 'Authentication',
authenticationValue: 'Authentication Password',
@ -61,7 +61,7 @@ export default {
SettingDisplayDialog: {
dialogTitle: 'Display Settings',
languageLabel: 'Language',
showSourceLabel: 'Show Source',
showSourceLabel: 'Show Return Knowledge Reference',
showExecutionDetail: 'Show Execution Detail',
restoreDefault: 'Reset to default',
customThemeColor: 'Custom Theme Color',

View File

@ -14,10 +14,10 @@ export default {
restoreVersion: 'Restore Version',
restoreCurrentVersion: 'Restore This Version',
addComponent: 'Add Component',
public: 'Release',
releaseHistory: 'Release History',
public: 'Publish',
releaseHistory: 'Publish History',
autoSave: 'Auto Save',
latestRelease: 'Latest Release',
latestRelease: 'Latest Publish',
copyParam: 'Copy Parameter'
},
tip: {

View File

@ -109,7 +109,7 @@ export default {
}
},
buttons: {
publish: 'Save&Release',
publish: 'Save&Publish',
addModel: 'Add Model'
},
dialog: {

View File

@ -86,7 +86,7 @@ export default {
KnowledgeSource: {
title: '知识来源',
referenceParagraph: '引用分段',
consume: '消耗',
consume: '消耗tokens',
consumeTime: '耗时'
},
paragraphSource: {

View File

@ -85,7 +85,7 @@ export default {
KnowledgeSource: {
title: '知識來源',
referenceParagraph: '引用段落',
consume: '消耗',
consume: '消耗tokens',
consumeTime: '耗時'
},
paragraphSource: {

View File

@ -148,7 +148,7 @@
{{ $t('views.applicationOverview.monitor.monitoringStatistics') }}
</h4>
<div class="mb-16">
<el-select v-model="history_day" class="mr-12 w-120" @change="changeDayHandle">
<el-select v-model="history_day" class="mr-12" @change="changeDayHandle" style="width:180px">
<el-option
v-for="item in dayOptions"
:key="item.value"

View File

@ -0,0 +1,135 @@
<template>
<login-layout>
<LoginContainer :subTitle="$t('views.system.theme.defaultSlogan')">
<h2 class="mb-24">{{ $t('views.login.resetPassword') }}</h2>
<el-form
class="reset-password-form"
ref="resetPasswordFormRef"
:model="resetPasswordForm"
:rules="rules"
>
<div class="mb-24">
<el-form-item prop="password">
<el-input
type="password"
size="large"
class="input-item"
v-model="resetPasswordForm.password"
:placeholder="$t('views.user.userForm.form.password.placeholder')"
show-password
>
</el-input>
</el-form-item>
</div>
<div class="mb-24">
<el-form-item prop="re_password">
<el-input
type="password"
size="large"
class="input-item"
v-model="resetPasswordForm.re_password"
:placeholder="$t('views.user.userForm.form.re_password.placeholder')"
show-password
>
</el-input>
</el-form-item>
</div>
</el-form>
<el-button size="large" type="primary" class="w-full" @click="resetPassword">{{
$t('common.confirm')
}}</el-button>
<div class="operate-container mt-12">
<el-button
size="large"
class="register"
@click="router.push('/login')"
link
type="primary"
icon="ArrowLeft"
>
{{ $t('views.login.buttons.backLogin') }}
</el-button>
</div>
</LoginContainer>
</login-layout>
</template>
<script setup lang="ts">
import { ref, onMounted } from 'vue'
import type { ResetPasswordRequest } from '@/api/type/user'
import { useRouter, useRoute } from 'vue-router'
import { MsgSuccess } from '@/utils/message'
import type { FormInstance, FormRules } from 'element-plus'
import UserApi from '@/api/user'
import { t } from '@/locales'
const router = useRouter()
const route = useRoute()
const {
params: { code, email }
} = route
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: t('views.user.userForm.form.re_password.requiredMessage'),
trigger: 'blur'
},
{
min: 6,
max: 20,
message: t('views.user.userForm.form.password.lengthMessage'),
trigger: 'blur'
}
],
re_password: [
{
required: true,
message: t('views.user.userForm.form.re_password.requiredMessage'),,
trigger: 'blur'
},
{
min: 6,
max: 20,
message: t('views.user.userForm.form.password.lengthMessage'),
trigger: 'blur'
},
{
validator: (rule, value, callback) => {
if (resetPasswordForm.value.password != resetPasswordForm.value.re_password) {
callback(new Error(t('views.user.userForm.form.re_password.validatorMessage')))
} 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(() => {
MsgSuccess(t('common.modifySuccess'))
router.push({ name: 'login' })
})
}
</script>
<style lang="scss" scope></style>