import React from 'react'; import { Layout, Button, Typography, Divider, Flex } from 'antd'; import { ArrowLeftOutlined } from '@ant-design/icons'; import { useIntl } from 'react-intl'; import { useDispatch, useSelector } from 'react-redux'; import { switchToOperationPanel } from '../../../states/panelSwitchSliceForView'; import { setMeasurementAction, type MeasurementAction, } from '../../../states/view/measurementPanelSlice'; import type { RootState } from '../../../states/store'; import Icon from '@/components/Icon'; import '@/themes/truncateText.css'; const { Header, Content } = Layout; const { Title, Text } = Typography; const FunctionButton = ({ title, action, iconName, productId, }: { title: string; action: string; iconName: string; productId?: string; }) => { const dispatch = useDispatch(); const handleMeasurementAction = (action: string) => { console.log(`执行测量操作: ${action}`); // 通过 Redux 分发 action 到 ViewerContainer dispatch(setMeasurementAction(action as MeasurementAction)); }; return ( handleMeasurementAction(action)} icon={ iconName ? ( ) : undefined } style={{ width: '1.5rem', height: '1.5rem', padding: 0, }} title={title} className="truncate-text" > {/* {title} */} ); }; const MeasurementPanel = () => { const intl = useIntl(); const dispatch = useDispatch(); const productName = useSelector((state: RootState) => state.product.productName); const handleReturn = () => { dispatch(switchToOperationPanel()); }; return ( {/* 顶部导航栏 */} } onClick={handleReturn} /> {intl.formatMessage({ id: 'measurementPanel.title' })} {/* 主体内容 */} {/* 基础测量组 */} {intl.formatMessage({ id: 'measurementPanel.basicMeasurements' })} {intl.formatMessage({ id: 'measurementPanel.basicMeasurementsNote' })} {/* 专业测量组 */} {intl.formatMessage({ id: 'measurementPanel.professionalMeasurements' })} {/* 宠物专用测量组 */} {productName === 'VETDROS' && ( {intl.formatMessage({ id: 'measurementPanel.petSpecificMeasurements' })} )} ); }; export default MeasurementPanel;