diff --git a/src/Add-on/ShareView/components/BoardMessageWidget.tsx b/src/Add-on/ShareView/components/BoardMessageWidget.tsx index 6d42455bc..ef8e68f61 100644 --- a/src/Add-on/ShareView/components/BoardMessageWidget.tsx +++ b/src/Add-on/ShareView/components/BoardMessageWidget.tsx @@ -1,15 +1,15 @@ import { useObserver } from "mobx-react"; -import React from "react"; +import React, { useRef } from "react"; import { ShareViewStore } from "../ShareViewStore"; -import { SPGetSpiteSize } from "../ShareViewUtil"; -import BoardRemarksWidget from "./BoardRemarksWidget"; +import { GetBlockColor, SPGetSpiteSize } from "../ShareViewUtil"; +import { BoardMoreMsgWidget, BoardMsgDialog, IBoardMsgDialogShow } from "./BoardRemarksWidget"; const BoardMessageWidget = (() => { const shareViewStore: ShareViewStore = ShareViewStore.GetInstance(); - + const BoardMsgDialogRef = useRef(); return useObserver( () => { @@ -22,26 +22,21 @@ const BoardMessageWidget = (() =>
高度:{size.height}
宽度:{size.width}
厚度:{size.thickness}
-
颜色:{shareViewStore.SelectedBoard.BoardProcessOption.color}
- { - Array.isArray(shareViewStore.SelectedBoard.BoardProcessOption.remarks) && - shareViewStore.SelectedBoard.BoardProcessOption.remarks.length ? ( -
- { - e.stopPropagation(); - }} - style={{ pointerEvents: 'auto', cursor: 'default', display: 'flex', alignItems: 'center' }} - > - 备注: - -
- ) : null - } +
颜色:{GetBlockColor(shareViewStore.SelectedBoard)}
+
+ { + e.stopPropagation(); + }} + style={{ pointerEvents: 'auto', cursor: 'default', display: 'flex', alignItems: 'center' }} + > + 更多: + + { + BoardMsgDialogRef.current?.show(shareViewStore.SelectedBoard); + }} /> +
+ ); } else diff --git a/src/Add-on/ShareView/components/BoardRemarksWidget.tsx b/src/Add-on/ShareView/components/BoardRemarksWidget.tsx index 59423c899..a1ce1b9ad 100644 --- a/src/Add-on/ShareView/components/BoardRemarksWidget.tsx +++ b/src/Add-on/ShareView/components/BoardRemarksWidget.tsx @@ -1,75 +1,157 @@ import { Dialog, Icon } from '@blueprintjs/core'; -import React, { FC, useState } from 'react'; +import React, { FC, forwardRef, useImperativeHandle, useState } from 'react'; +import { Board } from '../../../DatabaseServices/Entity/Board'; +import { ShareViewStore } from '../ShareViewStore'; -interface IProps +type IBoardMoreMsgWidgetProps = { + onClick?: () => void; +}; + +/** 更多信息按钮 */ +export const BoardMoreMsgWidget: FC = (props) => +{ + return ( + + { + e.stopPropagation(); + props.onClick && props.onClick(); + }} + > + + + ); +}; + +interface IBoardMsgDialogProps { - remarks?: any[]; - name?: string; - isPhone?: boolean; + ref: React.Ref; } -const BoardRemarksWidget: FC = (props) => +export type IBoardMsgDialogShow = { + show: (board: Board) => void; +}; + +/** 板材 更多信息 备注等 */ +export const BoardMsgDialog: FC = forwardRef((_props, ref) => { const [open, setOpen] = useState(false); + const [boardName, setBoardName] = useState(''); + const [boardMsgList, setBoardMsgList] = useState<{ + label: string, + value: string, + }[]>([]); + const [remarks, setRemarks] = useState<[string, string][]>([]); + const shareViewStore: ShareViewStore = ShareViewStore.GetInstance(); + + useImperativeHandle(ref, () => ({ + show: (board: Board) => + { + const { BoardProcessOption, Name } = board; + const { remarks, material, boardName } = BoardProcessOption; + setBoardName(Name); + setBoardMsgList([ + { + label: '材质', + value: material, + }, + { + label: '材料名称', + value: boardName, + } + ]); + setRemarks(Array.isArray(remarks) ? remarks : []); + setOpen(true); + }, + })); return ( - <> - {Array.isArray(props.remarks) && props.remarks.length ? ( - - { - e.stopPropagation(); - }} - > - - { - setOpen(true); - e.stopPropagation(); - }} - > - - - - { - setOpen(false); - }} - title={`${props.name || "板件"} 备注`} - style={{ width: window.innerWidth <= 768 ? '90vw' : '600px', background: '#fff', paddingBottom: 16 }} - > -
- - + + { + setOpen(false); + }} + title={`${boardName || "板件"} 更多信息`} + style={{ + width: window.innerWidth <= 768 ? '90vw' : '600px', + background: '#fff', + paddingBottom: 16 + }} + > +
+ { + shareViewStore.Props.showBom == false ? null : ( +
+ + + + + + + + + + + {boardMsgList.map((item) => ( + + + + + ))} + +
板材信息
+ {item.label}: + {item.value}
+ ) + } + + + + + + + + + + {remarks.length ? ( + <> + {remarks.map((remark) => ( - - + + - - - {props.remarks.map((remark) => ( - - - - - ))} - -
备注名备注信息
备注名备注信息{remark[0]}{remark[1]}
{remark[0]}{remark[1]}
-
-
-
- ) : null} - + )) + } + + ) : ( + + 无备注 + + )} + + + + ); -}; - - -export default BoardRemarksWidget; +}); diff --git a/src/Add-on/ShareView/components/MaterialBottomSheet.tsx b/src/Add-on/ShareView/components/MaterialBottomSheet.tsx index 6d38b5677..a90aa0c68 100644 --- a/src/Add-on/ShareView/components/MaterialBottomSheet.tsx +++ b/src/Add-on/ShareView/components/MaterialBottomSheet.tsx @@ -6,7 +6,7 @@ import { ICompHardwareOption, IHardwareOption, IToplineOption } from "../../../U import { shareViewApp } from "../ShareViewService"; import { ShareViewStore } from "../ShareViewStore"; import { GetBlockColor, GetBlockNo, GetBoxItemInfo, MaterialDetailScrollTo, SPGetSpiteSize } from "../ShareViewUtil"; -import BoardRemarksWidget from "./BoardRemarksWidget"; +import { BoardMoreMsgWidget, BoardMsgDialog, IBoardMsgDialogShow } from "./BoardRemarksWidget"; interface IProps { @@ -31,6 +31,7 @@ const MaterialBottomSheet: React.FC = forwardRef((props, ref) => const bottomSheetRef = useRef(null); const shareViewStore: ShareViewStore = ShareViewStore.GetInstance(); const isPhone = window.innerWidth <= 768; + const BoardMsgDialogRef = useRef(); useImperativeHandle(ref, () => ( { @@ -209,13 +210,15 @@ const MaterialBottomSheet: React.FC = forwardRef((props, ref) => 宽度 厚度 颜色 - 备注 + {!isPhone && 材质} + {!isPhone && 材料名称} + 更多 {flagRef.current && item.boardList.length == 0 ? ( - 无数据 + 无数据 ) : item.boardList.map((item: Board, i) => { @@ -244,18 +247,20 @@ const MaterialBottomSheet: React.FC = forwardRef((props, ref) => {size.width} {size.thickness} {color} + {!isPhone && {item.BoardProcessOption.material}} + {!isPhone && {item.BoardProcessOption.boardName}} - + + { + BoardMsgDialogRef.current?.show(item); + }} /> - + ); })} - + + { Array.isArray(item.hardwareCompositeList) && item.hardwareCompositeList.length ? (