Commit 87b5c373 by luoqi

fix(主管工作台): 嵌入宿主时只隐藏品牌与标题, 不再整栏藏掉

产品:「标题栏不要全部隐藏,学一下客服工作台,保持一致」。

执行页的规矩是整栏保留、嵌入时只藏 PAC 徽标 + 面包屑(宿主已提供品牌与导航),
功能区照常。工作台这边写成了 `if (isEmbedded()) return null` —— 整栏没了。

️ 代价不只是不好看:嵌入态下**诊所切换**和**「客服执行页 」**一起被藏掉了,
   主管在宿主里再也回不到执行页 —— 那正是上一个提交刚补上的那条路。

⇒ 与 plan-detail 的 `embedded` 同一条规矩:藏品牌与标题,留功能区。
️ 分隔线跟着身份三件套一起藏 —— IdentityCluster 嵌入态返 null,
   不一起藏就剩一条悬空的竖线。

实测(本地起了个宿主外壳 iframe):
  嵌入 · 工作台 → 只剩「北京朝阳公园诊所」+「客服执行页 」,与执行页同构
  嵌入 · 执行页 → 场景 chip / 召回反馈 / 刷新 / 预约 照常
  非嵌入        → PAC | 主管工作台 | 诊所 | 身份,未受影响

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
parent 9d5e7862
Pipeline #3562 failed in 0 seconds
...@@ -47,20 +47,34 @@ export function SupervisorHeader({ ...@@ -47,20 +47,34 @@ export function SupervisorHeader({
}; };
}, [open]); }, [open]);
if (isEmbedded()) return null; /**
* 🔴 嵌入宿主时**只隐藏品牌与标题,⛔ 不隐藏整栏**(2026-08-10 产品:
* 「标题栏不要全部隐藏,学一下客服工作台,保持一致」)。
*
* ⚠️ 与执行页那个 header **同一条规矩**(见 plan-detail-app 的 `embedded`):
* 宿主已经提供了自己的品牌与导航,重复的是 `PAC` 徽标 + 「疗效保障 / 主管工作台」;
* 而**功能区**(诊所切换、回执行页)宿主没有,整栏藏掉等于把它们一起弄丢 ——
* 嵌入态下主管就再也回不到执行页了(那正是刚补上的那条路)。
* ⚠️ 身份三件套不用在这里判:`IdentityCluster` 自己会在嵌入态隐藏。
*/
const embedded = isEmbedded();
const current = clinics.find((c) => c.id === clinicId); const current = clinics.find((c) => c.id === clinicId);
return ( return (
<header className="flex h-12 flex-none items-center gap-2.5 border-b border-slate-100 bg-white px-3 sm:px-4"> <header className="flex h-12 flex-none items-center gap-2.5 border-b border-slate-100 bg-white px-3 sm:px-4">
<span className="inline-flex h-7 w-7 flex-none items-center justify-center rounded-md bg-brand-600 text-[12px] font-bold text-white"> {!embedded && (
PAC <>
</span> <span className="inline-flex h-7 w-7 flex-none items-center justify-center rounded-md bg-brand-600 text-[12px] font-bold text-white">
{/* 面包屑与执行页同构(疗效保障 / X)——⛔ 别只写「主管工作台」: PAC
两个页面同属一个产品,面包屑一致才看得出是同一套东西的两面 */} </span>
<span className="hidden lg:inline text-[13px] font-semibold text-slate-900">疗效保障</span> {/* 面包屑与执行页同构(疗效保障 / X)——⛔ 别只写「主管工作台」:
<span className="hidden lg:inline text-slate-300">/</span> 两个页面同属一个产品,面包屑一致才看得出是同一套东西的两面 */}
<h1 className="flex-none text-[14px] font-semibold text-slate-900">主管工作台</h1> <span className="hidden lg:inline text-[13px] font-semibold text-slate-900">疗效保障</span>
<span className="hidden lg:inline text-slate-300">/</span>
<h1 className="flex-none text-[14px] font-semibold text-slate-900">主管工作台</h1>
</>
)}
{/* 诊所切换 —— 只有一个诊所时**不给下拉**(点开只有一项是噪音),直接显示名字 */} {/* 诊所切换 —— 只有一个诊所时**不给下拉**(点开只有一项是噪音),直接显示名字 */}
{clinics.length > 0 && ( {clinics.length > 0 && (
...@@ -116,7 +130,9 @@ export function SupervisorHeader({ ...@@ -116,7 +130,9 @@ export function SupervisorHeader({
客服执行页 客服执行页
<ArrowUpRight className="h-3.5 w-3.5" /> <ArrowUpRight className="h-3.5 w-3.5" />
</Link> </Link>
<span className="hidden sm:block h-4 w-px bg-slate-100" /> {/* ⚠️ 分隔线跟着身份三件套走 —— 嵌入态 IdentityCluster 返 null,
不一起藏就剩一条悬空的竖线 */}
{!embedded && <span className="hidden sm:block h-4 w-px bg-slate-100" />}
<IdentityCluster /> <IdentityCluster />
</div> </div>
</header> </header>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment