Zimo 1 неделя назад
Родитель
Сommit
91d99549f8
1 измененных файлов с 39 добавлено и 2 удалено
  1. 39 2
      src/views/pms/stat/rhkb/equipment-rate.vue

+ 39 - 2
src/views/pms/stat/rhkb/equipment-rate.vue

@@ -1,5 +1,6 @@
 <script lang="ts" setup>
 import * as echarts from 'echarts'
+import dayjs from 'dayjs'
 import {
   ANIMATION,
   ChartData,
@@ -18,6 +19,8 @@ const chartData = ref<ChartData>({
 
 const chartRef = ref<HTMLDivElement>()
 let chart: echarts.ECharts | null = null
+const router = useRouter()
+let chartClickBound = false
 
 function formatRate(value: number) {
   return `${Number(value || 0).toFixed(2)}%`
@@ -139,9 +142,37 @@ function initChart() {
   chart = echarts.init(chartRef.value, undefined, {
     renderer: CHART_RENDERER
   })
+  chart.getZr().on('click', handleChartClick)
+  chartClickBound = true
   renderChart()
 }
 
+function getChartDayRange() {
+  const xAxis = chartData.value.xAxis || []
+  const startDate = dayjs(xAxis[0])
+  const endDate = dayjs(xAxis[xAxis.length - 1])
+  if (!startDate.isValid() || !endDate.isValid()) return null
+
+  return [
+    startDate.startOf('day').format('YYYY-MM-DD HH:mm:ss'),
+    endDate.endOf('day').format('YYYY-MM-DD HH:mm:ss')
+  ]
+}
+
+function handleChartClick() {
+  const createTime = getChartDayRange()
+  if (!createTime) return
+
+  router.push({
+    name: 'IotRhDailyReportSummary',
+    query: {
+      activeTab: '日报统计',
+      view: 'kanban',
+      createTime
+    }
+  })
+}
+
 function renderChart() {
   chart?.setOption(getChartOption(chartData.value), true)
 }
@@ -151,8 +182,14 @@ function resizeChart() {
 }
 
 function destroyChart() {
-  chart?.dispose()
-  chart = null
+  if (chart) {
+    if (chartClickBound) {
+      chart.getZr().off('click', handleChartClick)
+      chartClickBound = false
+    }
+    chart.dispose()
+    chart = null
+  }
 }
 
 async function loadChart() {