1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- 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<string, any> = {
- 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);
- });
|