| | |
| | | </div> |
| | | <span v-if="unchecked != 0 && unusual != 0">,</span> |
| | | <div v-if="unusual != 0"> |
| | | 存在异常任务<span @click="toUnusual(1)">{{ unusual }}</span |
| | | 存在异常任务<span @click="toOverTime(5)">{{ unusual }}</span |
| | | >个 |
| | | </div> |
| | | 。 |
| | |
| | | if (res.data.code === '200') { |
| | | state.unchecked = res.data.data.noCheckTaskCount; |
| | | state.unusual = res.data.data.abnormalTaskCount; |
| | | state.uncheckedList = JSON.parse(JSON.stringify(res.data.data.noCheckTasks)); |
| | | console.log(state.uncheckedList, '555555555555555'); |
| | | state.abnormalList = JSON.parse(JSON.stringify(res.data.data.abnormalTasks)); |
| | | } else { |
| | | ElMessage({ |
| | | type: 'warning', |
| | |
| | | |
| | | const toOverTime = (id) => { |
| | | console.log(state.uncheckedList, 'list'); |
| | | debugger; |
| | | router.push({ |
| | | path: 'inspectRecord', |
| | | query: { |
| | | id: id, |
| | | dataList: JSON.stringify(state.uncheckedList), |
| | | total: state.uncheckedList.length |
| | | } |
| | | }); |
| | | }; |
| | | |
| | | // const toUnusual = (status) =>{ |
| | | // router.push({ |
| | | // path: 'inspectRecord', |
| | | // query: { |
| | | // status: status, |
| | | // dataList: state.abnormalList, |
| | | // total: state.abnormalList.length |
| | | // } |
| | | // }); |
| | | // } |
| | | const toDetails = (type: string, item) => { |
| | | inspectRecordDialogRef.value.showInspectRecordDialog(type, item, state.workTypeList, state.departmentList, state.timeType, state.classGroupList, state.quotaList, state.inspectPointAllList); |
| | | }; |
| | |
| | | font-size: 16px; |
| | | align-items: center; |
| | | padding: 10px 15px; |
| | | background: #ffd057; |
| | | background: #ffeb87; |
| | | border-radius: 8px; |
| | | border: 1px solid #f3001e; |
| | | border: 1px solid #ffae00; |
| | | |
| | | & > div { |
| | | vertical-align: middle; |
| | |
| | | </template> |
| | | |
| | | <script lang="ts"> |
| | | import { reactive, toRefs, ref } from 'vue'; |
| | | import {reactive, toRefs, ref, defineAsyncComponent} from 'vue'; |
| | | import { RFIDApi } from '/@/api/intellectInspectSystem/RFID'; |
| | | import { ElMessage } from 'element-plus/es'; |
| | | import { inspectTaskApi } from '/@/api/intellectInspectSystem/inspectTask'; |
| | |
| | | } |
| | | export default { |
| | | name: 'inspectTaskDialog', |
| | | components: { |
| | | SumData: defineAsyncComponent(() => import('/@/views/intellectInspect/inspectIndex/components/sum.vue')) |
| | | }, |
| | | setup(props: any, context: any) { |
| | | const inspectTaskFormRef = ref(); |
| | | const data = reactive<dataState>({ |
| | |
| | | data.ifShowInspectTaskDialog = true; |
| | | data.inspectPointConfirm = false; |
| | | data.title = '查看巡检记录'; |
| | | getSum(item.id) |
| | | inspectRecordApi() |
| | | .getInspectRecordById({ id: value.id, uuid: value.uuid }) |
| | | .then((res) => { |
| | |
| | | <el-button type="primary" :icon="Refresh" size="default" /> |
| | | </el-row> |
| | | <el-table ref="multipleTableRef" :data="tableData.inspectRecordData" style="width: 100%" height="calc(100% - 100px)" :header-cell-style="{ background: '#fafafa' }"> |
| | | <el-table-column property="taskName" label="任务名称" /> |
| | | <el-table-column property="taskName" label="任务名称"> |
| | | <template #default="scope"> |
| | | <div :class="hasJump == true && scope.row.startTime.slice(0, 10) == date&&(tableData.params.taskStatus == 4 || tableData.params.taskStatus == 5)?'redTit':''"> |
| | | {{scope.row.taskName}} |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column property="taskType" label="任务类型"> |
| | | <template #default="scope"> |
| | | <span> |
| | |
| | | </el-table-column> |
| | | <el-table-column property="startTime" label="任务开始时间" /> |
| | | <el-table-column prop="execUserName" label="执行人" show-overflow-tooltip></el-table-column> |
| | | <el-table-column property="taskStatus" label="任务状态"> |
| | | <el-table-column property="taskStatus" label="任务状态" width="180"> |
| | | <template #default="scope"> |
| | | <el-tag :type="scope.row.taskStatus === 1 ? 'info' : scope.row.taskStatus === 2 ? '' : scope.row.taskStatus === 3 ? 'success' : 'danger'"> |
| | | <el-tag :type="scope.row.resultStatus === 1? 'danger': scope.row.taskStatus === 1 ? 'info' : scope.row.taskStatus === 2 ? '' : scope.row.taskStatus === 3 ? 'success' : 'danger'"> |
| | | <span> |
| | | {{ parseNumber(scope.row.taskStatus, '任务状态') }} |
| | | {{ scope.row.resultStatus === 1?'已巡检存在异常':parseNumber(scope.row.taskStatus, '任务状态') }} |
| | | </span> |
| | | </el-tag> |
| | | </template> |
| | |
| | | import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue'; |
| | | import { ElTable, ElMessage } from 'element-plus'; |
| | | import { inspectRecordApi } from '/@/api/intellectInspectSystem/inspectRecord'; |
| | | import inspectRecordDialog from './components/inspectRecordDialog.vue'; |
| | | import inspectRecordDialog from '../../inspectIndex/components/inspectRecordDialog.vue'; |
| | | import { departmentApi } from '/@/api/systemManage/department'; |
| | | import { teamManageApi } from '/@/api/systemManage/personShiftManage/teamManage'; |
| | | import { inspectPointApi } from '/@/api/intellectInspectSystem/inspectPointManage'; |
| | |
| | | }; |
| | | |
| | | interface stateType { |
| | | isRed:boolean; |
| | | hasJump: boolean; |
| | | date: string; |
| | | tableData: { |
| | | inspectRecordData: []; |
| | | total: number; |
| | |
| | | validTime: string | null; |
| | | createUserId: number | null; |
| | | reportTime: string | null; |
| | | resultStatus: number | null |
| | | }; |
| | | }; |
| | | workTypeList: Array<type>; |
| | |
| | | const inspectRecordDialogRef = ref(); |
| | | const route = useRoute(); |
| | | const state = reactive<stateType>({ |
| | | hasJump: false, |
| | | tableData: { |
| | | inspectRecordData: [], |
| | | total: 0, |
| | |
| | | startTime: null, |
| | | validTime: null, |
| | | createUserId: null, |
| | | reportTime: null |
| | | reportTime: null, |
| | | resultStatus: null |
| | | } |
| | | }, |
| | | isRed: false, |
| | | date: '', |
| | | workTypeList: [ |
| | | { id: 1, name: '周期任务' }, |
| | | { id: 2, name: '单次任务' } |
| | |
| | | taskStatusList: [ |
| | | { id: 1, name: '待巡检' }, |
| | | { id: 2, name: '巡检中' }, |
| | | { id: 3, name: '已巡检' }, |
| | | { id: 3, name: '已巡检正常'}, |
| | | { id: 5, name: '已巡检存在异常' }, |
| | | { id: 4, name: '超时未完成巡检' } |
| | | ], |
| | | quotaList: [], |
| | |
| | | |
| | | //获取巡检记录数据 |
| | | const getInspectRecord = async () => { |
| | | let res = await inspectRecordApi().getInspectRecordList(state.tableData.params); |
| | | const data = JSON.parse(JSON.stringify(state.tableData.params)) |
| | | if(state.tableData.params.taskStatus == 3){ |
| | | data.taskStatus = 3 |
| | | data.resultStatus = 0 |
| | | } |
| | | if(state.tableData.params.taskStatus == 5){ |
| | | data.taskStatus = 3 |
| | | data.resultStatus = 1 |
| | | } |
| | | console.log(state.tableData.params.taskStatus,data.taskStatus,'data') |
| | | let res = await inspectRecordApi().getInspectRecordList(data); |
| | | if (res.data.code === '200') { |
| | | state.tableData.inspectRecordData = res.data.data.records; |
| | | state.tableData.inspectRecordData = JSON.parse(JSON.stringify(res.data.data.records)); |
| | | state.tableData.total = res.data.data.total; |
| | | } else { |
| | | ElMessage({ |
| | |
| | | } |
| | | }; |
| | | |
| | | // const turnRed =()=>{ |
| | | // date |
| | | // } |
| | | |
| | | const openInspectRecordDialog = (type: string, value: {}) => { |
| | | inspectRecordDialogRef.value.showInspectRecordDialog(type, value, state.workTypeList, state.departmentList, state.timeType, state.classGroupList, state.quotaList, state.inspectPointAllList); |
| | | }; |
| | |
| | | const onHandleCurrentChange = (val: number) => { |
| | | state.tableData.params.pageIndex = val; |
| | | getInspectRecord(); |
| | | state.isRed = false |
| | | }; |
| | | |
| | | // 时间格式化 |
| | | const timeForm = { |
| | | hour12: false, |
| | | year: 'numeric', |
| | | month: '2-digit', |
| | | day: '2-digit', |
| | | hour: '2-digit', |
| | | minute: '2-digit', |
| | | second: '2-digit' |
| | | }; |
| | | const reset = () => { |
| | | state.tableData.params = { |
| | | pageIndex: 1, |
| | |
| | | reportTime: null |
| | | }; |
| | | }; |
| | | |
| | | // 当前时间 |
| | | const getDateTime = () => { |
| | | const curTime = new Date().toLocaleString('zh', timeForm).replace(/\//g, '-'); |
| | | state.date = curTime.slice(0, 10); |
| | | }; |
| | | // 页面加载时 |
| | | onMounted(() => { |
| | | getDateTime() |
| | | if (route.query.id) { |
| | | state.hasJump = true |
| | | state.tableData.params.taskStatus = Number(route.query.id); |
| | | state.tableData.inspectRecordData = JSON.parse(route.query.dataList); |
| | | state.tableData.total = Number(route.query.total); |
| | | state.isRed = true |
| | | getInspectRecord(); |
| | | getQuotaList(); |
| | | getDepartmentData(); |
| | | getClassGroupData(); |
| | | getInspectTaskPoint(); |
| | | }else{ |
| | | getInspectRecord(); |
| | | getQuotaList(); |
| | | getDepartmentData(); |
| | | getClassGroupData(); |
| | | getInspectTaskPoint(); |
| | | } |
| | | // getInspectRecord(); |
| | | getQuotaList(); |
| | | getDepartmentData(); |
| | | getClassGroupData(); |
| | | getInspectTaskPoint(); |
| | | |
| | | }); |
| | | |
| | | return { |
| | |
| | | color: #0098f5; |
| | | } |
| | | } |
| | | .redTit{ |
| | | color: red; |
| | | } |
| | | .el-input { |
| | | width: 100% !important; |
| | | } |
| | |
| | | <div> |
| | | <img class="iconImg" src="../../assets/newMenu/icon1.png" /> |
| | | <div> |
| | | <div class="itemTit1">安全风险综合预警<br />预报平台</div> |
| | | <div class="enTit1">Security risk comprehensive early warning and forecast platform</div> |
| | | <div class="itemTit1">智能安全风险综合预警<br />预报平台</div> |
| | | <div class="enTit1">Intelligent Security Risk Comprehensive Forewarning and Forecasting Platform</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <div class="toplayer"> |
| | | <img class="iconImg" src="../../assets/newMenu/icon2.png" /> |
| | | <div> |
| | | <div class="itemTit">双重预防系统</div> |
| | | <div class="enTit">Double prevention</div> |
| | | <div class="itemTit">智能安全双重预防系统</div> |
| | | <div class="enTit">Intelligent Security Dual Prevention System</div> |
| | | </div> |
| | | </div> |
| | | <img class="bgImg" src="../../assets/newMenu/card-4.png" /> |
| | |
| | | <div class="toplayer"> |
| | | <img class="iconImg" src="../../assets/newMenu/icon3.png" /> |
| | | <div> |
| | | <div class="itemTit">智能巡检系统</div> |
| | | <div class="enTit">Intelligent inspection system</div> |
| | | <div class="itemTit">智能安全巡检系统</div> |
| | | <div class="enTit">Intelligent Security Patrol System</div> |
| | | </div> |
| | | </div> |
| | | <img class="bgImg" src="../../assets/newMenu/card-8.png" /> |
| | |
| | | <div class="toplayer"> |
| | | <img class="iconImg" src="../../assets/newMenu/icon4.png" /> |
| | | <div> |
| | | <div class="itemTit">特殊作业系统</div> |
| | | <div class="enTit">special work</div> |
| | | <div class="itemTit">智能安全特殊作业系统</div> |
| | | <div class="enTit">Intelligent Security Special Operating System</div> |
| | | </div> |
| | | </div> |
| | | <img class="bgImg" src="../../assets/newMenu/card-7.png" /> |
| | |
| | | <div class="toplayer"> |
| | | <img class="iconImg" src="../../assets/newMenu/icon5.png" /> |
| | | <div> |
| | | <div class="itemTit">目标责任管理系统</div> |
| | | <div class="enTit">Target Responsibility Management</div> |
| | | <div class="itemTit">安全目标责任管理系统</div> |
| | | <div class="enTit">Security Target Responsibility Management System</div> |
| | | </div> |
| | | </div> |
| | | <img class="bgImg" src="../../assets/newMenu/card-2.png" /> |
| | |
| | | <img class="iconImg" src="../../assets/newMenu/icon6.png" /> |
| | | <div> |
| | | <div class="itemTit">安全知识图谱系统</div> |
| | | <div class="enTit">Security Knowledge Graph</div> |
| | | <div class="enTit">Security Knowledge Graph System</div> |
| | | </div> |
| | | </div> |
| | | <img class="bgImg" src="../../assets/newMenu/card-3.png" /> |
| | |
| | | <img class="iconImg" src="../../assets/newMenu/icon7.png" /> |
| | | <div> |
| | | <div class="itemTit">设备综合管控系统</div> |
| | | <div class="enTit">Comprehensive equipment control</div> |
| | | <div class="enTit">Equipment Integrated Management and Control System</div> |
| | | </div> |
| | | </div> |
| | | <img class="bgImg" src="../../assets/newMenu/card-9.png" /> |
| | |
| | | <img class="iconImg" src="../../assets/newMenu/icon8.png" /> |
| | | <div> |
| | | <div class="itemTit">应急管理系统</div> |
| | | <div class="enTit">Emergency management</div> |
| | | <div class="enTit">Emergency Management System</div> |
| | | </div> |
| | | </div> |
| | | <img class="bgImg" src="../../assets/newMenu/card-5.png" /> |
| | |
| | | <div class="toplayer"> |
| | | <img class="iconImg" src="../../assets/newMenu/icon9.png" /> |
| | | <div> |
| | | <div class="itemTit">危险化学品全生命周期安全管理系统</div> |
| | | <div class="enTit">Full life cycle of hazardous chemicals</div> |
| | | <div class="itemTit">智能安全危险化学品全生命周期管控系统</div> |
| | | <div class="enTit">Intelligent Security Hazardous Chemicals Life Cycle Safety Management System </div> |
| | | </div> |
| | | </div> |
| | | <img class="bgImg" src="../../assets/newMenu/card-10.png" /> |
| | |
| | | <div class="toplayer"> |
| | | <img class="iconImg" src="../../assets/newMenu/icon10.png" /> |
| | | <div> |
| | | <div class="itemTit">事故管理系统</div> |
| | | <div class="enTit">Incident Management</div> |
| | | <div class="itemTit">安全事故管理系统</div> |
| | | <div class="enTit">Security Incident Management System</div> |
| | | </div> |
| | | </div> |
| | | <img class="bgImg" src="../../assets/newMenu/card-6.png" /> |
| | |
| | | <img class="iconImg" src="../../assets/newMenu/icon11.png" /> |
| | | <div> |
| | | <div class="itemTit">安全基础信息系统</div> |
| | | <div class="enTit">Basic data permissions</div> |
| | | <div class="enTit">Basic Security Information System</div> |
| | | </div> |
| | | </div> |
| | | <img class="bgImg" src="../../assets/newMenu/card-11.png" /> |
| | |
| | | .itemTit { |
| | | font-size: 28px; |
| | | line-height: 34px; |
| | | margin-bottom: 2px; |
| | | height: 40%; |
| | | color: #072270; |
| | | } |
| | | .enTit { |
| | | font-size: 18px; |
| | | font-size: 16px; |
| | | line-height: 20px; |
| | | color: #072270; |
| | | } |
| | |
| | | margin-bottom: 12px; |
| | | } |
| | | .enTit1 { |
| | | font-size: 22px; |
| | | font-size: 20px; |
| | | line-height: 24px; |
| | | color: #072270; |
| | | } |
| | |
| | | line-height: 30px; |
| | | height: 40%; |
| | | color: #072270; |
| | | margin-bottom: 1px; |
| | | margin-bottom: 2px; |
| | | } |
| | | .enTit { |
| | |
| | | const data = { pageSize: state.pageSize1, pageIndex: state.pageIndex1, searchParams: { workType: state.searchWord } }; |
| | | let res = await workApprovalApi().getApprovalListPage(data); |
| | | if (res.data.code === '200') { |
| | | console.log(res.data.data,'approval') |
| | | state.applyData = JSON.parse(JSON.stringify(res.data.data)); |
| | | state.applyData = state.applyData.map((item) => { |
| | | if (item.operators == null || item.operators == []) { |