# 交付执行阶段审批逻辑与样式对齐完成 ## 📋 任务概述 将交付执行阶段(Delivery Stage)的审批逻辑和审批按钮样式完全对齐到订单分配阶段(Order Stage)的实现标准。 ## ✅ 完成的修改 ### 1. 样式对齐 (`stage-delivery.component.scss`) #### 审批状态横幅样式 - 将审批状态横幅的样式从圆角 `12px` 改为 `8px`,与订单阶段一致 - 调整内边距和间距,确保视觉效果一致 - 统一颜色渐变: - **Pending**: `linear-gradient(135deg, #fff3e0, #ffe0b2)` + 边框 `#ff9800` - **Approved**: `linear-gradient(135deg, #e8f5e9, #c8e6c9)` + 边框 `#4caf50` - **Rejected**: `linear-gradient(135deg, #ffebee, #ffcdd2)` + 边框 `#f44336` - 添加了 `.btn-resubmit` 按钮样式(预留功能) #### 组长审批操作条样式 - 保持 `.leader-approval-bar` 的样式与订单阶段完全一致: - 背景渐变:`linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%)` - 圆角:`16px` - 阴影:`0 4px 20px rgba(0, 0, 0, 0.08)` - 按钮居中显示,间距 `20px` - 审批按钮样式: - **通过审批**: `linear-gradient(135deg, #667eea 0%, #764ba2 100%)` - **驳回按钮**: `linear-gradient(135deg, #f093fb 0%, #f5576c 100%)` - 悬停效果:`translateY(-2px)` + 阴影增强 - 禁用状态:`opacity: 0.6` ### 2. TypeScript 逻辑对齐 (`stage-delivery.component.ts`) #### 增强调试日志 在 `getDeliveryApprovalStatus()` 方法中添加了详细的调试日志,与订单阶段的 `getApprovalStatus()` 方法保持一致: ```typescript 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 && !isFromCustomerService` - `isTeamLeader` 判定:**仅通过 URL 参数 `roleName=team-leader` 判定** - `isFromCustomerService` 判定:从 `localStorage` 读取客服端标记 - 清除冲突标记:进入组长模式时清除客服端标记 ### 3. 模板对齐 (`stage-delivery.component.html`) #### 审批按钮条件渲染 确保审批按钮的显示条件与订单阶段完全一致: ```html @if (getDeliveryApprovalStatus() === 'pending' && isTeamLeader && !isFromCustomerService) {
} ``` ### 4. 组长看板导航逻辑 (`dashboard.ts`) #### 动态阶段导航 已实现三个导航方法的动态阶段路由: 1. **`viewProjectDetails(projectId)`** - 主要项目详情入口 2. **`onProjectTimelineClick(projectId)`** - 时间线点击入口 3. **`navigateToProjectFromPanel(projectId)`** - 从员工面板进入 所有方法都包含以下逻辑: ```typescript // 阶段映射:项目阶段 → 路由路径 const stageRouteMap: Record