9.20 首页样式修改

This commit is contained in:
jl-zhoujl2
2022-09-20 09:24:03 +08:00
parent 09136ad2ca
commit 2f1be12fa5
2 changed files with 174 additions and 25 deletions

View File

@ -1,4 +1,4 @@
import { Carousel, Col, Radio, Row, Table } from 'antd'; import { Carousel, Col, Radio, Row, Table, Tag } from 'antd';
import React, { useEffect, useRef, useState, useMemo } from 'react'; import React, { useEffect, useRef, useState, useMemo } from 'react';
import './style.less'; import './style.less';
import './china'; import './china';
@ -103,6 +103,7 @@ const evalColumn: any[] = [
key: 'provinceDictId', key: 'provinceDictId',
align: 'center', align: 'center',
ellipsis: true, ellipsis: true,
width: '20%',
onCell, onCell,
onHeaderCell, onHeaderCell,
render: (_: any, record: any) => proviceEnum[_], render: (_: any, record: any) => proviceEnum[_],
@ -112,14 +113,7 @@ const evalColumn: any[] = [
dataIndex: 'projectName', dataIndex: 'projectName',
key: 'projectName', key: 'projectName',
ellipsis: true, ellipsis: true,
onCell, width: '60%',
onHeaderCell,
},
{
title: '专家人数',
dataIndex: 'userNumber',
key: 'userNumber',
align: 'center',
onCell, onCell,
onHeaderCell, onHeaderCell,
}, },
@ -127,12 +121,46 @@ const evalColumn: any[] = [
title: '状态', title: '状态',
dataIndex: 'status', dataIndex: 'status',
key: 'status', key: 'status',
width: '20%',
align: 'center', align: 'center',
onCell, onCell,
onHeaderCell, onHeaderCell,
render: (_: any, record: any) => roomStatusMap[_], render: (_: any, record: any) => roomStatusMap[_],
}, },
]; ];
const warnColumn: any[] = [
{
title: '省分',
dataIndex: 'provinceDictId',
key: 'provinceDictId',
width: '20%',
align: 'center',
ellipsis: true,
onCell,
onHeaderCell,
render: (_: any, record: any) => proviceEnum[_],
},
{
title: '项目名称',
dataIndex: 'projectName',
key: 'projectName',
ellipsis: true,
width: '60%',
onCell,
onHeaderCell,
},
{
title: '告警数量',
dataIndex: 'userNumber',
key: 'userNumber',
width: '20%',
align: 'center',
onCell,
onHeaderCell,
// render: (_: any, record: any) => <Tag color={record.type == "2" ? "#72c1dd" : "#ee6766"}>{record.type == "2" ? `人数预警(${record.userNumber})` : `陌生人预警(${record.userNumber})`}</Tag>,
},
];
/** /**
* 当前时间 * 当前时间
* @returns * @returns
@ -158,6 +186,15 @@ export const LocalTime = () => {
const projectClick = () => { const projectClick = () => {
history.push("/ElecMonitorScreen/MonitorRoom"); history.push("/ElecMonitorScreen/MonitorRoom");
} }
/**
* 项目详情-跳转
*/
const projectDetailClick = (monitorId: any) => {
history.push({
pathname: "/ElecMonitorScreen/ProjectMonitorRoom",
state: { monitorId },
})
}
/** /**
* echarts图表 * echarts图表
* @param props * @param props
@ -289,6 +326,9 @@ const GraphChart = (props: { type: string, chartData: any[] }) => {
emphasis: { emphasis: {
disabled: true disabled: true
}, },
select: {
disabled: true
},
itemStyle: { itemStyle: {
areaColor: "#0d0059", areaColor: "#0d0059",
borderColor: "#389dff", borderColor: "#389dff",
@ -326,7 +366,10 @@ const GraphChart = (props: { type: string, chartData: any[] }) => {
label: { label: {
show: false show: false
} }
} },
select: {
disabled: true
},
}, },
{ {
name: "", name: "",
@ -428,6 +471,75 @@ const PieChart = (props: { data: any[], title: string }) => {
</div> </div>
); );
} }
//异常列表滚动
const ScrollWarnTable = (props: { dataSource: any[], columns: any[], rollTime?: number, rollNum?: number }) => {
const { dataSource, columns, rollTime = 50, rollNum = 5 } = props;
const [scrollY, setScrollY] = useState('');
const [tableData, setTableData] = useState<any[]>(dataSource);
const timer = useRef<any>();
useEffect(() => {
InitialScroll(dataSource);
return () => clearInterval(timer.current);
}, [dataSource]);
useEffect(() => {
getScrollY();
window.addEventListener("resize", debounce(() => getScrollY(), 100));
return () => {
window.removeEventListener("resize", debounce(() => getScrollY(), 100));
}
}, [])
//初始化
const InitialScroll = (data: any[]) => {
const v = document.getElementsByClassName("ant-table-body")[0];
if (data.length > Number(rollNum)) {
// 只有当大于10条数据的时候 才会看起滚动
timer.current = setInterval(() => {
v.scrollTop++;
if (
Math.ceil(v.scrollTop) >= parseFloat((v.scrollHeight - v.clientHeight).toString())
) {
v.scrollTop = 0;
// setTimeout(() => { v.scrollTop = 0 }, 1000)
// setTableData(() => [...dataSource, ...dataSource.map((item, index) => { item.id = index; return item })]);
}
}, Number(rollTime));
}
}
const getScrollY = () => {
const Y = document.getElementsByClassName("ant-table-body")[0]?.clientHeight;
if (Y) setScrollY(`${Y - 32}px`)
}
return (
<div
onMouseEnter={() => {
timer.current && clearInterval(timer.current);
}}
onMouseLeave={() => {
timer.current && clearInterval(timer.current);
InitialScroll(dataSource);
}}
>
<Table
pagination={false}
className="screen-table screen-warn-list"
rowKey="id"
size="small"
scroll={{
y: (window.innerHeight - 185.8) * 134.8 / 300,
scrollToFirstRowOnChange: true,
// y: scrollY,
}}
dataSource={tableData}
columns={columns}
onRow={record => {
return {
onClick: () => projectDetailClick(record?.id),
}
}}
/>
</div>
)
}
const randomData = () => Math.round(Math.random() * 100); const randomData = () => Math.round(Math.random() * 100);
@ -495,7 +607,7 @@ export default () => {
getRoomProjectData({ pageNo: 1, pageSize: 20 }).then(res => { getRoomProjectData({ pageNo: 1, pageSize: 20 }).then(res => {
if (res?.code == 200) { if (res?.code == 200) {
// const data = res?.data; // const data = res?.data;
const data = [{ "id": "1565620867201146880", "placeId": "1523951236107988992", "projectName": "2022年中国联通活动策划执行及展览设计制作服务项目勿动", "realStartDate": null, "provinceDictId": "0022", "provinceDictName": "吉林省分公司", "placeName": "吉林联通评标中心", "status": "0", "userNumber": 5, "pageNo": null, "pageSize": null }, { "id": "1565620867201146881", "placeId": "1523951236107988992", "projectName": "2022年中国联通活动策划执行及展览设计制作服务项目勿动", "realStartDate": null, "provinceDictId": "0022", "provinceDictName": "吉林省分公司", "placeName": "吉林联通评标中心", "status": "0", "userNumber": 7, "pageNo": null, "pageSize": null }, { "id": "1565620867201146882", "placeId": "1523951236107988992", "projectName": "2022年中国联通活动策划执行及展览设计制作服务项目勿动", "realStartDate": null, "provinceDictId": "0022", "provinceDictName": "吉林省分公司", "placeName": "吉林联通评标中心", "status": "0", "userNumber": 5, "pageNo": null, "pageSize": null }, { "id": "1565620867201146883", "placeId": "1523951236107988992", "projectName": "2022年中国联通活动策划执行及展览设计制作服务项目勿动", "realStartDate": null, "provinceDictId": "0022", "provinceDictName": "吉林省分公司", "placeName": "吉林联通评标中心", "status": "0", "userNumber": 5, "pageNo": null, "pageSize": null }, { "id": "1565620867201146884", "placeId": "1523951236107988992", "projectName": "2022年中国联通活动策划执行及展览设计制作服务项目勿动", "realStartDate": null, "provinceDictId": "0022", "provinceDictName": "吉林省分公司", "placeName": "吉林联通评标中心", "status": "1", "userNumber": 5, "pageNo": null, "pageSize": null }, { "id": "1565620867201146885", "placeId": "1523951236107988992", "projectName": "2022年中国联通活动策划执行及展览设计制作服务项目勿动", "realStartDate": null, "provinceDictId": "0022", "provinceDictName": "吉林省分公司", "placeName": "吉林联通评标中心", "status": "1", "userNumber": 3, "pageNo": null, "pageSize": null }, { "id": "1565620867201146886", "placeId": "1523951236107988992", "projectName": "2022年中国联通活动策划执行及展览设计制作服务项目勿动", "realStartDate": null, "provinceDictId": "0022", "provinceDictName": "吉林省分公司", "placeName": "吉林联通评标中心", "status": "1", "userNumber": 5, "pageNo": null, "pageSize": null }, { "id": "1565620867201146887", "placeId": "1523951236107988992", "projectName": "2022年中国联通活动策划执行及展览设计制作服务项目勿动", "realStartDate": null, "provinceDictId": "0022", "provinceDictName": "吉林省分公司", "placeName": "吉林联通评标中心", "status": "1", "userNumber": 5, "pageNo": null, "pageSize": null }, { "id": "1565620867201146888", "placeId": "1523951236107988992", "projectName": "2022年中国联通活动策划执行及展览设计制作服务项目勿动", "realStartDate": null, "provinceDictId": "0022", "provinceDictName": "吉林省分公司", "placeName": "吉林联通评标中心", "status": "2", "userNumber": 5, "pageNo": null, "pageSize": null }, { "id": "1565620867201146889", "placeId": "1523951236107988992", "projectName": "2022年中国联通活动策划执行及展览设计制作服务项目勿动", "realStartDate": null, "provinceDictId": "0022", "provinceDictName": "吉林省分公司", "placeName": "吉林联通评标中心", "status": "2", "userNumber": 7, "pageNo": null, "pageSize": null }, { "id": "1565620867201146890", "placeId": "1523951236107988992", "projectName": "2022年中国联通活动策划执行及展览设计制作服务项目勿动", "realStartDate": null, "provinceDictId": "0022", "provinceDictName": "吉林省分公司", "placeName": "吉林联通评标中心", "status": "2", "userNumber": 5, "pageNo": null, "pageSize": null }, { "id": "1565620867201146891", "placeId": "1523951236107988992", "projectName": "2022年中国联通活动策划执行及展览设计制作服务项目勿动", "realStartDate": null, "provinceDictId": "0022", "provinceDictName": "吉林省分公司", "placeName": "吉林联通评标中心", "status": "2", "userNumber": 5, "pageNo": null, "pageSize": null }, { "id": "1565620867201146892", "placeId": "1523951236107988992", "projectName": "2022年中国联通活动策划执行及展览设计制作服务项目勿动", "realStartDate": null, "provinceDictId": "0022", "provinceDictName": "吉林省分公司", "placeName": "吉林联通评标中心", "status": "2", "userNumber": 5, "pageNo": null, "pageSize": null },]; const data = [{ "id": "1565620867201146880", "placeId": "1523951236107988992", "projectName": "2022年中国联通活动策划执行及展览设计制作服务项目勿动", "realStartDate": null, "provinceDictId": "0022", "provinceDictName": "吉林省分公司", "placeName": "吉林联通评标中心", "status": "0", "userNumber": 5, "pageNo": null, "pageSize": null, "type": "2" }, { "id": "1565620867201146881", "placeId": "1523951236107988992", "projectName": "2022年中国联通活动策划执行及展览设计制作服务项目勿动", "realStartDate": null, "provinceDictId": "0022", "provinceDictName": "吉林省分公司", "placeName": "吉林联通评标中心", "status": "0", "userNumber": 7, "pageNo": null, "pageSize": null, "type": "3" }, { "id": "1565620867201146882", "placeId": "1523951236107988992", "projectName": "2022年中国联通活动策划执行及展览设计制作服务项目勿动", "realStartDate": null, "provinceDictId": "0022", "provinceDictName": "吉林省分公司", "placeName": "吉林联通评标中心", "status": "0", "userNumber": 5, "pageNo": null, "pageSize": null, "type": "2" }, { "id": "1565620867201146883", "placeId": "1523951236107988992", "projectName": "2022年中国联通活动策划执行及展览设计制作服务项目勿动", "realStartDate": null, "provinceDictId": "0022", "provinceDictName": "吉林省分公司", "placeName": "吉林联通评标中心", "status": "0", "userNumber": 5, "pageNo": null, "pageSize": null, "type": "2" }, { "id": "1565620867201146884", "placeId": "1523951236107988992", "projectName": "2022年中国联通活动策划执行及展览设计制作服务项目勿动", "realStartDate": null, "provinceDictId": "0022", "provinceDictName": "吉林省分公司", "placeName": "吉林联通评标中心", "status": "1", "userNumber": 5, "pageNo": null, "pageSize": null, "type": "3" }, { "id": "1565620867201146885", "placeId": "1523951236107988992", "projectName": "2022年中国联通活动策划执行及展览设计制作服务项目勿动", "realStartDate": null, "provinceDictId": "0022", "provinceDictName": "吉林省分公司", "placeName": "吉林联通评标中心", "status": "1", "userNumber": 3, "pageNo": null, "pageSize": null, "type": "2" }, { "id": "1565620867201146886", "placeId": "1523951236107988992", "projectName": "2022年中国联通活动策划执行及展览设计制作服务项目勿动", "realStartDate": null, "provinceDictId": "0022", "provinceDictName": "吉林省分公司", "placeName": "吉林联通评标中心", "status": "1", "userNumber": 5, "pageNo": null, "pageSize": null, "type": "2" }, { "id": "1565620867201146887", "placeId": "1523951236107988992", "projectName": "2022年中国联通活动策划执行及展览设计制作服务项目勿动", "realStartDate": null, "provinceDictId": "0022", "provinceDictName": "吉林省分公司", "placeName": "吉林联通评标中心", "status": "1", "userNumber": 5, "pageNo": null, "pageSize": null, "type": "3" }, { "id": "1565620867201146888", "placeId": "1523951236107988992", "projectName": "2022年中国联通活动策划执行及展览设计制作服务项目勿动", "realStartDate": null, "provinceDictId": "0022", "provinceDictName": "吉林省分公司", "placeName": "吉林联通评标中心", "status": "2", "userNumber": 5, "pageNo": null, "pageSize": null, "type": "2" }, { "id": "1565620867201146889", "placeId": "1523951236107988992", "projectName": "2022年中国联通活动策划执行及展览设计制作服务项目勿动", "realStartDate": null, "provinceDictId": "0022", "provinceDictName": "吉林省分公司", "placeName": "吉林联通评标中心", "status": "2", "userNumber": 7, "pageNo": null, "pageSize": null, "type": "2" }, { "id": "1565620867201146890", "placeId": "1523951236107988992", "projectName": "2022年中国联通活动策划执行及展览设计制作服务项目勿动", "realStartDate": null, "provinceDictId": "0022", "provinceDictName": "吉林省分公司", "placeName": "吉林联通评标中心", "status": "2", "userNumber": 5, "pageNo": null, "pageSize": null, "type": "3" }, { "id": "1565620867201146891", "placeId": "1523951236107988992", "projectName": "2022年中国联通活动策划执行及展览设计制作服务项目勿动", "realStartDate": null, "provinceDictId": "0022", "provinceDictName": "吉林省分公司", "placeName": "吉林联通评标中心", "status": "2", "userNumber": 5, "pageNo": null, "pageSize": null, "type": "2" }, { "id": "1565620867201146892", "placeId": "1523951236107988992", "projectName": "2022年中国联通活动策划执行及展览设计制作服务项目勿动", "realStartDate": null, "provinceDictId": "0022", "provinceDictName": "吉林省分公司", "placeName": "吉林联通评标中心", "status": "2", "userNumber": 5, "pageNo": null, "pageSize": null, "type": "3" },];
setBidProjectData(data); setBidProjectData(data);
} }
}) })
@ -595,18 +707,18 @@ export default () => {
{categoryChart} {categoryChart}
</div> </div>
<div className='screen-card screen-top8'> <div className='screen-card screen-top8'>
<div className='card-title'> <div className='card-title card-title-click' onClick={() => projectDetailClick(sampleData?.id)}>
<span></span> <span></span>
</div> </div>
<div className='card-project-content'>
{/* <p>项目名称:{sampleData?.projectName}</p>
<p>标段名称:{sampleData?.sectionName}</p>
<p>监控设备名称:{sampleData?.devicePageVOList[0].deviceName}</p>
<p><span>评标室名称:{sampleData?.areaName}</span><span>省分:{proviceEnum[sampleData?.provinceDictId]}</span></p> */}
</div>
{ {
sampleData ? ( sampleData ? (
<> <>
<div className='card-project-content'>
<p>{sampleData?.projectName}</p>
<p>{sampleData?.sectionName}</p>
<p>{sampleData?.devicePageVOList[0].deviceName}</p>
<p><span>{sampleData?.areaName}</span><span>{proviceEnum[sampleData?.provinceDictId]}</span></p>
</div>
<div className='card-carema-c'> <div className='card-carema-c'>
{cameraParams && <ScreenVideoPlay videoRef={videoRef} cameraParams={cameraParams} status={0} />} {cameraParams && <ScreenVideoPlay videoRef={videoRef} cameraParams={cameraParams} status={0} />}
</div> </div>
@ -682,7 +794,7 @@ export default () => {
</Row> </Row>
</Col> </Col>
<Col span={6} className='screen-left4'> <Col span={6} className='screen-left4'>
<div className='screen-card'> <div className='screen-card screen-card-double'>
<div className='card-title'> <div className='card-title'>
<span></span> <span></span>
</div> </div>
@ -690,8 +802,22 @@ export default () => {
<EarlyWarn name="陌生人预警" img={warn_icon_01} num={earlyWarnData?.strangerCount ? earlyWarnData?.strangerCount : 0} /> <EarlyWarn name="陌生人预警" img={warn_icon_01} num={earlyWarnData?.strangerCount ? earlyWarnData?.strangerCount : 0} />
<EarlyWarn name="评标室人数预警" img={warn_icon_02} num={earlyWarnData?.numberCount ? earlyWarnData?.numberCount : 0} /> <EarlyWarn name="评标室人数预警" img={warn_icon_02} num={earlyWarnData?.numberCount ? earlyWarnData?.numberCount : 0} />
</div> </div>
{/* {bidProjectData.length > 0 && <Table
pagination={false}
className="screen-table screen-warn-list"
rowKey="id"
size="small"
dataSource={bidProjectData}
columns={warnColumn}
onRow={record => {
return {
onClick: () => projectDetailClick(record?.id),
}
}}
/>} */}
{bidProjectData.length > 0 && <ScrollWarnTable dataSource={bidProjectData} columns={warnColumn} />}
</div> </div>
<div className='screen-card screen-card-double screen-top8'> <div className='screen-card screen-top8'>
<div className='card-title'> <div className='card-title'>
<span><RightCircleOutlined style={{ marginLeft: "0.5rem", cursor: 'pointer' }} onClick={() => projectClick()} /></span> <span><RightCircleOutlined style={{ marginLeft: "0.5rem", cursor: 'pointer' }} onClick={() => projectClick()} /></span>
</div> </div>
@ -702,6 +828,11 @@ export default () => {
size="small" size="small"
dataSource={bidProjectData} dataSource={bidProjectData}
columns={evalColumn} columns={evalColumn}
onRow={record => {
return {
onClick: () => projectDetailClick(record?.id),
}
}}
/>} />}
</div> </div>
</Col> </Col>

View File

@ -73,11 +73,28 @@
font-size: 1rem; font-size: 1rem;
} }
.card-title-click {
cursor: pointer;
}
.screen-warn { .screen-warn {
display: flex; display: flex;
justify-content: space-evenly; justify-content: space-evenly;
align-items: center; align-items: center;
height: calc(92.6% - 36px); height: calc(32% - 36px);
}
.screen-warn-list {
height: 67.4%;
margin-top: 0;
::-webkit-scrollbar {
display: none;
}
.ant-table-cell-scrollbar {
display: none;
}
} }
.screen-graph-top { .screen-graph-top {
@ -187,7 +204,7 @@
} }
.card-project-default { .card-project-default {
height: calc(~"(100vh - 177px - 3rem) / 3"); height: calc(~"(100vh - 188px - 3rem) / 3");
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
border-bottom-left-radius: 2px; border-bottom-left-radius: 2px;
@ -210,14 +227,14 @@
} }
.card-carema-c { .card-carema-c {
height: calc(~"100% - 110px - 0.5rem"); height: calc(~"100% - 32px - 0.5rem");
width: 100%; width: 100%;
border: 1px solid #fff border: 1px solid @screen-color;
} }
} }
.screen-card-double { .screen-card-double {
height: calc(~"(100vh - 61px - 2.5rem) / 3 * 2"); height: calc(~"(100vh - 61px - 2.3rem) / 3 * 2");
} }
.screen-warn-content { .screen-warn-content {
@ -381,6 +398,7 @@
.screen-table-header; .screen-table-header;
background: #041a6d; background: #041a6d;
color: #2adff5; color: #2adff5;
cursor: pointer;
} }
.screen-table-even-content { .screen-table-even-content {