|
|
import type { MockMethod, MockRequest } from './types'
|
|
|
|
|
|
// 模拟采集地址数据
|
|
|
const mockAddresses = [
|
|
|
{
|
|
|
dbId: 1,
|
|
|
name: 'FANUC-1号',
|
|
|
url: 'http://localhost:9001/',
|
|
|
machineCount: 32,
|
|
|
machines: Array.from({ length: 32 }, (_, i) => ({
|
|
|
id: i + 1,
|
|
|
deviceCode: `fanake_1.${i + 2}`,
|
|
|
name: `西-1.${i + 2}`
|
|
|
})),
|
|
|
isRunning: true,
|
|
|
runningPort: 9001
|
|
|
},
|
|
|
{
|
|
|
dbId: 2,
|
|
|
name: 'FANUC-2号',
|
|
|
url: 'http://localhost:9002/',
|
|
|
machineCount: 16,
|
|
|
machines: Array.from({ length: 16 }, (_, i) => ({
|
|
|
id: i + 33,
|
|
|
deviceCode: `fanake_2.${i + 1}`,
|
|
|
name: `东-2.${i + 1}`
|
|
|
})),
|
|
|
isRunning: false,
|
|
|
runningPort: 0
|
|
|
}
|
|
|
]
|
|
|
|
|
|
// 模拟状态汇总
|
|
|
const mockStatusList = [
|
|
|
{
|
|
|
dbAddressId: 1,
|
|
|
name: 'FANUC-1号模拟',
|
|
|
port: 9001,
|
|
|
isRunning: true,
|
|
|
totalDevices: 32,
|
|
|
onlineDevices: 28,
|
|
|
requestCount: 1560,
|
|
|
dataChangeInterval: 10,
|
|
|
totalParts: 128
|
|
|
}
|
|
|
]
|
|
|
|
|
|
// 模拟设备状态
|
|
|
const mockDevices = [
|
|
|
{ deviceCode: 'fanake_1.2', desc: '西-1.2', scenario: 'machining', isOnline: true, programName: 'O504', partCount: 14, runStatus: 3, operateMode: 10, spindleSpeedSet: 3000, spindleSpeedActual: 2980, feedSpeedSet: 500, feedSpeedActual: 490, spindleLoad: 65, machiningStatus: 'cutting', scenarioTick: 45, scenarioDuration: 120 },
|
|
|
{ deviceCode: 'fanake_1.3', desc: '西-1.3', scenario: 'idle', isOnline: true, programName: 'O1', partCount: 53, runStatus: 1, operateMode: 10, spindleSpeedSet: 0, spindleSpeedActual: 0, feedSpeedSet: 0, feedSpeedActual: 0, spindleLoad: 5, machiningStatus: 'idle', scenarioTick: 12, scenarioDuration: 60 },
|
|
|
{ deviceCode: 'fanake_1.4', desc: '西-1.4', scenario: 'offline', isOnline: false, programName: 'O200', partCount: 0, runStatus: 0, operateMode: 0, spindleSpeedSet: 0, spindleSpeedActual: 0, feedSpeedSet: 0, feedSpeedActual: 0, spindleLoad: 0, machiningStatus: 'offline', scenarioTick: 0, scenarioDuration: 0 }
|
|
|
]
|
|
|
|
|
|
// 模拟请求日志
|
|
|
const mockLogs = Array.from({ length: 10 }, (_, i) => ({
|
|
|
index: 10 - i,
|
|
|
timestamp: `${String(14 + Math.floor(i / 6)).padStart(2, '0')}:${String(30 - i * 2).padStart(2, '0')}:${String(15 + i).padStart(2, '0')}`,
|
|
|
deviceCount: 28 + Math.floor(Math.random() * 5),
|
|
|
keyData: `fanake_1.2(P=14,Prog=O504,Run=3) fanake_1.3(P=53,Prog=O1,Run=1)`,
|
|
|
duration: 12 + Math.floor(Math.random() * 20),
|
|
|
fullJson: `[{"device":"fanake_1.2","desc":"西-1.2","tags":[{"id":"Tag5","value":"O504"}]}]`
|
|
|
}))
|
|
|
|
|
|
const mocks: MockMethod[] = [
|
|
|
// 探测模拟器
|
|
|
{ url: '/api/admin/simulator/ping', method: 'get', response: () => ({ code: 0, message: 'success', data: { running: true } }) },
|
|
|
|
|
|
// 获取采集地址列表
|
|
|
{ url: '/api/admin/simulator/addresses', method: 'get', response: () => ({ code: 0, message: 'success', data: mockAddresses }) },
|
|
|
|
|
|
// 获取模拟状态汇总
|
|
|
{ url: '/api/admin/simulator/status', method: 'get', response: () => ({ code: 0, message: 'success', data: mockStatusList }) },
|
|
|
|
|
|
// 启动模拟
|
|
|
{ url: '/api/admin/simulator/start', method: 'post', response: () => ({ code: 0, message: 'success', data: { ok: true, port: 9001 } }) },
|
|
|
|
|
|
// 停止模拟
|
|
|
{ url: '/api/admin/simulator/stop', method: 'post', response: () => ({ code: 0, message: 'success', data: { ok: true } }) },
|
|
|
|
|
|
// 全部启动
|
|
|
{ url: '/api/admin/simulator/start-all', method: 'post', response: () => ({ code: 0, message: 'success', data: { ok: true } }) },
|
|
|
|
|
|
// 全部停止
|
|
|
{ url: '/api/admin/simulator/stop-all', method: 'post', response: () => ({ code: 0, message: 'success', data: { ok: true } }) },
|
|
|
|
|
|
// 重新加载
|
|
|
{ url: '/api/admin/simulator/reload', method: 'post', response: () => ({ code: 0, message: 'success', data: { ok: true, count: 2 } }) },
|
|
|
|
|
|
// 单地址状态(匹配 /address/{port}/status)
|
|
|
{ url: /\/api\/admin\/simulator\/address\/\d+\/status$/, method: 'get', response: () => ({
|
|
|
code: 0, message: 'success', data: {
|
|
|
name: 'FANUC-1号模拟', port: 9001, isRunning: true,
|
|
|
requestCount: 1560, successCount: 1540, failCount: 20,
|
|
|
totalDevices: 32, onlineDevices: 28, dataChangeInterval: 10,
|
|
|
scenarioMode: 'auto', networkError: 'normal',
|
|
|
startTime: '2026-05-06 10:00:00', uptime: '04:32:15',
|
|
|
devices: mockDevices
|
|
|
}
|
|
|
})},
|
|
|
|
|
|
// 单地址启动/停止/事件/设置(POST类,统返回ok)
|
|
|
{ url: /\/api\/admin\/simulator\/address\/\d+\/start$/, method: 'post', response: () => ({ code: 0, message: 'success', data: { ok: true } }) },
|
|
|
{ url: /\/api\/admin\/simulator\/address\/\d+\/stop$/, method: 'post', response: () => ({ code: 0, message: 'success', data: { ok: true } }) },
|
|
|
{ url: /\/api\/admin\/simulator\/address\/\d+\/event$/, method: 'post', response: () => ({ code: 0, message: 'success', data: { ok: true } }) },
|
|
|
{ url: /\/api\/admin\/simulator\/address\/\d+\/interval$/, method: 'post', response: () => ({ code: 0, message: 'success', data: { ok: true } }) },
|
|
|
{ url: /\/api\/admin\/simulator\/address\/\d+\/network$/, method: 'post', response: () => ({ code: 0, message: 'success', data: { ok: true } }) },
|
|
|
{ url: /\/api\/admin\/simulator\/address\/\d+\/mode$/, method: 'post', response: () => ({ code: 0, message: 'success', data: { ok: true } }) },
|
|
|
{ url: /\/api\/admin\/simulator\/address\/\d+\/add-device$/, method: 'post', response: () => ({ code: 0, message: 'success', data: { ok: true } }) },
|
|
|
{ url: /\/api\/admin\/simulator\/address\/\d+\/remove-device$/, method: 'post', response: () => ({ code: 0, message: 'success', data: { ok: true } }) },
|
|
|
|
|
|
// 日志
|
|
|
{ url: /\/api\/admin\/simulator\/address\/\d+\/logs$/, method: 'get', response: () => ({ code: 0, message: 'success', data: mockLogs }) },
|
|
|
|
|
|
// 统计
|
|
|
{ url: /\/api\/admin\/simulator\/address\/\d+\/stats$/, method: 'get', response: () => ({
|
|
|
code: 0, message: 'success', data: {
|
|
|
totalDevices: 32, onlineDevices: 28, totalParts: 128,
|
|
|
partsByDevice: {
|
|
|
'fanake_1.2': { desc: '西-1.2', totalParts: 14, currentProgram: 'O504', currentPartCount: 14, programs: { 'O504': 14 } },
|
|
|
'fanake_1.3': { desc: '西-1.3', totalParts: 53, currentProgram: 'O1', currentPartCount: 53, programs: { 'O1': 53 } }
|
|
|
}
|
|
|
}
|
|
|
})},
|
|
|
|
|
|
// 事件历史
|
|
|
{ url: /\/api\/admin\/simulator\/address\/\d+\/event-history$/, method: 'get', response: () => ({ code: 0, message: 'success', data: [
|
|
|
{ timestamp: '2026-05-06 14:30:00', deviceCode: 'fanake_1.2', eventType: 'change_program', oldProgram: 'O200', newProgram: 'O504', partCountBefore: 10, partCountAfter: 14, detail: '程序切换' },
|
|
|
{ timestamp: '2026-05-06 14:25:00', deviceCode: 'fanake_1.3', eventType: 'part_count_increase', oldProgram: 'O1', newProgram: 'O1', partCountBefore: 52, partCountAfter: 53, detail: '零件数+1' }
|
|
|
] })},
|
|
|
|
|
|
// 完整汇总
|
|
|
{ url: /\/api\/admin\/simulator\/address\/\d+\/full-summary$/, method: 'get', response: () => ({ code: 0, message: 'success', data: { exportTime: '2026-05-06 14:35:00', addressName: 'FANUC-1号模拟', port: 9001, totalDevices: 32, onlineDevices: 28, totalParts: 128 } }) },
|
|
|
|
|
|
// 异常日志
|
|
|
{ url: /\/api\/admin\/simulator\/address\/\d+\/error-log$/, method: 'get', response: () => ({ code: 0, message: 'success', data: [] }) },
|
|
|
]
|
|
|
|
|
|
export default mocks
|