Procházet zdrojové kódy

图表x轴对应精确度修正

Karsa před 1 rokem
rodič
revize
e05d275f0f

+ 19 - 30
src/hooks/chart/render.js

@@ -3,6 +3,7 @@
 import {onMounted,ref,nextTick,reactive} from 'vue'
 import {chartDefaultOpts,scatterXAxis,basicYAxis,basicXAxis,leadUnitEnMap,relevanceUnitEnMap} from './config'
 import Highcharts from 'highcharts/highstock';
+import HighchartsFormat from 'highcharts';
 import HightchartsExport from 'highcharts/modules/exporting';
 import Boost from 'highcharts/modules/boost'
 import HighchartszhCN  from './highcahrts-zh_CN.js'
@@ -565,23 +566,16 @@ function setSplineOpt(e){
     let maxTime=Math.max.apply(null,minAndMaxTimeTemArr)
 
 
-    const bool_time = xTimeDiffer(minTime,maxTime)
-    if(bool_time){
-        xAxis={
-            ...basicXAxis,
-            labels: {
-              formatter: (ctx)=> {
-                return Highcharts.dateFormat('%m/%d', ctx.value)
-              }
-            }
-        }
-    }
-    // console.log(((maxTime-minTime)/6)/(24*3600*1000),':天');
-    // let maxYear=new Date(maxTime).getFullYear()
-    // let minYear=new Date(minTime).getFullYear()
-
+    const isLessThanOneYear = xTimeDiffer(minTime,maxTime)
     xAxis={
         ...basicXAxis,
+        labels: {
+            formatter: function (ctx) {
+                return isLessThanOneYear
+                ? HighchartsFormat.dateFormat('%m/%d', ctx.value)
+                : HighchartsFormat.dateFormat('%y/%m', ctx.value);
+            }
+        },
         tickInterval:((maxTime-minTime)/6)/(24*3600*1000)>30?(maxTime-minTime)/6:24*3600*1000*30,
     }
     
@@ -839,7 +833,7 @@ function setSeasonOpt(e){
 		},
         labels: {
             formatter: (ctx)=> {
-                return Highcharts.dateFormat('%m/%d', ctx.value)
+                return HighchartsFormat.dateFormat('%m/%d', ctx.value)
             }
         }
     }
@@ -1032,21 +1026,16 @@ function setStackOrCombinChart(e){
     let minTime=Math.min.apply(null,minAndMaxTimeTemArr)
     let maxTime=Math.max.apply(null,minAndMaxTimeTemArr)
 
-
-    const bool_time = xTimeDiffer(minTime,maxTime)
-    if(bool_time){
-        xAxis={
-            ...basicXAxis,
-            labels: {
-              formatter: (ctx)=> {
-                return Highcharts.dateFormat('%m/%d', ctx.value)
-              }
-            }
-        }
-    }
-
+    const isLessThanOneYear = xTimeDiffer(minTime,maxTime)
     xAxis={
         ...basicXAxis,
+        labels: {
+            formatter: function (ctx) {
+                return isLessThanOneYear
+                ? HighchartsFormat.dateFormat('%m/%d', ctx.value)
+                : HighchartsFormat.dateFormat('%y/%m', ctx.value);
+            }
+        },
         tickInterval:((maxTime-minTime)/6)/(24*3600*1000)>30?(maxTime-minTime)/6:24*3600*1000*30,
     }
     
@@ -1078,7 +1067,7 @@ function setStackOrCombinChart(e){
 
     return {
         series,
-        xAxis:[xAxis],
+        xAxis:xAxis,
         yAxis,
         rangeSelector:{ enabled: false}
     }

+ 4 - 3
src/views/dataEDB/components/EDBChartDetail.vue

@@ -7,6 +7,7 @@ import { useWindowSize } from '@vueuse/core'
 import {chartDefaultOpts,seasonOptions} from '@/hooks/chart/config'
 import lodash from 'lodash'
 import Highcharts from 'highcharts/highstock';
+import HighchartsFormat from 'highcharts';
 import Boost from 'highcharts/modules/boost'
 import HighchartszhCN  from '@/hooks/chart/highcahrts-zh_CN.js'
 HighchartszhCN(Highcharts)
@@ -171,7 +172,7 @@ function setLineChart(){
             ...chartDefaultOpts.xAxis,
             labels: {
               formatter: function (ctx) {
-                return Highcharts.dateFormat('%m/%d', ctx.value);
+                return HighchartsFormat.dateFormat('%m/%d', ctx.value);
               },
             },
         }
@@ -180,7 +181,7 @@ function setLineChart(){
             ...chartDefaultOpts.xAxis,
 			labels: {
                 formatter: function (ctx) {
-                    return Highcharts.dateFormat('%y/%m', ctx.value);
+                    return HighchartsFormat.dateFormat('%y/%m', ctx.value);
                 },
             },
         }
@@ -326,7 +327,7 @@ function setSeasonChart(){
     let xAxis={
         labels:{
             formatter: function () {
-                return Highcharts.dateFormat('%m/%d', this.value);
+                return HighchartsFormat.dateFormat('%m/%d', this.value);
             },
         }
     }