Переглянути джерело

refactor: 整体页面样式升级为浅色主题

1.  重构所有页面组件样式,将深色背景替换为浅色白色主题
2.  统一图表文字颜色为深色系,调整边框和背景色适配浅色模式
3.  新增AI问答页面和画像管理页面,完善底部导航栏配置
4.  优化工作台应用过滤逻辑,隐藏指定画像类应用
huoyi 1 тиждень тому
батько
коміт
d5564de53a
30 змінених файлів з 352 додано та 249 видалено
  1. 6 5
      src/components/SectionTitle.vue
  2. 19 8
      src/pages.json
  3. 0 0
      src/pages/ai/index.vue
  4. 4 4
      src/pages/components/AreaDistribution.vue
  5. 8 8
      src/pages/components/DailySeizureChart.vue
  6. 8 8
      src/pages/components/DeptStats.vue
  7. 7 7
      src/pages/components/GroupMemberTable.vue
  8. 4 4
      src/pages/components/InterceptionDistribution.vue
  9. 6 6
      src/pages/components/ItemDistribution.vue
  10. 5 5
      src/pages/components/MemberBasicDistribution.vue
  11. 12 12
      src/pages/components/MemberPositionDistribution.vue
  12. 9 9
      src/pages/components/PassengerChart.vue
  13. 5 4
      src/pages/components/ProfileRadar.vue
  14. 1 1
      src/pages/components/SecurityTestCharts.vue
  15. 4 4
      src/pages/components/SeizedNumAll.vue
  16. 7 8
      src/pages/components/SeizureInfo.vue
  17. 5 5
      src/pages/components/SupervisionDistribution.vue
  18. 7 7
      src/pages/components/TeamMemberTable.vue
  19. 7 7
      src/pages/components/UnsafeItemsChart.vue
  20. 7 7
      src/pages/components/UnsafePositionChart.vue
  21. 7 7
      src/pages/components/UnsafeTypesChart.vue
  22. 20 23
      src/pages/deptProfile/index.vue
  23. 29 31
      src/pages/employeeProfile/index.vue
  24. 20 23
      src/pages/groupProfile/index.vue
  25. 105 0
      src/pages/profileManage/index.vue
  26. 16 19
      src/pages/stationProfile/index.vue
  27. 22 25
      src/pages/teamProfile/index.vue
  28. 2 2
      src/pages/work/index.vue
  29. BIN
      src/static/images/tabbar/ai.png
  30. BIN
      src/static/images/tabbar/ai_.png

+ 6 - 5
src/components/SectionTitle.vue

@@ -26,11 +26,12 @@ export default {
26 26
 
27 27
 <style lang="scss" scoped>
28 28
 .section-wrapper {
29
-    background: rgba(45, 42, 85, 0.6);
29
+    background: #fff;
30 30
     border-radius: 20rpx;
31 31
     padding: 32rpx;
32 32
     margin-bottom: 24rpx;
33
-    border: 1rpx solid rgba(167, 139, 250, 0.2);
33
+    border: 1rpx solid #e0e0e0;
34
+    box-shadow: 0 2rpx 12rpx rgba(0, 0, 0, 0.04);
34 35
 }
35 36
 
36 37
 .section-header {
@@ -43,7 +44,7 @@ export default {
43 44
 .section-title {
44 45
     font-size: 30rpx;
45 46
     font-weight: 600;
46
-    color: #A78BFA;
47
+    color: #333;
47 48
     position: relative;
48 49
     padding-left: 16rpx;
49 50
 
@@ -55,13 +56,13 @@ export default {
55 56
         transform: translateY(-50%);
56 57
         width: 4rpx;
57 58
         height: 28rpx;
58
-        background: #A78BFA;
59
+        background: #60A5FA;
59 60
         border-radius: 2rpx;
60 61
     }
61 62
 }
62 63
 
63 64
 .section-header-right {
64 65
     font-size: 24rpx;
65
-    color: rgba(255, 255, 255, 0.5);
66
+    color: #666;
66 67
 }
67 68
 </style>

+ 19 - 8
src/pages.json

@@ -117,6 +117,12 @@
117 117
       }
118 118
     },
119 119
     {
120
+      "path": "pages/profileManage/index",
121
+      "style": {
122
+        "navigationBarTitleText": "画像管理"
123
+      }
124
+    },
125
+    {
120 126
       "path": "pages/stationProfile/index",
121 127
       "style": {
122 128
         "navigationBarTitleText": "站画像"
@@ -134,7 +140,7 @@
134 140
         "navigationBarTitleText": "班组画像"
135 141
       }
136 142
     },
137
-        {
143
+    {
138 144
       "path": "pages/groupProfile/index",
139 145
       "style": {
140 146
         "navigationBarTitleText": "小组画像"
@@ -373,18 +379,23 @@
373 379
       //   "text": "首页"
374 380
       // },
375 381
       {
376
-        "pagePath": "pages/work/index",
377
-        "iconPath": "static/images/tabbar/work.png",
378
-        "selectedIconPath": "static/images/tabbar/work_.png",
379
-        "text": "工作台"
380
-      },
381
-      {
382 382
         "pagePath": "pages/myToDoList/index",
383 383
         "iconPath": "/static/images/tabbar/message.png",
384 384
         "selectedIconPath": "/static/images/tabbar/message_.png",
385 385
         "text": "消息"
386 386
       },
387
-      
387
+      {
388
+        "pagePath": "pages/ai/index",
389
+        "iconPath": "static/images/tabbar/ai.png",
390
+        "selectedIconPath": "static/images/tabbar/ai_.png",
391
+        "text": "AI问答"
392
+      },
393
+      {
394
+        "pagePath": "pages/work/index",
395
+        "iconPath": "static/images/tabbar/work.png",
396
+        "selectedIconPath": "static/images/tabbar/work_.png",
397
+        "text": "工作台"
398
+      },
388 399
       {
389 400
         "pagePath": "pages/mine/index",
390 401
         "iconPath": "static/images/tabbar/mine.png",

+ 0 - 0
src/pages/ai/index.vue


+ 4 - 4
src/pages/components/AreaDistribution.vue

@@ -57,11 +57,11 @@ export default {
57 57
           data: this.chartsData.labels,
58 58
           axisLine: {
59 59
             lineStyle: {
60
-              color: 'rgba(255, 255, 255, 0.1)'
60
+              color: 'rgba(0, 0, 0, 0.1)'
61 61
             }
62 62
           },
63 63
           axisLabel: {
64
-            color: 'rgba(255, 255, 255, 0.5)',
64
+            color: '#666',
65 65
             fontSize: 10,
66 66
             // rotate: 30
67 67
           }
@@ -76,11 +76,11 @@ export default {
76 76
           },
77 77
           splitLine: {
78 78
             lineStyle: {
79
-              color: 'rgba(255, 255, 255, 0.05)'
79
+              color: 'rgba(0, 0, 0, 0.05)'
80 80
             }
81 81
           },
82 82
           axisLabel: {
83
-            color: 'rgba(255, 255, 255, 0.5)',
83
+            color: '#666',
84 84
             fontSize: 10
85 85
           }
86 86
         },

+ 8 - 8
src/pages/components/DailySeizureChart.vue

@@ -84,11 +84,11 @@ export default {
84 84
           data: this.chartsData.total.labels,
85 85
           axisLine: {
86 86
             lineStyle: {
87
-              color: 'rgba(255, 255, 255, 0.1)'
87
+              color: 'rgba(0, 0, 0, 0.1)'
88 88
             }
89 89
           },
90 90
           axisLabel: {
91
-            color: 'rgba(255, 255, 255, 0.5)',
91
+            color: '#666',
92 92
             fontSize: 10
93 93
           }
94 94
         },
@@ -102,11 +102,11 @@ export default {
102 102
           },
103 103
           splitLine: {
104 104
             lineStyle: {
105
-              color: 'rgba(255, 255, 255, 0.05)'
105
+              color: 'rgba(0, 0, 0, 0.05)'
106 106
             }
107 107
           },
108 108
           axisLabel: {
109
-            color: 'rgba(255, 255, 255, 0.5)',
109
+            color: '#666',
110 110
             fontSize: 10
111 111
           }
112 112
         },
@@ -214,18 +214,18 @@ export default {
214 214
 .daily-seizure-chart {
215 215
   .chart-section {
216 216
     margin-bottom: 32rpx;
217
-    
217
+
218 218
     &:last-child {
219 219
       margin-bottom: 0;
220 220
     }
221 221
   }
222
-  
222
+
223 223
   .sub-title {
224 224
     font-size: 24rpx;
225
-    color: rgba(255, 255, 255, 0.5);
225
+    color: #666;
226 226
     margin-bottom: 16rpx;
227 227
   }
228
-  
228
+
229 229
   .chart-container {
230 230
     height:400rpx;
231 231
   }

+ 8 - 8
src/pages/components/DeptStats.vue

@@ -55,11 +55,12 @@ export default {
55 55
     align-items: center;
56 56
     justify-content: center;
57 57
     padding: 24rpx 16rpx;
58
-    background: linear-gradient(135deg, rgba(33, 33, 58, 0.95), rgba(15, 70, 250, 0.2));
58
+    background: linear-gradient(135deg, #f5f7fa, #e8ecf1);
59 59
     border-radius: 16rpx;
60
-    border: 1rpx solid rgba(159, 3, 193, 0.3);
60
+    border: 1rpx solid #e0e0e0;
61 61
     position: relative;
62 62
     overflow: hidden;
63
+    box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.04);
63 64
 
64 65
     &::before {
65 66
         content: '';
@@ -68,7 +69,7 @@ export default {
68 69
         left: 0;
69 70
         right: 0;
70 71
         height: 2rpx;
71
-        background: linear-gradient(90deg, #0f46fa, transparent);
72
+        background: linear-gradient(90deg, #60A5FA, transparent);
72 73
     }
73 74
 
74 75
     &::after {
@@ -78,21 +79,20 @@ export default {
78 79
         right: 0;
79 80
         left: 0;
80 81
         height: 2rpx;
81
-        background: linear-gradient(90deg, transparent, #9903C1);
82
+        background: linear-gradient(90deg, transparent, #A78BFA);
82 83
     }
83 84
 }
84 85
 
85 86
 .stat-value {
86 87
     font-size: 36rpx;
87 88
     font-weight: bold;
88
-    color: #fff;
89
-    text-shadow: 0 0 12rpx rgba(15, 70, 250, 0.8);
89
+    color: #333;
90 90
     line-height: 1;
91 91
 }
92 92
 
93 93
 .stat-label {
94 94
     font-size: 20rpx;
95
-    color: #a0c4ff;
95
+    color: #666;
96 96
     margin-top: 8rpx;
97 97
 }
98 98
 
@@ -102,7 +102,7 @@ export default {
102 102
     .dept-name {
103 103
         font-size: 28rpx;
104 104
         font-weight: bold;
105
-        color: #fff;
105
+        color: #333;
106 106
         text-align: center;
107 107
     }
108 108
 }

+ 7 - 7
src/pages/components/GroupMemberTable.vue

@@ -52,25 +52,25 @@ export default {
52 52
   .table-scroll {
53 53
     width: 100%;
54 54
   }
55
-  
55
+
56 56
   .data-table {
57 57
     width: 100%;
58 58
     font-size: 24rpx;
59 59
     border-collapse: collapse;
60
-    
60
+
61 61
     th, td {
62 62
       padding: 16rpx 8rpx;
63 63
       text-align: left;
64 64
       white-space: nowrap;
65 65
     }
66
-    
66
+
67 67
     th {
68
-      color: rgba(255, 255, 255, 0.5);
69
-      border-bottom: 1rpx solid rgba(255, 255, 255, 0.1);
68
+      color: #666;
69
+      border-bottom: 1rpx solid #e0e0e0;
70 70
     }
71
-    
71
+
72 72
     td {
73
-      color: rgba(255, 255, 255, 0.9);
73
+      color: #333;
74 74
     }
75 75
   }
76 76
 }

+ 4 - 4
src/pages/components/InterceptionDistribution.vue

@@ -57,11 +57,11 @@ export default {
57 57
                     axisTick: { show: false },
58 58
                     splitLine: {
59 59
                         lineStyle: {
60
-                            color: 'rgba(255, 255, 255, 0.05)'
60
+                            color: 'rgba(0, 0, 0, 0.05)'
61 61
                         }
62 62
                     },
63 63
                     axisLabel: {
64
-                        color: 'rgba(255, 255, 255, 0.5)',
64
+                        color: '#666',
65 65
                         fontSize: 9
66 66
                     }
67 67
                 },
@@ -72,11 +72,11 @@ export default {
72 72
                     axisTick: { show: false },
73 73
                     splitLine: {
74 74
                         lineStyle: {
75
-                            color: 'rgba(255, 255, 255, 0.05)'
75
+                            color: 'rgba(0, 0, 0, 0.05)'
76 76
                         }
77 77
                     },
78 78
                     axisLabel: {
79
-                        color: 'rgba(255, 255, 255, 0.6)',
79
+                        color: '#666',
80 80
                         fontSize: 9,
81 81
                         formatter: function (value) {
82 82
                             return value.length > 5 ? value.substring(0, 6) + '...' : value

+ 6 - 6
src/pages/components/ItemDistribution.vue

@@ -68,7 +68,7 @@ export default {
68 68
           },
69 69
           label: {
70 70
             show: true,
71
-            color: 'rgba(255, 255, 255, 0.7)',
71
+            color: '#333',
72 72
             fontSize: 10,
73 73
             formatter: '{b}\n{d}%'
74 74
           }
@@ -88,28 +88,28 @@ export default {
88 88
   .chart-container {
89 89
     height: 300rpx;
90 90
   }
91
-  
91
+
92 92
   .legend-grid {
93 93
     display: grid;
94 94
     grid-template-columns: repeat(2, 1fr);
95 95
     gap: 8rpx;
96 96
     margin-top: 16rpx;
97 97
   }
98
-  
98
+
99 99
   .legend-item {
100 100
     display: flex;
101 101
     align-items: center;
102 102
     font-size: 24rpx;
103
-    
103
+
104 104
     .legend-dot {
105 105
       width: 12rpx;
106 106
       height: 12rpx;
107 107
       border-radius: 50%;
108 108
       margin-right: 8rpx;
109 109
     }
110
-    
110
+
111 111
     .legend-text {
112
-      color: rgba(255, 255, 255, 0.7);
112
+      color: #666;
113 113
     }
114 114
   }
115 115
 }

+ 5 - 5
src/pages/components/MemberBasicDistribution.vue

@@ -86,7 +86,7 @@ export default {
86 86
           },
87 87
           label: {
88 88
             show: true,
89
-            color: 'rgba(255, 255, 255, 0.7)',
89
+            color: '#333',
90 90
             fontSize: 10,
91 91
             formatter: '{b}\n{d}%'
92 92
           }
@@ -168,19 +168,19 @@ export default {
168 168
     flex-direction: column;
169 169
     gap: 32rpx;
170 170
   }
171
-  
171
+
172 172
   .chart-item {
173 173
     display: flex;
174 174
     align-items: center;
175 175
     gap: 24rpx;
176
-    
176
+
177 177
     .chart-label {
178 178
       width: 160rpx;
179 179
       flex-shrink: 0;
180 180
       font-size: 24rpx;
181
-      color: rgba(255, 255, 255, 0.5);
181
+      color: #666;
182 182
     }
183
-    
183
+
184 184
     .chart-container {
185 185
       flex: 1;
186 186
       height:250rpx;

+ 12 - 12
src/pages/components/MemberPositionDistribution.vue

@@ -80,11 +80,11 @@ export default {
80 80
           data: this.chartsData.qualification.labels,
81 81
           axisLine: {
82 82
             lineStyle: {
83
-              color: 'rgba(255, 255, 255, 0.1)'
83
+              color: 'rgba(0, 0, 0, 0.1)'
84 84
             }
85 85
           },
86 86
           axisLabel: {
87
-            color: 'rgba(255, 255, 255, 0.5)',
87
+            color: '#666',
88 88
             fontSize: 10
89 89
           }
90 90
         },
@@ -98,11 +98,11 @@ export default {
98 98
           },
99 99
           splitLine: {
100 100
             lineStyle: {
101
-              color: 'rgba(255, 255, 255, 0.05)'
101
+              color: 'rgba(0, 0, 0, 0.05)'
102 102
             }
103 103
           },
104 104
           axisLabel: {
105
-            color: 'rgba(255, 255, 255, 0.5)',
105
+            color: '#666',
106 106
             fontSize: 10
107 107
           }
108 108
         },
@@ -145,11 +145,11 @@ export default {
145 145
           data: this.chartsData.experience.labels,
146 146
           axisLine: {
147 147
             lineStyle: {
148
-              color: 'rgba(255, 255, 255, 0.1)'
148
+              color: 'rgba(0, 0, 0, 0.1)'
149 149
             }
150 150
           },
151 151
           axisLabel: {
152
-            color: 'rgba(255, 255, 255, 0.5)',
152
+            color: '#666',
153 153
             fontSize: 10
154 154
           }
155 155
         },
@@ -163,11 +163,11 @@ export default {
163 163
           },
164 164
           splitLine: {
165 165
             lineStyle: {
166
-              color: 'rgba(255, 255, 255, 0.05)'
166
+              color: 'rgba(0, 0, 0, 0.05)'
167 167
             }
168 168
           },
169 169
           axisLabel: {
170
-            color: 'rgba(255, 255, 255, 0.5)',
170
+            color: '#666',
171 171
             fontSize: 10
172 172
           }
173 173
         },
@@ -210,11 +210,11 @@ export default {
210 210
           data: this.chartsData.position.labels,
211 211
           axisLine: {
212 212
             lineStyle: {
213
-              color: 'rgba(255, 255, 255, 0.1)'
213
+              color: 'rgba(0, 0, 0, 0.1)'
214 214
             }
215 215
           },
216 216
           axisLabel: {
217
-            color: 'rgba(255, 255, 255, 0.5)',
217
+            color: '#666',
218 218
             fontSize: 10,
219 219
             rotate: 30,
220 220
             margin: 15
@@ -230,11 +230,11 @@ export default {
230 230
           },
231 231
           splitLine: {
232 232
             lineStyle: {
233
-              color: 'rgba(255, 255, 255, 0.05)'
233
+              color: 'rgba(0, 0, 0, 0.05)'
234 234
             }
235 235
           },
236 236
           axisLabel: {
237
-            color: 'rgba(255, 255, 255, 0.5)',
237
+            color: '#666',
238 238
             fontSize: 10
239 239
           }
240 240
         },

+ 9 - 9
src/pages/components/PassengerChart.vue

@@ -84,11 +84,11 @@ export default {
84 84
           trigger: 'axis',
85 85
           backgroundColor: 'rgba(30, 27, 75, 0.95)',
86 86
           borderColor: '#A78BFA',
87
-          textStyle: { color: '#fff' }
87
+          textStyle: { color: '#666' }
88 88
         },
89 89
         legend: {
90 90
           data: [...areaNames, '人流总数'],
91
-          textStyle: { color: 'rgba(255, 255, 255, 0.5)', fontSize: 10 },
91
+          textStyle: { color: '#666', fontSize: 10 },
92 92
           top: 0
93 93
         },
94 94
         grid: {
@@ -100,27 +100,27 @@ export default {
100 100
         xAxis: {
101 101
           type: 'category',
102 102
           data: this.chartsData.labels,
103
-          axisLabel: { color: 'rgba(255, 255, 255, 0.5)', fontSize: 10 },
104
-          axisLine: { lineStyle: { color: 'rgba(255, 255, 255, 0.1)' } }
103
+          axisLabel: { color: '#666', fontSize: 10 },
104
+          axisLine: { lineStyle: { color: 'rgba(0, 0, 0, 0.1)' } }
105 105
         },
106 106
         yAxis: [
107 107
           {
108 108
             type: 'value',
109 109
             name: '人数',
110
-            nameTextStyle: { color: 'rgba(255, 255, 255, 0.5)', fontSize: 10 },
110
+            nameTextStyle: { color: '#666', fontSize: 10 },
111 111
             position: 'left',
112 112
             max: Math.ceil(maxVal * 1.2),
113
-            axisLabel: { color: 'rgba(255, 255, 255, 0.5)', fontSize: 10 },
113
+            axisLabel: { color: '#666', fontSize: 10 },
114 114
             axisLine: { show: false },
115
-            splitLine: { lineStyle: { color: 'rgba(255, 255, 255, 0.05)' } }
115
+            splitLine: { lineStyle: { color: 'rgba(0, 0, 0, 0.05)' } }
116 116
           },
117 117
           {
118 118
             type: 'value',
119 119
             name: '人流总数',
120
-            nameTextStyle: { color: 'rgba(255, 255, 255, 0.5)', fontSize: 10 },
120
+            nameTextStyle: { color: '#666', fontSize: 10 },
121 121
             position: 'right',
122 122
             max: Math.ceil(maxVal * 1.2),
123
-            axisLabel: { color: 'rgba(255, 255, 255, 0.5)', fontSize: 10 },
123
+            axisLabel: { color: '#666', fontSize: 10 },
124 124
             axisLine: { show: false },
125 125
             splitLine: { show: false }
126 126
           }

+ 5 - 4
src/pages/components/ProfileRadar.vue

@@ -186,7 +186,7 @@ export default {
186 186
         display: flex;
187 187
         align-items: center;
188 188
         justify-content: center;
189
-        color: rgba(255, 255, 255, 0.5);
189
+        color: #999;
190 190
         font-size: 28rpx;
191 191
     }
192 192
 
@@ -208,7 +208,7 @@ export default {
208 208
             font-size: 24rpx;
209 209
 
210 210
             .item-label {
211
-                color: rgba(160, 196, 255, 0.9);
211
+                color: #333;
212 212
             }
213 213
 
214 214
             .progress-row {
@@ -219,7 +219,7 @@ export default {
219 219
                 .progress-bar {
220 220
                     flex: 1;
221 221
                     height: 10rpx;
222
-                    background: rgba(255, 255, 255, 0.1);
222
+                    background: #f0f0f0;
223 223
                     border-radius: 0;
224 224
                     overflow: visible;
225 225
 
@@ -237,6 +237,7 @@ export default {
237 237
                             width: 6rpx;
238 238
                             height: 18rpx;
239 239
                             background: #fff;
240
+                            border: 2rpx solid currentColor;
240 241
                             border-radius: 4rpx;
241 242
                         }
242 243
                     }
@@ -245,7 +246,7 @@ export default {
245 246
                 .item-value {
246 247
                     width: 80rpx;
247 248
                     text-align: right;
248
-                    color: #fff;
249
+                    color: #333;
249 250
                     font-weight: bold;
250 251
                     font-size: 24rpx;
251 252
                 }

+ 1 - 1
src/pages/components/SecurityTestCharts.vue

@@ -94,7 +94,7 @@ export default {
94 94
           },
95 95
           label: {
96 96
             show: true,
97
-            color: 'rgba(255, 255, 255, 0.7)',
97
+            color: '#333',
98 98
             fontSize: 10,
99 99
             formatter: '{b}\n{d}%'
100 100
           }

+ 4 - 4
src/pages/components/SeizedNumAll.vue

@@ -54,11 +54,11 @@ export default {
54 54
                     data: this.chartsData.map(item => item.recordDate),
55 55
                     axisLine: {
56 56
                         lineStyle: {
57
-                            color: 'rgba(255, 255, 255, 0.1)'
57
+                            color: 'rgba(0, 0, 0, 0.1)'
58 58
                         }
59 59
                     },
60 60
                     axisLabel: {
61
-                        color: 'rgba(255, 255, 255, 0.5)',
61
+                        color: '#666',
62 62
                         fontSize: 9,
63 63
                         rotate: 30
64 64
                     }
@@ -69,11 +69,11 @@ export default {
69 69
                     axisTick: { show: false },
70 70
                     splitLine: {
71 71
                         lineStyle: {
72
-                            color: 'rgba(255, 255, 255, 0.05)'
72
+                            color: 'rgba(0, 0, 0, 0.05)'
73 73
                         }
74 74
                     },
75 75
                     axisLabel: {
76
-                        color: 'rgba(255, 255, 255, 0.5)',
76
+                        color: '#666',
77 77
                         fontSize: 9
78 78
                     }
79 79
                 },

+ 7 - 8
src/pages/components/SeizureInfo.vue

@@ -137,14 +137,13 @@ export default {
137 137
           data: this.chartsData.depts.labels,
138 138
           axisLine: {
139 139
             lineStyle: {
140
-              color: 'rgba(255, 255, 255, 0.1)'
140
+              color: 'rgba(0, 0, 0, 0.1)'
141 141
             }
142 142
           },
143
-          // axisLabel: {
144
-          //   color: 'rgba(255, 255, 255, 0.5)',
145
-          //   fontSize: 9,
146
-          //   rotate: 30
147
-          // }
143
+          axisLabel: {
144
+            color: '#666',
145
+            fontSize: 9
146
+          }
148 147
         },
149 148
         yAxis: {
150 149
           type: 'value',
@@ -156,11 +155,11 @@ export default {
156 155
           },
157 156
           splitLine: {
158 157
             lineStyle: {
159
-              color: 'rgba(255, 255, 255, 0.05)'
158
+              color: 'rgba(0, 0, 0, 0.05)'
160 159
             }
161 160
           },
162 161
           axisLabel: {
163
-            color: 'rgba(255, 255, 255, 0.5)',
162
+            color: '#666',
164 163
             fontSize: 9
165 164
           }
166 165
         },

+ 5 - 5
src/pages/components/SupervisionDistribution.vue

@@ -54,11 +54,11 @@ export default {
54 54
                     data: this.chartsData.map(item => item.name),
55 55
                     axisLine: {
56 56
                         lineStyle: {
57
-                            color: 'rgba(255, 255, 255, 0.1)'
57
+                            color: 'rgba(0, 0, 0, 0.1)'
58 58
                         }
59 59
                     },
60 60
                     axisLabel: {
61
-                        color: 'rgba(255, 255, 255, 0.5)',
61
+                        color: '#666',
62 62
                         fontSize: 9,
63 63
                         rotate: 30
64 64
                     }
@@ -67,18 +67,18 @@ export default {
67 67
                     type: 'value',
68 68
                     name: '人数',
69 69
                     nameTextStyle: {
70
-                        color: 'rgba(255, 255, 255, 0.5)',
70
+                        color: '#666',
71 71
                         fontSize: 9
72 72
                     },
73 73
                     axisLine: { show: false },
74 74
                     axisTick: { show: false },
75 75
                     splitLine: {
76 76
                         lineStyle: {
77
-                            color: 'rgba(255, 255, 255, 0.05)'
77
+                            color: 'rgba(0, 0, 0, 0.05)'
78 78
                         }
79 79
                     },
80 80
                     axisLabel: {
81
-                        color: 'rgba(255, 255, 255, 0.5)',
81
+                        color: '#666',
82 82
                         fontSize: 9
83 83
                     }
84 84
                 },

+ 7 - 7
src/pages/components/TeamMemberTable.vue

@@ -48,25 +48,25 @@ export default {
48 48
   .table-scroll {
49 49
     width: 100%;
50 50
   }
51
-  
51
+
52 52
   .data-table {
53 53
     width: 100%;
54 54
     font-size: 24rpx;
55 55
     border-collapse: collapse;
56
-    
56
+
57 57
     th, td {
58 58
       padding: 16rpx 8rpx;
59 59
       text-align: left;
60 60
       white-space: nowrap;
61 61
     }
62
-    
62
+
63 63
     th {
64
-      color: rgba(255, 255, 255, 0.5);
65
-      border-bottom: 1rpx solid rgba(255, 255, 255, 0.1);
64
+      color: #666;
65
+      border-bottom: 1rpx solid #e0e0e0;
66 66
     }
67
-    
67
+
68 68
     td {
69
-      color: rgba(255, 255, 255, 0.9);
69
+      color: #333;
70 70
     }
71 71
   }
72 72
 }

+ 7 - 7
src/pages/components/UnsafeItemsChart.vue

@@ -72,7 +72,7 @@ export default {
72 72
           },
73 73
           label: {
74 74
             show: true,
75
-            color: 'rgba(255, 255, 255, 0.7)',
75
+            color: '#333',
76 76
             fontSize: 10,
77 77
             formatter: '{b}\n{d}%'
78 78
           }
@@ -92,23 +92,23 @@ export default {
92 92
   .chart-container {
93 93
     height: 220rpx;
94 94
   }
95
-  
95
+
96 96
   .items-list {
97 97
     margin-top: 16rpx;
98 98
   }
99
-  
99
+
100 100
   .list-item {
101 101
     display: flex;
102 102
     justify-content: space-between;
103 103
     font-size: 24rpx;
104 104
     padding: 8rpx 0;
105
-    
105
+
106 106
     .item-name {
107
-      color: rgba(255, 255, 255, 0.7);
107
+      color: #666;
108 108
     }
109
-    
109
+
110 110
     .item-value {
111
-      color: rgba(255, 255, 255, 0.9);
111
+      color: #333;
112 112
     }
113 113
   }
114 114
 }

+ 7 - 7
src/pages/components/UnsafePositionChart.vue

@@ -63,11 +63,11 @@ export default {
63 63
           data: this.chartsData.positions.labels,
64 64
           axisLine: {
65 65
             lineStyle: {
66
-              color: 'rgba(255, 255, 255, 0.1)'
66
+              color: 'rgba(0, 0, 0, 0.1)'
67 67
             }
68 68
           },
69 69
           axisLabel: {
70
-            color: 'rgba(255, 255, 255, 0.5)',
70
+            color: '#666',
71 71
             fontSize: 10,
72 72
             // rotate: 30
73 73
           }
@@ -82,11 +82,11 @@ export default {
82 82
           },
83 83
           splitLine: {
84 84
             lineStyle: {
85
-              color: 'rgba(255, 255, 255, 0.05)'
85
+              color: 'rgba(0, 0, 0, 0.05)'
86 86
             }
87 87
           },
88 88
           axisLabel: {
89
-            color: 'rgba(255, 255, 255, 0.5)',
89
+            color: '#666',
90 90
             fontSize: 10
91 91
           }
92 92
         },
@@ -124,14 +124,14 @@ export default {
124 124
   .chart-container {
125 125
     height: 240rpx;
126 126
   }
127
-  
127
+
128 128
   .position-info {
129 129
     margin-top: 16rpx;
130 130
     text-align: center;
131
-    
131
+
132 132
     .info-text {
133 133
       font-size: 24rpx;
134
-      color: rgba(255, 255, 255, 0.5);
134
+      color: #666;
135 135
     }
136 136
   }
137 137
 }

+ 7 - 7
src/pages/components/UnsafeTypesChart.vue

@@ -72,7 +72,7 @@ export default {
72 72
           },
73 73
           label: {
74 74
             show: true,
75
-            color: 'rgba(255, 255, 255, 0.7)',
75
+            color: '#333',
76 76
             fontSize: 10,
77 77
             formatter: '{b}\n{d}%'
78 78
           }
@@ -92,23 +92,23 @@ export default {
92 92
   .chart-container {
93 93
     height: 220rpx;
94 94
   }
95
-  
95
+
96 96
   .types-list {
97 97
     margin-top: 16rpx;
98 98
   }
99
-  
99
+
100 100
   .list-item {
101 101
     display: flex;
102 102
     justify-content: space-between;
103 103
     font-size: 24rpx;
104 104
     padding: 8rpx 0;
105
-    
105
+
106 106
     .item-name {
107
-      color: rgba(255, 255, 255, 0.7);
107
+      color: #666;
108 108
     }
109
-    
109
+
110 110
     .item-value {
111
-      color: rgba(255, 255, 255, 0.9);
111
+      color: #333;
112 112
     }
113 113
   }
114 114
 }

+ 20 - 23
src/pages/deptProfile/index.vue

@@ -726,9 +726,9 @@ export default {
726 726
 </script>
727 727
 
728 728
 <style lang="scss" scoped>
729
-    .dept-selector {
729
+.dept-selector {
730 730
     padding: 16rpx 32rpx;
731
-    background: rgba(30, 27, 75, 0.8);
731
+    background: #fff;
732 732
 }
733 733
 
734 734
 .dept-select-trigger {
@@ -737,8 +737,8 @@ export default {
737 737
     justify-content: center;
738 738
     gap: 12rpx;
739 739
     padding: 16rpx 24rpx;
740
-    background: rgba(45, 42, 85, 0.8);
741
-    border: 1rpx solid rgba(167, 139, 250, 0.3);
740
+    background: #f5f5f5;
741
+    border: 1rpx solid #e0e0e0;
742 742
     border-radius: 50rpx;
743 743
 }
744 744
 
@@ -749,12 +749,12 @@ export default {
749 749
 
750 750
 .dept-name-text {
751 751
     font-size: 26rpx;
752
-    color: rgba(255, 255, 255, 0.9);
752
+    color: #333;
753 753
 }
754 754
 
755 755
 .dept-profile-page {
756 756
     min-height: 100vh;
757
-    background: linear-gradient(135deg, #1E1B4B 0%, #312E81 100%);
757
+    background: #fff;
758 758
     padding-bottom: 40rpx;
759 759
 }
760 760
 
@@ -762,7 +762,7 @@ export default {
762 762
     position: sticky;
763 763
     top: 0;
764 764
     z-index: 100;
765
-    background: rgba(30, 27, 75, 0.9);
765
+    background: #fff;
766 766
     backdrop-filter: blur(10px);
767 767
     box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.2);
768 768
 }
@@ -776,10 +776,7 @@ export default {
776 776
     .title-main {
777 777
         font-size: 36rpx;
778 778
         font-weight: bold;
779
-        background: linear-gradient(90deg, #A78BFA, #60A5FA);
780
-        -webkit-background-clip: text;
781
-        -webkit-text-fill-color: transparent;
782
-        background-clip: text;
779
+        color: #fff;
783 780
     }
784 781
 }
785 782
 
@@ -796,7 +793,7 @@ export default {
796 793
 
797 794
 .time-filter {
798 795
     padding: 16rpx 32rpx;
799
-    background: rgba(30, 27, 75, 0.8);
796
+    background: #fff;
800 797
 }
801 798
 
802 799
 .time-scroll {
@@ -812,14 +809,14 @@ export default {
812 809
 .time-tag {
813 810
     padding: 8rpx 10rpx;
814 811
     border-radius: 50rpx;
815
-    background: rgba(45, 42, 85, 0.8);
812
+    background: #f0f0f0;
816 813
     font-size: 24rpx;
817
-    color: rgba(255, 255, 255, 0.6);
814
+    color: #666;
818 815
     transition: all 0.3s;
819 816
 
820 817
     &.active {
821
-        background: #A78BFA;
822
-        color: #1E1B4B;
818
+        background: #60A5FA;
819
+        color: #fff;
823 820
         font-weight: 500;
824 821
     }
825 822
 }
@@ -830,26 +827,26 @@ export default {
830 827
     gap: 16rpx;
831 828
     margin-top: 16rpx;
832 829
     padding-top: 16rpx;
833
-    border-top: 1rpx solid rgba(255, 255, 255, 0.1);
830
+    border-top: 1rpx solid #e0e0e0;
834 831
 }
835 832
 
836 833
 .date-input {
837 834
     flex: 1;
838 835
     padding: 12rpx 24rpx;
839 836
     border-radius: 12rpx;
840
-    background: rgba(45, 42, 85, 0.8);
837
+    background: #f5f5f5;
841 838
     font-size: 24rpx;
842
-    color: rgba(255, 255, 255, 0.4);
839
+    color: #999;
843 840
     text-align: center;
844 841
 
845 842
     &.filled {
846
-        color: rgba(255, 255, 255, 0.9);
843
+        color: #333;
847 844
     }
848 845
 }
849 846
 
850 847
 .date-separator {
851 848
     font-size: 24rpx;
852
-    color: rgba(255, 255, 255, 0.5);
849
+    color: #999;
853 850
     flex-shrink: 0;
854 851
 }
855 852
 
@@ -868,8 +865,8 @@ export default {
868 865
     transition: all 0.3s;
869 866
 
870 867
     &.active {
871
-        color: #A78BFA;
872
-        border-bottom-color: #A78BFA;
868
+        color: #fff;
869
+        border-bottom-color: #fff;
873 870
     }
874 871
 }
875 872
 

+ 29 - 31
src/pages/employeeProfile/index.vue

@@ -702,7 +702,7 @@ export default {
702 702
 <style lang="scss" scoped>
703 703
 .employee-profile-page {
704 704
     min-height: 100vh;
705
-    background: linear-gradient(135deg, #1E1B4B 0%, #312E81 100%);
705
+    background: #fff;
706 706
     padding-bottom: 40rpx;
707 707
 }
708 708
 
@@ -710,7 +710,8 @@ export default {
710 710
     position: sticky;
711 711
     top: 0;
712 712
     z-index: 100;
713
-    background: rgba(30, 27, 75, 0.9);
713
+    color: black;
714
+    background: #fff;
714 715
     backdrop-filter: blur(10px);
715 716
     box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.2);
716 717
 }
@@ -724,10 +725,7 @@ export default {
724 725
     .title-main {
725 726
         font-size: 36rpx;
726 727
         font-weight: bold;
727
-        background: linear-gradient(90deg, #A78BFA, #60A5FA);
728
-        -webkit-background-clip: text;
729
-        -webkit-text-fill-color: transparent;
730
-        background-clip: text;
728
+        color: black;
731 729
     }
732 730
 }
733 731
 
@@ -744,7 +742,7 @@ export default {
744 742
 
745 743
 .time-filter {
746 744
     padding: 16rpx 32rpx;
747
-    background: rgba(30, 27, 75, 0.8);
745
+    background: #fff;
748 746
 }
749 747
 
750 748
 .time-scroll {
@@ -760,14 +758,14 @@ export default {
760 758
 .time-tag {
761 759
     padding: 8rpx 10rpx;
762 760
     border-radius: 50rpx;
763
-    background: rgba(45, 42, 85, 0.8);
761
+    background: #f0f0f0;
764 762
     font-size: 24rpx;
765
-    color: rgba(255, 255, 255, 0.6);
763
+    color: #666;
766 764
     transition: all 0.3s;
767 765
 
768 766
     &.active {
769
-        background: #A78BFA;
770
-        color: #1E1B4B;
767
+        background: #60A5FA;
768
+        color: #fff;
771 769
         font-weight: 500;
772 770
     }
773 771
 }
@@ -778,32 +776,32 @@ export default {
778 776
     gap: 16rpx;
779 777
     margin-top: 16rpx;
780 778
     padding-top: 16rpx;
781
-    border-top: 1rpx solid rgba(255, 255, 255, 0.1);
779
+    border-top: 1rpx solid #e0e0e0;
782 780
 }
783 781
 
784 782
 .date-input {
785 783
     flex: 1;
786 784
     padding: 12rpx 24rpx;
787 785
     border-radius: 12rpx;
788
-    background: rgba(45, 42, 85, 0.8);
786
+    background: #f5f5f5;
789 787
     font-size: 24rpx;
790
-    color: rgba(255, 255, 255, 0.4);
788
+    color: #999;
791 789
     text-align: center;
792 790
 
793 791
     &.filled {
794
-        color: rgba(255, 255, 255, 0.9);
792
+        color: #333;
795 793
     }
796 794
 }
797 795
 
798 796
 .date-separator {
799 797
     font-size: 24rpx;
800
-    color: rgba(255, 255, 255, 0.5);
798
+    color: #999;
801 799
     flex-shrink: 0;
802 800
 }
803 801
 
804 802
 .search-selector {
805 803
     padding: 16rpx 32rpx;
806
-    background: rgba(30, 27, 75, 0.8);
804
+    background: #fff;
807 805
 }
808 806
 
809 807
 .search-select-trigger {
@@ -812,8 +810,8 @@ export default {
812 810
     justify-content: center;
813 811
     gap: 12rpx;
814 812
     padding: 16rpx 24rpx;
815
-    background: rgba(45, 42, 85, 0.8);
816
-    border: 1rpx solid rgba(167, 139, 250, 0.3);
813
+    background: #f5f5f5;
814
+    border: 1rpx solid #e0e0e0;
817 815
     border-radius: 50rpx;
818 816
 }
819 817
 
@@ -824,11 +822,11 @@ export default {
824 822
 
825 823
 .search-name-text {
826 824
     font-size: 26rpx;
827
-    color: rgba(255, 255, 255, 0.9);
825
+    color: #333;
828 826
 }
829 827
 
830 828
 .employee-picker {
831
-    background: #1E1B4B;
829
+    background: #0d0d0d;
832 830
     display: flex;
833 831
     flex-direction: column;
834 832
     border-radius: 16rpx 16rpx 0 0;
@@ -889,9 +887,9 @@ export default {
889 887
     border-bottom: 2rpx solid transparent;
890 888
     transition: all 0.3s;
891 889
 
892
-    &.active {
893
-        color: #A78BFA;
894
-        border-bottom-color: #A78BFA;
890
+     &.active {
891
+        color: #fff;
892
+        border-bottom-color: #fff;
895 893
     }
896 894
 }
897 895
 
@@ -933,7 +931,7 @@ export default {
933 931
         width: 120rpx;
934 932
         height: 120rpx;
935 933
         border-radius: 50%;
936
-        background: #fff;
934
+        background: #222;
937 935
         display: flex;
938 936
         align-items: center;
939 937
         justify-content: center;
@@ -949,7 +947,7 @@ export default {
949 947
         .avatar-placeholder {
950 948
             font-size: 48rpx;
951 949
             font-weight: bold;
952
-            color: #6f6c98;
950
+            color: #aaa;
953 951
         }
954 952
     }
955 953
 
@@ -959,7 +957,7 @@ export default {
959 957
 
960 958
         .name-label {
961 959
             font-size: 26rpx;
962
-            color: #8675AE;
960
+            color: rgba(255, 255, 255, 0.5);
963 961
         }
964 962
 
965 963
         .name-value {
@@ -979,7 +977,7 @@ export default {
979 977
     .info-item {
980 978
         .info-label {
981 979
             font-size: 22rpx;
982
-            color: #8675AE;
980
+            color: rgba(255, 255, 255, 0.5);
983 981
             margin-bottom: 4rpx;
984 982
         }
985 983
 
@@ -991,9 +989,9 @@ export default {
991 989
                 display: inline-block;
992 990
                 padding: 4rpx 16rpx;
993 991
                 margin-left: 2rpx;
994
-                background: rgba(167, 139, 250, 0.3);
992
+                background: rgba(255, 255, 255, 0.15);
995 993
                 border-radius: 8rpx;
996
-                color: #A78BFA;
994
+                color: #fff;
997 995
                 font-size: 22rpx;
998 996
             }
999 997
         }
@@ -1021,7 +1019,7 @@ export default {
1021 1019
 
1022 1020
             .score-label {
1023 1021
                 font-size: 26rpx;
1024
-                color: #8675AE;
1022
+                color: rgba(255, 255, 255, 0.5);
1025 1023
             }
1026 1024
 
1027 1025
             .score-val {

+ 20 - 23
src/pages/groupProfile/index.vue

@@ -735,7 +735,7 @@ export default {
735 735
 <style lang="scss" scoped>
736 736
     .dept-selector {
737 737
     padding: 16rpx 32rpx;
738
-    background: rgba(30, 27, 75, 0.8);
738
+    background: #fff;
739 739
 }
740 740
 
741 741
 .dept-select-trigger {
@@ -744,8 +744,8 @@ export default {
744 744
     justify-content: center;
745 745
     gap: 12rpx;
746 746
     padding: 16rpx 24rpx;
747
-    background: rgba(45, 42, 85, 0.8);
748
-    border: 1rpx solid rgba(167, 139, 250, 0.3);
747
+    background: #f5f5f5;
748
+    border: 1rpx solid #e0e0e0;
749 749
     border-radius: 50rpx;
750 750
 }
751 751
 
@@ -756,12 +756,12 @@ export default {
756 756
 
757 757
 .dept-name-text {
758 758
     font-size: 26rpx;
759
-    color: rgba(255, 255, 255, 0.9);
759
+    color: #333;
760 760
 }
761 761
 
762 762
 .dept-profile-page {
763 763
     min-height: 100vh;
764
-    background: linear-gradient(135deg, #1E1B4B 0%, #312E81 100%);
764
+    background: #0d0d0d;
765 765
     padding-bottom: 40rpx;
766 766
 }
767 767
 
@@ -769,7 +769,7 @@ export default {
769 769
     position: sticky;
770 770
     top: 0;
771 771
     z-index: 100;
772
-    background: rgba(30, 27, 75, 0.9);
772
+    background: rgba(13, 13, 13, 0.9);
773 773
     backdrop-filter: blur(10px);
774 774
     box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.2);
775 775
 }
@@ -783,10 +783,7 @@ export default {
783 783
     .title-main {
784 784
         font-size: 36rpx;
785 785
         font-weight: bold;
786
-        background: linear-gradient(90deg, #A78BFA, #60A5FA);
787
-        -webkit-background-clip: text;
788
-        -webkit-text-fill-color: transparent;
789
-        background-clip: text;
786
+        color: #fff;
790 787
     }
791 788
 }
792 789
 
@@ -803,7 +800,7 @@ export default {
803 800
 
804 801
 .time-filter {
805 802
     padding: 16rpx 32rpx;
806
-    background: rgba(30, 27, 75, 0.8);
803
+    background: #fff;
807 804
 }
808 805
 
809 806
 .time-scroll {
@@ -819,14 +816,14 @@ export default {
819 816
 .time-tag {
820 817
     padding: 8rpx 10rpx;
821 818
     border-radius: 50rpx;
822
-    background: rgba(45, 42, 85, 0.8);
819
+    background: #f0f0f0;
823 820
     font-size: 24rpx;
824
-    color: rgba(255, 255, 255, 0.6);
821
+    color: #666;
825 822
     transition: all 0.3s;
826 823
 
827 824
     &.active {
828
-        background: #A78BFA;
829
-        color: #1E1B4B;
825
+        background: #60A5FA;
826
+        color: #fff;
830 827
         font-weight: 500;
831 828
     }
832 829
 }
@@ -837,26 +834,26 @@ export default {
837 834
     gap: 16rpx;
838 835
     margin-top: 16rpx;
839 836
     padding-top: 16rpx;
840
-    border-top: 1rpx solid rgba(255, 255, 255, 0.1);
837
+    border-top: 1rpx solid #e0e0e0;
841 838
 }
842 839
 
843 840
 .date-input {
844 841
     flex: 1;
845 842
     padding: 12rpx 24rpx;
846 843
     border-radius: 12rpx;
847
-    background: rgba(45, 42, 85, 0.8);
844
+    background: #f5f5f5;
848 845
     font-size: 24rpx;
849
-    color: rgba(255, 255, 255, 0.4);
846
+    color: #999;
850 847
     text-align: center;
851 848
 
852 849
     &.filled {
853
-        color: rgba(255, 255, 255, 0.9);
850
+        color: #333;
854 851
     }
855 852
 }
856 853
 
857 854
 .date-separator {
858 855
     font-size: 24rpx;
859
-    color: rgba(255, 255, 255, 0.5);
856
+    color: #999;
860 857
     flex-shrink: 0;
861 858
 }
862 859
 
@@ -874,9 +871,9 @@ export default {
874 871
     border-bottom: 2rpx solid transparent;
875 872
     transition: all 0.3s;
876 873
 
877
-    &.active {
878
-        color: #A78BFA;
879
-        border-bottom-color: #A78BFA;
874
+     &.active {
875
+        color: #fff;
876
+        border-bottom-color: #fff;
880 877
     }
881 878
 }
882 879
 

+ 105 - 0
src/pages/profileManage/index.vue

@@ -0,0 +1,105 @@
1
+<template>
2
+  <home-container :customStyle="{ background: 'none', backgroundColor: '#f5f5f5' }">
3
+    <view class="profile-manage-container">
4
+      <view class="grid-body">
5
+        <uni-section title="画像管理" type="line" class="uni-section-custom"></uni-section>
6
+        <uni-grid :column="3" :showBorder="false">
7
+          <uni-grid-item v-for="(item, index) in items" :key="index">
8
+            <view class="grid-item-box" @click="handleGridClick(item.appUrl)">
9
+              <img alt="" :src="item.workbenchIcon">
10
+              <text class="text">{{ item.appName }}</text>
11
+            </view>
12
+          </uni-grid-item>
13
+        </uni-grid>
14
+      </view>
15
+    </view>
16
+  </home-container>
17
+</template>
18
+
19
+<script>
20
+import HomeContainer from '@/components/HomeContainer.vue'
21
+import { getAppList } from '@/api/system/user'
22
+
23
+const profileAppNames = ['站画像', '部门画像', '班组画像', '小组画像', '员工画像']
24
+
25
+export default {
26
+  components: { HomeContainer },
27
+  data() {
28
+    return {
29
+      appList: []
30
+    }
31
+  },
32
+  computed: {
33
+    items() {
34
+      return this.appList.filter(item => profileAppNames.includes(item.appName))
35
+    }
36
+  },
37
+  onLoad() {
38
+    this.loadAppList()
39
+  },
40
+  methods: {
41
+    async loadAppList() {
42
+      try {
43
+        const res = await getAppList({ homePage: 0 })
44
+        if (res.code === 200) {
45
+          this.appList = res.data || []
46
+        }
47
+      } catch (error) {
48
+        console.error('获取画像应用列表失败:', error)
49
+        this.appList = []
50
+      }
51
+    },
52
+    handleGridClick(url) {
53
+      if (!url) return
54
+      uni.navigateTo({ url })
55
+    }
56
+  }
57
+}
58
+</script>
59
+
60
+<style lang="scss" scoped>
61
+.profile-manage-container {
62
+  padding: 20rpx;
63
+  background-color: #f5f5f5;
64
+}
65
+
66
+.grid-body {
67
+  background-color: #fff;
68
+  border-radius: 16rpx;
69
+  padding: 20rpx;
70
+  box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.05);
71
+
72
+  .uni-section-custom {
73
+    ::v-deep .uni-section-header {
74
+      padding: 12rpx 10rpx !important;
75
+    }
76
+  }
77
+}
78
+
79
+.grid-item-box {
80
+  flex: 1;
81
+  display: flex;
82
+  flex-direction: column;
83
+  align-items: center;
84
+  justify-content: center;
85
+  padding: 30rpx 0;
86
+
87
+  img {
88
+    display: inline-block;
89
+    width: 88rpx;
90
+    height: 88rpx;
91
+  }
92
+
93
+  &:active {
94
+    background-color: #f5f5f5;
95
+    border-radius: 12rpx;
96
+  }
97
+}
98
+
99
+.text {
100
+  text-align: center;
101
+  font-size: 25rpx;
102
+  margin-top: 15rpx;
103
+  color: #333;
104
+}
105
+</style>

+ 16 - 19
src/pages/stationProfile/index.vue

@@ -588,7 +588,7 @@ export default {
588 588
 <style lang="scss" scoped>
589 589
 .station-profile-page {
590 590
     min-height: 100vh;
591
-    background: linear-gradient(135deg, #1E1B4B 0%, #312E81 100%);
591
+    background: #0d0d0d;
592 592
     padding-bottom: 40rpx;
593 593
 }
594 594
 
@@ -596,7 +596,7 @@ export default {
596 596
     position: sticky;
597 597
     top: 0;
598 598
     z-index: 100;
599
-    background: rgba(30, 27, 75, 0.9);
599
+    background: rgba(13, 13, 13, 0.9);
600 600
     backdrop-filter: blur(10px);
601 601
     box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.2);
602 602
 }
@@ -610,10 +610,7 @@ export default {
610 610
     .title-main {
611 611
         font-size: 36rpx;
612 612
         font-weight: bold;
613
-        background: linear-gradient(90deg, #A78BFA, #60A5FA);
614
-        -webkit-background-clip: text;
615
-        -webkit-text-fill-color: transparent;
616
-        background-clip: text;
613
+        color: #fff;
617 614
     }
618 615
 }
619 616
 
@@ -635,7 +632,7 @@ export default {
635 632
 
636 633
 .time-filter {
637 634
     padding: 16rpx 32rpx;
638
-    background: rgba(30, 27, 75, 0.8);
635
+    background: #fff;
639 636
 }
640 637
 
641 638
 .time-scroll {
@@ -651,14 +648,14 @@ export default {
651 648
 .time-tag {
652 649
     padding: 8rpx 10rpx;
653 650
     border-radius: 50rpx;
654
-    background: rgba(45, 42, 85, 0.8);
651
+    background: #f0f0f0;
655 652
     font-size: 24rpx;
656
-    color: rgba(255, 255, 255, 0.6);
653
+    color: #666;
657 654
     transition: all 0.3s;
658 655
 
659 656
     &.active {
660
-        background: #A78BFA;
661
-        color: #1E1B4B;
657
+        background: #60A5FA;
658
+        color: #fff;
662 659
         font-weight: 500;
663 660
     }
664 661
 }
@@ -669,26 +666,26 @@ export default {
669 666
     gap: 16rpx;
670 667
     margin-top: 16rpx;
671 668
     padding-top: 16rpx;
672
-    border-top: 1rpx solid rgba(255, 255, 255, 0.1);
669
+    border-top: 1rpx solid #e0e0e0;
673 670
 }
674 671
 
675 672
 .date-input {
676 673
     flex: 1;
677 674
     padding: 12rpx 24rpx;
678 675
     border-radius: 12rpx;
679
-    background: rgba(45, 42, 85, 0.8);
676
+    background: #f5f5f5;
680 677
     font-size: 24rpx;
681
-    color: rgba(255, 255, 255, 0.4);
678
+    color: #999;
682 679
     text-align: center;
683 680
 
684 681
     &.filled {
685
-        color: rgba(255, 255, 255, 0.9);
682
+        color: #333;
686 683
     }
687 684
 }
688 685
 
689 686
 .date-separator {
690 687
     font-size: 24rpx;
691
-    color: rgba(255, 255, 255, 0.5);
688
+    color: #999;
692 689
     flex-shrink: 0;
693 690
 }
694 691
 
@@ -706,9 +703,9 @@ export default {
706 703
     border-bottom: 2rpx solid transparent;
707 704
     transition: all 0.3s;
708 705
 
709
-    &.active {
710
-        color: #A78BFA;
711
-        border-bottom-color: #A78BFA;
706
+     &.active {
707
+        color: #fff;
708
+        border-bottom-color: #fff;
712 709
     }
713 710
 }
714 711
 

+ 22 - 25
src/pages/teamProfile/index.vue

@@ -751,7 +751,7 @@ export default {
751 751
 <style lang="scss" scoped>
752 752
 .dept-selector {
753 753
     padding: 16rpx 32rpx;
754
-    background: rgba(30, 27, 75, 0.8);
754
+    background: #fff;
755 755
 }
756 756
 
757 757
 .dept-select-trigger {
@@ -760,8 +760,8 @@ export default {
760 760
     justify-content: center;
761 761
     gap: 12rpx;
762 762
     padding: 16rpx 24rpx;
763
-    background: rgba(45, 42, 85, 0.8);
764
-    border: 1rpx solid rgba(167, 139, 250, 0.3);
763
+    background: #f5f5f5;
764
+    border: 1rpx solid #e0e0e0;
765 765
     border-radius: 50rpx;
766 766
 }
767 767
 
@@ -772,12 +772,12 @@ export default {
772 772
 
773 773
 .dept-name-text {
774 774
     font-size: 26rpx;
775
-    color: rgba(255, 255, 255, 0.9);
775
+    color: #333;
776 776
 }
777 777
 
778 778
 .dept-profile-page {
779 779
     min-height: 100vh;
780
-    background: linear-gradient(135deg, #1E1B4B 0%, #312E81 100%);
780
+    background: #fff;
781 781
     padding-bottom: 40rpx;
782 782
 }
783 783
 
@@ -785,9 +785,9 @@ export default {
785 785
     position: sticky;
786 786
     top: 0;
787 787
     z-index: 100;
788
-    background: rgba(30, 27, 75, 0.9);
788
+    background: #fff;
789 789
     backdrop-filter: blur(10px);
790
-    box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.2);
790
+    box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.08);
791 791
 }
792 792
 
793 793
 .header-title {
@@ -799,10 +799,7 @@ export default {
799 799
     .title-main {
800 800
         font-size: 36rpx;
801 801
         font-weight: bold;
802
-        background: linear-gradient(90deg, #A78BFA, #60A5FA);
803
-        -webkit-background-clip: text;
804
-        -webkit-text-fill-color: transparent;
805
-        background-clip: text;
802
+        color: #333;
806 803
     }
807 804
 }
808 805
 
@@ -813,13 +810,13 @@ export default {
813 810
 
814 811
     .current-time {
815 812
         font-size: 24rpx;
816
-        color: rgba(255, 255, 255, 0.6);
813
+        color: #999;
817 814
     }
818 815
 }
819 816
 
820 817
 .time-filter {
821 818
     padding: 16rpx 32rpx;
822
-    background: rgba(30, 27, 75, 0.8);
819
+    background: #fff;
823 820
 }
824 821
 
825 822
 .time-scroll {
@@ -835,14 +832,14 @@ export default {
835 832
 .time-tag {
836 833
     padding: 8rpx 10rpx;
837 834
     border-radius: 50rpx;
838
-    background: rgba(45, 42, 85, 0.8);
835
+    background: #f0f0f0;
839 836
     font-size: 24rpx;
840
-    color: rgba(255, 255, 255, 0.6);
837
+    color: #666;
841 838
     transition: all 0.3s;
842 839
 
843 840
     &.active {
844
-        background: #A78BFA;
845
-        color: #1E1B4B;
841
+        background: #60A5FA;
842
+        color: #fff;
846 843
         font-weight: 500;
847 844
     }
848 845
 }
@@ -853,26 +850,26 @@ export default {
853 850
     gap: 16rpx;
854 851
     margin-top: 16rpx;
855 852
     padding-top: 16rpx;
856
-    border-top: 1rpx solid rgba(255, 255, 255, 0.1);
853
+    border-top: 1rpx solid #e0e0e0;
857 854
 }
858 855
 
859 856
 .date-input {
860 857
     flex: 1;
861 858
     padding: 12rpx 24rpx;
862 859
     border-radius: 12rpx;
863
-    background: rgba(45, 42, 85, 0.8);
860
+    background: #f5f5f5;
864 861
     font-size: 24rpx;
865
-    color: rgba(255, 255, 255, 0.4);
862
+    color: #999;
866 863
     text-align: center;
867 864
 
868 865
     &.filled {
869
-        color: rgba(255, 255, 255, 0.9);
866
+        color: #333;
870 867
     }
871 868
 }
872 869
 
873 870
 .date-separator {
874 871
     font-size: 24rpx;
875
-    color: rgba(255, 255, 255, 0.5);
872
+    color: #999;
876 873
     flex-shrink: 0;
877 874
 }
878 875
 
@@ -885,14 +882,14 @@ export default {
885 882
 
886 883
 .tab-item {
887 884
     font-size: 28rpx;
888
-    color: rgba(255, 255, 255, 0.5);
885
+    color: #999;
889 886
     padding-bottom: 8rpx;
890 887
     border-bottom: 2rpx solid transparent;
891 888
     transition: all 0.3s;
892 889
 
893 890
     &.active {
894
-        color: #A78BFA;
895
-        border-bottom-color: #A78BFA;
891
+        color: #333;
892
+        border-bottom-color: #333;
896 893
     }
897 894
 }
898 895
 

+ 2 - 2
src/pages/work/index.vue

@@ -39,7 +39,7 @@
39 39
 import HomeContainer from "@/components/HomeContainer.vue";
40 40
 import { checkRolePermission } from "@/utils/common.js";
41 41
 import { getUserProfile, getAppListByRoleId,getAppList } from "@/api/system/user";
42
-
42
+const profileAppNames = ['站画像', '部门画像', '班组画像', '小组画像', '员工画像']
43 43
 export default {
44 44
   components: { HomeContainer },
45 45
   data() {
@@ -53,7 +53,7 @@ export default {
53 53
       return this.$store?.state?.user?.roles[0]
54 54
     },
55 55
     items() {
56
-      return this.appList
56
+      return this.appList.filter(item => !profileAppNames.includes(item.appName))
57 57
     }
58 58
   },
59 59
   onShow() {

BIN
src/static/images/tabbar/ai.png


BIN
src/static/images/tabbar/ai_.png