import React, { useState, useEffect, useRef } from "react"; import { connect } from "react-redux"; import { Button, Form, Modal, Skeleton, Pagination, Table } from "@douyinfe/semi-ui"; import moment from "moment"; import PerfectScrollbar from "perfect-scrollbar"; import './inspection.less' import { log } from "ezuikit-js"; let projectScrollbar; let timer const Inspection = ({ dispatch, actions, user, route, statistic }) => { const { problem } = actions const [selectProject, setSelectProject] = useState([]) //所选项目 const [applyFilter, setApplyFilter] = useState([]) //应用筛选 const [patrolAbnormal, setPatrolAbnormal] = useState([]) //巡检异常信息 const [checkPatrol, setCheckPatrol] = useState({}) //巡检异常查询 const [unfold, setUnfold] = useState(true) //展开收起 const [picturePop, setPicturePop] = useState(false) //图片弹窗 const [pictureId, setPictureId] = useState() //图片id const [pictureData, setPictureData] = useState({}) //图片数据 const [notRead, setNotRead] = useState(0) //已阅图片数量 const api = useRef(); const unfoldApi = useRef(false); // console.log(actions); useEffect(() => { dispatch(problem.getProjectPoms()).then((res) => { // console.log(res.payload.data); if (res.success) { let project = [] let apply = [] res.payload.data?.rows?.map(v => { project.push({ name: v.pepProjectName || v.name || v.id, value: v.id }) v.apps.map(app => apply.push({ name: app.name, value: app.id })) }) setSelectProject(project) setApplyFilter(apply) } }) }, []) useEffect(() => { if (projectScrollbar) projectScrollbar.destroy() const domEquipment = document.getElementById("inspection"); if (unfold) { projectScrollbar = new PerfectScrollbar("#inspection", { suppressScrollY: true, }); if (domEquipment && projectScrollbar) projectScrollbar.update() } else { projectScrollbar = new PerfectScrollbar("#inspection", { suppressScrollX: true, }) if (domEquipment && projectScrollbar) projectScrollbar.update() } }) useEffect(() => { dispatch(problem.getAlarmLnspection(checkPatrol)).then((res) => { // console.log(res.payload.data); if (res.success) { setPatrolAbnormal(res.payload.data) setNotRead(res.payload.data.filter(v => !v.notedTime).length) } }) }, [checkPatrol]); useEffect(() => { if (patrolAbnormal && pictureId >= 0) { if (timer) clearTimeout(timer) timer = setTimeout(() => { if (!patrolAbnormal[pictureId]?.notedTime) { patrolAbnormal[pictureId].notedPepUser = user.name patrolAbnormal[pictureId].notedPepUserId = user.id patrolAbnormal[pictureId].notedTime = new Date() setPatrolAbnormal(patrolAbnormal) setNotRead(notRead - 1) setPictureData(patrolAbnormal[pictureId]) dispatch(problem.putAlarmApplicationNoted({ inspectionId: patrolAbnormal[pictureId].id })) } }, 2000) setPictureData(patrolAbnormal[pictureId]) } }, [pictureId]); return (
{statistic[route]} APPLY SEMI-AUTOMATIC INSPECTION
仅保留48小时内的图片数据,每日8时、14时、17时系统巡检一次。未阅共{notRead}个
{ setCheckPatrol({ appId: v.appId, noted: v.noted, projectId: v.projectId, timeStart: v.time == 'true' ? moment().startOf('day').format('YYYY-MM-DD HH:mm:ss') : v.time == 'false' ? moment().day(moment().day() - 1).startOf('day').format('YYYY-MM-DD HH:mm:ss') : "", timeEnd: v.time == 'true' ? moment().endOf('day').format('YYYY-MM-DD HH:mm:ss') : v.time == 'false' ? moment().day(moment().day() - 1).endOf('day').format('YYYY-MM-DD HH:mm:ss') : "", }) }} getFormApi={(formApi) => (api.current = formApi)} layout="horizontal" > {[{ name: '今日', value: 'true' }, { name: '昨日', value: 'false' }].map((item) => { return ( {item.name} ); })} {selectProject?.map((item) => { return ( {item.name} ); })} {applyFilter?.map((item) => { return ( {item.name} ); })} {[{ name: '已阅', value: 'noted' }, { name: '未阅', value: 'unnote' }].map((item) => { return ( {item.name} ); })}
document.getElementById('unfold').style.display = 'none'} onMouseOut={() => document.getElementById('unfold').style.display = 'block'} id="inspection" style={{ width: 'calc(100% - 20px)', marginLeft: 10, height: unfold ? 280 : 600, whiteSpace: unfold ? 'nowrap' : '', position: "relative", }}> {patrolAbnormal?.map((v, i) =>
{ setPicturePop(true) setPictureId(i); }} >
获取时间:{moment(v.createTime).format("YYYY-MM-DD HH:mm:ss")} {v.app?.name}
)}
e.stopPropagation()} onMouseOut={(e) => e.stopPropagation()} onClick={() => setUnfold(!unfold)} style={{ width: 'calc(100% - 20px)', marginLeft: 10, height: 24, background: unfold ? 'linear-gradient(180deg, rgba(36,139,255,0) 0%, rgba(36,139,255,0.09) 100%)' : 'linear-gradient(180deg, rgba(218,218,218,0) 0%, rgba(212,212,212,0.38) 100%)', borderRadius: 3, lineHeight: '24px', fontSize: 12, zIndex: 100, position: 'relative', top: unfold ? -20 : 6, left: 0, textAlign: 'center', color: unfold ? 'rgba(0,90,189,0.7)' : '#969799', cursor: 'pointer', }}>{unfold ? '展开更多' : '收起'}
{picturePop ? {pictureData.app?.name} 未阅 {notRead}/{patrolAbnormal.length}
} hasCancel={false} footer={
图片下载
} visible={true} onOk={() => { }} width={837} onCancel={() => { setPicturePop(false) if (timer) clearTimeout(timer) }} >
{pictureData.notedTime ? 核验信息:{pictureData.notedPepUser} {moment(pictureData.notedTime).format("YYYY-MM-DD HH:mm:ss")} : ""} 截取时间:{moment(pictureData.createTime).format("YYYY-MM-DD HH:mm:ss")}
: "" } ) } function mapStateToProps (state) { const { auth, global, members } = state; return { user: auth.user, actions: global.actions, // global: global, // members: members.data, }; } export default connect(mapStateToProps)(Inspection);