refactor(projects): refactor page: user-management [重构用户管理页面]

This commit is contained in:
Soybean
2022-09-29 00:24:59 +08:00
parent 88e535f63c
commit 468b4bb0e1
26 changed files with 340 additions and 351 deletions

View File

@ -1,10 +0,0 @@
export function adapterOfFetchDataWithAdapter(data: ApiDemo.DataWithAdapter): Demo.DataWithAdapter {
const { dataId, dataName } = data;
const result: Demo.DataWithAdapter = {
id: dataId,
name: dataName
};
return result;
}

View File

@ -1,14 +0,0 @@
import { adapter } from '@/utils';
import { mockRequest, request } from '../request';
import { adapterOfFetchDataWithAdapter } from './demo.adapter';
/** 带有适配器的请求示例 */
export async function fetchDataWithAdapter() {
const res = await mockRequest.post<ApiDemo.DataWithAdapter>('/apiDemoWithAdapter');
return adapter(adapterOfFetchDataWithAdapter, res);
}
/** 测试代理后的请求 */
export function testRequestWithProxy() {
return request.get('/test-proxy'); // 确保.env-config的url和当前地址组成的 `${url}/test-proxy` 是有效的后端接口
}

View File

@ -1,3 +1,2 @@
export * from './auth';
export * from './demo';
export * from './management';

View File

@ -1,42 +1,13 @@
import { EnumGender } from '@/enum';
import { isUndefined } from '@/utils';
export function adapterOfFetchUserList(data: ApiUserManagement.User[] | null): UserManagement.User[] {
if (!data) return [];
export function adapterOfFetchUserManagementList(
requestData: ApiUserManagement.UserTable[]
): UserManagement.UserTable[] {
const genderMap: Record<
NonNullable<ApiUserManagement.UserTable['gender']>,
NonNullable<UserManagement.UserTable['userGender']>
> = {
'0': 'female',
'1': 'male'
};
// 1. 有可能依赖于多个接口的结果,再转换成页面的数据
// 2. 接口定义的字段有可能为null, 例如 预期是数组却返回了null导致调用数组方法报错
// 3. 字段可能丢失
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 = {
return data.map((item, index) => {
const user: UserManagement.User = {
index: index + 1,
key: id,
id,
userName,
userAge,
userGender,
userGenderLabel: EnumGender[userGender],
userPhone,
userEmail,
userRole,
disabled
key: item.id,
...item
};
return result;
return user;
});
}

View File

@ -1,12 +1,9 @@
import { adapter } from '@/utils';
import { mockRequest } from '../request';
import { adapterOfFetchUserManagementList } from './management.adapter';
import { adapterOfFetchUserList } from './management.adapter';
/**
* 获取用户管理列表
*/
export async function fetchUserManagementList() {
const data = await mockRequest.post<ApiUserManagement.UserTable[]>('/getUserManagementList');
return adapter(adapterOfFetchUserManagementList, data);
}
/** 获取用户列表 */
export const fetchUserList = async () => {
const data = await mockRequest.post<ApiUserManagement.User[] | null>('/getAllUserList');
return adapter(adapterOfFetchUserList, data);
};