62 lines
1.6 KiB
TypeScript
62 lines
1.6 KiB
TypeScript
|
import { faker } from '@faker-js/faker';
|
||
|
import { verifyAccessToken } from '~/utils/jwt-utils';
|
||
|
import { unAuthorizedResponse, useResponseSuccess } from '~/utils/response';
|
||
|
|
||
|
const formatterCN = new Intl.DateTimeFormat('zh-CN', {
|
||
|
timeZone: 'Asia/Shanghai',
|
||
|
year: 'numeric',
|
||
|
month: '2-digit',
|
||
|
day: '2-digit',
|
||
|
hour: '2-digit',
|
||
|
minute: '2-digit',
|
||
|
second: '2-digit',
|
||
|
});
|
||
|
|
||
|
function generateMockDataList(count: number) {
|
||
|
const dataList = [];
|
||
|
|
||
|
for (let i = 0; i < count; i++) {
|
||
|
const dataItem: Record<string, any> = {
|
||
|
id: faker.string.uuid(),
|
||
|
pid: 0,
|
||
|
name: faker.commerce.department(),
|
||
|
status: faker.helpers.arrayElement([0, 1]),
|
||
|
createTime: formatterCN.format(
|
||
|
faker.date.between({ from: '2021-01-01', to: '2022-12-31' }),
|
||
|
),
|
||
|
remark: faker.lorem.sentence(),
|
||
|
};
|
||
|
if (faker.datatype.boolean()) {
|
||
|
dataItem.children = Array.from(
|
||
|
{ length: faker.number.int({ min: 1, max: 5 }) },
|
||
|
() => ({
|
||
|
id: faker.string.uuid(),
|
||
|
pid: dataItem.id,
|
||
|
name: faker.commerce.department(),
|
||
|
status: faker.helpers.arrayElement([0, 1]),
|
||
|
createTime: formatterCN.format(
|
||
|
faker.date.between({ from: '2023-01-01', to: '2023-12-31' }),
|
||
|
),
|
||
|
remark: faker.lorem.sentence(),
|
||
|
}),
|
||
|
);
|
||
|
}
|
||
|
dataList.push(dataItem);
|
||
|
}
|
||
|
|
||
|
return dataList;
|
||
|
}
|
||
|
|
||
|
const mockData = generateMockDataList(10);
|
||
|
|
||
|
export default eventHandler(async (event) => {
|
||
|
const userinfo = verifyAccessToken(event);
|
||
|
if (!userinfo) {
|
||
|
return unAuthorizedResponse(event);
|
||
|
}
|
||
|
|
||
|
const listData = structuredClone(mockData);
|
||
|
|
||
|
return useResponseSuccess(listData);
|
||
|
});
|