Skip to content

Commit d6a301c

Browse files
fix: fit
1 parent 863e081 commit d6a301c

File tree

12 files changed

+130
-107
lines changed

12 files changed

+130
-107
lines changed

ui/src/locales/lang/en-US/views/login.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,12 @@ export default {
3030
requiredMessage: 'Please enter confirm password',
3131
validatorMessage: 'Password does not match',
3232
},
33+
email: {
34+
label: 'Email',
35+
placeholder: 'Please enter email',
36+
requiredMessage: 'Please enter email',
37+
validatorEmail: 'Please enter a valid email format!',
38+
},
3339
},
3440
jump_tip: 'You will be redirected to the authentication source page for authentication',
3541
jump: 'Redirect',

ui/src/locales/lang/en-US/views/user-manage.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,6 @@ export default {
2626
label: 'Name',
2727
placeholder: 'Please enter name',
2828
},
29-
email: {
30-
label: 'Email',
31-
placeholder: 'Please enter email',
32-
requiredMessage: 'Please enter email',
33-
},
3429
phone: {
3530
label: 'Phone',
3631
placeholder: 'Please enter phone',

ui/src/locales/lang/zh-CN/views/login.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,12 @@ export default {
3030
requiredMessage: '请输入确认密码',
3131
validatorMessage: '密码不一致',
3232
},
33+
email: {
34+
label: '邮箱',
35+
placeholder: '请输入邮箱',
36+
requiredMessage: '请输入邮箱',
37+
validatorEmail: '请输入有效邮箱格式!',
38+
},
3339
},
3440
jump_tip: '即将跳转至认证源页面进行认证',
3541
jump: '跳转',

ui/src/locales/lang/zh-CN/views/user-manage.ts

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,7 @@ export default {
2323
label: '姓名',
2424
placeholder: '请输入姓名',
2525
},
26-
email: {
27-
label: '邮箱',
28-
placeholder: '请输入邮箱',
29-
requiredMessage: '请输入邮箱',
30-
validatorEmail: '请输入有效邮箱格式!',
31-
},
26+
3227
phone: {
3328
label: '手机号',
3429
placeholder: '请输入手机号',

ui/src/locales/lang/zh-Hant/views/login.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,12 @@ export default {
3030
requiredMessage: '請輸入確認密碼',
3131
validatorMessage: '密碼不一致',
3232
},
33+
email: {
34+
label: '電子信箱',
35+
placeholder: '請輸入電子信箱',
36+
requiredMessage: '請輸入電子信箱',
37+
validatorEmail: '請輸入有效電子信箱格式!',
38+
},
3339
},
3440
jump_tip: '即將跳轉至認證源頁面進行認證',
3541
jump: '跳轉',

ui/src/locales/lang/zh-Hant/views/user-manage.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,7 @@ export default {
2424
label: '姓名',
2525
placeholder: '請輸入姓名',
2626
},
27-
email: {
28-
label: '電子信箱',
29-
placeholder: '請輸入電子信箱',
30-
requiredMessage: '請輸入電子信箱',
31-
},
27+
3228
phone: {
3329
label: '手機號碼',
3430
placeholder: '請輸入手機號碼',

ui/src/views/document/component/SelectKnowledgeDialog.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
<el-card shadow="never" :class="item.id === selectKnowledge ? 'active' : ''">
2525
<el-radio :value="item.id" size="large">
2626
<div class="flex align-center">
27-
<KnowledgeIcon :type="item.type" />
27+
<KnowledgeIcon :type="item.type" class="mr-12" />
2828

2929
<span class="ellipsis" :title="item.name">
3030
{{ item.name }}
Lines changed: 97 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,61 @@
11
<template>
2-
<login-layout>
3-
<LoginContainer :subTitle="$t('theme.defaultSlogan')">
4-
<h2 class="mb-24">{{ $t('views.login.resetPassword') }}</h2>
2+
<login-layout v-if="!loading" v-loading="loading || sendLoading">
3+
<LoginContainer
4+
:subTitle="
5+
user.themeInfo?.slogan ? user.themeInfo?.slogan : $t('views.system.theme.defaultSlogan')
6+
"
7+
>
8+
<h2 class="mb-24">{{ $t('views.login.forgotPassword') }}</h2>
59
<el-form
6-
class="reset-password-form"
10+
class="register-form"
711
ref="resetPasswordFormRef"
8-
:model="resetPasswordForm"
12+
:model="CheckEmailForm"
913
:rules="rules"
1014
>
1115
<div class="mb-24">
12-
<el-form-item prop="password">
16+
<el-form-item prop="email">
1317
<el-input
14-
type="password"
1518
size="large"
1619
class="input-item"
17-
v-model="resetPasswordForm.password"
18-
:placeholder="$t('views.login.loginForm.password.placeholder')"
19-
show-password
20+
v-model="CheckEmailForm.email"
21+
:placeholder="$t('views.login.loginForm.email.placeholder')"
2022
>
2123
</el-input>
2224
</el-form-item>
2325
</div>
2426
<div class="mb-24">
25-
<el-form-item prop="re_password">
26-
<el-input
27-
type="password"
28-
size="large"
29-
class="input-item"
30-
v-model="resetPasswordForm.re_password"
31-
:placeholder="$t('views.login.loginForm.re_password.placeholder')"
32-
show-password
33-
>
34-
</el-input>
27+
<el-form-item prop="code">
28+
<div class="flex-between w-full">
29+
<el-input
30+
size="large"
31+
class="code-input"
32+
v-model="CheckEmailForm.code"
33+
:placeholder="$t('views.login.verificationCode.placeholder')"
34+
>
35+
</el-input>
36+
37+
<el-button
38+
:disabled="isDisabled"
39+
size="large"
40+
class="send-email-button ml-12"
41+
@click="sendEmail"
42+
:loading="loading"
43+
>
44+
{{
45+
isDisabled
46+
? `${$t('views.login.verificationCode.resend')}(${time}s)`
47+
: $t('views.login.verificationCode.getVerificationCode')
48+
}}
49+
</el-button>
50+
</div>
3551
</el-form-item>
3652
</div>
3753
</el-form>
38-
<el-button size="large" type="primary" class="w-full" @click="resetPassword">{{
39-
$t('common.confirm')
40-
}}</el-button>
54+
<el-button size="large" type="primary" class="w-full" @click="checkCode"
55+
>{{ $t('views.login.buttons.checkCode') }}
56+
</el-button>
4157
<div class="operate-container mt-12">
4258
<el-button
43-
size="large"
4459
class="register"
4560
@click="router.push('/login')"
4661
link
@@ -54,84 +69,88 @@
5469
</login-layout>
5570
</template>
5671
<script setup lang="ts">
57-
import { ref, onMounted } from 'vue'
72+
import { onBeforeMount, ref } from 'vue'
5873
import LoginContainer from '@/layout/login-layout/LoginContainer.vue'
5974
import LoginLayout from '@/layout/login-layout/LoginLayout.vue'
60-
import type { ResetPasswordRequest } from '@/api/type/user'
61-
import { useRouter, useRoute } from 'vue-router'
62-
import { MsgSuccess } from '@/utils/message'
75+
import type { CheckCodeRequest } from '@/api/type/user'
76+
import { useRouter } from 'vue-router'
6377
import type { FormInstance, FormRules } from 'element-plus'
64-
import UserApi from '@/api/user/user'
78+
import UserApi from '@/api/user/user-manage'
79+
import { MsgSuccess } from '@/utils/message'
6580
import { t } from '@/locales'
81+
import useStore from '@/stores'
82+
6683
const router = useRouter()
67-
const route = useRoute()
68-
const {
69-
params: { code, email }
70-
} = route
71-
const resetPasswordForm = ref<ResetPasswordRequest>({
72-
password: '',
73-
re_password: '',
74-
email: '',
75-
code: ''
76-
})
84+
const { user } = useStore()
7785
78-
onMounted(() => {
79-
if (code && email) {
80-
resetPasswordForm.value.code = code as string
81-
resetPasswordForm.value.email = email as string
82-
} else {
83-
router.push('forgot_password')
84-
}
86+
const CheckEmailForm = ref<CheckCodeRequest>({
87+
email: '',
88+
code: '',
89+
type: 'reset_password'
8590
})
8691
87-
const rules = ref<FormRules<ResetPasswordRequest>>({
88-
password: [
89-
{
90-
required: true,
91-
message: t('views.login.loginForm.re_password.requiredMessage'),
92-
trigger: 'blur'
93-
},
94-
{
95-
min: 6,
96-
max: 20,
97-
message: t('views.login.loginForm.password.lengthMessage'),
98-
trigger: 'blur'
99-
}
100-
],
101-
re_password: [
92+
const resetPasswordFormRef = ref<FormInstance>()
93+
const rules = ref<FormRules<CheckCodeRequest>>({
94+
email: [
10295
{
10396
required: true,
104-
message: t('views.login.loginForm.re_password.requiredMessage'),
105-
trigger: 'blur'
106-
},
107-
{
108-
min: 6,
109-
max: 20,
110-
message: t('views.login.loginForm.password.lengthMessage'),
97+
message: t('views.login.loginForm.email.requiredMessage'),
11198
trigger: 'blur'
11299
},
113100
{
114101
validator: (rule, value, callback) => {
115-
if (resetPasswordForm.value.password != resetPasswordForm.value.re_password) {
116-
callback(new Error(t('views.login.loginForm.re_password.validatorMessage')))
102+
const emailRegExp = /^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.[a-zA-Z0-9]{2,6}$/
103+
if (!emailRegExp.test(value) && value != '') {
104+
callback(new Error(t('views.login.loginForm.email.validatorEmail')))
117105
} else {
118106
callback()
119107
}
120108
},
121109
trigger: 'blur'
122110
}
123-
]
111+
],
112+
code: [{ required: true, message: t('views.login.verificationCode.placeholder') }]
124113
})
125-
const resetPasswordFormRef = ref<FormInstance>()
126114
const loading = ref<boolean>(false)
127-
const resetPassword = () => {
115+
const isDisabled = ref<boolean>(false)
116+
const time = ref<number>(60)
117+
const sendLoading = ref<boolean>(false)
118+
const checkCode = () => {
128119
resetPasswordFormRef.value
129120
?.validate()
130-
.then(() => UserApi.resetPassword(resetPasswordForm.value, loading))
131-
.then(() => {
132-
MsgSuccess(t('common.modifySuccess'))
133-
router.push({ name: 'login' })
134-
})
121+
.then(() => UserApi.checkCode(CheckEmailForm.value, sendLoading))
122+
.then(() => router.push({ name: 'reset_password', params: CheckEmailForm.value }))
123+
}
124+
/**
125+
* 发送验证码
126+
*/
127+
const sendEmail = () => {
128+
resetPasswordFormRef.value?.validateField('email', (v: boolean) => {
129+
if (v) {
130+
UserApi.sendEmit(CheckEmailForm.value.email, 'reset_password', sendLoading).then(() => {
131+
MsgSuccess(t('views.login.verificationCode.successMessage'))
132+
isDisabled.value = true
133+
handleTimeChange()
134+
})
135+
}
136+
})
135137
}
138+
const handleTimeChange = () => {
139+
if (time.value <= 0) {
140+
isDisabled.value = false
141+
time.value = 60
142+
} else {
143+
setTimeout(() => {
144+
time.value--
145+
handleTimeChange()
146+
}, 1000)
147+
}
148+
}
149+
onBeforeMount(() => {
150+
loading.value = true
151+
user.asyncGetProfile().then(() => {
152+
loading.value = false
153+
})
154+
})
136155
</script>
137156
<style lang="scss" scoped></style>

ui/src/views/system-chat-user/user-manage/component/UserDrawer.vue

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,11 @@
3636
>
3737
</el-input>
3838
</el-form-item>
39-
<el-form-item :label="$t('views.userManage.userForm.email.label')" prop="email">
39+
<el-form-item :label="$t('views.login.loginForm.email.label')" prop="email">
4040
<el-input
4141
type="email"
4242
v-model="userForm.email"
43-
:placeholder="$t('views.userManage.userForm.email.placeholder')"
43+
:placeholder="$t('views.login.loginForm.email.placeholder')"
4444
>
4545
</el-input>
4646
</el-form-item>
@@ -99,33 +99,33 @@ const rules = reactive({
9999
username: [
100100
{
101101
required: true,
102-
message: t('views.userManage.form.username.requiredMessage'),
102+
message: t('views.login.loginForm.username.requiredMessage'),
103103
trigger: 'blur',
104104
},
105105
{
106106
min: 6,
107107
max: 20,
108-
message: t('views.userManage.form.username.lengthMessage'),
108+
message: t('views.login.loginForm.username.lengthMessage'),
109109
trigger: 'blur',
110110
},
111111
],
112112
email: [
113113
{
114114
required: true,
115-
message: t('views.userManage.form.email.requiredMessage'),
115+
message: t('views.login.loginForm.email.requiredMessage'),
116116
trigger: 'blur',
117117
},
118118
],
119119
password: [
120120
{
121121
required: true,
122-
message: t('views.userManage.form.password.requiredMessage'),
122+
message: t('views.login.loginForm.password.requiredMessage'),
123123
trigger: 'blur',
124124
},
125125
{
126126
min: 6,
127127
max: 20,
128-
message: t('views.userManage.form.password.lengthMessage'),
128+
message: t('views.login.loginForm.password.lengthMessage'),
129129
trigger: 'blur',
130130
},
131131
],

ui/src/views/system-chat-user/user-manage/index.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@
5959

6060
<el-table-column
6161
prop="email"
62-
:label="$t('views.userManage.userForm.email.label')"
62+
:label="$t('views.login.loginForm.email.label')"
6363
show-overflow-tooltip
6464
>
6565
<template #default="{ row }">

0 commit comments

Comments
 (0)