Forráskód Böngészése

风险模块改进

luoaoxuan 1 éve
szülő
commit
60ceac8faa
2 módosított fájl, 121 hozzáadás és 92 törlés
  1. 97 85
      src/views/platform/risk/riskDetail.vue
  2. 24 7
      src/views/platform/risk/riskV2.vue

+ 97 - 85
src/views/platform/risk/riskDetail.vue

@@ -71,7 +71,7 @@
                     title=""
                     type="success"
                     :closable="false"
-                    description="风险应对选择风险降低后,请选择对应的措施制定人,以便开启后续部门风险改进记录流程"
+                    description="风险应对选择风险降低后,需要填写对应的措施制定人,以便开启后续部门风险改进记录流程"
                 />
                 <div class="choose">
                     <span>选择风险项:</span>
@@ -192,7 +192,7 @@
                         </el-table-column>
                         <el-table-column
                             prop="feng_xian_zhi_shu"
-                            label="风险数"
+                            label="风险数"
                             width="70"
                         />
                         <el-table-column
@@ -217,6 +217,24 @@
                             </template>
 
                         </el-table-column>
+                        <el-table-column
+                            prop="qian_zai_yuan_yin"
+                            label="潜在原因分析"
+                            width="150"
+                        >
+                            <template slot-scope="{row}">
+                                <el-input v-model="row.qian_zai_yuan_yin" type="textarea" :rows="2" size="mini" :disabled="readonly" />
+                            </template>
+                        </el-table-column>
+                        <el-table-column
+                            prop="ni_cai_qu_cuo_shi"
+                            label="拟采取控制措施"
+                            width="150"
+                        >
+                            <template slot-scope="{row}">
+                                <el-input v-model="row.ni_cai_qu_cuo_shi" type="textarea" :rows="2" size="mini" :disabled="readonly" />
+                            </template>
+                        </el-table-column>
                         <el-table-column
                             prop="zhi_ding_ren_"
                             label="措施制定人"
@@ -235,15 +253,6 @@
                                 />
                             </template>
                         </el-table-column>
-                        <el-table-column
-                            prop="ni_cai_qu_cuo_shi"
-                            label="拟采取控制措施"
-                            width="150"
-                        >
-                            <template slot-scope="{row}">
-                                <el-input v-model="row.ni_cai_qu_cuo_shi" type="textarea" :rows="2" size="mini" :disabled="readonly" />
-                            </template>
-                        </el-table-column>
                     </el-table>
                 </div>
 
@@ -412,7 +421,8 @@ export default {
 
                                     xian_xing_kong_zh: item.gong_zuo_miao_shu,
                                     ni_cai_qu_cuo_shi: '',
-                                    zhi_ding_ren_: ''
+                                    zhi_ding_ren_: '',
+                                    qian_zai_yuan_yin: ''
                                 })
                             }
                         }
@@ -447,6 +457,9 @@ export default {
                 this.time = data[0].bian_zhi_shi_jian
                 this.form.xuan_ze_feng_xian = data[0].xuan_ze_feng_xian
                 this.tableList = data
+                this.tableList.forEach(i => {
+                    if (!Object.hasOwn(i, 'qian_zai_yuan_yin')) i.qian_zai_yuan_yin = ''
+                })
                 // 存储原始数据的 id 数组
                 this.Ids = this.tableList.map(item => item.shi_bie_xiang_)
             } else {
@@ -458,18 +471,13 @@ export default {
                 this.tableList = []
                 this.Ids = []
             }
-            const sqll = `select mo_ban_fen_lei_ FROM t_yzcdfjb WHERE mo_ban_fen_lei_!='' AND  mo_ban_fen_lei_ IS NOT NULL AND di_dian_='${this.level}' LIMIT 1`
-            const { variables: { data: dataa }} = await this.$common.request('sql', sqll)
-            if (dataa.length > 0) {
-                this.muban = dataa[0].mo_ban_fen_lei_
-                this.content[3] = this.fengXianDengJi2
-            }
+            this.muban = this.params.ji_suan_fang_shi_
             console.log('模板类型:', this.muban)
             // 获取风险等级相关
-            const degreeSql = `select yan_zhong_cheng_d, fen_ji_, miao_shu_ FROM t_yzcdfjbzb WHERE zi_fen_lei_ ='严重程度' and di_dian_ = '${this.level}' ORDER BY fen_ji_ ASC`
-            const gailvSql = `select yan_zhong_cheng_d, fen_ji_, miao_shu_ FROM t_yzcdfjbzb WHERE zi_fen_lei_ ='发生概率' and di_dian_ = '${this.level}' ORDER BY fen_ji_ ASC`
-            const dengjiSql = `select yan_zhong_cheng_d, fen_ji_, miao_shu_ FROM t_yzcdfjbzb WHERE zi_fen_lei_ ='${this.muban === '2' ? '风险等级2' : '风险等级'}' and di_dian_ = '${this.level}'`
-            const jianCeSql = `select yan_zhong_cheng_d, fen_ji_, miao_shu_ FROM t_yzcdfjbzb WHERE zi_fen_lei_ ='可检测度' and di_dian_ = '${this.level}' ORDER BY fen_ji_ ASC`
+            const degreeSql = `select 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}' ORDER BY fen_ji_ ASC`
+            const gailvSql = `select 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}' ORDER BY fen_ji_ ASC`
+            const dengjiSql = `select 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}'`
+            const jianCeSql = `select 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}' ORDER BY fen_ji_ ASC`
             Promise.all([
                 this.$common.request('sql', degreeSql),
                 this.$common.request('sql', gailvSql),
@@ -575,80 +583,84 @@ export default {
         },
         // 计算风险指数
         culRate (row) {
-            if (this.muban === '1') {
-                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
+            try {
+                if (this.muban === '1') {
+                    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
-                }
-            } else if (this.muban === '2') {
-                if (row.yan_zhong_cheng_d && row.fa_sheng_pin_du_ && row.ke_jian_ce_du_) {
-                    let degree = ''
-                    let rate = ''
-                    rate = +row.yan_zhong_cheng_d * +row.fa_sheng_pin_du_ * +row.ke_jian_ce_du_
-                    if (this.fengXianJiSuan.length === 0) {
-                        if (rate >= 1 && rate <= 8) {
-                            degree = '可忽略的'
-                        }
-                        if (rate >= 9 && rate <= 27) {
-                            degree = '可接受的'
-                        }
-                        if (rate >= 28 && rate <= 63) {
-                            degree = '中度的'
-                        }
-                        if (rate >= 64 && rate <= 99) {
-                            degree = '重大的'
-                        }
-                        if (rate >= 100 && rate <= 125) {
-                            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
+                    }
+                } else if (this.muban === '2') {
+                    if (row.yan_zhong_cheng_d && row.fa_sheng_pin_du_ && row.ke_jian_ce_du_) {
+                        let degree = ''
+                        let rate = ''
+                        rate = +row.yan_zhong_cheng_d * +row.fa_sheng_pin_du_ * +row.ke_jian_ce_du_
+                        if (this.fengXianJiSuan.length === 0) {
+                            if (rate >= 1 && rate <= 8) {
+                                degree = '可忽略的'
+                            }
+                            if (rate >= 9 && rate <= 27) {
+                                degree = '可接受的'
+                            }
+                            if (rate >= 28 && rate <= 63) {
+                                degree = '中度的'
+                            }
+                            if (rate >= 64 && rate <= 99) {
+                                degree = '重大的'
+                            }
+                            if (rate >= 100 && rate <= 125) {
+                                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 === '可忽略的' || degree === '可接受的')) ? '风险接受' : '风险降低')
-                    row.feng_xian_zhi_shu = rate + ''
-                    row.feng_xian_deng_ji = degree
+                        this.$set(row, 'feng_xian_ying_du', (!row.feng_xian_ying_du && (degree === '可忽略的' || degree === '可接受的')) ? '风险接受' : '风险降低')
+                        row.feng_xian_zhi_shu = rate + ''
+                        row.feng_xian_deng_ji = degree
+                    }
                 }
+            } catch (error) {
+                this.$message.warning('风险系数计算错误,请检查风险模板配置数据是否正确!')
             }
         },
         check () {

+ 24 - 7
src/views/platform/risk/riskV2.vue

@@ -136,12 +136,17 @@
 
                     </el-descriptions-item>
 
-                    <el-descriptions-item label="范围" :span="2">
+                    <el-descriptions-item label="范围" :span="1">
                         <el-input v-model="infoFxssbData.fan_wei_" :disabled="readonly" size="mini" />
                     </el-descriptions-item>
-                    <el-descriptions-item label="方法" :span="2">
+                    <el-descriptions-item label="方法" :span="1">
                         <el-input v-model="infoFxssbData.fang_fa_" :disabled="readonly" size="mini" />
                     </el-descriptions-item>
+                    <el-descriptions-item label="风险系数计算方式" :span="2">
+                        <span class="required-star">*</span>
+                        <el-radio v-model="infoFxssbData.ji_suan_fang_shi_" label="1" size="mini" :disabled="isEdit">S * O(严重度*发生率)</el-radio>
+                        <el-radio v-model="infoFxssbData.ji_suan_fang_shi_" label="2" size="mini" :disabled="isEdit">S * O * D(严重度*发生率*可检测度)</el-radio>
+                    </el-descriptions-item>
 
                     <el-descriptions-item label="目的" :span="5">
                         <el-input v-model="infoFxssbData.mu_di_" :disabled="readonly" size="mini" />
@@ -303,7 +308,7 @@ export default {
                 { key: 'refresh', label: '刷新', hidden: () => { return !this.isZuZhang || !this.isEdit || this.isFinished } },
                 { key: 'save', label: '保存', hidden: () => { return !this.isZuZhang || this.isFinished } },
                 // { key: 'sendMsg', label: '提醒评估人', icon: 'el-icon-bell', hidden: () => { return !this.isZuZhang || !this.isEdit || this.isFinished } },
-                { key: 'peizhifengxian', label: '更新风险库', type: 'info', icon: 'el-icon-setting', hidden: () => { return !this.isZuZhang || !this.isEdit } },
+                // { key: 'peizhifengxian', label: '更新风险库', type: 'info', icon: 'el-icon-setting', hidden: () => { return !this.isZuZhang || !this.isEdit } },
                 { key: 'submit', label: '提交', icon: 'el-icon-finished', hidden: () => { return !this.isZuZhang || !this.isEdit || this.isFinished } },
                 { key: 'cancel', label: '退出', type: 'danger', icon: 'ibps-icon-close' }
             ],
@@ -329,8 +334,8 @@ export default {
                 hui_yi_fu_jian_: '',
                 shi_wu_shuo_ming_: '',
                 ping_gu_ren_yuan_: '',
-                ji_hua_bian_hao_: ''
-
+                ji_hua_bian_hao_: '',
+                ji_suan_fang_shi_: ''
             },
             initWidth: '1280px',
             isEdit: false,
@@ -493,7 +498,9 @@ export default {
                                         feng_xian_lei_xin: this.infoFxssbData.feng_xian_lei_xin,
                                         qian_fu_jian_: this.infoFxssbData.yi_ju_wen_jian_id,
                                         ji_hua_bian_hao_: this.infoFxssbData.ji_hua_bian_hao_,
-                                        ni_cai_qu_kong_zh: item.ni_cai_qu_cuo_shi
+                                        ni_cai_qu_kong_zh: item.ni_cai_qu_cuo_shi,
+                                        qian_zai_yuan_yin: item.qian_zai_yuan_yin,
+                                        ji_suan_fang_shi_: this.infoFxssbData.ji_suan_fang_shi_
                                     }
                                 }
                             }).filter(i => i !== undefined),
@@ -677,6 +684,9 @@ export default {
             if (!this.infoFxssbData.bian_zhi_bu_men_) {
                 throw new Error('请选择编制部门!')
             }
+            if (!this.infoFxssbData.ji_suan_fang_shi_) {
+                throw new Error('请选择风险系数计算方式!')
+            }
         },
         async goAdd () {
             try {
@@ -754,7 +764,14 @@ export default {
                 if (this.isEdit) {
                     await this.goEdit(flag)
                 } else {
-                    await this.goAdd()
+                    this.$confirm('风险系数计算公式保存后不可再修改,是否继续?', '提示', {
+                        confirmButtonText: '继续',
+                        cancelButtonText: '取消',
+                        type: 'warning'
+                    }).then(async () => {
+                        await this.goAdd()
+                    }).catch(() => {
+                    })
                 }
             } catch (error) {
                 this.$message.warning(error.message)