list.ts 1.6 KB

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