|
|
@@ -6,8 +6,11 @@
|
|
6
|
6
|
<div class="stat-card-inner">
|
|
7
|
7
|
<div class="stat-left">
|
|
8
|
8
|
<div class="stat-label">查堵总数</div>
|
|
9
|
|
- <div class="stat-value">{{ statValue || 0 }}</div>
|
|
10
|
|
- <div class="stat-unit">起</div>
|
|
|
9
|
+ <div class="stat-content">
|
|
|
10
|
+ <div class="stat-value">{{ statValue || 0 }}</div>
|
|
|
11
|
+ <div class="stat-unit">起</div>
|
|
|
12
|
+ </div>
|
|
|
13
|
+
|
|
11
|
14
|
</div>
|
|
12
|
15
|
</div>
|
|
13
|
16
|
</div>
|
|
|
@@ -20,7 +23,7 @@
|
|
20
|
23
|
<div ref="chart2" class="echarts"></div>
|
|
21
|
24
|
</div>
|
|
22
|
25
|
</div>
|
|
23
|
|
-
|
|
|
26
|
+
|
|
24
|
27
|
<div class="chart-row">
|
|
25
|
28
|
<div class="chart-item">
|
|
26
|
29
|
<div class="chart-title">两楼查堵数(包含行检)</div>
|
|
|
@@ -31,7 +34,7 @@
|
|
31
|
34
|
<div ref="chart4" class="echarts"></div>
|
|
32
|
35
|
</div>
|
|
33
|
36
|
</div>
|
|
34
|
|
-
|
|
|
37
|
+
|
|
35
|
38
|
<div class="chart-row">
|
|
36
|
39
|
<div class="chart-item">
|
|
37
|
40
|
<div class="chart-title">两楼每日查堵万分率</div>
|
|
|
@@ -145,9 +148,11 @@ const fetchData = async () => {
|
|
145
|
148
|
}
|
|
146
|
149
|
|
|
147
|
150
|
if (blockedRes.value?.data) {
|
|
|
151
|
+ const terminal = processedParams?.terminal || '';
|
|
|
152
|
+
|
|
148
|
153
|
const blockedData = [
|
|
149
|
|
- { name: 'T1', value: blockedRes.value.data.t1BlockedCount || 0 },
|
|
150
|
|
- { name: 'T2', value: blockedRes.value.data.t2BlockedCount || 0 }
|
|
|
154
|
+ ...(terminal.includes('T1') || terminal.includes('整体') || !terminal ? [{ name: 'T1', value: blockedRes.value.data.t1BlockedCount || 0 }] : []),
|
|
|
155
|
+ ...(terminal.includes('T2') || terminal.includes('整体') || !terminal ? [{ name: 'T2', value: blockedRes.value.data.t2BlockedCount || 0 }] : [])
|
|
151
|
156
|
]
|
|
152
|
157
|
setOption3(horizontalBarChartOption(blockedData, '#3b82f6'))
|
|
153
|
158
|
const total = blockedRes.value.data.totalBlockedCount || 0
|
|
|
@@ -178,8 +183,8 @@ const fetchData = async () => {
|
|
178
|
183
|
if (itemRes.value?.data) {
|
|
179
|
184
|
const colors = ['#3b82f6', '#22c55e', '#f97316', '#ec4899', '#8b5cf6', '#10b981', '#f59e0b', '#ef4444']
|
|
180
|
185
|
const itemData = itemRes.value.data.map((item, index) => ({
|
|
181
|
|
- name: item.missCheckItem ,
|
|
182
|
|
- value: item.count
|
|
|
186
|
+ name: item.missCheckItem,
|
|
|
187
|
+ value: item.count
|
|
183
|
188
|
}))
|
|
184
|
189
|
setOption6(pieChartOption(itemData, colors))
|
|
185
|
190
|
}
|
|
|
@@ -212,7 +217,7 @@ const multiLineChartOption = (xAxisData, series) => ({
|
|
212
|
217
|
},
|
|
213
|
218
|
xAxis: { type: 'category', data: xAxisData, axisLine: { lineStyle: { color: '#999' } }, axisLabel: { fontSize: 10, color: '#666' } },
|
|
214
|
219
|
yAxis: { type: 'value', axisLine: { lineStyle: { color: '#999' } }, axisLabel: { fontSize: 10, color: '#666' }, splitLine: { lineStyle: { color: '#eee' } } },
|
|
215
|
|
- legend: {
|
|
|
220
|
+ legend: {
|
|
216
|
221
|
data: series.map(s => s.name),
|
|
217
|
222
|
top: '0%',
|
|
218
|
223
|
textStyle: { fontSize: 10 }
|
|
|
@@ -240,10 +245,10 @@ const horizontalBarChartOption = (data, color) => ({
|
|
240
|
245
|
},
|
|
241
|
246
|
xAxis: { type: 'value', axisLine: { lineStyle: { color: '#999' } }, axisLabel: { fontSize: 10, color: '#666' }, splitLine: { lineStyle: { color: '#eee' } } },
|
|
242
|
247
|
yAxis: { type: 'category', data: data.map(d => d.name), axisLine: { lineStyle: { color: '#999' } }, axisLabel: { fontSize: 10, color: '#666' } },
|
|
243
|
|
- series: [{
|
|
244
|
|
- type: 'bar',
|
|
245
|
|
- data: data.map(d => d.value),
|
|
246
|
|
- itemStyle: { color: color },
|
|
|
248
|
+ series: [{
|
|
|
249
|
+ type: 'bar',
|
|
|
250
|
+ data: data.map(d => d.value),
|
|
|
251
|
+ itemStyle: { color: color },
|
|
247
|
252
|
barWidth: 15,
|
|
248
|
253
|
label: { show: true, position: 'right', fontSize: 10, color: color }
|
|
249
|
254
|
}]
|
|
|
@@ -257,7 +262,7 @@ const barLineChartOption = (xAxisData, barData, lineData) => ({
|
|
257
|
262
|
},
|
|
258
|
263
|
xAxis: { type: 'category', data: xAxisData, axisLine: { lineStyle: { color: '#999' } }, axisLabel: { fontSize: 10, color: '#666' } },
|
|
259
|
264
|
yAxis: { type: 'value', axisLine: { lineStyle: { color: '#999' } }, axisLabel: { fontSize: 10, color: '#666' }, splitLine: { lineStyle: { color: '#eee' } } },
|
|
260
|
|
- legend: {
|
|
|
265
|
+ legend: {
|
|
261
|
266
|
data: ['平均过检行李数', '平均查堵件数'],
|
|
262
|
267
|
top: '0%',
|
|
263
|
268
|
textStyle: { fontSize: 10 }
|
|
|
@@ -287,7 +292,7 @@ const barLineChartOption = (xAxisData, barData, lineData) => ({
|
|
287
|
292
|
|
|
288
|
293
|
const pieChartOption = (data, colors) => ({
|
|
289
|
294
|
color: colors,
|
|
290
|
|
- legend: {
|
|
|
295
|
+ legend: {
|
|
291
|
296
|
show: true,
|
|
292
|
297
|
textStyle: { fontSize: 10 }
|
|
293
|
298
|
},
|
|
|
@@ -303,7 +308,7 @@ const pieChartOption = (data, colors) => ({
|
|
303
|
308
|
|
|
304
|
309
|
onMounted(() => {
|
|
305
|
310
|
fetchData()
|
|
306
|
|
-
|
|
|
311
|
+
|
|
307
|
312
|
})
|
|
308
|
313
|
</script>
|
|
309
|
314
|
|
|
|
@@ -324,11 +329,6 @@ onMounted(() => {
|
|
324
|
329
|
|
|
325
|
330
|
.stat-card {
|
|
326
|
331
|
flex: 1;
|
|
327
|
|
- background: #fff;
|
|
328
|
|
- border-radius: 6px;
|
|
329
|
|
- padding: 15px;
|
|
330
|
|
- border: 1px solid #eee;
|
|
331
|
|
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
|
|
332
|
332
|
min-height: 120px;
|
|
333
|
333
|
}
|
|
334
|
334
|
|
|
|
@@ -336,21 +336,38 @@ onMounted(() => {
|
|
336
|
336
|
display: flex;
|
|
337
|
337
|
height: 100%;
|
|
338
|
338
|
align-items: center;
|
|
339
|
|
- justify-content: center;
|
|
|
339
|
+ gap: 10px;
|
|
340
|
340
|
}
|
|
341
|
341
|
|
|
342
|
342
|
.stat-left {
|
|
|
343
|
+ background: #fff;
|
|
|
344
|
+ border-radius: 6px;
|
|
|
345
|
+ border: 1px solid #eee;
|
|
|
346
|
+ padding: 15px;
|
|
|
347
|
+ height: 100%;
|
|
|
348
|
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
|
|
|
349
|
+ flex: 1;
|
|
343
|
350
|
display: flex;
|
|
344
|
|
- flex-direction: column;
|
|
345
|
351
|
align-items: center;
|
|
|
352
|
+ flex-direction: column;
|
|
|
353
|
+
|
|
|
354
|
+ padding-right: 15px;
|
|
346
|
355
|
}
|
|
347
|
356
|
|
|
348
|
357
|
.stat-label {
|
|
349
|
|
- font-size: 14px;
|
|
350
|
|
- color: #666;
|
|
|
358
|
+ width: 100%;
|
|
|
359
|
+ font-size: 17px;
|
|
|
360
|
+ color: black;
|
|
351
|
361
|
margin-bottom: 8px;
|
|
352
|
362
|
}
|
|
353
|
363
|
|
|
|
364
|
+.stat-content {
|
|
|
365
|
+ margin-top: 25%;
|
|
|
366
|
+ display: flex;
|
|
|
367
|
+ flex-direction: column;
|
|
|
368
|
+ align-items: center;
|
|
|
369
|
+}
|
|
|
370
|
+
|
|
354
|
371
|
.stat-value {
|
|
355
|
372
|
font-size: 48px;
|
|
356
|
373
|
font-weight: bold;
|
|
|
@@ -393,11 +410,11 @@ onMounted(() => {
|
|
393
|
410
|
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
|
|
394
|
411
|
display: flex;
|
|
395
|
412
|
flex-direction: column;
|
|
396
|
|
- min-height: 300px;
|
|
|
413
|
+ min-height: 400px;
|
|
397
|
414
|
}
|
|
398
|
415
|
|
|
399
|
416
|
.chart-title {
|
|
400
|
|
- font-size: 17px;
|
|
|
417
|
+ font-size: 17px;
|
|
401
|
418
|
color: black;
|
|
402
|
419
|
margin-bottom: 5px;
|
|
403
|
420
|
text-align: left;
|