Browse Source

Merge branch 'master' into yx_1.0

bding 1 year ago
parent
commit
cb180df332
3 changed files with 137 additions and 51 deletions
  1. 5 8
      src/views/cygx/dlg.vue
  2. 21 3
      src/views/cygx/internalDetials.vue
  3. 111 40
      src/views/hzyb/chart/Detail.vue

+ 5 - 8
src/views/cygx/dlg.vue

@@ -3,14 +3,7 @@
     <div class="text">
       <h1>免责声明</h1>
       <template v-if="type === '产品内测'">
-        <p>1、本报告仅供弘则弥道(上海)投资咨询有限公司正式签约的机构客户使用,不会仅因接收人/接受机构收到本报告而将其视为客户。</p>
-        <p>
-          2、本报告根据国际和行业通行的准则,以合法渠道获得这些信息,尽可能保证可靠、准确和完整,但并不保证报告所述信息的准确性和完整性,也不保证本报告所包含的信息或建议在本报告发出后不会发生任何变更。本报告中所提供的信息仅供参考。
-        </p>
-        <p>
-          3、报告中的内容不对投资者做出的最终操作建议做任何的担保,也没有任何形式的分享投资收益或者分担投资损失的书面或口头承诺。不作为客户在投资、法律、会计或税务等方面的最终操作建议,也不作为道义的、责任的和法律的依据或者凭证,无论是否已经明示或者暗示。
-        </p>
-        <p>4、在任何情况下,本公司不对客户/接受人/接受机构因使用报告中内容所引致的一切损失负责任,客户/接受人/接受机构需自行承担全部风险。</p>
+        <div v-html="disclaimers"></div>
       </template>
       <p v-else>
         本文为用户投稿,用户在平台中发表的所有资料、言论等仅代表个人观点,与本平台立场无关,不对您构成任何投资建议。本平台对文中陈述、观点判断保持中立,不对所包含内容及数据的真实性、准确性、可靠性或完整性提供任何明示或暗示的保证。请读者仅作参考,并请自行承担全部责任。
@@ -35,6 +28,10 @@ const props = defineProps({
     type: String,
     default: "",
   },
+  disclaimers: {
+    type: String,
+    default: "",
+  },
 });
 
 const emit = defineEmits(["hideDlg"]);

+ 21 - 3
src/views/cygx/internalDetials.vue

@@ -19,6 +19,7 @@ const reportId = ref(0);
 
 const isBinding = ref(true);
 
+const disclaimers = ref("");
 // 获取数据
 const reportSelectionDetail = async () => {
   const res = await inrernalApi.getProductInteriorDetail({
@@ -27,6 +28,7 @@ const reportSelectionDetail = async () => {
   if (res.Ret === 200) {
     reportDetail.value = res.Data.Detail;
     document.title = reportDetail.value.ColumnName;
+    disclaimers.value = res.Data.Disclaimers;
   }
 };
 
@@ -144,19 +146,23 @@ onMounted(async () => {
       <span>{{ reportDetail.Department }}</span>
       <span>{{ reportDetail.PublishTime }}</span>
     </div>
-    <div class="content-statement">
+    <!-- <div class="content-statement">
       <span>注:请务必阅读</span>
       <span class="statement" @click="showTips = true">免责声明 </span>
-    </div>
+    </div> -->
     <div id="report-content" class="content-abstract">摘要:{{ reportDetail.Abstract }}</div>
     <template v-if="isBinding">
       <div v-html="reportDetail.Body"></div>
+      <div class="statement-content-box">
+        <p>免责声明</p>
+        本报告仅供弘则弥道(上海)投资咨询有限公司正式签约的机构客户使用,不会因接收人/接收机构收到本报告而将其视为客户。本报告根据国际和行业通行的准则,以合法渠道获得这些信息,尽可能保证可靠、准确和完整,但并不保证报告所述信息的准确性和完整性,也不保证本报告所包含的信息或建议在本报告发出后不会发生任何变更。本报告中所提供的信息仅供参考。报告中的内容不对投资者做出的最终操作建议做任何的担保,也没有任何形式的分享投资收益或者分担投资损失的书面或口头承诺。不作为客户在投资、法律、会计或税务等方面的最终操作建议,也不作为道义的、责任的和法律的依据或者凭证,无论是否已经明示或者暗示。在任何情况下,本公司不对客户/接收人/接收机构因使用报告中内容所引致的一切损失负责任,客户/接收人/接收机构需自行承担全部风险。
+      </div>
     </template>
     <template v-else>
       <div v-if="reportDetail.Body" v-html="reportDetail.Body.slice(0, 200)"></div>
       <div class="please-login" @click="pleaseGoLogin">请登录后查看更多内容</div>
     </template>
-    <dlg :showTips="showTips" type="产品内测" @hideDlg="showTips = false" />
+    <dlg :showTips="showTips" type="产品内测" :disclaimers="disclaimers" @hideDlg="showTips = false" />
     <van-dialog v-model:show="showDlg" closeOnClickOverlay :show-confirm-button="false" @cancel="onClickHide">
       <view class="content-dialog">
         <div class="close">
@@ -278,5 +284,17 @@ onMounted(async () => {
       }
     }
   }
+  .statement-content-box {
+    width: calc(100% + 100px);
+    margin-left: -50px;
+    padding: 40px 50px 50px;
+    color: #666;
+    background-color: #f3f5f9;
+    p {
+      font-weight: 500;
+      font-size: 34px;
+      line-height: 48px;
+    }
+  }
 }
 </style>

+ 111 - 40
src/views/hzyb/chart/Detail.vue

@@ -193,7 +193,7 @@ const handleConfirmDate=()=>{
 
 const actionSheetShow=ref(false)
 const actions=computed(()=>{
-    return canSave.value&&![3,4,6,7,8,9].includes(chartSource)?[{ name: '刷新' },{ name: '保存' },{ name: '生成海报' }]:
+    return canSave.value&&[1,2,5].includes(chartSource)?[{ name: '刷新' },{ name: '保存' },{ name: '生成海报' }]:
                             [{ name: '刷新' },{ name: '生成海报' }]
 })
 const onActionSelect=(action,index)=>{
@@ -319,10 +319,8 @@ const getChartInfo=async (type)=>{
     // resData.value=null
     loading.value=true
 
-    //相关性图表 统计频率图
-    if([3,4,6,7,8,9].includes(chartSource)) return getRelevanceDetail();
-    //商品价格曲线调另外的接口
-    else if([2,5].includes(chartSource)) return getCommordityDetail();
+    //通用类根据code获取详情
+    if(chartSource!==1) return getCommonChartDetail();
 
     let res=null
     // 如果是从我的图库中来的
@@ -411,44 +409,17 @@ const getChartInfo=async (type)=>{
         nodata.value=true
     }
 }
-//获取商品价格曲线数据
-const getCommordityDetail = async() => {
-    const res = await apiCommonChartDetail({ChartInfoId})
-    loading.value=false
-    if(res.code===200){
-        resData.value=res.data
-        
-        relevanceChartData.value=res.data
-        initCommodityData(res.data);
 
-        // 向小程序发送分享数据
-        let postData = {
-            params:{
-                chartInfoId:ChartInfoId,
-                searchVal:decodeURIComponent(route.query.searchVal)||'',
-                chartSource,
-                MyChartId:route.query.MyChartId||'',
-                MyChartClassifyId:route.query.MyChartClassifyId||'',
-            },
-            title: res.data.ChartInfo.ChartName,
-            shareImg:res.data.ChartInfo.ChartImage
-        };
-        wx.miniProgram.postMessage({ data: postData });
-
-    }else if(res.code==403){
-        noauth.value=true
-        noAuthData.value=res.data
-    }
-
-}
-//获取相关性图表
-const getRelevanceDetail=async ()=>{
+//获取图表详情 除source:1外
+const getCommonChartDetail=async ()=>{
     const res = await apiCommonChartDetail({ChartInfoId})
     loading.value=false
     if(res.code===200){
         resData.value=res.data
-        
-        if([3].includes(res.data.ChartInfo.Source)) { //相关性
+
+        if([2,5].includes(res.data.ChartInfo.Source)) {//商品价格曲线 利润曲线
+            initCommodityData(res.data);
+        }else if([3].includes(res.data.ChartInfo.Source)) { //相关性
             relevanceChartData.value=res.data
             initRelevanceChart(res.data);
         }else if([4,6,7,8].includes(res.data.ChartInfo.Source)) { //滚动相关性 拟合方程曲线 标准差 百分比
@@ -456,7 +427,10 @@ const getRelevanceDetail=async ()=>{
         }else if(res.data.ChartInfo.Source===9) { //统计频率
             statisticFrequencyData.value = res.data.DataResp;
             setStatisticFrequency();
+        }else if(res.data.ChartInfo.Source===10) { //跨品种分析
+            initCrossVarietyChartData(res.data)
         }
+
         // 向小程序发送分享数据
         let postData = {
             params:{
@@ -1046,6 +1020,103 @@ const setStatisticFrequency = () => {
     }
 }
 
+/* 跨品种分析 */
+const crossVarietyChartData = ref({})
+const initCrossVarietyChartData = ({DataResp,ChartInfo,EdbInfoList}) => {
+    crossVarietyChartData.value = DataResp;
+
+    hasLeftAxis.value=false;
+
+    axisLimitData.leftMin=Number(DataResp.YMinValue)
+    axisLimitData.leftMax=Number(DataResp.YMaxValue)
+    axisLimitData.xMin=Number(DataResp.XMinValue)
+    axisLimitData.xMax=Number(DataResp.XMaxValue)
+
+    setCrossVarietyChart()
+}
+const setCrossVarietyChart = () => {
+    const { EdbInfoList } = resData.value;
+    
+    const { leftMin,leftMax,xMin,xMax }  = axisLimitData;
+
+    const { DataList,XName,YName } = crossVarietyChartData.value;
+
+    //y轴
+    let yAxis = {
+        ...basicYAxis,
+        title: {
+            text: YName,
+            align: 'middle',
+        },
+        opposite: false,
+        reversed: false,
+        min: Number(leftMin),
+        max: Number(leftMax),
+        tickWidth: 1,
+    }
+
+    // x轴
+    let xAxis = {
+        ...scatterXAxis,
+        title: {
+            text: XName,
+            align: 'middle',
+        },
+        min: Number(xMin),
+        max: Number(xMax),
+    }
+
+    //数据列
+    let series = [];
+    DataList.forEach(item => {
+        //数据列
+        let series_item = {
+            data: [],
+            type: 'scatter',
+            name: item.Name,
+            color: item.Color,
+            lineWidth: 0,
+            chartType: 'linear',
+            zIndex:1,
+            visible: true
+        }
+        item.CoordinatePointData.forEach(_ => {
+            series_item.data.push({x: _.X,y: _.Y,})
+        })
+        series.push(series_item);
+    })
+
+    let tooltip = {
+        formatter: function() {
+
+            let that = this;
+            let str = '';
+
+            let series_obj = DataList.find(_ => _.Name === that.series.name);
+            let ponit_obj = series_obj.CoordinatePointData.find(_ => _.X ===that.x && _.Y===that.y);
+            
+            let xEdbInfo = EdbInfoList.find(_ => _.EdbInfoId===ponit_obj.XEdbInfoId);
+            let yEdbInfo = EdbInfoList.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}`;
+
+            return str
+        }
+    }
+
+    chartData.value = {
+        title: {
+            text:''
+        },
+        series,
+        yAxis: [yAxis],
+        xAxis,
+        tooltip
+    }
+}
+
 
 
 // 路由改变 解决从搜索页返回数据不刷新问题
@@ -2163,7 +2234,7 @@ const setChartParams = () => {
 // 刷新图表
 const handleRefreshChart=async ()=>{
     let res=null 
-    if([1,6,7,8,9].includes(resData.value.ChartInfo.Source)){
+    if([1,6,7,8,9,10].includes(resData.value.ChartInfo.Source)){
         res=await apiChartRefresh({ChartInfoId:Number(ChartInfoId)})
     }else if([2,5].includes(resData.value.ChartInfo.Source)){
         res=await apiCommonChartRefresh({ChartInfoId:Number(ChartInfoId)})
@@ -2345,7 +2416,7 @@ const myChartPageChange=(type)=>{
                 <span :class="calendarType==='农历'&&'active'" @click="calendarTypeChange('农历')">农历</span>
                 <span :class="calendarType==='公历'&&'active'" @click="calendarTypeChange('公历')">公历</span>
             </div>
-            <span style="color:#E3B377;flex:1;text-align:right" @click="showLimit=true" v-if="![3,4,6,7,8,9].includes(resData.ChartInfo.Source)">上下限设置</span>
+            <span style="color:#E3B377;flex:1;text-align:right" @click="showLimit=true" v-if="[1,2,5].includes(resData.ChartInfo.Source)">上下限设置</span>
         </div>
         <div :class="['source-box',{'un-coll-sty':sourceColl,'coll-sty': !sourceColl}]">
             <span class="source-item">来源:{{resData&&resData.ChartInfo.ChartSource}}</span>