|
@@ -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)
|