From fd285d6245ddd54c2eef8237eb878f573d665f94 Mon Sep 17 00:00:00 2001 From: Your Name <123456> Date: 星期四, 07 七月 2022 18:27:39 +0800 Subject: [PATCH] lct --- src/views/doublePreventSystem/riskLevelManage/riskControlMeasure/index.vue | 417 ++++++++++++++++++++++++++++++++--------------------------- 1 files changed, 226 insertions(+), 191 deletions(-) diff --git a/src/views/doublePreventSystem/riskLevelManage/riskControlMeasure/index.vue b/src/views/doublePreventSystem/riskLevelManage/riskControlMeasure/index.vue index 080b81c..6d79aa1 100644 --- a/src/views/doublePreventSystem/riskLevelManage/riskControlMeasure/index.vue +++ b/src/views/doublePreventSystem/riskLevelManage/riskControlMeasure/index.vue @@ -2,235 +2,270 @@ <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-button> - <el-button size="default" type="success" class="ml10" @click="onOpenDialogRef('新增','')"> + <el-button size="default" type="success" class="ml10" @click="onOpenDialogRef('新增', '')"> <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> + <el-button size="small" text type="primary" @click="onOpenDialogRef('修改', scope.row)">修改</el-button> <el-button size="small" text type="danger" @click="onDelRiskControlMeasure(scope.row)">删除</el-button> </template> </el-table-column> </el-table> <el-pagination - @size-change="onHandleSizeChange" - @current-change="onHandleCurrentChange" - class="mt15" - :pager-count="5" - :page-sizes="[10, 20, 30]" - v-model:current-page="riskControlMeasureData.params.pageIndex" - background - v-model:page-size="riskControlMeasureData.params.pageSize" - layout="total, sizes, prev, pager, next, jumper" - :total="riskControlMeasureData.total" - > - </el-pagination> + @size-change="onHandleSizeChange" + @current-change="onHandleCurrentChange" + class="mt15" + :pager-count="5" + :page-sizes="[10, 20, 30]" + v-model:current-page="riskControlMeasureData.params.pageIndex" + background + v-model:page-size="riskControlMeasureData.params.pageSize" + layout="total, sizes, prev, pager, next, jumper" + :total="riskControlMeasureData.total" + > + </el-pagination> </el-card> - <riskControlMeasureDialog ref="riskControlMeasureDialogRef" @refreshRiskControlMeasure ="initRiskControlMeasureData"/> + <riskControlMeasureDialog ref="riskControlMeasureDialogRef" @refreshRiskControlMeasure="initRiskControlMeasureData" /> </div> </template> <script lang="ts"> - import { toRefs, reactive, onMounted, ref } from 'vue'; - 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 { toRefs, reactive, onMounted, ref } from 'vue'; +import { ElMessageBox, ElMessage } from 'element-plus'; +import riskControlMeasureDialog from './components/riskControlMeasureDialog.vue'; +import { riskControlMeasureApi } from '/@/api/doublePreventSystem/riskControlMeasure/index.ts'; +import { safetyRiskEventApi } from '/@/api/doublePreventSystem/safetyRiskEvent'; - // 定义接口来定义对象的类型 - interface TableData { - roleName: string; - roleSign: string; - describe: string; - sort: number; - status: boolean; - createTime: string; - } - interface TableDataState { - riskControlMeasureData: { - data: Array<TableData>; - total: number; - loading: boolean; - params: { - pageIndex: number; - pageSize: number; - riskUnitName: string | null; - liableDep: number | null; - liablePerson: number | null; - }; +// 定义接口来定义对象的类型 +interface TableData { + roleName: string; + roleSign: string; + describe: string; + sort: number; + status: boolean; + createTime: string; +} +interface TableDataState { + riskControlMeasureData: { + data: Array<TableData>; + total: number; + loading: boolean; + params: { + pageIndex: number; + pageSize: number; + controlType: number | null; + riskEventId: number | null; }; - departmentList:Array<DepartmentState>; - levelList:Array<levelListState>; - } - interface levelListState { + }; + controlTypeList: Array<controlTypeType>; + classifyOneList: Array<classifyOneType>; + classifyTwoList: Array<classifyTwoType>; + allSafetyRiskEventData: Array<SafetyRiskEventDataState>; +} +interface controlTypeType {} +interface classifyOneType {} +interface classifyTwoType {} +interface SafetyRiskEventDataState {} - } - interface DepartmentState { - - } - - export default ({ - name: 'riskControlMeasure', - components: { riskControlMeasureDialog }, - setup() { - const riskControlMeasureDialogRef = ref(); - const state = reactive<TableDataState>({ - riskControlMeasureData: { - data: [], - total: 0, - loading: false, - params: { - pageIndex: 1, - pageSize: 10, - riskUnitName: null, - liableDep: null, - liablePerson: null, - }, - }, - departmentList:[], - levelList:[{id:1,name:'低风险'},{id:2,name:'一般风险'},{id:3,name:'较大风险'},{id:4,name:'重大风险'},] - }); - - // 初始化表格数据 - const initRiskControlMeasureData = async () => { - 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; - }else{ - ElMessage({ - type:'warning', - message:res.data.msg - }) +export default { + name: 'riskControlMeasure', + components: { riskControlMeasureDialog }, + setup() { + const riskControlMeasureDialogRef = ref(); + const state = reactive<TableDataState>({ + riskControlMeasureData: { + data: [], + total: 0, + loading: false, + params: { + pageIndex: 1, + pageSize: 10, + controlType: null, + riskEventId: null } - }; + }, + controlTypeList: [ + { id: 1, name: '自动化监控' }, + { id: 2, name: '隐患排查' } + ], + classifyOneList: [], + classifyTwoList: [], + allSafetyRiskEventData: [] + }); - //获取部门列表 - const getDepartmentData = async () => { - let res = await departmentApi().getDepartmentList() - if(res.data.code === '200'){ - state.departmentList = res.data.data - }else{ - ElMessage({ - type:'warning', - message:res.data.msg - }) - } - } - - // 打开生产装置弹窗 - const onOpenDialogRef = (type: string, value: any) => { - riskControlMeasureDialogRef.value.openSafetyRiskEventDialog(type, value, state.departmentList); - }; - - // 删除角色 - const onDelRiskControlMeasure = (row: any) => { - ElMessageBox.confirm(`此操作将永久删除角色名称:“${row.produceDeviceName}”,是否继续?`, '提示', { - confirmButtonText: '确认', - cancelButtonText: '取消', + // 初始化表格数据 + const initRiskControlMeasureData = async () => { + 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; + } else { + ElMessage({ 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() - }else{ - ElMessage({ - type:'warning', - message:res.data.msg - }) - } - }).catch(() => {}); - }; - - const handleSearch = () => { - initRiskControlMeasureData() + message: res.data.msg + }); } + }; - // 分页改变 - const onHandleSizeChange = (val: number) => { - state.riskControlMeasureData.params.pageSize = val; - initRiskControlMeasureData() - }; + 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 onHandleCurrentChange = (val: number) => { - state.riskControlMeasureData.params.pageIndex = val; - initRiskControlMeasureData() - }; + //获取安全风险事件 + const getAllSafetyRiskEvent = async () => { + let res = await safetyRiskEventApi().getAllSafetyRiskEventList(); + if (res.data.code === '200') { + state.allSafetyRiskEventData = JSON.parse(JSON.stringify(res.data.data)); + } else { + ElMessage({ + type: 'warning', + message: res.data.msg + }); + } + }; - // 页面加载时 - onMounted(() => { - initRiskControlMeasureData(); - getDepartmentData(); - }); + //获取管控措施分类 + 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 + }); + } + }; - return { - handleSearch, - onOpenDialogRef, - onHandleSizeChange, - onDelRiskControlMeasure, - onHandleCurrentChange, - riskControlMeasureDialog, - riskControlMeasureDialogRef, - initRiskControlMeasureData, - ...toRefs(state), - }; - }, - }); + // 打开生产装置弹窗 + const onOpenDialogRef = (type: string, value: any) => { + riskControlMeasureDialogRef.value.openSafetyRiskEventDialog( + type, + value, + state.allSafetyRiskEventData, + state.classifyOneList, + state.classifyTwoList + ); + }; + + // 删除角色 + const onDelRiskControlMeasure = (row: any) => { + ElMessageBox.confirm(`此操作将永久删除该条风险管控措施:“${row.produceDeviceName}”,是否继续?`, '提示', { + confirmButtonText: '确认', + cancelButtonText: '取消', + 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(); + } else { + ElMessage({ + type: 'warning', + message: res.data.msg + }); + } + }) + .catch(() => {}); + }; + + const handleSearch = () => { + initRiskControlMeasureData(); + }; + + // 分页改变 + const onHandleSizeChange = (val: number) => { + state.riskControlMeasureData.params.pageSize = val; + initRiskControlMeasureData(); + }; + + // 分页改变 + const onHandleCurrentChange = (val: number) => { + state.riskControlMeasureData.params.pageIndex = val; + initRiskControlMeasureData(); + }; + + // 页面加载时 + onMounted(() => { + initRiskControlMeasureData(); + getAllSafetyRiskEvent(); + getClassify(); + }); + + return { + dateFormat, + handleSearch, + onOpenDialogRef, + onHandleSizeChange, + onDelRiskControlMeasure, + onHandleCurrentChange, + riskControlMeasureDialog, + riskControlMeasureDialogRef, + initRiskControlMeasureData, + ...toRefs(state) + }; + } +}; </script> -<style scoped> -.basic-search{ - display:inline-block; - padding-left: 10px; -} -</style> +<style scoped></style> -- Gitblit v1.9.2