feat(projects): 添加请求适配adapter层应用的示例页面

This commit is contained in:
Soybean
2022-07-30 22:16:42 +08:00
parent f6b61418e5
commit 8d11a6affc
14 changed files with 228 additions and 86 deletions

View File

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

View File

@ -0,0 +1,39 @@
import { EnumGender } from '@/enum';
import { isUndefined } from '@/utils';
export function adapterOfFetchUserManagementList(
requestData: ApiUserManagement.UserTable[],
adminId: string
): 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 => {
const { id, name, age, gender } = item;
const userName = name + (adminId === id ? '(管理员)' : '');
const userAge = isUndefined(age) ? '无' : String(age);
const userGender = gender !== null ? genderMap[gender] : 'null';
const result: UserManagement.UserTable = {
id,
userName,
userAge,
userGender,
userGenderLabel: EnumGender[userGender]
};
return result;
});
}

View File

@ -0,0 +1,22 @@
import { adapter } from '@/utils';
import { mockRequest } from '../request';
import { adapterOfFetchUserManagementList } from './management.adapter';
/**
* 获取用户管理列表
*/
export async function fetchUserManagementList() {
const data = await mockRequest.post<ApiUserManagement.UserTable[]>('/getUserManagementList');
const id = '2';
return adapter(adapterOfFetchUserManagementList, data, { error: null, data: id });
}
// export async function fetchFilterUserManagementList(
// filterKey: keyof UserManagement.UserTable,
// mode: 'fontEnd' | 'backEnd',
// source: UserManagement.UserTable[]
// ) {
// }