|
@@ -65,18 +65,15 @@
|
|
|
<div class="panel-item">
|
|
<div class="panel-item">
|
|
|
<PanelContainer title="设备状态">
|
|
<PanelContainer title="设备状态">
|
|
|
|
|
|
|
|
- <TechTabs v-model="onlineStatusActiveTab" :interval="10000" type="segmented" autoPlay @tab-click="handleTabClick">
|
|
|
|
|
- <TechTabPane label="信号机" name="signalMachine" style="height: 100%;">
|
|
|
|
|
- <DynamicDonutChart v-if="onlineStatusDisplayData" :chartData="onlineStatusDisplayData.chartData"
|
|
|
|
|
- :centerTitle="onlineStatusDisplayData.centerTitle" :centerSubTitle="onlineStatusDisplayData.centerSubTitle"/>
|
|
|
|
|
|
|
+ <TechTabs v-model="deviceStatusActiveTab" :interval="10000" type="segmented" autoPlay @tab-click="handleDeviceStatusTabClick">
|
|
|
|
|
+ <TechTabPane label="信号机" name="signalMachineStatus" style="height: 100%;">
|
|
|
|
|
+ <DeviceStatusDonutChart v-if="deviceStatusDisplayData" :chartData="deviceStatusDisplayData.chartData"/>
|
|
|
</TechTabPane>
|
|
</TechTabPane>
|
|
|
- <TechTabPane label="检测器" name="detector">
|
|
|
|
|
- <DynamicDonutChart v-if="onlineStatusDisplayData" :chartData="onlineStatusDisplayData.chartData"
|
|
|
|
|
- :centerTitle="onlineStatusDisplayData.centerTitle" :centerSubTitle="onlineStatusDisplayData.centerSubTitle"/>
|
|
|
|
|
|
|
+ <TechTabPane label="检测器" name="detectorStatus">
|
|
|
|
|
+ <DeviceStatusDonutChart v-if="deviceStatusDisplayData" :chartData="deviceStatusDisplayData.chartData"/>
|
|
|
</TechTabPane>
|
|
</TechTabPane>
|
|
|
- <TechTabPane label="相机" name="camera">
|
|
|
|
|
- <DynamicDonutChart v-if="onlineStatusDisplayData" :chartData="onlineStatusDisplayData.chartData"
|
|
|
|
|
- :centerTitle="onlineStatusDisplayData.centerTitle" :centerSubTitle="onlineStatusDisplayData.centerSubTitle"/>
|
|
|
|
|
|
|
+ <TechTabPane label="红绿灯" name="trafficLightStatus">
|
|
|
|
|
+ <DeviceStatusDonutChart v-if="deviceStatusDisplayData" :chartData="deviceStatusDisplayData.chartData"/>
|
|
|
</TechTabPane>
|
|
</TechTabPane>
|
|
|
</TechTabs>
|
|
</TechTabs>
|
|
|
|
|
|
|
@@ -142,6 +139,7 @@ import TickDonutChart from '@/components/ui/TickDonutChart.vue';
|
|
|
import AlarmMessageList from '@/components/ui/AlarmMessageList.vue';
|
|
import AlarmMessageList from '@/components/ui/AlarmMessageList.vue';
|
|
|
import TechTable from '@/components/ui/TechTable.vue';
|
|
import TechTable from '@/components/ui/TechTable.vue';
|
|
|
import TongzhouTrafficMap from '@/components/TongzhouTrafficMap.vue';
|
|
import TongzhouTrafficMap from '@/components/TongzhouTrafficMap.vue';
|
|
|
|
|
+import DeviceStatusDonutChart from '@/components/ui/DeviceStatusDonutChart.vue';
|
|
|
|
|
|
|
|
|
|
|
|
|
const mockDeviceData = {
|
|
const mockDeviceData = {
|
|
@@ -171,6 +169,34 @@ const mockDeviceData = {
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
+const mockDeviceStatusData = {
|
|
|
|
|
+ 'signalMachineStatus': {
|
|
|
|
|
+ centerTitle: '98%',
|
|
|
|
|
+ centerSubTitle: '980/1000',
|
|
|
|
|
+ chartData: [
|
|
|
|
|
+ { name: '正常', value: 1, color: '#A0E551' }, // 这里的 value 多少无所谓,主要取颜色
|
|
|
|
|
+ { name: '故障', value: 0, color: '#D03030' }
|
|
|
|
|
+ ]
|
|
|
|
|
+ },
|
|
|
|
|
+ 'detectorStatus': {
|
|
|
|
|
+ centerTitle: '85%',
|
|
|
|
|
+ centerSubTitle: '425/500',
|
|
|
|
|
+ chartData: [
|
|
|
|
|
+ // { name: '正常', value: 0, color: '#A0E551' },
|
|
|
|
|
+ { name: '通信故障', value: 4, color: '#C6302B' }
|
|
|
|
|
+ ]
|
|
|
|
|
+ },
|
|
|
|
|
+ 'trafficLightStatus': {
|
|
|
|
|
+ centerTitle: '99%',
|
|
|
|
|
+ centerSubTitle: '1188/1200',
|
|
|
|
|
+ chartData: [
|
|
|
|
|
+ // { name: '正常', value: 0, color: '#A0E551' },
|
|
|
|
|
+ { name: '红绿冲突', value: 2, color: '#C6302B' }, // 亮红
|
|
|
|
|
+ { name: '红灯故障', value: 2, color: '#8F1E1E' } // 暗红
|
|
|
|
|
+ ]
|
|
|
|
|
+ }
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
export default {
|
|
export default {
|
|
|
name: "HomePage",
|
|
name: "HomePage",
|
|
|
components: {
|
|
components: {
|
|
@@ -184,13 +210,16 @@ export default {
|
|
|
TickDonutChart,
|
|
TickDonutChart,
|
|
|
AlarmMessageList,
|
|
AlarmMessageList,
|
|
|
TechTable,
|
|
TechTable,
|
|
|
- TongzhouTrafficMap
|
|
|
|
|
|
|
+ TongzhouTrafficMap,
|
|
|
|
|
+ DeviceStatusDonutChart
|
|
|
},
|
|
},
|
|
|
data() {
|
|
data() {
|
|
|
return {
|
|
return {
|
|
|
// 在线状态面板
|
|
// 在线状态面板
|
|
|
- onlineStatusActiveTab: 'detector',
|
|
|
|
|
- onlineStatusDisplayData: mockDeviceData['detector'],
|
|
|
|
|
|
|
+ onlineStatusActiveTab: 'signalMachine',
|
|
|
|
|
+ onlineStatusDisplayData: mockDeviceData['signalMachine'],
|
|
|
|
|
+ deviceStatusActiveTab: 'signalMachineStatus',
|
|
|
|
|
+ deviceStatusDisplayData: mockDeviceStatusData['signalMachineStatus'],
|
|
|
controlInfoData: [
|
|
controlInfoData: [
|
|
|
{ name: '定周期控制', value: 400, color: '#33a3ff' }, // 蓝色
|
|
{ name: '定周期控制', value: 400, color: '#33a3ff' }, // 蓝色
|
|
|
{ name: '感应控制', value: 50, color: '#e6734d' }, // 橙色
|
|
{ name: '感应控制', value: 50, color: '#e6734d' }, // 橙色
|
|
@@ -277,6 +306,14 @@ export default {
|
|
|
this.onlineStatusDisplayData = mockDeviceData[selectedTabName];
|
|
this.onlineStatusDisplayData = mockDeviceData[selectedTabName];
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
|
|
+ handleDeviceStatusTabClick(selectedTabName) {
|
|
|
|
|
+ console.log('用户切换了设备类型:', selectedTabName);
|
|
|
|
|
+
|
|
|
|
|
+ // 从 mock 字典中取出对应的数据并赋值,图表会自动响应式更新!
|
|
|
|
|
+ if (mockDeviceStatusData[selectedTabName]) {
|
|
|
|
|
+ this.deviceStatusDisplayData = mockDeviceStatusData[selectedTabName];
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
// 处理忽略逻辑
|
|
// 处理忽略逻辑
|
|
|
onAlarmIgnore({ item, index }) {
|
|
onAlarmIgnore({ item, index }) {
|
|
|
console.log('点击了忽略:', item.title);
|
|
console.log('点击了忽略:', item.title);
|