|
@@ -119,25 +119,6 @@ export default defineComponent({
|
|
|
window.open(window.location.href,'_blank');
|
|
|
}
|
|
|
|
|
|
- /* 处理图表来源 只限第三方 */
|
|
|
- const dealSourceHandle = (): void => {
|
|
|
-
|
|
|
- // 取出第三方来源
|
|
|
- const arr = state.dataList.filter(item => item.EdbType === 1 && item.Source!== 9).map(item => ({
|
|
|
- key: item.Source,
|
|
|
- name: item.SourceName,
|
|
|
- })
|
|
|
- );
|
|
|
-
|
|
|
- let res_arr = arr.length ? _.uniqBy(arr,'key') : [];
|
|
|
-
|
|
|
- let str = '';
|
|
|
- res_arr.forEach((item: any) => {
|
|
|
- str += `${item.name}, `
|
|
|
- })
|
|
|
- state.sourceName = str;
|
|
|
- }
|
|
|
-
|
|
|
/* 获取图表数据信息 */
|
|
|
const getChartInfo = async (type='') => {
|
|
|
|
|
@@ -177,6 +158,7 @@ export default defineComponent({
|
|
|
7: initStatisticChartData,
|
|
|
8: initStatisticChartData,
|
|
|
9: initStatisticChartData,
|
|
|
+ 10: initCrossVarietyChartData
|
|
|
}
|
|
|
sourceTypeMap[Data.ChartInfo.Source] && sourceTypeMap[Data.ChartInfo.Source](Data);
|
|
|
|
|
@@ -562,12 +544,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';
|
|
|
}
|
|
@@ -1618,7 +1718,10 @@ export default defineComponent({
|
|
|
res=await ChartApi.refreshCommordityChart({UniqueCode: state.chartInfo.UniqueCode});
|
|
|
}else if([3,4].includes(state.chartInfo.Source)){
|
|
|
res=await ChartApi.refreshRelevanceChart({UniqueCode: state.chartInfo.UniqueCode});
|
|
|
+ }else if(state.chartInfo.Source===10) {
|
|
|
+ res = await ChartApi.refreshCrossVarietyChart({UniqueCode: state.chartInfo.UniqueCode})
|
|
|
}
|
|
|
+
|
|
|
loading.value = false;
|
|
|
res.Ret === 200 && getChartInfo('refresh');
|
|
|
},400)
|