将交付执行阶段(Delivery Stage)的审批逻辑和审批按钮样式完全对齐到订单分配阶段(Order Stage)的实现标准。
stage-delivery.component.scss)12px 改为 8px,与订单阶段一致linear-gradient(135deg, #fff3e0, #ffe0b2) + 边框 #ff9800linear-gradient(135deg, #e8f5e9, #c8e6c9) + 边框 #4caf50linear-gradient(135deg, #ffebee, #ffcdd2) + 边框 #f44336.btn-resubmit 按钮样式(预留功能).leader-approval-bar 的样式与订单阶段完全一致:
linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%)16px0 4px 20px rgba(0, 0, 0, 0.08)20pxlinear-gradient(135deg, #667eea 0%, #764ba2 100%)linear-gradient(135deg, #f093fb 0%, #f5576c 100%)translateY(-2px) + 阴影增强opacity: 0.6stage-delivery.component.ts)在 getDeliveryApprovalStatus() 方法中添加了详细的调试日志,与订单阶段的 getApprovalStatus() 方法保持一致:
console.log('🔍 【交付执行审批按钮显示条件检查】', {
'条件1_审批状态': status,
'条件1_是否pending': status === 'pending',
'条件2_isTeamLeader': this.isTeamLeader,
'条件3_isFromCustomerService': this.isFromCustomerService,
'条件3_非客服入口': !this.isFromCustomerService,
'✅ 所有条件满足': status === 'pending' && this.isTeamLeader && !this.isFromCustomerService,
'---详细信息---': '',
'用户角色': this.currentUser?.get('roleName'),
'canEdit': this.canEdit,
'data.deliveryApprovalStatus': data.deliveryApprovalStatus,
'data.approvalHistory': data.approvalHistory?.length || 0
});
status === 'pending' && isTeamLeader && !isFromCustomerServiceisTeamLeader 判定:仅通过 URL 参数 roleName=team-leader 判定isFromCustomerService 判定:从 localStorage 读取客服端标记stage-delivery.component.html)确保审批按钮的显示条件与订单阶段完全一致:
@if (getDeliveryApprovalStatus() === 'pending' && isTeamLeader && !isFromCustomerService) {
<div class="leader-approval-bar">
<div class="approval-buttons-container">
<button class="btn-approve" (click)="approveDelivery()" [disabled]="saving">
<span class="btn-icon">✅</span>
<span class="btn-text">通过审批</span>
</button>
<button class="btn-reject" (click)="rejectDelivery()" [disabled]="saving">
<span class="btn-icon">❌</span>
<span class="btn-text">驳回交付</span>
</button>
</div>
</div>
}
dashboard.ts)已实现三个导航方法的动态阶段路由:
viewProjectDetails(projectId) - 主要项目详情入口onProjectTimelineClick(projectId) - 时间线点击入口navigateToProjectFromPanel(projectId) - 从员工面板进入所有方法都包含以下逻辑:
// 阶段映射:项目阶段 → 路由路径
const stageRouteMap: Record<string, string> = {
'订单分配': 'order',
'确认需求': 'requirements',
'方案深化': 'requirements',
'建模': 'requirements',
'软装': 'requirements',
'渲染': 'requirements',
'后期': 'requirements',
'交付执行': 'delivery',
'交付': 'delivery',
'售后归档': 'aftercare',
'已完成': 'aftercare'
};
const stagePath = stageRouteMap[currentStage] || 'order';
// ✅ 跳转到对应阶段,并通过查询参数标识为组长视角
this.router.navigate(['/wxwork', cid, 'project', projectId, stagePath], {
queryParams: { roleName: 'team-leader' }
});
?roleName=team-leader,就显示审批按钮http://localhost:4200/wxwork/cDL6R1hgSi/project/{projectId}/delivery?roleName=team-leaderhttp://localhost:4200/wxwork/cDL6R1hgSi/project/{projectId}/delivery(无 roleName 参数)/delivery 路由yss-project/src/modules/project/pages/project-detail/stages/stage-delivery.component.scss
yss-project/src/modules/project/pages/project-detail/stages/stage-delivery.component.ts
getDeliveryApprovalStatus()yss-project/src/modules/project/pages/project-detail/stages/stage-delivery.component.html
yss-project/src/app/pages/team-leader/dashboard/dashboard.ts
本次修改确保了交付执行阶段的审批功能与订单分配阶段在以下方面完全一致:
现在两个阶段的审批体验完全统一,用户在不同阶段的操作感受保持一致。