|
@@ -1,8 +1,13 @@
|
|
|
+// 导入iOS主题变量
|
|
|
+@import '../ios-theme.scss';
|
|
|
+
|
|
|
.project-detail-container {
|
|
|
- padding: 20px;
|
|
|
+ padding: $ios-spacing-xl;
|
|
|
max-width: 1200px;
|
|
|
margin: 0 auto;
|
|
|
- font-family: 'Arial', sans-serif;
|
|
|
+ font-family: $ios-font-family;
|
|
|
+ background-color: $ios-background-secondary;
|
|
|
+ min-height: 100vh;
|
|
|
}
|
|
|
|
|
|
/* 项目标题栏 */
|
|
@@ -10,37 +15,44 @@
|
|
|
display: flex;
|
|
|
justify-content: space-between;
|
|
|
align-items: center;
|
|
|
- margin-bottom: 30px;
|
|
|
- padding-bottom: 15px;
|
|
|
- border-bottom: 2px solid #eee;
|
|
|
+ margin-bottom: $ios-spacing-xxl;
|
|
|
+ padding: $ios-spacing-xl;
|
|
|
+ background-color: $ios-background;
|
|
|
+ border-radius: $ios-radius-lg;
|
|
|
+ box-shadow: $ios-shadow-card;
|
|
|
}
|
|
|
|
|
|
.project-header h1 {
|
|
|
- font-size: 28px;
|
|
|
- color: #333;
|
|
|
+ font-size: $ios-font-size-xl;
|
|
|
+ color: $ios-text-primary;
|
|
|
margin: 0;
|
|
|
+ font-weight: $ios-font-weight-semibold;
|
|
|
}
|
|
|
|
|
|
.project-id {
|
|
|
- font-size: 14px;
|
|
|
- color: #666;
|
|
|
- background-color: #f5f5f5;
|
|
|
- padding: 5px 10px;
|
|
|
- border-radius: 4px;
|
|
|
+ font-size: $ios-font-size-sm;
|
|
|
+ color: $ios-text-secondary;
|
|
|
+ background-color: $ios-background-secondary;
|
|
|
+ padding: $ios-spacing-xs $ios-spacing-md;
|
|
|
+ border-radius: $ios-radius-full;
|
|
|
+ font-weight: $ios-font-weight-medium;
|
|
|
}
|
|
|
|
|
|
-/* 提醒消息弹窗 */
|
|
|
+/* 提醒消息弹窗 - iOS风格 */
|
|
|
.reminder-popup {
|
|
|
position: fixed;
|
|
|
- top: 20px;
|
|
|
- right: 20px;
|
|
|
- background-color: #4CAF50;
|
|
|
+ top: $ios-spacing-xl;
|
|
|
+ right: $ios-spacing-xl;
|
|
|
+ background-color: $ios-success;
|
|
|
color: white;
|
|
|
- padding: 15px 20px;
|
|
|
- border-radius: 4px;
|
|
|
- box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
|
|
|
+ padding: $ios-spacing-md $ios-spacing-lg;
|
|
|
+ border-radius: $ios-radius-lg;
|
|
|
+ box-shadow: $ios-shadow-md;
|
|
|
z-index: 1000;
|
|
|
- animation: slideInRight 0.3s ease-out;
|
|
|
+ animation: slideInRight $ios-animation-fast $ios-animation-easing;
|
|
|
+ font-family: $ios-font-family;
|
|
|
+ font-size: $ios-font-size-base;
|
|
|
+ font-weight: $ios-font-weight-medium;
|
|
|
}
|
|
|
|
|
|
@keyframes slideInRight {
|
|
@@ -54,7 +66,7 @@
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-/* 通用区域样式 */
|
|
|
+/* 通用区域样式 - iOS卡片风格 */
|
|
|
.project-info-section,
|
|
|
.customer-profile-section,
|
|
|
.requirement-section,
|
|
@@ -65,34 +77,50 @@
|
|
|
.designer-change-section,
|
|
|
.settlement-section,
|
|
|
.stagnation-section {
|
|
|
- background-color: white;
|
|
|
- border-radius: 8px;
|
|
|
- padding: 20px;
|
|
|
- margin-bottom: 20px;
|
|
|
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
|
|
|
+ background-color: $ios-card-background;
|
|
|
+ border-radius: $ios-radius-lg;
|
|
|
+ padding: $ios-spacing-xl;
|
|
|
+ margin-bottom: $ios-spacing-xl;
|
|
|
+ box-shadow: $ios-shadow-card;
|
|
|
+ transition: $ios-feedback-hover;
|
|
|
+}
|
|
|
+
|
|
|
+.project-info-section:hover,
|
|
|
+.customer-profile-section:hover,
|
|
|
+.requirement-section:hover,
|
|
|
+.process-section:hover,
|
|
|
+.render-progress-section:hover,
|
|
|
+.model-check-section:hover,
|
|
|
+.feedback-section:hover,
|
|
|
+.designer-change-section:hover,
|
|
|
+.settlement-section:hover,
|
|
|
+.stagnation-section:hover {
|
|
|
+ box-shadow: $ios-shadow-md;
|
|
|
}
|
|
|
|
|
|
h2 {
|
|
|
- font-size: 20px;
|
|
|
- color: #333;
|
|
|
+ font-size: $ios-font-size-lg;
|
|
|
+ color: $ios-text-primary;
|
|
|
margin-top: 0;
|
|
|
- margin-bottom: 20px;
|
|
|
- padding-bottom: 10px;
|
|
|
- border-bottom: 1px solid #eee;
|
|
|
+ margin-bottom: $ios-spacing-xl;
|
|
|
+ padding-bottom: $ios-spacing-md;
|
|
|
+ border-bottom: 1px solid $ios-border;
|
|
|
+ font-weight: $ios-font-weight-semibold;
|
|
|
}
|
|
|
|
|
|
h3 {
|
|
|
- font-size: 16px;
|
|
|
- color: #555;
|
|
|
+ font-size: $ios-font-size-base;
|
|
|
+ color: $ios-text-primary;
|
|
|
margin-top: 0;
|
|
|
- margin-bottom: 15px;
|
|
|
+ margin-bottom: $ios-spacing-lg;
|
|
|
+ font-weight: $ios-font-weight-medium;
|
|
|
}
|
|
|
|
|
|
-/* 项目基本信息 */
|
|
|
+/* 项目基本信息 - iOS风格 */
|
|
|
.info-grid {
|
|
|
display: grid;
|
|
|
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
|
|
|
- gap: 15px;
|
|
|
+ gap: $ios-spacing-lg;
|
|
|
}
|
|
|
|
|
|
.info-item {
|
|
@@ -101,40 +129,43 @@ h3 {
|
|
|
}
|
|
|
|
|
|
.info-item label {
|
|
|
- font-size: 14px;
|
|
|
- color: #666;
|
|
|
- margin-bottom: 5px;
|
|
|
- font-weight: bold;
|
|
|
+ font-size: $ios-font-size-sm;
|
|
|
+ color: $ios-text-secondary;
|
|
|
+ margin-bottom: $ios-spacing-xs;
|
|
|
+ font-weight: $ios-font-weight-medium;
|
|
|
}
|
|
|
|
|
|
.info-item span {
|
|
|
- font-size: 16px;
|
|
|
- color: #333;
|
|
|
+ font-size: $ios-font-size-base;
|
|
|
+ color: $ios-text-primary;
|
|
|
+ font-weight: $ios-font-weight-regular;
|
|
|
}
|
|
|
|
|
|
.stage-tag {
|
|
|
display: inline-block;
|
|
|
- padding: 5px 12px;
|
|
|
- border-radius: 20px;
|
|
|
- background-color: #e8f5e9;
|
|
|
- color: #43a047;
|
|
|
- font-size: 14px;
|
|
|
+ padding: $ios-spacing-xs $ios-spacing-lg;
|
|
|
+ border-radius: $ios-radius-full;
|
|
|
+ background-color: color-mix(in srgb, $ios-success 15%, transparent);
|
|
|
+ color: $ios-success;
|
|
|
+ font-size: $ios-font-size-sm;
|
|
|
+ font-weight: $ios-font-weight-medium;
|
|
|
}
|
|
|
|
|
|
-/* 客户画像 */
|
|
|
+/* 客户画像 - iOS风格 */
|
|
|
.skill-mismatch-warning {
|
|
|
- background-color: #ffebee;
|
|
|
- color: #c62828;
|
|
|
- padding: 10px 15px;
|
|
|
- border-radius: 4px;
|
|
|
- margin-bottom: 20px;
|
|
|
- border-left: 4px solid #c62828;
|
|
|
+ background-color: color-mix(in srgb, $ios-danger 10%, transparent);
|
|
|
+ color: $ios-danger;
|
|
|
+ padding: $ios-spacing-md $ios-spacing-lg;
|
|
|
+ border-radius: $ios-radius-md;
|
|
|
+ margin-bottom: $ios-spacing-xl;
|
|
|
+ border-left: 4px solid $ios-danger;
|
|
|
+ font-size: $ios-font-size-base;
|
|
|
}
|
|
|
|
|
|
.customer-tags {
|
|
|
display: flex;
|
|
|
flex-wrap: wrap;
|
|
|
- gap: 15px;
|
|
|
+ gap: $ios-spacing-lg;
|
|
|
}
|
|
|
|
|
|
.tag-group {
|
|
@@ -144,62 +175,76 @@ h3 {
|
|
|
}
|
|
|
|
|
|
.tag-group label {
|
|
|
- font-size: 14px;
|
|
|
- color: #666;
|
|
|
- margin-bottom: 8px;
|
|
|
- font-weight: bold;
|
|
|
+ font-size: $ios-font-size-sm;
|
|
|
+ color: $ios-text-secondary;
|
|
|
+ margin-bottom: $ios-spacing-sm;
|
|
|
+ font-weight: $ios-font-weight-medium;
|
|
|
}
|
|
|
|
|
|
.tag {
|
|
|
display: inline-block;
|
|
|
- background-color: #e3f2fd;
|
|
|
- color: #1976d2;
|
|
|
- padding: 4px 10px;
|
|
|
- border-radius: 15px;
|
|
|
- font-size: 13px;
|
|
|
- margin-right: 5px;
|
|
|
- margin-bottom: 5px;
|
|
|
+ background-color: color-mix(in srgb, $ios-primary 15%, transparent);
|
|
|
+ color: $ios-primary;
|
|
|
+ padding: $ios-spacing-xs $ios-spacing-md;
|
|
|
+ border-radius: $ios-radius-full;
|
|
|
+ font-size: $ios-font-size-xs;
|
|
|
+ margin-right: $ios-spacing-xs;
|
|
|
+ margin-bottom: $ios-spacing-xs;
|
|
|
+ font-weight: $ios-font-weight-medium;
|
|
|
}
|
|
|
|
|
|
.priority-tag {
|
|
|
display: inline-block;
|
|
|
- background-color: #fff3e0;
|
|
|
- color: #f57c00;
|
|
|
- padding: 4px 10px;
|
|
|
- border-radius: 15px;
|
|
|
- font-size: 13px;
|
|
|
- margin-right: 5px;
|
|
|
- margin-bottom: 5px;
|
|
|
+ background-color: color-mix(in srgb, $ios-warning 15%, transparent);
|
|
|
+ color: $ios-warning;
|
|
|
+ padding: $ios-spacing-xs $ios-spacing-md;
|
|
|
+ border-radius: $ios-radius-full;
|
|
|
+ font-size: $ios-font-size-xs;
|
|
|
+ margin-right: $ios-spacing-xs;
|
|
|
+ margin-bottom: $ios-spacing-xs;
|
|
|
+ font-weight: $ios-font-weight-medium;
|
|
|
}
|
|
|
|
|
|
-/* 需求确认清单 */
|
|
|
+/* 需求确认清单 - iOS风格 */
|
|
|
.checklist {
|
|
|
- margin-top: 15px;
|
|
|
+ margin-top: $ios-spacing-lg;
|
|
|
}
|
|
|
|
|
|
.checklist-item {
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
- margin-bottom: 10px;
|
|
|
+ margin-bottom: $ios-spacing-md;
|
|
|
+ padding: $ios-spacing-md;
|
|
|
+ border-radius: $ios-radius-md;
|
|
|
+ background-color: $ios-background-secondary;
|
|
|
+ transition: $ios-feedback-hover;
|
|
|
+}
|
|
|
+
|
|
|
+.checklist-item:hover {
|
|
|
+ background-color: color-mix(in srgb, $ios-background-secondary 80%, white);
|
|
|
}
|
|
|
|
|
|
.checklist-item input[type="checkbox"] {
|
|
|
- margin-right: 10px;
|
|
|
- width: 18px;
|
|
|
- height: 18px;
|
|
|
+ margin-right: $ios-spacing-md;
|
|
|
+ width: 20px;
|
|
|
+ height: 20px;
|
|
|
+ accent-color: $ios-primary;
|
|
|
+ border-radius: $ios-radius-sm;
|
|
|
}
|
|
|
|
|
|
.checklist-item span {
|
|
|
- color: #333;
|
|
|
+ color: $ios-text-primary;
|
|
|
+ font-size: $ios-font-size-base;
|
|
|
+ flex: 1;
|
|
|
}
|
|
|
|
|
|
-/* 制作流程进度 */
|
|
|
+/* 制作流程进度 - iOS风格 */
|
|
|
.stage-progress {
|
|
|
display: flex;
|
|
|
justify-content: space-between;
|
|
|
align-items: center;
|
|
|
position: relative;
|
|
|
- padding: 0 10px;
|
|
|
+ padding: 0 $ios-spacing-md;
|
|
|
}
|
|
|
|
|
|
.stage-progress::before {
|
|
@@ -208,8 +253,8 @@ h3 {
|
|
|
top: 50%;
|
|
|
left: 50px;
|
|
|
right: 50px;
|
|
|
- height: 2px;
|
|
|
- background-color: #e0e0e0;
|
|
|
+ height: 3px;
|
|
|
+ background-color: $ios-border;
|
|
|
transform: translateY(-50%);
|
|
|
z-index: 1;
|
|
|
}
|
|
@@ -220,283 +265,379 @@ h3 {
|
|
|
align-items: center;
|
|
|
z-index: 2;
|
|
|
position: relative;
|
|
|
+ transition: $ios-feedback-hover;
|
|
|
}
|
|
|
|
|
|
.stage-icon {
|
|
|
- width: 40px;
|
|
|
- height: 40px;
|
|
|
+ width: 44px;
|
|
|
+ height: 44px;
|
|
|
border-radius: 50%;
|
|
|
- background-color: #e0e0e0;
|
|
|
- color: #666;
|
|
|
+ background-color: $ios-border;
|
|
|
+ color: $ios-text-secondary;
|
|
|
display: flex;
|
|
|
justify-content: center;
|
|
|
align-items: center;
|
|
|
- font-weight: bold;
|
|
|
- margin-bottom: 10px;
|
|
|
- transition: all 0.3s ease;
|
|
|
+ font-weight: $ios-font-weight-semibold;
|
|
|
+ margin-bottom: $ios-spacing-md;
|
|
|
+ transition: all $ios-animation-normal $ios-animation-easing;
|
|
|
+ border: 3px solid $ios-background;
|
|
|
+ box-shadow: $ios-shadow-sm;
|
|
|
}
|
|
|
|
|
|
.stage-name {
|
|
|
- font-size: 14px;
|
|
|
- color: #666;
|
|
|
- margin-bottom: 10px;
|
|
|
+ font-size: $ios-font-size-sm;
|
|
|
+ color: $ios-text-secondary;
|
|
|
+ margin-bottom: $ios-spacing-md;
|
|
|
+ font-weight: $ios-font-weight-medium;
|
|
|
}
|
|
|
|
|
|
.stage.completed .stage-icon {
|
|
|
- background-color: #4caf50;
|
|
|
+ background-color: $ios-success;
|
|
|
color: white;
|
|
|
+ box-shadow: 0 0 0 3px color-mix(in srgb, $ios-success 20%, transparent);
|
|
|
}
|
|
|
|
|
|
.stage.completed .stage-name {
|
|
|
- color: #4caf50;
|
|
|
- font-weight: bold;
|
|
|
+ color: $ios-success;
|
|
|
+ font-weight: $ios-font-weight-semibold;
|
|
|
}
|
|
|
|
|
|
.stage-actions {
|
|
|
- margin-top: 10px;
|
|
|
+ margin-top: $ios-spacing-md;
|
|
|
}
|
|
|
|
|
|
.stage-actions button {
|
|
|
- background-color: #2196f3;
|
|
|
+ background-color: $ios-primary;
|
|
|
color: white;
|
|
|
border: none;
|
|
|
- padding: 8px 16px;
|
|
|
- border-radius: 4px;
|
|
|
- font-size: 14px;
|
|
|
+ padding: $ios-spacing-sm $ios-spacing-lg;
|
|
|
+ border-radius: $ios-radius-md;
|
|
|
+ font-size: $ios-font-size-base;
|
|
|
cursor: pointer;
|
|
|
- transition: background-color 0.3s ease;
|
|
|
+ transition: $ios-feedback-tap;
|
|
|
+ font-weight: $ios-font-weight-medium;
|
|
|
+ box-shadow: $ios-shadow-sm;
|
|
|
}
|
|
|
|
|
|
.stage-actions button:hover:not(:disabled) {
|
|
|
- background-color: #1976d2;
|
|
|
+ background-color: $ios-primary-light;
|
|
|
+ transform: translateY(-1px);
|
|
|
+ box-shadow: $ios-shadow-md;
|
|
|
+}
|
|
|
+
|
|
|
+.stage-actions button:active:not(:disabled) {
|
|
|
+ transform: translateY(0);
|
|
|
+ box-shadow: $ios-shadow-sm;
|
|
|
}
|
|
|
|
|
|
.stage-actions button:disabled {
|
|
|
- background-color: #ccc;
|
|
|
cursor: not-allowed;
|
|
|
+ background-color: $ios-text-tertiary;
|
|
|
+ box-shadow: none;
|
|
|
}
|
|
|
|
|
|
-/* 渲染进度 */
|
|
|
+/* 渲染进度 - iOS风格 */
|
|
|
.loading {
|
|
|
text-align: center;
|
|
|
- padding: 20px;
|
|
|
- color: #666;
|
|
|
+ padding: $ios-spacing-xl;
|
|
|
+ color: $ios-text-secondary;
|
|
|
+ font-size: $ios-font-size-base;
|
|
|
}
|
|
|
|
|
|
.error {
|
|
|
text-align: center;
|
|
|
- padding: 20px;
|
|
|
- color: #c62828;
|
|
|
- background-color: #ffebee;
|
|
|
- border-radius: 4px;
|
|
|
+ padding: $ios-spacing-xl;
|
|
|
+ color: $ios-danger;
|
|
|
+ background-color: color-mix(in srgb, $ios-danger 10%, transparent);
|
|
|
+ border-radius: $ios-radius-md;
|
|
|
+ font-size: $ios-font-size-base;
|
|
|
}
|
|
|
|
|
|
.error button {
|
|
|
- background-color: #c62828;
|
|
|
+ background-color: $ios-danger;
|
|
|
color: white;
|
|
|
border: none;
|
|
|
- padding: 8px 16px;
|
|
|
- border-radius: 4px;
|
|
|
- font-size: 14px;
|
|
|
+ padding: $ios-spacing-sm $ios-spacing-lg;
|
|
|
+ border-radius: $ios-radius-md;
|
|
|
+ font-size: $ios-font-size-base;
|
|
|
cursor: pointer;
|
|
|
- margin: 0 10px;
|
|
|
+ margin: 0 $ios-spacing-md;
|
|
|
+ transition: $ios-feedback-tap;
|
|
|
+ font-weight: $ios-font-weight-medium;
|
|
|
+}
|
|
|
+
|
|
|
+.error button:hover {
|
|
|
+ background-color: color-mix(in srgb, $ios-danger 90%, black);
|
|
|
+ transform: translateY(-1px);
|
|
|
}
|
|
|
|
|
|
.progress-content {
|
|
|
- padding: 20px;
|
|
|
+ padding: $ios-spacing-xl;
|
|
|
}
|
|
|
|
|
|
.progress-bar {
|
|
|
width: 100%;
|
|
|
- height: 20px;
|
|
|
- background-color: #e0e0e0;
|
|
|
- border-radius: 10px;
|
|
|
+ height: 8px;
|
|
|
+ background-color: $ios-border;
|
|
|
+ border-radius: $ios-radius-full;
|
|
|
overflow: hidden;
|
|
|
- margin-bottom: 15px;
|
|
|
+ margin-bottom: $ios-spacing-lg;
|
|
|
+ position: relative;
|
|
|
}
|
|
|
|
|
|
.progress-fill {
|
|
|
height: 100%;
|
|
|
- background-color: #4caf50;
|
|
|
- transition: width 0.3s ease;
|
|
|
+ background-color: $ios-primary;
|
|
|
+ transition: width $ios-animation-normal $ios-animation-easing;
|
|
|
+ border-radius: $ios-radius-full;
|
|
|
+ position: relative;
|
|
|
+ overflow: hidden;
|
|
|
+}
|
|
|
+
|
|
|
+.progress-fill::after {
|
|
|
+ content: '';
|
|
|
+ position: absolute;
|
|
|
+ top: 0;
|
|
|
+ left: 0;
|
|
|
+ right: 0;
|
|
|
+ bottom: 0;
|
|
|
+ background: linear-gradient(
|
|
|
+ 90deg,
|
|
|
+ transparent,
|
|
|
+ color-mix(in srgb, white 30%, transparent),
|
|
|
+ transparent
|
|
|
+ );
|
|
|
+ animation: shimmer 2s infinite;
|
|
|
+}
|
|
|
+
|
|
|
+@keyframes shimmer {
|
|
|
+ 0% {
|
|
|
+ transform: translateX(-100%);
|
|
|
+ }
|
|
|
+ 100% {
|
|
|
+ transform: translateX(100%);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
.progress-info {
|
|
|
display: flex;
|
|
|
justify-content: space-between;
|
|
|
- font-size: 16px;
|
|
|
- color: #333;
|
|
|
+ font-size: $ios-font-size-base;
|
|
|
+ color: $ios-text-primary;
|
|
|
+ font-weight: $ios-font-weight-medium;
|
|
|
}
|
|
|
|
|
|
-/* 模型检查清单 */
|
|
|
+/* 模型检查清单 - iOS风格 */
|
|
|
.check-status {
|
|
|
margin-left: auto;
|
|
|
- font-weight: bold;
|
|
|
+ font-weight: $ios-font-weight-semibold;
|
|
|
+ font-size: $ios-font-size-sm;
|
|
|
+ padding: $ios-spacing-xs $ios-spacing-sm;
|
|
|
+ border-radius: $ios-radius-md;
|
|
|
}
|
|
|
|
|
|
.check-status.passed {
|
|
|
- color: #4caf50;
|
|
|
+ color: $ios-success;
|
|
|
+ background-color: color-mix(in srgb, $ios-success 10%, transparent);
|
|
|
}
|
|
|
|
|
|
.check-status.failed {
|
|
|
- color: #f44336;
|
|
|
+ color: $ios-danger;
|
|
|
+ background-color: color-mix(in srgb, $ios-danger 10%, transparent);
|
|
|
}
|
|
|
|
|
|
-/* 客户反馈 */
|
|
|
+/* 客户反馈 - iOS风格 */
|
|
|
.no-feedback,
|
|
|
.no-changes,
|
|
|
.no-settlements {
|
|
|
text-align: center;
|
|
|
- padding: 20px;
|
|
|
- color: #999;
|
|
|
- font-style: italic;
|
|
|
+ padding: $ios-spacing-xl;
|
|
|
+ color: $ios-text-secondary;
|
|
|
+ font-size: $ios-font-size-base;
|
|
|
}
|
|
|
|
|
|
.feedback-item {
|
|
|
- border: 1px solid #eee;
|
|
|
- border-radius: 8px;
|
|
|
- padding: 15px;
|
|
|
- margin-bottom: 15px;
|
|
|
+ border: 1px solid $ios-border;
|
|
|
+ border-radius: $ios-radius-lg;
|
|
|
+ padding: $ios-spacing-lg;
|
|
|
+ margin-bottom: $ios-spacing-lg;
|
|
|
+ background-color: $ios-background;
|
|
|
+ transition: $ios-feedback-hover;
|
|
|
+}
|
|
|
+
|
|
|
+.feedback-item:hover {
|
|
|
+ box-shadow: $ios-shadow-sm;
|
|
|
}
|
|
|
|
|
|
.feedback-header {
|
|
|
display: flex;
|
|
|
justify-content: space-between;
|
|
|
align-items: center;
|
|
|
- margin-bottom: 10px;
|
|
|
- padding-bottom: 10px;
|
|
|
- border-bottom: 1px solid #f0f0f0;
|
|
|
+ margin-bottom: $ios-spacing-md;
|
|
|
+ padding-bottom: $ios-spacing-md;
|
|
|
+ border-bottom: 1px solid $ios-border;
|
|
|
}
|
|
|
|
|
|
.feedback-customer {
|
|
|
- font-weight: bold;
|
|
|
- color: #333;
|
|
|
+ font-weight: $ios-font-weight-semibold;
|
|
|
+ color: $ios-text-primary;
|
|
|
+ font-size: $ios-font-size-base;
|
|
|
}
|
|
|
|
|
|
.feedback-date {
|
|
|
- font-size: 12px;
|
|
|
- color: #999;
|
|
|
+ font-size: $ios-font-size-xs;
|
|
|
+ color: $ios-text-tertiary;
|
|
|
}
|
|
|
|
|
|
.feedback-content {
|
|
|
- margin-bottom: 15px;
|
|
|
+ margin-bottom: $ios-spacing-lg;
|
|
|
}
|
|
|
|
|
|
.feedback-status {
|
|
|
display: inline-block;
|
|
|
- background-color: #e3f2fd;
|
|
|
- color: #1976d2;
|
|
|
- padding: 4px 10px;
|
|
|
- border-radius: 15px;
|
|
|
- font-size: 13px;
|
|
|
- margin-bottom: 10px;
|
|
|
+ background-color: color-mix(in srgb, $ios-primary 15%, transparent);
|
|
|
+ color: $ios-primary;
|
|
|
+ padding: $ios-spacing-xs $ios-spacing-md;
|
|
|
+ border-radius: $ios-radius-full;
|
|
|
+ font-size: $ios-font-size-xs;
|
|
|
+ margin-bottom: $ios-spacing-md;
|
|
|
+ font-weight: $ios-font-weight-medium;
|
|
|
}
|
|
|
|
|
|
.feedback-type {
|
|
|
- color: #666;
|
|
|
- margin-bottom: 10px;
|
|
|
- font-size: 14px;
|
|
|
+ color: $ios-text-secondary;
|
|
|
+ margin-bottom: $ios-spacing-md;
|
|
|
+ font-size: $ios-font-size-sm;
|
|
|
}
|
|
|
|
|
|
.feedback-details {
|
|
|
- background-color: #f5f5f5;
|
|
|
- padding: 10px;
|
|
|
- border-radius: 4px;
|
|
|
+ background-color: $ios-background-secondary;
|
|
|
+ padding: $ios-spacing-md;
|
|
|
+ border-radius: $ios-radius-md;
|
|
|
}
|
|
|
|
|
|
.feedback-details p {
|
|
|
- margin: 5px 0;
|
|
|
- font-size: 14px;
|
|
|
- color: #333;
|
|
|
+ margin: $ios-spacing-xs 0;
|
|
|
+ font-size: $ios-font-size-sm;
|
|
|
+ color: $ios-text-primary;
|
|
|
}
|
|
|
|
|
|
.feedback-actions {
|
|
|
display: flex;
|
|
|
- gap: 10px;
|
|
|
+ gap: $ios-spacing-md;
|
|
|
}
|
|
|
|
|
|
.feedback-actions button {
|
|
|
- padding: 8px 16px;
|
|
|
+ padding: $ios-spacing-sm $ios-spacing-lg;
|
|
|
border: none;
|
|
|
- border-radius: 4px;
|
|
|
- font-size: 14px;
|
|
|
+ border-radius: $ios-radius-md;
|
|
|
+ font-size: $ios-font-size-base;
|
|
|
cursor: pointer;
|
|
|
- transition: background-color 0.3s ease;
|
|
|
+ transition: $ios-feedback-tap;
|
|
|
+ font-weight: $ios-font-weight-medium;
|
|
|
+ flex: 1;
|
|
|
+ box-shadow: $ios-shadow-sm;
|
|
|
}
|
|
|
|
|
|
.feedback-actions button:first-child {
|
|
|
- background-color: #2196f3;
|
|
|
+ background-color: $ios-primary;
|
|
|
color: white;
|
|
|
}
|
|
|
|
|
|
.feedback-actions button:first-child:hover:not(:disabled) {
|
|
|
- background-color: #1976d2;
|
|
|
+ background-color: $ios-primary-light;
|
|
|
+ transform: translateY(-1px);
|
|
|
+ box-shadow: $ios-shadow-md;
|
|
|
+}
|
|
|
+
|
|
|
+.feedback-actions button:first-child:active:not(:disabled) {
|
|
|
+ transform: translateY(0);
|
|
|
+ box-shadow: $ios-shadow-sm;
|
|
|
}
|
|
|
|
|
|
.feedback-actions button:last-child {
|
|
|
- background-color: #4caf50;
|
|
|
+ background-color: $ios-success;
|
|
|
color: white;
|
|
|
}
|
|
|
|
|
|
.feedback-actions button:last-child:hover:not(:disabled) {
|
|
|
- background-color: #43a047;
|
|
|
+ background-color: color-mix(in srgb, $ios-success 90%, black);
|
|
|
+ transform: translateY(-1px);
|
|
|
+ box-shadow: $ios-shadow-md;
|
|
|
+}
|
|
|
+
|
|
|
+.feedback-actions button:last-child:active:not(:disabled) {
|
|
|
+ transform: translateY(0);
|
|
|
+ box-shadow: $ios-shadow-sm;
|
|
|
}
|
|
|
|
|
|
.feedback-actions button:disabled {
|
|
|
- background-color: #ccc;
|
|
|
+ background-color: $ios-text-tertiary;
|
|
|
cursor: not-allowed;
|
|
|
+ box-shadow: none;
|
|
|
}
|
|
|
|
|
|
-/* 设计师变更记录 */
|
|
|
+/* 设计师变更记录 - iOS风格 */
|
|
|
.change-item {
|
|
|
- border: 1px solid #eee;
|
|
|
- border-radius: 8px;
|
|
|
- padding: 15px;
|
|
|
- margin-bottom: 15px;
|
|
|
+ border: 1px solid $ios-border;
|
|
|
+ border-radius: $ios-radius-lg;
|
|
|
+ padding: $ios-spacing-lg;
|
|
|
+ margin-bottom: $ios-spacing-lg;
|
|
|
+ background-color: $ios-background;
|
|
|
+ transition: $ios-feedback-hover;
|
|
|
+}
|
|
|
+
|
|
|
+.change-item:hover {
|
|
|
+ box-shadow: $ios-shadow-sm;
|
|
|
}
|
|
|
|
|
|
.change-header {
|
|
|
- margin-bottom: 15px;
|
|
|
- padding-bottom: 10px;
|
|
|
- border-bottom: 1px solid #f0f0f0;
|
|
|
+ margin-bottom: $ios-spacing-lg;
|
|
|
+ padding-bottom: $ios-spacing-md;
|
|
|
+ border-bottom: 1px solid $ios-border;
|
|
|
}
|
|
|
|
|
|
.change-time {
|
|
|
- font-size: 14px;
|
|
|
- color: #666;
|
|
|
- font-weight: bold;
|
|
|
+ font-size: $ios-font-size-sm;
|
|
|
+ color: $ios-text-secondary;
|
|
|
+ font-weight: $ios-font-weight-semibold;
|
|
|
}
|
|
|
|
|
|
.change-details {
|
|
|
- margin-bottom: 15px;
|
|
|
+ margin-bottom: $ios-spacing-lg;
|
|
|
}
|
|
|
|
|
|
.change-details div {
|
|
|
- margin-bottom: 8px;
|
|
|
- color: #333;
|
|
|
+ margin-bottom: $ios-spacing-xs;
|
|
|
+ color: $ios-text-primary;
|
|
|
+ font-size: $ios-font-size-base;
|
|
|
}
|
|
|
|
|
|
.change-details ul {
|
|
|
- margin: 8px 0;
|
|
|
- padding-left: 20px;
|
|
|
+ margin: $ios-spacing-xs 0;
|
|
|
+ padding-left: $ios-spacing-xl;
|
|
|
}
|
|
|
|
|
|
.change-details li {
|
|
|
- color: #333;
|
|
|
- margin-bottom: 4px;
|
|
|
+ color: $ios-text-primary;
|
|
|
+ margin-bottom: $ios-spacing-xs;
|
|
|
+ font-size: $ios-font-size-sm;
|
|
|
}
|
|
|
|
|
|
.change-status {
|
|
|
- font-size: 14px;
|
|
|
- color: #666;
|
|
|
- background-color: #f5f5f5;
|
|
|
- padding: 8px;
|
|
|
- border-radius: 4px;
|
|
|
+ font-size: $ios-font-size-sm;
|
|
|
+ color: $ios-text-secondary;
|
|
|
+ background-color: $ios-background-secondary;
|
|
|
+ padding: $ios-spacing-sm;
|
|
|
+ border-radius: $ios-radius-md;
|
|
|
}
|
|
|
|
|
|
-/* 分阶段结算记录 */
|
|
|
+/* 分阶段结算记录 - iOS风格 */
|
|
|
.settlement-table {
|
|
|
overflow-x: auto;
|
|
|
+ border-radius: $ios-radius-lg;
|
|
|
+ background-color: $ios-background;
|
|
|
+ border: 1px solid $ios-border;
|
|
|
}
|
|
|
|
|
|
.settlement-table table {
|
|
@@ -506,63 +647,87 @@ h3 {
|
|
|
|
|
|
.settlement-table th,
|
|
|
.settlement-table td {
|
|
|
- padding: 12px;
|
|
|
+ padding: $ios-spacing-lg;
|
|
|
text-align: left;
|
|
|
- border-bottom: 1px solid #eee;
|
|
|
+ border-bottom: 1px solid $ios-border;
|
|
|
+ font-size: $ios-font-size-base;
|
|
|
}
|
|
|
|
|
|
.settlement-table th {
|
|
|
- background-color: #f5f5f5;
|
|
|
- font-weight: bold;
|
|
|
- color: #333;
|
|
|
+ background-color: $ios-background-secondary;
|
|
|
+ font-weight: $ios-font-weight-semibold;
|
|
|
+ color: $ios-text-primary;
|
|
|
+ position: sticky;
|
|
|
+ top: 0;
|
|
|
+ z-index: 10;
|
|
|
}
|
|
|
|
|
|
.settlement-table td {
|
|
|
- color: #666;
|
|
|
+ color: $ios-text-primary;
|
|
|
+ font-weight: $ios-font-weight-regular;
|
|
|
+}
|
|
|
+
|
|
|
+.settlement-table tr:last-child td {
|
|
|
+ border-bottom: none;
|
|
|
}
|
|
|
|
|
|
-/* 停滞期管理 */
|
|
|
+.settlement-table tr:hover td {
|
|
|
+ background-color: color-mix(in srgb, $ios-background-secondary 50%, white);
|
|
|
+}
|
|
|
+
|
|
|
+/* 停滞期管理 - iOS风格 */
|
|
|
.stagnation-section button {
|
|
|
- background-color: #ff9800;
|
|
|
+ background-color: $ios-warning;
|
|
|
color: white;
|
|
|
border: none;
|
|
|
- padding: 10px 20px;
|
|
|
- border-radius: 4px;
|
|
|
- font-size: 16px;
|
|
|
+ padding: $ios-spacing-md $ios-spacing-xl;
|
|
|
+ border-radius: $ios-radius-md;
|
|
|
+ font-size: $ios-font-size-base;
|
|
|
cursor: pointer;
|
|
|
- transition: background-color 0.3s ease;
|
|
|
+ transition: $ios-feedback-tap;
|
|
|
+ font-weight: $ios-font-weight-medium;
|
|
|
+ box-shadow: $ios-shadow-sm;
|
|
|
}
|
|
|
|
|
|
.stagnation-section button:hover {
|
|
|
- background-color: #f57c00;
|
|
|
+ background-color: color-mix(in srgb, $ios-warning 90%, black);
|
|
|
+ transform: translateY(-1px);
|
|
|
+ box-shadow: $ios-shadow-md;
|
|
|
+}
|
|
|
+
|
|
|
+.stagnation-section button:active {
|
|
|
+ transform: translateY(0);
|
|
|
+ box-shadow: $ios-shadow-sm;
|
|
|
}
|
|
|
|
|
|
.stagnation-section p {
|
|
|
- margin-top: 10px;
|
|
|
- color: #666;
|
|
|
- font-size: 14px;
|
|
|
+ margin-top: $ios-spacing-md;
|
|
|
+ color: $ios-text-secondary;
|
|
|
+ font-size: $ios-font-size-sm;
|
|
|
}
|
|
|
|
|
|
-/* 响应式设计 */
|
|
|
+/* 响应式设计 - iOS风格 */
|
|
|
@media (max-width: 768px) {
|
|
|
.project-detail-container {
|
|
|
- padding: 10px;
|
|
|
+ padding: $ios-spacing-md;
|
|
|
}
|
|
|
|
|
|
.project-header {
|
|
|
flex-direction: column;
|
|
|
align-items: flex-start;
|
|
|
- gap: 10px;
|
|
|
+ gap: $ios-spacing-md;
|
|
|
+ padding: $ios-spacing-lg;
|
|
|
}
|
|
|
|
|
|
.info-grid {
|
|
|
grid-template-columns: 1fr;
|
|
|
+ gap: $ios-spacing-md;
|
|
|
}
|
|
|
|
|
|
.stage-progress {
|
|
|
flex-direction: column;
|
|
|
align-items: flex-start;
|
|
|
- gap: 20px;
|
|
|
+ gap: $ios-spacing-xl;
|
|
|
}
|
|
|
|
|
|
.stage-progress::before {
|
|
@@ -572,11 +737,16 @@ h3 {
|
|
|
.stage {
|
|
|
flex-direction: row;
|
|
|
align-items: center;
|
|
|
- gap: 10px;
|
|
|
+ gap: $ios-spacing-md;
|
|
|
+ width: 100%;
|
|
|
+ justify-content: flex-start;
|
|
|
}
|
|
|
|
|
|
.stage-icon {
|
|
|
margin-bottom: 0;
|
|
|
+ width: 36px;
|
|
|
+ height: 36px;
|
|
|
+ font-size: $ios-font-size-sm;
|
|
|
}
|
|
|
|
|
|
.feedback-actions {
|
|
@@ -585,11 +755,71 @@ h3 {
|
|
|
|
|
|
.customer-tags {
|
|
|
flex-direction: column;
|
|
|
- gap: 10px;
|
|
|
+ gap: $ios-spacing-md;
|
|
|
}
|
|
|
|
|
|
.progress-info {
|
|
|
flex-direction: column;
|
|
|
- gap: 10px;
|
|
|
+ gap: $ios-spacing-md;
|
|
|
+ }
|
|
|
+
|
|
|
+ .checklist-item {
|
|
|
+ padding: $ios-spacing-sm;
|
|
|
+ }
|
|
|
+
|
|
|
+ .settlement-table th,
|
|
|
+ .settlement-table td {
|
|
|
+ padding: $ios-spacing-sm;
|
|
|
+ font-size: $ios-font-size-sm;
|
|
|
+ }
|
|
|
+
|
|
|
+ .stage-actions button {
|
|
|
+ padding: $ios-spacing-sm $ios-spacing-md;
|
|
|
+ font-size: $ios-font-size-sm;
|
|
|
+ }
|
|
|
+
|
|
|
+ .feedback-actions button {
|
|
|
+ padding: $ios-spacing-sm $ios-spacing-md;
|
|
|
+ font-size: $ios-font-size-sm;
|
|
|
+ }
|
|
|
+
|
|
|
+ .stagnation-section button {
|
|
|
+ padding: $ios-spacing-sm $ios-spacing-lg;
|
|
|
+ font-size: $ios-font-size-sm;
|
|
|
+ width: 100%;
|
|
|
}
|
|
|
+
|
|
|
+ h2 {
|
|
|
+ font-size: $ios-font-size-base;
|
|
|
+ margin-bottom: $ios-spacing-lg;
|
|
|
+ }
|
|
|
+
|
|
|
+ h3 {
|
|
|
+ font-size: $ios-font-size-sm;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+/* iOS风格的滚动条 */
|
|
|
+::-webkit-scrollbar {
|
|
|
+ width: $ios-scrollbar-width;
|
|
|
+ height: $ios-scrollbar-width;
|
|
|
+}
|
|
|
+
|
|
|
+::-webkit-scrollbar-track {
|
|
|
+ background: $ios-scrollbar-track;
|
|
|
+ border-radius: $ios-radius-full;
|
|
|
+}
|
|
|
+
|
|
|
+::-webkit-scrollbar-thumb {
|
|
|
+ background: $ios-scrollbar-thumb;
|
|
|
+ border-radius: $ios-radius-full;
|
|
|
+}
|
|
|
+
|
|
|
+::-webkit-scrollbar-thumb:hover {
|
|
|
+ background: $ios-scrollbar-thumb-hover;
|
|
|
+}
|
|
|
+
|
|
|
+/* 平滑滚动 */
|
|
|
+html {
|
|
|
+ scroll-behavior: smooth;
|
|
|
}
|