mirror of
https://github.com/1Panel-dev/MaxKB.git
synced 2025-12-26 01:33:05 +00:00
fix: reset password
This commit is contained in:
parent
cad2e3c8c5
commit
9d842f40cb
|
|
@ -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',
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
|
|
|
|||
|
|
@ -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: {
|
||||
|
|
|
|||
|
|
@ -109,7 +109,7 @@ export default {
|
|||
}
|
||||
},
|
||||
buttons: {
|
||||
publish: 'Save&Release',
|
||||
publish: 'Save&Publish',
|
||||
addModel: 'Add Model'
|
||||
},
|
||||
dialog: {
|
||||
|
|
|
|||
|
|
@ -86,7 +86,7 @@ export default {
|
|||
KnowledgeSource: {
|
||||
title: '知识来源',
|
||||
referenceParagraph: '引用分段',
|
||||
consume: '消耗',
|
||||
consume: '消耗tokens',
|
||||
consumeTime: '耗时'
|
||||
},
|
||||
paragraphSource: {
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@ export default {
|
|||
KnowledgeSource: {
|
||||
title: '知識來源',
|
||||
referenceParagraph: '引用段落',
|
||||
consume: '消耗',
|
||||
consume: '消耗tokens',
|
||||
consumeTime: '耗時'
|
||||
},
|
||||
paragraphSource: {
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
Loading…
Reference in New Issue