<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>
|