Forráskód Böngészése

Merge branch 'master' into eta1.4.1

Karsa 1 éve
szülő
commit
ad109e8a7b
2 módosított fájl, 132 hozzáadás és 3 törlés
  1. 10 1
      src/request/api.ts
  2. 122 2
      src/views/chartShow/index.vue

+ 10 - 1
src/request/api.ts

@@ -43,7 +43,16 @@ export const ChartApi = {
 	 */
 	refreshRelevanceChart: (params:IRefreshParams) => {
 		return get('/chart/correlation/refresh',params)
-	}
+	},
+
+	/**
+ * 刷新图表
+ * @param {*} params UniqueCode
+ * @returns 
+ */
+	refreshCrossVarietyChart: (params:IRefreshParams) => {
+		return get('/cross_variety/chart_info/refresh',params)
+	},
 }
 
 /* 表格模块 */

+ 122 - 2
src/views/chartShow/index.vue

@@ -222,6 +222,7 @@ export default defineComponent({
           7: initStatisticChartData,
           8: initStatisticChartData,
           9: initStatisticChartData,
+          10: initCrossVarietyChartData
         }
         sourceTypeMap[Data.ChartInfo.Source] && sourceTypeMap[Data.ChartInfo.Source](Data);
         
@@ -658,12 +659,130 @@ export default defineComponent({
     }
 
 
+    /* 跨品种分析 */
+    const crossVarietyChartData = ref<any>({})
+    const initCrossVarietyChartData = (data:{ DataResp:any,ChartInfo:any,EdbInfoList:any }) => {
+      state.dataList = data.EdbInfoList;
+      crossVarietyChartData.value = data.DataResp;
+
+      state.chartLimit.min=Number(data.DataResp.YMinValue)
+      state.chartLimit.max=Number(data.DataResp.YMaxValue)
+      state.chartLimit.x_min=Number(data.DataResp.XMinValue)
+      state.chartLimit.x_max=Number(data.DataResp.XMaxValue)
+
+      //校验英文配置是否完整
+      if(route.query.fromPage === 'en' && language.value==='en') {
+        const { XNameEn,YNameEn,DataList } = data.DataResp;
+
+        let isAllEn = true;
+        let haveOneNoEn = DataList.some(_ => !_.NameEn);
+        if(!XNameEn || !YNameEn || haveOneNoEn) isAllEn = false;
+        language.value = isAllEn ? 'en' : 'ch';
+      }
+
+      setCrossVarietyChart()
+    }
+     /* 跨品种分析 */
+    const setCrossVarietyChart = () => {
+      const { chartLimit,dataList,chartInfo } = state;
+      
+      const { min,max,x_min,x_max }  = chartLimit;
+
+      const { DataList,XName,YName,XNameEn,YNameEn } = crossVarietyChartData.value;
+
+      //y轴
+      let yAxis = {
+        ...basicYAxis,
+        title: {
+          text: language.value === 'ch' ? YName : YNameEn,
+          align: 'middle',
+        },
+        opposite: false,
+        reversed: false,
+        min: Number(min),
+        max: Number(max),
+        tickWidth: 1,
+      }
+
+      // x轴
+      let xAxis = {
+        ...scatterXAxis,
+        title: {
+          text: language.value === 'ch' ? XName : XNameEn,
+          align: 'middle',
+        },
+        min: Number(x_min),
+        max: Number(x_max),
+      }
+
+       //数据列
+      let series:any[] = [];
+      DataList.forEach(item => {
+        //数据列
+        let series_item = {
+          data: [] as any[],
+          type: 'scatter',
+          name: language.value === 'ch' ? item.Name : item.NameEn,
+          color: item.Color,
+          lineWidth: 0,
+          chartType: 'linear',
+          zIndex:1
+        }
+        item.CoordinatePointData.forEach(_ => {
+          series_item.data.push({x: _.X,y: _.Y,})
+        })
+        series.push(series_item);
+      })
+
+      let tooltip = {
+        formatter: function() {
+
+          let that:any = this;
+          let str = '';
+          if(language.value === 'ch') {
+            let series_obj = DataList.find(_ => _.Name === that.series.name);
+            let ponit_obj = series_obj.CoordinatePointData.find(_ => _.X ===that.x && _.Y===that.y);
+            
+            let xEdbInfo = dataList.find(_ => _.EdbInfoId===ponit_obj.XEdbInfoId);
+            let yEdbInfo = dataList.find(_ => _.EdbInfoId===ponit_obj.YEdbInfoId);
+  
+            str=`<b>${ that.series.name }</b>`;
+            str += `<br><span style="color:${that.color}">\u25CF</span>${xEdbInfo.EdbName}: ${that.x} ${ponit_obj.XDate}<br>`;
+            str += `<span style="color:${that.color}">\u25CF</span>${yEdbInfo.EdbName}: ${that.y} ${ponit_obj.YDate}`;
+          }else {
+            let series_obj = DataList.find(_ => _.NameEn === that.series.name);
+            let ponit_obj = series_obj.CoordinatePointData.find(_ => _.X ===that.x && _.Y===that.y);
+            
+            let xEdbInfo = dataList.find(_ => _.EdbInfoId===ponit_obj.XEdbInfoId);
+            let yEdbInfo = dataList.find(_ => _.EdbInfoId===ponit_obj.YEdbInfoId);
+  
+            str=`<b>${ that.series.name }</b>`;
+            str += `<br><span style="color:${that.color}">\u25CF</span>${xEdbInfo.EdbNameEn}: ${that.x} ${ponit_obj.XDate}<br>`;
+            str += `<span style="color:${that.color}">\u25CF</span>${yEdbInfo.EdbNameEn}: ${that.y} ${ponit_obj.YDate}`;
+          }
+
+          return str
+        }
+      }
+
+      state.options = {
+        title: {
+          text:''
+        },
+        series,
+        yAxis: [yAxis],
+        xAxis,
+        tooltip
+      }
+    }
+
+
     //处理英文研报的图表英文设置不全的情况
     const setLangFromEnReport = () => {
       //来源于英文研报
       if(route.query.fromPage !== 'en') return
       let is_name_en = state.chartInfo.ChartNameEn ? true : false;//名称是否有英文
-      let is_target_en = [2,9].includes(state.chartInfo.ChartType) ? true : state.dataList.every(_ => _.EdbNameEn);//指标是否有英文
+      let is_target_en = [2,9,10].includes(state.chartInfo.ChartType) ? true : state.dataList.every(_ => _.EdbNameEn);//指标是否有英文
       console.log(is_name_en,is_target_en)
       language.value = (is_name_en && is_target_en) ? 'en' : 'ch';
     }
@@ -1769,13 +1888,14 @@ export default defineComponent({
     const refreshChart = _.debounce(async () => {
       loading.value = true;
       let res: any=null
-      if([1,6,7,8,9].includes(state.chartInfo.Source)){
+      if([1,6,7,8,9,10].includes(state.chartInfo.Source)){
         res=await ChartApi.refreshChart({UniqueCode: state.chartInfo.UniqueCode})
       }else if([2,5].includes(state.chartInfo.Source)){
         res=await ChartApi.refreshCommordityChart({UniqueCode: state.chartInfo.UniqueCode});
       }else if([3,4].includes(state.chartInfo.Source)){
         res=await ChartApi.refreshRelevanceChart({UniqueCode: state.chartInfo.UniqueCode});
       }
+      
       loading.value = false;
       res.Ret === 200 && getChartInfo('refresh');
     },400)