|
@@ -1,3 +1,4 @@
|
|
|
+@use "sass:color";
|
|
|
@use '../../styles/_ios-theme.scss' as ios;
|
|
|
@use '../../../../styles/variables' as vars;
|
|
|
|
|
@@ -12,55 +13,157 @@
|
|
|
// 统计数据概览
|
|
|
.stats-overview {
|
|
|
margin-bottom: ios.$ios-spacing-lg;
|
|
|
+ background: linear-gradient(135deg, rgba(ios.$ios-primary, 0.05), rgba(ios.$ios-primary, 0.02));
|
|
|
+ border-radius: 16px;
|
|
|
+ padding: ios.$ios-spacing-lg;
|
|
|
+ border: 1px solid rgba(ios.$ios-primary, 0.1);
|
|
|
|
|
|
- h4 {
|
|
|
- margin: 0 0 ios.$ios-spacing-md 0;
|
|
|
- font-size: ios.$ios-font-size-lg;
|
|
|
- font-weight: ios.$ios-font-weight-semibold;
|
|
|
- color: ios.$ios-text-primary;
|
|
|
+ .stats-header {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+ margin-bottom: ios.$ios-spacing-lg;
|
|
|
+
|
|
|
+ h4 {
|
|
|
+ margin: 0;
|
|
|
+ font-size: ios.$ios-font-size-xl;
|
|
|
+ font-weight: ios.$ios-font-weight-bold;
|
|
|
+ color: ios.$ios-text-primary;
|
|
|
+ background: linear-gradient(135deg, ios.$ios-primary, color.adjust(ios.$ios-primary, $lightness: -20%));
|
|
|
+ -webkit-background-clip: text;
|
|
|
+ -webkit-text-fill-color: transparent;
|
|
|
+ background-clip: text;
|
|
|
+ }
|
|
|
+
|
|
|
+ .view-controls {
|
|
|
+ display: flex;
|
|
|
+ gap: ios.$ios-spacing-sm;
|
|
|
+
|
|
|
+ .view-toggle-btn,
|
|
|
+ .export-btn {
|
|
|
+ padding: ios.$ios-spacing-sm ios.$ios-spacing-md;
|
|
|
+ border: 1px solid ios.$ios-primary;
|
|
|
+ background: transparent;
|
|
|
+ color: ios.$ios-primary;
|
|
|
+ border-radius: 24px;
|
|
|
+ font-size: ios.$ios-font-size-sm;
|
|
|
+ font-weight: ios.$ios-font-weight-medium;
|
|
|
+ cursor: pointer;
|
|
|
+ transition: all 0.3s ease;
|
|
|
+
|
|
|
+ &:hover {
|
|
|
+ background: ios.$ios-primary;
|
|
|
+ color: white;
|
|
|
+ transform: translateY(-1px);
|
|
|
+ box-shadow: 0 4px 8px rgba(ios.$ios-primary, 0.3);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
.stats-grid {
|
|
|
display: grid;
|
|
|
- grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
|
|
|
- gap: ios.$ios-spacing-md;
|
|
|
+ grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
|
|
|
+ gap: ios.$ios-spacing-lg;
|
|
|
|
|
|
.stat-item {
|
|
|
text-align: center;
|
|
|
- padding: ios.$ios-spacing-md;
|
|
|
- background: ios.$ios-background-secondary;
|
|
|
- border-radius: vars.$ios-border-radius-md;
|
|
|
- border: 1px solid ios.$ios-border;
|
|
|
+ padding: ios.$ios-spacing-lg;
|
|
|
+ background: ios.$ios-background;
|
|
|
+ border-radius: 16px;
|
|
|
+ border: 1px solid rgba(ios.$ios-border, 0.5);
|
|
|
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
|
|
|
+ transition: all 0.3s ease;
|
|
|
+ position: relative;
|
|
|
+ overflow: hidden;
|
|
|
+
|
|
|
+ &::before {
|
|
|
+ content: '';
|
|
|
+ position: absolute;
|
|
|
+ top: 0;
|
|
|
+ left: 0;
|
|
|
+ right: 0;
|
|
|
+ height: 3px;
|
|
|
+ background: linear-gradient(90deg, transparent, ios.$ios-primary, transparent);
|
|
|
+ opacity: 0;
|
|
|
+ transition: opacity 0.3s ease;
|
|
|
+ }
|
|
|
+
|
|
|
+ &:hover {
|
|
|
+ transform: translateY(-4px);
|
|
|
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
|
|
|
+ border-color: ios.$ios-primary;
|
|
|
+
|
|
|
+ &::before {
|
|
|
+ opacity: 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
.stat-value {
|
|
|
- font-size: ios.$ios-font-size-xl;
|
|
|
+ font-size: ios.$ios-font-size-large-title;
|
|
|
font-weight: ios.$ios-font-weight-bold;
|
|
|
color: ios.$ios-text-primary;
|
|
|
- margin-bottom: ios.$ios-spacing-xs;
|
|
|
+ margin-bottom: ios.$ios-spacing-sm;
|
|
|
+ line-height: 1.2;
|
|
|
|
|
|
.score-suffix {
|
|
|
- font-size: ios.$ios-font-size-sm;
|
|
|
+ font-size: ios.$ios-font-size-md;
|
|
|
color: ios.$ios-text-secondary;
|
|
|
+ font-weight: ios.$ios-font-weight-medium;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
.stat-label {
|
|
|
- font-size: ios.$ios-font-size-xs;
|
|
|
+ font-size: ios.$ios-font-size-sm;
|
|
|
color: ios.$ios-text-secondary;
|
|
|
- margin-bottom: ios.$ios-spacing-xs;
|
|
|
+ margin-bottom: ios.$ios-spacing-sm;
|
|
|
+ font-weight: ios.$ios-font-weight-medium;
|
|
|
}
|
|
|
|
|
|
.star-display {
|
|
|
.star {
|
|
|
color: #FFD700;
|
|
|
- font-size: ios.$ios-font-size-sm;
|
|
|
+ font-size: ios.$ios-font-size-md;
|
|
|
+ margin: 0 1px;
|
|
|
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- &.total .stat-value { color: ios.$ios-primary; }
|
|
|
- &.score .stat-value { color: #FF6B35; }
|
|
|
- &.satisfied .stat-value { color: ios.$ios-success; }
|
|
|
- &.pending .stat-value { color: ios.$ios-warning; }
|
|
|
+ &.total {
|
|
|
+ .stat-value {
|
|
|
+ background: linear-gradient(135deg, ios.$ios-primary, color.adjust(ios.$ios-primary, $lightness: -20%));
|
|
|
+ -webkit-background-clip: text;
|
|
|
+ -webkit-text-fill-color: transparent;
|
|
|
+ background-clip: text;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ &.score {
|
|
|
+ .stat-value {
|
|
|
+ background: linear-gradient(135deg, #FF6B35, color.adjust(#FF6B35, $lightness: -20%));
|
|
|
+ -webkit-background-clip: text;
|
|
|
+ -webkit-text-fill-color: transparent;
|
|
|
+ background-clip: text;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ &.satisfied {
|
|
|
+ .stat-value {
|
|
|
+ background: linear-gradient(135deg, ios.$ios-success, color.adjust(ios.$ios-success, $lightness: -20%));
|
|
|
+ -webkit-background-clip: text;
|
|
|
+ -webkit-text-fill-color: transparent;
|
|
|
+ background-clip: text;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ &.pending {
|
|
|
+ .stat-value {
|
|
|
+ background: linear-gradient(135deg, ios.$ios-warning, color.adjust(ios.$ios-warning, $lightness: -20%));
|
|
|
+ -webkit-background-clip: text;
|
|
|
+ -webkit-text-fill-color: transparent;
|
|
|
+ background-clip: text;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -68,41 +171,80 @@
|
|
|
// 分类统计
|
|
|
.category-stats {
|
|
|
margin-bottom: ios.$ios-spacing-lg;
|
|
|
- padding: ios.$ios-spacing-md;
|
|
|
- background: ios.$ios-background-secondary;
|
|
|
- border-radius: vars.$ios-border-radius-md;
|
|
|
- border: 1px solid ios.$ios-border;
|
|
|
+ padding: ios.$ios-spacing-lg;
|
|
|
+ background: linear-gradient(135deg, rgba(ios.$ios-success, 0.05), rgba(ios.$ios-success, 0.02));
|
|
|
+ border-radius: 16px;
|
|
|
+ border: 1px solid rgba(ios.$ios-success, 0.1);
|
|
|
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
|
|
|
|
|
|
h5 {
|
|
|
- margin: 0 0 ios.$ios-spacing-md 0;
|
|
|
- font-size: ios.$ios-font-size-md;
|
|
|
- font-weight: ios.$ios-font-weight-semibold;
|
|
|
- color: ios.$ios-text-primary;
|
|
|
+ margin: 0 0 ios.$ios-spacing-lg 0;
|
|
|
+ font-size: ios.$ios-font-size-lg;
|
|
|
+ font-weight: ios.$ios-font-weight-bold;
|
|
|
+ background: linear-gradient(135deg, ios.$ios-success, color.adjust(ios.$ios-success, $lightness: -20%));
|
|
|
+ -webkit-background-clip: text;
|
|
|
+ -webkit-text-fill-color: transparent;
|
|
|
+ background-clip: text;
|
|
|
}
|
|
|
|
|
|
.category-grid {
|
|
|
display: grid;
|
|
|
- grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
|
|
|
- gap: ios.$ios-spacing-sm;
|
|
|
+ grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
|
|
|
+ gap: ios.$ios-spacing-md;
|
|
|
|
|
|
.category-item {
|
|
|
display: flex;
|
|
|
justify-content: space-between;
|
|
|
align-items: center;
|
|
|
- padding: ios.$ios-spacing-sm;
|
|
|
+ padding: ios.$ios-spacing-md;
|
|
|
background: ios.$ios-background;
|
|
|
- border-radius: vars.$ios-border-radius-sm;
|
|
|
- border: 1px solid ios.$ios-border;
|
|
|
+ border-radius: 12px;
|
|
|
+ border: 1px solid rgba(ios.$ios-border, 0.5);
|
|
|
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.05);
|
|
|
+ transition: all 0.3s ease;
|
|
|
+ position: relative;
|
|
|
+ overflow: hidden;
|
|
|
+
|
|
|
+ &::before {
|
|
|
+ content: '';
|
|
|
+ position: absolute;
|
|
|
+ top: 0;
|
|
|
+ left: 0;
|
|
|
+ width: 3px;
|
|
|
+ height: 100%;
|
|
|
+ background: ios.$ios-success;
|
|
|
+ opacity: 0;
|
|
|
+ transition: opacity 0.3s ease;
|
|
|
+ }
|
|
|
+
|
|
|
+ &:hover {
|
|
|
+ transform: translateY(-2px);
|
|
|
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
|
|
|
+ border-color: ios.$ios-success;
|
|
|
+
|
|
|
+ &::before {
|
|
|
+ opacity: 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
.category-label {
|
|
|
- font-size: ios.$ios-font-size-xs;
|
|
|
- color: ios.$ios-text-secondary;
|
|
|
+ font-size: ios.$ios-font-size-sm;
|
|
|
+ color: ios.$ios-text-primary;
|
|
|
+ font-weight: ios.$ios-font-weight-medium;
|
|
|
}
|
|
|
|
|
|
.category-count {
|
|
|
- font-size: ios.$ios-font-size-sm;
|
|
|
- font-weight: ios.$ios-font-weight-semibold;
|
|
|
- color: ios.$ios-primary;
|
|
|
+ font-size: ios.$ios-font-size-md;
|
|
|
+ font-weight: ios.$ios-font-weight-bold;
|
|
|
+ background: linear-gradient(135deg, ios.$ios-success, color.adjust(ios.$ios-success, $lightness: -15%));
|
|
|
+ -webkit-background-clip: text;
|
|
|
+ -webkit-text-fill-color: transparent;
|
|
|
+ background-clip: text;
|
|
|
+ padding: 4px 8px;
|
|
|
+ border-radius: 12px;
|
|
|
+ background-color: rgba(ios.$ios-success, 0.1);
|
|
|
+ min-width: 24px;
|
|
|
+ text-align: center;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -111,15 +253,16 @@
|
|
|
// 筛选区域
|
|
|
.filter-section {
|
|
|
margin-bottom: ios.$ios-spacing-lg;
|
|
|
- padding: ios.$ios-spacing-md;
|
|
|
- background: ios.$ios-background-secondary;
|
|
|
- border-radius: vars.$ios-border-radius-md;
|
|
|
- border: 1px solid ios.$ios-border;
|
|
|
+ padding: ios.$ios-spacing-lg;
|
|
|
+ background: linear-gradient(135deg, rgba(ios.$ios-color-system-gray-1-light, 0.05), rgba(ios.$ios-color-system-gray-1-light, 0.02));
|
|
|
+ border-radius: 16px;
|
|
|
+ border: 1px solid rgba(ios.$ios-border, 0.3);
|
|
|
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
|
|
|
|
|
|
.filter-row {
|
|
|
display: flex;
|
|
|
flex-wrap: wrap;
|
|
|
- gap: ios.$ios-spacing-md;
|
|
|
+ gap: ios.$ios-spacing-lg;
|
|
|
margin-bottom: ios.$ios-spacing-md;
|
|
|
|
|
|
&:last-child {
|
|
@@ -129,67 +272,107 @@
|
|
|
.filter-group {
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
- gap: ios.$ios-spacing-sm;
|
|
|
+ gap: ios.$ios-spacing-md;
|
|
|
|
|
|
label {
|
|
|
font-size: ios.$ios-font-size-sm;
|
|
|
- color: ios.$ios-text-secondary;
|
|
|
+ color: ios.$ios-text-primary;
|
|
|
white-space: nowrap;
|
|
|
+ font-weight: ios.$ios-font-weight-semibold;
|
|
|
+ min-width: 80px;
|
|
|
}
|
|
|
|
|
|
.filter-buttons {
|
|
|
display: flex;
|
|
|
gap: ios.$ios-spacing-xs;
|
|
|
+ background: ios.$ios-background;
|
|
|
+ padding: 4px;
|
|
|
+ border-radius: 20px;
|
|
|
+ border: 1px solid rgba(ios.$ios-border, 0.5);
|
|
|
+ box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);
|
|
|
|
|
|
.filter-btn {
|
|
|
- padding: ios.$ios-spacing-xs ios.$ios-spacing-sm;
|
|
|
- border: 1px solid ios.$ios-border;
|
|
|
- background: ios.$ios-background;
|
|
|
+ padding: ios.$ios-spacing-sm ios.$ios-spacing-md;
|
|
|
+ border: none;
|
|
|
+ background: transparent;
|
|
|
color: ios.$ios-text-secondary;
|
|
|
- border-radius: vars.$ios-border-radius-sm;
|
|
|
- font-size: ios.$ios-font-size-xs;
|
|
|
+ border-radius: 16px;
|
|
|
+ font-size: ios.$ios-font-size-sm;
|
|
|
+ font-weight: ios.$ios-font-weight-medium;
|
|
|
cursor: pointer;
|
|
|
- transition: all 0.2s ease;
|
|
|
+ transition: all 0.3s ease;
|
|
|
+ min-width: 60px;
|
|
|
+ position: relative;
|
|
|
|
|
|
&:hover {
|
|
|
- background: ios.$ios-background-secondary;
|
|
|
+ background: rgba(ios.$ios-primary, 0.1);
|
|
|
+ color: ios.$ios-primary;
|
|
|
}
|
|
|
|
|
|
&.active {
|
|
|
background: ios.$ios-primary;
|
|
|
color: white;
|
|
|
- border-color: ios.$ios-primary;
|
|
|
- }
|
|
|
-
|
|
|
- &.pending.active {
|
|
|
- background: ios.$ios-warning;
|
|
|
- border-color: ios.$ios-warning;
|
|
|
- }
|
|
|
-
|
|
|
- &.satisfied.active {
|
|
|
- background: ios.$ios-success;
|
|
|
- border-color: ios.$ios-success;
|
|
|
- }
|
|
|
-
|
|
|
- &.unsatisfied.active {
|
|
|
- background: ios.$ios-danger;
|
|
|
- border-color: ios.$ios-danger;
|
|
|
+ box-shadow: 0 2px 4px rgba(ios.$ios-primary, 0.3);
|
|
|
+ transform: translateY(-1px);
|
|
|
+
|
|
|
+ &.pending {
|
|
|
+ background: ios.$ios-warning;
|
|
|
+ box-shadow: 0 2px 4px rgba(ios.$ios-warning, 0.3);
|
|
|
+ }
|
|
|
+
|
|
|
+ &.satisfied {
|
|
|
+ background: ios.$ios-success;
|
|
|
+ box-shadow: 0 2px 4px rgba(ios.$ios-success, 0.3);
|
|
|
+ }
|
|
|
+
|
|
|
+ &.unsatisfied {
|
|
|
+ background: ios.$ios-danger;
|
|
|
+ box-shadow: 0 2px 4px rgba(ios.$ios-danger, 0.3);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
.filter-select {
|
|
|
- padding: ios.$ios-spacing-xs ios.$ios-spacing-sm;
|
|
|
- border: 1px solid ios.$ios-border;
|
|
|
- border-radius: vars.$ios-border-radius-sm;
|
|
|
+ padding: ios.$ios-spacing-sm ios.$ios-spacing-md;
|
|
|
+ border: 1px solid rgba(ios.$ios-border, 0.5);
|
|
|
+ border-radius: 12px;
|
|
|
background: ios.$ios-background;
|
|
|
color: ios.$ios-text-primary;
|
|
|
- font-size: ios.$ios-font-size-xs;
|
|
|
- min-width: 120px;
|
|
|
+ font-size: ios.$ios-font-size-sm;
|
|
|
+ font-weight: ios.$ios-font-weight-medium;
|
|
|
+ min-width: 140px;
|
|
|
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
|
|
|
+ transition: all 0.3s ease;
|
|
|
|
|
|
&:focus {
|
|
|
outline: none;
|
|
|
border-color: ios.$ios-primary;
|
|
|
+ box-shadow: 0 0 0 3px rgba(ios.$ios-primary, 0.1);
|
|
|
+ }
|
|
|
+
|
|
|
+ &:hover {
|
|
|
+ border-color: ios.$ios-primary;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .btn {
|
|
|
+ padding: ios.$ios-spacing-sm ios.$ios-spacing-md;
|
|
|
+ border: 1px solid ios.$ios-color-system-gray-1-light;
|
|
|
+ background: ios.$ios-background;
|
|
|
+ color: ios.$ios-color-system-gray-1-light;
|
|
|
+ border-radius: 12px;
|
|
|
+ font-size: ios.$ios-font-size-sm;
|
|
|
+ font-weight: ios.$ios-font-weight-medium;
|
|
|
+ cursor: pointer;
|
|
|
+ transition: all 0.3s ease;
|
|
|
+ min-width: 80px;
|
|
|
+
|
|
|
+ &:hover {
|
|
|
+ background: ios.$ios-color-system-gray-1-light;
|
|
|
+ color: white;
|
|
|
+ transform: translateY(-1px);
|
|
|
+ box-shadow: 0 2px 4px rgba(ios.$ios-color-system-gray-1-light, 0.3);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -197,34 +380,247 @@
|
|
|
}
|
|
|
|
|
|
// 评价列表
|
|
|
- .review-list {
|
|
|
+ .reviews-list {
|
|
|
+ .list-body {
|
|
|
+ display: grid;
|
|
|
+ gap: ios.$ios-spacing-lg;
|
|
|
+ }
|
|
|
+
|
|
|
.review-item {
|
|
|
- padding: ios.$ios-spacing-md;
|
|
|
- margin-bottom: ios.$ios-spacing-md;
|
|
|
background: ios.$ios-background;
|
|
|
border: 1px solid ios.$ios-border;
|
|
|
- border-radius: vars.$ios-border-radius-md;
|
|
|
+ border-radius: 16px;
|
|
|
+ padding: ios.$ios-spacing-lg;
|
|
|
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
|
|
|
+ transition: all 0.3s ease;
|
|
|
+ position: relative;
|
|
|
+ overflow: hidden;
|
|
|
+
|
|
|
+ &:hover {
|
|
|
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
|
|
|
+ transform: translateY(-2px);
|
|
|
+ border-color: ios.$ios-primary;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 状态指示条
|
|
|
+ &::before {
|
|
|
+ content: '';
|
|
|
+ position: absolute;
|
|
|
+ top: 0;
|
|
|
+ left: 0;
|
|
|
+ width: 4px;
|
|
|
+ height: 100%;
|
|
|
+ background: ios.$ios-border;
|
|
|
+ transition: background 0.3s ease;
|
|
|
+ }
|
|
|
+
|
|
|
+ &.pending::before {
|
|
|
+ background: ios.$ios-warning;
|
|
|
+ }
|
|
|
+
|
|
|
+ &.satisfied::before {
|
|
|
+ background: ios.$ios-success;
|
|
|
+ }
|
|
|
+
|
|
|
+ &.unsatisfied::before {
|
|
|
+ background: ios.$ios-danger;
|
|
|
+ }
|
|
|
+
|
|
|
+ &.processing::before {
|
|
|
+ background: ios.$ios-primary;
|
|
|
+ }
|
|
|
|
|
|
.review-header {
|
|
|
display: flex;
|
|
|
justify-content: space-between;
|
|
|
- align-items: center;
|
|
|
+ align-items: flex-start;
|
|
|
margin-bottom: ios.$ios-spacing-md;
|
|
|
+ padding-bottom: ios.$ios-spacing-sm;
|
|
|
+ border-bottom: 1px solid rgba(ios.$ios-border, 0.5);
|
|
|
|
|
|
- .reviewer-info {
|
|
|
+ .customer-info {
|
|
|
display: flex;
|
|
|
- align-items: center;
|
|
|
- gap: ios.$ios-spacing-sm;
|
|
|
+ flex-direction: column;
|
|
|
+ gap: ios.$ios-spacing-xs;
|
|
|
|
|
|
- .reviewer-name {
|
|
|
- font-size: ios.$ios-font-size-md;
|
|
|
- font-weight: ios.$ios-font-weight-semibold;
|
|
|
+ .customer-name {
|
|
|
+ font-size: ios.$ios-font-size-lg;
|
|
|
+ font-weight: ios.$ios-font-weight-bold;
|
|
|
color: ios.$ios-text-primary;
|
|
|
+ margin-bottom: ios.$ios-spacing-xs;
|
|
|
}
|
|
|
|
|
|
- .review-date {
|
|
|
+ .category-tag {
|
|
|
+ display: inline-block;
|
|
|
+ padding: 4px 12px;
|
|
|
+ background: rgba(ios.$ios-primary, 0.1);
|
|
|
+ color: ios.$ios-primary;
|
|
|
+ border-radius: 20px;
|
|
|
font-size: ios.$ios-font-size-xs;
|
|
|
+ font-weight: ios.$ios-font-weight-medium;
|
|
|
+ width: fit-content;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .review-meta {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ align-items: flex-end;
|
|
|
+ gap: ios.$ios-spacing-xs;
|
|
|
+
|
|
|
+ .score-display {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ gap: ios.$ios-spacing-xs;
|
|
|
+ padding: 6px 12px;
|
|
|
+ background: rgba(#FFD700, 0.1);
|
|
|
+ border-radius: 20px;
|
|
|
+
|
|
|
+ .score-stars {
|
|
|
+ display: flex;
|
|
|
+ gap: 2px;
|
|
|
+
|
|
|
+ .star {
|
|
|
+ font-size: ios.$ios-font-size-sm;
|
|
|
+ color: #FFD700;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .score-number {
|
|
|
+ font-size: ios.$ios-font-size-sm;
|
|
|
+ font-weight: ios.$ios-font-weight-semibold;
|
|
|
+ color: ios.$ios-text-primary;
|
|
|
+ }
|
|
|
+
|
|
|
+ &.high-score {
|
|
|
+ background: rgba(ios.$ios-success, 0.1);
|
|
|
+ .score-number { color: ios.$ios-success; }
|
|
|
+ }
|
|
|
+
|
|
|
+ &.medium-score {
|
|
|
+ background: rgba(ios.$ios-warning, 0.1);
|
|
|
+ .score-number { color: ios.$ios-warning; }
|
|
|
+ }
|
|
|
+
|
|
|
+ &.low-score {
|
|
|
+ background: rgba(ios.$ios-danger, 0.1);
|
|
|
+ .score-number { color: ios.$ios-danger; }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .status-badge {
|
|
|
+ padding: 4px 12px;
|
|
|
+ border-radius: 20px;
|
|
|
+ font-size: ios.$ios-font-size-xs;
|
|
|
+ font-weight: ios.$ios-font-weight-medium;
|
|
|
+ text-align: center;
|
|
|
+ min-width: 60px;
|
|
|
+
|
|
|
+ &.pending {
|
|
|
+ background: rgba(ios.$ios-warning, 0.1);
|
|
|
+ color: ios.$ios-warning;
|
|
|
+ border: 1px solid rgba(ios.$ios-warning, 0.3);
|
|
|
+ }
|
|
|
+
|
|
|
+ &.satisfied {
|
|
|
+ background: rgba(ios.$ios-success, 0.1);
|
|
|
+ color: ios.$ios-success;
|
|
|
+ border: 1px solid rgba(ios.$ios-success, 0.3);
|
|
|
+ }
|
|
|
+
|
|
|
+ &.unsatisfied {
|
|
|
+ background: rgba(ios.$ios-danger, 0.1);
|
|
|
+ color: ios.$ios-danger;
|
|
|
+ border: 1px solid rgba(ios.$ios-danger, 0.3);
|
|
|
+ }
|
|
|
+
|
|
|
+ &.processing {
|
|
|
+ background: rgba(ios.$ios-primary, 0.1);
|
|
|
+ color: ios.$ios-primary;
|
|
|
+ border: 1px solid rgba(ios.$ios-primary, 0.3);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .review-content {
|
|
|
+ margin-bottom: ios.$ios-spacing-md;
|
|
|
+
|
|
|
+ .feedback-text {
|
|
|
+ font-size: ios.$ios-font-size-md;
|
|
|
+ line-height: 1.6;
|
|
|
+ color: ios.$ios-text-primary;
|
|
|
+ margin-bottom: ios.$ios-spacing-md;
|
|
|
+ padding: ios.$ios-spacing-md;
|
|
|
+ background: rgba(ios.$ios-background-secondary, 0.5);
|
|
|
+ border-radius: 12px;
|
|
|
+ border-left: 3px solid ios.$ios-primary;
|
|
|
+ }
|
|
|
+
|
|
|
+ .problem-location,
|
|
|
+ .reference-case {
|
|
|
+ display: flex;
|
|
|
+ align-items: flex-start;
|
|
|
+ gap: ios.$ios-spacing-sm;
|
|
|
+ margin-bottom: ios.$ios-spacing-sm;
|
|
|
+ padding: ios.$ios-spacing-sm ios.$ios-spacing-md;
|
|
|
+ background: ios.$ios-background-secondary;
|
|
|
+ border-radius: 8px;
|
|
|
+ font-size: ios.$ios-font-size-sm;
|
|
|
+
|
|
|
+ strong {
|
|
|
color: ios.$ios-text-secondary;
|
|
|
+ font-weight: ios.$ios-font-weight-semibold;
|
|
|
+ min-width: 80px;
|
|
|
+ flex-shrink: 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .problem-location {
|
|
|
+ border-left: 3px solid ios.$ios-warning;
|
|
|
+ }
|
|
|
+
|
|
|
+ .reference-case {
|
|
|
+ border-left: 3px solid ios.$ios-primary;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .review-footer {
|
|
|
+ .time-info {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ gap: ios.$ios-spacing-xs;
|
|
|
+ margin-bottom: ios.$ios-spacing-md;
|
|
|
+ font-size: ios.$ios-font-size-xs;
|
|
|
+ color: ios.$ios-text-secondary;
|
|
|
+
|
|
|
+ .created-time {
|
|
|
+ font-weight: ios.$ios-font-weight-medium;
|
|
|
+ }
|
|
|
+
|
|
|
+ .updated-time {
|
|
|
+ opacity: 0.8;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .response-section {
|
|
|
+ margin-top: ios.$ios-spacing-md;
|
|
|
+ padding: ios.$ios-spacing-md;
|
|
|
+ background: rgba(ios.$ios-success, 0.05);
|
|
|
+ border-radius: 12px;
|
|
|
+ border-left: 3px solid ios.$ios-success;
|
|
|
+
|
|
|
+ strong {
|
|
|
+ color: ios.$ios-success;
|
|
|
+ font-size: ios.$ios-font-size-sm;
|
|
|
+ font-weight: ios.$ios-font-weight-semibold;
|
|
|
+ }
|
|
|
+
|
|
|
+ .response-text {
|
|
|
+ margin-top: ios.$ios-spacing-xs;
|
|
|
+ font-size: ios.$ios-font-size-sm;
|
|
|
+ line-height: 1.5;
|
|
|
+ color: ios.$ios-text-primary;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -262,55 +658,72 @@
|
|
|
gap: ios.$ios-spacing-sm;
|
|
|
margin-top: ios.$ios-spacing-md;
|
|
|
flex-wrap: wrap;
|
|
|
+ justify-content: flex-end;
|
|
|
|
|
|
.action-btn {
|
|
|
- padding: ios.$ios-spacing-xs ios.$ios-spacing-sm;
|
|
|
+ padding: ios.$ios-spacing-sm ios.$ios-spacing-md;
|
|
|
border: none;
|
|
|
- border-radius: vars.$ios-border-radius-sm;
|
|
|
+ border-radius: 24px;
|
|
|
font-size: ios.$ios-font-size-sm;
|
|
|
- font-weight: ios.$ios-font-weight-medium;
|
|
|
+ font-weight: ios.$ios-font-weight-semibold;
|
|
|
cursor: pointer;
|
|
|
- transition: all 0.2s ease;
|
|
|
- min-width: 80px;
|
|
|
+ transition: all 0.3s ease;
|
|
|
+ min-width: 90px;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ gap: ios.$ios-spacing-xs;
|
|
|
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
|
|
+
|
|
|
+ &:hover {
|
|
|
+ transform: translateY(-1px);
|
|
|
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
|
|
|
+ }
|
|
|
+
|
|
|
+ &:active {
|
|
|
+ transform: translateY(0);
|
|
|
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
|
|
|
+ }
|
|
|
|
|
|
&.process-btn {
|
|
|
- background: ios.$ios-primary;
|
|
|
+ background: linear-gradient(135deg, ios.$ios-primary, color.adjust(ios.$ios-primary, $lightness: -10%));
|
|
|
color: white;
|
|
|
|
|
|
&:hover {
|
|
|
- background: darken(ios.$ios-primary, 10%);
|
|
|
+ background: linear-gradient(135deg, color.adjust(ios.$ios-primary, $lightness: -5%), color.adjust(ios.$ios-primary, $lightness: -15%));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
&.reply-btn {
|
|
|
- background: ios.$ios-success;
|
|
|
+ background: linear-gradient(135deg, ios.$ios-success, color.adjust(ios.$ios-success, $lightness: -10%));
|
|
|
color: white;
|
|
|
|
|
|
&:hover {
|
|
|
- background: darken(ios.$ios-success, 10%);
|
|
|
+ background: linear-gradient(135deg, color.adjust(ios.$ios-success, $lightness: -5%), color.adjust(ios.$ios-success, $lightness: -15%));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
&.complete-btn {
|
|
|
- background: ios.$ios-warning;
|
|
|
+ background: linear-gradient(135deg, ios.$ios-warning, color.adjust(ios.$ios-warning, $lightness: -10%));
|
|
|
color: white;
|
|
|
|
|
|
&:hover {
|
|
|
- background: darken(ios.$ios-warning, 10%);
|
|
|
+ background: linear-gradient(135deg, color.adjust(ios.$ios-warning, $lightness: -5%), color.adjust(ios.$ios-warning, $lightness: -15%));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
&.view-btn {
|
|
|
- background: ios.$ios-color-system-gray-1-light;
|
|
|
+ background: linear-gradient(135deg, ios.$ios-color-system-gray-1-light, color.adjust(ios.$ios-color-system-gray-1-light, $lightness: -10%));
|
|
|
color: white;
|
|
|
|
|
|
&:hover {
|
|
|
- background: darken(ios.$ios-color-system-gray-1-light, 10%);
|
|
|
+ background: linear-gradient(135deg, color.adjust(ios.$ios-color-system-gray-1-light, $lightness: -5%), color.adjust(ios.$ios-color-system-gray-1-light, $lightness: -15%));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- &:active {
|
|
|
- transform: translateY(1px);
|
|
|
+ // 添加图标样式
|
|
|
+ i {
|
|
|
+ font-size: ios.$ios-font-size-xs;
|
|
|
}
|
|
|
}
|
|
|
}
|