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/collect-address.ts

91 lines
7.3 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 addresses = [
{ id: 1, name: 'FANUC-A栋', url: 'http://10.1.1.1/', brandId: 1, brandName: 'FANUC', collectInterval: 30, isEnabled: 1, lastCollectTime: '2026-04-25T17:36:38', failCount: 0, machineCount: 32 },
{ id: 2, name: 'FANUC-B栋', url: 'http://10.1.2.1/', brandId: 1, brandName: 'FANUC', collectInterval: 60, isEnabled: 1, lastCollectTime: '2026-04-25T17:35:38', failCount: 0, machineCount: 28 },
{ id: 3, name: 'SIEMENS-C栋', url: 'http://10.1.3.1/', brandId: 2, brandName: 'SIEMENS', collectInterval: 30, isEnabled: 0, lastCollectTime: null, failCount: 3, machineCount: 0 },
]
/** 重置mock数据为初始状态供测试使用 */
export function resetAddressMockData() {
addresses = [
{ id: 1, name: 'FANUC-A栋', url: 'http://10.1.1.1/', brandId: 1, brandName: 'FANUC', collectInterval: 30, isEnabled: 1, lastCollectTime: '2026-04-25T17:36:38', failCount: 0, machineCount: 32 },
{ id: 2, name: 'FANUC-B栋', url: 'http://10.1.2.1/', brandId: 1, brandName: 'FANUC', collectInterval: 60, isEnabled: 1, lastCollectTime: '2026-04-25T17:35:38', failCount: 0, machineCount: 28 },
{ id: 3, name: 'SIEMENS-C栋', url: 'http://10.1.3.1/', brandId: 2, brandName: 'SIEMENS', collectInterval: 30, isEnabled: 0, lastCollectTime: null, failCount: 3, machineCount: 0 },
]
}
const mock: MockMethod[] = [
{ url: '/mock-api/admin/collect-address', method: 'get', response: () => ({ code: 0, data: { items: addresses } }) },
// 参数化路由GET /mock-api/admin/collect-address/:id
{ url: '/mock-api/admin/collect-address/:id', method: 'get', response: ({ params }: any) => { const id = Number(params.id); const a = addresses.find((a: any) => a.id === id); return { code: 0, data: a || null } } },
// 兼容旧URL格式
{ url: '/mock-api/admin/collect-address/detail', method: 'get', response: ({ query }: any) => { const id = Number(query.id); const a = addresses.find((a: any) => a.id === id); return { code: 0, data: a || null } } },
{ url: '/mock-api/admin/collect-address', method: 'post', response: () => ({ code: 0, message: 'success', data: { id: 4, name: '新地址' } }) },
{ url: '/mock-api/admin/collect-address/update', method: 'post', response: () => ({ code: 0, message: 'success', data: null }) },
{ url: '/mock-api/admin/collect-address/delete', method: 'post', response: () => ({ code: 0, message: 'success', data: null }) },
{ url: '/mock-api/admin/collect-address/toggle', method: 'post', response: () => ({ code: 0, message: 'success', data: null }) },
// 参数化路由GET /mock-api/admin/collect-address/:id/machines
{ url: '/mock-api/admin/collect-address/:id/machines', method: 'get', response: () => ({ code: 0, data: { items: [
{ machineId: 1, machineName: '西-1.8', deviceCode: 'fanake_1.8', workshopName: 'A栋', isOnline: 1, programName: '1566.NC', partCount: 580 },
{ machineId: 2, machineName: '西-1.10', deviceCode: 'fanake_1.10', workshopName: 'A栋', isOnline: 1, programName: 'O123.NC', partCount: 120 },
] } }) },
// 兼容旧URL格式
{ url: '/mock-api/admin/collect-address/machines', method: 'get', response: () => ({ code: 0, data: { items: [
{ machineId: 1, machineName: '西-1.8', deviceCode: 'fanake_1.8', workshopName: 'A栋', isOnline: 1, programName: '1566.NC', partCount: 580 },
{ machineId: 2, machineName: '西-1.10', deviceCode: 'fanake_1.10', workshopName: 'A栋', isOnline: 1, programName: 'O123.NC', partCount: 120 },
] } }) },
// 参数化路由GET /mock-api/admin/collect-address/:id/collect-records
{ url: '/mock-api/admin/collect-address/:id/collect-records', method: 'get', response: () => ({ code: 0, data: { items: [
{ requestTime: '2026-04-25T17:36:38', duration: 1200, isSuccess: 1, machineCount: 32, failMachineCount: 0, machineName: '西-1.8' },
{ requestTime: '2026-04-25T17:35:38', duration: 3500, isSuccess: 1, machineCount: 31, failMachineCount: 1, machineName: '西-1.10' },
{ requestTime: '2026-04-25T17:35:08', duration: null, isSuccess: 0, machineCount: null, failMachineCount: null, machineName: '西-1.12' },
] } }) },
// 兼容旧URL格式
{ url: '/mock-api/admin/collect-address/collect-records', method: 'get', response: () => ({ code: 0, data: { items: [
{ requestTime: '2026-04-25T17:36:38', duration: 1200, isSuccess: 1, machineCount: 32, failMachineCount: 0, machineName: '西-1.8' },
{ requestTime: '2026-04-25T17:35:38', duration: 3500, isSuccess: 1, machineCount: 31, failMachineCount: 1, machineName: '西-1.10' },
{ requestTime: '2026-04-25T17:35:08', duration: null, isSuccess: 0, machineCount: null, failMachineCount: null, machineName: '西-1.12' },
] } }) },
// 参数化路由GET /mock-api/admin/collect-address/:id/raw-json
{ url: '/mock-api/admin/collect-address/:id/raw-json', method: 'get', response: () => ({ code: 0, data: { rawJson: '[{device:fanake_1.8,tags:[{id:Tag5,value:1566.NC}]}]' } }) },
// 兼容旧URL格式
{ url: '/mock-api/admin/collect-address/raw-json', method: 'get', response: () => ({ code: 0, data: { rawJson: '[{device:fanake_1.8,tags:[{id:Tag5,value:1566.NC}]}]' } }) },
{ url: '/mock-api/admin/brand/list', method: 'get', response: () => ({ code: 0, data: { items: [{ id: 1, brandName: 'FANUC' }, { id: 2, brandName: 'SIEMENS' }] } }) },
{ url: '/mock-api/admin/machine/list', method: 'get', response: ({ query }: any) => {
const brandName = query?.brandName || ''
const machines = brandName === 'FANUC' ? [
{ machineId: 1, machineName: '西-1.8', deviceCode: 'fanake_1.8', workshopName: 'A栋', isOnline: 1, programName: '1566.NC', partCount: 580 },
{ machineId: 2, machineName: '西-1.10', deviceCode: 'fanake_1.10', workshopName: 'A栋', isOnline: 1, programName: 'O123.NC', partCount: 120 },
] : [
{ machineId: 3, machineName: '东-2.3', deviceCode: 'sec_2.3', workshopName: 'B栋', isOnline: 0, programName: '2000.NC', partCount: 50 }
]
return { code: 0, data: { items: machines } }
} },
// 批量删除采集地址
{ url: '/mock-api/admin/collect-address/batch-delete', method: 'post', response: ({ body }: any) => {
const ids: number[] = body?.ids || []
addresses = addresses.filter((a: any) => !ids.includes(a.id))
return { code: 0, message: 'success', data: null }
}},
// 参数化路由PUT /mock-api/admin/collect-address/:id/toggle切换启用/停用)
{ url: '/mock-api/admin/collect-address/:id/toggle', method: 'put', response: ({ params }: any) => {
const id = Number(params.id)
const a = addresses.find((a: any) => a.id === id)
if (a) (a as any).isEnabled = (a as any).isEnabled ? 0 : 1
return { code: 0, message: 'success', data: null }
}},
// 参数化路由DELETE /mock-api/admin/collect-address/:id单个删除
{ url: '/mock-api/admin/collect-address/:id', method: 'delete', response: ({ params }: any) => {
const id = Number(params.id)
addresses = addresses.filter((a: any) => a.id !== id)
return { code: 0, message: 'success', data: null }
}},
// 参数化路由PUT /mock-api/admin/collect-address/:id编辑更新
{ url: '/mock-api/admin/collect-address/:id', method: 'put', response: () => ({ code: 0, message: 'success', data: null }) },
// 测试专用重置mock数据
{ url: '/mock-api/test/reset-addresses', method: 'post', response: () => { resetAddressMockData(); return { code: 0, message: 'reset ok' } } },
]
export default mock