import { faker } from '@faker-js/faker' import { verifyAccessToken } from '~/utils/jwt-utils' import { getMenuIds, MOCK_MENU_LIST } from '~/utils/mock-data' import { unAuthorizedResponse, usePageResponseSuccess } from '~/utils/response' const formatterCN = new Intl.DateTimeFormat('zh-CN', { timeZone: 'Asia/Shanghai', year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', second: '2-digit', }) const menuIds = getMenuIds(MOCK_MENU_LIST) function generateMockDataList(count: number) { const dataList = [] for (let i = 0; i < count; i++) { const dataItem: Record = { id: faker.string.uuid(), name: faker.commerce.product(), status: faker.helpers.arrayElement([0, 1]), createTime: formatterCN.format( faker.date.between({ from: '2022-01-01', to: '2025-01-01' }), ), permissions: faker.helpers.arrayElements(menuIds), remark: faker.lorem.sentence(), } dataList.push(dataItem) } return dataList } const mockData = generateMockDataList(100) export default eventHandler(async (event) => { const userinfo = verifyAccessToken(event) if (!userinfo) { return unAuthorizedResponse(event) } const { page = 1, pageSize = 20, name, id, remark, startTime, endTime, status, } = getQuery(event) let listData = structuredClone(mockData) if (name) { listData = listData.filter((item) => item.name.toLowerCase().includes(String(name).toLowerCase()), ) } if (id) { listData = listData.filter((item) => item.id.toLowerCase().includes(String(id).toLowerCase()), ) } if (remark) { listData = listData.filter((item) => item.remark?.toLowerCase()?.includes(String(remark).toLowerCase()), ) } if (startTime) { listData = listData.filter((item) => item.createTime >= startTime) } if (endTime) { listData = listData.filter((item) => item.createTime <= endTime) } if (['0', '1'].includes(status as string)) { listData = listData.filter((item) => item.status === Number(status)) } return usePageResponseSuccess(page as string, pageSize as string, listData) })