Browse Source

基本配置添加研报logo

Karsa 7 months ago
parent
commit
04a8dec106

BIN
src/assets/img/eta_base_config/report_logo.png


+ 4 - 1
src/lang/modules/systemManage/BaseConfig.js

@@ -102,6 +102,7 @@ export const BaseConfigEn = {
     mobile_website_title_Tip:"Please enter the mobile website name",
     system_logo:"System Logo",
     upload_image_tip:"Click to Upload Image",
+    report_logo:'Report Logo'
     
 };
   
@@ -140,7 +141,7 @@ export const BaseConfigZh = {
     wx_original_tips:'注:关联公众号填写时,AppID、AppSecret原始ID均需填写。',
     report_sheet_size:'研报表格字体',
     report_type1:'智能研报',
-    report_type2:'研报列表',
+    report_type2:'研报中心',
     report_type3:'英文研报',
     report_sheet_tip: '设置共享表格、时间序列表格、混合表格插入研报的表格字号',
 
@@ -207,6 +208,8 @@ export const BaseConfigZh = {
     mobile_website_title_Tip:"请输入移动端网站名称",
     system_logo:"系统logo",
     upload_image_tip:"点击上传图片",
+
+    report_logo:'研报Logo'
 };
   
 /**

+ 40 - 5
src/views/report_manage/reportV2/normalReport/reportdtl.vue

@@ -1,6 +1,9 @@
 <template>
 	<div id="reportdtl" v-if="isshow">
-		<header>{{reportInfo.Title}}</header>
+		<header>
+			<span>{{reportInfo.Title}}</span>
+			<img :src="configInfo.ReportLogo" alt="" v-if="configInfo.ReportCenterLogoShow==='true'"/>
+		</header>
 		<div style="padding:0 35px 0; box-sizing:border-box; color:#666; font-size:24px; overflow:hidden;">
 		  <span>{{reportInfo.Author}}</span>
 		  <span style="float:right;" v-if="reportInfo.PublishState===2||reportInfo.State===2">{{reportInfo.PublishTime}}</span>
@@ -26,6 +29,9 @@
 				<div id="resetcss" style="overflow:hidden;" v-html="reportInfo.Content"></div>
 			</block>
 		</div>
+
+		<div class="disclaimer-cont" v-html="configInfo.Disclaimer" v-if="configInfo.Disclaimer"></div>
+
 		<div v-if="linkUrl" style="width:100px;height30px;position:absolute;right:-100px;top:100px;cursor:pointer;">
 			<div v-permission="$route.query.fromPage==='en'
                 ?permissionBtn.enReportManageBtn.enReport_reportView_copyWechat
@@ -46,7 +52,7 @@
 
 <script>
 	import { reportdetail,departInterence } from 'api/api.js';
-	import http from '@/api/http.js';
+	import {etaBaseConfigInterence} from '@/api/modules/etaBaseConfigApi.js';
 	import * as reportEnInterface from '@/api/modules/reportEnApi';
 	import {strategyReportInterence} from '@/api/api.js'
 	import vueQr from 'vue-qr'
@@ -95,6 +101,7 @@
 				isShowCode:false,
 
 				systemUserInfo:null,
+				configInfo: {}
 			}
 		},
 		components: {
@@ -117,6 +124,8 @@
 				console.log(this.reportInfo);
 				this.isshow=true;
 			}
+			
+			this.getConfigSet()
 		},
 		updated(){
 		  $('#resetcss').find('img').css({display:'block',margin:'0 auto'});
@@ -124,6 +133,16 @@
 			$("#resetcss").find("pre").css({display: "block",whiteSpace: "pre-wrap"});
 		},
 		methods: {
+			async getConfigSet() {
+				const res = await etaBaseConfigInterence.getBaseConfig()
+
+				if(res.Ret!==200) return
+				const {ReportLogo,Disclaimer,DisclaimerEn,ReportCenterLogoShow,ReportEnLogoShow} = res.Data
+				this.configInfo = {
+					ReportLogo,DisclaimerEn,ReportEnLogoShow
+				}
+			},
+
 			async getreportdetail(){
 				let res
 				let reportId = this.id||this.reportId
@@ -163,12 +182,24 @@
 	}
 </script>
 
-<style lang="scss">
+<style lang="scss" scoped>
 	#reportdtl{ background:#fff;  max-width:1200px; margin:10px auto;position:relative;
 		img{ display:'block'; width:'100%'; margin:'0 auto'; }
-		header{ padding:10px 30px; box-sizing:border-box; font-size:28px; font-weight:500; color:#333; background:#fff; }
+		header{ padding:10px 30px; box-sizing:border-box; font-size:28px; font-weight:500; color:#333; background:#fff;display: flex;justify-content: space-between; }
 		#abstract{ padding:10px 30px 0; box-sizing:border-box; font-size:22px; line-height:36px;
-		  >div{ padding:10px 20px; box-sizing:border-box; background:rgba(20,121,253,0.1); color:#4099ef; border-radius:10px; }
+		  >div{ 
+				padding:10px 20px; box-sizing:border-box; border-radius:10px;
+				position: relative;
+				&::after {
+					position: absolute;
+					width: 5px;
+					height: 100%;
+					content: '';
+					background:#007aff;
+					top: 0;
+					left: 0;
+				}
+			}
 		}
 		#resetsty{ 
 			img{ display:block; max-width:100%; height:auto; margin:0 auto; }
@@ -225,5 +256,9 @@
 				list-style-position: inside !important;
 			}
 		}
+
+		.disclaimer-cont {
+			padding: 0 30px 30px 30px;
+		}
 	}
 </style>

+ 36 - 5
src/views/report_manage/reportV2/smartReport/reportDetail.vue

@@ -15,7 +15,10 @@
 
             <!-- 无版头版尾 -->
             <div class="no-layout-img-box" v-if="(reportInfo && !!reportInfo.NeedSplice && (!reportInfo.HeadImg) && (!reportInfo.EndImg))||$route.query.type==='previewChapter'">
-                <header>{{reportInfo.Title}}</header>
+                <header>
+                    <span>{{reportInfo.Title}}</span>
+			        <img :src="configInfo.ReportLogo" alt="" v-if="configInfo.ReportCenterLogoShow==='true'"/>
+                </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>
@@ -44,6 +47,8 @@
                 <div class="html-wrap" v-html="content" v-else></div>
             </template>
 
+            <div class="disclaimer-cont" v-html="configInfo.Disclaimer" v-if="configInfo.Disclaimer"></div>
+
             <!-- 板尾 -->
             <div class="html-end-img-box" v-if="reportInfo && !!reportInfo.NeedSplice && reportInfo.EndImg&&$route.query.type!=='previewChapter'">
                 <img :src="reportInfo.EndImg" alt="" style="display:block;width:100%">
@@ -95,10 +100,10 @@
 
 <script>
 import {apiSmartReport}  from '@/api/modules/smartReport'
+import {etaBaseConfigInterence} from '@/api/modules/etaBaseConfigApi.js';
 import {
 	reportdetail,
 } from '@/api/modules/reportV2';
-import vueQr from 'vue-qr'
 export default {
     computed: {
 		linkUrl(){
@@ -151,7 +156,8 @@ export default {
                 研报标题:'',
                 研报作者:'',
                 创建时间:''
-            }
+            },
+            configInfo: {}
         }
     },
     created() {
@@ -165,8 +171,19 @@ export default {
             return 
         }
         this.getReportDetail()
+        this.getConfigSet()
     },
     methods: {
+        async getConfigSet() {
+            const res = await etaBaseConfigInterence.getBaseConfig()
+
+            if(res.Ret!==200) return
+            const {ReportLogo,Disclaimer,DisclaimerEn,ReportCenterLogoShow,ReportEnLogoShow} = res.Data
+            this.configInfo = {
+                ReportLogo,Disclaimer,ReportCenterLogoShow
+            }
+        },
+
         // 获取报告详情
         getReportDetail(){
             const id=this.$route.query.id||this.reportId||0
@@ -345,6 +362,7 @@ div{
         .no-layout-img-box{
             header{
                 padding:10px 0; box-sizing:border-box; font-size:28px; font-weight:500; color:#333;
+                display: flex;justify-content: space-between;
             }
         }
         .abstract{
@@ -352,9 +370,19 @@ div{
             div{
                 padding: 10px 20px;
                 box-sizing: border-box;
-                background: rgba(20, 121, 253, 0.1);
-                color: #4099ef;
+                position: relative;
+                /* background: rgba(20, 121, 253, 0.1);
+                color: #4099ef; */
                 border-radius: 10px;
+                &::after {
+					position: absolute;
+					width: 5px;
+					height: 100%;
+					content: '';
+					background:#007aff;
+					top: 0;
+					left: 0;
+				}
             }
         }
     }
@@ -388,5 +416,8 @@ div{
             font-weight: bold;
         }
     }
+    .disclaimer-cont {
+        padding: 30px 0;
+    }
 }
 </style>

+ 63 - 34
src/views/report_manage/reportdtl.vue

@@ -1,20 +1,29 @@
 <template>
 	<div id="reportdtl" v-if="isshow">
-		<header>{{reportInfo.Title}}</header>
+		<header>
+			<span>{{reportInfo.Title}}</span>
+			<img :src="configInfo.ReportLogo" alt="" v-if="configInfo.ReportEnLogoShow==='true'"/>
+		</header>
 		<div style="padding:0 35px 0; box-sizing:border-box; color:#666; font-size:24px; overflow:hidden;">
 		  <span>{{$route.query.fromPage=='strategyReport'?'Horizon Insights FICC Team':reportInfo.Author}}</span>
 			<!-- 已发布、已通过展示发布时间 -->
 		  <span style="float:right;" v-if="[2,6].includes(reportInfo.State)">{{reportInfo.PublishTime}}</span>
 		</div>
 		
-		<!-- 英文版摘要+overview 必填-->
-		<div id="abstract-en" v-if="$route.query.fromPage=='en'||isEn">
-			<div 
-				class="abstract" 
-				:style="{borderBottom:reportInfo.Overview?'1px solid #C1C1C1':'none',paddingBottom:reportInfo.Overview?'20px':'0'}"
-			>
-				<div>Abstract:{{reportInfo.Abstract}}</div>
+		<div id="abstract" v-if="$route.query.fromPage=='strategyReport'">
+			<div>
+				<div v-if="reportInfo.Abstract">Abstract:<span v-html="reportInfo.Abstract"></span></div>
+				<div>Key Takeaways:<span v-html="reportInfo.KeyTakeaways"></span></div>
+			</div>
+		</div>
+		<template v-else>
+			<div id="abstract" v-if="reportInfo.Abstract">
+		  	<div>{{($route.query.fromPage=='en'||isEn)?'Abstract':'摘要'}}:{{reportInfo.Abstract}}</div>
 			</div>
+		</template>
+
+		<!-- 英文版摘要+overview 必填-->
+		<div id="overview-wrapper" v-if="$route.query.fromPage=='en'||isEn">
 			<div id="overview" v-if="reportInfo.KeyTakeaways" :style="{borderBottom:reportInfo.Overview?'1px solid #C1C1C1':'none',paddingBottom:reportInfo.Overview?'20px':'0'}">
 				<p style="margin-bottom:20px;"><strong>KeyTakeaways:</strong></p>
 				<div class="overview" style="overflow:hidden;" v-html="reportInfo.KeyTakeaways"></div>
@@ -25,17 +34,7 @@
 			</div>
 			
 		</div>
-		<div id="abstract" v-else-if="$route.query.fromPage=='strategyReport'">
-			<div>
-				<div v-if="reportInfo.Abstract">Abstract:<span v-html="reportInfo.Abstract"></span></div>
-				<div>Key Takeaways:<span v-html="reportInfo.KeyTakeaways"></span></div>
-			</div>
-		</div>
-		<template v-else>
-			<div id="abstract" v-if="reportInfo.Abstract">
-		  	<div>{{($route.query.fromPage=='en'||isEn)?'Abstract':'摘要'}}:{{reportInfo.Abstract}}</div>
-			</div>
-		</template>
+		
 		<div id="resetsty" style="padding:30px; box-sizing:border-box; overflow:hidden;">
 			<block v-if="reportInfo.ChapterType=='day'||reportInfo.ChapterType=='week'">
 				<div class="chapter-item" v-for="item in reportInfo.ChapterList" :key="item.ReportChapterId">
@@ -50,6 +49,9 @@
 				<div id="resetcss" style="overflow:hidden;" v-html="reportInfo.Content"></div>
 			</block>
 		</div>
+
+		<div class="disclaimer-cont" v-html="configInfo.DisclaimerEn" v-if="configInfo.DisclaimerEn"></div>
+
 		<div v-if="linkUrl" style="width:100px;height30px;position:absolute;right:-100px;top:100px;cursor:pointer;">
 			<div v-permission="$route.query.fromPage==='en'
                 ?permissionBtn.enReportManageBtn.enReport_reportView_copyWechat
@@ -70,6 +72,7 @@
 
 <script>
 	import { reportdetail,departInterence } from 'api/api.js';
+	import {etaBaseConfigInterence} from '@/api/modules/etaBaseConfigApi.js';
 	import http from '@/api/http.js';
 	import * as reportEnInterface from '@/api/modules/reportEnApi';
 	import {strategyReportInterence} from '@/api/api.js'
@@ -118,7 +121,8 @@
 				isShowCode:false,
 
 				systemUserInfo:null,
-				// linkUrl:this.$route.query.code?'https://share.hzinsights.com/reportdtl?code='+this.$route.query.code:''
+
+				configInfo: {}
 			}
 		},
 		components: {
@@ -135,6 +139,7 @@
 				this.isshow=true;
 			}
 			this.getSystemUserInfo()
+			this.getConfigSet()
 		},
 		updated(){
 		  $('#resetcss').find('img').css({display:'block',margin:'0 auto'});
@@ -142,6 +147,16 @@
 			$("#resetcss").find("pre").css({display: "block",whiteSpace: "pre-wrap"});
 		},
 		methods: {
+			async getConfigSet() {
+				const res = await etaBaseConfigInterence.getBaseConfig()
+
+				if(res.Ret!==200) return
+				const {ReportLogo,Disclaimer,DisclaimerEn,ReportCenterLogoShow,ReportEnLogoShow} = res.Data
+				this.configInfo = {
+					ReportLogo,DisclaimerEn,ReportEnLogoShow
+				}
+			},
+
 			getSystemUserInfo(){
 				departInterence.systemUserInfo().then(res=>{
 					if(res.Ret===200){
@@ -193,9 +208,24 @@
 <style lang="scss">
 	#reportdtl{ background:#fff;  max-width:1200px; margin:10px auto;position:relative;
 		img{ display:'block'; width:'100%'; margin:'0 auto'; }
-		header{ padding:10px 30px; box-sizing:border-box; font-size:28px; font-weight:500; color:#333; background:#fff; }
+		header{ 
+			padding:10px 30px; box-sizing:border-box; font-size:28px; font-weight:500; color:#333; background:#fff;
+			display: flex;justify-content: space-between;
+		}
 		#abstract{ padding:10px 30px 0; box-sizing:border-box; font-size:22px; line-height:36px;
-		  >div{ padding:10px 20px; box-sizing:border-box; background:rgba(20,121,253,0.1); color:#4099ef; border-radius:10px; }
+		  >div{ 
+				padding:10px 20px; box-sizing:border-box; border-radius:10px;
+				position: relative;
+				&::after {
+					position: absolute;
+					width: 5px;
+					height: 100%;
+					content: '';
+					background:#007aff;
+					top: 0;
+					left: 0;
+				}
+			}
 		}
 		#resetsty{ 
 			img{ display:block; max-width:100%; height:auto; margin:0 auto; }
@@ -221,19 +251,13 @@
 				font-weight: bold;
 			}
 		}
-    #abstract-en{
+    #overview-wrapper{
       margin:35px 35px;
       padding:20px;
       background-color: rgba(77, 130, 191, 0.1);
       border: 1px solid #E2E2E2;
-      .abstract{
-        font-size: 24px;
-        font-weight: 600;
-        padding-bottom: 20px;
-        border-bottom: 1px solid #C1C1C1;
-      }
+      
       #overview{
-        margin-top:20px;
         font-size: 24px;
         .overview{
           margin-top:20px;
@@ -252,9 +276,14 @@
 				list-style-position: inside !important;
 			}
 		}
-        @media (max-width:1400px) {
-            margin-right: 100px;
-            
-        }
+		@media (max-width:1400px) {
+				margin-right: 100px;
+				
+		}
+
+		.disclaimer-cont {
+        padding: 30px;
+				border-top: 1px solid #E2E2E2;
+    }
 	}
 </style>

+ 44 - 20
src/views/system_manage/etaBaseConfig.vue

@@ -277,20 +277,45 @@
                         <!-- 研报logo -->
                         <div>
                             <div style="width:100%;margin-bottom: 20px;">
-                                <span style="color:#606266;">研报logo</span>
+                                <span style="color:#606266;">{{$t('SystemManage.BaseConfig.report_logo')}}({{$t('SystemManage.BaseConfig.recommended_ratio')}})</span>
+
+                                <el-form-item prop="ReportLogo" style="width:250px">
+                                    <ImgUpload 
+                                    id="logo-image"
+                                    :imgUrl="formData.ReportLogo"
+                                    :text="$t('SystemManage.BaseConfig.upload_image_tip')"
+                                    @showImage="showImage"
+                                    @upload="(file)=>handleUploadImage(file,'ReportLogo')"
+                                    @remove="deleteFormImg('ReportLogo')"
+                                    />
+                                    <ConfigAnnotation 
+                                        picHintText="" 
+                                        picName="ReportLogo" 
+                                        @showImage="previewImage" 
+                                        :buttonText="$t('SystemManage.BaseConfig.view_example_text')"
+                                    />
+                                </el-form-item>
                             </div>
-                            <div class="side" v-if="approve">
-                                研报中心<el-switch v-model="formData.ReportCenterLogoShow"/>
-                                英文研报<el-switch v-model="formData.ReportEnLogoShow"/>
+                            <div class="side">
+                                <span>
+                                    {{reportFromType[0].label}}<el-switch v-model="formData.ReportCenterLogoShow" style="margin-right:20px"/>
+                                </span>
+                                <span v-if="isHaveEnReport">
+                                    {{reportFromType[1].label}}<el-switch v-model="formData.ReportEnLogoShow"/>
+                                </span>
                             </div>
                         </div>
                     </div>
                     <div class="side">
                     
                         <el-form-item :label="$t('SystemManage.BaseConfig.disclaimer')" prop="Disclaimer" class="disclaimer">
-                            <el-radio-group v-model="disclaimerLang" style="margin-bottom: 22px;">
-                                <el-radio-button label="cn">研报中心</el-radio-button>
-                                <el-radio-button label="en">英文研报</el-radio-button>
+                            <el-radio-group 
+                                v-model="disclaimerLang" 
+                                style="margin-bottom: 22px;" 
+                                v-if="isHaveEnReport"
+                            >
+                                <el-radio-button label="cn">{{reportFromType[0].label}}</el-radio-button>
+                                <el-radio-button label="en">{{reportFromType[1].label}}</el-radio-button>
                             </el-radio-group>
 
                             <div class="rich-editor-wrap">
@@ -349,7 +374,7 @@
                         <el-radio-button label="cn">{{$t('SystemManage.BaseConfig.ppt_zh')}}</el-radio-button>
                         <el-radio-button label="en" v-permission="permissionBtn.enPPTPermission.pptEn_visible">{{$t('SystemManage.BaseConfig.ppt_en')}}</el-radio-button>
                     </el-radio-group>
-                    <div v-if="isShowPPT" v-show="pptLang === 'cn'" class="ppt-form-item-wrap">
+                    <div v-if="isShowPPT&&pptLang === 'cn'" class="ppt-form-item-wrap">
                         <!-- <div class="inner-input-wrap">
                             <el-form-item label="公司名称" prop="PptCompanyName" class="inline-form-item">
                                 <el-input type="text" v-model="formData.PptCompanyName"></el-input>
@@ -420,18 +445,8 @@
                             </el-select>
                         </el-form-item>
                     </div>
-                    <div v-if="isShowEnPPT" v-show="pptLang === 'en'" class="ppt-form-item-wrap">
-                        <!-- <div class="inner-input-wrap">
-                            <el-form-item label="公司名称" prop="PptCompanyNameEn" class="inline-form-item">
-                                <el-input type="text" v-model="formData.PptCompanyNameEn"></el-input>
-                            </el-form-item>
-                            <el-form-item label="团队名称" prop="PptTeamNameEn" class="inline-form-item">
-                                <el-input type="text" v-model="formData.PptTeamNameEn"></el-input>
-                            </el-form-item>
-                            <el-form-item label="字体颜色" prop="PptFontColorEn" class="inline-form-item">
-                                <el-input type="color" style="width:64px;" v-model="formData.PptFontColorEn"></el-input>
-                            </el-form-item>
-                        </div> -->
+                    <div v-if="isShowEnPPT&&pptLang === 'en'" class="ppt-form-item-wrap">
+                        
                         <el-form-item :label="$t('SystemManage.BaseConfig.ppt_type01')" prop="EnPptCoverImgs" style="min-width:400px;">
                             <div class="input-line" style="display:flex;">
                                 <ImgUpload 
@@ -678,6 +693,7 @@ export default {
                 'LogoCN':[require('@/assets/img/eta_base_config/Logo_ch.png')],
                 'LogoEN':[require('@/assets/img/eta_base_config/Logo_en.png')],
                 'LogoMobile':[require('@/assets/img/eta_base_config/ETA_mobile_logo.png')],  
+                'ReportLogo': [require('@/assets/img/eta_base_config/report_logo.png')]
             },
             /* loading */
             configLoading:null,
@@ -762,6 +778,12 @@ export default {
                 this.permissionBtn.baseConfigPermission.etaBaseConfig_source_see
             )
         },
+
+        isHaveEnReport() {
+            return this.permissionBtn.checkPermissionBtn(
+                this.permissionBtn.enReportManageBtn.enReport_reportView
+            )
+        }
     },
     watch: {
         'isShowLoginConfig':{
@@ -855,6 +877,8 @@ export default {
                     this.formData.LogoCN = res.Data.LogoCN || require('@/assets/img/login_logo.png')
                     this.formData.LogoEN = res.Data.LogoEN || require('@/assets/img/en/logo.png')
                     this.formData.LogoMobile = res.Data.LogoMobile || require('@/assets/img/logo_mobile.png')
+                    this.formData.ReportCenterLogoShow = res.Data.ReportCenterLogoShow==='true'?true:false;
+                    this.formData.ReportEnLogoShow = res.Data.ReportEnLogoShow==='true'?true:false;
                 }
                 this.configLoading&&this.configLoading.close()
             })