From 8a170eeebd8c3f624316e8fb51cdd77ab45b6439 Mon Sep 17 00:00:00 2001 From: Soybean Date: Sun, 28 Jan 2024 16:24:43 +0800 Subject: [PATCH] feat(projects): page manage_user --- src/constants/business.ts | 14 ++ src/hooks/common/form.ts | 78 +++---- src/locales/langs/en-us.ts | 29 +++ src/locales/langs/zh-cn.ts | 29 +++ src/service/api/system-manage.ts | 21 ++ src/typings/api.d.ts | 51 ++++- src/typings/app.d.ts | 29 +++ .../_builtin/login/modules/pwd-login.vue | 15 +- src/views/manage/user/index.vue | 214 +++++++++++++++++- .../user/modules/user-operate-drawer.vue | 177 +++++++++++++++ src/views/manage/user/modules/user-search.vue | 98 ++++++++ 11 files changed, 703 insertions(+), 52 deletions(-) create mode 100644 src/views/manage/user/modules/user-operate-drawer.vue create mode 100644 src/views/manage/user/modules/user-search.vue diff --git a/src/constants/business.ts b/src/constants/business.ts index e14aa1f5..63b7a96f 100644 --- a/src/constants/business.ts +++ b/src/constants/business.ts @@ -6,3 +6,17 @@ export const roleStatusRecord: Record = { + '1': 'page.manage.user.gender.male', + '2': 'page.manage.user.gender.female' +}; + +export const userGenderOptions = transformRecordToOption(userGenderRecord); + +export const userStatusRecord: Record = { + '1': 'page.manage.user.status.enable', + '2': 'page.manage.user.status.disable' +}; + +export const userStatusOptions = transformRecordToOption(userStatusRecord); diff --git a/src/hooks/common/form.ts b/src/hooks/common/form.ts index eeac4847..68d40cc0 100644 --- a/src/hooks/common/form.ts +++ b/src/hooks/common/form.ts @@ -4,47 +4,40 @@ import { REG_CODE_SIX, REG_EMAIL, REG_PHONE, REG_PWD, REG_USER_NAME } from '@/co import { $t } from '@/locales'; export function useFormRules() { - const constantRules = { - userName: [ - createRequiredRule($t('form.userName.required')), - { - pattern: REG_USER_NAME, - message: $t('form.userName.invalid'), - trigger: 'change' - } - ], - phone: [ - createRequiredRule($t('form.phone.required')), - { - pattern: REG_PHONE, - message: $t('form.phone.invalid'), - trigger: 'change' - } - ], - pwd: [ - createRequiredRule($t('form.pwd.required')), - { - pattern: REG_PWD, - message: $t('form.pwd.invalid'), - trigger: 'change' - } - ], - code: [ - createRequiredRule($t('form.code.required')), - { - pattern: REG_CODE_SIX, - message: $t('form.code.invalid'), - trigger: 'change' - } - ], - email: [ - createRequiredRule($t('form.email.required')), - { - pattern: REG_EMAIL, - message: $t('form.email.invalid'), - trigger: 'change' - } - ] + const patternRules = { + userName: { + pattern: REG_USER_NAME, + message: $t('form.userName.invalid'), + trigger: 'change' + }, + phone: { + pattern: REG_PHONE, + message: $t('form.phone.invalid'), + trigger: 'change' + }, + pwd: { + pattern: REG_PWD, + message: $t('form.pwd.invalid'), + trigger: 'change' + }, + code: { + pattern: REG_CODE_SIX, + message: $t('form.code.invalid'), + trigger: 'change' + }, + email: { + pattern: REG_EMAIL, + message: $t('form.email.invalid'), + trigger: 'change' + } + } satisfies Record; + + const formRules = { + userName: [createRequiredRule($t('form.userName.required')), patternRules.userName], + phone: [createRequiredRule($t('form.phone.required')), patternRules.phone], + pwd: [createRequiredRule($t('form.pwd.required')), patternRules.pwd], + code: [createRequiredRule($t('form.code.required')), patternRules.code], + email: [createRequiredRule($t('form.email.required')), patternRules.email] } satisfies Record; /** the default required rule */ @@ -58,7 +51,8 @@ export function useFormRules() { } return { - constantRules, + patternRules, + formRules, defaultRequiredRule, createRequiredRule }; diff --git a/src/locales/langs/en-us.ts b/src/locales/langs/en-us.ts index 0474c8b9..fa06df8e 100644 --- a/src/locales/langs/en-us.ts +++ b/src/locales/langs/en-us.ts @@ -271,6 +271,35 @@ const local: App.I18n.Schema = { enable: 'Enable', disable: 'Disable' } + }, + user: { + title: 'User List', + form: { + userName: 'Please enter user name', + userGender: 'Please select gender', + nickName: 'Please enter nick name', + userPhone: 'Please enter phone number', + userEmail: 'Please enter email', + userStatus: 'Please select user status', + userRole: 'Please select user role' + }, + userName: 'User Name', + userGender: 'Gender', + nickName: 'Nick Name', + userPhone: 'Phone Number', + userEmail: 'Email', + userStatus: 'User Status', + userRole: 'User Role', + addUser: 'Add User', + editUser: 'Edit User', + gender: { + male: 'Male', + female: 'Female' + }, + status: { + enable: 'Enable', + disable: 'Disable' + } } } }, diff --git a/src/locales/langs/zh-cn.ts b/src/locales/langs/zh-cn.ts index 44381587..611f229d 100644 --- a/src/locales/langs/zh-cn.ts +++ b/src/locales/langs/zh-cn.ts @@ -271,6 +271,35 @@ const local: App.I18n.Schema = { enable: '启用', disable: '禁用' } + }, + user: { + title: '用户列表', + form: { + userName: '请输入用户名', + userGender: '请选择性别', + nickName: '请输入昵称', + userPhone: '请输入手机号', + userEmail: '请输入邮箱', + userStatus: '请选择用户状态', + userRole: '请选择用户角色' + }, + userName: '用户名', + userGender: '性别', + nickName: '昵称', + userPhone: '手机号', + userEmail: '邮箱', + userStatus: '用户状态', + userRole: '用户角色', + addUser: '新增用户', + editUser: '编辑用户', + gender: { + male: '男', + female: '女' + }, + status: { + enable: '启用', + disable: '禁用' + } } } }, diff --git a/src/service/api/system-manage.ts b/src/service/api/system-manage.ts index daab6ab8..50fa3243 100644 --- a/src/service/api/system-manage.ts +++ b/src/service/api/system-manage.ts @@ -8,3 +8,24 @@ export function fetchGetRoleList(params?: Api.SystemManage.RoleSearchParams) { params }); } + +/** + * get all roles + * + * these roles are all enabled + */ +export function fetchGetAllRoles() { + return request({ + url: '/systemManage/getAllRoles', + method: 'get' + }); +} + +/** get user list */ +export function fetchGetUserList(params?: Api.SystemManage.UserSearchParams) { + return request({ + url: '/systemManage/getUserList', + method: 'get', + params + }); +} diff --git a/src/typings/api.d.ts b/src/typings/api.d.ts index 965374c3..9e6c8c7a 100644 --- a/src/typings/api.d.ts +++ b/src/typings/api.d.ts @@ -77,6 +77,8 @@ declare namespace Api { * backend api module: "systemManage" */ namespace SystemManage { + type CommonSearchParams = Pick; + /** * role status * @@ -99,11 +101,56 @@ declare namespace Api { /** role search params */ type RoleSearchParams = CommonType.RecordNullable< - Pick & - Pick + Pick & CommonSearchParams >; /** role list */ type RoleList = Common.PaginatingQueryRecord; + + /** all role */ + type AllRole = Pick; + + /** + * user gender + * + * - "1": "male" + * - "2": "female" + */ + type UserGender = '1' | '2'; + + /** + * user status + * + * - "1": enabled + * - "2": disabled + */ + type UserStatus = '1' | '2'; + + /** user */ + type User = Common.CommonRecord<{ + /** user name */ + userName: string; + /** user gender */ + userGender: UserGender | null; + /** user nick name */ + nickName: string; + /** user phone */ + userPhone: string; + /** user email */ + userEmail: string; + /** user role code collection */ + userRoles: string[]; + /** user status */ + userStatus: UserStatus | null; + }>; + + /** user search params */ + type UserSearchParams = CommonType.RecordNullable< + Pick & + CommonSearchParams + >; + + /** user list */ + type UserList = Common.PaginatingQueryRecord; } } diff --git a/src/typings/app.d.ts b/src/typings/app.d.ts index 03a3b2c0..95bc1516 100644 --- a/src/typings/app.d.ts +++ b/src/typings/app.d.ts @@ -459,6 +459,35 @@ declare namespace App { disable: string; }; }; + user: { + title: string; + form: { + userName: string; + userGender: string; + nickName: string; + userPhone: string; + userEmail: string; + userStatus: string; + userRole: string; + }; + userName: string; + userGender: string; + nickName: string; + userPhone: string; + userEmail: string; + userStatus: string; + userRole: string; + addUser: string; + editUser: string; + gender: { + male: string; + female: string; + }; + status: { + enable: string; + disable: string; + }; + }; }; }; form: { diff --git a/src/views/_builtin/login/modules/pwd-login.vue b/src/views/_builtin/login/modules/pwd-login.vue index a5a0f90f..9bd498e2 100644 --- a/src/views/_builtin/login/modules/pwd-login.vue +++ b/src/views/_builtin/login/modules/pwd-login.vue @@ -1,5 +1,5 @@ + diff --git a/src/views/manage/user/modules/user-operate-drawer.vue b/src/views/manage/user/modules/user-operate-drawer.vue new file mode 100644 index 00000000..2fb2de97 --- /dev/null +++ b/src/views/manage/user/modules/user-operate-drawer.vue @@ -0,0 +1,177 @@ + + + + + diff --git a/src/views/manage/user/modules/user-search.vue b/src/views/manage/user/modules/user-search.vue new file mode 100644 index 00000000..58061d96 --- /dev/null +++ b/src/views/manage/user/modules/user-search.vue @@ -0,0 +1,98 @@ + + + + +