Jelajahi Sumber

兼容预测指标配置

Karsa 2 tahun lalu
induk
melakukan
10b778849f
1 mengubah file dengan 48 tambahan dan 9 penghapusan
  1. 48 9
      src/views/chartShow/index.vue

+ 48 - 9
src/views/chartShow/index.vue

@@ -178,8 +178,6 @@ export default defineComponent({
         let sameSideIndex = chartData.findIndex(
           (i:IDataProps) => i.IsAxis === item.IsAxis
         );
-        //轴数值的最大长度 用于计算单位标题相对与轴的偏移计算 没啥卵用需求如此 只为了显示美观 无逻辑用处
-        let MaxlabelLen = getLabelMaxLen(item.DataList) + item.Unit.length
 
         //y轴
         let textEn = item.Unit?item.UnitEn:''
@@ -229,13 +227,18 @@ export default defineComponent({
               : `${item.EdbName}${dynamic_tag}`
         let nameEn:String=item.EdbNameEn?`${item.EdbNameEn}${dynamic_tag_en}`:''
         let name :String=language.value == 'ch'?nameCh:nameEn
+
+        //预测指标配置
+        let predict_params = item.EdbInfoCategoryType === 1 ? getPredictParams(item) : {};
+
         let obj = {
           data: [] as any[],
           type:  'spline',
           yAxis: sameSideIndex,
           name,
           color: item.ChartColor,
-          lineWidth: Number(item.ChartWidth)
+          lineWidth: Number(item.ChartWidth),
+          ...predict_params
         };
         item.DataList = item.DataList || []
         for (let i of item.DataList) {
@@ -352,9 +355,6 @@ export default defineComponent({
         item.IsAxis = serie_yIndex === index ? item.IsAxis : chartData[serie_yIndex].IsAxis;
         item.IsOrder = serie_yIndex === index ? item.IsOrder : chartData[serie_yIndex].IsOrder;
 
-        //轴数值的最大长度 用于计算单位标题相对与轴的偏移计算 没啥卵用需求如此 只为了显示美观 无逻辑用处
-        let MaxlabelLen = getLabelMaxLen(item.DataList) + item.Unit.length
-
         //y轴
         let textEn = item.Unit?item.UnitEn:''
         let yItem = {
@@ -403,6 +403,10 @@ export default defineComponent({
               : `${item.EdbName}${dynamic_tag}`
         let nameEn:String=item.EdbNameEn?`${item.EdbNameEn}${dynamic_tag_en}`:''
         let name :String=language.value == 'ch'?nameCh:nameEn
+
+        //预测指标配置
+        let predict_params = item.EdbInfoCategoryType === 1 ? getPredictParams(item) : {};
+
         let obj = {
           data: [] as any[],
           type: chartStyle || item.ChartStyle,
@@ -411,8 +415,8 @@ export default defineComponent({
           color: item.ChartColor,
           lineWidth: (chartInfo.ChartType === 6 && item.ChartStyle === 'spline') ? Number(item.ChartWidth) : 0,
           fillColor: (chartInfo.ChartType === 3 || (chartInfo.ChartType === 6 && item.ChartStyle === 'areaspline')) ? item.ChartColor : undefined,
-          zIndex: (chartInfo.ChartType === 6 && item.ChartStyle === 'spline') ? 1 : 0 //防止组合图曲线被遮住
-          
+          zIndex: (chartInfo.ChartType === 6 && item.ChartStyle === 'spline') ? 1 : 0, //防止组合图曲线被遮住
+          ...predict_params
         };
         item.DataList = item.DataList || []
         for (let i of item.DataList) {
@@ -476,11 +480,15 @@ export default defineComponent({
       /* 公历数据处理 处理数据列 y轴 */
       if (state.chartInfo.Calendar === '公历')
         for (let j of chartData.DataList) {
+          //预测指标配置
+          let predict_params =  chartData.EdbInfoCategoryType === 1 ? getSeasonPredictParams(j.CuttingDataTimestamp) : {};
+
           let serie_item = {
             data: [] as any[],
             type: chartData.ChartStyle,
             yAxis: 0,
             name: j.Year,
+            ...predict_params
           };
           const data_array = _.cloneDeep(j.DataList);
           data_array &&
@@ -504,7 +512,7 @@ export default defineComponent({
               x: -5,
             },
             title: {
-               text:language.value=='ch'?`${chartData.Unit}`:textEn,
+              text:language.value=='ch'?`${chartData.Unit}`:textEn,
               // text: null,
               align: 'high',
               rotation: 0,
@@ -528,11 +536,15 @@ export default defineComponent({
           : [];
       if (state.chartInfo.Calendar === '农历')
         for (let j of filterArr) {
+           //预测指标配置
+          let predict_params =  chartData.EdbInfoCategoryType === 1 ? getSeasonPredictParams(j.CuttingDataTimestamp) : {};
+
           let serie_item = {
             data: [] as any[],
             type: chartData.ChartStyle,
             yAxis: 0,
             name: j.Year,
+            ...predict_params
           };
           const data_array = _.cloneDeep(j.Items);
           data_array &&
@@ -814,6 +826,33 @@ export default defineComponent({
       return (axis_tag || order_tag || edb_tag) ? `(${axis_tag}${order_tag}${edb_tag})` : ''
     }
 
+     /* 预测配置 分区 */
+    const getPredictParams = ({LatestDate,PredictChartColor}: IDataProps) => {
+      return {
+        zoneAxis: 'x',
+        zones: [{
+          value: new Date(LatestDate).getTime()+1
+        }, {
+          dashStyle: 'ShortDot',
+          color: PredictChartColor
+        }]
+      }
+    }
+    
+    /* 季节图预测数据 年份=分割点年份做分割 年份>分割点年份全为预测 */
+    const getSeasonPredictParams = (timestamp: number) => {
+      return timestamp
+        ? {
+            zoneAxis: 'x',
+            zones: [{
+              value: new Date(timestamp).getTime()+1
+            }, {
+              dashStyle: 'ShortDot',
+            }]
+          }
+        : {}
+    }
+
     /* 复制标题 */
     const copyText = () => {
       const { chartInfo } = state;