2 Commits

Author SHA1 Message Date
dhr
9407ad5446 0928 2025-09-28 18:03:50 +08:00
dhr
3606ab7cf8 0928 2025-09-28 17:31:02 +08:00

View File

@ -440,7 +440,7 @@ import router from '@/router';
import { syrenwulist, syrenwuDetail, addsyrenwu, updatesyrenwu } from '@/api/zhinengxunjian/shiyan/renwu'; import { syrenwulist, syrenwuDetail, addsyrenwu, updatesyrenwu } from '@/api/zhinengxunjian/shiyan/renwu';
import { shiyanlist } from '@/api/zhinengxunjian/shiyan'; import { shiyanlist } from '@/api/zhinengxunjian/shiyan';
import { xunjianUserlist } from '@/api/zhinengxunjian/xunjian/index'; import { xunjianUserlist } from '@/api/zhinengxunjian/xunjian/index';
import { addjiedian } from '@/api/zhinengxunjian/jiedian/index'; import { addjiedian, updatejiedian } from '@/api/zhinengxunjian/jiedian/index';
// 引入Element Plus组件提示/空状态/骨架屏/弹窗) // 引入Element Plus组件提示/空状态/骨架屏/弹窗)
import { ElMessage, ElEmpty, ElSkeleton, ElForm, ElMessageBox, ElDialog } from 'element-plus'; import { ElMessage, ElEmpty, ElSkeleton, ElForm, ElMessageBox, ElDialog } from 'element-plus';
@ -831,16 +831,45 @@ const mapApiToView = (apiData) => {
// 生成试验阶段信息 // 生成试验阶段信息
const getTestStage = () => { const getTestStage = () => {
try { try {
// 优先查找nodes数组中status为2的第一条数据 // 优先查找nodes数组中处于执行中或失败的节点来确定当前试验阶段
if (apiData && apiData.nodes && Array.isArray(apiData.nodes)) { if (apiData && apiData.nodes && Array.isArray(apiData.nodes)) {
const firstStatusTwoNode = apiData.nodes.find((node) => { // 查找执行中状态的节点
// 确保node存在且有status属性 const executingNode = apiData.nodes.find((node) => {
if (!node || node.status === undefined) return false; if (!node || node.status === undefined) return false;
// 处理status可能是字符串或数字的情况
return node.status === '2' || node.status === 2; return node.status === '2' || node.status === 2;
}); });
if (firstStatusTwoNode && firstStatusTwoNode.name) {
return firstStatusTwoNode.name; // 如果有执行中的节点根据code判断阶段
if (executingNode && executingNode.code !== undefined) {
const stepName = executingNode.name || '未命名步骤';
return `${executingNode.code}步(${stepName})`;
}
// 查找失败状态的节点
const failedNode = apiData.nodes.find((node) => {
if (!node || node.status === undefined) return false;
return node.status === '3' || node.status === 3;
});
// 如果有失败的节点根据code判断阶段
if (failedNode && failedNode.code !== undefined) {
const stepName = failedNode.name || '未命名步骤';
return `${failedNode.code}步(${stepName})`;
}
// 查找已完成的节点,确定最后完成的阶段
const completedNodes = apiData.nodes.filter((node) => {
if (!node || node.status === undefined) return false;
return node.status === '4' || node.status === 4;
});
if (completedNodes.length > 0) {
// 按code排序取最大的code
completedNodes.sort((a, b) => Number(b.code) - Number(a.code));
if (completedNodes[0].code !== undefined) {
const stepName = completedNodes[0].name || '未命名步骤';
return `${completedNodes[0].code}步(${stepName})`;
}
} }
} }
// 如果没有找到符合条件的nodes数据检查是否有明确的试验阶段信息 // 如果没有找到符合条件的nodes数据检查是否有明确的试验阶段信息
@ -1014,9 +1043,34 @@ const handleAction = async (task) => {
return node.status === '2' || node.status === 2; return node.status === '2' || node.status === 2;
}); });
if (firstUnfinishedNode) { if (firstUnfinishedNode) {
// 使用updatejiedian接口更新节点状态构造完整的节点信息数组
const nodeUpdateParams = [
{
...firstUnfinishedNode,
status: '3',
updateTime: new Date().toISOString(),
// 确保包含所有必需字段
createDept: firstUnfinishedNode.createDept || 0,
createBy: firstUnfinishedNode.createBy || 0,
createTime: firstUnfinishedNode.createTime || new Date().toISOString(),
updateBy: firstUnfinishedNode.updateBy || 0,
params: firstUnfinishedNode.params || {
property1: 'string',
property2: 'string'
},
module: firstUnfinishedNode.module || 'string',
orderId: firstUnfinishedNode.orderId || 0,
code: firstUnfinishedNode.code || 0,
name: firstUnfinishedNode.name || 'string',
intendedPurpose: firstUnfinishedNode.intendedPurpose || 'string',
intendedTime: firstUnfinishedNode.intendedTime || new Date().toISOString(),
finishTime: firstUnfinishedNode.finishTime || '',
remark: firstUnfinishedNode.remark || ''
}
];
await updatejiedian(nodeUpdateParams);
// 更新本地数据以反映最新状态
firstUnfinishedNode.status = '3'; firstUnfinishedNode.status = '3';
// 确保更新到updateParams中
updateParams.nodes = taskDetails.nodes;
} }
} }
} catch (innerError) { } catch (innerError) {
@ -1050,13 +1104,39 @@ const handleAction = async (task) => {
// 将失败的步骤状态改回2未完成 // 将失败的步骤状态改回2未完成
if (taskDetails.nodes && Array.isArray(taskDetails.nodes)) { if (taskDetails.nodes && Array.isArray(taskDetails.nodes)) {
taskDetails.nodes.forEach((node) => { const failedNodes = taskDetails.nodes.filter((node) => {
if (node.status === '3' || node.status === 3) { return node.status === '3' || node.status === 3;
node.status = '2';
}
}); });
// 确保更新到updateParams中
updateParams.nodes = taskDetails.nodes; // 构造包含所有失败节点的完整信息数组
const nodeUpdateParams = failedNodes.map((failedNode) => ({
...failedNode,
status: '2',
updateTime: new Date().toISOString(),
// 确保包含所有必需字段
createDept: failedNode.createDept || 0,
createBy: failedNode.createBy || 0,
createTime: failedNode.createTime || new Date().toISOString(),
updateBy: failedNode.updateBy || 0,
params: failedNode.params || {
property1: 'string',
property2: 'string'
},
module: failedNode.module || 'string',
orderId: failedNode.orderId || 0,
code: failedNode.code || 0,
name: failedNode.name || 'string',
intendedPurpose: failedNode.intendedPurpose || 'string',
intendedTime: failedNode.intendedTime || new Date().toISOString(),
finishTime: failedNode.finishTime || '',
remark: failedNode.remark || ''
}));
// 一次性调用updatejiedian接口更新所有节点
await updatejiedian(nodeUpdateParams);
// 更新本地数据以反映最新状态
for (const failedNode of failedNodes) {
failedNode.status = '2';
}
} }
break; break;
default: default: