You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
haoliang-net/frontend/mock/worker.ts

110 lines
6.6 KiB
TypeScript

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import type { MockMethod } from './types'
let workers = [
{ id: 1, code: 'W001', name: '张三', isEnabled: 1, machineCount: 2, machineNames: '西-1.8,西-2.0' },
{ id: 2, code: 'W002', name: '李四', isEnabled: 1, machineCount: 1, machineNames: '西-1.10' },
{ id: 3, code: 'W003', name: '王五', isEnabled: 0, machineCount: 0, machineNames: '-' },
]
/** 重置mock数据为初始状态供测试使用 */
export function resetWorkerMockData() {
workers = [
{ id: 1, code: 'W001', name: '张三', isEnabled: 1, machineCount: 2, machineNames: '西-1.8,西-2.0' },
{ id: 2, code: 'W002', name: '李四', isEnabled: 1, machineCount: 1, machineNames: '西-1.10' },
{ id: 3, code: 'W003', name: '王五', isEnabled: 0, machineCount: 0, machineNames: '-' },
]
}
const mock: MockMethod[] = [
{ url: '/mock-api/admin/worker', method: 'get', response: ({ query }: any) => {
let items = [...workers]
const page = Number(query.page) || 1
const pageSize = Number(query.pageSize) || 20
const original = items
if (query.isEnabled !== undefined && query.isEnabled !== '') items = items.filter((w: any) => w.isEnabled === Number(query.isEnabled))
if (query.keyword) items = items.filter((w: any) => w.name.includes(query.keyword) || w.code.includes(query.keyword))
const total = original.length
const start = (page - 1) * pageSize
const end = start + pageSize
items = items.slice(start, end)
return { code: 0, data: { items, total, page, pageSize } }
}},
// 参数化路由GET /mock-api/admin/worker/:id
{ url: '/mock-api/admin/worker/:id', method: 'get', response: ({ params }: any) => {
const w = workers.find((w: any) => w.id === Number(params.id))
return { code: 0, data: w || null }
}},
// 兼容旧URL格式
{ url: '/mock-api/admin/worker/detail', method: 'get', response: ({ query }: any) => {
const w = workers.find((w: any) => w.id === Number(query.id))
return { code: 0, data: w || null }
}},
{ url: '/mock-api/admin/worker', method: 'post', response: () => ({ code: 0, message: 'success', data: { id: 4, name: '赵六' } }) },
{ url: '/mock-api/admin/worker/update', method: 'post', response: () => ({ code: 0, message: 'success', data: null }) },
{ url: '/mock-api/admin/worker/delete', method: 'post', response: () => ({ code: 0, message: 'success', data: null }) },
{ url: '/mock-api/admin/worker/batch-status', method: 'post', response: () => ({ code: 0, message: 'success', data: null }) },
// 参数化路由GET /mock-api/admin/worker/:id/machines
{ url: '/mock-api/admin/worker/:id/machines', method: 'get', response: () => ({ code: 0, data: { items: [
{ machineId: 1, machineName: '西-1.8', deviceCode: 'fanake_1.8', workshopName: 'A栋', brandName: 'FANUC', isOnline: 1, programName: '1566.NC' },
{ machineId: 2, machineName: '西-2.0', deviceCode: 'fanake_2.0', workshopName: 'A栋', brandName: 'FANUC', isOnline: 0, programName: null },
] } }) },
// 兼容旧URL格式
{ url: '/mock-api/admin/worker/machines', method: 'get', response: () => ({ code: 0, data: { items: [
{ machineId: 1, machineName: '西-1.8', deviceCode: 'fanake_1.8', workshopName: 'A栋', brandName: 'FANUC', isOnline: 1, programName: '1566.NC' },
{ machineId: 2, machineName: '西-2.0', deviceCode: 'fanake_2.0', workshopName: 'A栋', brandName: 'FANUC', isOnline: 0, programName: null },
] } }) },
// 参数化路由GET /mock-api/admin/worker/:id/production/today
{ url: '/mock-api/admin/worker/:id/production/today', method: 'get', response: () => ({ code: 0, data: { items: [
{ machineName: '西-1.8', programName: '1566.NC', quantity: 580, runTime: '4h20m', cuttingTime: '3h50m' },
{ machineName: '西-2.0', programName: '-', quantity: null, runTime: '-', cuttingTime: '-' },
] } }) },
// 兼容旧URL格式
{ url: '/mock-api/admin/worker/production/today', method: 'get', response: () => ({ code: 0, data: { items: [
{ machineName: '西-1.8', programName: '1566.NC', quantity: 580, runTime: '4h20m', cuttingTime: '3h50m' },
{ machineName: '西-2.0', programName: '-', quantity: null, runTime: '-', cuttingTime: '-' },
] } }) },
// 参数化路由GET /mock-api/admin/worker/:id/production/trend
{ url: '/mock-api/admin/worker/:id/production/trend', method: 'get', response: () => ({ code: 0, data: { items: [
{ date: '2026-04-19', quantity: 980 }, { date: '2026-04-20', quantity: 920 },
{ date: '2026-04-21', quantity: 1100 }, { date: '2026-04-22', quantity: 1050 },
{ date: '2026-04-23', quantity: 990 }, { date: '2026-04-24', quantity: 1080 },
{ date: '2026-04-25', quantity: 580 },
] } }) },
// 兼容旧URL格式
{ url: '/mock-api/admin/worker/production/trend', method: 'get', response: () => ({ code: 0, data: { items: [
{ date: '2026-04-19', quantity: 980 }, { date: '2026-04-20', quantity: 920 },
{ date: '2026-04-21', quantity: 1100 }, { date: '2026-04-22', quantity: 1050 },
{ date: '2026-04-23', quantity: 990 }, { date: '2026-04-24', quantity: 1080 },
{ date: '2026-04-25', quantity: 580 },
] } }) },
{ url: '/mock-api/admin/worker/available-machines', method: 'get', response: () => ({ code: 0, data: { items: [
{ id: 5, name: '东-2.5', deviceCode: 'siemens_2.5', workshopName: 'B栋' },
{ id: 8, name: '北-4.1', deviceCode: 'fanake_4.1', workshopName: 'C栋' },
] } }) },
// 批量删除工人
{ url: '/mock-api/admin/worker/batch-delete', method: 'post', response: ({ body }: any) => {
const ids: number[] = body?.ids || []
workers = workers.filter((w: any) => !ids.includes(w.id))
return { code: 0, message: 'success', data: null }
}},
// 参数化路由PUT /mock-api/admin/worker/:id/toggle切换启用/停用)
{ url: '/mock-api/admin/worker/:id/toggle', method: 'put', response: ({ params }: any) => {
const id = Number(params.id)
const w = workers.find((w: any) => w.id === id)
if (w) (w as any).isEnabled = (w as any).isEnabled ? 0 : 1
return { code: 0, message: 'success', data: null }
}},
// 参数化路由DELETE /mock-api/admin/worker/:id单个删除
{ url: '/mock-api/admin/worker/:id', method: 'delete', response: ({ params }: any) => {
const id = Number(params.id)
workers = workers.filter((w: any) => w.id !== id)
return { code: 0, message: 'success', data: null }
}},
// 参数化路由PUT /mock-api/admin/worker/:id编辑更新
{ url: '/mock-api/admin/worker/:id', method: 'put', response: () => ({ code: 0, message: 'success', data: null }) },
// 测试专用重置mock数据
{ url: '/mock-api/test/reset-workers', method: 'post', response: () => { resetWorkerMockData(); return { code: 0, message: 'reset ok' } } },
]
export default mock