refactor: 统一术语BOM为物料清单并补充工位扩展能力
主要变更: 1. 后端:重构工位管理逻辑,新增工位自定义扩展能力,将工位号上限调整为999并支持14+虚拟工位 2. 前后端:全量替换"BOM"术语为"物料清单",包括提示语、注释和文档 3. WMS模块:新增AGV任务取消接口与前端页面,对接海康RCS取消任务逻辑 4. 权限与种子数据:新增工位新增权限并更新权限配置 5. 修复错误校验逻辑,优化AGV客户端签名与请求处理
This commit is contained in:
@@ -127,7 +127,34 @@ async function refreshTasks() {
|
||||
function onSelectionChange(sel) { selected.value = sel }
|
||||
function rowKey(row) { return row.requestNo + '-' + row.materialCode + '-' + row.planDate }
|
||||
|
||||
onMounted(() => { loadDocks(); loadTasks() })
|
||||
/* ===================== 取消任务 / 对接模式 ===================== */
|
||||
const agvMode = reactive({ mock: false, tip: '' })
|
||||
|
||||
function canCancel(status) {
|
||||
return status === 'PENDING' || status === 'DISPATCHED' || status === 'DELIVERING'
|
||||
}
|
||||
|
||||
async function cancelTask(row) {
|
||||
const { value: reason } = await ElMessageBox.prompt(
|
||||
`确认取消 AGV 任务 ${row.taskNo}(${row.sourceDock} → ${row.targetDock})?\n取消后关联的备料单行将退回待发料。`,
|
||||
'取消 AGV 任务',
|
||||
{ type: 'warning', confirmButtonText: '确认取消', cancelButtonText: '返回', inputPlaceholder: '取消原因(选填)', inputValue: '' }
|
||||
).catch(() => ({ value: null }))
|
||||
if (reason === null) return
|
||||
await request.post('/agv/cancel', { taskNo: row.taskNo, reason: reason || '' })
|
||||
ElMessage.success('已取消')
|
||||
loadTasks(); loadDocks()
|
||||
}
|
||||
|
||||
async function loadMode() {
|
||||
try {
|
||||
const m = await request.get('/agv/mode')
|
||||
agvMode.mock = !!m?.mock
|
||||
agvMode.tip = m?.tip || ''
|
||||
} catch { /* 忽略 */ }
|
||||
}
|
||||
|
||||
onMounted(() => { loadDocks(); loadTasks(); loadMode() })
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@@ -154,6 +181,8 @@ onMounted(() => { loadDocks(); loadTasks() })
|
||||
|
||||
<!-- ② AGV 任务列表 -->
|
||||
<el-tab-pane label="AGV任务" name="tasks" lazy>
|
||||
<el-alert v-if="agvMode.mock" type="warning" :closable="false" show-icon style="margin-bottom:10px"
|
||||
title="当前为模拟模式(未接真实海康 RCS)" :description="agvMode.tip" />
|
||||
<div class="toolbar">
|
||||
<el-select v-model="taskQuery.status" clearable placeholder="任务状态" style="width: 140px" @change="taskPage.current = 1; loadTasks()">
|
||||
<el-option v-for="s in statusOptions" :key="s.v" :label="s.l" :value="s.v" />
|
||||
@@ -193,6 +222,12 @@ onMounted(() => { loadDocks(); loadTasks() })
|
||||
<el-table-column prop="operator" label="下发人" width="100" />
|
||||
<el-table-column prop="hikTaskCode" label="RCS任务码" width="150" show-overflow-tooltip />
|
||||
<el-table-column prop="remark" label="备注" min-width="140" show-overflow-tooltip />
|
||||
<el-table-column label="操作" width="90" align="center" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button v-if="canCancel(row.status)" size="small" type="danger" plain @click="cancelTask(row)">取消</el-button>
|
||||
<span v-else>-</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-pagination background layout="total, sizes, prev, pager, next" :total="taskTotal"
|
||||
:current-page="taskPage.current" :page-size="taskPage.size" :page-sizes="[10, 20, 50, 100]"
|
||||
|
||||
Reference in New Issue
Block a user