Browse Source

Merge branch 'eta2.1.0'

Karsa 4 months ago
parent
commit
81a351666b

+ 20 - 18
src/views/report/reportDetail.vue

@@ -14,6 +14,8 @@
             }}{{ reportInfo.CreateTime.substring(8, 10) }})</span
           >
         </p>
+        
+        <img class="logo" :src="configInfo.ReportLogo" alt="" v-if="configInfo.ReportLogo"/>
       </header>
       <div
         style="
@@ -100,6 +102,8 @@
         <div
           style="
             width: 100%;
+            max-width:1200px;
+            margin:0 auto;
             padding: 0.8rem 0.66rem 2.2rem;
             box-sizing: border-box;
             font: 0.52rem/0.8rem 'PingFang-SC-Regular';
@@ -110,7 +114,7 @@
             border-radius: 0.2rem;
           "
         >
-          <!-- <h1 style="font:0.64rem '微软雅黑'; color:#333; text-align:center; margin-bottom:0.34rem;">免责声明</h1> -->
+
           <h1
             style="
               font: 0.64rem 'PingFang-SC-Regular';
@@ -121,19 +125,7 @@
           >
             免责声明
           </h1>
-          <!-- <p>
-            1、本报告仅供弘则弥道(上海)投资咨询有限公司正式签约的机构客户使用,不会仅因接收人/接受机构收到本报告而将其视为客户。
-          </p>
-          <p>
-            2、本报告根据国际和行业通行的准则,以合法渠道获得这些信息,尽可能保证可靠、准确和完整,但并不保证报告所述信息的准确性和完整性,也不保证本报告所包含的信息或建议在本报告发出后不会发生任何变更。本报告中所提供的信息仅供参考。
-          </p>
-          <p>
-            3、报告中的内容不对投资者做出的最终操作建议做任何的担保,也没有任何形式的分享投资收益或者分担投资损失的书面或口头承诺。不作为客户在投资、法律、会计或税务等方面的最终操作建议,也不作为道义的、责任的和法律的依据或者凭证,无论是否已经明示或者暗示。
-          </p>
-          <p>
-            4、在任何情况下,本公司不对客户/接受人/接受机构因使用报告中内容所引致的一切损失负责任,客户/接受人/接受机构需自行承担全部风险。
-          </p> -->
-          <div class="disclaimer" v-html="Disclaimer"></div>
+          <div class="disclaimer" v-html="configInfo.Disclaimer"></div>
           <p
             @click="hideTips"
             style="
@@ -187,7 +179,8 @@ export default {
       page_no: 0,
       pageSize: 50, //默认初始加载50个p标签
       total_page: 0,
-      Disclaimer:''
+
+      configInfo: {}
     };
   },
   created() {
@@ -259,7 +252,7 @@ export default {
     },
     hideTips() {
       //免责声明收起
-      $("#tipsAlert").animate({ top: "-120rem" });
+      $("#tipsAlert").animate({ top: "-9999px" });
     },
     goTop() {
       document.body.scrollTop = document.documentElement.scrollTop = 0;
@@ -298,7 +291,10 @@ export default {
         // '【第'+Data.Report.Stage+'期|FICC'+'】'+Data.Report.Title+'('+Data.Report.CreateTime.substring(5,7)+Data.Report.CreateTime.substring(8,10)+')':
         //                   Data.Report.Title+'('+Data.Report.CreateTime.substring(5,7)+Data.Report.CreateTime.substring(8,10)+')'
         this.reportInfo = Data.Report;
-        this.Disclaimer = Data.Disclaimer||'';
+        this.configInfo = {
+          ...Data,
+          Report:null
+        };
         this.isshow = true;
 
         this.splitContentHandle();
@@ -446,11 +442,17 @@ export default {
     box-sizing: border-box;
     text-align: left;
     background: #fff;
+    display: flex;
+    justify-content: space-between;
     p {
       font-size: 0.84rem;
       font-weight: 600;
       color: #000;
     }
+    .logo {
+      flex-shrink: 0;
+      height: fit-content;
+    }
   }
   #playcon {
     padding: 0 0.6rem;
@@ -530,7 +532,7 @@ export default {
     padding: 15% 1rem;
     box-sizing: border-box;
     position: fixed;
-    top: -120rem;
+    top: -9999px;
     left: 0;
     background: rgba(0, 0, 0, 0.6);
     z-index: 200;

+ 35 - 33
src/views/report/reportDetailPdf.vue

@@ -14,6 +14,8 @@
             }}{{ reportInfo.CreateTime.substring(8, 10) }})</span
           >
         </p>
+
+        <img class="logo" :src="configInfo.ReportLogo" alt="" v-if="configInfo.ReportLogo"/>
       </header>
       <div
         style="
@@ -28,41 +30,10 @@
         <span style="float: right">{{ reportInfo.PublishTime||reportInfo.PrePublishTime }}</span>
       </div>
 
-      <div id="playcon" v-if="reportInfo.VideoUrl">
-        <div>
-          <img
-            src="~@/assets/img/pauseImg.png"
-            style="width: 2rem; height: 2rem; float: left; margin-right: 0.4rem"
-          />
-          <p
-            style="
-              font-size: 0.64rem;
-              line-height: 1rem;
-              color: #333;
-              white-space: nowrap;
-              overflow: hidden;
-              text-overflow: ellipsis;
-            "
-          >
-            {{ reportInfo.VideoName }}
-          </p>
-          <p style="font-size: 0.56rem; line-height: 1rem; color: #878787">
-            {{ parseInt(reportInfo.VideoPlaySeconds / 60) }}分{{
-              parseInt(reportInfo.VideoPlaySeconds % 60)
-            }}秒
-          </p>
-        </div>
-      </div>
 
-      <div id="abstract">
+      <div id="abstract" v-if="reportInfo.Abstract">
         <div class="abstract_cont">
-          <div v-if="reportInfo.Abstract">摘要:{{ reportInfo.Abstract }}</div>
-          <div style="color: #666;">
-            *注:请务必阅读&nbsp;<strong
-              style="font-weight: normal; cursor: pointer; color: #3e8ce6"
-              >免责声明</strong
-            >
-          </div>
+          <div>摘要:{{ reportInfo.Abstract }}</div>
         </div>
       </div>
       <div style="padding: 0.6rem; box-sizing: border-box; overflow: hidden">
@@ -79,6 +50,11 @@
         <div id="resetcss" style="overflow:hidden;" v-else>
           <div v-html="reportInfo.Content"></div>
         </div>
+
+        <div class="disclaimer" v-if="configInfo.Disclaimer">
+          <h3>免责声明:</h3>
+          <div v-html="configInfo.Disclaimer"></div>
+        </div>
     </div>
     </div>
   </div>
@@ -96,6 +72,8 @@ export default {
       id: this.$route.query.code || '',
       isshow: false,
       reportInfo: {},
+
+      configInfo: {}
     };
   },
 
@@ -140,6 +118,11 @@ export default {
       const { Data,Ret  } = await reportDetail({ ReportCode: this.id });
         if (Ret !== 200) return
         this.reportInfo = Data.Report;
+        this.configInfo = {
+          ...Data,
+          Report:null
+        };
+
         this.reportInfo.Content=this.setReportContent(this.reportInfo.Content)
         this.isshow = true;
         //水印
@@ -242,11 +225,17 @@ export default {
     box-sizing: border-box;
     text-align: left;
     background: #fff;
+    display: flex;
+    justify-content: space-between;
     p {
       font-size: 0.84rem;
       font-weight: 600;
       color: #000;
     }
+    .logo {
+      flex-shrink: 0;
+      height: fit-content;
+    }
   }
   #playcon {
     padding: 0 0.6rem;
@@ -326,6 +315,9 @@ export default {
 			margin-bottom: 20px;
 			padding-bottom: 20px;
 			border-bottom: 1px dashed #ccc;
+      &:last-child {
+        border-bottom: none;
+      }
 			.type{
 				font-size: 15px;
 				color: #fff;
@@ -340,6 +332,16 @@ export default {
 			}
 		}
   }
+
+  .disclaimer{
+      margin-top: 30px;
+      font-size: 0.58rem;
+      padding: 30px 0;
+      border-top: 1px solid #ccc;
+      h3 {
+        margin-bottom: 20px;
+      }
+  }
 }
 // 不禁止页面打印,不然转pdf会出现空白页
 @media print{

+ 20 - 8
src/views/reportEn/detail.vue

@@ -14,6 +14,8 @@
             }}{{ reportInfo.CreateTime.substring(8, 10) }})</span
           >
         </p>
+
+        <img class="logo" :src="configInfo.ReportLogo" alt="" v-if="configInfo.ReportLogo"/>
       </header>
       <div
         style="
@@ -30,7 +32,7 @@
 
       <div id="abstract">
         <div class="abstract_cont">
-          <div>Abstract:{{ reportInfo.Abstract }}</div>
+          <div v-if="reportInfo.Abstract">Abstract:{{ reportInfo.Abstract }}</div>
           <div style="color: #666; margintop: 1.2rem">
             *Note: Please be sure to read the <strong
               style="fontweight: normal; cursor: pointer; color: #3e8ce6"
@@ -56,6 +58,8 @@
         <div
           style="
             width: 100%;
+            max-width:1200px;
+            margin:0 auto;
             padding: 0.8rem 0.66rem 2.2rem;
             box-sizing: border-box;
             font: 0.52rem/0.8rem 'segoe';
@@ -66,7 +70,6 @@
             border-radius: 0.2rem;
           "
         >
-          <!-- <h1 style="font:0.64rem '微软雅黑'; color:#333; text-align:center; margin-bottom:0.34rem;">免责声明</h1> -->
           <h1
             style="
               font: 0.64rem 'segoe';
@@ -77,11 +80,7 @@
           >
             Disclaimers 
           </h1>
-          <div style="max-height:50vh;overflow:auto">
-            <p style="margin-bottom:10px">1、This report is to be used solely by the clients of Horizon Insights,and will not be regarded as a client by the Recipient/Receiving institution because of the receipt of this report.</p>
-            <p style="margin-bottom:10px">2、This report is based on international and industry standards, and the information is obtained from legal sources to ensure that it is as reliable, accurate and complete as possible, but does not guarantee the accuracy and completeness of the information described in the report, nor does it guarantee that the information or recommendations contained in this report will not change in any way after the issuance of this report. The information provided in this report is for informational purposes only.</p>
-            <p style="margin-bottom:10px">3、The contents of the report do not make any guarantee for the final operation recommendations made by investors, nor do they have any form of written or oral commitment to share investment returns or investment losses. It is not intended as the client's final operational advice in terms of investment, legal, accounting or taxation, nor as a moral, responsible and legal basis or evidence, whether or not it has been expressed or implied.</p>
-            <p style="margin-bottom:10px">4、In no event shall the Company be liable for any loss or damage incurred by the Client/Recipient/ Receiving institution as a result of the use of the contents of the Report, and the Client/Recipient/ Receiving institution shall bear the entire risk.</p>
+          <div style="max-height:50vh;overflow:auto" v-html="configInfo.DisclaimerEn">
           </div>
           <p
             @click="hideTips"
@@ -131,6 +130,8 @@ export default {
       page_no: 0,
       pageSize: 50, //默认初始加载50个p标签
       total_page: 0,
+
+      configInfo: {}
     };
   },
   created() {
@@ -222,6 +223,11 @@ export default {
                           Data.Report.Title+'('+Data.Report.CreateTime.substring(5,7)+Data.Report.CreateTime.substring(8,10)+')'
 
         this.reportInfo = Data.Report;
+        this.configInfo = {
+          ...Data,
+          Report:null
+        };
+
         this.isshow = true;
 
         this.splitContentHandle(this.reportInfo.Content);
@@ -359,11 +365,17 @@ export default {
     box-sizing: border-box;
     text-align: left;
     background: #fff;
+    display: flex;
+    justify-content: space-between;
     p {
       font-size: 0.84rem;
       font-weight: 600;
       color: #000;
     }
+    .logo {
+      flex-shrink: 0;
+      height: fit-content;
+    }
   }
   #playcon {
     padding: 0 0.6rem;
@@ -388,7 +400,7 @@ export default {
     font-family: 'segoe';
     .abstract_cont {
       border-left: 0.2rem solid #007aff;
-      padding: 0.14rem 0.4rem;
+      padding: 0 0.4rem;
       box-sizing: border-box;
       color: #333;
     }

+ 30 - 10
src/views/reportEn/detailPdf.vue

@@ -14,6 +14,8 @@
             }}{{ reportInfo.CreateTime.substring(8, 10) }})</span
           >
         </p>
+
+        <img class="logo" :src="configInfo.ReportLogo" alt="" v-if="configInfo.ReportLogo"/>
       </header>
       <div
         style="
@@ -28,15 +30,9 @@
         <span style="float: right">{{ reportInfo.PublishTime || reportInfo.PrePublishTime }}</span>
       </div>
 
-      <div id="abstract">
+      <div id="abstract" v-if="reportInfo.Abstract">
         <div class="abstract_cont">
           <div>Abstract:{{ reportInfo.Abstract }}</div>
-          <div style="color: #666;">
-            *Note: Please be sure to read the <strong
-              style="font-weight: normal; cursor: pointer; color: #3e8ce6"
-              >disclaimer</strong
-            >
-          </div>
         </div>
       </div>
       <div style="padding: 0.6rem; box-sizing: border-box; overflow: hidden">
@@ -46,6 +42,11 @@
         </div>
         <div id="resetcss" style="overflow:hidden;">
         <div v-html="reportInfo.Content"></div>
+
+        <div class="disclaimer"  v-if="configInfo.DisclaimerEn">
+          <h3>Disclaimer:</h3>
+          <div  v-html="configInfo.DisclaimerEn"></div>
+        </div>
       </div>
     </div>
     </div>
@@ -64,7 +65,9 @@ export default {
     return {
       id: this.$route.query.code || '',
       isshow: false,
-      reportInfo: {}
+      reportInfo: {},
+
+      configInfo: {}
     };
   },
   mounted() {
@@ -126,8 +129,13 @@ export default {
       const { Data,Ret  } = await reportEnDetail({ ReportCode: this.id,ShareEmail:Number(this.$route.query.ShareEmail)||0 });
         if (Ret !== 200) return
         this.reportInfo = Data.Report;
+        this.configInfo = {
+          ...Data,
+          Report:null
+        };
         this.reportInfo.Content=this.setReportContent(this.reportInfo.Content)
-        this.isshow = true;    
+        this.isshow = true;
+
         localStorage.setItem('waterMarkStr',this.$route.query.flag||'')
         const temwaterMarkStr=this.$route.query.flag||localStorage.getItem('waterMarkStr')
         const waterMarkStr=decodeURIComponent(Base64.decode(temwaterMarkStr))
@@ -226,11 +234,17 @@ export default {
     box-sizing: border-box;
     text-align: left;
     background: #fff;
+    display: flex;
+    justify-content: space-between;
     p {
       font-size: 0.84rem;
       font-weight: 600;
       color: #000;
     }
+    .logo {
+      flex-shrink: 0;
+      height: fit-content;
+    }
   }
   #abstract {
     padding: 0.6rem;
@@ -241,7 +255,7 @@ export default {
     font-family: 'segoe';
     .abstract_cont {
       border-left: 0.2rem solid #007aff;
-      padding: 0.14rem 0.4rem;
+      padding: 0 0.4rem;
       box-sizing: border-box;
       color: #333;
     }
@@ -292,6 +306,12 @@ export default {
       white-space: pre-wrap;
     }
   }
+
+  .disclaimer{
+      font-size: 0.58rem;
+      padding: 30px 0;
+      border-top: 1px solid #ccc;
+  }
 }
 </style>
 

+ 126 - 49
src/views/smartReport/detail.vue

@@ -2,13 +2,7 @@
 <template>
   <div class="wrapper" ref="wrapper">
     <div id="reportdtl" v-if="isshow" :style="{backgroundColor:reportInfo.CanvasColor}">
-      <!-- <div class="top-header">
-          <div class="title">{{reportInfo.Title}}</div>
-          <div class="flex">
-              <span>{{reportInfo.Author}}</span>
-              <span>{{reportInfo.PublishTime}}</span>
-          </div>
-      </div> -->
+
       <div>
         <div class="html-head-img-box" v-if="reportInfo && !!reportInfo.NeedSplice && reportInfo.HeadImg">
           <img :src="reportInfo.HeadImg" alt="" style="display:block;width:100%">
@@ -20,14 +14,64 @@
           </div>
         </div>
         <div class="no-layout-img-box" v-if="reportInfo && !!reportInfo.NeedSplice && (!reportInfo.HeadImg) && (!reportInfo.EndImg)">
-          <header>{{reportInfo.Title}}</header>
+          <header>
+            <span>{{reportInfo.Title}}</span>
+
+            <img class="logo" :src="configInfo.ReportLogo" alt="" v-if="configInfo.ReportLogo"/>
+          </header>
           <div style=" box-sizing:border-box; color:#666; font-size:24px; overflow:hidden;">
             <span>{{ reportInfo.Author}}</span>
             <span style="float:right;" v-if="[2,6].includes(reportInfo.State)">{{reportInfo.PublishTime}}</span>
           </div>
         </div>
+
+        <div id="playcon" v-if="reportInfo.VideoUrl">
+          <div>
+            <img
+              @click.stop="$refs.audioRef.playaudiopause()"
+              v-if="
+                $store.state.isplaying &&
+                reportInfo.VideoUrl ==
+                  $store.state.audiolist[$store.state.playcount].video_url
+              "
+              src="~@/assets/img/playImg.png"
+              style="width: 2rem; height: 2rem; float: left; margin-right: 0.4rem"
+            />
+            <img
+              @click.stop="playaudio(reportInfo)"
+              v-else
+              src="~@/assets/img/pauseImg.png"
+              style="width: 2rem; height: 2rem; float: left; margin-right: 0.4rem"
+            />
+            <p
+              style="
+                font-size: 0.64rem;
+                line-height: 1rem;
+                color: #333;
+                white-space: nowrap;
+                overflow: hidden;
+                text-overflow: ellipsis;
+              "
+            >
+              {{ reportInfo.VideoName }}
+            </p>
+            <p style="font-size: 0.56rem; line-height: 1rem; color: #878787">
+              {{ parseInt(reportInfo.VideoPlaySeconds / 60) }}分{{
+                parseInt(reportInfo.VideoPlaySeconds % 60)
+              }}秒
+            </p>
+          </div>
+        </div>
+
         <div class="abstract" v-if="reportInfo && !!reportInfo.NeedSplice">
-          <div v-if="reportInfo.Abstract">摘要: <span v-html="reportInfo.Abstract"></span></div> 
+          <div v-if="reportInfo.Abstract">摘要:{{ reportInfo.Abstract }}</div>
+          <div style="color: #666; margintop: 1.2rem">
+            *注:请务必阅读&nbsp;<strong
+              style="fontweight: normal; cursor: pointer; color: #3e8ce6"
+              @click="showTips"
+              >免责声明</strong
+            >
+          </div>
         </div>
 
         <!-- 章节报告 -->
@@ -55,6 +99,8 @@
           <div
             style="
               width: 100%;
+              max-width:1200px;
+              margin:0 auto;
               padding: 0.8rem 0.66rem 2.2rem;
               box-sizing: border-box;
               font: 0.52rem/0.8rem 'PingFang-SC-Regular';
@@ -65,21 +111,9 @@
               border-radius: 0.2rem;
             "
           >
-            <!-- <h1 style="font:0.64rem '微软雅黑'; color:#333; text-align:center; margin-bottom:0.34rem;">免责声明</h1> -->
             <h1 style="font: 0.64rem 'PingFang-SC-Regular'; color: #333; text-align: center; margin-bottom: 0.34rem">免责声明</h1>
-            <!-- <p>
-            1、本报告仅供弘则弥道(上海)投资咨询有限公司正式签约的机构客户使用,不会仅因接收人/接受机构收到本报告而将其视为客户。
-          </p>
-          <p>
-            2、本报告根据国际和行业通行的准则,以合法渠道获得这些信息,尽可能保证可靠、准确和完整,但并不保证报告所述信息的准确性和完整性,也不保证本报告所包含的信息或建议在本报告发出后不会发生任何变更。本报告中所提供的信息仅供参考。
-          </p>
-          <p>
-            3、报告中的内容不对投资者做出的最终操作建议做任何的担保,也没有任何形式的分享投资收益或者分担投资损失的书面或口头承诺。不作为客户在投资、法律、会计或税务等方面的最终操作建议,也不作为道义的、责任的和法律的依据或者凭证,无论是否已经明示或者暗示。
-          </p>
-          <p>
-            4、在任何情况下,本公司不对客户/接受人/接受机构因使用报告中内容所引致的一切损失负责任,客户/接受人/接受机构需自行承担全部风险。
-          </p> -->
-            <div class="disclaimer" v-html="Disclaimer"></div>
+            
+            <div class="disclaimer" v-html="configInfo.Disclaimer"></div>
             <p @click="hideTips" style="position: absolute; bottom: 0; left: 0; right: 0; font-size: 0.56rem; line-height: 1.6rem; color: #2680eb; text-align: center; border-top: 1px solid #eaeaea">
               知道了
             </p>
@@ -88,8 +122,11 @@
       </div>
     </div>
     <div style="width: 30px; position: fixed; right: 0.6rem; bottom: 2.4rem; z-index: 100">
-          <img src="~@/assets/img/returntop.png" @click="goTop" style="width: 30px; margin-bottom: 0.2rem" />
-        </div>
+      <img src="~@/assets/img/returntop.png" @click="goTop" style="width: 30px; margin-bottom: 0.2rem" />
+    </div>
+
+
+    <AudioPlay ref="audioRef"/>
   </div>
 </template>
 
@@ -97,8 +134,9 @@
 import { getShareInfo,reportDetail } from "@/api/api.js";
 import _ from "lodash";
 import {wxShare,injectSdk} from "../utils/wxShare.js";
-
+import AudioPlay from '../report/audioPlay.vue';
 export default {
+  components: { AudioPlay },
   data() {
     return {
       id: this.$route.query.code || "",
@@ -114,14 +152,15 @@ export default {
       page_no: 0,
       pageSize: 20, //默认初始加载50个p标签
       total_page: 0,
-      Disclaimer: "",
       headImgStyle:null,//版头style
       endImgStyle:null,//版尾style
       layoutBaseInfo:{
           研报标题:'',
           研报作者:'',
           创建时间:''
-      }
+      },
+
+      configInfo: {}
     };
   },
   created() {
@@ -159,13 +198,36 @@ export default {
       }
     },
 
+    playaudio(item) {
+      //子组件先存后播
+      console.log(item);
+      if (
+        this.$store.state.audiolist.length > 0 &&
+        item.VideoUrl == this.$store.state.audiolist[0].VideoUrl
+      ) {
+        // this.$parent.playaudioplay();
+        this.$refs.audioRef.playaudioplay();
+      } else {
+        this.$refs.audioRef.setisshowaudio(
+          [
+            {
+              video_url: item.VideoUrl,
+              video_name: item.VideoName,
+              video_play_seconds: item.VideoPlaySeconds,
+            },
+          ],
+          0
+        );
+      }
+    },
+
     showTips() {
       //免责声明显示
       $("#tipsAlert").animate({ top: 0 });
     },
     hideTips() {
       //免责声明收起
-      $("#tipsAlert").animate({ top: "-120rem" });
+      $("#tipsAlert").animate({ top: "-9999px" });
     },
     goTop() {
       document.body.scrollTop = document.documentElement.scrollTop = 0;
@@ -182,6 +244,11 @@ export default {
       //   ? "【第" + Data.Report.Stage + "期|FICC" + "】" + Data.Report.Title + "(" + Data.Report.CreateTime.substring(5, 7) + Data.Report.CreateTime.substring(8, 10) + ")"
       //   : Data.Report.Title + "(" + Data.Report.CreateTime.substring(5, 7) + Data.Report.CreateTime.substring(8, 10) + ")";
       this.reportInfo = Data.Report || {};
+      this.configInfo = {
+        ...Data,
+        Report:null
+      };
+
       this.headImgStyle=this.reportInfo.HeadStyle?JSON.parse(this.reportInfo.HeadStyle):[]
       this.endImgStyle=this.reportInfo.EndStyle?JSON.parse(this.reportInfo.EndStyle):[]
       this.layoutBaseInfo['研报标题']=this.reportInfo.Title
@@ -189,7 +256,6 @@ export default {
       // 已发布已通过的报告才显示发布时间
       this.layoutBaseInfo['创建时间']=[2,6].includes(this.reportInfo.State)?this.reportInfo.PublishTime:''
       
-      this.Disclaimer = Data.Disclaimer || "";
       this.isshow = true;
       this.$nextTick(()=>{
         this.pageResize()
@@ -321,31 +387,40 @@ body{
   }
   .no-layout-img-box{
     header{
-        padding:10px 0; box-sizing:border-box; font-size:28px; font-weight:500; color:#333; background:#fff; 
+        padding:10px 0; box-sizing:border-box; font-size:28px; font-weight:500; color:#333; background:#fff;
+        display: flex;
+        justify-content: space-between;
+        .logo {
+          flex-shrink: 0;
+          height: fit-content;
+        }
     }
   }
   .abstract{
-    padding:10px 0; box-sizing:border-box; font-size:22px; line-height:36px;
+    box-sizing:border-box; font-size:22px; line-height:36px;
+    border-left: 0.2rem solid #007aff;
+    margin:0.6rem 0;
     div{
-        padding: 10px 20px;
+        padding: 5px 20px;
         box-sizing: border-box;
-        background: rgba(20, 121, 253, 0.1);
-        color: #4099ef;
+        color: #333;
         border-radius: 10px;
     }
   }
-  // table {
-  //   border-top: 1px solid #ccc;
-  //   border-left: 1px solid #ccc;
-  //   border-collapse: collapse;
-  //   th,
-  //   td {
-  //     border-right: 1px solid #ccc;
-  //     border-bottom: 1px solid #ccc;
-  //     padding: 0.1rem 0.2rem;
-  //     box-sizing: border-box;
-  //   }
-  // }
+  #playcon {
+    margin-top: 10px;
+    box-sizing: border-box;
+    background: #fff;
+    overflow: hidden;
+    > div {
+      width: 100%;
+      height: 2.96rem;
+      padding: 0.48rem 0.6rem;
+      box-sizing: border-box;
+      background: #f1f1f1;
+      border-radius: 0.2rem;
+    }
+  }
   #resetcss {
     pre {
       white-space: pre-wrap;
@@ -365,11 +440,10 @@ body{
     padding: 15% 1rem;
     box-sizing: border-box;
     position: fixed;
-    top: -120rem;
+    top: -99999px;
     left: 0;
     background: rgba(0, 0, 0, 0.6);
     z-index: 200;
-    display: none;
     .disclaimer {
       font-size: 0.58rem;
     }
@@ -380,6 +454,9 @@ body{
 			margin-bottom: 20px;
 			padding-bottom: 20px;
 			border-bottom: 1px dashed #ccc;
+      &:last-child {
+        border-bottom: none;
+      }
 			.type{
 				font-size: 15px;
 				color: #fff;

+ 43 - 8
src/views/smartReport/detailPdf.vue

@@ -13,14 +13,19 @@
           </div>
         </div>
         <div class="no-layout-img-box" v-if="reportInfo && !!reportInfo.NeedSplice && (!reportInfo.HeadImg) && (!reportInfo.EndImg)">
-          <header>{{reportInfo.Title}}</header>
+          <header>
+            <span>{{reportInfo.Title}}</span>
+
+            <img class="logo" :src="configInfo.ReportLogo" alt="" v-if="configInfo.ReportLogo"/>
+          </header>
           <div style=" box-sizing:border-box; color:#666; font-size:24px; overflow:hidden;">
             <span>{{ reportInfo.Author}}</span>
             <span style="float:right;" v-if="[2,6].includes(reportInfo.State)">{{reportInfo.PublishTime}}</span>
           </div>
         </div>
-        <div class="abstract" v-if="reportInfo && !!reportInfo.NeedSplice">
-          <div v-if="reportInfo.Abstract">摘要: <span v-html="reportInfo.Abstract"></span></div> 
+        
+        <div class="abstract" v-if="reportInfo && !!reportInfo.NeedSplice && reportInfo.Abstract"> 
+          <div v-if="reportInfo.Abstract">摘要:{{ reportInfo.Abstract }}</div>
         </div>
 
         <!-- 章节报告 -->
@@ -35,6 +40,11 @@
         </div>
         <div id="resetcss" style="overflow:hidden;" v-html="reportInfo.Content" v-else></div>
 
+        <div class="disclaimer" v-if="configInfo.Disclaimer">
+          <h3>免责声明:</h3>
+          <div v-html="configInfo.Disclaimer"></div>
+        </div>
+
         <div class="html-end-img-box" v-if="reportInfo && !!reportInfo.NeedSplice && reportInfo.EndImg">
           <img :src="reportInfo.EndImg" alt="" style="display:block;width:100%">
           <div class="head-layout-item" v-for="item in endImgStyle" :key="item.value"
@@ -67,7 +77,9 @@ export default {
           研报标题:'',
           研报作者:'',
           创建时间:''
-      }
+      },
+
+      configInfo: {}
     };
   },
   mounted() {
@@ -92,6 +104,11 @@ export default {
       if (Ret !== 200) return;
       
       this.reportInfo = Data.Report;
+      this.configInfo = {
+        ...Data,
+        Report:null
+      };
+
       this.headImgStyle=this.reportInfo.HeadStyle?JSON.parse(this.reportInfo.HeadStyle):[]
       this.endImgStyle=this.reportInfo.EndStyle?JSON.parse(this.reportInfo.EndStyle):[]
       this.layoutBaseInfo['研报标题']=this.reportInfo.Title
@@ -190,16 +207,23 @@ body{
   }
   .no-layout-img-box{
     header{
-        padding:10px 0; box-sizing:border-box; font-size:28px; font-weight:500; color:#333; background:#fff; 
+        padding:10px 0; box-sizing:border-box; font-size:28px; font-weight:500; color:#333; background:#fff;
+        display: flex;
+        justify-content: space-between;
+        .logo {
+          flex-shrink: 0;
+          height: fit-content;
+        }
     }
   }
   .abstract{
-    padding:10px 0; box-sizing:border-box; font-size:22px; line-height:36px;
+    box-sizing:border-box; font-size:22px; line-height:36px;
+    border-left: 0.2rem solid #007aff;
+    margin:0.6rem 0;
     div{
         padding: 10px 20px;
         box-sizing: border-box;
-        background: rgba(20, 121, 253, 0.1);
-        color: #4099ef;
+         color: #333;
         border-radius: 10px;
     }
   }
@@ -218,6 +242,9 @@ body{
 			margin-bottom: 20px;
 			padding-bottom: 20px;
 			border-bottom: 1px dashed #ccc;
+      &:last-child {
+        border-bottom: none;
+      }
 			.type{
 				font-size: 15px;
 				color: #fff;
@@ -232,6 +259,14 @@ body{
 			}
 		}
   }
+  .disclaimer{
+      font-size: 0.58rem;
+      padding: 30px 0;
+      border-top: 1px solid #ccc;
+      h3 {
+        margin-bottom: 20px;
+      }
+  }
 }
 @media screen and (max-width:1200px){
   #reportdtl{