@appthen/cli 1.2.10 → 1.2.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.gitignore +1 -0
- package/bin/main.js +45 -0
- package/dist/index.js +1108 -267
- package/package.json +1 -1
- package/tests/test-app/.appthen/shadow-space-100001-test-app-e99876b1.json +1406 -0
- package/tests/test-app/.appthen/shadow-space-unknown-user-test-app-e99876b1.json +1060 -0
- package/tests/test-app/.appthen/space-config.json +8 -0
- package/tests/test-app/docs/AI-Workflow.flow +112 -0
- package/tests/test-app/docs/Logic-1.flow +16 -0
- package/tests/test-app/docs/Logic.flow +16 -0
- package/tests/test-app/docs/Project-Blueprint-1.flow +119 -0
- package/tests/test-app/docs/Project-Blueprint.flow +119 -0
- package/tests/test-app/docs/README.md +3 -0
- package/tests/test-app/docs/claude.md +194 -0
- package/tests/test-app/docs/page_requirement_analysis.md +149 -0
- package/tests/test-app/docs//345/267/245/345/215/225/347/256/241/347/220/206/347/263/273/347/273/237/350/257/246/347/273/206/350/256/276/350/256/241.md +377 -0
- package/tests/test-app/src/apis/AddTodoPost.api.ts +42 -0
- package/tests/test-app/src/apis/DeleteTodoPost.api.ts +32 -0
- package/tests/test-app/src/apis/GetListPost.api.ts +38 -0
- package/tests/test-app/src/apis/TicketAttachmentUploadPost.api.ts +42 -0
- package/tests/test-app/src/apis/UpdateTodoPost.api.ts +46 -0
- package/tests/test-app/src/app.css +15 -0
- package/tests/test-app/src/cloud_functions/ticket|attachment|upload.node.ts +86 -0
- package/tests/test-app/src/cloud_functions/ticket|comment|add.node.ts +65 -0
- package/tests/test-app/src/cloud_functions/types|entity|Ticket.node.ts +88 -0
- package/tests/test-app/src/cloud_functions/types|entity|TicketAttachment.node.ts +70 -0
- package/tests/test-app/src/cloud_functions/types|entity|TicketCategory.node.ts +56 -0
- package/tests/test-app/src/cloud_functions/types|entity|TicketComment.node.ts +62 -0
- package/tests/test-app/src/cloud_functions/types|entity|TicketHistory.node.ts +74 -0
- package/tests/test-app/src/cloud_functions/types|entity|TicketPriority.node.ts +68 -0
- package/tests/test-app/src/cloud_functions/types|entity|TicketStatus.node.ts +63 -0
- package/tests/test-app/src/cloud_functions/types|models|CreateTicketParams.node.ts +20 -0
- package/tests/test-app/src/cloud_functions/types|models|TicketListParams.node.ts +30 -0
- package/tests/test-app/src/cloud_functions/types|models|UpdateTicketParams.node.ts +22 -0
- package/tests/test-app/src/components/Button.js +11 -0
- package/tests/test-app/src/components/MouduleDemoNzp.tsx +40 -0
- package/tests/test-app/src/components/Timeline.tsx +145 -0
- package/tests/test-app/src/index.ts +2 -0
- package/tests/test-app/src/modules/work_order_module/apis/TicketCommentAddPost.api.ts +48 -0
- package/tests/test-app/src/modules/work_order_module/apis/TicketCreatePost.api.ts +52 -0
- package/tests/test-app/src/modules/work_order_module/apis/TicketDeleteDelete.api.ts +39 -0
- package/tests/test-app/src/modules/work_order_module/apis/TicketDetailGet.api.ts +39 -0
- package/tests/test-app/src/modules/work_order_module/apis/TicketListGet.api.ts +61 -0
- package/tests/test-app/src/modules/work_order_module/apis/TicketUpdatePut.api.ts +57 -0
- package/tests/test-app/src/modules/work_order_module/apis/TrainDoorFaultListGet.ts +76 -0
- package/tests/test-app/src/modules/work_order_module/apis/TrainDoorListGet.ts +76 -0
- package/tests/test-app/src/modules/work_order_module/apis/TrainDoorOperationRecordsGet.ts +284 -0
- package/tests/test-app/src/modules/work_order_module/apis/TrainDoorStatisticsGet.ts +96 -0
- package/tests/test-app/src/modules/work_order_module/cloud_function/category|list.node.ts +40 -0
- package/tests/test-app/src/modules/work_order_module/cloud_function/priority|list.node.ts +26 -0
- package/tests/test-app/src/modules/work_order_module/cloud_function/status|list.node.ts +26 -0
- package/tests/test-app/src/modules/work_order_module/cloud_function/ticket|create.node.ts +54 -0
- package/tests/test-app/src/modules/work_order_module/cloud_function/ticket|delete.node.ts +55 -0
- package/tests/test-app/src/modules/work_order_module/cloud_function/ticket|detail.node.ts +65 -0
- package/tests/test-app/src/modules/work_order_module/cloud_function/ticket|list.node.ts +85 -0
- package/tests/test-app/src/modules/work_order_module/cloud_function/ticket|update.node.ts +73 -0
- package/tests/test-app/src/modules/work_order_module/data_model/Ticket.m.ts +85 -0
- package/tests/test-app/src/modules/work_order_module/data_model/TicketCategory.m.ts +53 -0
- package/tests/test-app/src/modules/work_order_module/data_model/TicketStatus.m.ts +60 -0
- package/tests/test-app/src/modules/work_order_module//345/267/245/345/215/225/347/263/273/347/273/237/344/272/247/345/223/201/350/256/276/350/256/241/346/226/207/346/241/243.md +301 -0
- package/tests/test-app/src/modules/work_order_module//345/267/245/345/215/225/347/263/273/347/273/237/345/274/200/345/217/221/344/273/273/345/212/241/345/210/206/345/267/245/346/226/207/346/241/243.md +345 -0
- package/tests/test-app/src/pages/SLAManagement.tsx +668 -0
- package/tests/test-app/src/pages/TicketCreate.tsx +27 -0
- package/tests/test-app/src/pages/TicketDetail.tsx +27 -0
- package/tests/test-app/src/pages/TicketList.tsx +27 -0
- package/tests/test-app/src/pages/TicketManagementPage.tsx +1238 -0
- package/tests/test-app/src/pages/VisualAIIDEUpgrade.tsx +245 -0
- package/tests/test-app/src/pages/appthen_guide/ComponentTreeUnderstanding.tsx +26 -0
- package/tests/test-app/src/pages/appthen_guide/DataBindingLearning.tsx +26 -0
- package/tests/test-app/src/pages/back-end/adminRootLayout.tsx +155 -0
- package/tests/test-app/src/pages/back-end/adminRootLayout10.tsx +157 -0
- package/tests/test-app/src/pages/back-end/adminRootLayout2.tsx +156 -0
- package/tests/test-app/src/pages/back-end/adminRootLayout3.tsx +156 -0
- package/tests/test-app/src/pages/back-end/adminRootLayout4.tsx +157 -0
- package/tests/test-app/src/pages/back-end/adminRootLayout5.tsx +157 -0
- package/tests/test-app/src/pages/back-end/adminRootLayout6.tsx +157 -0
- package/tests/test-app/src/pages/back-end/adminRootLayout7.tsx +157 -0
- package/tests/test-app/src/pages/back-end/adminRootLayout8.tsx +157 -0
- package/tests/test-app/src/pages/back-end/adminRootLayout9.tsx +157 -0
- package/tests/test-app/src/pages/back-end/backgroundManagementSystem.css +5 -0
- package/tests/test-app/src/pages/back-end/backgroundManagementSystem.tsx +1745 -0
- package/tests/test-app/src/pages/component/WorkOrderCard.tsx +140 -0
- package/tests/test-app/src/pages/cover.tsx +42 -0
- package/tests/test-app/src/pages/data_dashboard/blueBrightGreenTechnologyWind.css +181 -0
- package/tests/test-app/src/pages/data_dashboard/blueBrightGreenTechnologyWind.tsx +225 -0
- package/tests/test-app/src/pages/data_dashboard/blueLargeScreen.css +181 -0
- package/tests/test-app/src/pages/data_dashboard/blueLargeScreen.tsx +138 -0
- package/tests/test-app/src/pages/data_dashboard/component_library/BlueBrightGreenBorder.tsx +47 -0
- package/tests/test-app/src/pages/data_dashboard/component_library/FullScreenContainer.tsx +133 -0
- package/tests/test-app/src/pages/description_of_mock_interface.md +32 -0
- package/tests/test-app/src/pages/digitalLargeScreen.css +181 -0
- package/tests/test-app/src/pages/digitalLargeScreen.tsx +1417 -0
- package/tests/test-app/src/pages/mobile_terminal/PersonalCenter.css +3 -0
- package/tests/test-app/src/pages/mobile_terminal/PersonalCenter.tsx +362 -0
- package/tests/test-app/src/pages/mobile_terminal/WorkOrderHomepage.tsx +337 -0
- package/tests/test-app/src/pages/mobile_terminal/newWorkOrder.tsx +224 -0
- package/tests/test-app/src/pages/mobile_terminal/tabbar.tsx +67 -0
- package/tests/test-app/src/pages/mobile_terminal/uiHandsOnPractice.tsx +638 -0
- package/tests/test-app/src/pages/mobile_terminal/workOrderDetails.tsx +346 -0
- package/tests/test-app/src/pages/mobile_terminal/workOrderPage.tsx +345 -0
- package/tests/test-app/src/pages/testPage.css +3 -0
- package/tests/test-app/src/pages/testPage.tsx +158 -0
- package/tests/test-app/src/pages/web_version/website.css +205 -0
- package/tests/test-app/src/pages/web_version/website.tsx +1066 -0
- package/tests/test-app/src/pages//345/276/205/345/212/236.apidoc.json +336 -0
- package/tests/test-app/src/project.json +1120 -0
- package/tests/test-app/src/store/global.store.ts +10 -0
- package/tests/test-app/src/types/CreateTicketParams.m.ts +20 -0
- package/tests/test-app/src/types/SLAPolicy.ts +50 -0
- package/tests/test-app/src/types/Ticket.ts +68 -0
- package/tests/test-app/src/types/TicketAttachment.m.ts +67 -0
- package/tests/test-app/src/types/TicketComment.m.ts +59 -0
- package/tests/test-app/src/types/TicketEvaluation.ts +44 -0
- package/tests/test-app/src/types/TicketHistory.m.ts +71 -0
- package/tests/test-app/src/types/TicketListParams.m.ts +30 -0
- package/tests/test-app/src/types/TicketPriority.m.ts +65 -0
- package/tests/test-app/src/types/TicketRecord.ts +47 -0
- package/tests/test-app/src/types/TrainDoor.ts +284 -0
- package/tests/test-app/src/types/UpdateTicketParams.m.ts +22 -0
- package/tests/test-app/src/utils/__afterRequest.util.ts +3 -0
- package/tests/test-app/src/utils/__beforeRequest.util.ts +10 -0
- package/tests/test-app/src/utils/testGlobalAction.util.ts +7 -0
|
@@ -0,0 +1,1417 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 数字化大屏
|
|
3
|
+
* @type Page
|
|
4
|
+
* @route /doorsystem
|
|
5
|
+
* @screen 1920x1080 #2c2c2c
|
|
6
|
+
* @frames web
|
|
7
|
+
*/
|
|
8
|
+
import React from 'react';
|
|
9
|
+
import { Modal, Page, ScrollView, Text, View } from '@appthen/react';
|
|
10
|
+
import BlueBrightGreenBorder from '/src/pages/border/BlueBrightGreenBorder';
|
|
11
|
+
import { Button, DatePicker, Select } from '@appthen/antd';
|
|
12
|
+
import { ECharts } from '@appthen/echarts';
|
|
13
|
+
import FullScreenContainer from '/src/pages/screen/FullScreenContainer';
|
|
14
|
+
import './digitalLargeScreen.css';
|
|
15
|
+
|
|
16
|
+
class IProps {}
|
|
17
|
+
|
|
18
|
+
/*
|
|
19
|
+
* 数据与接口请求定义
|
|
20
|
+
*/
|
|
21
|
+
class IState {
|
|
22
|
+
/* 线路选择 */
|
|
23
|
+
selectedLine: string;
|
|
24
|
+
/* 时间范围选择 */
|
|
25
|
+
startTime: string;
|
|
26
|
+
endTime: string;
|
|
27
|
+
/* Mock故障统计数据 */
|
|
28
|
+
mockStatus: {
|
|
29
|
+
/* 今日故障数量 */todayFaultCount?: number,
|
|
30
|
+
/* 活跃故障数量 */activeFaultCount?: number,
|
|
31
|
+
/* 故障列车数量 */faultTrainCount?: number,
|
|
32
|
+
/* 故障设备数量 */faultDeviceCount?: number,
|
|
33
|
+
};
|
|
34
|
+
/* Mock预警统计数据 */
|
|
35
|
+
mockWarningStatus: {
|
|
36
|
+
/* 今日预警数量 */todayWarningCount?: number,
|
|
37
|
+
/* 预警设备数量 */warningDeviceCount?: number,
|
|
38
|
+
};
|
|
39
|
+
/* Mock列车列表数据 */
|
|
40
|
+
mockTrains: {
|
|
41
|
+
/* 列车编号 */trainNo?: string,
|
|
42
|
+
/* 列车状态 */status?: string,
|
|
43
|
+
/* 车辆数量 */carCount?: number,
|
|
44
|
+
/* 在线状态 */isOnline?: boolean,
|
|
45
|
+
}[];
|
|
46
|
+
/* Mock故障列表 */
|
|
47
|
+
mockFaultList: {
|
|
48
|
+
/* 产品名称 */productName?: string,
|
|
49
|
+
/* 车厢号 */carNo?: string,
|
|
50
|
+
/* 设备编号 */deviceNo?: string,
|
|
51
|
+
/* 故障名称 */faultName?: string,
|
|
52
|
+
/* 故障显示名称 */faultDisplayName?: string,
|
|
53
|
+
/* 报警时间 */alarmTime?: string,
|
|
54
|
+
/* 故障描述 */faultDescription?: string,
|
|
55
|
+
/* 故障状态 */faultStatus?: string,
|
|
56
|
+
/* 开始时间 */startTime?: string,
|
|
57
|
+
endTime?: any,
|
|
58
|
+
/* 应急措施 */emergencyMeasures?: string,
|
|
59
|
+
/* 库房措施 */warehouseMeasures?: string,
|
|
60
|
+
}[];
|
|
61
|
+
/* Mock预警列表 */
|
|
62
|
+
mockWarningList: {
|
|
63
|
+
/* 产品名称 */productName?: string,
|
|
64
|
+
/* 车厢号 */carNo?: string,
|
|
65
|
+
/* 设备编号 */deviceNo?: string,
|
|
66
|
+
/* 预警名称 */warningName?: string,
|
|
67
|
+
/* 预警显示名称 */warningDisplayName?: string,
|
|
68
|
+
/* 预警时间 */warningTime?: string,
|
|
69
|
+
/* 预警描述 */warningDescription?: string,
|
|
70
|
+
/* 预警级别 */warningLevel?: string,
|
|
71
|
+
}[];
|
|
72
|
+
/* 当前选中的列车状态类型 */
|
|
73
|
+
trainStatusFilter: string;
|
|
74
|
+
/* all, normal, fault, warning */
|
|
75
|
+
mockBrakeLifeData: {
|
|
76
|
+
/* @example 制动系统-0601 */deviceName?: string,
|
|
77
|
+
/* @example 85 */remainingLife?: number,
|
|
78
|
+
/* @example 2024-06-01 */maintenanceTime?: string,
|
|
79
|
+
}[];
|
|
80
|
+
/* Mock故障趋势数据 */
|
|
81
|
+
mockFaultTrend: {
|
|
82
|
+
/* @example 00:00 */time?: string,
|
|
83
|
+
/* @example 5 */faults?: number,
|
|
84
|
+
/* @example 3 */warnings?: number,
|
|
85
|
+
}[];
|
|
86
|
+
/* Mock车辆故障排序数据 */
|
|
87
|
+
mockVehicleFaultSort: {
|
|
88
|
+
/* @example 602 */name?: string,
|
|
89
|
+
/* @example 8 */faults?: number,
|
|
90
|
+
}[];
|
|
91
|
+
/* Mock低故障率TOP5数据 */
|
|
92
|
+
mockLowFaultTop5: {
|
|
93
|
+
/* @example 604 */name?: string,
|
|
94
|
+
/* @example 0.2 */value?: number,
|
|
95
|
+
}[];
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
class Document extends React.Component<IProps, IState> {
|
|
99
|
+
state = {
|
|
100
|
+
selectedLine: '6号线',
|
|
101
|
+
startTime: '',
|
|
102
|
+
endTime: '',
|
|
103
|
+
mockStatus: {
|
|
104
|
+
todayFaultCount: 12,
|
|
105
|
+
activeFaultCount: 8,
|
|
106
|
+
faultTrainCount: 5,
|
|
107
|
+
faultDeviceCount: 23,
|
|
108
|
+
},
|
|
109
|
+
mockWarningStatus: { todayWarningCount: 15, warningDeviceCount: 18 },
|
|
110
|
+
mockTrains: [
|
|
111
|
+
{ trainNo: '0601', status: 'normal', carCount: 6, isOnline: true },
|
|
112
|
+
{ trainNo: '0602', status: 'fault', carCount: 6, isOnline: true },
|
|
113
|
+
{ trainNo: '0603', status: 'warning', carCount: 6, isOnline: true },
|
|
114
|
+
{ trainNo: '0604', status: 'normal', carCount: 6, isOnline: true },
|
|
115
|
+
{ trainNo: '0605', status: 'normal', carCount: 6, isOnline: true },
|
|
116
|
+
{ trainNo: '0606', status: 'warning', carCount: 6, isOnline: true },
|
|
117
|
+
{ trainNo: '0607', status: 'normal', carCount: 6, isOnline: true },
|
|
118
|
+
{ trainNo: '0608', status: 'fault', carCount: 6, isOnline: true },
|
|
119
|
+
],
|
|
120
|
+
mockFaultList: [
|
|
121
|
+
{
|
|
122
|
+
productName: '制动系统',
|
|
123
|
+
carNo: '02',
|
|
124
|
+
deviceNo: 'B001',
|
|
125
|
+
faultName: '制动压力异常',
|
|
126
|
+
faultDisplayName: '制动压力异常',
|
|
127
|
+
alarmTime: '2024-01-01 10:30:00',
|
|
128
|
+
faultDescription: '制动系统压力传感器故障',
|
|
129
|
+
faultStatus: 'active',
|
|
130
|
+
startTime: '2024-01-01 10:30:00',
|
|
131
|
+
emergencyMeasures: '立即检修',
|
|
132
|
+
warehouseMeasures: '更换传感器',
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
productName: '车门系统',
|
|
136
|
+
carNo: '03',
|
|
137
|
+
deviceNo: 'D001',
|
|
138
|
+
faultName: '车门无法关闭',
|
|
139
|
+
faultDisplayName: '车门无法关闭',
|
|
140
|
+
alarmTime: '2024-01-01 11:45:00',
|
|
141
|
+
faultDescription: '车门传感器故障',
|
|
142
|
+
faultStatus: 'active',
|
|
143
|
+
startTime: '2024-01-01 11:45:00',
|
|
144
|
+
emergencyMeasures: '手动关闭',
|
|
145
|
+
warehouseMeasures: '更换传感器',
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
productName: '空调系统',
|
|
149
|
+
carNo: '04',
|
|
150
|
+
deviceNo: 'A001',
|
|
151
|
+
faultName: '空调压缩机故障',
|
|
152
|
+
faultDisplayName: '空调压缩机故障',
|
|
153
|
+
alarmTime: '2024-01-01 12:20:00',
|
|
154
|
+
faultDescription: '空调压缩机过热',
|
|
155
|
+
faultStatus: 'active',
|
|
156
|
+
startTime: '2024-01-01 12:20:00',
|
|
157
|
+
emergencyMeasures: '关闭空调',
|
|
158
|
+
warehouseMeasures: '更换压缩机',
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
productName: '牵引系统',
|
|
162
|
+
carNo: '01',
|
|
163
|
+
deviceNo: 'T001',
|
|
164
|
+
faultName: '牵引电机故障',
|
|
165
|
+
faultDisplayName: '牵引电机故障',
|
|
166
|
+
alarmTime: '2024-01-01 13:15:00',
|
|
167
|
+
faultDescription: '牵引电机过热',
|
|
168
|
+
faultStatus: 'active',
|
|
169
|
+
startTime: '2024-01-01 13:15:00',
|
|
170
|
+
emergencyMeasures: '降低功率',
|
|
171
|
+
warehouseMeasures: '更换电机',
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
productName: '制动系统',
|
|
175
|
+
carNo: '05',
|
|
176
|
+
deviceNo: 'B002',
|
|
177
|
+
faultName: '制动片磨损',
|
|
178
|
+
faultDisplayName: '制动片磨损',
|
|
179
|
+
alarmTime: '2024-01-01 14:00:00',
|
|
180
|
+
faultDescription: '制动片磨损严重',
|
|
181
|
+
faultStatus: 'active',
|
|
182
|
+
startTime: '2024-01-01 14:00:00',
|
|
183
|
+
emergencyMeasures: '限制速度',
|
|
184
|
+
warehouseMeasures: '更换制动片',
|
|
185
|
+
},
|
|
186
|
+
],
|
|
187
|
+
mockWarningList: [
|
|
188
|
+
{
|
|
189
|
+
productName: '制动系统',
|
|
190
|
+
carNo: '01',
|
|
191
|
+
deviceNo: 'B001',
|
|
192
|
+
warningName: '制动压力预警',
|
|
193
|
+
warningDisplayName: '制动压力预警',
|
|
194
|
+
warningTime: '2024-01-01 10:30:00',
|
|
195
|
+
warningDescription: '制动系统压力偏低',
|
|
196
|
+
warningLevel: '中',
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
productName: '车门系统',
|
|
200
|
+
carNo: '02',
|
|
201
|
+
deviceNo: 'D001',
|
|
202
|
+
warningName: '车门传感器预警',
|
|
203
|
+
warningDisplayName: '车门传感器预警',
|
|
204
|
+
warningTime: '2024-01-01 11:45:00',
|
|
205
|
+
warningDescription: '车门传感器响应延迟',
|
|
206
|
+
warningLevel: '低',
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
productName: '空调系统',
|
|
210
|
+
carNo: '03',
|
|
211
|
+
deviceNo: 'A001',
|
|
212
|
+
warningName: '空调温度预警',
|
|
213
|
+
warningDisplayName: '空调温度预警',
|
|
214
|
+
warningTime: '2024-01-01 12:20:00',
|
|
215
|
+
warningDescription: '空调温度控制偏差',
|
|
216
|
+
warningLevel: '低',
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
productName: '制动系统',
|
|
220
|
+
carNo: '04',
|
|
221
|
+
deviceNo: 'B002',
|
|
222
|
+
warningName: '制动片磨损预警',
|
|
223
|
+
warningDisplayName: '制动片磨损预警',
|
|
224
|
+
warningTime: '2024-01-01 13:15:00',
|
|
225
|
+
warningDescription: '制动片磨损达到预警值',
|
|
226
|
+
warningLevel: '高',
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
productName: '牵引系统',
|
|
230
|
+
carNo: '05',
|
|
231
|
+
deviceNo: 'T001',
|
|
232
|
+
warningName: '牵引电机温度预警',
|
|
233
|
+
warningDisplayName: '牵引电机温度预警',
|
|
234
|
+
warningTime: '2024-01-01 14:00:00',
|
|
235
|
+
warningDescription: '牵引电机温度偏高',
|
|
236
|
+
warningLevel: '中',
|
|
237
|
+
},
|
|
238
|
+
],
|
|
239
|
+
trainStatusFilter: 'all',
|
|
240
|
+
mockBrakeLifeData: [
|
|
241
|
+
{
|
|
242
|
+
deviceName: '制动系统-0601',
|
|
243
|
+
remainingLife: 85,
|
|
244
|
+
maintenanceTime: '2024-06-01',
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
deviceName: '制动系统-0602',
|
|
248
|
+
remainingLife: 72,
|
|
249
|
+
maintenanceTime: '2024-05-15',
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
deviceName: '制动系统-0603',
|
|
253
|
+
remainingLife: 68,
|
|
254
|
+
maintenanceTime: '2024-05-10',
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
deviceName: '制动系统-0604',
|
|
258
|
+
remainingLife: 91,
|
|
259
|
+
maintenanceTime: '2024-07-01',
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
deviceName: '制动系统-0605',
|
|
263
|
+
remainingLife: 45,
|
|
264
|
+
maintenanceTime: '2024-04-01',
|
|
265
|
+
},
|
|
266
|
+
],
|
|
267
|
+
mockFaultTrend: [
|
|
268
|
+
{ time: '00:00', faults: 5, warnings: 3 },
|
|
269
|
+
{ time: '04:00', faults: 8, warnings: 6 },
|
|
270
|
+
{ time: '08:00', faults: 12, warnings: 9 },
|
|
271
|
+
{ time: '12:00', faults: 15, warnings: 12 },
|
|
272
|
+
{ time: '16:00', faults: 10, warnings: 8 },
|
|
273
|
+
{ time: '20:00', faults: 7, warnings: 5 },
|
|
274
|
+
{ time: '24:00', faults: 4, warnings: 2 },
|
|
275
|
+
],
|
|
276
|
+
mockVehicleFaultSort: [
|
|
277
|
+
{ name: '0602', faults: 8 },
|
|
278
|
+
{ name: '0608', faults: 6 },
|
|
279
|
+
{ name: '0603', faults: 4 },
|
|
280
|
+
{ name: '0601', faults: 2 },
|
|
281
|
+
{ name: '0605', faults: 1 },
|
|
282
|
+
{ name: '0604', faults: 1 },
|
|
283
|
+
],
|
|
284
|
+
mockLowFaultTop5: [
|
|
285
|
+
{ name: '0604', value: 0.2 },
|
|
286
|
+
{ name: '0601', value: 0.5 },
|
|
287
|
+
{ name: '0607', value: 0.8 },
|
|
288
|
+
{ name: '0605', value: 1.2 },
|
|
289
|
+
{ name: '0606', value: 1.5 },
|
|
290
|
+
],
|
|
291
|
+
};
|
|
292
|
+
|
|
293
|
+
/**
|
|
294
|
+
* 通用修改数据
|
|
295
|
+
*/
|
|
296
|
+
setStateValue(e, { field, valueField, indexs }, cb) {
|
|
297
|
+
const state = {
|
|
298
|
+
...this.state,
|
|
299
|
+
};
|
|
300
|
+
let value = e;
|
|
301
|
+
if (valueField) {
|
|
302
|
+
value = valueField.split('.').reduce((obj, key) => obj && obj[key], e);
|
|
303
|
+
}
|
|
304
|
+
const _field =
|
|
305
|
+
indexs?.length > 0
|
|
306
|
+
? field
|
|
307
|
+
.replace(/\\.\\[\\]/g, match => `[${indexs.shift()}].`)
|
|
308
|
+
.replace('.[item]', '')
|
|
309
|
+
: field;
|
|
310
|
+
this.utils.setValue(state, _field, value);
|
|
311
|
+
this.setState(state, cb);
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
/**
|
|
315
|
+
* 页面加载后执行
|
|
316
|
+
*/
|
|
317
|
+
componentDidMount() {
|
|
318
|
+
// Mock版本 - 无需加载数据
|
|
319
|
+
console.log('Mock版本已加载');
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
/**
|
|
323
|
+
* 线路选择变更
|
|
324
|
+
*/
|
|
325
|
+
handleLineChange(value) {
|
|
326
|
+
this.setState({
|
|
327
|
+
selectedLine: value,
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
/**
|
|
332
|
+
* 时间范围变更
|
|
333
|
+
*/
|
|
334
|
+
handleTimeRangeChange(dates) {
|
|
335
|
+
if (dates && dates.length === 2) {
|
|
336
|
+
this.setState({
|
|
337
|
+
startTime: dates[0],
|
|
338
|
+
endTime: dates[1],
|
|
339
|
+
});
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
/**
|
|
344
|
+
* 查询数据
|
|
345
|
+
*/
|
|
346
|
+
handleQuery() {
|
|
347
|
+
// Mock版本 - 仅用于UI展示,无真实数据加载
|
|
348
|
+
console.log('模拟查询数据');
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
/**
|
|
352
|
+
* 切换列车状态筛选
|
|
353
|
+
*/
|
|
354
|
+
handleTrainStatusFilter(status) {
|
|
355
|
+
this.setState({
|
|
356
|
+
trainStatusFilter: status,
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
/**
|
|
361
|
+
* 查看列车详情
|
|
362
|
+
*/
|
|
363
|
+
handleViewTrainDetail(train) {
|
|
364
|
+
// 打开详情弹窗
|
|
365
|
+
this.$('modal')?.open();
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
/**
|
|
369
|
+
* 查看故障详情
|
|
370
|
+
*/
|
|
371
|
+
handleViewFaultDetail(fault) {
|
|
372
|
+
// 打开详情弹窗
|
|
373
|
+
this.$('modal')?.open();
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
render() {
|
|
377
|
+
return (
|
|
378
|
+
<Page className="h-screen">
|
|
379
|
+
<Modal
|
|
380
|
+
animate="pop"
|
|
381
|
+
renderView={props => (
|
|
382
|
+
<View className="flex flex-col bg-[#001585] w-[900px] h-[880px] rounded p-[20px]">
|
|
383
|
+
<View className="flex flex-row justify-center items-center mb-[20px]">
|
|
384
|
+
<View className="flex flex-row items-center">
|
|
385
|
+
<View
|
|
386
|
+
style={{
|
|
387
|
+
backgroundImage:
|
|
388
|
+
'url(https://cdn.appthen.com/Fusc9RzqS6dkjtgdKOjo_HaUzVXC)',
|
|
389
|
+
backgroundRepeat: 'no-repeat',
|
|
390
|
+
display: 'flex',
|
|
391
|
+
flexDirection: 'row',
|
|
392
|
+
backgroundSize: '100% 100%',
|
|
393
|
+
backgroundPosition: 'center center',
|
|
394
|
+
justifyContent: 'center',
|
|
395
|
+
height: '40px',
|
|
396
|
+
width: '100%',
|
|
397
|
+
flex: '1',
|
|
398
|
+
}}
|
|
399
|
+
>
|
|
400
|
+
<View className="h-full flex flex-col justify-center pl-[0px] w-[342px] items-center">
|
|
401
|
+
<Text className="text-[#00fcff] text-base [fontFamily:Helvetica]">
|
|
402
|
+
设备预警详情
|
|
403
|
+
</Text>
|
|
404
|
+
</View>
|
|
405
|
+
</View>
|
|
406
|
+
</View>
|
|
407
|
+
</View>
|
|
408
|
+
<View className="bg-[#0a0a2e] rounded-lg p-[16px] mb-[16px]">
|
|
409
|
+
<View className="grid grid-cols-2 gap-4">
|
|
410
|
+
<View>
|
|
411
|
+
<Text className="text-sm text-[#888888] mb-[4px]">
|
|
412
|
+
预警编号
|
|
413
|
+
</Text>
|
|
414
|
+
<Text className="text-base text-[#ffffff] font-bold">
|
|
415
|
+
W20240101001
|
|
416
|
+
</Text>
|
|
417
|
+
</View>
|
|
418
|
+
<View>
|
|
419
|
+
<Text className="text-sm text-[#888888] mb-[4px]">
|
|
420
|
+
预警级别
|
|
421
|
+
</Text>
|
|
422
|
+
<View className="flex flex-row items-center">
|
|
423
|
+
<View className="w-[12px] h-[12px] bg-[#FFD700] rounded-full mr-[8px]" />
|
|
424
|
+
<Text className="text-base text-[#FFD700] font-bold">
|
|
425
|
+
中级预警
|
|
426
|
+
</Text>
|
|
427
|
+
</View>
|
|
428
|
+
</View>
|
|
429
|
+
<View>
|
|
430
|
+
<Text className="text-sm text-[#888888] mb-[4px]">
|
|
431
|
+
设备名称
|
|
432
|
+
</Text>
|
|
433
|
+
<Text className="text-base text-[#ffffff]">
|
|
434
|
+
制动系统-0601车
|
|
435
|
+
</Text>
|
|
436
|
+
</View>
|
|
437
|
+
<View>
|
|
438
|
+
<Text className="text-sm text-[#888888] mb-[4px]">
|
|
439
|
+
预警时间
|
|
440
|
+
</Text>
|
|
441
|
+
<Text className="text-base text-[#ffffff]">
|
|
442
|
+
2024-01-01 10:30:15
|
|
443
|
+
</Text>
|
|
444
|
+
</View>
|
|
445
|
+
<View>
|
|
446
|
+
<Text className="text-sm text-[#888888] mb-[4px]">
|
|
447
|
+
车厢号
|
|
448
|
+
</Text>
|
|
449
|
+
<Text className="text-base text-[#ffffff]">01车厢</Text>
|
|
450
|
+
</View>
|
|
451
|
+
<View>
|
|
452
|
+
<Text className="text-sm text-[#888888] mb-[4px]">
|
|
453
|
+
设备编号
|
|
454
|
+
</Text>
|
|
455
|
+
<Text className="text-base text-[#ffffff]">B001</Text>
|
|
456
|
+
</View>
|
|
457
|
+
</View>
|
|
458
|
+
</View>
|
|
459
|
+
<View className="flex-1 flex flex-row gap-4">
|
|
460
|
+
<View className="flex-1 flex flex-col">
|
|
461
|
+
<BlueBrightGreenBorder
|
|
462
|
+
content={
|
|
463
|
+
<View className="p-[16px] flex flex-col h-full">
|
|
464
|
+
<View
|
|
465
|
+
style={{
|
|
466
|
+
backgroundImage:
|
|
467
|
+
'url(https://cdn.appthen.com/Fusc9RzqS6dkjtgdKOjo_HaUzVXC)',
|
|
468
|
+
backgroundRepeat: 'no-repeat',
|
|
469
|
+
display: 'flex',
|
|
470
|
+
flexDirection: 'row',
|
|
471
|
+
backgroundSize: '100% 100%',
|
|
472
|
+
backgroundPosition: 'center center',
|
|
473
|
+
justifyContent: 'center',
|
|
474
|
+
height: '40px',
|
|
475
|
+
marginBottom: '16px',
|
|
476
|
+
}}
|
|
477
|
+
>
|
|
478
|
+
<View className="h-full flex flex-col justify-center pl-[20px]">
|
|
479
|
+
<Text className="text-[#00fcff] text-sm [fontFamily:Helvetica]">
|
|
480
|
+
预警描述
|
|
481
|
+
</Text>
|
|
482
|
+
</View>
|
|
483
|
+
</View>
|
|
484
|
+
<View className="flex-1">
|
|
485
|
+
<View className="mb-[12px] flex flex-col">
|
|
486
|
+
<Text className="text-sm text-[#888888] mb-[4px]">
|
|
487
|
+
预警名称
|
|
488
|
+
</Text>
|
|
489
|
+
<Text className="text-base text-[#FFD700]">
|
|
490
|
+
制动系统压力异常
|
|
491
|
+
</Text>
|
|
492
|
+
</View>
|
|
493
|
+
<View className="mb-[12px]">
|
|
494
|
+
<Text className="text-sm text-[#888888] mb-[4px]">
|
|
495
|
+
详细描述
|
|
496
|
+
</Text>
|
|
497
|
+
<Text className="text-sm text-[#ffffff] [lineHeight:1.625] flex flex-col">
|
|
498
|
+
制动系统压力传感器检测到压力值低于正常范围,当前压力为0.6MPa,
|
|
499
|
+
正常范围应为0.8-1.2MPa。该异常可能导致制动距离延长,
|
|
500
|
+
影响行车安全。建议立即检查制动系统管路和传感器状态。
|
|
501
|
+
</Text>
|
|
502
|
+
</View>
|
|
503
|
+
<View className="mb-[12px]">
|
|
504
|
+
<Text className="text-sm text-[#888888] mb-[4px]">
|
|
505
|
+
可能原因
|
|
506
|
+
</Text>
|
|
507
|
+
<Text className="text-sm text-[#ffffff]">
|
|
508
|
+
1. 制动管路泄漏
|
|
509
|
+
<br />
|
|
510
|
+
2. 压力传感器故障
|
|
511
|
+
<br />
|
|
512
|
+
3. 制动泵工作异常
|
|
513
|
+
<br />
|
|
514
|
+
4. 气压不足
|
|
515
|
+
</Text>
|
|
516
|
+
</View>
|
|
517
|
+
<View>
|
|
518
|
+
<Text className="text-sm text-[#888888] mb-[4px]">
|
|
519
|
+
影响范围
|
|
520
|
+
</Text>
|
|
521
|
+
<Text className="text-sm text-[#ffffff]">
|
|
522
|
+
影响本车厢制动性能,可能导致制动距离增加20-30%
|
|
523
|
+
</Text>
|
|
524
|
+
</View>
|
|
525
|
+
</View>
|
|
526
|
+
</View>
|
|
527
|
+
}
|
|
528
|
+
className="flex flex-col flex-1"
|
|
529
|
+
/>
|
|
530
|
+
</View>
|
|
531
|
+
<View className="flex-1 flex flex-col">
|
|
532
|
+
<BlueBrightGreenBorder
|
|
533
|
+
content={
|
|
534
|
+
<View className="p-[16px] flex flex-col h-full">
|
|
535
|
+
<View
|
|
536
|
+
style={{
|
|
537
|
+
backgroundImage:
|
|
538
|
+
'url(https://cdn.appthen.com/Fusc9RzqS6dkjtgdKOjo_HaUzVXC)',
|
|
539
|
+
backgroundRepeat: 'no-repeat',
|
|
540
|
+
display: 'flex',
|
|
541
|
+
flexDirection: 'row',
|
|
542
|
+
backgroundSize: '100% 100%',
|
|
543
|
+
backgroundPosition: 'center center',
|
|
544
|
+
justifyContent: 'center',
|
|
545
|
+
height: '40px',
|
|
546
|
+
marginBottom: '16px',
|
|
547
|
+
}}
|
|
548
|
+
>
|
|
549
|
+
<View className="h-full flex flex-col justify-center pl-[20px]">
|
|
550
|
+
<Text className="text-[#00fcff] text-sm [fontFamily:Helvetica]">
|
|
551
|
+
处理措施
|
|
552
|
+
</Text>
|
|
553
|
+
</View>
|
|
554
|
+
</View>
|
|
555
|
+
<View className="flex-1">
|
|
556
|
+
<View className="mb-[16px] flex flex-col">
|
|
557
|
+
<Text className="text-sm text-[#FF6B6B] mb-[4px] font-bold">
|
|
558
|
+
应急措施
|
|
559
|
+
</Text>
|
|
560
|
+
<Text className="text-sm text-[#ffffff] [lineHeight:1.625]">
|
|
561
|
+
1. 立即降低行车速度至40km/h以下
|
|
562
|
+
<br />
|
|
563
|
+
2. 加强制动时的安全距离
|
|
564
|
+
<br />
|
|
565
|
+
3. 准备应急制动系统
|
|
566
|
+
<br />
|
|
567
|
+
4. 通知乘务人员做好应急准备
|
|
568
|
+
</Text>
|
|
569
|
+
</View>
|
|
570
|
+
<View className="mb-[16px] flex flex-col">
|
|
571
|
+
<Text className="text-sm text-[#4ECDC4] mb-[4px] font-bold">
|
|
572
|
+
检查步骤
|
|
573
|
+
</Text>
|
|
574
|
+
<Text className="text-sm text-[#ffffff] [lineHeight:1.625]">
|
|
575
|
+
1. 检查制动管路是否有泄漏
|
|
576
|
+
<br />
|
|
577
|
+
2. 测试压力传感器工作状态
|
|
578
|
+
<br />
|
|
579
|
+
3. 检查制动泵压力输出
|
|
580
|
+
<br />
|
|
581
|
+
4. 验证气压系统压力
|
|
582
|
+
</Text>
|
|
583
|
+
</View>
|
|
584
|
+
<View className="mb-[16px]">
|
|
585
|
+
<Text className="text-sm text-[#45B7D1] mb-[4px] font-bold">
|
|
586
|
+
维修建议
|
|
587
|
+
</Text>
|
|
588
|
+
<Text className="text-sm text-[#ffffff] [lineHeight:1.625]">
|
|
589
|
+
1. 如发现管路泄漏,立即更换密封件
|
|
590
|
+
<br />
|
|
591
|
+
2. 传感器故障需更换新传感器
|
|
592
|
+
<br />
|
|
593
|
+
3. 制动泵异常需进行大修或更换
|
|
594
|
+
<br />
|
|
595
|
+
4. 补充气压至正常范围
|
|
596
|
+
</Text>
|
|
597
|
+
</View>
|
|
598
|
+
<View>
|
|
599
|
+
<Text className="text-sm text-[#96CEB4] mb-[4px] font-bold">
|
|
600
|
+
预防措施
|
|
601
|
+
</Text>
|
|
602
|
+
<Text className="text-sm text-[#ffffff] [lineHeight:1.625]">
|
|
603
|
+
1. 增加制动系统巡检频率
|
|
604
|
+
<br />
|
|
605
|
+
2. 定期校准压力传感器
|
|
606
|
+
<br />
|
|
607
|
+
3. 建立压力变化趋势监控
|
|
608
|
+
<br />
|
|
609
|
+
4. 备品备件充足储备
|
|
610
|
+
</Text>
|
|
611
|
+
</View>
|
|
612
|
+
</View>
|
|
613
|
+
</View>
|
|
614
|
+
}
|
|
615
|
+
className="flex flex-col flex-1"
|
|
616
|
+
/>
|
|
617
|
+
</View>
|
|
618
|
+
</View>
|
|
619
|
+
<View className="flex flex-row justify-between items-center mt-[16px]">
|
|
620
|
+
<View className="flex flex-row gap-3">
|
|
621
|
+
<Button
|
|
622
|
+
type="primary"
|
|
623
|
+
size="small"
|
|
624
|
+
className="bg-[#197dcb] border-[#197dcb] border border-solid"
|
|
625
|
+
>
|
|
626
|
+
确认处理
|
|
627
|
+
</Button>
|
|
628
|
+
<Button
|
|
629
|
+
type="default"
|
|
630
|
+
size="small"
|
|
631
|
+
className="bg-[#666] border-[#666] border border-solid text-[#ffffff]"
|
|
632
|
+
>
|
|
633
|
+
转派维修
|
|
634
|
+
</Button>
|
|
635
|
+
<Button
|
|
636
|
+
type="default"
|
|
637
|
+
size="small"
|
|
638
|
+
className="bg-[#666] border-[#666] border border-solid text-[#ffffff]"
|
|
639
|
+
>
|
|
640
|
+
查看历史
|
|
641
|
+
</Button>
|
|
642
|
+
</View>
|
|
643
|
+
<View className="text-sm text-[#888888]">
|
|
644
|
+
<Text>处理时限: 2小时内</Text>
|
|
645
|
+
</View>
|
|
646
|
+
</View>
|
|
647
|
+
</View>
|
|
648
|
+
)}
|
|
649
|
+
visible={false}
|
|
650
|
+
maskClosable={true}
|
|
651
|
+
ref="modal"
|
|
652
|
+
className=""
|
|
653
|
+
/>
|
|
654
|
+
<FullScreenContainer
|
|
655
|
+
content={
|
|
656
|
+
<View className="h-full flex flex-col">
|
|
657
|
+
<View
|
|
658
|
+
key="header"
|
|
659
|
+
style={{
|
|
660
|
+
height: '80px',
|
|
661
|
+
backgroundImage:
|
|
662
|
+
'url(https://cdn.appthen.com/Fu5bWQQXD0SVPRCq31hi3903u5xD)',
|
|
663
|
+
backgroundSize: 'cover',
|
|
664
|
+
backgroundPosition: 'center',
|
|
665
|
+
}}
|
|
666
|
+
>
|
|
667
|
+
<View className="flex-1 flex flex-row items-center pl-[32px] pr-[32px]">
|
|
668
|
+
<View className="flex-1">
|
|
669
|
+
<Text className="text-4xl text-[#81d3fc] font-extrabold">
|
|
670
|
+
地铁列车设备监控仪表盘
|
|
671
|
+
</Text>
|
|
672
|
+
</View>
|
|
673
|
+
<View className="flex flex-row items-center gap-6">
|
|
674
|
+
<View className="flex flex-col">
|
|
675
|
+
<Text className="text-sm text-[#ffffff] mb-[4px]">
|
|
676
|
+
线路选择
|
|
677
|
+
</Text>
|
|
678
|
+
<Select
|
|
679
|
+
value={this.state.selectedLine}
|
|
680
|
+
onChange={value => this.handleLineChange(value)}
|
|
681
|
+
className="w-[120px]"
|
|
682
|
+
>
|
|
683
|
+
<Select.Option value="1号线">
|
|
684
|
+
<Text>1号线</Text>
|
|
685
|
+
</Select.Option>
|
|
686
|
+
<Select.Option value="2号线">
|
|
687
|
+
<Text>2号线</Text>
|
|
688
|
+
</Select.Option>
|
|
689
|
+
<Select.Option value="3号线">
|
|
690
|
+
<Text>3号线</Text>
|
|
691
|
+
</Select.Option>
|
|
692
|
+
<Select.Option value="4号线">
|
|
693
|
+
<Text>4号线</Text>
|
|
694
|
+
</Select.Option>
|
|
695
|
+
<Select.Option value="5号线">
|
|
696
|
+
<Text>5号线</Text>
|
|
697
|
+
</Select.Option>
|
|
698
|
+
<Select.Option value="6号线">
|
|
699
|
+
<Text>6号线</Text>
|
|
700
|
+
</Select.Option>
|
|
701
|
+
</Select>
|
|
702
|
+
</View>
|
|
703
|
+
<View className="flex flex-col">
|
|
704
|
+
<Text className="text-sm text-[#ffffff] mb-[4px]">
|
|
705
|
+
时间范围
|
|
706
|
+
</Text>
|
|
707
|
+
<DatePicker.RangePicker
|
|
708
|
+
onChange={dates => this.handleTimeRangeChange(dates)}
|
|
709
|
+
className="w-[240px]"
|
|
710
|
+
/>
|
|
711
|
+
</View>
|
|
712
|
+
<Button
|
|
713
|
+
type="primary"
|
|
714
|
+
onClick={() => this.handleQuery()}
|
|
715
|
+
className="mt-[24px]"
|
|
716
|
+
>
|
|
717
|
+
查询
|
|
718
|
+
</Button>
|
|
719
|
+
</View>
|
|
720
|
+
</View>
|
|
721
|
+
</View>
|
|
722
|
+
<View key="main" className="flex-1 flex flex-row">
|
|
723
|
+
<View className="pl-[20px] pr-[10px] flex flex-col w-[680px]">
|
|
724
|
+
<BlueBrightGreenBorder
|
|
725
|
+
content={
|
|
726
|
+
<View className="p-[16px] flex flex-col h-full">
|
|
727
|
+
<View
|
|
728
|
+
style={{
|
|
729
|
+
backgroundImage:
|
|
730
|
+
'url(https://cdn.appthen.com/Fusc9RzqS6dkjtgdKOjo_HaUzVXC)',
|
|
731
|
+
backgroundRepeat: 'no-repeat',
|
|
732
|
+
display: 'flex',
|
|
733
|
+
flexDirection: 'row',
|
|
734
|
+
backgroundSize: '100% 100%',
|
|
735
|
+
backgroundPosition: 'center center',
|
|
736
|
+
justifyContent: 'center',
|
|
737
|
+
height: '52px',
|
|
738
|
+
marginBottom: '20px',
|
|
739
|
+
}}
|
|
740
|
+
>
|
|
741
|
+
<View className="h-full flex flex-col justify-center pl-[30px]">
|
|
742
|
+
<Text className="text-[#00fcff] text-lg [fontFamily:Helvetica]">
|
|
743
|
+
设备故障指标
|
|
744
|
+
</Text>
|
|
745
|
+
</View>
|
|
746
|
+
</View>
|
|
747
|
+
<View className="flex flex-row justify-between">
|
|
748
|
+
<View className="flex flex-col items-center mr-[20px]">
|
|
749
|
+
<View
|
|
750
|
+
style={{
|
|
751
|
+
borderImage:
|
|
752
|
+
'url(https://cdn.appthen.com/FlFgi0fblg9box18PDqEVwWsSiFd) 0 fill stretch',
|
|
753
|
+
borderImageWidth: 'auto',
|
|
754
|
+
width: '57px',
|
|
755
|
+
height: '65px',
|
|
756
|
+
}}
|
|
757
|
+
__hidePh={true}
|
|
758
|
+
/>
|
|
759
|
+
<View className="mt-[10px] mb-[10px]">
|
|
760
|
+
<Text className="text-[32px] text-[#FFD700]">
|
|
761
|
+
{this.state.mockWarningStatus
|
|
762
|
+
?.todayWarningCount || 0}
|
|
763
|
+
</Text>
|
|
764
|
+
</View>
|
|
765
|
+
<View>
|
|
766
|
+
<Text className="text-sm text-[#ffffff]">
|
|
767
|
+
今日预警
|
|
768
|
+
</Text>
|
|
769
|
+
</View>
|
|
770
|
+
</View>
|
|
771
|
+
<View className="flex flex-col items-center mr-[20px]">
|
|
772
|
+
<View
|
|
773
|
+
style={{
|
|
774
|
+
borderImage:
|
|
775
|
+
'url(https://cdn.appthen.com/Fjs_YDcmk37VesLIDaWaF8wmU3DQ) 0 fill stretch',
|
|
776
|
+
borderImageWidth: 'auto',
|
|
777
|
+
width: '57px',
|
|
778
|
+
height: '65px',
|
|
779
|
+
}}
|
|
780
|
+
__hidePh={true}
|
|
781
|
+
/>
|
|
782
|
+
<View className="mt-[10px] mb-[10px]">
|
|
783
|
+
<Text className="text-[32px] text-[#FF0000]">
|
|
784
|
+
{this.state.mockStatus?.todayFaultCount || 0}
|
|
785
|
+
</Text>
|
|
786
|
+
</View>
|
|
787
|
+
<View>
|
|
788
|
+
<Text className="text-sm text-[#ffffff]">
|
|
789
|
+
今日故障
|
|
790
|
+
</Text>
|
|
791
|
+
</View>
|
|
792
|
+
</View>
|
|
793
|
+
<View className="flex flex-col items-center">
|
|
794
|
+
<View
|
|
795
|
+
style={{
|
|
796
|
+
borderImage:
|
|
797
|
+
'url(https://cdn.appthen.com/Fl3BCenUwPtZJLVmtt6_zaucdldp) 0 fill stretch',
|
|
798
|
+
borderImageWidth: 'auto',
|
|
799
|
+
width: '57px',
|
|
800
|
+
height: '65px',
|
|
801
|
+
}}
|
|
802
|
+
__hidePh={true}
|
|
803
|
+
/>
|
|
804
|
+
<View className="mt-[10px] mb-[10px]">
|
|
805
|
+
<Text className="text-[32px] text-[#808080]">
|
|
806
|
+
{this.state.mockStatus?.activeFaultCount || 0}
|
|
807
|
+
</Text>
|
|
808
|
+
</View>
|
|
809
|
+
<View>
|
|
810
|
+
<Text className="text-sm text-[#ffffff]">
|
|
811
|
+
活跃故障
|
|
812
|
+
</Text>
|
|
813
|
+
</View>
|
|
814
|
+
</View>
|
|
815
|
+
</View>
|
|
816
|
+
</View>
|
|
817
|
+
}
|
|
818
|
+
className="flex flex-col h-[281px]"
|
|
819
|
+
/>
|
|
820
|
+
<BlueBrightGreenBorder
|
|
821
|
+
content={
|
|
822
|
+
<View className="p-[16px] flex flex-col h-full">
|
|
823
|
+
<View
|
|
824
|
+
style={{
|
|
825
|
+
backgroundImage:
|
|
826
|
+
'url(https://cdn.appthen.com/Fusc9RzqS6dkjtgdKOjo_HaUzVXC)',
|
|
827
|
+
backgroundRepeat: 'no-repeat',
|
|
828
|
+
display: 'flex',
|
|
829
|
+
flexDirection: 'row',
|
|
830
|
+
backgroundSize: '100% 100%',
|
|
831
|
+
backgroundPosition: 'center center',
|
|
832
|
+
justifyContent: 'center',
|
|
833
|
+
height: '52px',
|
|
834
|
+
marginBottom: '20px',
|
|
835
|
+
}}
|
|
836
|
+
>
|
|
837
|
+
<View className="h-full flex flex-col justify-center pl-[30px]">
|
|
838
|
+
<Text className="text-[#00fcff] text-lg [fontFamily:Helvetica]">
|
|
839
|
+
故障数量变化趋势
|
|
840
|
+
</Text>
|
|
841
|
+
</View>
|
|
842
|
+
</View>
|
|
843
|
+
<ECharts
|
|
844
|
+
advanced={false}
|
|
845
|
+
title={{ text: '', show: false }}
|
|
846
|
+
tooltip={{ trigger: 'axis', show: true }}
|
|
847
|
+
legend={{ show: true, data: ['故障数', '预警数'] }}
|
|
848
|
+
xAxis={{
|
|
849
|
+
type: 'category',
|
|
850
|
+
name: '时间',
|
|
851
|
+
show: true,
|
|
852
|
+
data: this.state.mockFaultTrend?.map(function (
|
|
853
|
+
item
|
|
854
|
+
) {
|
|
855
|
+
return item.time;
|
|
856
|
+
}) || [
|
|
857
|
+
'00:00',
|
|
858
|
+
'04:00',
|
|
859
|
+
'08:00',
|
|
860
|
+
'12:00',
|
|
861
|
+
'16:00',
|
|
862
|
+
'20:00',
|
|
863
|
+
'24:00',
|
|
864
|
+
],
|
|
865
|
+
}}
|
|
866
|
+
yAxis={{ type: 'value', name: '数量', show: true }}
|
|
867
|
+
series={[
|
|
868
|
+
{
|
|
869
|
+
name: '故障数',
|
|
870
|
+
type: 'line',
|
|
871
|
+
data: this.state.mockFaultTrend?.map(function (
|
|
872
|
+
item
|
|
873
|
+
) {
|
|
874
|
+
return item.faults;
|
|
875
|
+
}) || [12, 8, 15, 22, 18, 25, 20],
|
|
876
|
+
smooth: true,
|
|
877
|
+
itemStyle: { color: '#FF0000' },
|
|
878
|
+
lineStyle: { color: '#FF0000', width: 2 },
|
|
879
|
+
},
|
|
880
|
+
{
|
|
881
|
+
name: '预警数',
|
|
882
|
+
type: 'line',
|
|
883
|
+
data: this.state.mockFaultTrend?.map(function (
|
|
884
|
+
item
|
|
885
|
+
) {
|
|
886
|
+
return item.warnings;
|
|
887
|
+
}) || [5, 12, 8, 15, 20, 18, 22],
|
|
888
|
+
smooth: true,
|
|
889
|
+
itemStyle: { color: '#FFD700' },
|
|
890
|
+
lineStyle: { color: '#FFD700', width: 2 },
|
|
891
|
+
},
|
|
892
|
+
]}
|
|
893
|
+
/>
|
|
894
|
+
</View>
|
|
895
|
+
}
|
|
896
|
+
className="flex flex-col h-[420px]"
|
|
897
|
+
/>
|
|
898
|
+
<BlueBrightGreenBorder
|
|
899
|
+
content={
|
|
900
|
+
<View className="p-[16px] flex flex-col h-full">
|
|
901
|
+
<View
|
|
902
|
+
style={{
|
|
903
|
+
backgroundImage:
|
|
904
|
+
'url(https://cdn.appthen.com/Fusc9RzqS6dkjtgdKOjo_HaUzVXC)',
|
|
905
|
+
backgroundRepeat: 'no-repeat',
|
|
906
|
+
display: 'flex',
|
|
907
|
+
flexDirection: 'row',
|
|
908
|
+
backgroundSize: '100% 100%',
|
|
909
|
+
backgroundPosition: 'center center',
|
|
910
|
+
justifyContent: 'center',
|
|
911
|
+
height: '52px',
|
|
912
|
+
marginBottom: '20px',
|
|
913
|
+
}}
|
|
914
|
+
>
|
|
915
|
+
<View className="h-full flex flex-col justify-center pl-[30px]">
|
|
916
|
+
<Text className="text-[#00fcff] text-lg [fontFamily:Helvetica]">
|
|
917
|
+
车辆故障排序
|
|
918
|
+
</Text>
|
|
919
|
+
</View>
|
|
920
|
+
</View>
|
|
921
|
+
<ECharts
|
|
922
|
+
advanced={false}
|
|
923
|
+
title={{ text: '', show: false }}
|
|
924
|
+
tooltip={{ trigger: 'item', show: true }}
|
|
925
|
+
xAxis={{ type: 'value', name: '故障数', show: true }}
|
|
926
|
+
yAxis={{
|
|
927
|
+
type: 'category',
|
|
928
|
+
name: '车辆',
|
|
929
|
+
show: true,
|
|
930
|
+
data: this.state.mockVehicleFaultSort?.map(
|
|
931
|
+
function (item) {
|
|
932
|
+
return item.name;
|
|
933
|
+
}
|
|
934
|
+
) || [
|
|
935
|
+
'车辆6',
|
|
936
|
+
'车辆5',
|
|
937
|
+
'车辆4',
|
|
938
|
+
'车辆3',
|
|
939
|
+
'车辆2',
|
|
940
|
+
'车辆1',
|
|
941
|
+
],
|
|
942
|
+
}}
|
|
943
|
+
series={[
|
|
944
|
+
{
|
|
945
|
+
name: '故障数',
|
|
946
|
+
type: 'bar',
|
|
947
|
+
data: this.state.mockVehicleFaultSort?.map(
|
|
948
|
+
function (item) {
|
|
949
|
+
return item.faults;
|
|
950
|
+
}
|
|
951
|
+
) || [8, 12, 6, 15, 9, 10],
|
|
952
|
+
itemStyle: { color: '#FF0000' },
|
|
953
|
+
},
|
|
954
|
+
]}
|
|
955
|
+
/>
|
|
956
|
+
</View>
|
|
957
|
+
}
|
|
958
|
+
className="flex flex-col h-[389px]"
|
|
959
|
+
/>
|
|
960
|
+
</View>
|
|
961
|
+
<View className="flex-1 flex flex-col pl-[10px] pr-[10px]">
|
|
962
|
+
<BlueBrightGreenBorder
|
|
963
|
+
content={
|
|
964
|
+
<View className="p-[16px] flex flex-col h-full">
|
|
965
|
+
<View
|
|
966
|
+
style={{
|
|
967
|
+
backgroundImage:
|
|
968
|
+
'url(https://cdn.appthen.com/Fusc9RzqS6dkjtgdKOjo_HaUzVXC)',
|
|
969
|
+
backgroundRepeat: 'no-repeat',
|
|
970
|
+
display: 'flex',
|
|
971
|
+
flexDirection: 'row',
|
|
972
|
+
backgroundSize: '100% 100%',
|
|
973
|
+
backgroundPosition: 'center center',
|
|
974
|
+
justifyContent: 'center',
|
|
975
|
+
height: '52px',
|
|
976
|
+
marginBottom: '20px',
|
|
977
|
+
}}
|
|
978
|
+
>
|
|
979
|
+
<View className="h-full flex flex-col justify-center pl-[30px]">
|
|
980
|
+
<Text className="text-[#00fcff] text-lg [fontFamily:Helvetica]">
|
|
981
|
+
状态统计
|
|
982
|
+
</Text>
|
|
983
|
+
</View>
|
|
984
|
+
</View>
|
|
985
|
+
<View className="grid grid-cols-4 gap-4">
|
|
986
|
+
<View className="flex flex-col items-center">
|
|
987
|
+
<Text className="text-2xl text-[#FFD700] font-bold">
|
|
988
|
+
{this.state.mockWarningStatus
|
|
989
|
+
?.warningDeviceCount || 0}
|
|
990
|
+
</Text>
|
|
991
|
+
<Text className="text-sm text-[#ffffff]">
|
|
992
|
+
预警设备数
|
|
993
|
+
</Text>
|
|
994
|
+
</View>
|
|
995
|
+
<View className="flex flex-col items-center">
|
|
996
|
+
<Text className="text-2xl text-[#FF0000] font-bold">
|
|
997
|
+
{this.state.mockStatus?.faultDeviceCount || 0}
|
|
998
|
+
</Text>
|
|
999
|
+
<Text className="text-sm text-[#ffffff]">
|
|
1000
|
+
故障设备数
|
|
1001
|
+
</Text>
|
|
1002
|
+
</View>
|
|
1003
|
+
<View className="flex flex-col items-center">
|
|
1004
|
+
<Text className="text-2xl text-[#197dcb] font-bold">
|
|
1005
|
+
{this.state.mockTrains?.filter(t => t.isOnline)
|
|
1006
|
+
.length || 0}
|
|
1007
|
+
</Text>
|
|
1008
|
+
<Text className="text-sm text-[#ffffff]">
|
|
1009
|
+
在线车辆
|
|
1010
|
+
</Text>
|
|
1011
|
+
</View>
|
|
1012
|
+
<View className="flex flex-col items-center">
|
|
1013
|
+
<Text className="text-2xl text-[#00FF00] font-bold">
|
|
1014
|
+
{this.state.mockTrains?.length || 0}
|
|
1015
|
+
</Text>
|
|
1016
|
+
<Text className="text-sm text-[#ffffff]">
|
|
1017
|
+
配车总数
|
|
1018
|
+
</Text>
|
|
1019
|
+
</View>
|
|
1020
|
+
</View>
|
|
1021
|
+
</View>
|
|
1022
|
+
}
|
|
1023
|
+
className="flex flex-col h-[193px]"
|
|
1024
|
+
/>
|
|
1025
|
+
<BlueBrightGreenBorder
|
|
1026
|
+
content={
|
|
1027
|
+
<View className="p-[16px] flex flex-col h-full">
|
|
1028
|
+
<View
|
|
1029
|
+
style={{
|
|
1030
|
+
backgroundImage:
|
|
1031
|
+
'url(https://cdn.appthen.com/Fusc9RzqS6dkjtgdKOjo_HaUzVXC)',
|
|
1032
|
+
backgroundRepeat: 'no-repeat',
|
|
1033
|
+
display: 'flex',
|
|
1034
|
+
flexDirection: 'row',
|
|
1035
|
+
backgroundSize: '100% 100%',
|
|
1036
|
+
backgroundPosition: 'center center',
|
|
1037
|
+
justifyContent: 'center',
|
|
1038
|
+
height: '52px',
|
|
1039
|
+
marginBottom: '20px',
|
|
1040
|
+
}}
|
|
1041
|
+
>
|
|
1042
|
+
<View className="h-full flex flex-col justify-center pl-[30px]">
|
|
1043
|
+
<Text className="text-[#00fcff] text-lg [fontFamily:Helvetica]">
|
|
1044
|
+
列车线路图
|
|
1045
|
+
</Text>
|
|
1046
|
+
</View>
|
|
1047
|
+
</View>
|
|
1048
|
+
<ECharts
|
|
1049
|
+
advanced={false}
|
|
1050
|
+
title={{ text: '', show: false }}
|
|
1051
|
+
tooltip={{ trigger: 'item', show: true }}
|
|
1052
|
+
xAxis={{
|
|
1053
|
+
type: 'category',
|
|
1054
|
+
show: false,
|
|
1055
|
+
data: [
|
|
1056
|
+
'站点1',
|
|
1057
|
+
'站点2',
|
|
1058
|
+
'站点3',
|
|
1059
|
+
'站点4',
|
|
1060
|
+
'站点5',
|
|
1061
|
+
'站点6',
|
|
1062
|
+
'站点7',
|
|
1063
|
+
'站点8',
|
|
1064
|
+
],
|
|
1065
|
+
}}
|
|
1066
|
+
yAxis={{ type: 'value', show: false }}
|
|
1067
|
+
series={[
|
|
1068
|
+
{
|
|
1069
|
+
name: '线路',
|
|
1070
|
+
type: 'line',
|
|
1071
|
+
data: [0, 1, 2, 3, 4, 5, 6, 7],
|
|
1072
|
+
smooth: true,
|
|
1073
|
+
itemStyle: { color: '#197dcb' },
|
|
1074
|
+
lineStyle: { color: '#197dcb', width: 4 },
|
|
1075
|
+
symbol: 'circle',
|
|
1076
|
+
symbolSize: 12,
|
|
1077
|
+
},
|
|
1078
|
+
]}
|
|
1079
|
+
/>
|
|
1080
|
+
</View>
|
|
1081
|
+
}
|
|
1082
|
+
className="flex flex-col h-[669px]"
|
|
1083
|
+
/>
|
|
1084
|
+
<BlueBrightGreenBorder
|
|
1085
|
+
content={
|
|
1086
|
+
<View className="p-[16px] flex flex-col h-full">
|
|
1087
|
+
<View
|
|
1088
|
+
style={{
|
|
1089
|
+
backgroundImage:
|
|
1090
|
+
'url(https://cdn.appthen.com/Fusc9RzqS6dkjtgdKOjo_HaUzVXC)',
|
|
1091
|
+
backgroundRepeat: 'no-repeat',
|
|
1092
|
+
display: 'flex',
|
|
1093
|
+
flexDirection: 'row',
|
|
1094
|
+
backgroundSize: '100% 100%',
|
|
1095
|
+
backgroundPosition: 'center center',
|
|
1096
|
+
justifyContent: 'center',
|
|
1097
|
+
height: '52px',
|
|
1098
|
+
marginBottom: '20px',
|
|
1099
|
+
}}
|
|
1100
|
+
>
|
|
1101
|
+
<View className="h-full flex flex-col justify-center pl-[30px]">
|
|
1102
|
+
<Text className="text-[#00fcff] text-lg [fontFamily:Helvetica]">
|
|
1103
|
+
列车状态总览
|
|
1104
|
+
</Text>
|
|
1105
|
+
</View>
|
|
1106
|
+
</View>
|
|
1107
|
+
<View className="flex flex-row gap-2 mb-[16px]">
|
|
1108
|
+
<Button
|
|
1109
|
+
type={
|
|
1110
|
+
this.state.trainStatusFilter === 'all'
|
|
1111
|
+
? 'primary'
|
|
1112
|
+
: 'default'
|
|
1113
|
+
}
|
|
1114
|
+
size="small"
|
|
1115
|
+
onClick={() => this.handleTrainStatusFilter('all')}
|
|
1116
|
+
>
|
|
1117
|
+
全部
|
|
1118
|
+
</Button>
|
|
1119
|
+
<Button
|
|
1120
|
+
type={
|
|
1121
|
+
this.state.trainStatusFilter === 'normal'
|
|
1122
|
+
? 'primary'
|
|
1123
|
+
: 'default'
|
|
1124
|
+
}
|
|
1125
|
+
size="small"
|
|
1126
|
+
onClick={() =>
|
|
1127
|
+
this.handleTrainStatusFilter('normal')
|
|
1128
|
+
}
|
|
1129
|
+
>
|
|
1130
|
+
正常
|
|
1131
|
+
</Button>
|
|
1132
|
+
<Button
|
|
1133
|
+
type={
|
|
1134
|
+
this.state.trainStatusFilter === 'fault'
|
|
1135
|
+
? 'primary'
|
|
1136
|
+
: 'default'
|
|
1137
|
+
}
|
|
1138
|
+
size="small"
|
|
1139
|
+
onClick={() =>
|
|
1140
|
+
this.handleTrainStatusFilter('fault')
|
|
1141
|
+
}
|
|
1142
|
+
>
|
|
1143
|
+
故障
|
|
1144
|
+
</Button>
|
|
1145
|
+
<Button
|
|
1146
|
+
type={
|
|
1147
|
+
this.state.trainStatusFilter === 'warning'
|
|
1148
|
+
? 'primary'
|
|
1149
|
+
: 'default'
|
|
1150
|
+
}
|
|
1151
|
+
size="small"
|
|
1152
|
+
onClick={() =>
|
|
1153
|
+
this.handleTrainStatusFilter('warning')
|
|
1154
|
+
}
|
|
1155
|
+
>
|
|
1156
|
+
预警
|
|
1157
|
+
</Button>
|
|
1158
|
+
</View>
|
|
1159
|
+
<View className="grid grid-cols-3 gap-2">
|
|
1160
|
+
{this.state.mockTrains
|
|
1161
|
+
?.slice(0, 6)
|
|
1162
|
+
.map((train, index) => (
|
|
1163
|
+
<View
|
|
1164
|
+
key={index}
|
|
1165
|
+
className={`p-2 rounded border cursor-pointer text-center ${
|
|
1166
|
+
train.status === 'normal'
|
|
1167
|
+
? 'border-blue-500 bg-blue-900 bg-opacity-20'
|
|
1168
|
+
: train.status === 'fault'
|
|
1169
|
+
? 'border-red-500 bg-red-900 bg-opacity-20'
|
|
1170
|
+
: train.status === 'warning'
|
|
1171
|
+
? 'border-yellow-500 bg-yellow-900 bg-opacity-20'
|
|
1172
|
+
: 'border-gray-500 bg-gray-900 bg-opacity-20'
|
|
1173
|
+
}`}
|
|
1174
|
+
onClick={() =>
|
|
1175
|
+
this.handleViewTrainDetail(train)
|
|
1176
|
+
}
|
|
1177
|
+
>
|
|
1178
|
+
<Text
|
|
1179
|
+
className={`text-sm font-bold ${
|
|
1180
|
+
train.status === 'normal'
|
|
1181
|
+
? 'text-blue-400'
|
|
1182
|
+
: train.status === 'fault'
|
|
1183
|
+
? 'text-red-400'
|
|
1184
|
+
: train.status === 'warning'
|
|
1185
|
+
? 'text-yellow-400'
|
|
1186
|
+
: 'text-gray-400'
|
|
1187
|
+
}`}
|
|
1188
|
+
>
|
|
1189
|
+
{train.trainNo}
|
|
1190
|
+
</Text>
|
|
1191
|
+
<Text className="text-xs text-[#9ca3af]">
|
|
1192
|
+
{train.isOnline ? '在线' : '离线'}
|
|
1193
|
+
</Text>
|
|
1194
|
+
</View>
|
|
1195
|
+
))}
|
|
1196
|
+
</View>
|
|
1197
|
+
</View>
|
|
1198
|
+
}
|
|
1199
|
+
className="flex flex-col flex-1"
|
|
1200
|
+
/>
|
|
1201
|
+
</View>
|
|
1202
|
+
<View className="pr-[20px] pl-[10px] flex flex-col w-[780px]">
|
|
1203
|
+
<BlueBrightGreenBorder
|
|
1204
|
+
content={
|
|
1205
|
+
<View className="p-[16px] flex flex-col h-full">
|
|
1206
|
+
<View
|
|
1207
|
+
style={{
|
|
1208
|
+
backgroundImage:
|
|
1209
|
+
'url(https://cdn.appthen.com/Fusc9RzqS6dkjtgdKOjo_HaUzVXC)',
|
|
1210
|
+
backgroundRepeat: 'no-repeat',
|
|
1211
|
+
display: 'flex',
|
|
1212
|
+
flexDirection: 'row',
|
|
1213
|
+
backgroundSize: '100% 100%',
|
|
1214
|
+
backgroundPosition: 'center center',
|
|
1215
|
+
justifyContent: 'center',
|
|
1216
|
+
height: '52px',
|
|
1217
|
+
marginBottom: '20px',
|
|
1218
|
+
}}
|
|
1219
|
+
>
|
|
1220
|
+
<View className="h-full flex flex-col justify-center pl-[30px]">
|
|
1221
|
+
<Text className="text-[#00fcff] text-lg [fontFamily:Helvetica]">
|
|
1222
|
+
设备预警信息
|
|
1223
|
+
</Text>
|
|
1224
|
+
</View>
|
|
1225
|
+
</View>
|
|
1226
|
+
<View className="flex flex-col overflow-hidden h-[280px]">
|
|
1227
|
+
<View className="flex flex-row items-center h-[36px] bg-[#454545]">
|
|
1228
|
+
<View className="w-[80px] flex flex-col items-center">
|
|
1229
|
+
<Text className="text-sm text-[#ffffff]">
|
|
1230
|
+
车厢号
|
|
1231
|
+
</Text>
|
|
1232
|
+
</View>
|
|
1233
|
+
<View className="w-[80px] flex flex-col items-center">
|
|
1234
|
+
<Text className="text-sm text-[#ffffff]">
|
|
1235
|
+
设备
|
|
1236
|
+
</Text>
|
|
1237
|
+
</View>
|
|
1238
|
+
<View className="flex-1 flex flex-col items-center">
|
|
1239
|
+
<Text className="text-sm text-[#ffffff]">
|
|
1240
|
+
预警名称
|
|
1241
|
+
</Text>
|
|
1242
|
+
</View>
|
|
1243
|
+
<View className="w-[120px] flex flex-col items-center">
|
|
1244
|
+
<Text className="text-sm text-[#ffffff]">
|
|
1245
|
+
预警时间
|
|
1246
|
+
</Text>
|
|
1247
|
+
</View>
|
|
1248
|
+
<View className="w-[80px] flex flex-col items-center">
|
|
1249
|
+
<Text className="text-sm text-[#ffffff]">
|
|
1250
|
+
操作
|
|
1251
|
+
</Text>
|
|
1252
|
+
</View>
|
|
1253
|
+
</View>
|
|
1254
|
+
<ScrollView>
|
|
1255
|
+
{this.state.mockWarningList
|
|
1256
|
+
?.slice(0, 8)
|
|
1257
|
+
.map((item, index) => (
|
|
1258
|
+
<View
|
|
1259
|
+
key={index}
|
|
1260
|
+
className="border-gray-700 cursor-pointer flex flex-row h-[35px] border-b-[1px] border-b-solid"
|
|
1261
|
+
>
|
|
1262
|
+
<View className="w-[80px] flex flex-col items-center justify-center">
|
|
1263
|
+
<Text className="text-xs text-[#ffffff]">
|
|
1264
|
+
{item?.carNo || '-'}
|
|
1265
|
+
</Text>
|
|
1266
|
+
</View>
|
|
1267
|
+
<View className="w-[80px] flex flex-col items-center justify-center">
|
|
1268
|
+
<Text className="text-xs text-[#ffffff]">
|
|
1269
|
+
{item?.productName || '-'}
|
|
1270
|
+
</Text>
|
|
1271
|
+
</View>
|
|
1272
|
+
<View className="flex-1 flex flex-col justify-center pl-[8px] pr-[8px]">
|
|
1273
|
+
<Text className="text-xs text-[#FFD700]">
|
|
1274
|
+
{item?.warningDisplayName || '-'}
|
|
1275
|
+
</Text>
|
|
1276
|
+
</View>
|
|
1277
|
+
<View className="w-[120px] flex flex-col items-center justify-center">
|
|
1278
|
+
<Text className="text-xs text-[#ffffff]">
|
|
1279
|
+
{item?.warningTime
|
|
1280
|
+
? this.utils
|
|
1281
|
+
.dayjs(item.warningTime)
|
|
1282
|
+
.format('MM-DD HH:mm')
|
|
1283
|
+
: '-'}
|
|
1284
|
+
</Text>
|
|
1285
|
+
</View>
|
|
1286
|
+
<View
|
|
1287
|
+
onClick={() =>
|
|
1288
|
+
this.handleViewFaultDetail(item)
|
|
1289
|
+
}
|
|
1290
|
+
className="w-[80px] flex flex-col items-center justify-center cursor-pointer"
|
|
1291
|
+
>
|
|
1292
|
+
<Text className="text-xs text-[#00fcff]">
|
|
1293
|
+
查看
|
|
1294
|
+
</Text>
|
|
1295
|
+
</View>
|
|
1296
|
+
</View>
|
|
1297
|
+
))}
|
|
1298
|
+
</ScrollView>
|
|
1299
|
+
</View>
|
|
1300
|
+
</View>
|
|
1301
|
+
}
|
|
1302
|
+
className="flex flex-col h-[604px]"
|
|
1303
|
+
/>
|
|
1304
|
+
<BlueBrightGreenBorder
|
|
1305
|
+
content={
|
|
1306
|
+
<View className="p-[16px] flex flex-col h-full">
|
|
1307
|
+
<View
|
|
1308
|
+
style={{
|
|
1309
|
+
backgroundImage:
|
|
1310
|
+
'url(https://cdn.appthen.com/Fusc9RzqS6dkjtgdKOjo_HaUzVXC)',
|
|
1311
|
+
backgroundRepeat: 'no-repeat',
|
|
1312
|
+
display: 'flex',
|
|
1313
|
+
flexDirection: 'row',
|
|
1314
|
+
backgroundSize: '100% 100%',
|
|
1315
|
+
backgroundPosition: 'center center',
|
|
1316
|
+
justifyContent: 'center',
|
|
1317
|
+
height: '52px',
|
|
1318
|
+
marginBottom: '20px',
|
|
1319
|
+
}}
|
|
1320
|
+
>
|
|
1321
|
+
<View className="h-full flex flex-col justify-center pl-[30px]">
|
|
1322
|
+
<Text className="text-[#00fcff] text-lg [fontFamily:Helvetica]">
|
|
1323
|
+
设备故障信息
|
|
1324
|
+
</Text>
|
|
1325
|
+
</View>
|
|
1326
|
+
</View>
|
|
1327
|
+
<View className="h-[46px] flex flex-row bg-[#494949]">
|
|
1328
|
+
<View className="flex flex-row justify-center items-center w-[80px]">
|
|
1329
|
+
<Text className="text-sm text-[#ffffff]">
|
|
1330
|
+
车厢号
|
|
1331
|
+
</Text>
|
|
1332
|
+
</View>
|
|
1333
|
+
<View className="flex flex-row justify-center items-center w-[80px]">
|
|
1334
|
+
<Text className="text-sm text-[#ffffff]">设备</Text>
|
|
1335
|
+
</View>
|
|
1336
|
+
<View className="flex flex-row justify-center items-center flex-1">
|
|
1337
|
+
<Text className="text-sm text-[#ffffff]">
|
|
1338
|
+
故障名称
|
|
1339
|
+
</Text>
|
|
1340
|
+
</View>
|
|
1341
|
+
<View className="flex flex-row justify-center items-center w-[140px]">
|
|
1342
|
+
<Text className="text-sm text-[#ffffff]">
|
|
1343
|
+
故障时间
|
|
1344
|
+
</Text>
|
|
1345
|
+
</View>
|
|
1346
|
+
<View className="flex flex-row justify-center items-center w-[80px]">
|
|
1347
|
+
<Text className="text-sm text-[#ffffff]">操作</Text>
|
|
1348
|
+
</View>
|
|
1349
|
+
</View>
|
|
1350
|
+
<ScrollView>
|
|
1351
|
+
{this.state.mockFaultList
|
|
1352
|
+
?.slice(0, 8)
|
|
1353
|
+
.map((item, index) => (
|
|
1354
|
+
<View
|
|
1355
|
+
key={index}
|
|
1356
|
+
className="border-gray-700 h-[46px] flex flex-row border-b-[1px] border-b-solid"
|
|
1357
|
+
>
|
|
1358
|
+
<View className="flex flex-row justify-center items-center w-[80px]">
|
|
1359
|
+
<Text className="text-sm text-[#ffffff]">
|
|
1360
|
+
{item?.carNo || '-'}
|
|
1361
|
+
</Text>
|
|
1362
|
+
</View>
|
|
1363
|
+
<View className="flex flex-row justify-center items-center w-[80px]">
|
|
1364
|
+
<Text className="text-sm text-[#ffffff]">
|
|
1365
|
+
{item?.productName || '-'}
|
|
1366
|
+
</Text>
|
|
1367
|
+
</View>
|
|
1368
|
+
<View className="flex flex-row justify-center items-center flex-1 pl-[8px] pr-[8px]">
|
|
1369
|
+
<Text className="text-sm text-[#FF0000]">
|
|
1370
|
+
{item?.faultDisplayName || '-'}
|
|
1371
|
+
</Text>
|
|
1372
|
+
</View>
|
|
1373
|
+
<View className="flex flex-row justify-center items-center w-[140px]">
|
|
1374
|
+
<Text className="text-sm text-[#ffffff]">
|
|
1375
|
+
{item?.startTime
|
|
1376
|
+
? this.utils
|
|
1377
|
+
.dayjs(item.startTime)
|
|
1378
|
+
.format('MM-DD HH:mm')
|
|
1379
|
+
: '-'}
|
|
1380
|
+
</Text>
|
|
1381
|
+
</View>
|
|
1382
|
+
<View
|
|
1383
|
+
onClick={() =>
|
|
1384
|
+
this.handleViewFaultDetail(item)
|
|
1385
|
+
}
|
|
1386
|
+
className="flex flex-row justify-center items-center w-[80px] cursor-pointer"
|
|
1387
|
+
>
|
|
1388
|
+
<Text className="text-sm text-[#00fcff]">
|
|
1389
|
+
详情
|
|
1390
|
+
</Text>
|
|
1391
|
+
</View>
|
|
1392
|
+
</View>
|
|
1393
|
+
))}
|
|
1394
|
+
</ScrollView>
|
|
1395
|
+
</View>
|
|
1396
|
+
}
|
|
1397
|
+
className="flex flex-col flex-1"
|
|
1398
|
+
/>
|
|
1399
|
+
</View>
|
|
1400
|
+
</View>
|
|
1401
|
+
<View key="footer" className="bg-[#1a1b2f] p-[16px]">
|
|
1402
|
+
<Text className="text-[#ffffff]">
|
|
1403
|
+
系统状态: 在线 | 最后更新:{new Date().toLocaleString()}
|
|
1404
|
+
</Text>
|
|
1405
|
+
</View>
|
|
1406
|
+
</View>
|
|
1407
|
+
}
|
|
1408
|
+
baseWidth={2560}
|
|
1409
|
+
baseHeight={1440}
|
|
1410
|
+
className="h-screen bg-[#0f1129] flex flex-col"
|
|
1411
|
+
/>
|
|
1412
|
+
</Page>
|
|
1413
|
+
);
|
|
1414
|
+
}
|
|
1415
|
+
}
|
|
1416
|
+
|
|
1417
|
+
export default Document;
|