Просмотр исходного кода

风险模块计算方式新增模板三

luoaoxuan 1 год назад
Родитель
Сommit
3ba85f96a7

+ 56 - 6
src/views/platform/risk/riskDetail.vue

@@ -297,6 +297,12 @@ export default {
         ibpsUserSelector,
         IbpsCustomDialog: () => import('@/business/platform/data/templaterender/custom-dialog')
     },
+    props: {
+        culWays: {
+            type: Object,
+            default: () => ({})
+        }
+    },
     data () {
         const { userId, position, level } = this.$store.getters
         return {
@@ -330,6 +336,10 @@ export default {
 中度的:28-63,显著危险,需要整改。
 重大的:64-99,高度危险,需立即整改。
 不可接受的:100-125,极其危险,不能继续作业。` },
+            fengXianDengJi3: { label: '风险等级及应对措施说明', value: `未找到配置数据,使用默认配置:
+低风险:1-4,风险较低,当采取措施消除风险引起的成本比风险本身引起的损失较大时,接受风险。
+中风险:5-11,可采取措施降低风险或风险规避。
+高风险:12-25,应采取措施规避或降低风险。` },
             yan_zhong_cheng_d_List: ['1', '2', '3', '4', '5'],
             fa_sheng_pin_du_List: ['1', '2', '3', '4', '5'],
             ke_jian_ce_du_List: ['1', '2', '3', '4', '5'],
@@ -359,13 +369,17 @@ export default {
             return getImage('risk_fxjz') // 风险矩阵参照图
         },
         descriptionContent () {
-            const msg1 = '1.当前风险系数计算公式为模板一:风险矩阵法。2.风险等级由严重程度和发生频度组成的坐标值映射成为矩阵坐标。'
-            const msg2 = '1.当前风险系数计算公式为模板二:FMEA法。2.风险系数 RPN = Severity(严重度) × Occurrence(发生度)× Likelihood of Detection(检测度)。'
+            console.log('this.culWays[this.muban]', this.culWays[this.muban])
+            const msg1 = `1.当前风险系数计算公式为模板一:'${this.culWays[this.muban]}'。2.风险等级由严重程度和发生频度组成的坐标值映射成为矩阵坐标。`
+            const msg2 = `1.当前风险系数计算公式为模板二:'${this.culWays[this.muban]}'。2.风险系数 RPN = Severity(严重度) × Occurrence(发生度)× Likelihood of Detection(检测度)。`
+            const msg3 = `1.当前风险系数计算公式为模板三:'${this.culWays[this.muban]}'。2.风险系数 RPN = Severity(严重度) × Occurrence(发生度)。`
             switch (this.muban) {
                 case '1':
                     return msg1
                 case '2':
                     return msg2
+                case '3':
+                    return msg3
                 default:
                     break
             }
@@ -482,6 +496,8 @@ export default {
             this.leixing = this.params.feng_xian_lei_xin
             if (this.muban === '2') {
                 this.content[3] = this.fengXianDengJi2
+            } else if (this.muban === '3') {
+                this.content[3] = this.fengXianDengJi3
             }
             // 获取风险等级相关
             const degreeSql = `select feng_xian_lei_xin,yan_zhong_cheng_d, fen_ji_, miao_shu_ FROM t_yzcdfjbzb WHERE zi_fen_lei_ ='严重程度' and di_dian_ = '${this.level}' and mo_ban_fen_lei_='${this.muban}' and feng_xian_lei_xin='${this.leixing}' ORDER BY fen_ji_ ASC`
@@ -511,8 +527,10 @@ export default {
                 if (responses[3].variables != null && responses[3].variables.data != null && responses[3].variables.data.length > 0) {
                     jianCeData = responses[3].variables.data
                 }
+                (this.muban === '1' || this.muban === '3') && (this.content[2].hide = true)
                 if (degreeData.length === 0 || gailvData.length === 0 || dengjiData.length === 0 || (this.muban === '2' && jianCeData.length === 0)) {
-                    throw new Error(`检测到风险类型为${this.leixing}且计算方式为${this.muban === '1' ? '风险矩阵法' : 'FMEA法'}的配置数据不完整,请配置完成后再使用!`)
+                    console.log('culWays', this.culWays)
+                    throw new Error(`检测到风险类型为${this.leixing}且计算方式为'${this.culWays[this.muban]}'的配置数据不完整,请配置完成后再使用!`)
                 }
                 let degreeWord = ''
                 let gailvWord = ''
@@ -527,7 +545,7 @@ export default {
                 for (const el of dengjiData) {
                     if (this.muban === '1') {
                         dengjiWord += `${el.fen_ji_}:${el.miao_shu_}\n`
-                    } else if (this.muban === '2') {
+                    } else {
                         dengjiWord += `${el.fen_ji_}:${el.yan_zhong_cheng_d},${el.miao_shu_}\n`
                     }
                 }
@@ -549,8 +567,6 @@ export default {
                 if (dengjiData.length > 0) {
                     this.content[3].value = dengjiWord
                 }
-
-                this.muban === '1' && (this.content[2].hide = true)
                 this.fengXianJiSuan = dengjiData
                 this.loading = false
             }).catch(error => {
@@ -684,6 +700,40 @@ export default {
                         row.feng_xian_zhi_shu = rate + ''
                         row.feng_xian_deng_ji = degree
                     }
+                } else if (this.muban === '3') {
+                    if (row.yan_zhong_cheng_d && row.fa_sheng_pin_du_) {
+                        let degree = ''
+                        let rate = ''
+                        rate = +row.yan_zhong_cheng_d * +row.fa_sheng_pin_du_
+                        if (this.fengXianJiSuan.length === 0) {
+                            if (rate >= 1 && rate <= 4) {
+                                degree = '低风险'
+                            }
+                            if (rate >= 5 && rate <= 11) {
+                                degree = '中风险'
+                            }
+                            if (rate >= 12 && rate <= 25) {
+                                degree = '高风险'
+                            }
+                        } else {
+                            for (let i = 0; i < this.fengXianJiSuan.length; i++) {
+                                const item = this.fengXianJiSuan[i]
+                                if (item.yan_zhong_cheng_d) {
+                                    const [a, b] = item.yan_zhong_cheng_d.split('-')
+                                    if (a && b) {
+                                        if (rate >= +a.trim() && rate <= +b.trim()) {
+                                            degree = item.fen_ji_
+                                            break
+                                        }
+                                    }
+                                }
+                            }
+                        }
+
+                        this.$set(row, 'feng_xian_ying_du', (!row.feng_xian_ying_du && (degree === '低风险')) ? '风险接受' : '风险降低')
+                        row.feng_xian_zhi_shu = rate + ''
+                        row.feng_xian_deng_ji = degree
+                    }
                 }
             } catch (error) {
                 this.$message.warning('风险系数计算错误,请检查风险模板配置数据是否正确!')

+ 6 - 2
src/views/platform/risk/riskPeopleTable.vue

@@ -47,7 +47,7 @@
                 </template>
             </el-table-column>
         </el-table>
-        <RiskDetail ref="RiskDetailRef" />
+        <RiskDetail ref="RiskDetailRef" :cul-ways="culWays" />
     </div>
 </template>
 
@@ -63,11 +63,15 @@ export default {
     props: {
         params: {
             type: Object,
-            default: () => {}
+            default: () => ({})
         },
         peopleIds: {
             type: String,
             default: ''
+        },
+        culWays: {
+            type: Object,
+            default: () => ({})
         }
     },
     data () {

+ 5 - 5
src/views/platform/risk/riskV2.vue

@@ -136,13 +136,13 @@
 
                     </el-descriptions-item>
 
-                    <el-descriptions-item label="范围" :span="2">
+                    <el-descriptions-item label="范围" :span="onlyoneWay?2:1">
                         <el-input v-model="infoFxssbData.fan_wei_" :disabled="readonly" size="mini" />
                     </el-descriptions-item>
                     <el-descriptions-item label="方法" :span="onlyoneWay?2:1">
                         <el-input v-model="infoFxssbData.fang_fa_" :disabled="readonly" size="mini" />
                     </el-descriptions-item>
-                    <el-descriptions-item v-if="!onlyoneWay" label="风险系数计算方式" :span="1">
+                    <el-descriptions-item v-if="!onlyoneWay" label="风险系数计算方式" :span="2">
                         <span class="required-star">*</span>
                         <el-radio v-for="(v,k) in culWays" :key="k" v-model="infoFxssbData.ji_suan_fang_shi_" :label="k" size="mini" :disabled="isEdit">{{ v }}
                         </el-radio>
@@ -233,7 +233,7 @@
                         type="success"
                         :closable="false"
                     />
-                    <RiskPeopleTable ref="RiskPeopleTableRef" :params="params" :people-ids="infoFxssbData.ping_gu_ren_yuan_" @goBack="goRefresh" />
+                    <RiskPeopleTable ref="RiskPeopleTableRef" :params="params" :people-ids="infoFxssbData.ping_gu_ren_yuan_" :cul-ways="culWays" @goBack="goRefresh" />
                 </div>
 
             </div>
@@ -246,7 +246,7 @@
             :readonly="readonly"
             @close="visible => DialogVisible = visible"
         /> -->
-        <RiskDetail ref="RiskDetailRef" @close="goRefresh" />
+        <RiskDetail ref="RiskDetailRef" :cul-ways="culWays" @close="goRefresh" />
         <el-image-viewer v-if="showViewer" :on-close="closeViewer" :url-list="[FlowPic]" />
 
     </el-dialog>
@@ -350,7 +350,7 @@ export default {
             isFinished: false,
             preParams: {},
             Ids: [],
-            culWays: { '1': '风险矩阵法', '2': 'FMEA法' }
+            culWays: { '1': '风险矩阵法', '2': 'FMEA法', '3': 'S*P' }
         }
     },
     computed: {