From e989421722e522f4879a354a15ba14912d7acaaa Mon Sep 17 00:00:00 2001 From: Your Name <123456> Date: 星期五, 24 二月 2023 16:49:38 +0800 Subject: [PATCH] Merge branch 'master' of https://sinanoaq.cn:8888/r/scienceexperimentweb --- src/views/analyse/evaluate/components/evaluateDialog.vue | 332 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 332 insertions(+), 0 deletions(-) diff --git a/src/views/analyse/evaluate/components/evaluateDialog.vue b/src/views/analyse/evaluate/components/evaluateDialog.vue new file mode 100644 index 0000000..2fb58e0 --- /dev/null +++ b/src/views/analyse/evaluate/components/evaluateDialog.vue @@ -0,0 +1,332 @@ +<template> + <div class="system-menu-dialog-container"> + <el-dialog :title="evaluateDialogState.title" v-model="evaluateDialogState.evaluateDialogVisible" width="600px"> + <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">--> +<!-- <el-form-item label="评估计划" prop="id">--> +<!-- <el-select class="input-length" :disabled="true" v-model="evaluateDialogState.evaluateForm.id" style="width:100%" placeholder="评估计划" clearable>--> +<!-- <el-option v-for="item in evaluateDialogState.planList" :key="item.id" :label="item.assessPlanName" :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="riskValue">--> +<!-- <el-input type="number" class="input-length" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.riskValue" style="width:100%" placeholder="风险数值">--> +<!-- </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"> + <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-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-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-col> + </div> + + <div style="width: 100%" 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-input type="number" class="input-length" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.lsL" placeholder="LS_L " 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="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-col> + </div> + + <div style="width: 100%" 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-input type="number" class="input-length" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.mesM" placeholder="MES_M" 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-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-col> + </div> + + <div style="width: 100%" 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-input type="number" class="input-length" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.rsR" placeholder="RS_R" 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-col> + </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> + </el-col> + </el-row> + </el-form> + <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> + </template> + </el-dialog> + </div> +</template> + +<script setup lang="ts"> +import {computed, reactive, ref} from "vue"; +import {ElMessage} from "element-plus"; +import {evaluateApi} from "/@/api/analyse/evaluate"; +import {isValidKey, numFloat} from "/@/utils/methods"; + +const evaluateFormRef = ref() + +const evaluateDialogState = reactive<EvaluateDialogType>({ + title: '', + time:[], + disabled: false, + evaluateDialogVisible: false, + evaluateMethod: 1, + 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, + }, + evaluateFormRules: { + + }, + manageLevelList: [ + {id:1, name: '院所级'}, + {id:2, name: '部门级'}, + {id:3, name: '项目组级'}, + ], + riskColorList: [ + {id:1, name: '蓝色'}, + {id:2, name: '黄色'}, + {id:3, name: '橙色'}, + {id:4, name: '红色'}, + ], + riskLevelList: [ + {id:1, name: '低'}, + {id:2, name: '一般'}, + {id:3, name: '较大'}, + {id:4, name: '重大'}, + ], + riskLevelValueList: [ + {id:1, name: '1级'}, + {id:2, name: '2级'}, + {id:3, name: '3级'}, + {id:4, name: '4级'}, + {id:5, name: '5级'}, + ], + identificationMethodList: [ + {id:1, name: 'PHA'}, + {id:2, name: 'JHA'}, + {id:3, name: 'SCL'}, + {id:4, name: 'HAZOP'}, + {id:5, name: '类比法'}, + ], + evaluateMethodList: [ + {id:1, name: 'LEC'}, + {id:2, name: 'LS'}, + {id:3, name: 'MES'}, + {id:4, name: 'RS'}, + ] +}) + +const numValue = 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) +}) + +const showEvaluateDialog = (title: string, value: EvaluateType ) => { + evaluateDialogState.evaluateDialogVisible = true; + evaluateDialogState.disabled = false + evaluateDialogState.evaluateMethod = value.evaluateMethod as number + setTimeout(() => { + evaluateFormRef.value.clearValidate(); + }); + if( value.lecId || value.lsId || value.mesId || value.rsId){ + evaluateDialogState.title = '编辑评价'; + for(let i in evaluateDialogState.evaluateForm){ + if(isValidKey(i, evaluateDialogState.evaluateForm)){ + evaluateDialogState.evaluateForm[i] = value[i] + } + } + }else if(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.identificationId = (value.hazopId || value.jhaId || value.phaId || value.sclId || value.analogyId) as number +}; + +const onSubmitEvaluate = () => { + evaluateFormRef.value.validate(async(valid: boolean) => { + if(valid){ + evaluateDialogState.evaluateForm.riskValue = Number(numValue.value) + if(evaluateDialogState.title === '评价'){ + let { lecId, lsId, mesId, rsId, ...data} = evaluateDialogState.evaluateForm + let res = await evaluateApi().addEvaluate(data); + if(res.data.code === 100){ + emit('refresh') + evaluateDialogState.evaluateDialogVisible = false; + ElMessage({ + type: 'success', + message: '新增成功' + }) + }else{ + ElMessage({ + type: 'warning', + message: res.data.msg, + }); + } + }else{ + let res = await evaluateApi().modEvaluate(evaluateDialogState.evaluateForm) + if(res.data.code === 100){ + emit('refresh') + evaluateDialogState.evaluateDialogVisible = false; + ElMessage({ + type: 'success', + message: '编辑成功' + }) + }else{ + ElMessage({ + type: 'warning', + message: res.data.msg, + }); + } + } + }else{ + ElMessage({ + type: 'warning', + message: '请完善基本信息', + }); + } + }) +} + +const emit = defineEmits(['refresh']); + +defineExpose({ + showEvaluateDialog +}); +</script> + +<style scoped> + +</style> -- Gitblit v1.9.2