Browse Source

兼容预测指标

Karsa 2 years ago
parent
commit
4d5c73e3c7
1 changed files with 47 additions and 18 deletions
  1. 47 18
      src/views/hzyb/chart/Detail.vue

+ 47 - 18
src/views/hzyb/chart/Detail.vue

@@ -344,6 +344,9 @@ const setSplineOpt=(data)=>{
         //处理数据列name
         let temName= setDyncmicSerieName(item,dynamic_arr)  
 
+        //预测指标配置
+        let predict_params = item.EdbInfoCategoryType === 1 ? getPredictParams(item) : {};
+
         let seriesItemObj={
             data:[],
             dataGrouping:{
@@ -356,7 +359,8 @@ const setSplineOpt=(data)=>{
             lineWidth: Number(item.ChartWidth),
             visible:true,
             LatestDate:item.LatestDate,
-            LatestValue:item.LatestValue
+            LatestValue:item.LatestValue,
+            ...predict_params
         }
         item.DataList = item.DataList || [];
         for (let i of item.DataList) {
@@ -372,9 +376,6 @@ const setSplineOpt=(data)=>{
             temYRightArr.push(item)
         }
 
-        //轴数值的最大长度 用于计算单位标题相对与轴的偏移计算 没啥卵用需求如此 只为了显示美观 无逻辑用处
-        let MaxlabelLen = getLabelMaxLen(item.DataList) + item.Unit.length
-
         let yItem={
             ...basicYAxis,
             IsAxis:item.IsAxis,
@@ -541,6 +542,9 @@ const setStackOrCombinChart = data => {
         //处理数据列name
         let temName= setDyncmicSerieName(item,dynamic_arr)  
 
+        //预测指标配置
+        let predict_params = item.EdbInfoCategoryType === 1 ? getPredictParams(item) : {};
+
         let seriesItemObj={
             data:[],
             dataGrouping:{
@@ -554,7 +558,8 @@ const setStackOrCombinChart = data => {
             fillColor: (resData.value.ChartInfo.ChartType === 3 || (resData.value.ChartInfo.ChartType === 6 && item.ChartStyle === 'areaspline')) ? item.ChartColor : undefined,
             visible:true,
             LatestDate:item.LatestDate,
-            LatestValue:item.LatestValue
+            LatestValue:item.LatestValue,
+            ...predict_params
         }
         item.DataList = item.DataList || [];
         for (let i of item.DataList) {
@@ -570,9 +575,6 @@ const setStackOrCombinChart = data => {
             temYRightArr.push(item)
         }
 
-        //轴数值的最大长度 用于计算单位标题相对与轴的偏移计算 没啥卵用需求如此 只为了显示美观 无逻辑用处
-        let MaxlabelLen = getLabelMaxLen(item.DataList) + item.Unit.length
-
         let yItem={
             ...basicYAxis,
             IsAxis:item.IsAxis,
@@ -704,14 +706,6 @@ const setDyncmicSerieName = (item,dynamic_arr) => {
     return temName
 }
 
-/* 获取轴数值的最大长度  通过真实数据推测而已 也不准确 */
-const getLabelMaxLen = (data)=> {
-    let value_arr = data.map(_ => String(Math.abs(_.Value)));
-    let max_len_value = value_arr.reduce((a,b)=> (a.length > b.length ? a : b))
-    let num =  Number(max_len_value) > 1 ?  String(parseInt(Number(max_len_value))) : max_len_value
-    return num.length
-}
-
 /* 指标顺序调整  IsAxis: 0右轴 1左轴 2右2*/
 const changeEdbOrder = (data) => {
     // 左轴指标
@@ -736,6 +730,9 @@ const setSeasonOpt=(data)=>{
     // 公历
     if(calendarType.value==='公历'){
         data.DataList.forEach((item,index)=>{
+             //预测指标配置
+            let predict_params =  data.EdbInfoCategoryType === 1 ? getSeasonPredictParams(item.CuttingDataTimestamp) : {};
+
             let seriesItem={
                 data:[],
                 dataGrouping:{
@@ -745,7 +742,8 @@ const setSeasonOpt=(data)=>{
                 yAxis:index,
                 name:item.Year,
                 color:colorsArr.slice(-data.DataList.length)[index],                
-                visible:true
+                visible:true,
+                ...predict_params
             }
             item.DataList=item.DataList||[]
             for(let i of item.DataList){
@@ -799,6 +797,9 @@ const setSeasonOpt=(data)=>{
         let filterArr=data.DataList.List&&data.DataList.List.slice(1,data.DataList.List.length)||[]
         console.log('aaa',filterArr);
         filterArr.forEach((item,index)=>{
+             //预测指标配置
+            let predict_params =  data.EdbInfoCategoryType === 1 ? getSeasonPredictParams(item.CuttingDataTimestamp) : {};
+
             let seriesItem={
                 data:[],
                 dataGrouping:{
@@ -808,7 +809,8 @@ const setSeasonOpt=(data)=>{
                 yAxis:index,
                 name:item.Year,
                 color:colorsArr.slice(-filterArr.length)[index],         
-                visible:true
+                visible:true,
+                ...predict_params
             }
             let temarr=item.Items||[]
             for(let i of temarr){
@@ -941,6 +943,33 @@ const setSeasonOpt=(data)=>{
 
 }
 
+/* 预测配置 分区 */
+const getPredictParams = ({LatestDate,PredictChartColor}) => {
+    return {
+    zoneAxis: 'x',
+    zones: [{
+        value: new Date(LatestDate).getTime()+1
+    }, {
+        dashStyle: 'ShortDot',
+        color: PredictChartColor
+    }]
+    }
+}
+
+/* 季节图预测数据 年份=分割点年份做分割 年份>分割点年份全为预测 */
+const getSeasonPredictParams = (timestamp) => {
+    return timestamp
+    ? {
+        zoneAxis: 'x',
+        zones: [{
+            value: new Date(timestamp).getTime()+1
+        }, {
+            dashStyle: 'ShortDot',
+        }]
+        }
+    : {}
+}
+
 /* 散点图 第一个指标值为x轴 第二个指标为y轴*/
 const setScatterOptions = (dataList) => {
     const { ChartInfo } = resData.value;