list.ts 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import { faker } from '@faker-js/faker';
  2. import { eventHandler } from 'h3';
  3. import { verifyAccessToken } from '~/utils/jwt-utils';
  4. import { unAuthorizedResponse, useResponseSuccess } from '~/utils/response';
  5. const formatterCN = new Intl.DateTimeFormat('zh-CN', {
  6. timeZone: 'Asia/Shanghai',
  7. year: 'numeric',
  8. month: '2-digit',
  9. day: '2-digit',
  10. hour: '2-digit',
  11. minute: '2-digit',
  12. second: '2-digit',
  13. });
  14. function generateMockDataList(count: number) {
  15. const dataList = [];
  16. for (let i = 0; i < count; i++) {
  17. const dataItem: Record<string, any> = {
  18. id: faker.string.uuid(),
  19. pid: 0,
  20. name: faker.commerce.department(),
  21. status: faker.helpers.arrayElement([0, 1]),
  22. createTime: formatterCN.format(
  23. faker.date.between({ from: '2021-01-01', to: '2022-12-31' }),
  24. ),
  25. remark: faker.lorem.sentence(),
  26. };
  27. if (faker.datatype.boolean()) {
  28. dataItem.children = Array.from(
  29. { length: faker.number.int({ min: 1, max: 5 }) },
  30. () => ({
  31. id: faker.string.uuid(),
  32. pid: dataItem.id,
  33. name: faker.commerce.department(),
  34. status: faker.helpers.arrayElement([0, 1]),
  35. createTime: formatterCN.format(
  36. faker.date.between({ from: '2023-01-01', to: '2023-12-31' }),
  37. ),
  38. remark: faker.lorem.sentence(),
  39. }),
  40. );
  41. }
  42. dataList.push(dataItem);
  43. }
  44. return dataList;
  45. }
  46. const mockData = generateMockDataList(10);
  47. export default eventHandler(async (event) => {
  48. const userinfo = verifyAccessToken(event);
  49. if (!userinfo) {
  50. return unAuthorizedResponse(event);
  51. }
  52. const listData = structuredClone(mockData);
  53. return useResponseSuccess(listData);
  54. });