Explorar el Código

feat:designer-003

0235711 hace 1 día
padre
commit
75a7ca447d

+ 1 - 1
src/app/models/project.model.ts

@@ -26,7 +26,7 @@ export interface CustomerTag {
 export type ProjectStatus = '进行中' | '已完成' | '已暂停' | '已延期';
 
 // 项目阶段
-export type ProjectStage = '前期沟通' | '建模' | '软装' | '渲染' | '后期' | '完成';
+export type ProjectStage = '订单创建' | '需求沟通' | '方案确认' | '建模' | '软装' | '渲染' | '后期' | '尾款结算' | '客户评价' | '投诉处理';
 
 // 任务模型
 // 修复 Task 接口,将 completedAt 改为 completedDate(与实际代码保持一致)

+ 1 - 1
src/app/pages/customer-service/dashboard/dashboard.ts

@@ -184,7 +184,7 @@ export class Dashboard implements OnInit, OnDestroy {
       projectId: `project-${Math.floor(Math.random() * 1000)}`,
       title: '新增紧急任务',
       projectName: '新项目',
-      stage: '前期沟通', // 设置一个有效的ProjectStage值
+      stage: '需求沟通', // 设置一个有效的ProjectStage值
       deadline: new Date(),
       isOverdue: false,
       isCompleted: false,

+ 6 - 6
src/app/pages/customer-service/project-detail/project-detail.ts

@@ -67,8 +67,8 @@ export class ProjectDetail implements OnInit, AfterViewChecked {
   
   // 项目阶段数据 - 进度时间轴
   projectStages: ProjectStage[] = [
-    {
-      name: '前期沟通',
+    {      
+      name: '需求沟通',
       completed: true,
       inProgress: false,
       startDate: new Date('2023-06-01'),
@@ -110,13 +110,13 @@ export class ProjectDetail implements OnInit, AfterViewChecked {
       details: '后期图像处理和优化'
     },
     {
-      name: '完成',
+      name: '投诉处理',
       completed: false,
       inProgress: false,
       startDate: new Date('2023-07-10'),
       endDate: new Date('2023-07-15'),
       responsible: '客服小李',
-      details: '项目验收和交付'
+      details: '项目验收、交付和投诉处理'
     }
   ];
   
@@ -238,7 +238,7 @@ export class ProjectDetail implements OnInit, AfterViewChecked {
         isCompleted: true,
         isOverdue: false,
         priority: 'high',
-        stage: '前期沟通' // 添加 stage 属性,确保符合 Task 接口
+        stage: '需求沟通' // 添加 stage 属性,确保符合 Task 接口
       },
       {
         id: 't2',
@@ -266,7 +266,7 @@ export class ProjectDetail implements OnInit, AfterViewChecked {
         isCompleted: false,
         isOverdue: false,
         priority: 'medium',
-        stage: '前期沟通'
+        stage: '需求沟通'
       },
       {
         id: 't4',

+ 16 - 12
src/app/pages/customer-service/project-list/project-list.ts

@@ -68,12 +68,12 @@ export class ProjectList implements OnInit {
   
   stageOptions = [
     { value: 'all', label: '全部阶段' },
-    { value: '前期沟通', label: '前期沟通' },
+    { value: '需求沟通', label: '需求沟通' },
     { value: '建模', label: '建模' },
     { value: '软装', label: '软装' },
     { value: '渲染', label: '渲染' },
     { value: '后期', label: '后期' },
-    { value: '完成', label: '完成' }
+    { value: '投诉处理', label: '投诉处理' }
   ];
   
   sortOptions = [
@@ -186,12 +186,16 @@ export class ProjectList implements OnInit {
     
     // 基于当前阶段计算进度
     const stageProgress: Record<ProjectStage, number> = {
-      '前期沟通': 20,
-      '建模': 40,
-      '软装': 60,
-      '渲染': 80,
-      '后期': 90,
-      '完成': 100
+        '需求沟通': 20,
+        '建模': 40,
+        '软装': 60,
+        '渲染': 80,
+        '后期': 90,
+        '投诉处理': 100,
+        订单创建: 0,
+        方案确认: 0,
+        尾款结算: 0,
+        客户评价: 0
     };
     
     return stageProgress[project.currentStage] || 0;
@@ -208,7 +212,7 @@ export class ProjectList implements OnInit {
   // 生成模拟项目数据
   generateMockProjects(): Project[] {
     const statuses: ProjectStatus[] = ['进行中', '已完成', '已暂停', '已延期'];
-    const stages: ProjectStage[] = ['前期沟通', '建模', '软装', '渲染', '后期', '完成'];
+    const stages: ProjectStage[] = ['需求沟通', '建模', '软装', '渲染', '后期', '投诉处理'];
     const preferences: ('现代' | '宋式' | '欧式')[] = ['现代', '宋式', '欧式'];
     const needTypes: ('硬装' | '软装')[] = ['硬装', '软装'];
     const sources: ('朋友圈' | '信息流')[] = ['朋友圈', '信息流'];
@@ -225,7 +229,7 @@ export class ProjectList implements OnInit {
       const needType = needTypes[Math.floor(Math.random() * needTypes.length)];
       const source = sources[Math.floor(Math.random() * sources.length)];
       const stage = stages[Math.floor(Math.random() * stages.length)];
-      const status = stage === '完成' ? '已完成' : statuses[Math.floor(Math.random() * 3)];
+      const status = stage === '投诉处理' ? '已完成' : statuses[Math.floor(Math.random() * 3)];
       
       mockProjects.push({
         id: `mock-${i}`,
@@ -365,12 +369,12 @@ export class ProjectList implements OnInit {
   // 获取阶段样式类
   getStageClass(stage: string): string {
     const stageClasses: Record<string, string> = {
-      '前期沟通': 'stage-communication',
+      '需求沟通': 'stage-communication',
       '建模': 'stage-modeling',
       '软装': 'stage-decoration',
       '渲染': 'stage-rendering',
       '后期': 'stage-postproduction',
-      '完成': 'stage-completed'
+      '投诉处理': 'stage-completed'
     };
     
     return stageClasses[stage] || '';

+ 1 - 1
src/app/pages/designer/dashboard/dashboard.html

@@ -48,7 +48,7 @@
             </p>
             
             <!-- 进度条 -->
-            <div class="task-progress" *ngIf="task.stage !== '完成'">
+            <div class="task-progress" *ngIf="task.stage !== '投诉处理' && !task.isCompleted">
               <div class="progress-bar">
                 <div class="progress-fill" [style.width]="getTaskStageProgress(task.id) + '%'">
                 </div>

+ 2 - 2
src/app/pages/designer/dashboard/dashboard.ts

@@ -108,7 +108,7 @@ export class Dashboard implements OnInit {
           '对图': 3,
           '反馈处理': 2,
           '后期': 1,
-          '完成': 0
+          '投诉处理': 0
         };
         
         const priorityA = stagePriority[a.stage] || 0;
@@ -242,7 +242,7 @@ export class Dashboard implements OnInit {
       '对图': 50,
       '反馈处理': 80,
       '后期': 75,
-      '完成': 100
+      '投诉处理': 100
     };
 
     // 对于渲染任务,如果有实际的渲染进度数据,使用它

+ 7 - 3
src/app/pages/designer/personal-board/personal-board.ts

@@ -316,12 +316,16 @@ export class PersonalBoard implements OnInit, AfterViewInit {
   // 根据项目阶段获取对应的结算比例
   getStagePercentage(stage: ProjectStage): number {
     const percentages: Record<ProjectStage, number> = {
+      '订单创建': 0,
+      '需求沟通': 0,
+      '方案确认': 0,
       '建模': 30,
+      '软装': 0,
       '渲染': 50,
       '后期': 20,
-      '前期沟通': 0, // 补充前期沟通阶段比例
-      '软装': 0, // 补充软装阶段比例
-      '完成': 0  // 补充完成阶段比例
+      '尾款结算': 0,
+      '客户评价': 0,
+      '投诉处理': 0
     };
     return percentages[stage] || 0;
   }

+ 97 - 25
src/app/pages/designer/project-detail/project-detail.html

@@ -170,34 +170,99 @@
           <div class="right-column">
             <div class="process-card card">
               <h2>制作流程进度</h2>
-              <div class="stage-progress-container">
-                <div class="stage-progress">
-                  <div class="stage" [class.completed]="project?.currentStage !== '建模'" [class.active]="project?.currentStage === '建模'">
-                    <div class="stage-icon">
-                      <span>{{ project?.currentStage !== '建模' ? '✓' : '1' }}</span>
+              <!-- 项目进度看板 - 支持10个阶段的横向进度展示 -->
+                <div class="stage-progress-container">
+                  <!-- 添加进度条容器包装器以支持横向滚动 -->
+                <div class="stage-progress-wrapper">
+                  <div class="stage-progress">
+                    <!-- 订单创建阶段 -->
+                    <div class="stage" [class.completed]="isStageCompleted('订单创建')" [class.active]="project?.currentStage === '订单创建'" (click)="viewStageDetails('订单创建')">
+                      <div class="stage-icon">
+                        <span>{{ isStageCompleted('订单创建') ? '✓' : '1' }}</span>
+                      </div>
+                      <div class="stage-name">订单创建</div>
                     </div>
-                    <div class="stage-name">建模</div>
-                  </div>
-                  <div class="progress-line"></div>
-                  <div class="stage" [class.completed]="project?.currentStage !== '软装' && project?.currentStage !== '建模'" [class.active]="project?.currentStage === '软装'">
-                    <div class="stage-icon">
-                      <span>{{ project?.currentStage !== '软装' && project?.currentStage !== '建模' ? '✓' : '2' }}</span>
+                    <div class="progress-line"></div>
+                    
+                    <!-- 需求沟通阶段 -->
+                    <div class="stage" [class.completed]="isStageCompleted('需求沟通')" [class.active]="project?.currentStage === '需求沟通'" (click)="viewStageDetails('需求沟通')">
+                      <div class="stage-icon">
+                        <span>{{ isStageCompleted('需求沟通') ? '✓' : '2' }}</span>
+                      </div>
+                      <div class="stage-name">需求沟通</div>
                     </div>
-                    <div class="stage-name">软装</div>
-                  </div>
-                  <div class="progress-line"></div>
-                  <div class="stage" [class.completed]="project?.currentStage !== '渲染' && project?.currentStage !== '建模' && project?.currentStage !== '软装'" [class.active]="project?.currentStage === '渲染'">
-                    <div class="stage-icon">
-                      <span>{{ project?.currentStage !== '渲染' && project?.currentStage !== '建模' && project?.currentStage !== '软装' ? '✓' : '3' }}</span>
+                    <div class="progress-line"></div>
+                    
+                    <!-- 方案确认阶段 -->
+                    <div class="stage" [class.completed]="isStageCompleted('方案确认')" [class.active]="project?.currentStage === '方案确认'" (click)="viewStageDetails('方案确认')">
+                      <div class="stage-icon">
+                        <span>{{ isStageCompleted('方案确认') ? '✓' : '3' }}</span>
+                      </div>
+                      <div class="stage-name">方案确认</div>
                     </div>
-                    <div class="stage-name">渲染</div>
-                  </div>
-                  <div class="progress-line"></div>
-                  <div class="stage" [class.completed]="project?.currentStage !== '后期' && project?.currentStage !== '建模' && project?.currentStage !== '软装' && project?.currentStage !== '渲染'" [class.active]="project?.currentStage === '后期'">
-                    <div class="stage-icon">
-                      <span>{{ project?.currentStage !== '后期' && project?.currentStage !== '建模' && project?.currentStage !== '软装' && project?.currentStage !== '渲染' ? '✓' : '4' }}</span>
+                    <div class="progress-line"></div>
+                    
+                    <!-- 建模阶段 -->
+                    <div class="stage" [class.completed]="isStageCompleted('建模')" [class.active]="project?.currentStage === '建模'" (click)="viewStageDetails('建模')">
+                      <div class="stage-icon">
+                        <span>{{ isStageCompleted('建模') ? '✓' : '4' }}</span>
+                      </div>
+                      <div class="stage-name">建模</div>
+                    </div>
+                    <div class="progress-line"></div>
+                    
+                    <!-- 软装阶段 -->
+                    <div class="stage" [class.completed]="isStageCompleted('软装')" [class.active]="project?.currentStage === '软装'" (click)="viewStageDetails('软装')">
+                      <div class="stage-icon">
+                        <span>{{ isStageCompleted('软装') ? '✓' : '5' }}</span>
+                      </div>
+                      <div class="stage-name">软装</div>
+                    </div>
+                    <div class="progress-line"></div>
+                    
+                    <!-- 渲染阶段 -->
+                    <div class="stage" [class.completed]="isStageCompleted('渲染')" [class.active]="project?.currentStage === '渲染'" (click)="viewStageDetails('渲染')">
+                      <div class="stage-icon">
+                        <span>{{ isStageCompleted('渲染') ? '✓' : '6' }}</span>
+                      </div>
+                      <div class="stage-name">渲染</div>
+                    </div>
+                    <div class="progress-line"></div>
+                    
+                    <!-- 后期阶段 -->
+                    <div class="stage" [class.completed]="isStageCompleted('后期')" [class.active]="project?.currentStage === '后期'" (click)="viewStageDetails('后期')">
+                      <div class="stage-icon">
+                        <span>{{ isStageCompleted('后期') ? '✓' : '7' }}</span>
+                      </div>
+                      <div class="stage-name">后期</div>
+                    </div>
+                    <div class="progress-line"></div>
+                    
+                    <!-- 尾款结算阶段 -->
+                    <div class="stage" [class.completed]="isStageCompleted('尾款结算')" [class.active]="project?.currentStage === '尾款结算'" (click)="viewStageDetails('尾款结算')">
+                      <div class="stage-icon">
+                        <span>{{ isStageCompleted('尾款结算') ? '✓' : '8' }}</span>
+                      </div>
+                      <div class="stage-name">尾款结算</div>
+                    </div>
+                    <div class="progress-line"></div>
+                    
+                    <!-- 客户评价阶段 -->
+                    <div class="stage" [class.completed]="isStageCompleted('客户评价')" [class.active]="project?.currentStage === '客户评价'" (click)="viewStageDetails('客户评价')">
+                      <div class="stage-icon">
+                        <span>{{ isStageCompleted('客户评价') ? '✓' : '9' }}</span>
+                      </div>
+                      <div class="stage-name">客户评价</div>
+                    </div>
+                    <div class="progress-line"></div>
+                    
+                    <!-- 投诉处理阶段 -->
+                    <div class="stage" [class.completed]="isStageCompleted('投诉处理')" [class.active]="project?.currentStage === '投诉处理'" (click)="viewStageDetails('投诉处理')">
+                      <div class="stage-icon">
+                        <span>{{ isStageCompleted('投诉处理') ? '✓' : '10' }}</span>
+                      </div>
+                      <div class="stage-name">投诉处理</div>
                     </div>
-                    <div class="stage-name">后期</div>
                   </div>
                 </div>
               </div>
@@ -208,12 +273,19 @@
                   <h3>当前阶段: <span class="stage-highlight">{{ project.currentStage }}</span></h3>
                 </div>
                 <div class="stage-actions">
+                  <!-- 各阶段完成按钮 -->
+                  <button *ngIf="project.currentStage === '订单创建'" (click)="updateProjectStage('需求沟通')" class="primary-btn">完成订单创建</button>
+                  <button *ngIf="project.currentStage === '需求沟通'" (click)="updateProjectStage('方案确认')" class="primary-btn">完成需求沟通</button>
+                  <button *ngIf="project.currentStage === '方案确认'" (click)="updateProjectStage('建模')" class="primary-btn">完成方案确认</button>
                   <button *ngIf="project.currentStage === '建模'" (click)="updateProjectStage('软装')" [disabled]="!areAllModelChecksPassed()" class="primary-btn">
                     {{ areAllModelChecksPassed() ? '完成建模' : '完成所有模型检查' }}
                   </button>
                   <button *ngIf="project.currentStage === '软装'" (click)="updateProjectStage('渲染')" class="primary-btn">完成软装</button>
                   <button *ngIf="project.currentStage === '渲染'" (click)="updateProjectStage('后期')" class="primary-btn">完成渲染</button>
-                  <button *ngIf="project.currentStage === '后期'" (click)="updateProjectStage('完成')" class="primary-btn">完成后期</button>
+                  <button *ngIf="project.currentStage === '后期'" (click)="updateProjectStage('尾款结算')" class="primary-btn">完成后期</button>
+                  <button *ngIf="project.currentStage === '尾款结算'" (click)="updateProjectStage('客户评价')" class="primary-btn">完成尾款结算</button>
+                  <button *ngIf="project.currentStage === '客户评价'" (click)="updateProjectStage('投诉处理')" class="primary-btn">完成客户评价</button>
+                  <button *ngIf="project.currentStage === '投诉处理'" (click)="updateProjectStage('投诉处理')" class="primary-btn">完成投诉处理</button>
                 </div>
               </div>
 

+ 152 - 12
src/app/pages/designer/project-detail/project-detail.scss

@@ -515,18 +515,158 @@ h4{font-size:$ios-font-size-sm;font-weight:$ios-font-weight-medium;color:$ios-te
 .priority-tag{background-color:#fff3cd;color:$ios-warning}
 .skill-tag{background-color:#e8f0fe;color:$ios-primary}
 
-/* 制作流程进度卡片 */
-.stage-progress-container{margin-bottom:$ios-spacing-xl}
-.stage-progress{display:flex;justify-content:space-between;align-items:center;position:relative;padding:$ios-spacing-lg 0}
-.stage-progress::before{content:'';position:absolute;top:50%;left:$ios-spacing-xl;right:$ios-spacing-xl;height:3px;background-color:$ios-border;transform:translateY(-50%);z-index:1}
-.progress-line{position:absolute;top:50%;left:0;right:0;height:3px;background-color:$ios-success;transform:translateY(-50%);z-index:1}
-.stage{display:flex;flex-direction:column;align-items:center;z-index:2;position:relative}
-.stage-icon{width:44px;height:44px;border-radius:50%;background-color:$ios-border;color:$ios-text-secondary;display:flex;justify-content:center;align-items:center;font-weight:$ios-font-weight-semibold;margin-bottom:$ios-spacing-md}
-.stage.completed .stage-icon{background-color:$ios-success;color:white;box-shadow:0 0 0 4px #e6f7e6}
-.stage.active .stage-icon{background-color:$ios-primary;color:white;box-shadow:0 0 0 4px #e8f0fe}
-.stage-name{font-size:$ios-font-size-sm;color:$ios-text-secondary;text-align:center;white-space:nowrap;font-weight:$ios-font-weight-medium}
-.stage.completed .stage-name,.stage.active .stage-name{color:$ios-text-primary}
-.current-stage-actions{background-color:$ios-background-tertiary;padding:$ios-spacing-lg;border-radius:$ios-radius-md;text-align:center}
+/* 项目进度看板 - 支持10个阶段的横向进度展示 */
+.stage-progress-container{
+  margin-bottom:$ios-spacing-xl;
+  background-color:$ios-background-secondary;
+  border-radius:$ios-radius-lg;
+  padding:$ios-spacing-lg;
+  box-shadow:0 2px 8px rgba(0,0,0,0.03);
+}
+
+/* 进度条容器 - 支持滚动查看所有10个阶段 */
+.stage-progress-wrapper{
+  position:relative;
+  overflow-x:auto;
+  padding-bottom:$ios-spacing-md;
+  /* 隐藏滚动条但保持功能 */
+  scrollbar-width:none; /* Firefox */
+  -ms-overflow-style:none; /* IE and Edge */
+}
+
+.stage-progress-wrapper::-webkit-scrollbar{
+  display:none; /* Chrome, Safari, Opera */
+}
+
+/* 进度条容器内部样式 */
+.stage-progress{
+  display:flex;
+  align-items:center;
+  position:relative;
+  padding:$ios-spacing-sm 0;
+  min-width:100%;
+}
+
+/* 进度线 */
+.stage-progress::before{
+  content:'';
+  position:absolute;
+  top:50%;
+  left:22px; /* 图标宽度的一半 */
+  right:22px;
+  height:3px;
+  background-color:$ios-border;
+  transform:translateY(-50%);
+  z-index:1;
+}
+
+.progress-line{
+  position:absolute;
+  top:50%;
+  left:22px; /* 图标宽度的一半 */
+  height:3px;
+  background:linear-gradient(90deg, $ios-success, $ios-primary);
+  transform:translateY(-50%);
+  z-index:2;
+  transition:width 0.3s ease;
+}
+
+/* 阶段样式 - 10个阶段均匀分布 */
+.stage{
+  display:flex;
+  flex-direction:column;
+  align-items:center;
+  z-index:3;
+  position:relative;
+  flex-shrink:0;
+  width:100px;
+  cursor:pointer;
+  transition:transform 0.2s ease;
+  padding:0 $ios-spacing-sm;
+}
+
+.stage:hover{
+  transform:translateY(-2px);
+}
+
+/* 阶段图标 - 现代化设计 */
+.stage-icon{
+  width:44px;
+  height:44px;
+  border-radius:50%;
+  background-color:$ios-border;
+  color:$ios-text-secondary;
+  display:flex;
+  justify-content:center;
+  align-items:center;
+  font-weight:$ios-font-weight-semibold;
+  margin-bottom:$ios-spacing-sm;
+  transition:all 0.3s ease;
+  box-shadow:0 2px 4px rgba(0,0,0,0.05);
+}
+
+/* 已完成阶段样式 */
+.stage.completed .stage-icon{
+  background:linear-gradient(135deg, $ios-success, #2e7d32);
+  color:white;
+  box-shadow:0 0 0 4px #e6f7e6, 0 4px 12px rgba(46, 125, 50, 0.2);
+}
+
+/* 当前阶段样式 - 强调设计 */
+.stage.active .stage-icon{
+  background:linear-gradient(135deg, $ios-primary, #0056b3);
+  color:white;
+  box-shadow:0 0 0 4px #e8f0fe, 0 4px 16px rgba(0, 123, 255, 0.3);
+  animation:pulse 2s infinite;
+}
+
+@keyframes pulse {
+  0% {
+    box-shadow:0 0 0 4px #e8f0fe, 0 4px 16px rgba(0, 123, 255, 0.3);
+  }
+  50% {
+    box-shadow:0 0 0 6px #e8f0fe, 0 4px 20px rgba(0, 123, 255, 0.4);
+  }
+  100% {
+    box-shadow:0 0 0 4px #e8f0fe, 0 4px 16px rgba(0, 123, 255, 0.3);
+  }
+}
+
+/* 未开始阶段样式 */
+.stage.pending .stage-icon{
+  background-color:$ios-background-tertiary;
+  color:$ios-text-secondary;
+}
+
+/* 阶段名称样式 - 响应式设计 */
+.stage-name{
+  font-size:$ios-font-size-xs;
+  color:$ios-text-secondary;
+  text-align:center;
+  white-space:nowrap;
+  font-weight:$ios-font-weight-medium;
+  max-width:100%;
+  overflow:hidden;
+  text-overflow:ellipsis;
+  transition:color 0.3s ease;
+}
+
+.stage.completed .stage-name,
+.stage.active .stage-name{
+  color:$ios-text-primary;
+  font-weight:$ios-font-weight-semibold;
+}
+
+/* 当前阶段操作区域 */
+.current-stage-actions{
+  background-color:$ios-background;
+  padding:$ios-spacing-lg;
+  border-radius:$ios-radius-md;
+  text-align:center;
+  margin-top:$ios-spacing-lg;
+  border-left:4px solid $ios-primary;
+  box-shadow:0 2px 8px rgba(0,0,0,0.05);
+}
 .current-stage-info h3{margin-top:0;margin-bottom:$ios-spacing-md;font-size:$ios-font-size-base}
 .stage-highlight{color:$ios-primary;font-weight:$ios-font-weight-semibold}
 

+ 28 - 0
src/app/pages/designer/project-detail/project-detail.ts

@@ -149,6 +149,34 @@ export class ProjectDetail implements OnInit, OnDestroy {
   backToWorkbench(): void {
     this.router.navigate(['/designer/dashboard']);
   }
+  
+  // 检查阶段是否已完成
+  isStageCompleted(stage: ProjectStage): boolean {
+    if (!this.project) return false;
+    
+    // 定义阶段顺序
+    const stageOrder = [
+      '订单创建', '需求沟通', '方案确认', '建模', '软装', 
+      '渲染', '后期', '尾款结算', '客户评价', '投诉处理'
+    ];
+    
+    // 获取当前阶段和检查阶段的索引
+    const currentStageIndex = stageOrder.indexOf(this.project.currentStage);
+    const checkStageIndex = stageOrder.indexOf(stage);
+    
+    // 如果检查阶段在当前阶段之前,则已完成
+    return checkStageIndex < currentStageIndex;
+  }
+  
+  // 查看阶段详情
+  viewStageDetails(stage: ProjectStage): void {
+    // 这里可以实现查看特定阶段详情的功能
+    alert(`查看${stage}阶段详情`);
+    // 在实际应用中,这里可以:
+    // 1. 显示该阶段的详细信息弹窗
+    // 2. 滚动到页面上该阶段的相关内容
+    // 3. 加载该阶段的历史记录和完成情况
+  }
 
   ngOnInit(): void {
     this.route.paramMap.subscribe(params => {

+ 5 - 1
src/app/services/project.service.ts

@@ -99,7 +99,7 @@ export class ProjectService {
       ],
       highPriorityNeeds: ['需快速交付'],
       status: '已完成',
-      currentStage: '完成',
+      currentStage: '投诉处理',
       createdAt: new Date('2025-08-20'),
       deadline: new Date('2025-09-05'),
       assigneeId: 'designer1',
@@ -356,6 +356,10 @@ export class ProjectService {
     const project = this.projects.find(p => p.id === projectId);
     if (project) {
       project.currentStage = stage;
+      // 如果是投诉处理阶段,则将项目状态设置为已完成
+      if (stage === '投诉处理') {
+        project.status = '已完成';
+      }
     }
     return of(project);
   }