|
|
@@ -2,10 +2,10 @@
|
|
|
<div class="flex flex-col gap-y-2 p-4">
|
|
|
<NTabs type="line" animated>
|
|
|
<NTabPane name="timeline" tab="时间线">
|
|
|
- <SiteTimeline :id="analysisID" />
|
|
|
+ <SiteTimeline v-if="showData" :id="analysisID" :data="timelineData ?? []" />
|
|
|
</NTabPane>
|
|
|
<NTabPane name="runtime" tab="运行时">
|
|
|
- <SiteRuntimeChart />
|
|
|
+ <SiteRuntimeChart v-if="showData" :data="transformRuntimeData(runtimeData)" />
|
|
|
</NTabPane>
|
|
|
</NTabs>
|
|
|
</div>
|
|
|
@@ -15,7 +15,10 @@
|
|
|
import { useRoute } from 'vue-router'
|
|
|
import { NTabs, NTabPane } from 'naive-ui'
|
|
|
import SiteTimeline from './component/siteTimeline.vue'
|
|
|
-import SiteRuntimeChart from './component/siteRuntimeChart.vue'
|
|
|
+import SiteRuntimeChart, { type RuntimeDataType } from './component/siteRuntimeChart.vue'
|
|
|
+import type { TimelineItem, RuntimeItem } from '@/service/sitesAnalysis/interface';
|
|
|
+import { getAnalysisData } from '@/service/sitesAnalysis';
|
|
|
+import { time } from 'console';
|
|
|
|
|
|
defineOptions({
|
|
|
name: 'SiteAnalysis',
|
|
|
@@ -25,4 +28,47 @@ const route = useRoute()
|
|
|
|
|
|
// 获取 name
|
|
|
const analysisID = route.params.name as string
|
|
|
+
|
|
|
+const message = useMessage()
|
|
|
+
|
|
|
+const showData = ref(false)
|
|
|
+
|
|
|
+let timelineData: TimelineItem[] | undefined = undefined
|
|
|
+let runtimeData: RuntimeItem[] | undefined = undefined
|
|
|
+
|
|
|
+// 转换并解析运行时json数据
|
|
|
+const transformRuntimeData = (data?: RuntimeItem[]): RuntimeDataType[] => {
|
|
|
+ if (data === undefined) return []
|
|
|
+ return data.map(d => {
|
|
|
+ const obj = JSON.parse(d.data_201);
|
|
|
+ const dataArea = obj['dataArea']
|
|
|
+ if (dataArea === null) {
|
|
|
+ return {
|
|
|
+ time: d.time
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return {
|
|
|
+ time: d.time,
|
|
|
+ ...(dataArea['mode'] != null && { RunMode: dataArea['mode'] }),
|
|
|
+ ...(dataArea['run_status'] != null && { RunStatus: dataArea['run_status'] }),
|
|
|
+ ...(dataArea['elecnet_state'] != null && { GridStatus: dataArea['elecnet_state'] })
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+onMounted(async () => {
|
|
|
+ // 获取Timeline数据
|
|
|
+ const analysisData = await getAnalysisData(analysisID)
|
|
|
+ console.log({ analysisData })
|
|
|
+ if (analysisData.data !== undefined) {
|
|
|
+ timelineData = analysisData.data.timeline
|
|
|
+ runtimeData = analysisData.data.runtime
|
|
|
+ }
|
|
|
+
|
|
|
+ if (timelineData !== undefined && runtimeData !== undefined) {
|
|
|
+ showData.value = true
|
|
|
+ } else {
|
|
|
+ message.error("分析数据获取失败!")
|
|
|
+ }
|
|
|
+})
|
|
|
</script>
|