|
|
@@ -31,6 +31,14 @@
|
|
|
<template v-if="row.bizType === 'EXCEPTION_REPORT' || row.bizType === 'EXCEPTION_CLOSURE'">
|
|
|
<el-text type="info" size="small">请进入异常详情处理</el-text>
|
|
|
</template>
|
|
|
+ <template v-else-if="row.bizType === 'S7_FQC_INSPBILL'">
|
|
|
+ <!-- FQC 业务任务节点:按 nodeId 跳专用业务入口,隐藏通用同意/拒绝,杜绝业务动作旁路;未知节点 fail-closed -->
|
|
|
+ <el-button v-if="row.nodeId === 'N1_INSPECT'" size="small" type="primary" text @click="goToFqc('inspect', row.bizId)">去录入</el-button>
|
|
|
+ <el-button v-else-if="row.nodeId === 'N2_SUP_REVIEW'" size="small" type="primary" text @click="goToFqc('review', row.bizId)">去审核</el-button>
|
|
|
+ <el-button v-else-if="row.nodeId === 'N3_QE_DISPOSITION'" size="small" type="primary" text @click="goToFqc('disposition', row.bizId)">去处置</el-button>
|
|
|
+ <el-text v-else type="info" size="small">请进入 FQC 业务模块处理</el-text>
|
|
|
+ <el-button size="small" text @click="emit('timeline', row)">详情</el-button>
|
|
|
+ </template>
|
|
|
<template v-else>
|
|
|
<el-button v-if="row.bizType === 'ORDER_CHANGE_REVIEW'" size="small" type="primary" text @click="emit('viewBiz', row)">查看变更单</el-button>
|
|
|
<el-button size="small" type="success" text @click="emit('approve', row)">同意</el-button>
|
|
|
@@ -81,6 +89,14 @@ async function goToException(bizId: number | string) {
|
|
|
router.push(`/aidop/s8/exceptions/${bizId}`);
|
|
|
}
|
|
|
|
|
|
+// FQC(S7_FQC_INSPBILL) 待办按节点跳专用业务入口,不调 ApprovalFlow 通用 Approve/Reject:
|
|
|
+// N1 去录入 → 检验单录入页(受 jyfzr 负责人门保护);N2/N3 去审核/去处置 → 结果列表自动打开详情抽屉,
|
|
|
+// 由 flowState 决定显示 主管通过/退回(supervisor-*) 或 QE处置(qe-submit-disposition)。业务动作全走 FQC 专用 API。
|
|
|
+function goToFqc(action: 'inspect' | 'review' | 'disposition', bizId: number | string) {
|
|
|
+ if (action === 'inspect') router.push(`/aidop/s7/fqc/insp-detail?id=${bizId}`);
|
|
|
+ else router.push(`/aidop/s7/fqc/result-list?openBillId=${bizId}`);
|
|
|
+}
|
|
|
+
|
|
|
defineProps<{ data: any[]; loading: boolean }>();
|
|
|
const emit = defineEmits<{
|
|
|
(e: 'approve', row: any): void;
|