|
@@ -14,26 +14,36 @@
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<template #left>
|
|
<template #left>
|
|
|
- <div>
|
|
|
|
|
- <PanelContainer title="在线状态">
|
|
|
|
|
-
|
|
|
|
|
- <TechTabs v-model="onlineStatusActiveTab" type="segmented" @tab-click="handleTabClick">
|
|
|
|
|
- <TechTabPane label="信号机" name="signalMachine" style="height: 100%;">
|
|
|
|
|
- <DynamicDonutChart v-if="onlineStatusDisplayData" :chartData="onlineStatusDisplayData.chartData"
|
|
|
|
|
- :centerTitle="onlineStatusDisplayData.centerTitle" :centerSubTitle="onlineStatusDisplayData.centerSubTitle" />
|
|
|
|
|
- </TechTabPane>
|
|
|
|
|
- <TechTabPane label="检测器" name="detector">
|
|
|
|
|
- <DynamicDonutChart v-if="onlineStatusDisplayData" :chartData="onlineStatusDisplayData.chartData"
|
|
|
|
|
- :centerTitle="onlineStatusDisplayData.centerTitle" :centerSubTitle="onlineStatusDisplayData.centerSubTitle" />
|
|
|
|
|
- </TechTabPane>
|
|
|
|
|
- <TechTabPane label="红路灯" name="trafficLight">
|
|
|
|
|
- <DynamicDonutChart v-if="onlineStatusDisplayData" :chartData="onlineStatusDisplayData.chartData"
|
|
|
|
|
- :centerTitle="onlineStatusDisplayData.centerTitle" :centerSubTitle="onlineStatusDisplayData.centerSubTitle" />
|
|
|
|
|
- </TechTabPane>
|
|
|
|
|
- </TechTabs>
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
- </PanelContainer>
|
|
|
|
|
|
|
+ <div class="panel-list">
|
|
|
|
|
+ <div class="panel-item">
|
|
|
|
|
+ <PanelContainer title="在线状态">
|
|
|
|
|
+
|
|
|
|
|
+ <TechTabs v-model="onlineStatusActiveTab" type="segmented" @tab-click="handleTabClick">
|
|
|
|
|
+ <TechTabPane label="信号机" name="signalMachine" style="height: 100%;">
|
|
|
|
|
+ <DynamicDonutChart v-if="onlineStatusDisplayData" :chartData="onlineStatusDisplayData.chartData"
|
|
|
|
|
+ :centerTitle="onlineStatusDisplayData.centerTitle" :centerSubTitle="onlineStatusDisplayData.centerSubTitle" />
|
|
|
|
|
+ </TechTabPane>
|
|
|
|
|
+ <TechTabPane label="检测器" name="detector">
|
|
|
|
|
+ <DynamicDonutChart v-if="onlineStatusDisplayData" :chartData="onlineStatusDisplayData.chartData"
|
|
|
|
|
+ :centerTitle="onlineStatusDisplayData.centerTitle" :centerSubTitle="onlineStatusDisplayData.centerSubTitle" />
|
|
|
|
|
+ </TechTabPane>
|
|
|
|
|
+ <TechTabPane label="红路灯" name="trafficLight">
|
|
|
|
|
+ <DynamicDonutChart v-if="onlineStatusDisplayData" :chartData="onlineStatusDisplayData.chartData"
|
|
|
|
|
+ :centerTitle="onlineStatusDisplayData.centerTitle" :centerSubTitle="onlineStatusDisplayData.centerSubTitle" />
|
|
|
|
|
+ </TechTabPane>
|
|
|
|
|
+ </TechTabs>
|
|
|
|
|
+
|
|
|
|
|
+ </PanelContainer>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="panel-item">
|
|
|
|
|
+ <PanelContainer title="在线状态">
|
|
|
|
|
+ <TickDonutChart
|
|
|
|
|
+ :chartData="controlInfoData"
|
|
|
|
|
+ centerTitle="650个"
|
|
|
|
|
+ centerSubTitle="控制信息"
|
|
|
|
|
+ />
|
|
|
|
|
+ </PanelContainer>
|
|
|
|
|
+ </div>
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
@@ -48,6 +58,7 @@ import PanelContainer from '@/components/ui/PanelContainer.vue';
|
|
|
import DynamicDonutChart from '@/components/ui/DynamicDonutChart.vue';
|
|
import DynamicDonutChart from '@/components/ui/DynamicDonutChart.vue';
|
|
|
import TechTabs from '@/components/ui/TechTabs.vue';
|
|
import TechTabs from '@/components/ui/TechTabs.vue';
|
|
|
import TechTabPane from '@/components/ui/TechTabPane.vue';
|
|
import TechTabPane from '@/components/ui/TechTabPane.vue';
|
|
|
|
|
+import TickDonutChart from '@/components/ui/TickDonutChart.vue';
|
|
|
|
|
|
|
|
|
|
|
|
|
const mockDeviceData = {
|
|
const mockDeviceData = {
|
|
@@ -87,13 +98,24 @@ export default {
|
|
|
PanelContainer,
|
|
PanelContainer,
|
|
|
DynamicDonutChart,
|
|
DynamicDonutChart,
|
|
|
TechTabs,
|
|
TechTabs,
|
|
|
- TechTabPane
|
|
|
|
|
|
|
+ TechTabPane,
|
|
|
|
|
+ TickDonutChart
|
|
|
},
|
|
},
|
|
|
data() {
|
|
data() {
|
|
|
return {
|
|
return {
|
|
|
// 在线状态面板
|
|
// 在线状态面板
|
|
|
onlineStatusActiveTab: 'detector',
|
|
onlineStatusActiveTab: 'detector',
|
|
|
- onlineStatusDisplayData: mockDeviceData['detector']
|
|
|
|
|
|
|
+ onlineStatusDisplayData: mockDeviceData['detector'],
|
|
|
|
|
+ controlInfoData: [
|
|
|
|
|
+ { name: '定周期控制', value: 400, color: '#33a3ff' }, // 蓝色
|
|
|
|
|
+ { name: '感应控制', value: 50, color: '#e6734d' }, // 橙色
|
|
|
|
|
+ { name: '干线协调', value: 200, color: '#10b981' }, // 绿色
|
|
|
|
|
+ { name: '黄闪控制', value: 6, color: '#eab308' }, // 黄色
|
|
|
|
|
+ { name: '关灯控制', value: null,color: '#64748b' }, // 灰色 (没有值传入null即可隐藏数字)
|
|
|
|
|
+ { name: '自适应控制', value: 10, color: '#2dd4bf' }, // 青色
|
|
|
|
|
+ { name: '中心控制', value: null,color: '#8b5cf6' }, // 紫色
|
|
|
|
|
+ { name: '全红控制', value: null,color: '#f43f5e' } // 红色
|
|
|
|
|
+ ]
|
|
|
};
|
|
};
|
|
|
},
|
|
},
|
|
|
mounted() {
|
|
mounted() {
|
|
@@ -111,4 +133,14 @@ export default {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-</script>
|
|
|
|
|
|
|
+</script>
|
|
|
|
|
+<style scoped>
|
|
|
|
|
+.panel-list {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ flex-direction: column;
|
|
|
|
|
+ gap: 16px;
|
|
|
|
|
+}
|
|
|
|
|
+.panel-item {
|
|
|
|
|
+ max-height: 263px;
|
|
|
|
|
+}
|
|
|
|
|
+</style>
|