登录后的菜单与业务按钮权限取该账号全部启用角色权限的并集。
登录
Warehouse Motion Control Suite
WMCS 智能仓储控制中心
{{ executorLabel }} / {{ backendLabel }} {{ status.connected ? '在线' : '离线' }}
{{ stateLabel }}
{{ status.axis_ready && status.allow_control ? '允许执行任务' : '等待联锁就绪' }}
控制器异常
{{ auth.authenticated ? `${auth.user?.display_name || auth.user?.username || '-'} / ${roleNames(auth.user)}` : '未登录' }}
退出
登录
{{clockStr}}
{{monitorShelfStats.utilization}}%
货架利用率
{{activeTaskCount}}
活动任务
{{monitorShelfStats.source === 'micro' ? monitorShelfStats.loaded : monitorShelfStats.occupied}}
{{monitorShelfStats.source === 'micro' ? '满框位' : '已占用'}}
{{monitorShelfStats.empty || 0}}
{{monitorShelfStats.source === 'micro' ? '空货位' : '空位'}}
运行状态
刷新
{{ backendLabel }}{{ status.connected ? '在线' : '离线' }}
{{stateLabel}}
{{status.axis_ready ? '轴就绪' : '轴未就绪'}}
{{status.allow_control ? '允许控制' : '控制等待'}}
异常
货架监控
{{item.label}}
{{side === 'L' ? '左侧货架' : '右侧货架'}}
{{layer}}层
{{cellMarkerText(getCellLocation(side, layer, c))}}
{{selectedCellDisplayLabel(selectedCell)}}
{{locationDisplayStatusLabel(selectedCell)}}
X {{selectedCell.pos_x ?? '-'}} / Y {{selectedCell.pos_y ?? '-'}}
{{frontStorageSlotForLocation(selectedCell).slot_code}} / {{frontStorageSlotStatusLabel(frontStorageSlotForLocation(selectedCell).status)}}
{{runtimeCargoIdForLocation(selectedCell)}} / {{runtimeSkuForLocation(selectedCell) || '-'}}
轴监控
{{card.name}}
{{getAxisStateLabel(card.axis)}}
{{card.axis.act_pos !== undefined ? card.axis.act_pos.toFixed(1) : '--'}} mm
速度 {{card.axis.act_vel !== undefined ? card.axis.act_vel.toFixed(1) : '--'}} mm/s / 力矩 {{card.axis.act_tor !== undefined ? card.axis.act_tor.toFixed(1) : '--'}} %
主从误差 {{gantryPlcError(card.gantry_group).toFixed(3)}} mm
智能微仓
{{microStoreOperatorJobs.length}}
待处理
{{microStoreActiveJobs.length}}
活跃作业
{{microStoreSlotCounts.empty_frame}}
空框位
{{microStoreState.alerts.length}}
告警
调试执行器
{{status.executor_id || selectedDebugExecutorId}} {{status.connected ? '在线' : '离线'}}
{{backendLabel}}
快速控制
紧急停止
清除急停
使能
去使能
全部复位
点动
{{stateLabel}}
{{status.axis_ready ? '轴就绪' : '轴未就绪'}}
{{status.allow_control ? '允许控制' : '等待允许'}}
点动调试
{{ax}}
{{getAxis(ax).power_status ? 'ON' : 'OFF'}}
位置 {{getAxis(ax).act_pos !== undefined ? getAxis(ax).act_pos.toFixed(2) : '--'}} mm / 速度 {{getAxis(ax).act_vel !== undefined ? getAxis(ax).act_vel.toFixed(2) : '--'}} mm/s
正向
停止
反向
XYZ绝对定位
X 当前位置
{{getAxisStateLabel(getAxis('X主轴'))}}
{{formatAxisMetric('X主轴', 'act_pos', 2, 'mm')}}
目标 {{formatNumberWithUnit(manXY.pos_x, 2, 'mm')}} / 偏差 {{axisTargetDelta('X主轴', manXY.pos_x)}}
Y 当前位置
{{getAxisStateLabel(getAxis('Y主轴'))}}
{{formatAxisMetric('Y主轴', 'act_pos', 2, 'mm')}}
目标 {{formatNumberWithUnit(manXY.pos_y, 2, 'mm')}} / 偏差 {{axisTargetDelta('Y主轴', manXY.pos_y)}}
Z 当前位置
{{getAxisStateLabel(getAxis('Z轴'))}}
{{formatAxisMetric('Z轴', 'act_pos', 2, 'mm')}}
目标 {{formatNumberWithUnit(manZ.pos_z, 2, 'mm')}} / 偏差 {{axisTargetDelta('Z轴', manZ.pos_z)}}
执行 XY 定位
执行 Z 定位
智能微仓
刷新
{{microStoreOperatorJobs.length}}
现场待处理
{{microStoreActiveJobs.length}}
活跃作业
{{microStoreSlotCounts.empty_slot}}
空货位
{{microStoreSlotCounts.loaded_frame}}
满框位
智能微仓入库
创建入库作业
智能微仓出库
创建出库作业
现场待处理
#{{job.id}} {{microJobTypeLabel(job.job_type)}}
{{microJobStateLabel(job.state)}}
{{microStoreOperatorJobHint(job)}}
货物 {{job.requested_cargo_id || '-'}} / 口位 {{job.entry_id || job.exit_id || '-'}}
确认装货
取货并还框
稍后还框
确认还框
恢复重试
微仓作业列表
#{{job.id}} {{microJobTypeLabel(job.job_type)}}
{{microJobStateLabel(job.state)}}
货物 {{job.requested_cargo_id || '-'}} / 步骤 {{job.current_step || '-'}}
入口 {{job.entry_id || '-'}} / 出口 {{job.exit_id || '-'}} / 任务 {{job.active_task_id || '-'}}
确认装货
确认取货
确认还框
重试
取消
作业事件流
#{{event.id}} {{event.event_type || '-'}}
作业 #{{event.job_id || '-'}}
{{event.message || '-'}}
{{event.created_at || '-'}}
监控
调试
WCS
货架利用率
{{monitorShelfStats.utilization}}%
EMPTY_SLOT {{monitorShelfStats.empty}} / EMPTY_FRAME {{monitorShelfStats.empty_frame}} / LOADED_FRAME {{monitorShelfStats.loaded}} / ERROR {{monitorShelfStats.error}}
已占用 {{locStats.occupied}} / 可用库位 {{locStats.total}},空位 {{locStats.empty}},锁定 {{locStats.locked}}
系统状态
{{stateLabel}}
{{ backendLabel }}{{ status.connected ? '在线' : '离线' }}
{{ status.axis_ready ? '轴就绪' : '轴未就绪' }}
{{status.axis_ready ? '轴状态已就绪,可执行动作' : '等待联锁与轴状态就绪'}}
任务队列
{{activeTaskCount}}
活动任务 {{activeTaskCount}},总任务 {{taskPagination.total || taskList.length}}
执行中 {{runningTaskCount}}
待执行 {{pendingTaskCount}}
失败 {{failedTaskCount}}
入库 / 出库 / 移库
{{recentInboundTasks.length}} / {{recentOutboundTasks.length}} / {{recentTransferTasks.length}}
当前任务队列中的近期作业统计
入库 {{recentInboundTasks.length}}
出库 {{recentOutboundTasks.length}}
移库 {{transferTaskCount}}
货架实时状态
左右货架按当前配置显示,格位颜色优先显示微仓实时槽位状态;点击库位可查看实时状态、货框与坐标详情
{{item.label}}
有货
空位
锁定
禁用
当前IO口
暂存区
前置仓
EMPTY_SLOT
EMPTY_FRAME
LOADED_FRAME
ERROR
左侧货架 (L)
{{layer}}层
C{{c}}
{{cellMarkerText(getCellLocation('L', layer, c))}}
右侧货架 (R)
{{layer}}层
C{{c}}
{{cellMarkerText(getCellLocation('R', layer, c))}}
{{card.name}} 实时位置
{{card.axis.act_pos !== undefined ? card.axis.act_pos.toFixed(1) : '--'}}
速度 {{card.axis.act_vel !== undefined ? card.axis.act_vel.toFixed(1) : '--'}} mm/s / 力矩 {{card.axis.act_tor !== undefined ? card.axis.act_tor.toFixed(1) : '--'}} %
主从误差
{{gantryPlcError(card.gantry_group).toFixed(3)}} mm
控制状态
{{stateLabel}}
{{status.axis_ready && status.allow_control ? '允许控制,轴状态就绪' : '等待联锁与控制允许'}}
{{getAxisStateLabel(row.axis)}}
{{row.axis.power_status ? 'ON' : 'OFF'}}
{{row.axis.act_pos !== undefined ? row.axis.act_pos.toFixed(2) : '--'}}
{{row.axis.act_vel !== undefined ? row.axis.act_vel.toFixed(2) : '--'}}
{{row.axis.act_tor !== undefined ? row.axis.act_tor.toFixed(1) : '--'}}
{{row.axis.error_stop ? '报警' : '正常'}}
库位详情
{{selectedCellDisplayLabel(selectedCell)}}
{{selectedCell.location_id}}
{{selectedCell.side==='L' ? '左' : '右'}} / {{selectedCell.layer}}层 / {{selectedCell.col}}列
{{locationDisplayStatusLabel(selectedCell)}}
{{microSlotStatusLabel(microSlotForLocation(selectedCell)?.slot_status)}}
{{locationStatusLabel(selectedCell.status)}}
{{locationStatusLabel(selectedCell.status)}}
{{locationStatusLabel(selectedCell.status)}}
{{frontStorageSlotForLocation(selectedCell).slot_code}}
{{frontStorageSlotStatusLabel(frontStorageSlotForLocation(selectedCell).status)}}
{{frontStorageSlotForLocation(selectedCell).sku}}
当前 {{frontStorageSlotForLocation(selectedCell).quantity ?? 0}} / 目标 {{frontStorageSlotForLocation(selectedCell).target_qty ?? '-'}} / 上限 {{frontStorageSlotForLocation(selectedCell).max_qty ?? '-'}}
X: {{selectedCell.pos_x ?? '-'}} / Y: {{selectedCell.pos_y ?? '-'}}
{{microSlotForLocation(selectedCell)?.frame_code}}
{{microSlotForLocation(selectedCell)?.frame_id}}
{{microStoreZoneCodesForLocation(selectedCell.location_id).join(', ')}}
{{runtimeCargoIdForLocation(selectedCell)}}
{{runtimeSkuForLocation(selectedCell)}}
{{runtimeQuantityForLocation(selectedCell)}}
{{selectedCell.inbound_time||'-'}}
库位详情
出货柜实时状态
独立显示出货柜格口、订单框与取货状态
格口
{{homeShippingStats.total}}
可用订单框
{{homeShippingStats.empty_tote}}
待取货/异常
{{homeShippingStats.waiting}} / {{homeShippingStats.exception}}
{{row.layer}}层
{{cell.column}}
{{selectedHomeShippingSlot.slot_code}}
{{microFulfillmentCabinetSlotStatusLabel(selectedHomeShippingSlot.status)}}
X {{selectedHomeShippingSlot.pos_x ?? '-'}} / Y {{selectedHomeShippingSlot.pos_y ?? '-'}}
{{microFulfillmentCabinetSlotToteLabel(selectedHomeShippingSlot)}}
#{{selectedHomeShippingSlot.order_id}}
{{selectedHomeShippingSlot.door_closed ? '已关闭' : '未关闭'}}
{{selectedHomeShippingSlot.door_locked ? '已锁定' : '未锁定'}}
库存统计
{{monitorShelfStats.total||0}}
{{monitorShelfStats.source === 'micro' ? '槽位总数' : '可用库位'}}
{{monitorShelfStats.source === 'micro' ? monitorShelfStats.loaded : monitorShelfStats.occupied}}
{{monitorShelfStats.source === 'micro' ? '满框位' : '已占用'}}
{{monitorShelfStats.empty||0}}
{{monitorShelfStats.source === 'micro' ? 'EMPTY_SLOT' : '空位'}}
{{monitorShelfStats.source === 'micro' ? monitorShelfStats.empty_frame : monitorShelfStats.locked}}
{{monitorShelfStats.source === 'micro' ? 'EMPTY_FRAME' : '锁定'}}
使用率
{{monitorShelfStats.utilization}}%
当前统计按微仓实时槽位快照展示;底账库位状态仅作为兼容参考。
任务概览
{{runningTaskCount}}
执行中
{{pendingTaskCount}}
待执行
{{failedTaskCount}}
失败
入库 {{recentInboundTasks.length}}
出库 {{recentOutboundTasks.length}}
移库 {{transferTaskCount}}
智能微仓概览
{{microStoreConfig.enabled ? '已启用' : '未启用'}}
{{microStoreState.available ? '调度快照在线' : (microStoreState.message || '未加载快照')}}
刷新微仓
{{microStoreSlotCounts.empty_slot}}
EMPTY_SLOT
{{microStoreSlotCounts.empty_frame}}
EMPTY_FRAME
{{microStoreSlotCounts.loaded_frame}}
LOADED_FRAME
{{microStoreSlotCounts.error}}
ERROR
活跃作业 {{microStoreJobs.length}}
告警 {{microStoreState.alerts.length}}
锁定调度包 {{microStoreState.locked_execution_bundles.length}}
窗口记录 {{microStoreState.dispatch_window_records.length}}
窗口仲裁 {{microStoreState.dispatch_window_arbitration.length}}
窗口协调 {{microStoreState.dispatch_window_coordination.length}}
窗口会话 {{microStoreState.dispatch_window_sessions.length}}
执行请求 {{microStoreState.execution_dispatch_requests.length}}
执行适配 {{microStoreState.dispatch_adapter.length}}
派发协调 {{microStoreState.dispatch_coordinator.length}}
双工位候选 {{microStoreState.dual_side_execution_bundles.length}}
口位恢复 {{microStoreState.port_recovery_recommendations.length}}
重平衡建议 {{microStoreState.rebalance_recommendations.length}}
空框 {{microStoreFrameCounts.empty}}
满框 {{microStoreFrameCounts.loaded}}
告警、口位恢复与重平衡
系统参数中启用智能微仓后,这里会展示空框池告警、空货位阈值告警和补位建议。
当前没有微仓告警、口位恢复或重平衡建议。
{{item.code}}
{{item.message}}
{{microPortRecoveryActionLabel(item.action_type)}}
{{item.reason}}
{{microRebalanceActionLabel(item.action_type)}}
{{item.reason}}
调试执行器
{{status.executor_id || selectedDebugExecutorId}} {{status.connected ? '在线' : '离线'}}
{{backendLabel}}
{{stateLabel}}
双堆垛机业务流程一键演示
新建方案
编辑
复制
删除
刷新
{{motionDemoSelectedProfile.gantry_executor_id}}
{{motionDemoSelectedProfile.shipping_executor_id}}
{{motionDemoSelectedProfile.material_routes?.length || 0}}
{{motionDemoSelectedProfile.dwell_seconds}} 秒
{{row.source.label || row.source.location_id || '临时坐标'}}
{{row.target.label || row.target.location_id || '临时坐标'}}
自动返回原源点
已确认两台堆垛机运行区域无人、无障碍物
已确认订单框和全部物料框实物位置与方案完全一致
一键开始演示
安全取消并原位回框
继续安全恢复
确认实物已恢复并释放锁
{{motionDemoStatusLabel}}
{{motionDemo.status.message}}
{{executorId}} 演示安全范围
订单框路线
获取当前位置
获取当前位置
物料框路线
物料框 {{index+1}}
删除
当前位置
当前位置
增加物料框路线
取消
保存方案
快速控制
紧急停止
清除急停
使能
去使能
全部复位
模式控制
空闲
点动
工艺
回原
当前状态 {{stateLabel}}
轴就绪 {{status.axis_ready ? '是' : '否'}}
允许控制 {{status.allow_control ? '是' : '否'}}
{{status.executor_id || '-'}}
{{backendLabel}}
{{status.allow_control ? '允许' : (motionInterlock?.reason || '等待')}}
{{gantrySyncDiagnostics.enabled ? '已启用' : '未启用'}}
/ 验证 {{gantrySyncDiagnostics.verified ? '是' : '否'}}
{{leadshineControllerError || status.error_message || '-'}}
{{lastCommand.function || '-'}}
{{lastCommand.ok ? '成功' : '失败'}}
-
{{lastCommand.error || '-'}}
主从轴纠偏
{{pair.main_pos.toFixed(3)}} mm
{{pair.slave_pos.toFixed(3)}} mm
{{gantryPlcError(pair.axis_group).toFixed(3)}} mm
{{pair.diff.toFixed(3)}} mm
{{gantryAlarm(pair.axis_group) ? '预警' : '正常'}}
{{gantryTrip(pair.axis_group) ? '停机' : '正常'}}
{{gantryPhaseErrorId(pair.axis_group) || 0}}
{{pair.main_vel.toFixed(2)}} / {{pair.slave_vel.toFixed(2)}} mm/s
同步支持 {{gantryCorrection.supported ? '已确认' : '未确认'}}
卡侧龙门同步 {{gantryCorrection.enabled ? '已恢复' : '未恢复'}}
配置请求 {{gantrySyncRequested ? '启用' : '关闭'}}
X轴0位对齐
Y轴0位对齐
XY零位对齐
{{gantryCorrection.enabled ? '取消龙门同步' : '恢复龙门同步'}}
机械重复定位精度测试(第一版)
参考点(每轮先移动到这里)
使用当前位置作为参考点
目标点(采样点)
开始测试
当前动作到位后停止
导出CSV
{{repeatStatusLabel}}
{{repeatTest.status.message}}
{{item.max_abs.toFixed(4)}}
{{item.label}}最大绝对误差 mm
{{repeatTest.status.stats.sample_count || 0}}
采样次数
测试记录
测试结束后自动保存为一条记录,可查看明细或导出CSV。
刷新记录
{{repeatModeLabel(row.mode)}}
{{repeatStatusText(row.status)}}
{{row.pass_result ? '合格' : '不合格'}}
--
查看
导出
{{repeatRecordDetail.data.id}}
{{repeatModeLabel(repeatRecordDetail.data.mode)}}
{{repeatStatusText(repeatRecordDetail.data.status)}}
{{repeatRecordDetail.data.pass_result ? '合格' : '不合格'}}
--
{{repeatRecordDetail.data.cycles}}
{{repeatRecordDetail.data.sample_count}}
{{repeatRecordDetail.data.tolerance}} mm
{{repeatRecordDetail.data.session_id}}
{{repeatRecordDetail.data.started_at}}
{{repeatRecordDetail.data.finished_at}}
{{repeatRecordDetail.data.message}}
{{item.max_abs.toFixed(4)}}
{{item.label}}最大绝对误差 mm
堆垛机简易取货 / 放货测试
{{manualStackerSelectedTarget.target_label}} {{manualStackerSelectedTarget.code}}
{{manualStackerSelectedTarget.parent_code}}
{{manualStackerSelectedTarget.status}}(仅展示,不参与过滤)
{{manualStackerSelectedTarget.side}} / {{manualStackerSelectedTarget.pos_z}}
X {{manualStackerSelectedTarget.pos_x}} / Y {{manualStackerSelectedTarget.pick_y}}
X {{manualStackerSelectedTarget.pos_x}} / Y {{manualStackerSelectedTarget.place_y}}
已确认巷道、货叉和目标周边无人、无障碍物
已人工核对货叉与目标实物,确认可忽略系统库存、空/有货和格口占用状态
单独取货
单独放货
确认货叉为空并释放测试锁
刷新目标
{{manualStackerStatusLabel}}
执行器测试锁已保持
货物可能在货叉上
{{manualStackerTest.status.message}}
堆垛机货位/格口取放测试
{{$index + 1}}
X {{row.pos_x}} / 取货Y {{row.pick_y}} / 放货Y {{row.place_y}} / Z {{row.pos_z}}
{{row.coord_locked ? '人工锁定' : '货架生成'}}
上移
下移
移除
已确认巷道、货叉和所选货位/格口周边无人、无障碍物
已确认每个目标均为取货后立即原位放回,测试不修改库存账
开始取放测试
当前目标原位放回后停止
刷新货位/格口
{{stackerTestStatusLabel}}
货物可能在货叉上
{{stackerTest.status.message}}
{{stackerTest.status.executor_id || selectedDebugExecutorId || '-'}}
{{stackerTest.status.current_cycle || 0}} / {{stackerTest.status.total_cycles || stackerTest.form.cycles}}
{{stackerTest.status.completed_locations || 0}} / {{stackerTest.status.total_locations || stackerTestPlannedCount}}
{{stackerTest.status.current_location?.code || '-'}}
{{stackerTestActionLabel(row.action)}}
五轴单轴调试
{{ax}}
{{getAxis(ax).act_pos !== undefined ? getAxis(ax).act_pos.toFixed(2) : '--'}} mm
{{getAxis(ax).act_vel !== undefined ? getAxis(ax).act_vel.toFixed(2) : '--'}} mm/s
{{getAxis(ax).power_status ? 'ON' : 'OFF'}}
点动速度 (mm/s)
正向
停止
反向
Z轴绝对定位
Z 当前位置
{{formatAxisMetric('Z轴', 'act_pos', 2, 'mm')}}
速度 {{formatAxisMetric('Z轴', 'act_vel', 2, 'mm/s')}}
Z 目标位置
{{formatNumberWithUnit(manZ.pos_z, 2, 'mm')}}
偏差 {{axisTargetDelta('Z轴', manZ.pos_z)}}
Z 轴状态
{{getAxisStateLabel(getAxis('Z轴'))}}
伺服 {{getAxis('Z轴').power_status ? 'ON' : 'OFF'}}
定位状态
{{status.move_busy ? '定位中' : '待命'}}
控制 {{status.allow_control ? '允许' : '未就绪'}}
执行 Z 轴绝对定位
双 X 同步调试
{{getAxis('X主轴').act_pos !== undefined ? getAxis('X主轴').act_pos.toFixed(2) : '--'}} mm
{{getAxis('X主轴').act_vel !== undefined ? getAxis('X主轴').act_vel.toFixed(2) : '--'}} mm/s
{{getAxis('X主轴').act_tor !== undefined ? getAxis('X主轴').act_tor.toFixed(1) : '--'}} %
正向
停止
反向
{{getAxis('X从轴').act_pos !== undefined ? getAxis('X从轴').act_pos.toFixed(2) : '--'}} mm
{{getAxis('X从轴').act_vel !== undefined ? getAxis('X从轴').act_vel.toFixed(2) : '--'}} mm/s
{{getAxis('X从轴').act_tor !== undefined ? getAxis('X从轴').act_tor.toFixed(1) : '--'}} %
双 Y 同步调试
{{getAxis('Y主轴').act_pos !== undefined ? getAxis('Y主轴').act_pos.toFixed(2) : '--'}} mm
{{getAxis('Y主轴').act_vel !== undefined ? getAxis('Y主轴').act_vel.toFixed(2) : '--'}} mm/s
{{getAxis('Y主轴').act_tor !== undefined ? getAxis('Y主轴').act_tor.toFixed(1) : '--'}} %
正向
停止
反向
{{getAxis('Y从轴').act_pos !== undefined ? getAxis('Y从轴').act_pos.toFixed(2) : '--'}} mm
{{getAxis('Y从轴').act_vel !== undefined ? getAxis('Y从轴').act_vel.toFixed(2) : '--'}} mm/s
{{getAxis('Y从轴').act_tor !== undefined ? getAxis('Y从轴').act_tor.toFixed(1) : '--'}} %
手动 XY 定位
执行移动
手动取放货
Z 当前位置
{{formatAxisMetric('Z轴', 'act_pos', 2, 'mm')}}
目标 {{formatNumberWithUnit(manPickPlace.pos_z, 2, 'mm')}}
Z 偏差
{{axisTargetDelta('Z轴', manPickPlace.pos_z)}}
速度 {{formatAxisMetric('Z轴', 'act_vel', 2, 'mm/s')}}
Y 当前位置
{{formatAxisMetric('Y主轴', 'act_pos', 2, 'mm')}}
速度 {{formatAxisMetric('Y主轴', 'act_vel', 2, 'mm/s')}}
动作状态
{{status.pick_busy || status.place_busy ? '执行中' : '待命'}}
Y 偏移 {{formatNumberWithUnit(manPickPlace.y_offset, 2, 'mm')}}
取货
放货
AUBO-C5 机械臂基础调试
动作前要求仿真开启
仅仿真调试
允许实机调试
保存机械臂配置
{{robotArmStatus.backend || robotArmConfig.backend || '-'}}
{{robotArmStatus.robot_model || robotArmConfig.model || '-'}}
{{robotArmStatus.connected ? '已连接' : '未连接'}}
{{robotArmStatus.logged_in ? '已登录' : '未登录'}}
{{robotArmStatus.simulation_enabled ? '开启' : '关闭'}}
{{robotArmConfig.allow_real_motion_debug ? '允许' : '关闭'}}
{{robotArmStatus.steady ? 'steady' : 'moving'}}
{{robotArmSoftwareInterlock.allowed ? '允许' : '阻止'}}
{{robotArmSoftwareInterlock.block_reason || '-'}}
{{formatRobotArmTcpMmDegrees(robotArmStatus.tcp_pose)}}
{{formatRobotArmJointDegrees(robotArmStatus.joint_positions)}}
{{robotArmLastCommand.name || '-'}}
{{robotArmStatus.last_error || '-'}}
{{item.ok ? 'OK' : (item.severity === 'warn' ? 'WARN' : 'BLOCK')}}
{{item.label}}
- {{item.detail}}
刷新状态
连接
断开
开启仿真
关闭仿真
上电 poweron
启动 startup
下电 poweroff
离线自检
采当前关节/TCP 为目标
关节步长 °
直线步长 mm
姿态步长 °
- 小步
+ 小步
执行关节运动 move_joint
TCP 直线运动
- 小步
+ 小步
我已人工确认机械臂调试动作风险
执行直线运动 move_line
步骤 1:条码校验
校验条码
{{inbound.validateResult.sku||'-'}}
{{inbound.validateResult.name||'-'}}
{{inbound.validateResult.category||'-'}}
{{inbound.validateResult.stock_qty||0}}
步骤 2:库位与入库参数
{{inbound.validateResult.auto_location}}
系统暂无建议位置,请手动选择
可用暂存位 {{availableStagingCount}} / {{stagingLocations.length}}; 勾选后会先生成高优先级入库到暂存区,完成后自动生成低优先级移库到最终库位。
已在库,仍强制入库
{{inbound.useStaging ? '执行快速暂存入库' : '执行入库'}}
最近入库任务
#{{row.id}}
{{row.cargo_id}}
{{row.target_location||'-'}}
{{taskStatusLabel(row.status)}}
{{row.execution_duration_label || '-'}}
步骤 1:查找货物
查找货物
{{outbound.cargoInfo.name||'-'}}
{{outbound.cargoInfo.sku||'-'}}
{{outbound.cargoInfo.location||'-'}}
{{outbound.cargoInfo.quantity||0}}
步骤 2:出库参数
全部出库
部分领用
{{outbound.mode==='full' ? '执行全部出库' : '执行部分领用'}}
最近出库任务
#{{row.id}}
{{row.cargo_id}}
{{row.source_location||'-'}}
{{taskStatusLabel(row.status)}}
{{row.execution_duration_label || '-'}}
步骤 1:查找在库货物
查找货物
{{transfer.cargoInfo.name||'-'}}
{{transfer.cargoInfo.sku||'-'}}
{{transfer.cargoInfo.location_code||transfer.cargoInfo.location||'-'}}
{{transfer.cargoInfo.quantity||0}}
步骤 2:选择目标库位
创建移库任务
最近移库任务
#{{row.id}}
{{row.cargo_id}}
{{row.source_location||'-'}} → {{row.target_location||'-'}}
{{taskStatusLabel(row.status)}}
{{row.execution_duration_label || '-'}}
智能微仓调度概览
{{microStoreConfig.enabled ? '智能微仓已启用' : '智能微仓未启用'}}
{{microStoreState.available ? '快照已加载' : (microStoreState.message || '等待加载')}}
刷新快照
处理超时
{{microStoreOperatorJobs.length}}
待人工处理
{{microStoreActiveJobs.length}}
活跃作业
{{microStoreSlotCounts.empty_slot}}
真实空货位
{{microStoreSlotCounts.empty_frame}}
空框位
{{microStoreSlotCounts.loaded_frame}}
满框位
{{microStoreState.alerts.length}}
异常 / 告警
口位恢复 {{microStoreState.port_recovery_recommendations.length}}
重平衡 {{microStoreState.rebalance_recommendations.length}}
空框 {{microStoreFrameCounts.empty}}
满框 {{microStoreFrameCounts.loaded}}
高级诊断 {{microStoreDiagnosticCount}}
分拣打包工位
工位 {{microFulfillment.packing_stations.length}}
订单 {{microFulfillment.orders.length}}
待取货 {{microFulfillmentWaitingPickupCount}}
命令 {{microFulfillment.commands.length}}
异常 {{microFulfillment.exceptions.length}}
打开工控机工作台
刷新履约
{{microFulfillmentWorkbenchOrder?.order_no || '暂无待打包订单'}}
{{microFulfillmentOrderStatusLabel(microFulfillmentWorkbenchOrder.status)}}
工位 {{microFulfillment.workbench.station?.station_code || '-'}} / {{microFulfillmentPackingStationStatusLabel(microFulfillment.workbench.station?.status)}} / 货位 {{microFulfillment.workbench.station?.location_id || '-'}}
订单框
{{microFulfillmentOrderToteLabel(microFulfillmentWorkbenchOrder)}}
出货格口
{{microFulfillmentCabinetSlotLabel(microFulfillmentWorkbenchOrder)}}
SKU / 数量
{{microFulfillmentWorkbenchOrder.total_sku_count || 0}} / {{microFulfillmentWorkbenchOrder.total_quantity || 0}}
打包命令
{{microFulfillmentDeviceCommandStatusLabel(microFulfillment.workbench.manual_pack_command?.status)}}
货位显示网关
{{microFulfillment.workbench.display_gateway?.gateway_id || '未启用'}} / {{microFulfillment.workbench.display_gateway?.healthy ? '正常' : (microFulfillment.workbench.display_gateway?.required ? '异常' : '可选')}}
{{row.picked_qty || 0}} / {{row.planned_qty || 0}}
{{microFulfillmentPickAreaSlotLabel(row)}}
{{microFulfillment.workbench.display_lines.find(item => item.pick_line_id === row.id)?.display_address || '-'}}
{{microFulfillmentMaterialFrameLabel(row)}}
{{microFulfillmentPickLineStatusLabel(row.status)}}
刷新
开始打包
确认打包完成
上报异常
{{microFulfillment.orderPreflight.resources?.available_order_totes || 0}} / {{microFulfillment.orderPreflight.resources?.required_order_totes || 1}}
{{microFulfillment.orderPreflight.resources?.available_packing_stations || 0}} / {{microFulfillment.orderPreflight.resources?.required_packing_stations || 1}}
{{microFulfillment.orderPreflight.resources?.available_pick_area_slots || 0}} / {{microFulfillment.orderPreflight.resources?.required_pick_area_slots || 0}}
资源预检
创建人工打包订单
获取当前位置
登记打包工位
登记出货格口
{{microFulfillmentCabinetSlotToteLabel(row)}}
{{microFulfillmentCabinetSlotStatusLabel(row.status)}}
批量出货格口
新增格口
批量登记格口
删除
{{microFulfillmentOrderStatusLabel(row.status)}}
{{row.picking_mode || 'scara'}}
{{row.picked_quantity || 0}} / {{row.total_quantity || 0}}
仿真履约
继续履约
派发前置仓
同步PLC
派发出货堆垛机
重试返回待命
确认已在待命位
确认拣选
{{row.status === 'cancelling' ? '取消恢复中' : '取消异常订单'}}
开门
完成取货
智能微仓入库
创建智能微仓入库作业
智能微仓出库
创建智能微仓出库作业
作业事件流
{{microActivationSelectionSummary(microEventActivationSelection(row))}}
{{microActivationSelectionReason(microEventActivationSelection(row))}}
{{microExecutionAdapterActionSummary(microEventExecutionAdapterAction(row))}}
{{microEventExecutionAdapterAction(row).reason}}
{{microExecutionHandoffSummary(microEventExecutionHandoff(row))}}
{{microEventExecutionHandoff(row).reason}}
{{microDispatchHandoffSummary(microEventDispatchHandoff(row))}}
{{microEventDispatchHandoff(row).reason}}
-
双工位调试
{{item.label}}
重置
检查证据
{{microStoreDualDebug.running ? '执行中' : (microStoreDualDebug.phase === 'error' ? '异常' : '就绪')}}
场景 {{microStoreDualDebugCurrentScenarioLabel}}
作业 {{microStoreDualDebug.created_job_ids.length}}
货物 {{microStoreDualDebug.created_cargo_ids.length}}
口位与参数
自动确认装货
自动确认取货
取货后还框
场景输入
双侧装货确认后,观察左右入口是否分别创建并执行补框流程。
该场景固定按取货后还框验证双侧出口空框回收。
左侧入库
右侧入库
左侧出库
右侧出库
补框侧:{{microStoreDualDebugSideLabel(microStoreDualDebugRefillSide)}}入口
开始场景
确认装货
确认取货
确认还框
最近异常
{{microStoreDualDebug.last_error}}
#{{job.id}} {{microJobTypeLabel(job.job_type)}}
{{microJobStateLabel(job.state)}}
货物 {{job.requested_cargo_id || '-'}} / 口位 {{job.entry_id || job.exit_id || '-'}} / 任务 {{job.active_task_id || '-'}}
{{job.current_step || '-'}}
{{item.at}}
{{item.message}}
{{JSON.stringify(item.data)}}
现场待处理
{{microJobStateLabel(job.state)}}
#{{job.id}} {{microJobTypeLabel(job.job_type)}}
{{microStoreOperatorJobHint(job)}}
货物:{{job.requested_cargo_id || '-'}} / 口位:{{job.entry_id || job.exit_id || '-'}} / 任务:{{job.active_task_id || '-'}}
确认装货
确认取货
确认还框
恢复重试
调度建议与恢复
执行口位恢复
执行重平衡
执行适配入口
锁定 {{microStoreState.locked_execution_bundles.length}}
双工位 {{microStoreState.dual_side_execution_bundles.length}}
口位恢复 {{microStoreState.port_recovery_recommendations.length}}
重平衡 {{microStoreState.rebalance_recommendations.length}}
诊断 {{microStoreDiagnosticCount}}
前置派发动作 {{index + 1}} · {{microPreDispatchActionStatusLabel(item.action_status)}}
{{item.summary || '--'}}
主侧:{{microActivationSelectionSideLabel(item.owner_side)}} #{{item.owner_job_id || '--'}}
({{microJobStateLabel(item.owner_job_state)}})
/ 搭档:{{microActivationSelectionSideLabel(item.partner_side)}} #{{item.partner_job_id || '--'}}
({{microJobStateLabel(item.partner_job_state)}})
动作目标:{{item.action_job_id ? `#${item.action_job_id}` : '--'}}
/ {{microActivationSelectionSideLabel(item.action_side)}}
({{microJobStateLabel(item.action_job_state)}})
处理器:{{microPreDispatchActionHandlerLabel(item.action_handler)}} / 目标管道:{{microPreDispatchActionPipelineLabel(item.target_pipeline)}}
执行交接:{{microPreDispatchActionMotionHandoffLabel(item.motion_handoff)}} / {{item.ready_for_dispatch ? '可立即进入前置派发' : '当前仅保留等待/观察动作'}} / {{item.keeps_locked_bundle ? '保持当前锁定包' : '释放锁定包'}}
{{item.reason}}
观察作业:{{item.watch_job_ids.map((value) => `#${value}`).join(' / ')}}
阻塞:{{item.blocked_by_bundle_key || '--'}} / #{{item.blocked_by_job_id || '--'}}
回退:{{item.fallback_action}}
前置适配调用 {{index + 1}} · {{microPreDispatchAdapterCallStatusLabel(item.call_status)}}
{{item.summary || '--'}}
主侧:{{microActivationSelectionSideLabel(item.owner_side)}} #{{item.owner_job_id || '--'}}
({{microJobStateLabel(item.owner_job_state)}})
/ 搭档:{{microActivationSelectionSideLabel(item.partner_side)}} #{{item.partner_job_id || '--'}}
({{microJobStateLabel(item.partner_job_state)}})
调用目标:{{item.call_job_id ? `#${item.call_job_id}` : '--'}}
/ {{microActivationSelectionSideLabel(item.call_side)}}
({{microJobStateLabel(item.call_job_state)}})
处理器:{{microPreDispatchAdapterCallHandlerLabel(item.call_handler)}} / 执行入口:{{microPreDispatchAdapterExecutionEntryLabel(item.execution_entry)}}
范围:{{microPreDispatchAdapterScopeLabel(item.adapter_scope)}} / {{item.adapter_ready ? '可立即调用' : '当前仅保留适配语义'}} / {{item.invokes_motion_stage ? '后续会进入执行流水线' : '当前不会进入执行层'}}
{{item.reason}}
观察作业:{{item.watch_job_ids.map((value) => `#${value}`).join(' / ')}}
阻塞:{{item.blocked_by_bundle_key || '--'}} / #{{item.blocked_by_job_id || '--'}}
回退:{{item.fallback_action}}
执行适配动作 {{index + 1}} · {{microExecutionAdapterActionStatusLabel(item.runtime_status)}}
{{item.summary || '--'}}
主侧:{{microActivationSelectionSideLabel(item.owner_side)}} #{{item.owner_job_id || '--'}}
({{microJobStateLabel(item.owner_job_state)}})
/ 搭档:{{microActivationSelectionSideLabel(item.partner_side)}} #{{item.partner_job_id || '--'}}
({{microJobStateLabel(item.partner_job_state)}})
动作目标:{{item.runtime_job_id ? `#${item.runtime_job_id}` : '--'}}
/ {{microActivationSelectionSideLabel(item.runtime_side)}}
({{microJobStateLabel(item.runtime_job_state)}})
处理器:{{microExecutionAdapterActionHandlerLabel(item.runtime_handler)}} / 入口:{{microPreDispatchAdapterExecutionEntryLabel(item.runtime_entry)}}
范围:{{microExecutionAdapterActionScopeLabel(item.runtime_scope)}} / {{item.runtime_ready ? '可直接交给执行前适配器' : '当前仅保留执行前语义'}} / {{item.enters_task_pipeline ? '后续会进入既有任务流水线' : '当前不会进入执行流水线'}}
{{item.reason}}
观察作业:{{item.watch_job_ids.map((value) => `#${value}`).join(' / ')}}
阻塞:{{item.blocked_by_bundle_key || '--'}} / #{{item.blocked_by_job_id || '--'}}
回退:{{item.fallback_action}}
执行前桥接输入 {{index + 1}} · {{microExecutionPreBridgeInputStatusLabel(item.input_status)}}
{{item.summary || '--'}}
主侧:{{microActivationSelectionSideLabel(item.owner_side)}} #{{item.owner_job_id || '--'}}
({{microJobStateLabel(item.owner_job_state)}})
/ 搭档:{{microActivationSelectionSideLabel(item.partner_side)}} #{{item.partner_job_id || '--'}}
({{microJobStateLabel(item.partner_job_state)}})
交接作业:{{item.job_id ? `#${item.job_id}` : '--'}}
/ {{microActivationSelectionSideLabel(item.job_side)}}
({{microJobStateLabel(item.job_state)}})
处理器:{{microExecutionAdapterActionHandlerLabel(item.input_handler)}} / 入口:{{microPreDispatchAdapterExecutionEntryLabel(item.input_entry)}}
范围:{{microExecutionAdapterActionScopeLabel(item.input_scope)}} / 桥接:{{microExecutionDispatchBridgeHandlerLabel(item.bridge_handler)}} / {{item.ready_for_bridge ? '可直接作为桥接器输入' : '当前仅记录交接上下文'}}
模式:{{microExecutionCommandHandoffModeLabel(item.handoff_mode)}} / {{item.keeps_locked_bundle ? '保持当前锁定包' : '释放锁定包'}} / {{item.enters_task_pipeline ? '已进入既有任务流水线' : '尚未进入任务流水线'}}
{{item.reason}}
观察作业:{{item.watch_job_ids.map((value) => `#${value}`).join(' / ')}}
回退:{{item.fallback_action}}
执行命令 {{index + 1}} · {{microExecutionCommandStatusLabel(item.command_status)}}
{{item.summary || '--'}}
主侧:{{microActivationSelectionSideLabel(item.owner_side)}} #{{item.owner_job_id || '--'}}
({{microJobStateLabel(item.owner_job_state)}})
/ 搭档:{{microActivationSelectionSideLabel(item.partner_side)}} #{{item.partner_job_id || '--'}}
({{microJobStateLabel(item.partner_job_state)}})
命令目标:{{item.command_job_id ? `#${item.command_job_id}` : '--'}}
/ {{microActivationSelectionSideLabel(item.command_side)}}
({{microJobStateLabel(item.command_job_state)}})
命令:{{microExecutionCommandActionLabel(item.command_action)}} / 作用域:{{microExecutionCommandScopeLabel(item.execution_scope)}}
交接:{{microExecutionCommandHandoffModeLabel(item.handoff_mode)}} / {{item.consumes_dispatch_slot ? '占用本轮派发窗口' : '不占用新的派发窗口'}} / {{item.keeps_locked_bundle ? '保持当前锁定包' : '释放锁定包'}}
{{item.reason}}
观察作业:{{item.watch_job_ids.map((value) => `#${value}`).join(' / ')}}
阻塞:{{item.blocked_by_bundle_key || '--'}} / #{{item.blocked_by_job_id || '--'}}
回退:{{item.fallback_action}}
执行请求 {{index + 1}} · {{microExecutionDispatchRequestStatusLabel(item.request_status)}}
{{item.summary || '--'}}
主侧:{{microActivationSelectionSideLabel(item.owner_side)}} #{{item.owner_job_id || '--'}}
({{microJobStateLabel(item.owner_job_state)}})
/ 搭档:{{microActivationSelectionSideLabel(item.partner_side)}} #{{item.partner_job_id || '--'}}
({{microJobStateLabel(item.partner_job_state)}})
请求目标:{{item.request_job_id ? `#${item.request_job_id}` : '--'}}
/ {{microActivationSelectionSideLabel(item.request_side)}}
({{microJobStateLabel(item.request_job_state)}})
请求命令:{{microExecutionDispatchRequestCommandLabel(item.request_command)}}
/ 释放策略:{{microWindowSessionReleaseStrategyLabel(item.release_strategy)}}
桥接:{{microExecutionDispatchBridgeScopeLabel(item.bridge_scope)}} / {{microExecutionDispatchBridgeHandlerLabel(item.bridge_handler)}} / {{item.bridge_ready ? '可直接交给前置派发器' : '当前只保留桥接语义'}}
{{item.reason}}
观察作业:{{item.watch_job_ids.map((value) => `#${value}`).join(' / ')}}
阻塞:{{item.blocked_by_bundle_key || '--'}} / #{{item.blocked_by_job_id || '--'}}
回退:{{item.fallback_action}}
执行适配 {{index + 1}} · {{microDispatchAdapterStatusLabel(item.adapter_status)}}
{{item.summary || '--'}}
持窗方:{{microActivationSelectionSideLabel(item.owner_side)}} #{{item.owner_job_id || '--'}}
({{microJobStateLabel(item.owner_job_state)}})
/ 搭档方:{{microActivationSelectionSideLabel(item.partner_side)}} #{{item.partner_job_id || '--'}}
({{microJobStateLabel(item.partner_job_state)}})
执行目标:{{item.target_job_id ? `#${item.target_job_id}` : '--'}}
/ {{microActivationSelectionSideLabel(item.target_side)}}
({{microJobStateLabel(item.target_job_state)}})
命令:{{microDispatchAdapterCommandLabel(item.adapter_command)}}
/ 释放策略:{{microWindowSessionReleaseStrategyLabel(item.release_strategy)}}
{{item.reason}}
观察作业:{{item.watch_job_ids.map((value) => `#${value}`).join(' / ')}}
阻塞:{{item.blocked_by_bundle_key || '--'}} / #{{item.blocked_by_job_id || '--'}}
回退:{{item.fallback_action}}
派发协调 {{index + 1}} · {{microDispatchCoordinatorStatusLabel(item.coordinator_status)}}
· 优先级 {{item.claim_rank}}
{{item.summary || '--'}}
持窗方:{{microActivationSelectionSideLabel(item.owner_side)}} #{{item.owner_job_id || '--'}}
({{microJobStateLabel(item.owner_job_state)}})
派发目标:{{item.dispatch_job_id ? `#${item.dispatch_job_id}` : '--'}}
/ {{microActivationSelectionSideLabel(item.dispatch_side)}}
({{microJobStateLabel(item.dispatch_job_state)}})
动作:{{microDispatchCoordinatorActionLabel(item.coordinator_action)}} / {{item.ready_to_dispatch ? '可立即派发' : '当前不派发'}}
{{item.reason}}
观察作业:{{item.watch_job_ids.map((value) => `#${value}`).join(' / ')}}
阻塞:{{item.blocked_by_bundle_key || '--'}} / #{{item.blocked_by_job_id || '--'}}
回退:{{item.fallback_action}}
窗口协调 {{index + 1}} · {{microWindowCoordinationStatusLabel(item.coordination_status)}}
· 优先级 {{item.claim_rank}}
{{item.summary || '--'}}
持有方:{{microActivationSelectionSideLabel(item.owner_side)}} #{{item.owner_job_id || '--'}}
({{microJobStateLabel(item.owner_job_state)}})
/ 搭档方:{{microActivationSelectionSideLabel(item.partner_side)}} #{{item.partner_job_id || '--'}}
({{microJobStateLabel(item.partner_job_state)}})
动作:{{microWindowCoordinationActionLabel(item.coordination_action)}}
/ 激活目标 #{{item.activation_job_id}}
{{item.reason}}
阻塞:{{item.blocked_by_bundle_key || '--'}} / #{{item.blocked_by_job_id || '--'}}
说明:当前需要在窗口释放后重新校验或重规划。
回退:{{item.fallback_action}}
窗口会话 {{index + 1}} · {{microWindowSessionStatusLabel(item.session_status)}}
· 优先级 {{item.claim_rank}}
{{item.summary || '--'}}
持窗方:{{microActivationSelectionSideLabel(item.owner_side)}} #{{item.owner_job_id || '--'}}
({{microJobStateLabel(item.owner_job_state)}})
/ 下一跳:#{{item.activation_job_id || '--'}}
/ {{microActivationSelectionSideLabel(item.partner_side)}} #{{item.partner_job_id || '--'}}
({{microJobStateLabel(item.partner_job_state)}})
释放策略:{{microWindowSessionReleaseStrategyLabel(item.release_strategy)}}
{{item.reason}}
观察作业:{{item.release_watch_job_ids.map((value) => `#${value}`).join(' / ')}}
阻塞:{{item.blocked_by_bundle_key || '--'}} / #{{item.blocked_by_job_id || '--'}}
回退:{{item.fallback_action}}
窗口记录 {{index + 1}} · {{microWindowRecordStatusLabel(item.record_status)}}
· 优先级 {{item.claim_rank}}
{{item.summary || '--'}}
持有方:{{microActivationSelectionSideLabel(item.owner_side)}} #{{item.owner_job_id || '--'}} / 搭档方:{{microActivationSelectionSideLabel(item.partner_side)}} #{{item.partner_job_id || '--'}}
动作:{{microWindowRecordNextActionLabel(item.next_action)}} / 申请:{{item.grant_condition || '--'}}
释放:{{item.release_condition}}
回退:{{item.fallback_action}}
窗口仲裁 {{index + 1}} · {{microWindowArbitrationStatusLabel(item.arbitration_status)}}
· 优先级 {{item.arbitration_rank}}
{{item.summary || '--'}}
{{item.reason}}
回退:{{item.fallback_action}}
锁定调度包 {{index + 1}} · {{microLockedBundlePhaseLabel(bundle.phase)}} · {{Number(bundle.bundle_score || 0).toFixed(1)}}
{{microActivationSelectionSourceLabel(bundle.source)}} / {{bundle.reason || '等待对侧续接'}}
左侧:{{microLockedBundleTaskSummary(bundle.left)}}
右侧:{{microLockedBundleTaskSummary(bundle.right)}}
执行预案:{{microLockedBundleExecutionModeLabel(bundle.execution_mode)}} / {{bundle.execution_summary}}
时序草案:{{microLockedBundleExecutionDraftSummary(bundle)}}
派发草案:{{microLockedBundleDispatchStateLabel(bundle.dispatch_window_state)}} / {{bundle.dispatch_window_ready ? '可预占下一次激活窗口' : '当前仅观察不预占'}} / {{bundle.dispatch_window_summary}}
释放条件 {{hintIndex + 1}}. {{microLockedBundleDispatchHintSummary(hint)}}
窗口契约:{{microLockedBundleDispatchContractSummary(bundle.dispatch_window_contract)}}
{{stepIndex + 1}}. {{microLockedBundleExecutionStepSummary(step)}}
主调度双工位候选 {{index + 1}} · {{Number(bundle.bundle_score || 0).toFixed(1)}}
{{bundle.reason}}
左侧:{{bundle.left ? `${microDualSideTaskKindLabel(bundle.left.kind)} / ${microDualSideTaskActionLabel(bundle.left)} / ${(bundle.left.cargo_id || bundle.left.entry_id || bundle.left.exit_id || '-')}` : '无'}}
右侧:{{bundle.right ? `${microDualSideTaskKindLabel(bundle.right.kind)} / ${microDualSideTaskActionLabel(bundle.right)} / ${(bundle.right.cargo_id || bundle.right.entry_id || bundle.right.exit_id || '-')}` : '无'}}
{{microPortRecoveryActionLabel(item.action_type)}}
{{item.reason}}
双工位候选 {{index + 1}}
{{bundle.reason}}
{{microRebalanceActionLabel(item.action_type)}}
{{item.reason}}
当前没有双工位候选、口位恢复、重平衡建议或高级诊断信息。
空框初始化 / 恢复
注册货框用于初始化、账实恢复,以及把已离线的同框号重新上架到现有货位。
注册货框
手工下架货框
当你把货架上的货框直接拿下时,在这里同步下架。若该框当前带货,会同时移除该货位上的在架库存记录。
{{microFrameStatusLabel(selectedMicroStoreManualFrame.status)}}
{{microStoreLocationLabel(selectedMicroStoreManualFrame.location_id)}}
{{selectedMicroStoreManualFrame.cargo_id || '-'}}
{{selectedMicroStoreManualFrame.sku || '-'}}
我已确认该操作会同步下架该货框上的在架库存
手工下架货框
微仓作业列表
{{microJobTypeLabel(row.job_type)}}
{{microJobStateLabel(row.state)}}
{{microJobWaitingReason(row)}}
{{row.requested_cargo_id || '-'}}
确认装货
确认取货
确认还框
重试
取消
选中作业
#{{selectedMicroStoreJob.id}}
{{microJobTypeLabel(selectedMicroStoreJob.job_type)}}
{{microJobStateLabel(selectedMicroStoreJob.state)}}
{{microJobWaitingReason(selectedMicroStoreJob)}}
{{microStoreInboundModeLabel(selectedMicroStoreJob.inbound_mode || selectedMicroStoreJob.context?.inbound_mode || 'single')}}
{{selectedMicroStoreJob.entry_id || '-'}}
{{selectedMicroStoreJob.current_step || '-'}}
{{selectedMicroStoreJob.requested_cargo_id || '-'}}
{{selectedMicroStoreJob.target_location_id || '-'}}
{{selectedMicroStoreJob.active_task_id || '-'}}
已暂存,等待后续正式落位
{{selectedMicroStoreJob.context.queue_reason}}
{{microActivationSelectionSummary(microJobActivationSelection(selectedMicroStoreJob))}}
{{microActivationSelectionReason(microJobActivationSelection(selectedMicroStoreJob))}}
{{microWindowRecordSummary(microJobWindowRecord(selectedMicroStoreJob))}}
释放:{{microJobWindowRecord(selectedMicroStoreJob).release_condition}}
{{microWindowSessionSummary(microJobWindowSession(selectedMicroStoreJob))}}
策略:{{microWindowSessionReleaseStrategyLabel(microJobWindowSession(selectedMicroStoreJob).release_strategy)}}
{{microExecutionAdapterActionSummary(microJobExecutionAdapterAction(selectedMicroStoreJob))}}
范围:{{microExecutionAdapterActionScopeLabel(microJobExecutionAdapterAction(selectedMicroStoreJob).runtime_scope)}}
{{microExecutionHandoffSummary(microJobExecutionHandoff(selectedMicroStoreJob))}}
范围:{{microExecutionAdapterActionScopeLabel(microJobExecutionHandoff(selectedMicroStoreJob).handoff_scope)}}
{{microDispatchHandoffSummary(microJobDispatchHandoff(selectedMicroStoreJob))}}
策略:{{microWindowSessionReleaseStrategyLabel(microJobDispatchHandoff(selectedMicroStoreJob).release_strategy)}}
{{selectedMicroStoreJob.last_error || '-'}}
确认已装货
确认已取货
确认已还空框
恢复重试
取消作业
库存查询
搜索
重置
{{row.quantity}}
货架概览
左侧货架 (L)
{{layer}}层
右侧货架 (R)
{{layer}}层
{{selectedCellDisplayLabel(selectedCell)}}
{{selectedCell.location_id}}
{{locationDisplayStatusLabel(selectedCell)}}
{{locationStatusLabel(selectedCell.status)}}
{{locationStatusLabel(selectedCell.status)}}
{{selectedCell.cargo_id}}
{{selectedCell.quantity}}
任务队列
{{taskRefreshing ? '自动刷新中' : '自动刷新'}}
selectTask(row.id)">
#{{row.id}}
{{taskTypeLabel(row.task_type)}}
{{taskStatusLabel(row.status)}}
微仓 #{{taskMicroStoreJob(row).id}}
--
{{row.source_location||'--'}} → {{row.target_location||'--'}}
{{row.started_at||'-'}}
{{row.completed_at||'-'}}
{{row.execution_duration_label || '-'}}
取消作业
取消任务
异常收口
--
任务详情 #{{selectedTask.id}}
{{taskTypeLabel(selectedTask.task_type)}}
{{taskStatusLabel(selectedTask.status)}}
微仓 #{{taskMicroStoreJob(selectedTask).id}} / {{microJobTypeLabel(taskMicroStoreJob(selectedTask).job_type)}} / {{microJobStateLabel(taskMicroStoreJob(selectedTask).state)}}
{{selectedTask.cargo_id}}
{{selectedTask.source_location||'-'}}
{{selectedTask.target_location||'-'}}
{{selectedTask.quantity||'-'}}
{{selectedTask.batch_no||'-'}}
{{selectedTask.created_at||'-'}}
{{selectedTask.started_at||'-'}}
{{selectedTask.completed_at||'-'}}
{{selectedTask.execution_duration_label||'-'}}
取消关联微仓作业
取消当前任务
工程师异常收口并解锁
执行日志
{{log.message}}
货物主数据管理
搜索
重置
新增货物
{{row.cargo_id||row.barcode}}
{{row.category||'-'}}
编辑
删除
货架列表
新增货架
{{row.executor_name || row.executor_id || '-'}}
{{row.side==='left' ? '左侧' : '右侧'}}
{{row.layers}}层 x {{row.columns}}列
{{row.is_active ? '启用' : '停用'}}
编辑
生成货位
{{row.is_active ? '停用' : '启用'}}
删除
货架区域配置
保存暂存区
已选 {{config.staging_location_ids.length}} 个
可用 {{availableStagingCount}}
占用 {{locStats.staging_occupied || 0}}
锁定 {{locStats.staging_locked || 0}}
{{pickAreaSlotForm.isNew ? '新增待拣位' : '保存待拣位'}}
取消编辑
刷新
已登记 {{microFulfillment.pick_area_slots.length}} 个
{{row.location_code || `#${row.location_id}`}}
{{row.display_address || '-'}}
{{row.shelf_code || '-'}} / {{row.executor_name || row.executor_id || '-'}}
{{microFulfillmentPickAreaSlotStatusLabel(row.status)}}
{{row.material_frame_code || (row.material_frame_id ? `#${row.material_frame_id}` : '-')}}
{{row.reserved_order_no || (row.reserved_order_id ? `订单#${row.reserved_order_id}` : '-')}}
/ 行#{{row.current_pick_line_id}}
编辑
删除
{{frontStorageSlotForm.isNew ? '新增前置仓位' : '保存前置仓位'}}
取消编辑
刷新
{{row.location_code || `#${row.location_id}`}}
{{frontStorageSlotStatusLabel(row.status)}}
{{row.frame_code || (row.frame_id ? `#${row.frame_id}` : '-')}}
{{row.quantity || 0}} / {{row.target_qty || 0}}
{{row.min_qty || 0}} / {{row.target_qty || 0}} / {{row.max_qty || 0}}
{{row.active_job_id ? `#${row.active_job_id}` : '-'}}
编辑
入库
补货
出库
确认
复位
{{selectedShelf ? `${selectedShelf.code} 货位管理` : '货位管理'}}
{{selectedShelf.name}}
{{selectedShelf.executor_name || selectedShelf.executor_id || '-'}}
{{selectedShelf.usable_count||0}}
{{selectedShelf.disabled_count||0}}
X {{selectedShelf.origin_x}} / Y {{selectedShelf.origin_y}}
列 {{selectedShelf.column_pitch}} / 层 {{selectedShelf.layer_pitch}}
{{selectedShelf.remark||'-'}}
{{row.layer}}层
{{cell.column}}
批量禁用
批量启用
已选 {{selectedShelfLocationRows.length}} 个
空闲货位可批量禁用,禁用货位可批量启用
{{row.layer}} / {{row.column}}
{{locationDisplayStatusLabel(row)}}
X {{row.pos_x}} / Y {{row.pos_y}}
锁定
坐标
登记待拣位
禁用
启用
出货柜列表
新增出货柜
{{row.executor_name || row.executor_id || '-'}}
{{row.layers}}层 x {{row.columns}}列
编辑
生成格口
初始化订单框
删除
{{selectedShippingCabinet ? `${selectedShippingCabinet.code} 格口管理` : '出货柜格口管理'}}
{{selectedShippingCabinet.name}}
{{selectedShippingCabinet.executor_name || selectedShippingCabinet.executor_id || '-'}}
{{selectedShippingCabinet.slot_count || 0}}
X {{selectedShippingCabinet.origin_x}} / Y {{selectedShippingCabinet.origin_y}}
列 {{selectedShippingCabinet.column_pitch}} / 层 {{selectedShippingCabinet.layer_pitch}}
{{selectedShippingCabinet.fork_extend_z ?? '-'}}
{{row.layer}}层
{{cell.column}}
{{row.layer}} / {{row.column}}
{{microFulfillmentCabinetSlotStatusLabel(row.status)}}
X {{row.pos_x}} / Y {{row.pos_y}}
锁定
{{microFulfillmentCabinetSlotToteLabel(row)}}
坐标
禁用
启用
删除
{{locationCoordForm.executor_name || locationCoordForm.executor_id || '未识别执行器'}}
获取当前堆垛机位置
维护货物主数据。货物 ID 会作为入库条码和库存检索的主键。
货物ID / 条码 *
SKU
货物名称 *
类别
单位
重量(kg)
备注
运动参数
任务空闲待命位置
获取当前堆垛机位置
{{config.motion_profile_standby_configured ? '待命位已配置' : '待命位未配置'}}
主从纠偏参数(仅当前置仓堆垛机)
保存有权配置
立即重连运动设备
默认 IO 口与运动后端
运动后端选择
汇川 PLC
雷赛 EMC
入库
出库
移库
汇川 PLC 通信参数
雷赛 EMC 参数
运动执行器列表
保存时会提交完整列表;`shipping-stacker` 只作为出货履约执行器,不设为主调度。
添加出货堆垛机
雷赛配置使用主执行器表单维护
设为主执行器
删除
智能微仓拓扑
{{microStoreConfig.enabled ? '已启用' : '未启用'}}
重载配置
出入口配置
支持多出入口。新增时会自动生成内部标识,优先区域和执行器可直接从现有配置里选择。
新增出入口
删除
出口配置
入口和出口可以分开配置。出口常态应保持空位,后续左右双工位调度会基于这里的口位清单做侧向约束和同侧回收。
新增出口
删除
区域配置
先定义“哪一片货位是什么区域”,再决定它是否允许入库落位。基础模式只展示当前强生效字段,高级模式再展开预留字段。
展示模式
基础模式
高级模式
新增区域
{{ item }}
还有 {{ microStoreTopologyValidation.errors.length - 6 }} 项错误未展开
{{ item }}
还有 {{ microStoreTopologyValidation.warnings.length - 6 }} 项提醒未展开
当前拓扑配置未发现明显冲突。建议继续核对:高优先级空框区不要混进普通存储位,关键缓冲位默认应避开入库落位。
{{ row.name || row.code || `区域${index + 1}` }}
{{ row.code || '未设置编码' }} · {{ microStoreZoneCategoryLabel(row.category) }} · 已选 {{ microStoreZoneLocationCount(row) }} 个货位
{{ microStoreZoneCategoryLabel(row.category) }}
入口 {{ microStoreZoneEntryCount(row) || '全局共享' }}
出口 {{ microStoreZoneExitCount(row) || '全局共享' }}
删除
当前强生效:区域类型
当前强生效:货位集合
当前强生效:允许落位 / 避开落位
高级字段含部分预留能力
用于出入口引用和调度识别,建议稳定命名,不要频繁改。当前强生效。
给现场人员看的名称,不影响调度行为,但会影响页面可读性。
{{ microStoreZoneCategoryDesc(row.category) }} 当前强生效。
决定哪些出入口会优先使用这块区域;留空表示全局共享。当前强生效。
后续左右双工位出库与回收会按这里约束出口可用区域;留空表示全局共享。当前为结构化配置,后续调度会接入。
数值越大越优先。普通存储区会参与入库打分,高优空框区会影响补位顺序。当前强生效。
低于这个值时系统会建议或触发补位。当前主要对“高优先级空框区”强生效。
决定满框入库时能不能落到这里。对空框池和关键缓冲位通常应关闭。当前强生效。
开启后,常规入库会主动避开这块区域。关键缓冲位建议开启。当前强生效。
货位拓扑选择
直接点选现有货位即可,不需要手输 ID。蓝色表示已选;支持先粗选再用搜索微调。
已选 {{ microStoreZoneLocationCount(row) }} 个
清空本区域
{{ group.label }}
{{ loc.code || `货位#${loc.id}` }}
{{ locationDisplayStatusLabel(loc) }}
IO口
暂存区
区域 {{ microStoreZoneCodesForLocation(loc.id).join(',') }}
{{ loc.shelf_code || (loc.side === 'left' ? '左侧' : '右侧') }}
{{ loc.layer || '-' }}层 {{ loc.column || '-' }}列
暂无可选货位,请先检查货位数据是否已加载。
这里和上面的拓扑点选共用同一组数据,适合做少量微调。当前强生效。
高级字段
下面这些字段主要用于兼容后续策略扩展;当前版本只有部分场景会参考它们。
预留字段,当前版本不作为核心规划硬约束。
业务语义字段,当前版本不是硬约束,先按业务含义配置即可。
预留能力;当前核心调度优先看出入口级 `keep_empty_frame`。
智能微仓策略与执行器
模式
“高密度空框周转”模式当前已接入单次入库与出库回源位;批量暂存和中心点换位会在后续阶段继续完善。
双工位实机调试
开启“入/出库先入队”后,单个作业不会绕过双边候选评估直接派发;左右两侧都有可执行候选时,才会进入双工位激活链路。
评分权重
阈值与超时
重平衡
执行器
新增执行器时会自动生成默认标识;能力直接多选,当前核心流程默认复用 `transfer`。
新增执行器
删除
保存智能微仓配置
放弃未保存修改
本地用户管理
权限管理
刷新
创建用户
{{ row.username }}
上次登录:{{ row.last_login_at || '-' }}
updateLocalUser(row, { display_name: value })" >
updateLocalUser(row, { role_ids: value })" >
updateLocalUser(row, { is_active: value })" >
重置
本地角色与菜单、按钮权限
多角色权限取并集
新建角色
{{ row.name }}
{{ row.code }}
{{ row.is_active ? '启用' : '停用' }}
删除
{{ data.name }}
{{ data.type === 'menu' ? '菜单' : '按钮' }}
{{ data.code }}
保存角色