<template>
|
<div class="system-add-menu-container">
|
<el-dialog :title="title" v-model="isShowReportDialog" width="50%">
|
<el-form :model="reportForm" :rules="reportFormRules" ref="reportFormRef" size="default" label-width="120px">
|
<el-tabs class="active" v-model="activeNameOne">
|
<el-tab-pane label="隐患信息" name="hiddenInfo">
|
<el-row :gutter="25">
|
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20">
|
<el-form-item label="隐患描述" prop="dangerDesc">
|
<el-input class="input-add" v-model.trim="reportForm.dangerDesc" placeholder="请输入隐患情况描述" clearable></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20">
|
<el-form-item label="隐患所属部门" prop="depId">
|
<el-cascader :options="departmentList" :props="{ emitPath: false, checkStrictly: true, value: 'depId', label: 'depName' }" placeholder="请选择部门" clearable filterable class="input-add" v-model="reportForm.depId"> </el-cascader>
|
</el-form-item>
|
</el-col>
|
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20">
|
<el-form-item label="生产装置" prop="produceDeviceId">
|
<el-select class="input-add" v-model="reportForm.produceDeviceId" placeholder="请输入生产装置" clearable filterable @change="changeUnit">
|
<el-option v-for="item in allProduceDeviceData" :key="item.id" :label="item.produceDeviceName" :value="item.id"></el-option>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20">
|
<el-form-item label="风险分析单元" prop="riskUnitId">
|
<el-select class="input-add" v-model.trim="reportForm.riskUnitId" placeholder="请输入风险分析单元" clearable filterable>
|
<el-option v-for="item in safetyRiskUnitData" :key="item.id" :label="item.riskUnitName" :value="item.id"></el-option>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20">
|
<el-form-item label="隐患来源" prop="dangerSource">
|
<el-select class="input-add" v-model="reportForm.dangerSource" placeholder="请选择隐患来源" clearable filterable>
|
<el-option v-for="item in dangerSourceList" :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="12" class="mb20">
|
<el-form-item label="隐患等级" prop="dangerLevel">
|
<el-select class="input-add" v-model="reportForm.dangerLevel" placeholder="请选择隐患等级" clearable filterable>
|
<el-option v-for="item in dangerLevelList" :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="12" class="mb20">
|
<el-form-item label="隐患类型" prop="dangerType">
|
<el-select class="input-add" v-model="reportForm.dangerType" placeholder="请选择隐患类型" clearable filterable>
|
<el-option v-for="item in dangerTypeList" :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="12" class="mb20">
|
<el-form-item label="隐患可能后果" prop="dangerResult">
|
<el-select class="input-add" v-model="reportForm.dangerResult" placeholder="请选择隐患可能后果" clearable filterable>
|
<el-option v-for="item in dangerResultList" :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="12">
|
<el-form-item label="隐患产生原因" prop="dangerReason">
|
<el-input class="input-add" type="textarea" :rows="2" style="padding-bottom: 10px" v-model.trim="reportForm.dangerReason" placeholder="请输入隐患产生原因"></el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
</el-tab-pane>
|
</el-tabs>
|
|
<el-divider></el-divider>
|
|
<el-tabs class="active" v-model="activeNameTwo">
|
<el-tab-pane label="整改信息" name="rectifyInfo">
|
<el-row>
|
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20">
|
<el-form-item label="整改类型" prop="dangerResult">
|
<el-select class="input-add" v-model="reportForm.dangerResult" placeholder="请选择整改类型" clearable filterable> <el-option v-for="item in RFIDList" :key="item.id" :label="item.rfidName" :value="item.id"></el-option> </el-select
|
></el-form-item> </el-col
|
><el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20">
|
<el-form-item label="整改责任人" prop="dangerResult">
|
<el-select class="input-add" v-model="reportForm.dangerResult" placeholder="请选择整改责任人" clearable filterable>
|
<el-option v-for="item in RFIDList" :key="item.id" :label="item.rfidName" :value="item.id"></el-option>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20">
|
<el-form-item label="整改期限" prop="dangerResult">
|
<el-select class="input-add" v-model="reportForm.dangerResult" placeholder="请选择整改期限" clearable filterable>
|
<el-option v-for="item in RFIDList" :key="item.id" :label="item.rfidName" :value="item.id"></el-option>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20">
|
<el-form-item label="整改资金" prop="dangerResult">
|
<el-select class="input-add" v-model="reportForm.cost" placeholder="请选择整改资金"> </el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12">
|
<el-form-item label="整改内容" prop="rectifyDesc">
|
<el-input class="input-add" type="textarea" :rows="2" style="padding-bottom: 10px" v-model.trim="reportForm.rectifyDesc" placeholder="请输入整改内容"></el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
</el-tab-pane>
|
</el-tabs>
|
</el-form>
|
<template #footer>
|
<span class="dialog-footer">
|
<el-button @click="isShowReportDialog = !isShowReportDialog" size="default">取 消</el-button>
|
<el-button type="primary" @click="submitReport" v-throttle size="default">确 定</el-button>
|
</span>
|
</template>
|
</el-dialog>
|
</div>
|
</template>
|
|
<script lang="ts">
|
import { facilityAreaApi } from '/@/api/intellectInspectSystem/facilityAreaManage';
|
|
interface stateType {
|
isShowReportDialog: Boolean;
|
reportForm: {
|
dangerDesc: string | null;
|
depId: number | null;
|
produceDeviceId: number | null;
|
riskUnitId: number | null;
|
dangerSource: number | null;
|
dangerLevel: number | null;
|
dangerType: number | null;
|
dangerReason: string | null;
|
dangerResult: number | null;
|
rectifyType: number | null;
|
liablePersonId: number | null;
|
rectifyTime: string | null;
|
cost: number | null;
|
rectifyDesc: string | null;
|
};
|
title: string;
|
activeNameOne: string;
|
activeNameTwo: string;
|
reportFormRules: {};
|
departmentList: [];
|
allProduceDeviceData: [];
|
allSafetyRiskUnitData: Array<safetyRiskUnit>;
|
safetyRiskUnitData: Array<safetyRiskUnit>;
|
dangerLevelList: Array<enumType>;
|
dangerSourceList: Array<enumType>;
|
dangerResultList: Array<enumType>;
|
dangerTypeList: Array<enumType>;
|
}
|
interface enumType {
|
id: number;
|
name: string;
|
}
|
interface safetyRiskUnit {
|
produceDeviceId: number;
|
}
|
import { reactive, toRefs, ref } from 'vue';
|
import { ElMessage } from 'element-plus';
|
import { hiddenReportApi } from '/@/api/doublePreventSystem/report';
|
export default {
|
name: 'reportDialog',
|
setup(props: any, context: any) {
|
const reportFormRef = ref();
|
const state = reactive<stateType>({
|
title: '',
|
activeNameOne: 'hiddenInfo',
|
activeNameTwo: 'rectifyInfo',
|
isShowReportDialog: false,
|
departmentList: [],
|
allProduceDeviceData: [],
|
allSafetyRiskUnitData: [],
|
safetyRiskUnitData: [],
|
dangerLevelList: [
|
{ id: 1, name: '一般隐患' },
|
{ id: 2, name: '重大隐患' }
|
],
|
dangerSourceList: [
|
{ id: 1, name: '日常排查' },
|
{ id: 2, name: '综合性排查' },
|
{ id: 3, name: '专业性排查' },
|
{ id: 4, name: '季节性排查' },
|
{ id: 5, name: '重点时段及节假日前排查' },
|
{ id: 6, name: '事故类比排查' },
|
{ id: 7, name: '复产复工前排查' },
|
{ id: 8, name: '外聘专家诊断式排查' },
|
{ id: 9, name: '管控措施失效' },
|
{ id: 10, name: '其他' }
|
],
|
dangerResultList: [
|
{ id: 1, name: '无' },
|
{ id: 2, name: '轻伤' },
|
{ id: 3, name: '重伤' },
|
{ id: 4, name: '死亡' }
|
],
|
dangerTypeList: [
|
{ id: 1, name: '安全' },
|
{ id: 2, name: '工艺' },
|
{ id: 3, name: '电气' },
|
{ id: 4, name: '仪表' },
|
{ id: 5, name: '消防' },
|
{ id: 6, name: '总图' },
|
{ id: 7, name: '设备' },
|
{ id: 8, name: '其他' }
|
],
|
reportForm: {
|
dangerDesc: null,
|
depId: null,
|
produceDeviceId: null,
|
riskUnitId: null,
|
dangerSource: null,
|
dangerLevel: null,
|
dangerType: null,
|
dangerReason: null,
|
dangerResult: null,
|
rectifyType: null,
|
liablePersonId: null,
|
rectifyTime: null,
|
cost: null,
|
rectifyDesc: null
|
},
|
reportFormRules: {
|
dangerDesc: [{ required: true, message: '请填写隐患情况描述', trigger: 'blur' }],
|
depId: [{ required: true, message: '请选择隐患所属部门', trigger: 'change' }],
|
produceDeviceId: [{ required: true, message: '请选择生产装置', trigger: 'change' }]
|
}
|
});
|
|
//打开模态框
|
const openReportDialog = (type: string, value: { id: number }, departmentList: [], allProduceDeviceData: [], allSafetyRiskUnitData: []) => {
|
state.isShowReportDialog = true;
|
state.departmentList = departmentList;
|
state.allProduceDeviceData = JSON.parse(JSON.stringify(allProduceDeviceData));
|
state.allSafetyRiskUnitData = allSafetyRiskUnitData;
|
setTimeout(() => {
|
reportFormRef.value.clearValidate();
|
});
|
if (type === '新增') {
|
state.title = '新增隐患';
|
state.reportForm = {
|
dangerDesc: null,
|
depId: null,
|
produceDeviceId: null,
|
riskUnitId: null,
|
dangerSource: null,
|
dangerLevel: null,
|
dangerType: null,
|
dangerReason: null,
|
dangerResult: null,
|
rectifyType: null,
|
liablePersonId: null,
|
rectifyTime: null,
|
cost: null,
|
rectifyDesc: null
|
};
|
} else {
|
state.title = '修改隐患';
|
state.reportForm = JSON.parse(JSON.stringify(value));
|
}
|
};
|
|
//新增修改提交
|
const submitReport = async () => {
|
reportFormRef.value.validate(async (valid: Boolean) => {
|
if (valid) {
|
if (state.title === '新增隐患') {
|
let res = await hiddenReportApi().addHiddenReport(state.reportForm);
|
if (res.data.code === '200') {
|
ElMessage({
|
type: 'success',
|
message: '隐患新增成功',
|
duration: 2000
|
});
|
state.isShowReportDialog = false;
|
context.emit('refreshReport');
|
} else {
|
ElMessage({
|
type: 'warning',
|
message: res.data.msg
|
});
|
}
|
} else {
|
let res = await hiddenReportApi().modHiddenReport(state.reportForm);
|
if (res.data.code === '200') {
|
ElMessage({
|
type: 'success',
|
message: '隐患修改成功',
|
duration: 2000
|
});
|
state.isShowReportDialog = false;
|
context.emit('refreshReport');
|
} else {
|
ElMessage({
|
type: 'warning',
|
message: res.data.msg
|
});
|
}
|
}
|
} else {
|
ElMessage({
|
type: 'warning',
|
message: '请完善基本信息'
|
});
|
}
|
});
|
};
|
|
const changeUnit = () => {
|
state.reportForm.riskUnitId = null;
|
state.safetyRiskUnitData = state.allSafetyRiskUnitData.filter((item) => item.produceDeviceId === state.reportForm.produceDeviceId);
|
};
|
|
return {
|
...toRefs(state),
|
changeUnit,
|
reportFormRef,
|
submitReport,
|
openReportDialog
|
};
|
}
|
};
|
</script>
|
|
<style scoped>
|
:deep(.el-dialog__header) {
|
padding-bottom: 0px !important;
|
}
|
</style>
|