Blame view

Yi.Vben5.Vue3/apps/backend-mock/api/table/list.ts 2.3 KB
515fceeb   “wangming”   框架初始化
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
  import { faker } from '@faker-js/faker';
  import { verifyAccessToken } from '~/utils/jwt-utils';
  import { unAuthorizedResponse, usePageResponseSuccess } from '~/utils/response';
  
  function generateMockDataList(count: number) {
    const dataList = [];
  
    for (let i = 0; i < count; i++) {
      const dataItem = {
        id: faker.string.uuid(),
        imageUrl: faker.image.avatar(),
        imageUrl2: faker.image.avatar(),
        open: faker.datatype.boolean(),
        status: faker.helpers.arrayElement(['success', 'error', 'warning']),
        productName: faker.commerce.productName(),
        price: faker.commerce.price(),
        currency: faker.finance.currencyCode(),
        quantity: faker.number.int({ min: 1, max: 100 }),
        available: faker.datatype.boolean(),
        category: faker.commerce.department(),
        releaseDate: faker.date.past(),
        rating: faker.number.float({ min: 1, max: 5 }),
        description: faker.commerce.productDescription(),
        weight: faker.number.float({ min: 0.1, max: 10 }),
        color: faker.color.human(),
        inProduction: faker.datatype.boolean(),
        tags: Array.from({ length: 3 }, () => faker.commerce.productAdjective()),
      };
  
      dataList.push(dataItem);
    }
  
    return dataList;
  }
  
  const mockData = generateMockDataList(100);
  
  export default eventHandler(async (event) => {
    const userinfo = verifyAccessToken(event);
    if (!userinfo) {
      return unAuthorizedResponse(event);
    }
  
    await sleep(600);
  
    const { page, MaxResultCount, sortBy, sortOrder } = getQuery(event);
    const listData = structuredClone(mockData);
    if (sortBy && Reflect.has(listData[0], sortBy as string)) {
      listData.sort((a, b) => {
        if (sortOrder === 'asc') {
          if (sortBy === 'price') {
            return (
              Number.parseFloat(a[sortBy as string]) -
              Number.parseFloat(b[sortBy as string])
            );
          } else {
            return a[sortBy as string] > b[sortBy as string] ? 1 : -1;
          }
        } else {
          if (sortBy === 'price') {
            return (
              Number.parseFloat(b[sortBy as string]) -
              Number.parseFloat(a[sortBy as string])
            );
          } else {
            return a[sortBy as string] < b[sortBy as string] ? 1 : -1;
          }
        }
      });
    }
  
    return usePageResponseSuccess(page as string, MaxResultCount as string, listData);
  });