list.ts 1.7 KB

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