diff --git a/src/views/my/initiateChange/modules/fmea.vue b/src/views/my/initiateChange/modules/fmea.vue index d2a3bd5..959bd03 100644 --- a/src/views/my/initiateChange/modules/fmea.vue +++ b/src/views/my/initiateChange/modules/fmea.vue @@ -386,15 +386,13 @@ const findRowWithParents = (rowIndex: number = -1) => { if(row){ return { ...row, - scene: `${row.cause?row.cause+';':''}${currentDev.value?.deviation+';'}${row.consequence?'可能导致:'+row.consequence:''}`, - source: 'HAZOP', + scene: `${row.cause?row.cause+';':''}${row.effect?'可能导致:'+row.effect:''}`, + source: 'FMEA', item: `${currentDev.value?.deviation}${currentNode.value?.node_name?`(${currentNode.value?.node_name})`:''}`, - safeguards: row?.safeguards?.map((item:any) => item.name).join(';') || '', - suggestions: row?.suggestions?.map((item:any) => item.name).join(';') || '', + safeguards: row?.safeguards || '', + suggestions: row?.suggestions || '', residual_level: row?.residual_level || '', to_pssr: 0, - safes: row?.safeguards || [], - sugs: row?.suggestions || [], }; } return null; @@ -409,28 +407,23 @@ const enterToTable = (type: string, rowIndex: number = -1) => { const enrichedRows:any[] = []; nodes.value.forEach((node:any) => { const node_ame = node.node_name; - node.objects.forEach((obj:any) => { - const obj_ame = obj.obj_name; - obj.deviations.forEach((dev:any) => { - const deviation = dev.deviation; - if (dev.rows && dev.rows.length > 0) { - dev.rows.forEach((row:any) => { - // 创建新对象,保留原 row 全部属性,并添加父级信息 - enrichedRows.push({ - ...row, - scene: `${row.cause?row.cause+';':''}${deviation?deviation+';':''}${row.consequence?'可能导致:'+row.consequence:''}`, - source: 'HAZOP', - item: `${deviation}${node_ame?`(${node_ame}${obj_ame?`-${obj_ame}`:''})`:''}`, - safeguards: row?.safeguards?.map((item:any) => item.name).join(';') || '', - suggestions: row?.suggestions?.map((item:any) => item.name).join(';') || '', - residual_level: row?.residual_level || '', - to_pssr: 0, - safes: row?.safeguards || [], - sugs: row?.suggestions || [], - }); + node.deviations.forEach((dev:any) => { + const deviation = dev.deviation; + if (dev.rows && dev.rows.length > 0) { + dev.rows.forEach((row:any) => { + // 创建新对象,保留原 row 全部属性,并添加父级信息 + enrichedRows.push({ + ...row, + scene: `${row.cause?row.cause+';':''}${row.effect?'可能导致:'+row.effect:''}`, + source: 'FMEA', + item: `${deviation}${node_ame?`(${node_ame})`:''}`, + safeguards: row?.safeguards || '', + suggestions: row?.suggestions || '', + residual_level: row?.residual_level || '', + to_pssr: 0, }); - } - }); + }); + } }); }); emit('toTable',type,enrichedRows); diff --git a/src/views/my/initiateChange/modules/hazop.vue b/src/views/my/initiateChange/modules/hazop.vue index 5f056d0..5679ca0 100644 --- a/src/views/my/initiateChange/modules/hazop.vue +++ b/src/views/my/initiateChange/modules/hazop.vue @@ -414,6 +414,16 @@ const save = async (isClick: boolean = false) => { const { org_name, ...rest } = item; return rest; }); + // 修改risk_value值 + nodes.value?.forEach((node:any) => + node.objects?.forEach((obj:any) =>{ + obj?.deviations?.forEach((dev:any) => + dev?.rows?.forEach((row:any) => { + row.risk_value = riskLevel(row?.l_value,row?.s_value)?.name || ''; + }) + ) + }) + ); const {error} = await hazopSaveApi(props.currentId, { nodes: nodes.value, users: workers, @@ -437,7 +447,7 @@ const findRowWithParents = (rowIndex: number = -1) => { scene: `${row.cause?row.cause+';':''}${currentDev.value?.deviation+';'}${row.consequence?'可能导致:'+row.consequence:''}`, source: 'HAZOP', item: `${currentDev.value?.deviation}${currentNode.value?.node_name?`(${currentNode.value?.node_name}${currentObj.value?.obj_name?`-${currentObj.value?.obj_name}`:''})`:''}`, - inherent_level: row?.risk_value || '', + inherent_level: riskLevel(row?.l_value,row?.s_value)?.name || '', safeguards: row?.safeguards?.map((item:any) => item.name).join(';') || '', suggestions: row?.suggestions?.map((item:any) => item.name).join(';') || '', residual_level: countRiskLevel(row)?.name || '', @@ -470,7 +480,7 @@ const enterToTable = (type: string, rowIndex: number = -1) => { scene: `${row.cause?row.cause+';':''}${deviation?deviation+';':''}${row.consequence?'可能导致:'+row.consequence:''}`, source: 'HAZOP', item: `${deviation}${node_ame?`(${node_ame}${obj_ame?`-${obj_ame}`:''})`:''}`, - inherent_level: row?.risk_value || '', + inherent_level: riskLevel(row?.l_value,row?.s_value)?.name || '', safeguards: row?.safeguards?.map((item:any) => item.name).join(';') || '', suggestions: row?.suggestions?.map((item:any) => item.name).join(';') || '', residual_level: countRiskLevel(row)?.name || '', @@ -590,7 +600,7 @@ const addRow = async () => { consequence: "", l_value: l_options.value[0]?.key || 1, s_value: s_options.value[0]?.key || 1, - risk_value: riskLevel(l_options.value[0]?.key || 1, s_options.value[0]?.key || 1)?.name || '', + risk_value: '', safeguards: [], suggestions: [], }); diff --git a/src/views/my/initiateChange/modules/riskAnalysis.vue b/src/views/my/initiateChange/modules/riskAnalysis.vue index d8ad763..8ef5311 100644 --- a/src/views/my/initiateChange/modules/riskAnalysis.vue +++ b/src/views/my/initiateChange/modules/riskAnalysis.vue @@ -48,68 +48,33 @@ const TOOL_CARDS = [ ]; // 根据l和s获取风险等级 -const hazopRiskLevel = (l: number, s: number) => { - const num = l * s; +const hazopRiskLevel = (level: string) => { for (let i = 0; i < hazopRiskMatrixConfig.value?.risk_grades.length; i++) { const item = hazopRiskMatrixConfig.value?.risk_grades[i]; - if (num >= item.min && num <= item.max) { + if (level === item.name) { return item; // 返回整条数据 } } return null; } -const jsaRiskLevel = (l: number, s: number) => { - const num = l * s; +const jsaRiskLevel = (level: string) => { for (let i = 0; i < jsaRiskMatrixConfig.value?.risk_grades.length; i++) { const item = jsaRiskMatrixConfig.value?.risk_grades[i]; - if (num >= item.min && num <= item.max) { + if (level === item.name) { return item; // 返回整条数据 } } return null; } -// 计算RR1风险等级 -const countHazopRiskLevel = (row: any) => { - const l = row.l_value; - const s = row.s_value; - const newArr = [...row?.safes || [],...row?.sugs || []]; - const result:any = { L: 0, S: 0 }; - newArr.forEach(item => { - if (!item.value) return; // 跳过空值 - const parts = item.value.split('_'); - if (parts.length === 2) { - const type = parts[0].toUpperCase(); // 统一大写 - const num = parseInt(parts[1], 10); - if (!isNaN(num) && (type === 'L' || type === 'S')) { - result[type] += num; - } +const fmeaRiskLevel = (level: string) => { + for (let i = 0; i < fmeaRiskMatrixConfig.value?.risk_grades.length; i++) { + const item = fmeaRiskMatrixConfig.value?.risk_grades[i]; + if (level === item.name) { + return item; // 返回整条数据 } - }); - const newL = (l - result.L) > 0 ? l - result.L : 1; - const newS = (s - result.S) > 0 ? s - result.S : 1; - return hazopRiskLevel(newL, newS); + } + return null; } -const countJsaRiskLevel = (row: any) => { - const l = row.l_value; - const s = row.s_value; - const newArr = [...row?.safes || [],...row?.sugs || []]; - const result:any = { L: 0, S: 0 }; - newArr.forEach(item => { - if (!item.value) return; // 跳过空值 - const parts = item.value.split('_'); - if (parts.length === 2) { - const type = parts[0].toUpperCase(); // 统一大写 - const num = parseInt(parts[1], 10); - if (!isNaN(num) && (type === 'L' || type === 'S')) { - result[type] += num; - } - } - }); - const newL = (l - result.L) > 0 ? l - result.L : 1; - const newS = (s - result.S) > 0 ? s - result.S : 1; - return jsaRiskLevel(newL, newS); -} - // 删除记录 const delRec = (i: number) => { @@ -325,41 +290,51 @@ onMounted(() => {