diff --git a/frontend-web/src/roundtable-planning/components/ArtifactPreviewModal.tsx b/frontend-web/src/roundtable-planning/components/ArtifactPreviewModal.tsx index 1073a515..04beb374 100644 --- a/frontend-web/src/roundtable-planning/components/ArtifactPreviewModal.tsx +++ b/frontend-web/src/roundtable-planning/components/ArtifactPreviewModal.tsx @@ -1,4 +1,5 @@ import React, { useCallback, useEffect, useMemo, useState } from "react"; +import { createPortal } from "react-dom"; import type { ReactNode } from "react"; import ReactMarkdown from "react-markdown"; import remarkGfm from "remark-gfm"; @@ -214,7 +215,9 @@ export const ArtifactPreviewModal: React.FC = ({ [content], ); - return ( + // 经 portal 挂到 body:脱离会商页
(`relative z-0`) 的层叠上下文, + // 否则 fixed 弹窗会被会商页头(z-40)/全局顶栏(z-45)盖住顶部。 + return createPortal(
{ @@ -287,6 +290,7 @@ export const ArtifactPreviewModal: React.FC = ({ )}
- + , + document.body, ); }; diff --git a/frontend-web/src/roundtable-planning/components/Step3SummaryMode.tsx b/frontend-web/src/roundtable-planning/components/Step3SummaryMode.tsx index b6a900f3..e16151cf 100644 --- a/frontend-web/src/roundtable-planning/components/Step3SummaryMode.tsx +++ b/frontend-web/src/roundtable-planning/components/Step3SummaryMode.tsx @@ -10,6 +10,7 @@ * 互不影响(report 画 HTML 看板,summary 写 Markdown 报告 + 问答)。 */ import { useEffect, useMemo, useRef, useState, type FormEvent } from "react"; +import { createPortal } from "react-dom"; import ReactMarkdown from "react-markdown"; import remarkGfm from "remark-gfm"; import { @@ -1005,7 +1006,10 @@ function ContentModal({ onClose: () => void; headerAction?: React.ReactNode; }) { - return ( + // 经 portal 挂到 body:页面
是 `relative z-0`(浅蓝主题层叠基线),会把 + // 内部 fixed 弹窗困在 z-0 层叠上下文里,被会商页头(z-40)/全局顶栏(z-45)盖住顶部。 + // 挂到 body 后脱离该上下文,z-50 才真正盖在顶栏之上,弹窗标题栏正常显示。 + return createPortal(
{children}
- + , + document.body, ); }