diff --git a/packages/biz/src/RealTimeMonitor/RealTimeMonitor.tsx b/packages/biz/src/RealTimeMonitor/RealTimeMonitor.tsx index 63fa909..e99db7e 100644 --- a/packages/biz/src/RealTimeMonitor/RealTimeMonitor.tsx +++ b/packages/biz/src/RealTimeMonitor/RealTimeMonitor.tsx @@ -1,4 +1,4 @@ -import React, { useContext } from 'react'; +import React, { useContext, useRef } from 'react'; import WindowToggle, { ISize } from './components/WindowToggle'; import WarningRecordList from './components/WarningRecordList'; import { ConfigProvider } from '@zhst/meta'; @@ -34,6 +34,7 @@ interface RealTimeMonitorProps { largeImageTitle?: string; size: ISize; setSize: React.Dispatch> + maxRecordCount?: number; } export const RealTimeMonitor: React.FC = (props) => { @@ -53,19 +54,22 @@ export const RealTimeMonitor: React.FC = (props) => { selectedRecordId, isRecordListLoading, size, - setSize + setSize, + maxRecordCount } = props + const toggleRef = useRef() const componentName = getPrefixCls('biz-real-time-monitor', customizePrefixCls); return (
- = (props) => { viewLargerImageModalRef={viewLargerImageModalRef} isRecordListLoading={isRecordListLoading} recordListTitle="监控预警记录" + maxHeight={toggleRef.current?.offsetHeight} + maxRecordCount={maxRecordCount} />
); diff --git a/packages/biz/src/RealTimeMonitor/components/WarningRecordList/WarningRecordList.tsx b/packages/biz/src/RealTimeMonitor/components/WarningRecordList/WarningRecordList.tsx index 298f180..3947e2e 100644 --- a/packages/biz/src/RealTimeMonitor/components/WarningRecordList/WarningRecordList.tsx +++ b/packages/biz/src/RealTimeMonitor/components/WarningRecordList/WarningRecordList.tsx @@ -4,6 +4,7 @@ import { ViewLargerImageModalRef } from '../../../ViewLargerImageModal'; import WarningRecordCard from '../../../WarningRecordCard'; import ViewLargerImageModal from '../../../ViewLargerImageModal'; import { Empty, Space, Spin } from 'antd'; +import { pxToRem } from '@zhst/func' import { LoadingOutlined } from '@ant-design/icons'; import "./index.less" @@ -28,6 +29,8 @@ interface WarningRecordListProps { cardStyle?: React.CSSProperties; imgStyle?: React.CSSProperties; largeImageTitle?: string; + maxHeight?: number; + maxRecordCount?: number; } const WarningRecordList: React.FC = (props) => { @@ -43,11 +46,12 @@ const WarningRecordList: React.FC = (props) => { style, cardStyle, imgStyle, - largeImageTitle + largeImageTitle, + maxHeight, + maxRecordCount = 10 } = props - return ( -
+
{recordListTitle}
{ @@ -58,7 +62,7 @@ const WarningRecordList: React.FC = (props) => { : (dataSource?.length) > 0 ? {dataSource?.map((record, index) => { - if (index > 2) return + if (index > maxRecordCount -1) return return ( void; handleCloseButtonClick?: (key?: string) => void; selectedWindowKey?: string; size: ISize; setSize: React.Dispatch> + toggleRef: React.MutableRefObject } export const WindowToggle: React.FC = (props) => { - const { dataSource = [], handleWindowClick, handleCloseButtonClick, selectedWindowKey , size = "large",setSize} = props + const { dataSource = [], handleWindowClick, handleCloseButtonClick, selectedWindowKey, size = "large", setSize, toggleRef } = props const { useToken } = theme const { token } = useToken() const getLabelStyle = (isSelected: boolean) => ({ - padding: "0 11px", background: "#fff", + padding: `0 ${pxToRem("11px")}`, background: "#fff", ...(isSelected ? { background: token.colorPrimary, color: '#fff' } : {}), }); return ( -
+
{/* 切换按钮 */}
-
}, - { value: 'small', label:
}, - ]} - onChange={(value) => { - // 当一个窗口时 默认 selectedkey 第一条数据的 windowkey - if (value === 'large' && dataSource.length > 0) { - const { windowKey } = dataSource[0] - handleWindowClick?.(windowKey) - } - setSize(value as ISize) - }} - /> +
}, + { value: 'small', label:
}, + ]} + onChange={(value) => { + // 当一个窗口时 默认 selectedkey 第一条数据的 windowkey + if (value === 'large' && dataSource.length > 0) { + const { windowKey } = dataSource[0] + handleWindowClick?.(windowKey) + } + setSize(value as ISize) + }} + />
@@ -57,7 +60,7 @@ export const WindowToggle: React.FC = (props) => { if (size === "large" && index > 0) return return ( { setTimeout(() => { // 对后端返回数据进行处理 组装一套符合属性的 数据 // videoSrc : videoData.videoSrc - const newVideoData: VideoPlayerCardProps = { imageKey: videoData.imageKey, title: videoData.title, odRect: videoData.odRect, videoSrc: videoData.videoSrc } + const newVideoData: VideoPlayerCardProps = { imageKey: videoData.imageKey, title: videoData.title, odRect: videoData.odRect} setVideoDataSource((pre) => { const newVideoDataSource: VideoPlayerCardProps[] = pre.map((item) => { // 传给 选中的视频窗口 diff --git a/packages/biz/src/VideoPlayerCard/VideoPlayerCard.tsx b/packages/biz/src/VideoPlayerCard/VideoPlayerCard.tsx index 1b3f181..ccf917c 100644 --- a/packages/biz/src/VideoPlayerCard/VideoPlayerCard.tsx +++ b/packages/biz/src/VideoPlayerCard/VideoPlayerCard.tsx @@ -3,6 +3,7 @@ import { theme } from 'antd/lib'; import { ConfigProvider, VideoPlayer, CropperImage, type VideoViewRef, } from '@zhst/meta'; import React, { useState, useEffect, ReactNode, useRef, useContext } from 'react'; import { CloseOutlined, LoadingOutlined } from '@ant-design/icons'; +import { pxToRem } from '@zhst/func' import './index.less' export interface VideoPlayerCardProps { prefixCls?: string; @@ -48,11 +49,10 @@ export const VideoPlayerCard: React.FC = (props) => { border: `2px solid ${token.colorPrimary}`, boxShadow: " 0px 2px 9px 0px rgba(0,0,0,0.16)" } const cardStyle: React.CSSProperties = { - ...(size === 'large' ? { height: 931 } : { height: 456, cursor: 'pointer' }), + ...(size === 'large' ? { height: `${pxToRem("931px")}` } : { height: `${pxToRem("456px")}` , cursor: 'pointer' }), ...(size === 'small' && selectedWindowKey === windowKey ? selectedBorderStyle : {}) }; - const videoPlayerCardStyle = size === 'small' ? { width: "calc(50% - 20px)" } : { flex: 1 } - + const videoPlayerCardStyle = size === 'small' ? { width: `calc(50% - ${pxToRem("20px")})` } : { flex: 1 } useEffect(() => { if (!isWindowLoading && (videoSrc || imageKey)) { let contentElement: JSX.Element | null = null; @@ -65,7 +65,7 @@ export const VideoPlayerCard: React.FC = (props) => { } else if (imageKey) { contentElement = ( -
+
= (props) => { {cardContent} ) : ( -
+
{ isWindowLoading ?
diff --git a/packages/biz/src/ViewLargerImageModal/ViewLargerImageModal.tsx b/packages/biz/src/ViewLargerImageModal/ViewLargerImageModal.tsx index 48ec8f0..4907208 100644 --- a/packages/biz/src/ViewLargerImageModal/ViewLargerImageModal.tsx +++ b/packages/biz/src/ViewLargerImageModal/ViewLargerImageModal.tsx @@ -2,6 +2,7 @@ import React, { useImperativeHandle, useRef, useState, forwardRef, useContext } import { Modal, ModalProps, Space, SpaceProps } from 'antd'; import theme from 'antd/lib/theme'; import { DownloadOutlined } from '@ant-design/icons'; +import { pxToRem } from '@zhst/func'; import { ConfigProvider, CropperImage } from '@zhst/meta'; import './index.less' @@ -86,7 +87,7 @@ export const ViewLargerImageModal = forwardRef
-
+
= (props) => {
+
= (props) => { />
} - style={{ width: 356, height: 302, padding: 10, borderRadius: 4, ...selectedCardStyle, ...cardStyle }} + style={{ padding: `${pxToRem("10px")}`, borderRadius: `${pxToRem("4px")}`, ...selectedCardStyle, ...cardStyle }} {...cardProps} >