diff --git a/web/client/assets/images/problem/setup.png b/web/client/assets/images/problem/setup.png
new file mode 100644
index 0000000..58aa294
Binary files /dev/null and b/web/client/assets/images/problem/setup.png differ
diff --git a/web/client/src/components/setup.jsx b/web/client/src/components/setup.jsx
index 9ff3a55..c4cd070 100644
--- a/web/client/src/components/setup.jsx
+++ b/web/client/src/components/setup.jsx
@@ -11,6 +11,9 @@ function Setup(props) {
tableType,
tableList
} = props;
+
+ console.log(tableType,
+ tableList);
const [check, setCheck] = useState([]);
const checkboxcss = { width: "25%", height: 16, margin: "0 0 20px 0" };
@@ -98,7 +101,7 @@ function Setup(props) {
{item.title}
- {item.list.map((itm) => {
+ {item.list?.map((itm) => {
return (
{
}
}}
style={{
- height: 60,
+ height: 50,
minWidth: 520,
background: '#1D2343',
backgroundSize: "100% 100%",
@@ -32,7 +32,7 @@ const Header = (props) => {
logo: (
),
text: "",
diff --git a/web/client/src/layout/containers/layout/index.jsx b/web/client/src/layout/containers/layout/index.jsx
index 320d652..dcf46dc 100644
--- a/web/client/src/layout/containers/layout/index.jsx
+++ b/web/client/src/layout/containers/layout/index.jsx
@@ -237,7 +237,7 @@ const LayoutContainer = props => {
}}
/>
-
+
{leftShow ? (
{
+
+
+ return (
+
+
+
+
暂未开放敬请期待
+
暂未开放敬请期待
+
暂未开放敬请期待
+
暂未开放敬请期待
+
+
+
+ )
+}
+
+
+function mapStateToProps (state) {
+ const { auth, global, members } = state;
+ return {
+ // user: auth.user,
+ // actions: global.actions,
+ // global: global,
+ // members: members.data,
+ };
+}
+export default connect(mapStateToProps)(Statistics);
diff --git a/web/client/src/sections/problem/components/tableData.jsx b/web/client/src/sections/problem/components/tableData.jsx
new file mode 100644
index 0000000..17eddf2
--- /dev/null
+++ b/web/client/src/sections/problem/components/tableData.jsx
@@ -0,0 +1,167 @@
+import React, { useState, useEffect, useRef } from "react";
+import { connect } from "react-redux";
+import { Button, Form, Modal, Skeleton, Pagination, Table } from "@douyinfe/semi-ui";
+import { SkeletonScreen, } from "$components";
+
+
+const TableData = ({ dispatch, actions, route, collectData, setSetup }) => {
+
+ const api = useRef();
+
+ useEffect(() => {
+
+ }, [route])
+
+
+
+ return (
+ <>
+
+
+
+
)
+ } else {
+ frame.push(
+ {v.data?.map((item) => {
+ return (
+
+ {item.name}
+
+ );
+ })}
+ )
+ }
+ })
+ frame.push(
console.log(v)}
+ />)
+ return frame
+ })()}
+
+
+
setSetup(true)} />
+
+
+
+
+
+ {
+ if (index % 1 === 0) {
+ return { style: { background: '' } }
+ }
+ }}
+ />
+
+
+
+ 共{100}个设备
+
+
{
+ // setQuery({ limit: pageSize, page: currentPage - 1 });
+ // page.current = currentPage - 1
+ }}
+ />
+
+
+ >
+ )
+}
+
+
+function mapStateToProps (state) {
+ const { auth, global, members } = state;
+ return {
+ // user: auth.user,
+ // actions: global.actions,
+ // global: global,
+ // members: members.data,
+ };
+}
+export default connect(mapStateToProps)(TableData);
diff --git a/web/client/src/sections/problem/containers/dataAlarm.jsx b/web/client/src/sections/problem/containers/dataAlarm.jsx
index 720ab94..5d9206d 100644
--- a/web/client/src/sections/problem/containers/dataAlarm.jsx
+++ b/web/client/src/sections/problem/containers/dataAlarm.jsx
@@ -1,35 +1,261 @@
-import React, { useEffect, useState } from 'react';
-import { connect } from 'react-redux';
-import { IconAlertCircle } from '@douyinfe/semi-icons';
+import React, { useEffect, useState } from 'react'
+import { connect } from 'react-redux'
+import { IconAlertCircle } from '@douyinfe/semi-icons'
+import Statistics from '../components/statistics'
+import TableData from '../components/tableData'
+import { Setup } from "$components";
+
import '../style.less'
-const DataAlarm = (props) => {
- const { dispatch, actions, user, loading, socket } = props
- const [abnormalLenght, setAbnormalLenght] = useState(1) //异常数量
+const DataAlarm = ({ match, dispatch, actions, user, loading, socket }) => {
+
+ const [route, setRoute] = useState('') //子页面路由
+ const [abnormalLenght, setAbnormalLenght] = useState(0) //异常数量
+ const [collect, setCollect] = useState([]) //搜索结构
+ const [setup, setSetup] = useState(false); //表格设置是否显现
+ const [tableSetup, setTableSetup] = useState([]); //单一表格设置信息
+
+ const tableType = { dataLnterrupt: 'dataLnterrupt', dataAbnormal: 'dataAbnormal', strategyHit: 'strategyHit', videoAbnormal: 'videoAbnormal', useAbnormal: 'useAbnormal', deviceAbnormal: 'deviceAbnormal' }
+
useEffect(() => {
- console.log(props);
+ setRoute(match.url.substring(match.url.lastIndexOf("/") + 1, match.url.length))
+ console.log(match.url)
+ console.log(tableType);
}, [])
+
+ useEffect(() => {
+ attribute(tableType[route], route);
+ }, [route])
+
+
+ //搜索结构
+ const collectData = {
+ dataLnterrupt: [ //数据中断(dataLnterrupt)
+ { name: '搜索', field: '1' },
+ {
+ name: '中断类型', field: '2',
+ data: [
+ { name: '服务异常', value: '11' },
+ { name: '链接中断', value: '22' },
+ { name: '设备异常', value: '33' }]
+ },
+ {
+ name: '中断状态', field: '3',
+ data: [
+ { name: '当前', value: '11' },
+ { name: '历史', value: '22' }]
+ }],
+ dataAbnormal: [ //数据异常(dataAbnormal)
+ { name: '搜索', field: '1' },
+ {
+ name: '异常类型', field: '2',
+ data: [
+ { name: '超远程', value: '11' },
+ { name: '超限幅', value: '22' }]
+ },
+ {
+ name: '异常状态', field: '3',
+ data: [
+ { name: '当前', value: '11' },
+ { name: '历史', value: '22' }]
+ }],
+ strategyHit: [ // 策略命中(strategyHit)
+ { name: '搜索', field: '1' },
+ {
+ name: '策略类型', field: '2',
+ data: [
+ { name: '超阀值', value: '11' },
+ { name: '防驶入告警', value: '22' },
+ { name: '设备关闭', value: '33' },
+ { name: '超围栏', value: '44' }]
+ },
+ {
+ name: '命中状态', field: '3',
+ data: [
+ { name: '当前', value: '11' },
+ { name: '历史', value: '22' }]
+ }],
+ videoAbnormal: [ // 视频异常(videoAbnormal)
+ { name: '搜索', field: '1' },
+ {
+ name: '设备类型', field: '2',
+ data: [
+ { name: '枪机', value: '11' },
+ { name: '球机', value: '22' },
+ { name: '其他', value: '33' }]
+ },
+ {
+ name: '异常状态', field: '3',
+ data: [
+ { name: '当前', value: '11' },
+ { name: '历史', value: '22' }]
+ }],
+ useAbnormal: [ // 应用异常(useAbnormal)
+ { name: '搜索', field: '1' },
+ {
+ name: '异常类型', field: '2',
+ data: [
+ { name: '接口报错', value: '11' },
+ { name: '加载超时', value: '22' },
+ { name: '元素异常', value: '33' }]
+ },
+ {
+ name: '异常状态', field: '3',
+ data: [
+ { name: '当前', value: '11' },
+ { name: '历史', value: '22' }]
+ }],
+ deviceAbnormal: [ // 设备告警(deviceAbnormal)
+ { name: '搜索', field: '1' },
+ {
+ name: '设备类型', field: '2',
+ data: [
+ { name: '传感器', value: '11' },
+ { name: 'DTU', value: '22' },
+ { name: '服务器', value: '33' }]
+ },
+ {
+ name: '异常状态', field: '3',
+ data: [
+ { name: '当前', value: '11' },
+ { name: '历史', value: '22' }]
+ },
+ {
+ name: '异常类型', field: '4',
+ data: [
+ { name: '离线', value: '11' }]
+ }],
+ common: {
+ name: '持续时间',
+ field: '5'
+ }
+ }
+
+ //表格设置信息
+ const tableList = {
+ dataLnterrupt: ['1', '2', '3', '4', '6', '9', '7', '5', '10', '8', '11', '12', '13', '14'],
+ dataAbnormal: ['1', '2', '3', '4', '15', '16', '9', '7', '5', '10', '8', '11', '12', '13'],
+ strategyHit: ['1', '2', '3', '17', '18', '7', '5', '10', '8', '11', '12', '13'],
+ videoAbnormal: ['1', '2', '3', '19', '20', '21', '22', '5', '6', '7', '8', '12', '13'],
+ useAbnormal: ['1', '23', '24', '15', '25', '7', '8', '12', '13'],
+ deviceAbnormal: ['1', '2', '3', '19', '15', '21', '5', '6', '7', '8', '12', '13'],
+ }
+ //表格默认配置信息
+ const columns = {
+ dataLnterrupt: ['0', '1', '2', '3', '4', '5', '6', '7', '8',],
+ dataAbnormal: ['0', '1', '2', '3', '15', '5', '6', '7', '8'],
+ strategyHit: ['0', '1', '2', '3', '17', '5', '10', '11', '7', '8'],
+ videoAbnormal: ['0', '1', '2', '3', '21', '20', '5', '7', '8'],
+ useAbnormal: ['0', '1', '23', '24', '15', '25', '7', '8'],
+ deviceAbnormal: ['0', '1', '2', '3', '15', '19', '5', '7', '8'],
+ }
+ //所有表格信息
+ const columnAll = [
+ { name: '问题编号', value: '0' },
+ { name: '项目名称', value: '1' },
+ { name: '结构物名称', value: '2' },
+ { name: '告警源', value: '3' },
+ { name: '中断类型', value: '4' },
+ { name: '告警信息', value: '5' },
+ { name: '常见原因', value: '6' },
+ { name: '产生时间', value: '7' },
+ { name: '更新时间', value: '8' },
+ { name: '服务器地址', value: '9' },
+ { name: '告警等级', value: '10' },
+ { name: '产生次数', value: '11' },
+ { name: '确认信息', value: '12' },
+ { name: '确认/恢复时间', value: '13' },
+ { name: '项目阶段', value: '14' },
+ { name: '异常类型', value: '15' },
+ { name: '异常原因', value: '16' },
+ { name: '策略类型', value: '17' },
+ { name: '命中状态', value: '18' },
+ { name: '位置信息', value: '19' },
+ { name: '设备类型', value: '20' },
+ { name: '设备厂家', value: '21' },
+ { name: '接入方式', value: '22' },
+ { name: '应用名称', value: '23' },
+ { name: 'URL地址', value: '24' },
+ { name: '异常信息', value: '25' },
+ ]
+
+
+
+ const attribute = (tableType, route) => {
+ let arr = localStorage.getItem(tableType)
+ ? JSON.parse(localStorage.getItem(tableType))
+ : [];
+ // if (route) {
+ // console.log(tableList[route]);
+ // console.log([...[1,2,3],...[2,3]]);
+ // let setup = tableList[route].map(v => columnAll.find(vv => v == vv.value))
+ // console.log(setup);
+ // setTableSetup([{ list: setup }])
+ // }
+
+ // for (let i = 0; i < arr.length; i++) {
+ // let colum = column.filter((item) => {
+ // return item.key === arr[i];
+ // });
+ // columns.splice(i + 2, 0, colum[0]);
+ // }
+ // setSetupp(columns);
+ }
+
+
+
+
+
+ const distinguish = (route) => {
+ switch (route) {
+ case value:
+
+ break;
+
+ default:
+ break;
+ }
+ }
return (
- <>
+
+ {/* 滞留提醒 */}
- {abnormalLenght > 0 ?
: ""}
+ {abnormalLenght > 0 ?
: ""}
-
- >
+
+
+ {setup ? (
+
{
+ setSetup(false);
+ attribute(tableType[route]);
+ // setcameraSetup(false);
+ }}
+ />
+ ) : (
+ ""
+ )}
+
)
}
function mapStateToProps (state) {
- const { auth, global, members, webSocket } = state;
+ const { auth, global, members, webSocket } = state
return {
// loading: members.isRequesting,
user: auth.user,
actions: global.actions,
// members: members.data,
// socket: webSocket.socket
- };
+ }
}
-export default connect(mapStateToProps)(DataAlarm);
+export default connect(mapStateToProps)(DataAlarm)
diff --git a/web/client/src/sections/problem/nav-item.jsx b/web/client/src/sections/problem/nav-item.jsx
index 279dcdc..dc1d7d3 100644
--- a/web/client/src/sections/problem/nav-item.jsx
+++ b/web/client/src/sections/problem/nav-item.jsx
@@ -7,7 +7,7 @@ export function getNavItem (user, dispatch) {
itemKey: 'problem', text: '问题',
items: [
{
- itemKey: 'dataAlarm', text: '数据告警', icon: ,
+ itemKey: 'dataAlarm', text: '数据告警', to: '/problem/dataAlarm/dataLnterrupt', icon: ,
items: [
{ itemKey: 'dataLnterrupt', to: '/problem/dataAlarm/dataLnterrupt', text: '数据中断' },
{ itemKey: 'dataAbnormal', to: '/problem/dataAlarm/dataAbnormal', text: '数据异常' },
@@ -15,12 +15,12 @@ export function getNavItem (user, dispatch) {
{ itemKey: 'videoAbnormal', to: '/problem/dataAlarm/videoAbnormal', text: '视频异常' },
]
}, {
- itemKey: 'useAlarm', text: '应用告警', icon: ,
+ itemKey: 'useAlarm', text: '应用告警', to: '/problem/useAlarm/useAbnormal', icon: ,
items: [
{ itemKey: 'useAbnormal', to: '/problem/useAlarm/useAbnormal', text: '应用异常' },
]
}, {
- itemKey: 'deviceAlarm', text: '设备告警', icon: ,
+ itemKey: 'deviceAlarm', text: '设备告警', to: '/problem/deviceAlarm/deviceAbnormal', icon: ,
items: [
{ itemKey: 'deviceAbnormal', to: '/problem/deviceAlarm/deviceAbnormal', text: '设备异常' },
]