feat: user

This commit is contained in:
wangdan-fit2cloud 2025-06-13 11:40:07 +08:00
parent 54578eff33
commit d9dc3db242
16 changed files with 142 additions and 176 deletions

View File

@ -8,20 +8,20 @@ import { numberFormat } from '@/utils/utils'
const props = defineProps({ const props = defineProps({
id: { id: {
type: String, type: String,
default: 'lineChartId' default: 'lineChartId',
}, },
width: { width: {
type: String, type: String,
default: '100%' default: '100%',
}, },
height: { height: {
type: String, type: String,
default: '200px' default: '200px',
}, },
option: { option: {
type: Object, type: Object,
required: true required: true,
} // option: { title , data } }, // option: { title , data }
}) })
const color = ['rgba(82, 133, 255, 1)', 'rgba(255, 207, 47, 1)'] const color = ['rgba(82, 133, 255, 1)', 'rgba(255, 207, 47, 1)']
@ -38,14 +38,14 @@ function initChart() {
props.option?.yData.forEach((item: any, index: number) => { props.option?.yData.forEach((item: any, index: number) => {
series.push({ series.push({
itemStyle: { itemStyle: {
color: color[index] color: color[index],
}, },
areaStyle: item.area areaStyle: item.area
? { ? {
color: areaColor[index] color: areaColor[index],
} }
: null, : null,
...item ...item,
}) })
}) })
} }
@ -53,12 +53,12 @@ function initChart() {
title: { title: {
text: props.option?.title, text: props.option?.title,
textStyle: { textStyle: {
fontSize: '16px' fontSize: '16px',
} },
}, },
tooltip: { tooltip: {
trigger: 'axis', trigger: 'axis',
valueFormatter: (value: any) => numberFormat(value) valueFormatter: (value: any) => numberFormat(value),
// axisPointer: { // axisPointer: {
// type: 'cross', // type: 'cross',
// label: { // label: {
@ -70,35 +70,35 @@ function initChart() {
right: 0, right: 0,
itemWidth: 8, itemWidth: 8,
textStyle: { textStyle: {
color: '#646A73' color: '#646A73',
}, },
icon: 'circle' icon: 'circle',
}, },
grid: { grid: {
left: '1%', left: '1%',
right: '1%', right: '1%',
bottom: '0', bottom: '0',
top: '18%', top: '18%',
containLabel: true containLabel: true,
}, },
xAxis: { xAxis: {
type: 'category', type: 'category',
data: props.option.xData data: props.option.xData,
}, },
yAxis: { yAxis: {
type: 'value', type: 'value',
splitLine: { splitLine: {
lineStyle: { lineStyle: {
color: '#EFF0F1' color: '#EFF0F1',
} },
}, },
axisLabel: { axisLabel: {
formatter: (value: any) => { formatter: (value: any) => {
return numberFormat(value) return numberFormat(value)
} },
} },
}, },
series: series series: series,
} }
// //
@ -117,7 +117,7 @@ watch(
initChart() initChart()
}) })
} }
} },
) )
onMounted(() => { onMounted(() => {
@ -128,7 +128,8 @@ onMounted(() => {
}) })
onBeforeUnmount(() => { onBeforeUnmount(() => {
echarts.getInstanceByDom(document.getElementById(props.id)!)?.dispose() console.log(document.getElementById(props.id))
echarts?.getInstanceByDom(document.getElementById(props.id)!)?.dispose()
window.removeEventListener('resize', changeChartSize) window.removeEventListener('resize', changeChartSize)
}) })
</script> </script>

View File

@ -19,6 +19,17 @@ export default {
requiredMessage: 'Please enter verification code', requiredMessage: 'Please enter verification code',
validatorMessage: 'Verification code is incorrect', validatorMessage: 'Verification code is incorrect',
}, },
new_password: {
label: 'New Password',
placeholder: 'Please enter new password',
requiredMessage: 'Please enter new password',
},
re_password: {
label: 'Confirm Password',
placeholder: 'Please enter confirm password',
requiredMessage: 'Please enter confirm password',
validatorMessage: 'Password does not match',
},
}, },
jump_tip: 'You will be redirected to the authentication source page for authentication', jump_tip: 'You will be redirected to the authentication source page for authentication',
jump: 'Redirect', jump: 'Redirect',

View File

@ -17,37 +17,23 @@ export default {
'Deleting this user will also delete all resources (APP, knowledge, models) created by this user. Please proceed with caution.', 'Deleting this user will also delete all resources (APP, knowledge, models) created by this user. Please proceed with caution.',
}, },
disabled: { disabled: {
confirmTitle: 'Confirm disable function:', confirmTitle: 'Confirm disable tool:',
confirmMessage: confirmMessage:
'Disabling this function will cause errors when APP that reference it are queried. Please proceed with caution.', 'Disabling this tool will cause errors when APP that reference it are queried. Please proceed with caution.',
}, },
userForm: { userForm: {
form: { nick_name: {
nick_name: { label: 'Name',
label: 'Name', placeholder: 'Please enter name',
placeholder: 'Please enter name', },
}, email: {
email: { label: 'Email',
label: 'Email', placeholder: 'Please enter email',
placeholder: 'Please enter email', requiredMessage: 'Please enter email',
requiredMessage: 'Please enter email', },
}, phone: {
phone: { label: 'Phone',
label: 'Phone', placeholder: 'Please enter phone',
placeholder: 'Please enter phone',
},
new_password: {
label: 'New Password',
placeholder: 'Please enter new password',
requiredMessage: 'Please enter new password',
},
re_password: {
label: 'Confirm Password',
placeholder: 'Please enter confirm password',
requiredMessage: 'Please enter confirm password',
validatorMessage: 'Passwords do not match',
},
}, },
}, },
source: { source: {

View File

@ -19,6 +19,17 @@ export default {
requiredMessage: '请输入验证码', requiredMessage: '请输入验证码',
validatorMessage: '验证码不正确', validatorMessage: '验证码不正确',
}, },
new_password: {
label: '新密码',
placeholder: '请输入新密码',
requiredMessage: '请输入新密码',
},
re_password: {
label: '确认密码',
placeholder: '请输入确认密码',
requiredMessage: '请输入确认密码',
validatorMessage: '密码不一致',
},
}, },
jump_tip: '即将跳转至认证源页面进行认证', jump_tip: '即将跳转至认证源页面进行认证',
jump: '跳转', jump: '跳转',

View File

@ -15,21 +15,10 @@ export default {
confirmMessage: '删除用户,该用户创建的资源(应用、知识库、模型)都会删除,请谨慎操作。', confirmMessage: '删除用户,该用户创建的资源(应用、知识库、模型)都会删除,请谨慎操作。',
}, },
disabled: { disabled: {
confirmTitle: '是否禁用函数', confirmTitle: '是否禁用工具',
confirmMessage: '禁用后,引用了该函数的应用提问时会报错 ,请谨慎操作。', confirmMessage: '禁用后,引用了该工具的应用提问时会报错 ,请谨慎操作。',
}, },
userForm: {
form: {
username: {
label: '用户名',
placeholder: '请输入用户名',
requiredMessage: '请输入用户名',
lengthMessage: '长度在 6 到 20 个字符',
},
captcha: {
label: '验证码',
placeholder: '请输入验证码',
},
nick_name: { nick_name: {
label: '姓名', label: '姓名',
placeholder: '请输入姓名', placeholder: '请输入姓名',
@ -44,25 +33,7 @@ export default {
label: '手机号', label: '手机号',
placeholder: '请输入手机号', placeholder: '请输入手机号',
}, },
password: {
label: '登录密码',
placeholder: '请输入密码',
requiredMessage: '请输入密码',
lengthMessage: '长度在 6 到 20 个字符',
},
new_password: {
label: '新密码',
placeholder: '请输入新密码',
requiredMessage: '请输入新密码',
},
re_password: {
label: '确认密码',
placeholder: '请输入确认密码',
requiredMessage: '请输入确认密码',
validatorMessage: '密码不一致',
},
}, },
source: { source: {
label: '用户来源', label: '用户来源',
local: '系统用户', local: '系统用户',

View File

@ -5,13 +5,13 @@ export default {
label: '使用者名稱', label: '使用者名稱',
placeholder: '請輸入使用者名稱', placeholder: '請輸入使用者名稱',
requiredMessage: '請輸入使用者名稱', requiredMessage: '請輸入使用者名稱',
lengthMessage: '長度須介於 6 到 20 個字元之間' lengthMessage: '長度須介於 6 到 20 個字元之間',
}, },
password: { password: {
label: '登入密碼', label: '登入密碼',
placeholder: '請輸入密碼', placeholder: '請輸入密碼',
requiredMessage: '請輸入密碼', requiredMessage: '請輸入密碼',
lengthMessage: '長度須介於 6 到 20 個字元之間' lengthMessage: '長度須介於 6 到 20 個字元之間',
}, },
captcha: { captcha: {
label: '驗證碼', label: '驗證碼',
@ -19,6 +19,17 @@ export default {
requiredMessage: '請輸入驗證碼', requiredMessage: '請輸入驗證碼',
validatorMessage: '驗證碼不正確', validatorMessage: '驗證碼不正確',
}, },
new_password: {
label: '新密碼',
placeholder: '請輸入新密碼',
requiredMessage: '請輸入新密碼',
},
re_password: {
label: '確認密碼',
placeholder: '請輸入確認密碼',
requiredMessage: '請輸入確認密碼',
validatorMessage: '密碼不一致',
},
}, },
jump_tip: '即將跳轉至認證源頁面進行認證', jump_tip: '即將跳轉至認證源頁面進行認證',
jump: '跳轉', jump: '跳轉',
@ -29,7 +40,7 @@ export default {
login: '登錄', login: '登錄',
register: '註冊', register: '註冊',
backLogin: '返回登錄', backLogin: '返回登錄',
checkCode: '立即驗證' checkCode: '立即驗證',
}, },
newPassword: '新密碼', newPassword: '新密碼',
enterPassword: '請輸入新密碼', enterPassword: '請輸入新密碼',
@ -39,6 +50,6 @@ export default {
placeholder: '請輸入驗證碼', placeholder: '請輸入驗證碼',
getVerificationCode: '獲取驗證碼', getVerificationCode: '獲取驗證碼',
successMessage: '驗證碼發送成功', successMessage: '驗證碼發送成功',
resend: '重新發送' resend: '重新發送',
} },
} }

View File

@ -16,47 +16,22 @@ export default {
'刪除該使用者後,該使用者建立的所有資源(應用、知識庫、模型)都會被刪除,請謹慎操作。', '刪除該使用者後,該使用者建立的所有資源(應用、知識庫、模型)都會被刪除,請謹慎操作。',
}, },
disabled: { disabled: {
confirmTitle: '是否停用函數', confirmTitle: '是否停用工具',
confirmMessage: '停用後,引用該函數的應用在查詢時會報錯,請謹慎操作。', confirmMessage: '停用後,引用該工具的應用在查詢時會報錯,請謹慎操作。',
}, },
userForm: { userForm: {
form: { nick_name: {
username: { label: '姓名',
label: '使用者名稱', placeholder: '請輸入姓名',
placeholder: '請輸入使用者名稱', },
requiredMessage: '請輸入使用者名稱', email: {
lengthMessage: '長度須介於 6 到 20 個字元之間', label: '電子信箱',
}, placeholder: '請輸入電子信箱',
nick_name: { requiredMessage: '請輸入電子信箱',
label: '姓名', },
placeholder: '請輸入姓名', phone: {
}, label: '手機號碼',
email: { placeholder: '請輸入手機號碼',
label: '電子信箱',
placeholder: '請輸入電子信箱',
requiredMessage: '請輸入電子信箱',
},
phone: {
label: '手機號碼',
placeholder: '請輸入手機號碼',
},
password: {
label: '登入密碼',
placeholder: '請輸入密碼',
requiredMessage: '請輸入密碼',
lengthMessage: '長度須介於 6 到 20 個字元之間',
},
new_password: {
label: '新密碼',
placeholder: '請輸入新密碼',
requiredMessage: '請輸入新密碼',
},
re_password: {
label: '確認密碼',
placeholder: '請輸入確認密碼',
requiredMessage: '請輸入確認密碼',
validatorMessage: '密碼不一致',
},
}, },
}, },
source: { source: {

View File

@ -525,7 +525,7 @@
<ImportDocumentDialog ref="ImportDocumentDialogRef" :title="title" @refresh="refresh" /> <ImportDocumentDialog ref="ImportDocumentDialogRef" :title="title" @refresh="refresh" />
<SyncWebDialog ref="SyncWebDialogRef" @refresh="refresh" /> <SyncWebDialog ref="SyncWebDialogRef" @refresh="refresh" />
<!-- 选择知识库 --> <!-- 选择知识库 -->
<selectKnowledgeDialog ref="selectKnowledgeDialogRef" @refresh="refreshMigrate" /> <SelectKnowledgeDialog ref="selectKnowledgeDialogRef" @refresh="refreshMigrate" />
<GenerateRelatedDialog ref="GenerateRelatedDialogRef" @refresh="getList" /> <GenerateRelatedDialog ref="GenerateRelatedDialogRef" @refresh="getList" />
</div> </div>
</template> </template>
@ -536,7 +536,7 @@ import { ElTable } from 'element-plus'
import documentApi from '@/api/knowledge/document' import documentApi from '@/api/knowledge/document'
import ImportDocumentDialog from './component/ImportDocumentDialog.vue' import ImportDocumentDialog from './component/ImportDocumentDialog.vue'
import SyncWebDialog from '@/views/knowledge/component/SyncWebDialog.vue' import SyncWebDialog from '@/views/knowledge/component/SyncWebDialog.vue'
import selectKnowledgeDialog from './component/selectKnowledgeDialog.vue' import SelectKnowledgeDialog from './component/SelectKnowledgeDialog.vue'
import { numberFormat } from '@/utils/common' import { numberFormat } from '@/utils/common'
import { datetimeFormat } from '@/utils/time' import { datetimeFormat } from '@/utils/time'
import { hitHandlingMethod } from '@/enums/document' import { hitHandlingMethod } from '@/enums/document'

View File

@ -16,38 +16,38 @@
> >
<el-form-item <el-form-item
:prop="isEdit ? '' : 'username'" :prop="isEdit ? '' : 'username'"
:label="$t('views.userManage.form.username.label')" :label="$t('views.login.loginForm.username.label')"
> >
<el-input <el-input
v-model="userForm.username" v-model="userForm.username"
:placeholder="$t('views.userManage.form.username.placeholder')" :placeholder="$t('views.login.loginForm.username.placeholder')"
maxlength="20" maxlength="20"
show-word-limit show-word-limit
:disabled="isEdit" :disabled="isEdit"
> >
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item :label="$t('views.userManage.form.nick_name.label')"> <el-form-item :label="$t('views.userManage.userForm.nick_name.label')">
<el-input <el-input
v-model="userForm.nick_name" v-model="userForm.nick_name"
:placeholder="$t('views.userManage.form.nick_name.placeholder')" :placeholder="$t('views.userManage.userForm.nick_name.placeholder')"
maxlength="64" maxlength="64"
show-word-limit show-word-limit
> >
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item :label="$t('views.userManage.form.email.label')" prop="email"> <el-form-item :label="$t('views.userManage.userForm.email.label')" prop="email">
<el-input <el-input
type="email" type="email"
v-model="userForm.email" v-model="userForm.email"
:placeholder="$t('views.userManage.form.email.placeholder')" :placeholder="$t('views.userManage.userForm.email.placeholder')"
> >
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item :label="$t('views.userManage.form.phone.label')"> <el-form-item :label="$t('views.userManage.userForm.phone.label')">
<el-input <el-input
v-model="userForm.phone" v-model="userForm.phone"
:placeholder="$t('views.userManage.form.phone.placeholder')" :placeholder="$t('views.userManage.userForm.phone.placeholder')"
> >
</el-input> </el-input>
</el-form-item> </el-form-item>

View File

@ -10,20 +10,20 @@
:close-on-click-modal="false" :close-on-click-modal="false"
:close-on-press-escape="false" :close-on-press-escape="false"
> >
<el-form-item :label="$t('views.userManage.form.new_password.label')" prop="password"> <el-form-item :label="$t('views.login.loginForm.new_password.label')" prop="password">
<el-input <el-input
type="password" type="password"
v-model="userForm.password" v-model="userForm.password"
:placeholder="$t('views.userManage.form.new_password.placeholder')" :placeholder="$t('views.login.loginForm.new_password.placeholder')"
show-password show-password
> >
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item :label="$t('views.userManage.form.re_password.label')" prop="re_password"> <el-form-item :label="$t('views.login.loginForm.re_password.label')" prop="re_password">
<el-input <el-input
type="password" type="password"
v-model="userForm.re_password" v-model="userForm.re_password"
:placeholder="$t('views.userManage.form.re_password.placeholder')" :placeholder="$t('views.login.loginForm.re_password.placeholder')"
show-password show-password
> >
</el-input> </el-input>
@ -61,32 +61,32 @@ const rules = reactive<FormRules<ResetPasswordRequest>>({
password: [ password: [
{ {
required: true, required: true,
message: t('views.userManage.form.new_password.requiredMessage'), message: t('views.login.loginForm.new_password.requiredMessage'),
trigger: 'blur' trigger: 'blur'
}, },
{ {
min: 6, min: 6,
max: 20, max: 20,
message: t('views.userManage.form.password.lengthMessage'), message: t('views.login.loginForm.password.lengthMessage'),
trigger: 'blur' trigger: 'blur'
} }
], ],
re_password: [ re_password: [
{ {
required: true, required: true,
message: t('views.userManage.form.re_password.requiredMessage'), message: t('views.login.loginForm.re_password.requiredMessage'),
trigger: 'blur' trigger: 'blur'
}, },
{ {
min: 6, min: 6,
max: 20, max: 20,
message: t('views.userManage.form.password.lengthMessage'), message: t('views.login.loginForm.password.lengthMessage'),
trigger: 'blur' trigger: 'blur'
}, },
{ {
validator: (rule, value, callback) => { validator: (rule, value, callback) => {
if (userFormRef.value.password != userFormRef.value.re_password) { if (userFormRef.value.password != userFormRef.value.re_password) {
callback(new Error(t('views.userManage.form.re_password.validatorMessage'))) callback(new Error(t('views.login.loginForm.re_password.validatorMessage')))
} else { } else {
callback() callback()
} }

View File

@ -33,8 +33,8 @@
@changePage="getList" @changePage="getList"
v-loading="loading" v-loading="loading"
> >
<el-table-column prop="nick_name" :label="$t('views.userManage.form.nick_name.label')" /> <el-table-column prop="nick_name" :label="$t('views.userManage.userForm.nick_name.label')" />
<el-table-column prop="username" :label="$t('views.userManage.form.username.label')" /> <el-table-column prop="username" :label="$t('views.userManage.userForm.username.label')" />
<el-table-column prop="is_active" :label="$t('common.status.label')"> <el-table-column prop="is_active" :label="$t('common.status.label')">
<template #default="{ row }"> <template #default="{ row }">
<div v-if="row.is_active" class="flex align-center"> <div v-if="row.is_active" class="flex align-center">
@ -56,14 +56,14 @@
<el-table-column <el-table-column
prop="email" prop="email"
:label="$t('views.userManage.form.email.label')" :label="$t('views.userManage.userForm.email.label')"
show-overflow-tooltip show-overflow-tooltip
> >
<template #default="{ row }"> <template #default="{ row }">
{{ row.email || '-' }} {{ row.email || '-' }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="phone" :label="$t('views.userManage.form.phone.label')"> <el-table-column prop="phone" :label="$t('views.userManage.userForm.phone.label')">
<template #default="{ row }"> <template #default="{ row }">
{{ row.phone || '-' }} {{ row.phone || '-' }}
</template> </template>

View File

@ -20,7 +20,7 @@
<el-input <el-input
size="large" size="large"
class="input-item" class="input-item"
:placeholder="$t('views.userManage.form.username.placeholder')" :placeholder="$t('views.login.loginForm.username.placeholder')"
> >
</el-input> </el-input>
</el-form-item> </el-form-item>
@ -31,7 +31,7 @@
type="password" type="password"
size="large" size="large"
class="input-item" class="input-item"
:placeholder="$t('views.userManage.form.password.placeholder')" :placeholder="$t('views.login.loginForm.password.placeholder')"
show-password show-password
> >
</el-input> </el-input>

View File

@ -16,38 +16,38 @@
> >
<el-form-item <el-form-item
:prop="isEdit ? '' : 'username'" :prop="isEdit ? '' : 'username'"
:label="$t('views.userManage.form.username.label')" :label="$t('views.login.loginForm.username.label')"
> >
<el-input <el-input
v-model="userForm.username" v-model="userForm.username"
:placeholder="$t('views.userManage.form.username.placeholder')" :placeholder="$t('views.login.loginForm.username.placeholder')"
maxlength="20" maxlength="20"
show-word-limit show-word-limit
:disabled="isEdit" :disabled="isEdit"
> >
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item :label="$t('views.userManage.form.nick_name.label')"> <el-form-item :label="$t('views.userManage.userForm.nick_name.label')">
<el-input <el-input
v-model="userForm.nick_name" v-model="userForm.nick_name"
:placeholder="$t('views.userManage.form.nick_name.placeholder')" :placeholder="$t('views.userManage.userForm.nick_name.placeholder')"
maxlength="64" maxlength="64"
show-word-limit show-word-limit
> >
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item :label="$t('views.userManage.form.email.label')" prop="email"> <el-form-item :label="$t('views.userManage.userForm.email.label')" prop="email">
<el-input <el-input
type="email" type="email"
v-model="userForm.email" v-model="userForm.email"
:placeholder="$t('views.userManage.form.email.placeholder')" :placeholder="$t('views.userManage.userForm.email.placeholder')"
> >
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item :label="$t('views.userManage.form.phone.label')"> <el-form-item :label="$t('views.userManage.userForm.phone.label')">
<el-input <el-input
v-model="userForm.phone" v-model="userForm.phone"
:placeholder="$t('views.userManage.form.phone.placeholder')" :placeholder="$t('views.userManage.userForm.phone.placeholder')"
> >
</el-input> </el-input>
</el-form-item> </el-form-item>
@ -88,13 +88,13 @@ const rules = reactive({
username: [ username: [
{ {
required: true, required: true,
message: t('views.userManage.form.username.requiredMessage'), message: t('views.login.loginForm.username.requiredMessage'),
trigger: 'blur', trigger: 'blur',
}, },
{ {
min: 6, min: 6,
max: 20, max: 20,
message: t('views.userManage.form.username.lengthMessage'), message: t('views.login.loginForm.username.lengthMessage'),
trigger: 'blur', trigger: 'blur',
}, },
], ],
@ -108,13 +108,13 @@ const rules = reactive({
password: [ password: [
{ {
required: true, required: true,
message: t('views.userManage.form.password.requiredMessage'), message: t('views.login.loginForm.password.requiredMessage'),
trigger: 'blur', trigger: 'blur',
}, },
{ {
min: 6, min: 6,
max: 20, max: 20,
message: t('views.userManage.form.password.lengthMessage'), message: t('views.login.loginForm.password.lengthMessage'),
trigger: 'blur', trigger: 'blur',
}, },
], ],

View File

@ -10,20 +10,20 @@
:close-on-click-modal="false" :close-on-click-modal="false"
:close-on-press-escape="false" :close-on-press-escape="false"
> >
<el-form-item :label="$t('views.userManage.form.new_password.label')" prop="password"> <el-form-item :label="$t('views.login.loginForm.new_password.label')" prop="password">
<el-input <el-input
type="password" type="password"
v-model="userForm.password" v-model="userForm.password"
:placeholder="$t('views.userManage.form.new_password.placeholder')" :placeholder="$t('views.login.loginForm.new_password.placeholder')"
show-password show-password
> >
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item :label="$t('views.userManage.form.re_password.label')" prop="re_password"> <el-form-item :label="$t('views.login.loginForm.re_password.label')" prop="re_password">
<el-input <el-input
type="password" type="password"
v-model="userForm.re_password" v-model="userForm.re_password"
:placeholder="$t('views.userManage.form.re_password.placeholder')" :placeholder="$t('views.login.loginForm.re_password.placeholder')"
show-password show-password
> >
</el-input> </el-input>
@ -61,32 +61,32 @@ const rules = reactive<FormRules<ResetPasswordRequest>>({
password: [ password: [
{ {
required: true, required: true,
message: t('views.userManage.form.new_password.requiredMessage'), message: t('views.login.loginForm.new_password.requiredMessage'),
trigger: 'blur' trigger: 'blur'
}, },
{ {
min: 6, min: 6,
max: 20, max: 20,
message: t('views.userManage.form.password.lengthMessage'), message: t('views.login.loginForm.password.lengthMessage'),
trigger: 'blur' trigger: 'blur'
} }
], ],
re_password: [ re_password: [
{ {
required: true, required: true,
message: t('views.userManage.form.re_password.requiredMessage'), message: t('views.login.loginForm.re_password.requiredMessage'),
trigger: 'blur' trigger: 'blur'
}, },
{ {
min: 6, min: 6,
max: 20, max: 20,
message: t('views.userManage.form.password.lengthMessage'), message: t('views.login.loginForm.password.lengthMessage'),
trigger: 'blur' trigger: 'blur'
}, },
{ {
validator: (rule, value, callback) => { validator: (rule, value, callback) => {
if (userFormRef.value.password != userFormRef.value.re_password) { if (userFormRef.value.password != userFormRef.value.re_password) {
callback(new Error(t('views.userManage.form.re_password.validatorMessage'))) callback(new Error(t('views.login.loginForm.re_password.validatorMessage')))
} else { } else {
callback() callback()
} }

View File

@ -33,8 +33,8 @@
@changePage="getList" @changePage="getList"
v-loading="loading" v-loading="loading"
> >
<el-table-column prop="nick_name" :label="$t('views.userManage.form.nick_name.label')" /> <el-table-column prop="nick_name" :label="$t('views.userManage.userForm.nick_name.label')" />
<el-table-column prop="username" :label="$t('views.userManage.form.username.label')" /> <el-table-column prop="username" :label="$t('views.login.loginForm.username.label')" />
<el-table-column prop="is_active" :label="$t('common.status.label')"> <el-table-column prop="is_active" :label="$t('common.status.label')">
<template #default="{ row }"> <template #default="{ row }">
<div v-if="row.is_active" class="flex align-center"> <div v-if="row.is_active" class="flex align-center">
@ -56,14 +56,14 @@
<el-table-column <el-table-column
prop="email" prop="email"
:label="$t('views.userManage.form.email.label')" :label="$t('views.userManage.userForm.email.label')"
show-overflow-tooltip show-overflow-tooltip
> >
<template #default="{ row }"> <template #default="{ row }">
{{ row.email || '-' }} {{ row.email || '-' }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="phone" :label="$t('views.userManage.form.phone.label')"> <el-table-column prop="phone" :label="$t('views.userManage.userForm.phone.label')">
<template #default="{ row }"> <template #default="{ row }">
{{ row.phone || '-' }} {{ row.phone || '-' }}
</template> </template>