list.ts 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import { faker } from '@faker-js/faker';
  2. import { eventHandler, getQuery } from 'h3';
  3. import { verifyAccessToken } from '~/utils/jwt-utils';
  4. import { unAuthorizedResponse, usePageResponseSuccess } 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. name: faker.commerce.product(),
  20. status: faker.helpers.arrayElement([0, 1]),
  21. createTime: formatterCN.format(
  22. faker.date.between({ from: '2022-01-01', to: '2025-01-01' }),
  23. ),
  24. deptId: faker.string.uuid(),
  25. remark: faker.lorem.sentence(),
  26. };
  27. dataList.push(dataItem);
  28. }
  29. return dataList;
  30. }
  31. const mockData = generateMockDataList(100);
  32. export default eventHandler(async (event) => {
  33. const userinfo = verifyAccessToken(event);
  34. if (!userinfo) {
  35. return unAuthorizedResponse(event);
  36. }
  37. const {
  38. page = 1,
  39. pageSize = 20,
  40. name,
  41. id,
  42. remark,
  43. startTime,
  44. endTime,
  45. deptId,
  46. status,
  47. } = getQuery(event);
  48. let listData = structuredClone(mockData);
  49. if (name) {
  50. listData = listData.filter((item) =>
  51. item.name.toLowerCase().includes(String(name).toLowerCase()),
  52. );
  53. }
  54. if (id) {
  55. listData = listData.filter((item) =>
  56. item.id.toLowerCase().includes(String(id).toLowerCase()),
  57. );
  58. }
  59. if (remark) {
  60. listData = listData.filter((item) =>
  61. item.remark?.toLowerCase()?.includes(String(remark).toLowerCase()),
  62. );
  63. }
  64. if (startTime) {
  65. listData = listData.filter((item) => item.createTime >= startTime);
  66. }
  67. if (endTime) {
  68. listData = listData.filter((item) => item.createTime <= endTime);
  69. }
  70. if (['0', '1'].includes(status as string)) {
  71. listData = listData.filter((item) => item.status === Number(status));
  72. }
  73. if (deptId) {
  74. listData = listData.filter((item) => item.deptId === deptId);
  75. }
  76. return usePageResponseSuccess(page as string, pageSize as string, listData);
  77. });