diff --git a/src/views/my/initiateChange/modules/fmea.vue b/src/views/my/initiateChange/modules/fmea.vue index b83d3d9..d2a3bd5 100644 --- a/src/views/my/initiateChange/modules/fmea.vue +++ b/src/views/my/initiateChange/modules/fmea.vue @@ -240,28 +240,38 @@ const setSave = async () => { const handleSelect = (key: string) => { runAi(key); } -console.log(props.fmeaRiskMatrixConfig) const s_options = computed(() => { const newArr = props.fmeaRiskMatrixConfig?.s_grades?.map((item:any) => ({ label: item.label+'('+item.score+')', - value: item.score + text: item.label, + value: item.score, + key: item.score })); return newArr; }); const p_options = computed(() => { const newArr = props.fmeaRiskMatrixConfig?.p_grades?.map((item:any) => ({ label: item.label+'('+item.score+')', - value: item.score + text: item.label, + value: item.score, + key: item.score })); return newArr; }); const d_options = computed(() => { const newArr = props.fmeaRiskMatrixConfig?.d_grades?.map((item:any) => ({ label: item.label+'('+item.score+')', - value: item.score + text: item.label, + value: item.score, + key: item.score })); return newArr; }); +// 用value找到text +const getText = (value:number, options:any[]) => { + const item = options.find((item:any) => item.value === value); + return item?.text || ''; +} // 右键菜单状态 const contextMenuShow = ref(false) @@ -348,6 +358,14 @@ const save = async (isClick: boolean = false) => { const { org_name, ...rest } = item; return rest; }); + // 修改residual_level值 + nodes.value?.forEach((node:any) => + node?.deviations?.forEach((dev:any) => + dev?.rows?.forEach((row:any) => { + row.residual_level = calculateRiskGrade(row.s_value, row.p_value, row.d_value)?.name || ''; + }) + ) + ); const {error} = await fmeaSaveApi(props.currentId, { nodes: nodes.value, users: workers, @@ -450,6 +468,16 @@ const runInference = async () => { }, 1000) } +// 计算风险等级 +const calculateRiskGrade = (s: number,p: number,d: number) => { + const rpn = s * p * d; + const levels = props.fmeaRiskMatrixConfig?.risk_grades || []; + if (!Number.isFinite(rpn)) { + return null + } + return levels.find((item:any) => rpn >= item.min_rpn && rpn <= item.max_rpn) || null; +} + // 新增行 const addRow = async () => { if(!currentDev.value){ @@ -517,7 +545,6 @@ const modalSave = async () => { deviation: name.value, rows: [] } - console.log(contextTarget.value?.nodeIndex) if(nodes.value[contextTarget.value?.nodeIndex].deviations){ nodes.value[contextTarget.value?.nodeIndex].deviations.push(dev); }else { @@ -658,7 +685,6 @@ const getFmeaNodes = async () => { loading.value = true; const {data,error} = await fmeaNodesApi(props.currentId); if(!error){ - console.log(data) nodes.value = data.nodes; selectedWorkers.value = data.users; clickDev(nodes.value[0]?.deviations[0] || null,0) @@ -909,47 +935,64 @@ onBeforeUnmount(() => { - + +
+

{{row.s_value || '-'}}

+

{{getText(row.s_value, s_options) || '点击选择'}}

+
+
- + +
+

{{row.p_value || '-'}}

+

{{getText(row.p_value, p_options) || '点击选择'}}

+
+
- + +
+

{{row.d_value || '-'}}

+

{{getText(row.d_value, d_options) || '点击选择'}}

+
+
- - - - + > + {{calculateRiskGrade(row.s_value, row.p_value, row.d_value)?.name}} + + -