import React, { useEffect, useState, useRef } from 'react'; import { connect } from 'react-redux'; import { Timeline, Card, Button, Modal, Form } from '@douyinfe/semi-ui'; import { push } from 'react-router-redux'; import '../style.less' import PerfectScrollbar from "perfect-scrollbar"; import repairFQA from '../../means/containers/repairFQA'; import { Setup, OutHidden } from "$components"; const { Meta } = Card; let newScrollbar; let overviewScrollbar; let memberScrollbar; let equipmentScrollbar; let webScrollbar; let problemsScrollbar; let alarmScrollbar; const Control = (props) => { const { dispatch, actions, user, loading, socket ,pepProjectId} = props const { control } = actions const stationList = [ 'url(/assets/images/console/lan_1.png)', 'url(/assets/images/console/lv_1.png)', 'url(/assets/images/console/huang_1.png)', 'url(/assets/images/console/hong_1.png)', ] const [timelineList, setTimelineList] = useState(['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''])//最新动态列表 const [memberList, setMemberList] = useState(['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''])//相关成员列表 const [equipmentList, setEquipmentList] = useState(['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''])//平台设备接入列表 const [webList, setWebList] = useState(['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''])//关联web应用列表 const [problemsList, setProblemsList] = useState(['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''])//异常&问题列表 const [setup, setSetup] = useState(false); //设置是否显现 const [tableType, setTableType] = useState(''); //localStorage存储名 const [tool, setTool] = useState(false); //工具添加修改弹窗 const [alter, setAlter] = useState(false); //工具添加或编辑 const [compile, setCompile] = useState({}); //工具编辑的内容 const [toolShow, setToolShow] = useState([]); //工具展示 const [tableSetup, setTableSetup] = useState([]); //单一表格设置信息 const [exhibition, setExhibition] = useState({ workbench: [] }); //页面结构 const [workData, setWorkData] = useState({}); //我的工作台数据 const FormApi = useRef() useEffect(() => { consoleToollink() //初始化表格显示设置 let data = ['workbench'] data.map(v => { localStorage.getItem(v) == null ? localStorage.setItem(v, JSON.stringify(show[v])) : ""; attribute(v) }) }, []) useEffect(() => { dispatch(control.geteteConsoleCount({pepProjectId:pepProjectId})).then(res => { if (res.success) setWorkData(res.payload.data) }) }, [pepProjectId]) useEffect(() => { newScrollbar = new PerfectScrollbar("#news", { suppressScrollX: true, }); const domProject = document.getElementById("news"); if (domProject && newScrollbar) { newScrollbar.update(); } overviewScrollbar = new PerfectScrollbar("#overview", { suppressScrollY: true, }); const domProject1 = document.getElementById("overview"); if (domProject1 && overviewScrollbar) { overviewScrollbar.update(); } memberScrollbar = new PerfectScrollbar("#member", { suppressScrollX: true, }); const domProject2 = document.getElementById("member"); if (domProject2 && memberScrollbar) { memberScrollbar.update(); } equipmentScrollbar = new PerfectScrollbar("#equipment", { suppressScrollX: true, }); const domProject3 = document.getElementById("equipment"); if (domProject3 && equipmentScrollbar) { equipmentScrollbar.update(); } webScrollbar = new PerfectScrollbar("#web", { suppressScrollX: true, }); const domProject4 = document.getElementById("web"); if (domProject4 && webScrollbar) { webScrollbar.update(); } problemsScrollbar = new PerfectScrollbar("#problems", { suppressScrollX: true, }); const domProject5 = document.getElementById("problems"); if (domProject5 && problemsScrollbar) { problemsScrollbar.update(); } alarmScrollbar = new PerfectScrollbar("#alarm", { suppressScrollY: true, }); const domProject6 = document.getElementById("alarm"); if (domProject6 && alarmScrollbar) { alarmScrollbar.update(); } // ACTION 示例 // dispatch(actions.example.getMembers(user.orgId)) }) const consoleToollink = () => { dispatch(control.getConsoleToollink()).then(res => { if (res.success) setToolShow(res.payload.data) }) } let Select = { workbench: ['project', 'data', 'app', 'device'], statistical: [], analyse: [], dynamic: [], } let show = { workbench: ['project', 'data', 'app', 'device'], statistical: [], analyse: [], dynamic: [], } let listAll = [ { name: '关注的项目', sort: 1, key: 'project', data: workData?.projects, img: 'url(/assets/images/console/lan_1.png)' }, { name: '数据告警', sort: 2, key: 'data', data: workData?.dataSurplus, img: 'url(/assets/images/console/lv_1.png)' }, { name: '应用告警', sort: 2, key: 'app', data: workData?.appSurplus, img: 'url(/assets/images/console/hong_1.png)' }, { name: '设备告警', sort: 2, key: 'device', data: workData?.toolSurplus, img: 'url(/assets/images/console/hong_1.png)' }, ] console.log(workData); console.log(listAll); useEffect(() => { attribute('workbench') }, [workData]) const attribute = (title) => { let take = localStorage.getItem(title) ? JSON.parse(localStorage.getItem(title)) : []; let data = Select[title].map(v => { let dataTitle = listAll.find(vv => v == vv.key) || {} return { name: dataTitle.name, value: dataTitle.key } }) let TableDisplay = take?.map(v => listAll?.find(vv => v == vv.key)) TableDisplay.sort((a, b) => a.sort - b.sort) setExhibition({ ...exhibition, [title]: TableDisplay }) setTableSetup([{ list: data }]) } return ( // 11 ? : <>
{/* 头部 */}
HI,欢迎回来,
{user?.name}
{/* 主体 */}
{/* 左边 */}
{/* 工作台和统计概览 */}
{/* 我的工作台 */}
我的工作台
MY WORK STATION
{ setSetup(true) setTableType('workbench') }} />
剩余问题:
{(workData?.appSurplus + workData?.dataSurplus + workData?.toolSurplus) || 0}
今日新增问题:
{(workData?.appNewAdd + workData?.dataNewAdd + workData?.toolNewAdd) || 0}
今日处理:
{(workData?.appConfirme + workData?.dataConfirme + workData?.toolConfirme) || 0}
{/* 循环类型 */}
{exhibition['workbench']?.map((item, index) => { return (
{item.name} {item.name == '关注的项目' ? ' ( 个 )' : ' ( 条 )'}
{item.data}
{item.name == '关注的项目' ? '' :
待处理
}
) }) }
{/* 统计概览 */}
统计概览
STATISTICAL OVERVIEW
setSetup(true)} />
{/* 项目里程碑 */}
项目里程碑
立项时间:
2022-5-12
施工时间:
2022-5-12至2022-12-12
内验时间:
2023-1-18
外验时间:
2023-3-18
工程维保时间:
2022-11-11
售后维修时间:
2022-11-11至2023-12-14
进行中
{/* 相关成员 */}
相关成员
{memberList.map((item, index) => { return (
成员
刘昊然
(负责人)
行业服务部
) })}
{/* 平台设备接入 */}
平台设备接入
{ equipmentList.map((item, index) => { return (
5阶ZK1高清摄球机
视频
网络 {/* 网络 */}
在线
{/*
掉线
*/}
) }) }
{/* 关联web应用 */}
关联web应用
{ webList.map((item, index) => { return (
web应用
superchangnan.anxiny
第三方
) }) }
{/* 异常&问题 */}
异常&问题
{ problemsList.map((item, index) => { return (
【告警源A】数据信息中断,诊断为 服务异常,请前往确认
2022-05-21 15:23:41
) }) }
{/* BI分析模块 */}
BI分析模块
BI ANAL YSIS MODEL
setSetup(true)} />
{/* 右边 */}
{/* 最新动态 */}
最新动态
RECENT NEWS
setSetup(true)} />
{timelineList.map((item, index) => { return ( A项目DTU设备状态异常,诊断为离线 ) })}
{/* 我常用的工具 */}
我常用的工具
MY USUAL TOOLS
{toolShow.length > 0 ? toolShow?.map(v =>
{ document.getElementById(v.id + 'name').style.display = 'none' }} id={v.id + v.name} style={{ marginTop: 24, position: 'relative', display: "inline-block", cursor: 'pointer' }}>
{ setTool(true) setAlter(true) setCompile({ id: v.id, name: v.name, link: v.link, }) }} >编辑
{ dispatch(control.deleteConsoleToollink(v.id)).then(res => { if (res.success) consoleToollink() }) }} >删除
) : ""}
{/* 页面各个设置弹窗 */} { setup ? ( { setSetup(false); attribute(tableType); setTableType('') }} /> ) : ( "" ) } {/* 工具添加修改弹窗 */} {tool ? { setTool(false) setAlter(false) setCompile({}) }} onOk={() => { FormApi.current.validate().then((v) => { console.log(v); dispatch(control.putConsoleToollink({ id: compile?.id, name: v.name, link: v.link })).then(res => { if (res.success) { setTool(false) setAlter(false) setCompile({}) consoleToollink() } }) }) }} >
console.log(values)} getFormApi={(formApi) => (FormApi.current = formApi)} >
: "" } ) } function mapStateToProps (state) { const { auth, global, members, webSocket } = state; return { // loading: members.isRequesting, user: auth.user, actions: global.actions, pepProjectId: global.pepProjectId, // members: members.data, // socket: webSocket.socket }; } export default connect(mapStateToProps)(Control);