| | |
| | | <div class="system-role-container"> |
| | | <el-card shadow="hover"> |
| | | <div class="system-user-search mb15"> |
| | | <div class="basic-search"> |
| | | <span>风险等级:</span> |
| | | <el-select v-model="riskControlMeasureData.params.riskLevel" clearable filterable class="ml10" placeholder="请选择风险等级"> |
| | | <el-option |
| | | v-for="item in levelList" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.id" |
| | | ></el-option> |
| | | <div class="basic-line"> |
| | | <span>管控方式:</span> |
| | | <el-select class="input-box" v-model="riskControlMeasureData.params.controlType" placeholder="管控方式" clearable> |
| | | <el-option v-for="item in controlTypeList" :key="item.id" :label="item.name" :value="item.id"></el-option> |
| | | </el-select> |
| | | </div> |
| | | <div class="basic-search"> |
| | | <span>部门:</span> |
| | | <el-cascader |
| | | :options="departmentList" |
| | | :props="{ emitPath: false, checkStrictly: true, value: 'id', label: 'name' }" |
| | | placeholder="请选择部门" |
| | | clearable |
| | | filterable |
| | | v-model="riskControlMeasureData.params.depId" |
| | | > |
| | | </el-cascader> |
| | | <div class="basic-line"> |
| | | <span>安全风险事件:</span> |
| | | <el-select class="input-box" v-model="riskControlMeasureData.params.riskEventId" placeholder="安全风险事件" clearable> |
| | | <el-option v-for="item in allSafetyRiskEventData" :key="item.id" :label="item.riskEventName" :value="item.id"></el-option> |
| | | </el-select> |
| | | </div> |
| | | <el-button size="default" type="primary" class="ml10" @click="handleSearch"> |
| | | <el-button size="default" type="primary" class="ml10" v-throttle @click="handleSearch"> |
| | | <el-icon> |
| | | <ele-Search /> |
| | | </el-icon> |
| | |
| | | <el-icon> |
| | | <ele-FolderAdd /> |
| | | </el-icon> |
| | | 新增单元 |
| | | 新增措施 |
| | | </el-button> |
| | | </div> |
| | | <el-table :data="riskControlMeasureData.data" style="width: 100%"> |
| | | <el-table-column type="index" label="序号" width="60" /> |
| | | <el-table-column prop="produceDeviceName" label="生产装置名称" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="riskUnitName" label="安全风险分析单元名称" width="180" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="riskCode" label="安全风险分析对象编码" width="180" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="location" label="责任部门" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="status" label="责任人" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="riskEventName" label="安全风险事件名称" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="controlMeasureCode" label="风控措施编码" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="controlType" label="管控方式" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="checkContent" label="管控内容" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="classify1" label="管控措施分类1" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="classify2" label="管控措施分类2" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="classify3" label="管控措施分类3" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="measureDesc" label="措施说明" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="createByUserName" label="创建人" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="gtmCreate" label="创建时间" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="lastEditByUserName" label="最后修改人" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="gtmCreate" label="最后修改时间" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="gmtCreate" label="创建时间" show-overflow-tooltip> |
| | | <template #default="scope"> |
| | | <span>{{ dateFormat('YYYY-mm-dd HH:MM:SS', '2022-07-07T08:00:00') }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="lastEditUserName" label="最后修改人" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="gmtModitify" label="最后修改时间" show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="操作" width="150"> |
| | | <template #default="scope"> |
| | | <el-button size="small" text type="primary" @click="onOpenDialogRef('修改',scope.row)">修改</el-button> |
| | |
| | | import { ElMessageBox, ElMessage } from 'element-plus'; |
| | | import riskControlMeasureDialog from './components/riskControlMeasureDialog.vue'; |
| | | import { riskControlMeasureApi } from '/@/api/doublePreventSystem/riskControlMeasure/index.ts'; |
| | | import { departmentApi } from '/@/api/department'; |
| | | import { safetyRiskEventApi } from '/@/api/doublePreventSystem/safetyRiskEvent'; |
| | | |
| | | // 定义接口来定义对象的类型 |
| | | interface TableData { |
| | |
| | | params: { |
| | | pageIndex: number; |
| | | pageSize: number; |
| | | riskUnitName: string | null; |
| | | liableDep: number | null; |
| | | liablePerson: number | null; |
| | | controlType: number | null; |
| | | riskEventId: number | null; |
| | | }; |
| | | }; |
| | | departmentList:Array<DepartmentState>; |
| | | levelList:Array<levelListState>; |
| | | controlTypeList: Array<controlTypeType>; |
| | | classifyOneList: Array<classifyOneType>; |
| | | classifyTwoList: Array<classifyTwoType>; |
| | | allSafetyRiskEventData: Array<SafetyRiskEventDataState>; |
| | | } |
| | | interface levelListState { |
| | | interface controlTypeType {} |
| | | interface classifyOneType {} |
| | | interface classifyTwoType {} |
| | | interface SafetyRiskEventDataState {} |
| | | |
| | | } |
| | | interface DepartmentState { |
| | | |
| | | } |
| | | |
| | | export default ({ |
| | | export default { |
| | | name: 'riskControlMeasure', |
| | | components: { riskControlMeasureDialog }, |
| | | setup() { |
| | |
| | | params: { |
| | | pageIndex: 1, |
| | | pageSize: 10, |
| | | riskUnitName: null, |
| | | liableDep: null, |
| | | liablePerson: null, |
| | | controlType: null, |
| | | riskEventId: null |
| | | } |
| | | }, |
| | | }, |
| | | departmentList:[], |
| | | levelList:[{id:1,name:'低风险'},{id:2,name:'一般风险'},{id:3,name:'较大风险'},{id:4,name:'重大风险'},] |
| | | controlTypeList: [ |
| | | { id: 1, name: '自动化监控' }, |
| | | { id: 2, name: '隐患排查' } |
| | | ], |
| | | classifyOneList: [], |
| | | classifyTwoList: [], |
| | | allSafetyRiskEventData: [] |
| | | }); |
| | | |
| | | // 初始化表格数据 |
| | | const initRiskControlMeasureData = async () => { |
| | | let res = await riskControlMeasureApi().getRiskControlMeasureList(state.riskControlMeasureData.params) |
| | | let res = await riskControlMeasureApi().getRiskControlMeasureList(state.riskControlMeasureData.params); |
| | | if(res.data.code === '200'){ |
| | | state.riskControlMeasureData.data = res.data.data; |
| | | state.riskControlMeasureData.total = res.data.count; |
| | |
| | | ElMessage({ |
| | | type:'warning', |
| | | message:res.data.msg |
| | | }) |
| | | }); |
| | | } |
| | | }; |
| | | |
| | | //获取部门列表 |
| | | const getDepartmentData = async () => { |
| | | let res = await departmentApi().getDepartmentList() |
| | | const dateFormat = (fmt: any, date: any) => { |
| | | date = new Date(date); |
| | | fmt = |
| | | date.getFullYear() + |
| | | '-' + |
| | | (date.getMonth() + 1) + |
| | | '-' + |
| | | date.getDate() + |
| | | ' ' + |
| | | date.getHours().toString() + |
| | | ':' + |
| | | (date.getMinutes().toString() === '0' ? '00' : date.getMinutes().toString()) + |
| | | ':' + |
| | | (date.getSeconds().toString() === '0' ? '00' : date.getMinutes().toString()); |
| | | return fmt; |
| | | }; |
| | | |
| | | //获取安全风险事件 |
| | | const getAllSafetyRiskEvent = async () => { |
| | | let res = await safetyRiskEventApi().getAllSafetyRiskEventList(); |
| | | if(res.data.code === '200'){ |
| | | state.departmentList = res.data.data |
| | | state.allSafetyRiskEventData = JSON.parse(JSON.stringify(res.data.data)); |
| | | }else{ |
| | | ElMessage({ |
| | | type:'warning', |
| | | message:res.data.msg |
| | | }) |
| | | }); |
| | | } |
| | | }; |
| | | |
| | | //获取管控措施分类 |
| | | const getClassify = async () => { |
| | | let res = await riskControlMeasureApi().getClassifyData(); |
| | | if (res.data.code === '200') { |
| | | state.classifyOneList = res.data.data.filter((item: any) => item.parentId === null); |
| | | state.classifyTwoList = res.data.data.filter((item: any) => item.parentId !== null); |
| | | } else { |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: res.data.msg |
| | | }); |
| | | } |
| | | }; |
| | | |
| | | // 打开生产装置弹窗 |
| | | const onOpenDialogRef = (type: string, value: any) => { |
| | | riskControlMeasureDialogRef.value.openSafetyRiskEventDialog(type, value, state.departmentList); |
| | | riskControlMeasureDialogRef.value.openSafetyRiskEventDialog( |
| | | type, |
| | | value, |
| | | state.allSafetyRiskEventData, |
| | | state.classifyOneList, |
| | | state.classifyTwoList |
| | | ); |
| | | }; |
| | | |
| | | // 删除角色 |
| | | const onDelRiskControlMeasure = (row: any) => { |
| | | ElMessageBox.confirm(`此操作将永久删除角色名称:“${row.produceDeviceName}”,是否继续?`, '提示', { |
| | | ElMessageBox.confirm(`此操作将永久删除该条风险管控措施:“${row.produceDeviceName}”,是否继续?`, '提示', { |
| | | confirmButtonText: '确认', |
| | | cancelButtonText: '取消', |
| | | type: 'warning', |
| | | }).then(async () => { |
| | | let res = await riskControlMeasureApi().deleteRiskControlMeasure({id:row.id}) |
| | | type: 'warning' |
| | | }) |
| | | .then(async () => { |
| | | let res = await riskControlMeasureApi().deleteRiskControlMeasure({ id: row.id }); |
| | | if(res.data.code ==='200'){ |
| | | ElMessage({ |
| | | type:'success', |
| | | duration:2000, |
| | | message:'删除成功' |
| | | }) |
| | | await initRiskControlMeasureData() |
| | | }); |
| | | await initRiskControlMeasureData(); |
| | | }else{ |
| | | ElMessage({ |
| | | type:'warning', |
| | | message:res.data.msg |
| | | }) |
| | | }); |
| | | } |
| | | }).catch(() => {}); |
| | | }) |
| | | .catch(() => {}); |
| | | }; |
| | | |
| | | const handleSearch = () => { |
| | | initRiskControlMeasureData() |
| | | } |
| | | initRiskControlMeasureData(); |
| | | }; |
| | | |
| | | // 分页改变 |
| | | const onHandleSizeChange = (val: number) => { |
| | | state.riskControlMeasureData.params.pageSize = val; |
| | | initRiskControlMeasureData() |
| | | initRiskControlMeasureData(); |
| | | }; |
| | | |
| | | // 分页改变 |
| | | const onHandleCurrentChange = (val: number) => { |
| | | state.riskControlMeasureData.params.pageIndex = val; |
| | | initRiskControlMeasureData() |
| | | initRiskControlMeasureData(); |
| | | }; |
| | | |
| | | // 页面加载时 |
| | | onMounted(() => { |
| | | initRiskControlMeasureData(); |
| | | getDepartmentData(); |
| | | getAllSafetyRiskEvent(); |
| | | getClassify(); |
| | | }); |
| | | |
| | | return { |
| | | dateFormat, |
| | | handleSearch, |
| | | onOpenDialogRef, |
| | | onHandleSizeChange, |
| | |
| | | riskControlMeasureDialog, |
| | | riskControlMeasureDialogRef, |
| | | initRiskControlMeasureData, |
| | | ...toRefs(state), |
| | | ...toRefs(state) |
| | | }; |
| | | }, |
| | | }); |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .basic-search{ |
| | | display:inline-block; |
| | | padding-left: 10px; |
| | | } |
| | | </style> |
| | | <style scoped></style> |