You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

76 lines
2.1 KiB
TypeScript

// 模拟获取computedWithEnumList页面所需接口
import { defineFakeRoute } from 'vite-plugin-fake-server/client';
import { faker } from '@faker-js/faker';
// 模拟后端延迟返回
const delay = (ms: number) => new Promise(res => setTimeout(res, ms));
// 模拟枚举值
const enums = {
// 性别
gender: [
{ label: '男', value: 1 },
{ label: '女', value: 2 },
{ label: '未知', value: 0 },
],
// 状态
status: [
{ label: '启用', value: 1 },
{ label: '禁用', value: 0 },
],
// 角色
role: [
{ label: '管理员', value: 'admin' },
{ label: '普通用户', value: 'common' },
],
};
export default defineFakeRoute([
{
url: '/computed-with-enum-list/get-page-info',
method: 'post',
response: async ({ body }) => {
// 模拟延迟
await delay(faker.number.int({ min: 200, max: 500 }));
const list = [];
for (let i = 0; i < body.pageSize; i++) {
list.push({
id: faker.string.uuid(),
name: faker.person.fullName(),
gender: faker.helpers.arrayElement([0, 1, 2]),
status: faker.helpers.arrayElement([0, 1]),
role: faker.helpers.arrayElement(['admin', 'common']),
createTime: faker.date.past(),
});
}
return {
success: true,
code: 200,
data: {
list,
total: 100,
pageSize: body.pageSize,
pageNumber: body.pageNumber,
},
};
},
},
{
url: '/computed-with-enum-list/get-enum-list',
method: 'get',
response: async ({ query }) => {
// 模拟超长延迟
await delay(faker.number.int({ min: 1000, max: 5000 }));
const type = query.type as keyof typeof enums;
return {
success: true,
code: 200,
data: enums[type] || [],
};
},
},
]);