Prechádzať zdrojové kódy

Merge branch 'master' of http://git.fmode.cn:3000/nkkj/yss-project

徐福静0235668 1 deň pred
rodič
commit
59ec01033a

+ 30 - 25
src/app/pages/designer/dashboard/dashboard.scss

@@ -1,7 +1,7 @@
 @use 'sass:color';
 
 // 导入iOS主题变量
-@use '../ios-theme.scss' as *;
+@use '../../../shared/styles/_ios-theme.scss' as *;
 
 // 导入响应式布局样式
 @import './responsive-layout.scss';
@@ -9,6 +9,11 @@
 // 导入交互效果样式
 @import './interactive-effects.scss';
 
+// 确保基础样式正确应用
+* {
+  box-sizing: border-box;
+}
+
 .dashboard-container {
   max-width: 1200px;
   margin: 0 auto;
@@ -963,7 +968,7 @@
       font-size: 13px;
       padding: 6px 14px;
       border-radius: $ios-radius-full;
-      background-color: $ios-primary-light;
+      background-color: rgba(0, 122, 255, 0.1);
       color: $ios-primary;
       border: 1px solid $ios-primary;
     }
@@ -1045,7 +1050,7 @@
       border-radius: $ios-radius-md;
       font-size: 15px;
       cursor: pointer;
-      transition: $ios-animation-normal $ios-animation-easing;
+      transition: all 0.3s ease-in-out;
       font-weight: $ios-font-weight-medium;
       font-family: $ios-font-family;
     }
@@ -1245,7 +1250,7 @@
   color: $ios-primary;
   font-size: $ios-font-size-sm;
   cursor: pointer;
-  transition: $ios-feedback-tap;
+  transition: all 0.2s ease-out;
   font-weight: $ios-font-weight-medium;
   font-family: $ios-font-family;
 }
@@ -1272,7 +1277,7 @@
   border-radius: $ios-radius-md;
   padding: $ios-spacing-lg;
   border: 1px solid $ios-border;
-  transition: $ios-feedback-hover;
+  transition: transform 0.1s ease-out;
 }
 
 .shift-item:hover {
@@ -1392,13 +1397,13 @@
   }
   
   &::-webkit-scrollbar-thumb {
-    background: $ios-scrollbar-thumb;
-    border: 2px solid $ios-background-secondary;
+      background: rgba(0, 0, 0, 0.2);
+      border: 2px solid $ios-background-secondary;
   }
   
   &::-webkit-scrollbar-thumb:hover {
-    background: $ios-scrollbar-thumb-hover;
-  }
+      background: rgba(0, 0, 0, 0.3);
+    }
 }
 
 .section-header {
@@ -1457,7 +1462,7 @@
       font-size: 13px;
       padding: 6px 14px;
       border-radius: $ios-radius-full;
-      background-color: $ios-primary-light;
+      background-color: rgba(0, 122, 255, 0.1);
       color: $ios-primary;
       border: 1px solid $ios-primary;
     }
@@ -1539,7 +1544,7 @@
       border-radius: $ios-radius-md;
       font-size: 15px;
       cursor: pointer;
-      transition: $ios-animation-normal $ios-animation-easing;
+      transition: all 0.3s ease-in-out;
       font-weight: $ios-font-weight-medium;
       font-family: $ios-font-family;
     }
@@ -1852,7 +1857,7 @@
   color: $ios-primary;
   font-size: $ios-font-size-sm;
   cursor: pointer;
-  transition: $ios-feedback-tap;
+  transition: all 0.2s ease-out;
   font-weight: $ios-font-weight-medium;
   font-family: $ios-font-family;
 }
@@ -1879,7 +1884,7 @@
   border-radius: $ios-radius-md;
   padding: $ios-spacing-lg;
   border: 1px solid $ios-border;
-  transition: $ios-feedback-hover;
+  transition: transform 0.1s ease-out;
 }
 
 .shift-item:hover {
@@ -1999,13 +2004,13 @@
   }
   
   &::-webkit-scrollbar-thumb {
-    background: $ios-scrollbar-thumb;
-    border: 2px solid $ios-background-secondary;
+      background: rgba(0, 0, 0, 0.2);
+      border: 2px solid $ios-background-secondary;
   }
   
   &::-webkit-scrollbar-thumb:hover {
-    background: $ios-scrollbar-thumb-hover;
-  }
+      background: rgba(0, 0, 0, 0.3);
+    }
 }
 
 .section-header {
@@ -2064,7 +2069,7 @@
       font-size: 13px;
       padding: 6px 14px;
       border-radius: $ios-radius-full;
-      background-color: $ios-primary-light;
+      background-color: rgba(0, 122, 255, 0.1);
       color: $ios-primary;
       border: 1px solid $ios-primary;
     }
@@ -2146,7 +2151,7 @@
       border-radius: $ios-radius-md;
       font-size: 15px;
       cursor: pointer;
-      transition: $ios-animation-normal $ios-animation-easing;
+      transition: all 0.3s ease-in-out;
       font-weight: $ios-font-weight-medium;
       font-family: $ios-font-family;
     }
@@ -2459,7 +2464,7 @@
   color: $ios-primary;
   font-size: $ios-font-size-sm;
   cursor: pointer;
-  transition: $ios-feedback-tap;
+  transition: all 0.2s ease-out;
   font-weight: $ios-font-weight-medium;
   font-family: $ios-font-family;
 }
@@ -2486,7 +2491,7 @@
   border-radius: $ios-radius-md;
   padding: $ios-spacing-lg;
   border: 1px solid $ios-border;
-  transition: $ios-feedback-hover;
+  transition: transform 0.1s ease-out;
 }
 
 .shift-item:hover {
@@ -2606,13 +2611,13 @@
   }
   
   &::-webkit-scrollbar-thumb {
-    background: $ios-scrollbar-thumb;
-    border: 2px solid $ios-background-secondary;
+      background: rgba(0, 0, 0, 0.2);
+      border: 2px solid $ios-background-secondary;
   }
   
   &::-webkit-scrollbar-thumb:hover {
-    background: $ios-scrollbar-thumb-hover;
-  }
+      background: rgba(0, 0, 0, 0.3);
+    }
 }
 
 .section-header {

+ 2 - 2
src/app/pages/designer/dashboard/skill-radar/skill-radar.component.scss

@@ -1,4 +1,4 @@
-  @use '../../ios-theme.scss' as *;
+@use '../../ios-theme.scss' as *;
 
 .skill-radar-container {
   background-color: $ios-card-background;
@@ -39,7 +39,7 @@
   font-size: $ios-font-size-sm;
   font-weight: $ios-font-weight-medium;
   cursor: pointer;
-  transition: $ios-feedback-tap;
+  transition: all 0.2s ease-out;
   font-family: $ios-font-family;
   outline: none;
 }

+ 1 - 0
src/app/pages/designer/project-detail/project-detail.scss

@@ -406,6 +406,7 @@
     display: flex;
     justify-content: center;
     position: relative;
+    z-index: 1; // 设置较低的z-index,确保不会覆盖弹窗
 
     // 添加背景装饰
     &::before {

+ 60 - 4
src/app/pages/designer/project-detail/project-detail.ts

@@ -776,8 +776,8 @@ export class ProjectDetail implements OnInit, OnDestroy {
         const currentSec = this.getSectionKeyForStage(project.currentStage as ProjectStage);
         this.expandedSection = currentSec;
       }
-      // 检查技能匹配度
-      this.checkSkillMismatch();
+      // 检查技能匹配度 - 已注释掉以取消弹窗警告
+      // this.checkSkillMismatch();
     });
   }
   
@@ -2015,8 +2015,25 @@ export class ProjectDetail implements OnInit, OnDestroy {
 
   // 检查必需阶段是否全部完成(流程进度 > 确认需求 > 需求沟通四个流程)
   areRequiredStagesCompleted(): boolean {
-    // 这里需要根据实际的需求确认流程来判断
-    // 暂时使用需求关键信息是否有数据来判断
+    // 检查项目是否已经进入方案确认阶段或更后的阶段
+    if (!this.project) return false;
+    
+    const stageOrder = [
+      '订单创建', '需求沟通', '方案确认', '建模', '软装', 
+      '渲染', '后期', '尾款结算', '客户评价', '投诉处理'
+    ];
+    
+    const currentStageIndex = stageOrder.indexOf(this.project.currentStage);
+    const proposalStageIndex = stageOrder.indexOf('方案确认');
+    
+    // 如果当前阶段是方案确认或之后的阶段,则认为需求阶段已完成
+    if (currentStageIndex >= proposalStageIndex) {
+      // 确保有基本的需求信息数据,如果没有则初始化模拟数据
+      this.ensureRequirementData();
+      return true;
+    }
+    
+    // 原有逻辑:检查需求关键信息是否有数据
     return this.getRequirementSummary().length > 0 && 
            (!!this.requirementKeyInfo.colorAtmosphere.description || 
             this.requirementKeyInfo.spaceStructure.aspectRatio > 0 ||
@@ -2024,6 +2041,45 @@ export class ProjectDetail implements OnInit, OnDestroy {
             !!this.requirementKeyInfo.presetAtmosphere.name);
   }
 
+  // 确保有需求数据用于方案确认显示
+  private ensureRequirementData(): void {
+    if (!this.requirementKeyInfo.colorAtmosphere.description && 
+        this.requirementKeyInfo.spaceStructure.aspectRatio === 0 &&
+        this.requirementKeyInfo.materialWeights.woodRatio === 0 &&
+        !this.requirementKeyInfo.presetAtmosphere.name) {
+      
+      // 初始化模拟的需求数据
+      this.requirementKeyInfo = {
+        colorAtmosphere: {
+          description: '现代简约风格,以白色和灰色为主调',
+          mainColor: '#F5F5F5',
+          colorTemp: '冷色调',
+          materials: ['木质', '金属', '玻璃']
+        },
+        spaceStructure: {
+          lineRatio: 0.6,
+          blankRatio: 0.4,
+          flowWidth: 1.2,
+          aspectRatio: 1.8,
+          ceilingHeight: 2.8
+        },
+        materialWeights: {
+          fabricRatio: 20,
+          woodRatio: 45,
+          metalRatio: 25,
+          smoothness: 0.7,
+          glossiness: 0.3
+        },
+        presetAtmosphere: {
+          name: '现代简约',
+          rgb: '#F5F5F5',
+          colorTemp: '5000K',
+          materials: ['木质', '金属']
+        }
+      };
+    }
+  }
+
   // 获取必需阶段的完成进度百分比
   getRequiredStagesProgress(): number {
     let completedCount = 0;

+ 17 - 11
src/app/shared/components/upload-success-modal/upload-success-modal.component.scss

@@ -27,14 +27,17 @@ $animation-easing: cubic-bezier(0.25, 0.8, 0.25, 1);
   justify-content: center;
   padding: 1rem;
   
-  // 响应式调整
+  // 强制所有设备都使用相同的居中布局
   @media (max-width: $mobile-breakpoint) {
-    padding: 0.5rem;
-    align-items: flex-end;
+    padding: 1rem;
+    align-items: center;
+    justify-content: center;
   }
   
   @media (min-width: $mobile-breakpoint) and (max-width: $tablet-breakpoint) {
     padding: 1rem;
+    align-items: center;
+    justify-content: center;
   }
 }
 
@@ -45,29 +48,32 @@ $animation-easing: cubic-bezier(0.25, 0.8, 0.25, 1);
   box-shadow: 0 20px 60px rgba(0, 0, 0, 0.15);
   max-width: 600px;
   width: 100%;
-  max-height: 80vh; // 减少最大高度,为滚动留出更多空间
+  max-height: 80vh;
   overflow: hidden;
   position: relative;
   transform-origin: center;
   display: flex;
   flex-direction: column;
+  margin: 0; // 移除所有边距,完全依赖flex居中
   
-  // 响应式调整
+  // 响应式调整 - 统一居中显示
   @media (max-width: $mobile-breakpoint) {
-    max-width: 100%;
-    border-radius: 16px 16px 0 0;
-    max-height: 75vh; // 移动端进一步减少高度
-    margin-top: auto;
+    max-width: calc(100% - 2rem); // 保持左右边距
+    border-radius: 16px;
+    max-height: 75vh;
+    margin: 0; // 确保没有边距
   }
   
   @media (min-width: $mobile-breakpoint) and (max-width: $tablet-breakpoint) {
     max-width: 90%;
-    max-height: 78vh; // 平板端适中的高度
+    max-height: 78vh;
+    margin: 0; // 确保没有边距
   }
   
   @media (min-width: $tablet-breakpoint) {
     max-width: 600px;
-    max-height: 80vh; // 桌面端保持80vh
+    max-height: 80vh;
+    margin: 0; // 确保没有边距
   }
   
   // 深色模式适配