Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/constants/httpMsg/register/EditStatusMsg.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ export interface EditRequest {
gender?: Gender;
password?: string;
email?: string;
qq_account?: string;
}

export type EditResponse = HttpRes<{
Expand Down
1 change: 1 addition & 0 deletions src/constants/httpMsg/register/InfoStatusMsg.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ export interface InfoData {
join_time: string;
groups: string[];
lark_union_id: string;
qq_account: string;
}

export type getInfoResponse = HttpRes<InfoData>;
1 change: 1 addition & 0 deletions src/constants/httpMsg/register/RegisterStatusMsg.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ export interface RegisterRequest {
password: string;
validate_code: string;
email: string;
qq_account: string;
}

export type RegisterResponse = HttpRes<{
Expand Down
22 changes: 22 additions & 0 deletions src/views/login/components/register-form.vue
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,28 @@
</template>
</a-input>
</a-form-item>
<a-form-item
field="qq"
hide-label
:rules="[
{ required: true, message: $t('register.form.qq.errMsg') },
{
match: /^\d{1,15}$/,
message: $t('register.form.qq.formatErr'),
},
]"
>
<a-input
v-model="registerFormInfo.qq"
size="large"
:placeholder="$t('register.form.qq.placeholder')"
allow-clear
>
<template #prefix>
<icon-message />
</template>
</a-input>
</a-form-item>
<a-form-item
field="password"
hide-label
Expand Down
6 changes: 6 additions & 0 deletions src/views/login/locale/en-US.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,12 @@ export default {
'login.form.forgetPassword': 'Forgot password',
'login.form.login': 'login',
'login.form.register': 'register account',
'register.form.qq': 'Please enter QQ number',
'edit.qq': 'QQ Number',
'edit.form.qq.formatErr': 'QQ number format error',
'register.form.qq.placeholder': 'Please enter QQ number',
'register.form.qq.errMsg': 'QQ number cannot be empty',
'register.form.qq.formatErr': 'QQ number format error',
'login.banner.slogan1': 'Out-of-the-box high-quality template',
'login.banner.subSlogan1':
'Rich page templates, covering most typical business scenarios',
Expand Down
6 changes: 6 additions & 0 deletions src/views/login/locale/zh-CN.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,15 @@ export default {
'register.form.phoneNumber': '请设置手机号',
'register.form.password': '请设置密码',
'register.form.email': '请设置邮箱',
'register.form.qq': '请输入QQ号',
'register.form.validateCode': '请输入验证码',
'register.form.gender.placeholder': '请选择性别',
'register.form.qq.placeholder': '请输入QQ号',
'register.form.name.errMsg': '姓名不能为空',
'register.form.validateCode.errMsg': '验证码不能为空',
'register.form.gender.errMsg': '性别不能为空',
'register.form.qq.errMsg': 'QQ号不能为空',
'register.form.qq.formatErr': 'QQ号格式错误',
'register.getValidateCode': '获取验证码',
'register.getValidateCode.success': '验证码发送成功',
'register.success': '注册成功',
Expand All @@ -46,6 +50,8 @@ export default {
'edit.gender': '性别',
'edit.phonenumber': '手机号',
'edit.email': '邮箱',
'edit.qq': 'QQ号',
'edit.form.qq.formatErr': 'QQ号格式错误',
'edit.change': '修改',
'edit.changeinfo': '修改信息',
'edit.success': '编辑成功',
Expand Down
2 changes: 2 additions & 0 deletions src/views/login/store/useRegister.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ const useRegisterStore = defineStore('register', {
password: '',
validateCode: '',
email: '',
qq: '',
},
isSendValidateCode: false,
buttonContent: i18n.global.t('register.getValidateCode'),
Expand All @@ -42,6 +43,7 @@ const useRegisterStore = defineStore('register', {
password: this.registerFormInfo.password,
validate_code: this.registerFormInfo.validateCode,
email: this.registerFormInfo.email,
qq_account: this.registerFormInfo.qq,
};
const res: Promise<RegisterResponse> = register(oPostData);
res.then((response) => {
Expand Down
1 change: 1 addition & 0 deletions src/views/login/type/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ export interface RegisterFormInfo {
password: string;
validateCode: string;
email: string;
qq: string;
}

export interface RegisterStore {
Expand Down
26 changes: 26 additions & 0 deletions src/views/user/editInfo/index.vue
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,28 @@
</template>
</a-input>
</a-form-item>
<a-form-item
field="qq"
hide-label
:rules="[
{ required: false, message: $t('register.form.qq.errMsg') },
{
match: /^\d{1,15}$/,
message: $t('edit.form.qq.formatErr'),
},
]"
>
<a-input
v-model="editFormInfo.qq"
size="large"
:placeholder="$t('register.form.qq')"
allow-clear
>
<template #prefix>
<icon-message />
</template>
</a-input>
</a-form-item>
<a-form-item
field="password"
hide-label
Expand Down Expand Up @@ -236,6 +258,10 @@ const data = computed<DataItem[]>(() => [
label: t('edit.email'),
value: userInfo.value.email,
},
{
label: t('edit.qq'),
value: userInfo.value.qq,
},
]);

const checkScreenSize = throttle(
Expand Down
19 changes: 16 additions & 3 deletions src/views/user/editInfo/store/useEdit.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ const useEditStore = defineStore('edit', () => {
gender: null,
password: '',
email: '',
qq: '',
});

const userInfo = reactive<UserInfo>({
Expand All @@ -40,6 +41,7 @@ const useEditStore = defineStore('edit', () => {
email: '',
roles: [],
groups: [],
qq: '',
});
const avatarName = computed(() => userInfo.name.slice(0, 1));

Expand All @@ -59,20 +61,29 @@ const useEditStore = defineStore('edit', () => {

const oPostData: EditRequest = {};

const optionalSet = (key: keyof EditRequest) => {
const optionalSet = (key: keyof EditFormInfo) => {
if (!editFormInfo[key]) return;

if (key === 'password') {
oPostData.password = editFormInfo.password;
return;
}

if (key === 'qq') {
if (editFormInfo.qq !== userInfo.qq) {
oPostData.qq_account = editFormInfo.qq;
}
return;
}

if (editFormInfo[key] !== userInfo[key]) {
oPostData[key] = editFormInfo[key] as any;
oPostData[key as keyof EditRequest] = editFormInfo[key] as any;
}
};

(Object.keys(editFormInfo) as (keyof EditRequest)[]).forEach(optionalSet);
(Object.keys(editFormInfo) as (keyof EditFormInfo)[]).forEach(
optionalSet,
);

const res: Promise<EditResponse> = edit(oPostData);
res.then((response) => {
Expand Down Expand Up @@ -104,10 +115,12 @@ const useEditStore = defineStore('edit', () => {
userInfo.email = response.data.email;
userInfo.roles = response.data.roles;
userInfo.groups = response.data.groups;
userInfo.qq = response.data.qq_account;

editFormInfo.name = userInfo.name;
editFormInfo.gender = userInfo.gender;
editFormInfo.email = userInfo.email;
editFormInfo.qq = userInfo.qq;

resolve(response.data);
}
Expand Down
2 changes: 2 additions & 0 deletions src/views/user/editInfo/type/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ export interface EditFormInfo {
gender: Gender | null;
password: string;
email: string;
qq: string;
}

export interface UserInfo {
Expand All @@ -20,6 +21,7 @@ export interface UserInfo {
email: InfoData['email'];
roles: InfoData['roles'];
groups: InfoData['groups'];
qq: InfoData['qq_account'];
}

export interface PermissionFormInfo {
Expand Down