employee-detail-panel.ts 已添加 embedMode 输入属性employee-info-panel.component.ts 已添加 employeeDetailForTeamLeader getteremployee-info-panel.component.html 已更新为使用 [embedMode]="true"employee-detail-panel.html 已通过 Git 恢复到原始状态employee-info-panel.component.scss 已简化,移除复杂的 ::ng-deep 覆盖修改 employee-detail-panel.html 支持嵌入模式
由于该文件有 444 行,手动修改容易出错。这里提供精确的修改方案:
在 line 2 之后,添加嵌入模式的条件判断:
<!-- 员工详情面板 -->
@if (visible && employeeDetail) {
@if (embedMode) {
<!-- 🎯 嵌入模式:只渲染 panel-content -->
<div class="panel-content embedded">
<!-- 直接包含所有 section 内容 (line 24-336) -->
... (复制原文件 line 24-336 的所有内容)
</div>
} @else {
<!-- 完整模式:原有的完整结构 -->
<div class="employee-detail-overlay" (click)="onClose()">
... (保持原有的 line 3-338 内容)
</div>
}
}
由于我当前无法直接进行大规模的 HTML 复制粘贴操作而不出错,建议用户手动完成以下步骤:
打开 employee-detail-panel.html
在 line 2 之后添加:
@if (embedMode) {
<div class="panel-content embedded">
复制 line 24-336 的所有内容(即 <div class="panel-content"> 内的所有 sections)
粘贴到步骤 2 添加的内容之后
添加闭合标签:
</div>
} @else {
确保原有的完整模式代码在 @else 分支中
<!-- 员工详情面板 -->
@if (visible && employeeDetail) {
@if (embedMode) {
<!-- 嵌入模式 -->
<div class="panel-content embedded">
<!-- 所有 sections -->
</div>
} @else {
<!-- 完整模式 -->
<div class="employee-detail-overlay" (click)="onClose()">
<div class="employee-detail-panel" (click)="stopPropagation($event)">
<!-- 面板头部 -->
<div class="panel-header">...</div>
<!-- 面板内容 -->
<div class="panel-content">
<!-- 所有 sections -->
</div>
</div>
</div>
}
}
<!-- 日历项目列表弹窗 -->
@if (showCalendarProjectList) {
...
}
<!-- 设计师详细日历 -->
@if (showDesignerCalendar) {
...
}
embedMode: true:只渲染 panel-content 的内容,不包含遮罩层、侧边栏容器、头部embedMode: false (默认):渲染完整的侧边栏面板,保持组长端的原有功能完成修改后,测试以下场景:
组长端(完整模式):
员工管理端(嵌入模式):
/admin/employees如果手动修改 HTML 仍然觉得复杂,可以考虑:
创建一个独立的 EmployeeWorkloadContentComponent:
employee-detail-panel 和 employee-info-panel 共同使用但考虑到时间和风险,当前方案(条件渲染)是最优选择。