From 472f93bfc111e8ca94adef823b8cc12e4f8cd2c6 Mon Sep 17 00:00:00 2001 From: Soybean Date: Sun, 7 Aug 2022 12:02:00 +0800 Subject: [PATCH] =?UTF-8?q?feat(projects):=20=E5=AE=9E=E7=8E=B0=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E7=AE=A1=E7=90=86=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mock/api/management.ts | 51 ++--- src/config/regexp.ts | 2 +- .../components/ReloadButton/index.vue | 2 +- .../components/DrawerButton/index.vue | 2 +- src/service/api/management.adapter.ts | 17 +- src/service/api/management.ts | 12 +- src/typings/api.d.ts | 14 +- src/typings/business.d.ts | 12 ++ .../user/components/TableActionModal.vue | 124 +++++++++++ src/views/management/user/components/index.ts | 3 + src/views/management/user/index.vue | 201 ++++++++++++++++-- 11 files changed, 359 insertions(+), 81 deletions(-) create mode 100644 src/views/management/user/components/TableActionModal.vue create mode 100644 src/views/management/user/components/index.ts diff --git a/mock/api/management.ts b/mock/api/management.ts index e196be165..0314f555b 100644 --- a/mock/api/management.ts +++ b/mock/api/management.ts @@ -1,3 +1,4 @@ +import { mock } from 'mockjs'; import type { MockMethod } from 'vite-plugin-mock'; const apis: MockMethod[] = [ @@ -5,44 +6,26 @@ const apis: MockMethod[] = [ url: '/mock/getUserManagementList', method: 'post', response: (): Service.MockServiceResult => { - const data: ApiUserManagement.UserTable[] = [ - { - id: '1', - name: '张三', - age: 24, - gender: null, - createTime: '2022-04-13', - updateTime: '2022-07-29' - }, - { - id: '2', - name: '李四', - age: 22, - gender: '1', - createTime: '2022-05-13', - updateTime: '2022-06-29' - }, - { - id: '3', - name: '王五', - gender: '1', - createTime: '2022-04-18', - updateTime: '2022-07-30' - }, - { - id: '4', - name: '王小梅', - age: 20, - gender: '0', - createTime: '2022-05-18', - updateTime: '2022-07-30' - } - ]; + const data = mock({ + 'list|1000': [ + { + id: '@id', + name: '@cname', + 'age|20-36': 36, + 'gender|1': ['0', '1', null], + phone: + /^[1](([3][0-9])|([4][01456789])|([5][012356789])|([6][2567])|([7][0-8])|([8][0-9])|([9][012356789]))[0-9]{8}$/, + email: '@email("qq.com")', + 'role|1': ['super', 'admin', 'user'], + 'disabled|1': true + } + ] + }); return { code: 200, message: 'ok', - data + data: data.list }; } } diff --git a/src/config/regexp.ts b/src/config/regexp.ts index d3cf01425..56909d6f5 100644 --- a/src/config/regexp.ts +++ b/src/config/regexp.ts @@ -1,6 +1,6 @@ /** 手机号码正则 */ export const REGEXP_PHONE = - /^[1](([3][0-9])|([4][0,1,4-9])|([5][0-3,5-9])|([6][2,5,6,7])|([7][0-8])|([8][0-9])|([9][0-3,5-9]))[0-9]{8}$/; + /^[1](([3][0-9])|([4][01456789])|([5][012356789])|([6][2567])|([7][0-8])|([8][0-9])|([9][012356789]))[0-9]{8}$/; /** 邮箱正则 */ export const REGEXP_EMAIL = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/; diff --git a/src/layouts/common/GlobalTab/components/ReloadButton/index.vue b/src/layouts/common/GlobalTab/components/ReloadButton/index.vue index eb958ba32..ee3353afb 100644 --- a/src/layouts/common/GlobalTab/components/ReloadButton/index.vue +++ b/src/layouts/common/GlobalTab/components/ReloadButton/index.vue @@ -1,6 +1,6 @@ diff --git a/src/layouts/common/SettingDrawer/components/DrawerButton/index.vue b/src/layouts/common/SettingDrawer/components/DrawerButton/index.vue index fee21d7c3..71d7b586a 100644 --- a/src/layouts/common/SettingDrawer/components/DrawerButton/index.vue +++ b/src/layouts/common/SettingDrawer/components/DrawerButton/index.vue @@ -2,7 +2,7 @@ diff --git a/src/service/api/management.adapter.ts b/src/service/api/management.adapter.ts index 8ac43aaa1..0b755f477 100644 --- a/src/service/api/management.adapter.ts +++ b/src/service/api/management.adapter.ts @@ -2,8 +2,7 @@ import { EnumGender } from '@/enum'; import { isUndefined } from '@/utils'; export function adapterOfFetchUserManagementList( - requestData: ApiUserManagement.UserTable[], - adminId: string + requestData: ApiUserManagement.UserTable[] ): UserManagement.UserTable[] { const genderMap: Record< NonNullable, @@ -17,21 +16,25 @@ export function adapterOfFetchUserManagementList( // 2. 接口定义的字段有可能为null, 例如 预期是数组却返回了null,导致调用数组方法报错 // 3. 字段可能丢失 - return requestData.map(item => { - const { id, name, age, gender } = item; - - const userName = name + (adminId === id ? '(管理员)' : ''); + return requestData.map((item, index) => { + const { id, name: userName, age, gender, phone: userPhone, email: userEmail, role: userRole, disabled } = item; const userAge = isUndefined(age) ? '无' : String(age); const userGender = gender !== null ? genderMap[gender] : 'null'; const result: UserManagement.UserTable = { + index: index + 1, + key: id, id, userName, userAge, userGender, - userGenderLabel: EnumGender[userGender] + userGenderLabel: EnumGender[userGender], + userPhone, + userEmail, + userRole, + disabled }; return result; diff --git a/src/service/api/management.ts b/src/service/api/management.ts index 9336d95bf..d37fbc764 100644 --- a/src/service/api/management.ts +++ b/src/service/api/management.ts @@ -8,15 +8,5 @@ import { adapterOfFetchUserManagementList } from './management.adapter'; export async function fetchUserManagementList() { const data = await mockRequest.post('/getUserManagementList'); - const id = '2'; - - return adapter(adapterOfFetchUserManagementList, data, { error: null, data: id }); + return adapter(adapterOfFetchUserManagementList, data); } - -// export async function fetchFilterUserManagementList( -// filterKey: keyof UserManagement.UserTable, -// mode: 'fontEnd' | 'backEnd', -// source: UserManagement.UserTable[] -// ) { - -// } diff --git a/src/typings/api.d.ts b/src/typings/api.d.ts index 3f2d16e94..f807c1bdf 100644 --- a/src/typings/api.d.ts +++ b/src/typings/api.d.ts @@ -36,16 +36,20 @@ declare namespace ApiUserManagement { /** 用户名 */ name: string; /** 用户年龄 */ - age?: number; + age: number; /** * 用户性别 * - 男 1 * - 女 0 */ gender: '0' | '1' | null; - /** 创建时间 */ - createTime: string; - /** 更新时间 */ - updateTime: string; + /** 用户手机号码 */ + phone: string; + /** 用户邮箱 */ + email: string; + /** 用户角色 */ + role: Auth.RoleType; + /** 是否禁用用户 */ + disabled: boolean; } } diff --git a/src/typings/business.d.ts b/src/typings/business.d.ts index 1949a380d..fd34165b2 100644 --- a/src/typings/business.d.ts +++ b/src/typings/business.d.ts @@ -67,6 +67,10 @@ declare namespace Message { declare namespace UserManagement { /** 用户表格 */ interface UserTable { + /** 序号 */ + index: number; + /** 数据的key(id) */ + key: string; /** 用户id */ id: string; /** 用户名 */ @@ -80,5 +84,13 @@ declare namespace UserManagement { */ userGender: keyof typeof import('@/enum').EnumGender; userGenderLabel: import('@/enum').EnumGender; + /** 用户手机号 */ + userPhone: string; + /** 用户邮箱 */ + userEmail: string; + /** 用户角色 */ + userRole: Auth.RoleType; + /** 是否禁用用户 */ + disabled: boolean; } } diff --git a/src/views/management/user/components/TableActionModal.vue b/src/views/management/user/components/TableActionModal.vue new file mode 100644 index 000000000..7a5ee6988 --- /dev/null +++ b/src/views/management/user/components/TableActionModal.vue @@ -0,0 +1,124 @@ + + + + + diff --git a/src/views/management/user/components/index.ts b/src/views/management/user/components/index.ts new file mode 100644 index 000000000..ea1691da9 --- /dev/null +++ b/src/views/management/user/components/index.ts @@ -0,0 +1,3 @@ +import TableActionModal from './TableActionModal.vue'; + +export { TableActionModal }; diff --git a/src/views/management/user/index.vue b/src/views/management/user/index.vue index b7d49a7a4..42f244019 100644 --- a/src/views/management/user/index.vue +++ b/src/views/management/user/index.vue @@ -1,49 +1,208 @@ -