From d0d78b9fbe144326f136ee048bb59d314413032e Mon Sep 17 00:00:00 2001 From: 马宇豪 <978517621@qq.com> Date: 星期二, 27 五月 2025 08:45:29 +0800 Subject: [PATCH] 修改导出 --- src/views/analyse/evaluate/components/evaluateDialog.vue | 1146 ++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 1,018 insertions(+), 128 deletions(-) diff --git a/src/views/analyse/evaluate/components/evaluateDialog.vue b/src/views/analyse/evaluate/components/evaluateDialog.vue index 2fb58e0..68ec8ff 100644 --- a/src/views/analyse/evaluate/components/evaluateDialog.vue +++ b/src/views/analyse/evaluate/components/evaluateDialog.vue @@ -1,6 +1,6 @@ <template> <div class="system-menu-dialog-container"> - <el-dialog :title="evaluateDialogState.title" v-model="evaluateDialogState.evaluateDialogVisible" width="600px"> + <el-dialog :title="evaluateDialogState.title" v-model="evaluateDialogState.evaluateDialogVisible" width="70%"> <el-form ref="evaluateFormRef" :rules="evaluateDialogState.evaluateFormRules" :model="evaluateDialogState.evaluateForm" size="default" label-width="140px"> <el-row :gutter="35"> <!-- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">--> @@ -16,126 +16,614 @@ <!-- </el-input>--> <!-- </el-form-item>--> <!-- </el-col>--> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="风险等级" prop="riskLevelValue"> - <el-select class="input-length" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.riskLevelValue" style="width:100%" placeholder="风险等级" clearable> - <el-option v-for="item in evaluateDialogState.riskLevelValueList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="风险级别" prop="riskLevel"> - <el-select class="input-length" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.riskLevel" style="width:100%" placeholder="风险级别" clearable> - <el-option v-for="item in evaluateDialogState.riskLevelList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="风险色" prop="riskColor"> - <el-select class="input-length" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.riskColor" style="width:100%" placeholder="风险色" clearable> - <el-option v-for="item in evaluateDialogState.riskColorList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="管理层级" prop="manageLevel"> - <el-select class="input-length" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.manageLevel" style="width:100%" placeholder="管理层级" clearable> - <el-option v-for="item in evaluateDialogState.manageLevelList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="评价方法" prop="identificationMethod"> - <el-select class="input-length" :disabled="true" v-model="evaluateDialogState.evaluateMethod" style="width:100%" placeholder="评价方法" clearable> - <el-option v-for="item in evaluateDialogState.evaluateMethodList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </el-form-item> - </el-col> - - <div style="width: 100%" v-if="evaluateDialogState.evaluateMethod === 1"> + <div class="evaluateCard"> + <div class="cardTit"> + <span v-if="evaluateDialogState.evaluateForm.identificationMethod === 1">PHA辨识法</span> + <span v-if="evaluateDialogState.evaluateForm.identificationMethod === 2">JHA辨识法</span> + <span v-if="evaluateDialogState.evaluateForm.identificationMethod === 3">SCL辨识法</span> + <span v-if="evaluateDialogState.evaluateForm.identificationMethod === 4">HAZOP辨识法</span> + <span v-if="evaluateDialogState.evaluateForm.identificationMethod === 5">类比辨识法</span> + </div> + <div v-if="evaluateDialogState.evaluateForm.identificationMethod === 1"> <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="LEC_L" prop="lecL"> - <el-input type="number" class="input-length" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.lecL" placeholder="LEC_L" clearable></el-input> - </el-form-item> + <el-form-item label="检查项目"> + <el-input class="input-length" disabled v-model="evaluateDialogState.evaluateInfo.phaCheckItem" placeholder="检查项目" clearable></el-input> + </el-form-item> </el-col> <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="LEC_E" prop="lecE"> - <el-input type="number" class="input-length" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.lecE" placeholder="LEC_E" clearable></el-input> - </el-form-item> + <el-form-item label="存在风险因素"> + <el-input class="input-length" disabled v-model="evaluateDialogState.evaluateInfo.phaRiskFactor" placeholder="存在风险因素" clearable></el-input> + </el-form-item> </el-col> <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="LEC_C" prop="lecC"> - <el-input type="number" class="input-length" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.lecC" placeholder="LEC_C" clearable></el-input> - </el-form-item> + <el-form-item label="可能产生的后果"> + <el-input class="input-length" disabled v-model="evaluateDialogState.evaluateInfo.phaResult" placeholder="可能产生的后果" clearable></el-input> + </el-form-item> </el-col> + </div> + <div v-if="evaluateDialogState.evaluateForm.identificationMethod === 2"> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="作业步骤"> + <el-input class="input-length" disabled v-model="evaluateDialogState.evaluateInfo.jhaCheckItem" placeholder="作业步骤" clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="危险源或潜在事件"> + <el-input class="input-length" disabled v-model="evaluateDialogState.evaluateInfo.jhaRiskFactor" placeholder="危险源或潜在事件" clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="可能产生的后果"> + <el-input class="input-length" disabled v-model="evaluateDialogState.evaluateInfo.jhaResult" placeholder="可能产生的后果" clearable></el-input> + </el-form-item> + </el-col> + </div> + <div v-if="evaluateDialogState.evaluateForm.identificationMethod === 3"> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="检查项目"> + <el-input class="input-length" disabled v-model="evaluateDialogState.evaluateInfo.sclCheckItem" placeholder="检查项目" clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="检查标准"> + <el-input class="input-length" disabled v-model="evaluateDialogState.evaluateInfo.sclCheckStandard" placeholder="检查标准" clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="不符合标准情况"> + <el-input class="input-length" disabled v-model="evaluateDialogState.evaluateInfo.sclCheckUnstandard" placeholder="不符合标准情况" clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="主要后果"> + <el-input class="input-length" disabled v-model="evaluateDialogState.evaluateInfo.sclCheckResult" placeholder="主要后果" clearable></el-input> + </el-form-item> + </el-col> + </div> + <div v-if="evaluateDialogState.evaluateForm.identificationMethod === 4"> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="节点"> + <el-input class="input-length" disabled v-model="evaluateDialogState.evaluateInfo.hazopNode" placeholder="HAZOP_节点" clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="参数"> + <el-input class="input-length" disabled v-model="evaluateDialogState.evaluateInfo.hazopParam" placeholder="HAZOP_参数" clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="参数描述"> + <el-input class="input-length" disabled v-model="evaluateDialogState.evaluateInfo.hazopParamDesc" placeholder="HAZOP_参数描述" clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="引导词"> + <el-input class="input-length" disabled v-model="evaluateDialogState.evaluateInfo.hazopGuide" placeholder="HAZOP_引导词" clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="偏差"> + <el-input class="input-length" disabled v-model="evaluateDialogState.evaluateInfo.hazopDeviation" placeholder="HAZOP_偏差" clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="可能原因"> + <el-input class="input-length" disabled v-model="evaluateDialogState.evaluateInfo.hazopPossibleCauses" placeholder="HAZOP_可能原因" clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="主要后果"> + <el-input class="input-length" disabled v-model="evaluateDialogState.evaluateInfo.hazopResult" placeholder="HAZOP_主要后果" clearable></el-input> + </el-form-item> + </el-col> + </div> + <div v-if="evaluateDialogState.evaluateForm.identificationMethod === 5"> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="检查项目" prop="analogyCheckItem"> + <el-input class="input-length" disabled v-model="evaluateDialogState.evaluateInfo.analogyCheckItem" placeholder="检查项目" clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="类比参照" prop="analogyReference"> + <el-input class="input-length" disabled v-model="evaluateDialogState.evaluateInfo.analogyReference" placeholder="类比参照" clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="存在风险因素" prop="analogyRiskFactor"> + <el-input class="input-length" disabled v-model="evaluateDialogState.evaluateInfo.analogyRiskFactor" placeholder="存在风险因素" clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="可能产生的后果" prop="analogyResult"> + <el-input class="input-length" disabled v-model="evaluateDialogState.evaluateInfo.analogyResult" placeholder="可能产生的后果" clearable></el-input> + </el-form-item> + </el-col> + </div> </div> - <div style="width: 100%" v-if="evaluateDialogState.evaluateMethod === 2"> + <el-col style="display: flex;align-items: center" :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="评价方法" style="width: 80% !important;"> + <el-select class="input-length" disabled v-model="evaluateDialogState.evaluateForm.evaluateMethod" style="width:100%" placeholder="评价方法" clearable> + <el-option v-for="item in evaluateDialogState.evaluateMethodList" :key="item.id" :label="item.name" :value="item.id"></el-option> + </el-select> + </el-form-item> + <el-button :disabled="evaluateDialogState.disabled" size="default" type="primary" @click="openChangeMethod()">修改评价方法</el-button> + </el-col> + + <div class="evaluateCard"> + <div class="cardTit"> + <span>固有风险评分</span> + </div> + <div class="valueSelect" v-if="evaluateDialogState.evaluateMethod === 1"> <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="LS_L" prop="lsL"> - <el-input type="number" class="input-length" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.lsL" placeholder="LS_L " clearable></el-input> - </el-form-item> + <el-form-item label="LEC_L" prop="originalLecL"> + <el-select class="input-length" :teleported="false" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.originalLecL" @change="calcOriginScore('lec')" style="width:100%" placeholder="LEC_L的数值" clearable> + <el-option v-for="item in evaluateDialogState.listLecL" :key="item.value" :label="item.value" :value="item.value"> + <div class="valueTable"> + <div><div>分值:</div><span>{{item.value}}</span></div> + <div><div>标准:</div><span>{{item.desc}}</span></div> + </div> + </el-option> + </el-select> + </el-form-item> </el-col> <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="LS_S" prop="lsS"> - <el-input type="number" class="input-length" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.lsS" placeholder="LS_S" clearable></el-input> - </el-form-item> + <el-form-item label="LEC_E" prop="originalLecE"> + <el-select class="input-length" :teleported="false" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.originalLecE" @change="calcOriginScore('lec')" style="width:100%" placeholder="LEC_E的数值" clearable> + <el-option v-for="item in evaluateDialogState.listLecE" :key="item.value" :label="item.value" :value="item.value"> + <div class="valueTable"> + <div><div>分值:</div><span>{{item.value}}</span></div> + <div><div>标准:</div><span>{{item.desc}}</span></div> + </div> + </el-option> + </el-select> + </el-form-item> </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="LEC_C" prop="originalLecC"> + <el-select class="input-length" :teleported="false" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.originalLecC" @change="calcOriginScore('lec')" style="width:100%" placeholder="LEC_C的数值" clearable> + <el-option v-for="item in evaluateDialogState.listLecC" :key="item.value" :label="item.value" :value="item.value"> + <div class="valueTable"> + <div class="longTit"><div>分值:</div><span>{{item.value}}</span></div> + <div class="longTit"><div>人员伤亡:</div><span>{{item.person}}</span></div> + <div class="longTit"><div>直接经济损失:</div><span>{{item.money}}</span></div> + <div class="longTit"><div>停工情况:</div><span>{{item.stopWork}}</span></div> + <div class="longTit"><div>企业形象:</div><span>{{item.company}}</span></div> + <div class="longTit"><div>法律,法规及其它要求:</div><span>{{item.desc}}</span></div> + </div> + </el-option> + </el-select> + </el-form-item> + </el-col> + </div> + <div class="valueSelect" v-if="evaluateDialogState.evaluateMethod === 2"> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="LS_L" prop="originalLsL"> + <el-select class="input-length" :teleported="false" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.originalLsL" @change="calcOriginScore('ls')" style="width:100%" placeholder="LS_L的数值" clearable> + <el-option v-for="item in evaluateDialogState.listLsL" :key="item.value" :label="item.value" :value="item.value"> + <div class="valueTable"> + <div><div>分值:</div><span>{{item.value}}</span></div> + <div><div>标准:</div><span>{{item.desc}}</span></div> + </div> + </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="LS_S" prop="originalLsS"> + <el-select class="input-length" :teleported="false" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.originalLsS" @change="calcOriginScore('ls')" style="width:100%" placeholder="LS_S的数值" clearable> + <el-option v-for="item in evaluateDialogState.listLsS" :key="item.value" :label="item.value" :value="item.value"> + <div class="valueTable"> + <div class="longTit"><div>分值:</div><span>{{item.value}}</span></div> + <div class="longTit"><div>人员伤亡:</div><span>{{item.person}}</span></div> + <div class="longTit"><div>直接经济损失:</div><span>{{item.money}}</span></div> + <div class="longTit"><div>停工情况:</div><span>{{item.stopWork}}</span></div> + <div class="longTit"><div>企业形象:</div><span>{{item.company}}</span></div> + <div class="longTit"><div>法律,法规及其它要求:</div><span>{{item.desc}}</span></div> + </div> + </el-option> + </el-select> + </el-form-item> + </el-col> + </div> + <div class="valueSelect" v-if="evaluateDialogState.evaluateMethod === 3"> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="MES_M" prop="originalMesM"> + <el-select class="input-length" :teleported="false" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.originalMesM" @change="calcOriginScore('mes')" style="width:100%" placeholder="MES_M的数值" clearable> + <el-option v-for="item in evaluateDialogState.listMesM" :key="item.value" :label="item.value" :value="item.value"> + <div class="valueTable"> + <div><div>分值:</div><span>{{item.value}}</span></div> + <div><div>标准:</div><span>{{item.desc}}</span></div> + </div> + </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="MES_E" prop="originalMesE"> + <el-select class="input-length" :teleported="false" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.originalMesE" @change="calcOriginScore('mes')" style="width:100%" placeholder="MES_E的数值" clearable> + <el-option v-for="item in evaluateDialogState.listMesE" :key="item.value" :label="item.value" :value="item.value"> + <div class="valueTable"> + <div><div>分值:</div><span>{{item.value}}</span></div> + <div><div>e1标准:</div><span>{{item.e1Desc}}</span></div> + <div><div>e2标准:</div><span>{{item.e2Desc}}</span></div> + </div> + </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="MES_S" prop="originalMesS"> + <el-select class="input-length" :teleported="false" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.originalMesS" @change="calcOriginScore('mes')" style="width:100%" placeholder="MES_S的数值" clearable> + <el-option v-for="item in evaluateDialogState.listMesS" :key="item.value" :label="item.value" :value="item.value"> + <div class="valueTable"> + <div class="longTit"><div>分值:</div><span>{{item.value}}</span></div> + <div class="longTit"><div>人员伤亡:</div><span>{{item.person}}</span></div> + <div class="longTit"><div>直接经济损失:</div><span>{{item.money}}</span></div> + <div class="longTit"><div>停工情况:</div><span>{{item.stopWork}}</span></div> + <div class="longTit"><div>法律,法规及其它要求:</div><span>{{item.desc}}</span></div> + </div> + </el-option> + </el-select> + </el-form-item> + </el-col> + </div> + <div class="valueSelect" v-if="evaluateDialogState.evaluateMethod === 4"> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="RS_R" prop="originalRsR"> + <el-select class="input-length" :teleported="false" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.originalRsR" @change="calcOriginScore('rs')" style="width:100%" placeholder="RS_R的数值" clearable> + <el-option v-for="item in evaluateDialogState.listRsR" :key="item.value" :label="item.value" :value="item.value"> + <div class="valueTable"> + <div class="longTit"><div>分值:</div><span>{{item.value}}</span></div> + <div class="longTit"><div>区间,定量描述:</div><span>{{item.section}}</span></div> + <div class="longTit"><div>标准:</div><span>{{item.desc}}</span></div> + </div> + </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="RS_S" prop="originalRsS"> + <el-select class="input-length" :teleported="false" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.originalRsS" @change="calcOriginScore('rs')" style="width:100%" placeholder="RS_S的数值" clearable> + <el-option v-for="item in evaluateDialogState.listRsS" :key="item.value" :label="item.value" :value="item.value"> + <div class="valueTable"> + <div><div>分值:</div><span>{{item.value}}</span></div> + <div><div>人员伤亡:</div><span>{{item.person}}</span></div> + <div><div>直接经济损失:</div><span>{{item.money}}</span></div> + <div><div>标准:</div><span>{{item.desc}}</span></div> + </div> + </el-option> + </el-select> + </el-form-item> + </el-col> + </div> </div> - <div style="width: 100%" v-if="evaluateDialogState.evaluateMethod === 3"> + <div class="evaluateCard"> + <div class="cardTit"> + <span>固有风险分值</span> + </div> + <div> <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="MES_M" prop="mesM"> - <el-input type="number" class="input-length" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.mesM" placeholder="MES_M" clearable></el-input> - </el-form-item> + <el-form-item label="风险值" prop="originalRiskValue"> + <el-input type="number" class="input-length" disabled v-model="evaluateDialogState.evaluateForm.originalRiskValue" placeholder="风险数值" clearable></el-input> + </el-form-item> </el-col> <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="MES_E" prop="mesE"> - <el-input type="number" class="input-length" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.mesE" placeholder="MES_E" clearable></el-input> - </el-form-item> + <el-form-item label="风险等级值" prop="originalRiskLevelValue"> + <el-select class="input-length" disabled v-model="evaluateDialogState.evaluateForm.originalRiskLevelValue" style="width:100%" placeholder="风险等级值" clearable> + <el-option v-for="item in evaluateDialogState.riskLevelValueList" :key="item.id" :label="item.name" :value="item.id"></el-option> + </el-select> + </el-form-item> </el-col> <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="MES_S" prop="mesS"> - <el-input type="number" class="input-length" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.mesS" placeholder="MES_S" clearable></el-input> - </el-form-item> + <el-form-item label="风险级别" prop="originalRiskLevel"> + <el-select class="input-length" disabled v-model="evaluateDialogState.evaluateForm.originalRiskLevel" style="width:100%" placeholder="风险级别" clearable> + <el-option v-for="item in evaluateDialogState.riskLevelList" :key="item.id" :label="item.name" :value="item.id"></el-option> + </el-select> + </el-form-item> </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="风险色" prop="originalRiskColor"> + <el-select class="input-length" disabled v-model="evaluateDialogState.evaluateForm.originalRiskColor" style="width:100%" placeholder="风险色" clearable> + <el-option v-for="item in evaluateDialogState.riskColorList" :key="item.id" :label="item.name" :value="item.id"></el-option> + </el-select> + </el-form-item> + </el-col> + </div> </div> - <div style="width: 100%" v-if="evaluateDialogState.evaluateMethod === 4"> + <div class="evaluateCard"> + <div class="cardTit"> + <span>现有措施</span> + </div> + <div> <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="RS_R" prop="rsR"> - <el-input type="number" class="input-length" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.rsR" placeholder="RS_R" clearable></el-input> - </el-form-item> + <el-form-item label="技术措施" prop="technologyMeasure"> + <el-input type="textarea" class="input-length" :autosize="{ minRows:1 }" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.technologyMeasure" placeholder="技术措施" clearable></el-input> + </el-form-item> </el-col> <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="RS_S" prop="rsS"> - <el-input type="number" class="input-length" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.rsS" placeholder="RS_S" clearable></el-input> - </el-form-item> + <el-form-item label="管理措施" prop="manageMeasure"> + <el-input type="textarea" class="input-length" :autosize="{ minRows:1 }" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.manageMeasure" placeholder="管理措施" clearable></el-input> + </el-form-item> </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="教育措施" prop="educationMeasure"> + <el-input type="textarea" class="input-length" :autosize="{ minRows:1 }" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.educationMeasure" placeholder="教育措施" clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="个体防护措施" prop="personalProtectionMeasure"> + <el-input type="textarea" class="input-length" :autosize="{ minRows:1 }" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.personalProtectionMeasure" placeholder="个体防护措施" clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="应急措施" prop="emergencyMeasure"> + <el-input type="textarea" class="input-length" :autosize="{ minRows:1 }" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.emergencyMeasure" placeholder="应急措施" clearable></el-input> + </el-form-item> + </el-col> + </div> </div> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="风险数值" prop="rsS"> - <el-input type="number" class="input-length" :disabled="true" v-model="numValue" placeholder="风险数值" clearable></el-input> - </el-form-item> + + <div class="evaluateCard"> + <div class="cardTit"> + <span>现有风险评分</span> + </div> + <div class="valueSelect" v-if="evaluateDialogState.evaluateMethod === 1"> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="LEC_L" prop="lecL"> + <el-select class="input-length" :teleported="false" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.lecL" @change="calcScore('lec')" style="width:100%" placeholder="LEC_L的数值" clearable> + <el-option v-for="item in evaluateDialogState.listLecL" :key="item.value" :label="item.value" :value="item.value"> + <div class="valueTable"> + <div><div>分值:</div><span>{{item.value}}</span></div> + <div><div>标准:</div><span>{{item.desc}}</span></div> + </div> + </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="LEC_E" prop="lecE"> + <el-select class="input-length" :teleported="false" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.lecE" @change="calcScore('lec')" style="width:100%" placeholder="LEC_E的数值" clearable> + <el-option v-for="item in evaluateDialogState.listLecE" :key="item.value" :label="item.value" :value="item.value"> + <div class="valueTable"> + <div><div>分值:</div><span>{{item.value}}</span></div> + <div><div>标准:</div><span>{{item.desc}}</span></div> + </div> + </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="LEC_C" prop="lecC"> + <el-select class="input-length" :teleported="false" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.lecC" @change="calcScore('lec')" style="width:100%" placeholder="LEC_C的数值" clearable> + <el-option v-for="item in evaluateDialogState.listLecC" :key="item.value" :label="item.value" :value="item.value"> + <div class="valueTable"> + <div class="longTit"><div>分值:</div><span>{{item.value}}</span></div> + <div class="longTit"><div>人员伤亡:</div><span>{{item.person}}</span></div> + <div class="longTit"><div>直接经济损失:</div><span>{{item.money}}</span></div> + <div class="longTit"><div>停工情况:</div><span>{{item.stopWork}}</span></div> + <div class="longTit"><div>企业形象:</div><span>{{item.company}}</span></div> + <div class="longTit"><div>法律,法规及其它要求:</div><span>{{item.desc}}</span></div> + </div> + </el-option> + </el-select> + </el-form-item> + </el-col> + </div> + <div class="valueSelect" v-if="evaluateDialogState.evaluateMethod === 2"> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="LS_L" prop="lsL"> + <el-select class="input-length" :teleported="false" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.lsL" @change="calcScore('ls')" style="width:100%" placeholder="LS_L的数值" clearable> + <el-option v-for="item in evaluateDialogState.listLsL" :key="item.value" :label="item.value" :value="item.value"> + <div class="valueTable"> + <div><div>分值:</div><span>{{item.value}}</span></div> + <div><div>标准:</div><span>{{item.desc}}</span></div> + </div> + </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="LS_S" prop="lsS"> + <el-select class="input-length" :teleported="false" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.lsS" @change="calcScore('ls')" style="width:100%" placeholder="LS_S的数值" clearable> + <el-option v-for="item in evaluateDialogState.listLsS" :key="item.value" :label="item.value" :value="item.value"> + <div class="valueTable"> + <div class="longTit"><div>分值:</div><span>{{item.value}}</span></div> + <div class="longTit"><div>人员伤亡:</div><span>{{item.person}}</span></div> + <div class="longTit"><div>直接经济损失:</div><span>{{item.money}}</span></div> + <div class="longTit"><div>停工情况:</div><span>{{item.stopWork}}</span></div> + <div class="longTit"><div>企业形象:</div><span>{{item.company}}</span></div> + <div class="longTit"><div>法律,法规及其它要求:</div><span>{{item.desc}}</span></div> + </div> + </el-option> + </el-select> + </el-form-item> + </el-col> + </div> + <div class="valueSelect" v-if="evaluateDialogState.evaluateMethod === 3"> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="MES_M" prop="mesM"> + <el-select class="input-length" :teleported="false" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.mesM" @change="calcScore('mes')" style="width:100%" placeholder="MES_M的数值" clearable> + <el-option v-for="item in evaluateDialogState.listMesM" :key="item.value" :label="item.value" :value="item.value"> + <div class="valueTable"> + <div><div>分值:</div><span>{{item.value}}</span></div> + <div><div>标准:</div><span>{{item.desc}}</span></div> + </div> + </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="MES_E" prop="mesE"> + <el-select class="input-length" :teleported="false" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.mesE" @change="calcScore('mes')" style="width:100%" placeholder="MES_E的数值" clearable> + <el-option v-for="item in evaluateDialogState.listMesE" :key="item.value" :label="item.value" :value="item.value"> + <div class="valueTable"> + <div><div>分值:</div><span>{{item.value}}</span></div> + <div><div>e1标准:</div><span>{{item.e1Desc}}</span></div> + <div><div>e2标准:</div><span>{{item.e2Desc}}</span></div> + </div> + </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="MES_S" prop="mesS"> + <el-select class="input-length" :teleported="false" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.mesS" @change="calcScore('mes')" style="width:100%" placeholder="MES_S的数值" clearable> + <el-option v-for="item in evaluateDialogState.listMesS" :key="item.value" :label="item.value" :value="item.value"> + <div class="valueTable"> + <div class="longTit"><div>分值:</div><span>{{item.value}}</span></div> + <div class="longTit"><div>人员伤亡:</div><span>{{item.person}}</span></div> + <div class="longTit"><div>直接经济损失:</div><span>{{item.money}}</span></div> + <div class="longTit"><div>停工情况:</div><span>{{item.stopWork}}</span></div> + <div class="longTit"><div>法律,法规及其它要求:</div><span>{{item.desc}}</span></div> + </div> + </el-option> + </el-select> + </el-form-item> + </el-col> + </div> + <div class="valueSelect" v-if="evaluateDialogState.evaluateMethod === 4"> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="RS_R" prop="rsR"> + <el-select class="input-length" :teleported="false" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.rsR" @change="calcScore('rs')" style="width:100%" placeholder="RS_R的数值" clearable> + <el-option v-for="item in evaluateDialogState.listRsR" :key="item.value" :label="item.value" :value="item.value"> + <div class="valueTable"> + <div class="longTit"><div>分值:</div><span>{{item.value}}</span></div> + <div class="longTit"><div>区间,定量描述:</div><span>{{item.section}}</span></div> + <div class="longTit"><div>标准:</div><span>{{item.desc}}</span></div> + </div> + </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="RS_S" prop="rsS"> + <el-select class="input-length" :teleported="false" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.rsS" @change="calcScore('rs')" style="width:100%" placeholder="RS_S的数值" clearable> + <el-option v-for="item in evaluateDialogState.listRsS" :key="item.value" :label="item.value" :value="item.value"> + <div class="valueTable"> + <div><div>分值:</div><span>{{item.value}}</span></div> + <div><div>人员伤亡:</div><span>{{item.person}}</span></div> + <div><div>直接经济损失:</div><span>{{item.money}}</span></div> + <div><div>标准:</div><span>{{item.desc}}</span></div> + </div> + </el-option> + </el-select> + </el-form-item> + </el-col> + </div> + </div> + + <div class="evaluateCard"> + <div class="cardTit"> + <span>现有风险分值</span> + </div> + <div> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="风险值" prop="riskValue"> + <el-input type="number" class="input-length" disabled v-model="evaluateDialogState.evaluateForm.riskValue" placeholder="风险数值" clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="风险等级值" prop="riskLevelValue"> + <el-select class="input-length" disabled v-model="evaluateDialogState.evaluateForm.riskLevelValue" style="width:100%" placeholder="风险等级值" clearable> + <el-option v-for="item in evaluateDialogState.riskLevelValueList" :key="item.id" :label="item.name" :value="item.id"></el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="风险级别" prop="riskLevel"> + <el-select class="input-length" disabled v-model="evaluateDialogState.evaluateForm.riskLevel" style="width:100%" placeholder="风险级别" clearable> + <el-option v-for="item in evaluateDialogState.riskLevelList" :key="item.id" :label="item.name" :value="item.id"></el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="风险色" prop="riskColor"> + <el-select class="input-length" disabled v-model="evaluateDialogState.evaluateForm.riskColor" style="width:100%" placeholder="风险色" clearable> + <el-option v-for="item in evaluateDialogState.riskColorList" :key="item.id" :label="item.name" :value="item.id"></el-option> + </el-select> + </el-form-item> + </el-col> + </div> + </div> + + <div class="evaluateCard"> + <div class="cardTit"> + <span>建议措施</span> + </div> + <div> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="技术措施" prop="adviseTechnologyMeasure"> + <el-input type="textarea" class="input-length" :autosize="{ minRows:1 }" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.adviseTechnologyMeasure" placeholder="技术措施" clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="管理措施" prop="adviseManageMeasure"> + <el-input type="textarea" class="input-length" :autosize="{ minRows:1 }" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.adviseManageMeasure" placeholder="管理措施" clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="教育措施" prop="adviseEducationMeasure"> + <el-input type="textarea" class="input-length" :autosize="{ minRows:1 }" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.adviseEducationMeasure" placeholder="教育措施" clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="个体防护措施" prop="advisePersonalProtectionMeasure"> + <el-input type="textarea" class="input-length" :autosize="{ minRows:1 }" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.advisePersonalProtectionMeasure" placeholder="个体防护措施" clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="应急措施" prop="adviseEmergencyMeasure"> + <el-input type="textarea" class="input-length" :autosize="{ minRows:1 }" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.adviseEmergencyMeasure" placeholder="应急措施" clearable></el-input> + </el-form-item> + </el-col> + </div> + </div> + + <el-col style="display: flex;align-items: center" :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="评价专家意见" prop="evaluateDesc" style="width: 100% !important;"> + <el-input type="textarea" class="input-length" :autosize="{ minRows:2 }" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.evaluateDesc" placeholder="评价专家意见" clearable></el-input> + </el-form-item> + </el-col> + <el-col style="display: flex;align-items: center" :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="安全风险分析" prop="evaluateDesc" style="width: 100% !important;"> + <el-input type="textarea" class="input-length" :autosize="{ minRows:2 }" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.safeRiskAnalysis" placeholder="安全风险分析" clearable></el-input> + </el-form-item> </el-col> </el-row> </el-form> + <el-dialog title="修改评价方法" v-model="evaluateDialogState.evaluateMethodVisible" width="30%"> + <el-select class="input-length" v-model="evaluateDialogState.evaluateForm.evaluateMethod" style="width:100%" placeholder="评价方法" clearable> + <el-option v-for="item in evaluateDialogState.evaluateMethodList" :key="item.id" :label="item.name" :value="item.id"></el-option> + </el-select> + <template #footer> + <span class="Query-footer"> + <el-button @click="evaluateDialogState.evaluateMethodVisible = false" size="default">取 消</el-button> + <el-button type="primary" @click="conFirmChange()" size="default">确定</el-button> + </span> + </template> + </el-dialog> <template #footer> - <span class="dialog-footer"> - <el-button @click="evaluateDialogState.evaluateDialogVisible = !evaluateDialogState.evaluateDialogVisible" size="default">取 消</el-button> - <el-button v-if="!evaluateDialogState.disabled" type="primary" @click="onSubmitEvaluate" size="default">确定</el-button> - </span> + <span class="dialog-footer"> + <el-button @click="evaluateDialogState.evaluateDialogVisible = !evaluateDialogState.evaluateDialogVisible" size="default">取 消</el-button> + <el-button v-if="!evaluateDialogState.disabled" type="primary" @click="onSubmitEvaluate" size="default">提交</el-button> + </span> </template> </el-dialog> </div> </template> <script setup lang="ts"> -import {computed, reactive, ref} from "vue"; +import {computed, onMounted, reactive, ref} from "vue"; import {ElMessage} from "element-plus"; import {evaluateApi} from "/@/api/analyse/evaluate"; import {isValidKey, numFloat} from "/@/utils/methods"; +import { BigNumber } from 'bignumber.js'; +import {identifyApi} from "/@/api/analyse/identify"; +import {ElMessageBox} from "element-plus/es"; const evaluateFormRef = ref() @@ -144,15 +632,51 @@ time:[], disabled: false, evaluateDialogVisible: false, - evaluateMethod: 1, + evaluateMethodVisible:false, + evaluateMethod: null, + evaluateInfo: { + id: null, + identificationMethod: null, + result: null, + identificationDesc: '', + analogyCheckItem: '', + analogyRiskFactor: '', + analogyResult: '', + analogyReference: '', + hazopNode: '', + hazopParam: '', + hazopParamDesc: '', + hazopGuide: '', + hazopDeviation: '', + hazopPossibleCauses: '', + hazopResult: '', + jhaCheckItem: '', + jhaRiskFactor: '', + jhaResult: '', + phaCheckItem: '', + phaRiskFactor: '', + phaResult: '', + sclCheckItem: '', + sclCheckStandard: '', + sclCheckUnstandard: '', + sclCheckResult: '', + hazopId: null, + jhaId: null, + phaId: null, + sclId: null, + analogyId: null + }, evaluateForm: { id: null, + evaluateMethod: null, + identificationMethod: null, identificationId: null, + manageLevel: 1, + originalManageLevel: 1, riskValue: null, riskLevelValue: null, riskLevel: null, riskColor: null, - manageLevel: null, lecL: null, lecE: null, lecC: null, @@ -167,10 +691,46 @@ lsId: null, mesId: null, rsId: null, + originalLecL: null, + originalLecE: null, + originalLecC: null, + originalLsL: null, + originalLsS: null, + originalMesM: null, + originalMesE: null, + originalMesS: null, + originalRsR: null, + originalRsS: null, + originalRiskValue: null, + originalRiskLevelValue: null, + originalRiskLevel: null, + originalRiskColor: null, + technologyMeasure: '', + manageMeasure: '', + educationMeasure: '', + personalProtectionMeasure: '', + emergencyMeasure: '', + adviseTechnologyMeasure: '', + adviseManageMeasure: '', + adviseEducationMeasure: '', + advisePersonalProtectionMeasure: '', + adviseEmergencyMeasure: '', + evaluateDesc: '', + safeRiskAnalysis: '' }, evaluateFormRules: { }, + listLecL: [], + listLecE: [], + listLecC: [], + listLsL:[], + listLsS:[], + listRsR:[], + listRsS:[], + listMesM:[], + listMesE:[], + listMesS:[], manageLevelList: [ {id:1, name: '院所级'}, {id:2, name: '部门级'}, @@ -206,79 +766,166 @@ {id:1, name: 'LEC'}, {id:2, name: 'LS'}, {id:3, name: 'MES'}, - {id:4, name: 'RS'}, + // {id:4, name: 'RS'}, ] }) -const numValue = computed( () => { +const numOriginValue = computed( () => { return numFloat( - evaluateDialogState.evaluateForm.lecE, - evaluateDialogState.evaluateForm.lecL, - evaluateDialogState.evaluateForm.lecC, - evaluateDialogState.evaluateForm.mesE, - evaluateDialogState.evaluateForm.mesM, - evaluateDialogState.evaluateForm.mesS, - evaluateDialogState.evaluateForm.rsS, - evaluateDialogState.evaluateForm.rsR, - evaluateDialogState.evaluateForm.lsS, - evaluateDialogState.evaluateForm.lsL) + evaluateDialogState.evaluateForm.originalLecL, + evaluateDialogState.evaluateForm.originalLecE, + evaluateDialogState.evaluateForm.originalLecC, + evaluateDialogState.evaluateForm.originalLsL, + evaluateDialogState.evaluateForm.originalLsS, + evaluateDialogState.evaluateForm.originalMesM, + evaluateDialogState.evaluateForm.originalMesE, + evaluateDialogState.evaluateForm.originalMesS, + evaluateDialogState.evaluateForm.originalRsR, + evaluateDialogState.evaluateForm.originalRsS + ) }) -const showEvaluateDialog = (title: string, value: EvaluateType ) => { +const numValue = computed( () => { + return numFloat( + evaluateDialogState.evaluateForm.lecL, + evaluateDialogState.evaluateForm.lecE, + evaluateDialogState.evaluateForm.lecC, + evaluateDialogState.evaluateForm.lsL, + evaluateDialogState.evaluateForm.lsS, + evaluateDialogState.evaluateForm.mesM, + evaluateDialogState.evaluateForm.mesE, + evaluateDialogState.evaluateForm.mesS, + evaluateDialogState.evaluateForm.rsR, + evaluateDialogState.evaluateForm.rsS + ) +}) + +const showEvaluateDialog = (title: string, value: IdentifyType ) => { evaluateDialogState.evaluateDialogVisible = true; evaluateDialogState.disabled = false evaluateDialogState.evaluateMethod = value.evaluateMethod as number + evaluateDialogState.evaluateInfo = value setTimeout(() => { evaluateFormRef.value.clearValidate(); }); - if( value.lecId || value.lsId || value.mesId || value.rsId){ + if( title === '评价'){ + if(value.riskValue){ evaluateDialogState.title = '编辑评价'; for(let i in evaluateDialogState.evaluateForm){ - if(isValidKey(i, evaluateDialogState.evaluateForm)){ - evaluateDialogState.evaluateForm[i] = value[i] - } + if(isValidKey(i, evaluateDialogState.evaluateForm)){ + evaluateDialogState.evaluateForm[i] = value[i] + } } - }else if(title === '查看'){ + }else{ + evaluateDialogState.title = '评价' + evaluateDialogState.evaluateForm = { + id: null, + evaluateMethod: null, + identificationMethod: null, + identificationId: null, + manageLevel: 1, + originalManageLevel: 1, + riskValue: null, + riskLevelValue: null, + riskLevel: null, + riskColor: null, + lecL: null, + lecE: null, + lecC: null, + lsL: null, + lsS: null, + mesM: null, + mesE: null, + mesS: null, + rsR: null, + rsS: null, + lecId: null, + lsId: null, + mesId: null, + rsId: null, + originalLecL: null, + originalLecE: null, + originalLecC: null, + originalLsL: null, + originalLsS: null, + originalMesM: null, + originalMesE: null, + originalMesS: null, + originalRsR: null, + originalRsS: null, + originalRiskValue: null, + originalRiskLevelValue: null, + originalRiskLevel: null, + originalRiskColor: null, + technologyMeasure: '', + manageMeasure: '', + educationMeasure: '', + personalProtectionMeasure: '', + emergencyMeasure: '', + adviseTechnologyMeasure: '', + adviseManageMeasure: '', + adviseEducationMeasure: '', + advisePersonalProtectionMeasure: '', + adviseEmergencyMeasure: '', + evaluateDesc: '', + safeRiskAnalysis: '' + }; + } + }else { + evaluateDialogState.title = '查看' evaluateDialogState.disabled = true for(let i in evaluateDialogState.evaluateForm){ if(isValidKey(i, evaluateDialogState.evaluateForm)){ evaluateDialogState.evaluateForm[i] = value[i] } } - }else{ - evaluateDialogState.title = '评价'; - evaluateDialogState.evaluateForm = { - id: null, - identificationId: null, - riskValue: null, - riskLevelValue: null, - riskLevel: null, - riskColor: null, - manageLevel: null, - lecL: null, - lecE: null, - lecC: null, - lsL: null, - lsS: null, - mesM: null, - mesE: null, - mesS: null, - rsR: null, - rsS: null, - lecId: null, - lsId: null, - mesId: null, - rsId: null, - }; } evaluateDialogState.evaluateForm.id = value.id as number + evaluateDialogState.evaluateForm.evaluateMethod = value.evaluateMethod as number + evaluateDialogState.evaluateForm.identificationMethod = value.phaId?1:value.jhaId?2:value.sclId?3:value.hazopId?4:5 evaluateDialogState.evaluateForm.identificationId = (value.hazopId || value.jhaId || value.phaId || value.sclId || value.analogyId) as number }; + +const openChangeMethod = ()=>{ + evaluateDialogState.evaluateMethodVisible = true +} + +const conFirmChange = async () =>{ + ElMessageBox.confirm(`此操作将修改该评价计划的评价方法并清除之前的所有评价信息,是否继续?`, '提示', { + confirmButtonText: '确认', + cancelButtonText: '取消', + type: 'warning' + }) + .then(async () => { + let res = await evaluateApi().modEvaluateMethod({ + id: evaluateDialogState.evaluateForm.id, + evaluateMethodId: evaluateDialogState.evaluateForm.evaluateMethod + }); + if(res.data.code === 100){ + ElMessage({ + type: 'success', + message: '评价方法修改成功' + }) + emit('refresh') + }else{ + ElMessage({ + type: 'warning', + message: res.data.msg + }) + } + evaluateDialogState.evaluateMethodVisible = false + evaluateDialogState.evaluateMethod = evaluateDialogState.evaluateForm.evaluateMethod + evaluateFormRef.value.resetFields(); + evaluateFormRef.value.clearValidate(); + }) + .catch((error) => { + }); +} const onSubmitEvaluate = () => { evaluateFormRef.value.validate(async(valid: boolean) => { if(valid){ - evaluateDialogState.evaluateForm.riskValue = Number(numValue.value) + // evaluateDialogState.evaluateForm.riskValue = Number(numOriginValue.value) if(evaluateDialogState.title === '评价'){ let { lecId, lsId, mesId, rsId, ...data} = evaluateDialogState.evaluateForm let res = await evaluateApi().addEvaluate(data); @@ -287,7 +934,7 @@ evaluateDialogState.evaluateDialogVisible = false; ElMessage({ type: 'success', - message: '新增成功' + message: '评价成功' }) }else{ ElMessage({ @@ -320,13 +967,256 @@ }) } +const getListLecL = async() =>{ + let res = await evaluateApi().getListLecL() + if(res.data.code === 100){ + evaluateDialogState.listLecL = res.data.data + }else{ + ElMessage({ + type: 'warning', + message: res.data.msg, + }); + } +} + +const getListLecE = async() =>{ + let res = await evaluateApi().getListLecE() + if(res.data.code === 100){ + evaluateDialogState.listLecE = res.data.data + }else{ + ElMessage({ + type: 'warning', + message: res.data.msg, + }); + } +} + +const getListLecC = async() =>{ + let res = await evaluateApi().getListLecC() + if(res.data.code === 100){ + evaluateDialogState.listLecC = res.data.data + }else{ + ElMessage({ + type: 'warning', + message: res.data.msg, + }); + } +} + +const getListLsL = async() =>{ + let res = await evaluateApi().getListLsL() + if(res.data.code === 100){ + evaluateDialogState.listLsL = res.data.data + }else{ + ElMessage({ + type: 'warning', + message: res.data.msg, + }); + } +} + +const getListLsS = async() =>{ + let res = await evaluateApi().getListLsS() + if(res.data.code === 100){ + evaluateDialogState.listLsS = res.data.data + }else{ + ElMessage({ + type: 'warning', + message: res.data.msg, + }); + } +} + +const getListRsR = async() =>{ + let res = await evaluateApi().getListRsR() + if(res.data.code === 100){ + evaluateDialogState.listRsR = res.data.data + }else{ + ElMessage({ + type: 'warning', + message: res.data.msg, + }); + } +} + +const getListRsS = async() =>{ + let res = await evaluateApi().getListRsS() + if(res.data.code === 100){ + evaluateDialogState.listRsS = res.data.data + }else{ + ElMessage({ + type: 'warning', + message: res.data.msg, + }); + } +} + +const getListMesM = async() =>{ + let res = await evaluateApi().getListMesM() + if(res.data.code === 100){ + evaluateDialogState.listMesM = res.data.data + }else{ + ElMessage({ + type: 'warning', + message: res.data.msg, + }); + } +} +const getListMesE = async() =>{ + let res = await evaluateApi().getListMesE() + if(res.data.code === 100){ + evaluateDialogState.listMesE = res.data.data + }else{ + ElMessage({ + type: 'warning', + message: res.data.msg, + }); + } +} +const getListMesS = async() =>{ + let res = await evaluateApi().getListMesS() + if(res.data.code === 100){ + evaluateDialogState.listMesS = res.data.data + }else{ + ElMessage({ + type: 'warning', + message: res.data.msg, + }); + } +} + +const calcOriginScore=(i:string)=>{ + if((i == 'lec' && (evaluateDialogState.evaluateForm.originalLecL && evaluateDialogState.evaluateForm.originalLecE && evaluateDialogState.evaluateForm.originalLecC))||(i == 'ls' && (evaluateDialogState.evaluateForm.originalLsL && evaluateDialogState.evaluateForm.originalLsS))||(i == 'mes' &&(evaluateDialogState.evaluateForm.originalMesM && evaluateDialogState.evaluateForm.originalMesE && evaluateDialogState.evaluateForm.originalMesS))||(i == 'rs' && (evaluateDialogState.evaluateForm.originalRsR && evaluateDialogState.evaluateForm.originalRsS))){ + evaluateDialogState.evaluateForm.originalRiskValue = Number(numOriginValue.value) + if(evaluateDialogState.evaluateForm.originalRiskValue>0 && evaluateDialogState.evaluateForm.originalRiskValue<=70){ + evaluateDialogState.evaluateForm.originalRiskLevel = 1 + evaluateDialogState.evaluateForm.originalRiskColor = 1 + if(evaluateDialogState.evaluateForm.originalRiskValue<=19){ + evaluateDialogState.evaluateForm.originalRiskLevelValue = 5 + }else{ + evaluateDialogState.evaluateForm.originalRiskLevelValue = 4 + } + }else if(evaluateDialogState.evaluateForm.originalRiskValue>70&&evaluateDialogState.evaluateForm.originalRiskValue<=160){ + evaluateDialogState.evaluateForm.originalRiskLevelValue = 3 + evaluateDialogState.evaluateForm.originalRiskLevel = 2 + evaluateDialogState.evaluateForm.originalRiskColor = 2 + }else if(evaluateDialogState.evaluateForm.originalRiskValue>160&&evaluateDialogState.evaluateForm.originalRiskValue<=320){ + evaluateDialogState.evaluateForm.originalRiskLevelValue = 2 + evaluateDialogState.evaluateForm.originalRiskLevel = 3 + evaluateDialogState.evaluateForm.originalRiskColor = 3 + }else{ + evaluateDialogState.evaluateForm.originalRiskLevelValue = 1 + evaluateDialogState.evaluateForm.originalRiskLevel = 4 + evaluateDialogState.evaluateForm.originalRiskColor = 4 + } + } +} + +const calcScore=(i:string)=>{ + if((i == 'lec' && (evaluateDialogState.evaluateForm.lecL && evaluateDialogState.evaluateForm.lecE && evaluateDialogState.evaluateForm.lecC))||(i == 'ls' && (evaluateDialogState.evaluateForm.lsL && evaluateDialogState.evaluateForm.lsS))||(i == 'mes' &&(evaluateDialogState.evaluateForm.mesM && evaluateDialogState.evaluateForm.mesE && evaluateDialogState.evaluateForm.mesS))||(i == 'rs' && (evaluateDialogState.evaluateForm.rsR && evaluateDialogState.evaluateForm.rsS))){ + evaluateDialogState.evaluateForm.riskValue = Number(numValue.value) + if(evaluateDialogState.evaluateForm.riskValue>0 && evaluateDialogState.evaluateForm.riskValue<=70){ + evaluateDialogState.evaluateForm.riskLevel = 1 + evaluateDialogState.evaluateForm.riskColor = 1 + if(evaluateDialogState.evaluateForm.riskValue<=19){ + evaluateDialogState.evaluateForm.riskLevelValue = 5 + }else{ + evaluateDialogState.evaluateForm.riskLevelValue = 4 + } + }else if(evaluateDialogState.evaluateForm.riskValue>70&&evaluateDialogState.evaluateForm.riskValue<=160){ + evaluateDialogState.evaluateForm.riskLevelValue = 3 + evaluateDialogState.evaluateForm.riskLevel = 2 + evaluateDialogState.evaluateForm.riskColor = 2 + }else if(evaluateDialogState.evaluateForm.riskValue>160&&evaluateDialogState.evaluateForm.riskValue<=320){ + evaluateDialogState.evaluateForm.originalRiskLevelValue = 2 + evaluateDialogState.evaluateForm.originalRiskLevel = 3 + evaluateDialogState.evaluateForm.originalRiskColor = 3 + }else{ + evaluateDialogState.evaluateForm.riskLevelValue = 1 + evaluateDialogState.evaluateForm.riskLevel = 4 + evaluateDialogState.evaluateForm.riskColor = 4 + } + } +} + const emit = defineEmits(['refresh']); + +onMounted(()=>{ + getListLecL() + getListLecE() + getListLecC() + getListLsL() + getListLsS() + getListRsR() + getListRsS() + getListMesM() + getListMesE() + getListMesS() +}) defineExpose({ showEvaluateDialog }); </script> -<style scoped> +<style lang="scss" scoped> +.evaluateCard{ + width: 100%; + margin: 0 40px 20px; + border: 1px solid #ccc; + border-radius: 4px; + background: #fff; + .cardTit{ + width: 100%; + padding: 10px 20px; + background: #f5f5f5; + border-bottom: 1px solid #ccc; + margin-bottom: 20px; + } + + .valueSelect{ + ::v-deep(.el-popper){ + .el-select-dropdown__item{ + width: 100%; + height: auto; + white-space: normal; + word-break: break-all; + word-wrap: break-word; + overflow: auto; + padding: 10px 25px; + border-bottom: 1px solid #ccc; + + .valueTable{ + &>div{ + line-height: 1.5; + margin-bottom: 6px; + padding-bottom: 6px; + display: flex; + align-items: center; + + div{ + width: 8%; + } + span{ + width: 92%; + } + + &:last-of-type{ + margin-bottom: 0; + } + } + .longTit{ + div{ + width: 15%; + } + span{ + width: 85%; + } + } + } + } + } + } +} </style> -- Gitblit v1.9.2