etaBaseConfig.vue 63 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147
  1. <template>
  2. <div class="eta-base-config">
  3. <div class="nav-type-box">
  4. <span :class="[sectionType===1?'active':'']" @click="sectionType=1">{{$t('SystemManage.BaseConfig.tab01')}}</span>
  5. <span :class="[sectionType===2?'active':'']" @click="sectionType=2" v-if="isShowSource">{{$t('SystemManage.BaseConfig.tab02')}}</span>
  6. </div>
  7. <!-- 通用设置 -->
  8. <template v-if="sectionType==1">
  9. <el-form
  10. :model="formData"
  11. :rules="rules"
  12. label-position="top"
  13. class="base-config-form"
  14. label-width="120px"
  15. ref="baseConfigForm"
  16. >
  17. <div class="part-type-box" style="margin-bottom:40px">
  18. <el-button v-if="isShowLoginConfig" type="primary" :plain="partType===1?false:true" @click="partType=1" :style="{border:'none',color:partType==1?'#fff':'#333'}">{{$t('SystemManage.BaseConfig.sub_tab01')}}</el-button>
  19. <el-button type="primary" :plain="partType===2?false:true" @click="partType=2" :style="{border:'none',color:partType==2?'#fff':'#333'}">{{$t('SystemManage.BaseConfig.sub_tab02')}}</el-button>
  20. <el-button type="primary" :plain="partType===3?false:true" v-if="isShowPPT||isShowEnPPT" @click="partType=3" :style="{border:'none',color:partType==3?'#fff':'#333'}">{{$t('SystemManage.BaseConfig.sub_tab03')}}</el-button>
  21. <div class="btn-wrap" style="text-align: center;float:right">
  22. <el-button type="primary" plain style="width:120px;" @click="cancel">{{$t('Dialog.cancel_btn')}}</el-button>
  23. <el-button type="primary" style="margin-left:20px;width:120px;" @click="saveBaseConfig">{{$t('Dialog.confirm_save_btn')}}</el-button>
  24. </div>
  25. </div>
  26. <div class="scroll-cont">
  27. <!-- 登录设置模块 -->
  28. <div class="part" v-show="partType===1&&isShowLoginConfig">
  29. <div class="side">
  30. <!-- <el-form-item label="国内短信模板" prop="LoginSmsTpId" >
  31. <div class="form-item-type-two sms-type">
  32. <el-input type="text" v-model.trim="formData.LoginSmsTpId" placeholder="请输入国内短信模板ID" style="width: calc(50% - 10px);">
  33. <template slot="suffix">
  34. <el-tooltip content="登陆系统或找回密码或验证身份" placement="top">
  35. <div class="input-suffix">
  36. <img src="~@/assets/img/icons/warn-circle-gray.png" />
  37. </div>
  38. </el-tooltip>
  39. </template>
  40. </el-input>
  41. <el-input type="text" v-model.trim="formData.SmsJhgnAppKey" placeholder="请输入国内短信模板appkey" style="width: calc(50% - 10px);" />
  42. </div>
  43. </el-form-item>
  44. <el-form-item label="国外短信模板" prop="LoginSmsGjTpId" >
  45. <div class="form-item-type-two sms-type">
  46. <el-input type="text" v-model.trim="formData.LoginSmsGjTpId" placeholder="请输入国外短信模板ID" style="width: calc(50% - 10px);">
  47. <template slot="suffix">
  48. <el-tooltip content="登陆系统或找回密码或验证身份" placement="top">
  49. <div class="input-suffix">
  50. <img src="~@/assets/img/icons/warn-circle-gray.png" />
  51. </div>
  52. </el-tooltip>
  53. </template>
  54. </el-input>
  55. <el-input type="text" v-model.trim="formData.SmsJhgjAppKey" placeholder="请输入国外短信模板appkey" style="width: calc(50% - 10px);" />
  56. </div>
  57. </el-form-item> -->
  58. <el-form-item :label="$t('SystemManage.BaseConfig.email_tem')" prop="LoginEmailTemplateSubject" >
  59. <div class="form-item-type-two">
  60. <el-input type="text" v-model="formData.LoginEmailTemplateSubject" :placeholder="$t('SystemManage.BaseConfig.email_placeholder')" >
  61. <template slot="suffix">
  62. <el-tooltip :content="$t('SystemManage.BaseConfig.email_tips')" placement="top">
  63. <div class="input-suffix">
  64. <img src="~@/assets/img/icons/warn-circle-gray.png" />
  65. </div>
  66. </el-tooltip>
  67. </template>
  68. </el-input>
  69. </div>
  70. </el-form-item>
  71. <el-form-item prop="LoginEmailTemplateContent" >
  72. <froala id="email-content-editor"
  73. ref="emailContentEditor"
  74. tag="textarea"
  75. :config="{...disclaimerConfig,...emailEditorConfig}" v-model="formData.LoginEmailTemplateContent">
  76. </froala>
  77. <ConfigAnnotation picName="emailContentTemplate" @showImage="previewImage" picHintText="" :buttonText="$t('SystemManage.BaseConfig.view_example_text')"/>
  78. </el-form-item>
  79. </div>
  80. <div class="side">
  81. <el-form-item :label="$t('SystemManage.BaseConfig.login_info')" prop="ICPLicense">
  82. <el-input type="text" v-model="formData.ICPLicense" :placeholder="$t('SystemManage.BaseConfig.login_info_pld')" />
  83. <ConfigAnnotation picHintText="" picName="ICPLicense" @showImage="previewImage"/>
  84. </el-form-item>
  85. <el-form-item :label="$t('SystemManage.BaseConfig.login_title')" prop="ETATitle">
  86. <el-input type="text" v-model="formData.ETATitle" placeholder="$t('SystemManage.BaseConfig.login_title_pld')" />
  87. <ConfigAnnotation picHintText="" picName="ETATitle" @showImage="previewImage"/>
  88. </el-form-item>
  89. <!-- <el-form-item :label="login_name" prop="TabName">
  90. <el-input type="text" v-model="formData.TabName" placeholder="$t('SystemManage.BaseConfig.login_name_pld')" />
  91. <ConfigAnnotation picHintText="" picName="TabName" @showImage="previewImage"/>
  92. </el-form-item> -->
  93. <div class="inline-form-item-box" v-if="permissionBtn.isShowBtn('baseConfigPermission','etaBaseConfig_login_websiteName_pc') ||
  94. permissionBtn.isShowBtn('baseConfigPermission','etaBaseConfig_login_websiteName_mobile')">
  95. <div class="line-form-item-name">{{$t('SystemManage.BaseConfig.website_name')}}</div>
  96. <div class="line-form-item">
  97. <el-form-item :label="$t('SystemManage.BaseConfig.pc')" prop="TabName"
  98. v-permission="permissionBtn.baseConfigPermission.etaBaseConfig_login_websiteName_pc">
  99. <el-input type="text" v-model="formData.TabName" :placeholder="$t('SystemManage.BaseConfig.pc_website_title_Tip')" />
  100. <ConfigAnnotation picHintText="" picName="TabName" @showImage="previewImage"
  101. :buttonText="$t('SystemManage.BaseConfig.view_example_text')"/>
  102. </el-form-item>
  103. <el-form-item :label="$t('SystemManage.BaseConfig.mobile')" prop="TabNameMobile"
  104. v-permission="permissionBtn.baseConfigPermission.etaBaseConfig_login_websiteName_mobile">
  105. <el-input type="text" v-model="formData.TabNameMobile" :placeholder="$t('SystemManage.BaseConfig.mobile_website_title_Tip')" />
  106. <ConfigAnnotation picHintText="" picName="TabNameMobile" @showImage="previewImage"
  107. :buttonText="$t('SystemManage.BaseConfig.view_example_text')"/>
  108. </el-form-item>
  109. </div>
  110. </div>
  111. </div>
  112. <div class="side">
  113. <div class="inline-form-item-box" v-if="permissionBtn.isShowBtn('baseConfigPermission','etaBaseConfig_login_systemLogo_pc') ||
  114. permissionBtn.isShowBtn('baseConfigPermission','etaBaseConfig_login_systemLogo_mobile')">
  115. <div class="line-form-item-name">{{ $t('SystemManage.BaseConfig.system_logo') }}</div>
  116. <div class="line-form-item-name" style="line-height: 30px;" v-permission="permissionBtn.baseConfigPermission.etaBaseConfig_login_systemLogo_pc">{{ $t('SystemManage.BaseConfig.pc') }}</div>
  117. <div class="line-form-item" v-permission="permissionBtn.baseConfigPermission.etaBaseConfig_login_systemLogo_pc">
  118. <el-form-item :label="`${$t('SystemManage.BaseConfig.chinese_version')}(${$t('SystemManage.BaseConfig.recommended_ratio')})`" prop="LogoCN">
  119. <ImgUpload
  120. id="logo-image"
  121. :imgUrl="formData.LogoCN"
  122. :text="$t('SystemManage.BaseConfig.upload_image_tip')"
  123. @showImage="showImage"
  124. @upload="(file)=>handleUploadImage(file,'LogoCN')"
  125. @remove="deleteFormImg('LogoCN')"
  126. />
  127. <ConfigAnnotation picHintText="" picName="LogoCN" @showImage="previewImage" :buttonText="$t('SystemManage.BaseConfig.view_example_text')"/>
  128. </el-form-item>
  129. <!-- <el-form-item :label="`${$t('SystemManage.BaseConfig.english_version')}(${$t('SystemManage.BaseConfig.recommended_ratio')})`" prop="LogoEN">
  130. <ImgUpload
  131. id="logo-image"
  132. :imgUrl="formData.LogoEN"
  133. :text="$t('SystemManage.BaseConfig.upload_image_tip')"
  134. @showImage="showImage"
  135. @upload="(file)=>handleUploadImage(file,'LogoEN')"
  136. @remove="deleteFormImg('LogoEN')"
  137. />
  138. <ConfigAnnotation picHintText="" picName="LogoEN" @showImage="previewImage" :buttonText="$t('SystemManage.BaseConfig.view_example_text')"/>
  139. </el-form-item> -->
  140. </div>
  141. <div class="line-form-item" v-permission="permissionBtn.baseConfigPermission.etaBaseConfig_login_systemLogo_mobile">
  142. <el-form-item :label="$t('SystemManage.BaseConfig.mobile')" prop="LogoMobile" style="width: 50%;">
  143. <ImgUpload
  144. id="logo-image"
  145. :imgUrl="formData.LogoMobile"
  146. :text="$t('SystemManage.BaseConfig.upload_image_tip')"
  147. @showImage="showImage"
  148. @upload="(file)=>handleUploadImage(file,'LogoMobile')"
  149. @remove="deleteFormImg('LogoMobile')"
  150. />
  151. <ConfigAnnotation picHintText="" picName="LogoMobile" @showImage="previewImage" :buttonText="$t('SystemManage.BaseConfig.view_example_text')"/>
  152. </el-form-item>
  153. <div style="width: 50%;"></div>
  154. </div>
  155. </div>
  156. </div>
  157. </div>
  158. <!-- 研报设置 -->
  159. <div class="part" v-show="partType===2">
  160. <div class="side">
  161. <el-form-item :label="$t('SystemManage.BaseConfig.company_name')" prop="CompanyName">
  162. <el-input type="text" v-model="formData.CompanyName" :placeholder="$t('SystemManage.BaseConfig.company_name_placeholder')" />
  163. <ConfigAnnotation picHintText="" :buttonText="$t('SystemManage.BaseConfig.view_example_text')" picName="CompanyName" @showImage="previewImage"/>
  164. </el-form-item>
  165. <el-form-item :label="$t('SystemManage.BaseConfig.compay_mark')" prop="CompanyWatermark" class="watermark">
  166. <ImgUpload
  167. :imgUrl="formData.CompanyWatermark"
  168. @showImage="showImage"
  169. @upload="(file)=>handleUploadImage(file,'CompanyWatermark')"
  170. @remove="deleteFormImg('CompanyWatermark')"
  171. />
  172. <!-- 后面可能会有新的选项 -->
  173. <div style="position: absolute;top: -40px;left: 140px;display:flex;gap:0 20px">
  174. <el-checkbox-group v-if="isShowYBChart"
  175. v-model="checkList" >
  176. <el-checkbox label="研报图表">{{$t('SystemManage.BaseConfig.report_chart')}}</el-checkbox>
  177. </el-checkbox-group>
  178. <div v-if="isShowYBShare">
  179. <el-checkbox label="研报分享" v-model="formData.WatermarkReport">{{$t('SystemManage.BaseConfig.report_share')}}</el-checkbox>
  180. <el-tooltip
  181. effect="dark"
  182. :content="$t('SystemManage.BaseConfig.report_share_tips')"
  183. placement="top"
  184. >
  185. <i class="el-icon-warning"></i>
  186. </el-tooltip>
  187. </div>
  188. </div>
  189. <ConfigAnnotation :picHintText="$t('SystemManage.BaseConfig.upload_format')" :buttonText="$t('SystemManage.BaseConfig.view_example_text')" picName="CompanyWatermark" @showImage="previewImage"/>
  190. </el-form-item>
  191. <el-form-item>
  192. <template slot="label">
  193. <span><!-- 研报表格字体 -->{{$t('SystemManage.BaseConfig.report_sheet_size')}}</span>
  194. <el-tooltip class="item" effect="dark" :content="ReportSheetTip" placement="top-start">
  195. <i class="el-icon-warning"/>
  196. </el-tooltip>
  197. </template>
  198. <div class="flex-wrap">
  199. <div v-for="item in reportFromType" :key="item.type">
  200. <label>{{item.label}}</label>
  201. <el-select v-model="formData.SmartReportSheetSize" style="width:80px;" v-if="item.type==='smartReport'">
  202. <el-option
  203. v-for="size in sizeOptions"
  204. :key="size.val"
  205. :label="size.label"
  206. :value="size.val"
  207. />
  208. </el-select>
  209. <el-select v-model="formData.ReportSheetSize" style="width:80px;" v-else-if="item.type==='report'">
  210. <el-option
  211. v-for="size in sizeOptions"
  212. :key="size.val"
  213. :label="size.label"
  214. :value="size.val"
  215. />
  216. </el-select>
  217. <el-select v-model="formData.EnReportSheetSize" style="width:80px;" v-else-if="item.type==='enReport'">
  218. <el-option
  219. v-for="size in sizeOptions"
  220. :key="size.val"
  221. :label="size.label"
  222. :value="size.val"
  223. />
  224. </el-select>
  225. </div>
  226. </div>
  227. </el-form-item>
  228. <div v-if="isShowXunFei">
  229. <!-- 科大讯飞 -->
  230. <!-- <div style="width:100%;">
  231. <span style="color:#606266;">{{$t('SystemManage.BaseConfig.iFLYTEK_service')}}</span>
  232. <el-switch v-model="Iflytek"></el-switch>
  233. </div>
  234. <template v-if="Iflytek">
  235. <el-form-item label="APPID" prop="XfAppid">
  236. <el-input type="text" v-model="formData.XfAppid" :placeholder="$t('SystemManage.BaseConfig.please_enter')+'APPID'" />
  237. </el-form-item>
  238. <el-form-item label="APIKey" prop="XfApiKey">
  239. <el-input type="text" v-model="formData.XfApiKey" :placeholder="$t('SystemManage.BaseConfig.please_enter')+'APIKey'" />
  240. </el-form-item>
  241. <el-form-item label="APISecret" prop="XfApiSecret">
  242. <el-input type="text" v-model="formData.XfApiSecret" :placeholder="$t('SystemManage.BaseConfig.please_enter')+'APISecret'" />
  243. </el-form-item>
  244. <el-form-item label="vcn(voice_name)" prop="XfVcn">
  245. <el-input type="text" v-model="formData.XfVcn" :placeholder="$t('SystemManage.BaseConfig.please_enter')+'voice_name'" />
  246. </el-form-item>
  247. </template> -->
  248. </div>
  249. <!-- 研报审批 -->
  250. <div v-if="isShowApprove">
  251. <div style="width:100%;margin-bottom: 20px;">
  252. <span style="color:#606266;">{{$t('SystemManage.BaseConfig.report_approval')}}</span>
  253. <el-switch v-model="approve"></el-switch>
  254. </div>
  255. <div class="side" v-if="approve">
  256. <el-form-item label="" prop="ReportApproveType">
  257. <el-radio-group v-model="formData.ReportApproveType">
  258. <el-radio label="eta">{{$t('SystemManage.BaseConfig.internal_approval')}}</el-radio>
  259. <el-radio label="other">
  260. <span>{{$t('SystemManage.BaseConfig.third_approval')}}</span>
  261. <el-tooltip effect="dark" placement="top" :content="$t('SystemManage.BaseConfig.third_approval_tips')" >
  262. <span class="hint-text">
  263. <i class="el-icon-warning-outline"></i>
  264. </span>
  265. </el-tooltip>
  266. </el-radio>
  267. </el-radio-group>
  268. </el-form-item>
  269. </div>
  270. </div>
  271. <!-- 研报logo -->
  272. <div>
  273. <div style="width:100%;margin-bottom: 20px;">
  274. <span style="color:#606266;">{{$t('SystemManage.BaseConfig.report_logo')}}({{$t('SystemManage.BaseConfig.recommended_ratio')}})</span>
  275. <el-form-item prop="ReportLogo" style="width:250px">
  276. <ImgUpload
  277. id="logo-image"
  278. :imgUrl="formData.ReportLogo"
  279. :text="$t('SystemManage.BaseConfig.upload_image_tip')"
  280. @showImage="showImage"
  281. @upload="(file)=>handleUploadImage(file,'ReportLogo')"
  282. @remove="deleteFormImg('ReportLogo')"
  283. />
  284. <ConfigAnnotation
  285. picHintText=""
  286. picName="ReportLogo"
  287. @showImage="previewImage"
  288. :buttonText="$t('SystemManage.BaseConfig.view_example_text')"
  289. />
  290. </el-form-item>
  291. </div>
  292. <div class="side">
  293. <span>
  294. <span>{{reportFromType[0].label}}</span>
  295. <el-switch v-model="formData.ReportCenterLogoShow" style="margin-right:20px"/>
  296. </span>
  297. <span v-if="isHaveEnReport">
  298. <span>{{reportFromType[1].label}}</span>
  299. <el-switch v-model="formData.ReportEnLogoShow"/>
  300. </span>
  301. </div>
  302. </div>
  303. <!-- BI看板审批 -->
  304. <div v-if="isShowBIApprove" style="margin-top: 20px;">
  305. <span>{{$t('SystemManage.BaseConfig.bIDashboard_approval')}}</span>
  306. <el-switch v-model="BIApprove"></el-switch>
  307. </div>
  308. </div>
  309. <div class="side">
  310. <el-form-item :label="$t('SystemManage.BaseConfig.disclaimer')" prop="Disclaimer" class="disclaimer">
  311. <el-radio-group
  312. v-model="disclaimerLang"
  313. style="margin-bottom: 22px;"
  314. v-if="isHaveEnReport"
  315. >
  316. <el-radio-button label="cn">{{reportFromType[0].label}}</el-radio-button>
  317. <el-radio-button label="en">{{reportFromType[1].label}}</el-radio-button>
  318. </el-radio-group>
  319. <div class="rich-editor-wrap">
  320. <froala
  321. :id="`disclaimer-editor`"
  322. :ref="`disclaimerEditor`"
  323. :tag="'textarea'"
  324. :config="disclaimerConfig"
  325. v-model="formData.Disclaimer"
  326. v-if="disclaimerLang==='cn'"
  327. />
  328. <froala
  329. :id="`disclaimer-editor2`"
  330. :ref="`disclaimerEditor2`"
  331. :tag="'textarea'"
  332. :config="disclaimerConfig"
  333. v-model="formData.DisclaimerEn"
  334. v-else
  335. />
  336. </div>
  337. <ConfigAnnotation picHintText="" :buttonText="$t('SystemManage.BaseConfig.view_example_text')" picName="Disclaimer" @showImage="previewImage"/>
  338. </el-form-item>
  339. <el-form-item :label="$t('SystemManage.BaseConfig.report_share_title_zh')" prop="H5ShareName">
  340. <el-input type="text" v-model="formData.H5ShareName" :placeholder="$t('SystemManage.BaseConfig.report_share_title_zh_placeholder')" />
  341. </el-form-item>
  342. <el-form-item :label="$t('SystemManage.BaseConfig.report_share_title_en')" prop="H5ShareEnName" v-if="isShowReportEnShare">
  343. <el-input type="text" v-model="formData.H5ShareEnName" :placeholder="$t('SystemManage.BaseConfig.report_share_title_en_placeholder')" />
  344. </el-form-item>
  345. <!-- <el-form-item :label="$t('SystemManage.BaseConfig.connect_wx')" prop="WxAppId">
  346. <el-input type="text" v-model.trim="formData.WxAppId" :placeholder="$t('SystemManage.BaseConfig.please_enter')+'AppID'" />
  347. </el-form-item>
  348. <el-form-item prop="WxAppSecret">
  349. <el-input type="text" v-model.trim="formData.WxAppSecret" :placeholder="$t('SystemManage.BaseConfig.please_enter')+'AppSecret'" />
  350. </el-form-item>
  351. <el-form-item prop="WxId">
  352. <el-input type="text" v-model.trim="formData.WxId" :placeholder="$t('SystemManage.BaseConfig.wx_original_id')" />
  353. </el-form-item>
  354. <div class="input-hint">{{$t('SystemManage.BaseConfig.wx_original_tips')}}</div>
  355. <el-form-item prop="H5ReportShareImg">
  356. <ImgUpload
  357. :imgUrl="formData.H5ReportShareImg"
  358. @showImage="showImage"
  359. @upload="(file)=>handleUploadImage(file,'H5ReportShareImg')"
  360. @remove="deleteFormImg('H5ReportShareImg')"
  361. />
  362. </el-form-item> -->
  363. <!-- <ConfigAnnotation picName="OfficialAccountsLogoPic" @showImage="previewImage"
  364. picHintText=""/> -->
  365. </div>
  366. </div>
  367. <!-- PPT配置 -->
  368. <div class="part" v-if="isShowPPT||isShowEnPPT" v-show="partType===3">
  369. <el-radio-group v-model="pptLang" style="margin-bottom: 22px;">
  370. <el-radio-button label="cn">{{$t('SystemManage.BaseConfig.ppt_zh')}}</el-radio-button>
  371. <el-radio-button label="en" v-permission="permissionBtn.enPPTPermission.pptEn_visible">{{$t('SystemManage.BaseConfig.ppt_en')}}</el-radio-button>
  372. </el-radio-group>
  373. <div v-if="isShowPPT&&pptLang === 'cn'" class="ppt-form-item-wrap">
  374. <!-- <div class="inner-input-wrap">
  375. <el-form-item label="公司名称" prop="PptCompanyName" class="inline-form-item">
  376. <el-input type="text" v-model="formData.PptCompanyName"></el-input>
  377. </el-form-item>
  378. <el-form-item label="团队名称" prop="PptTeamName" class="inline-form-item">
  379. <el-input type="text" v-model="formData.PptTeamName"></el-input>
  380. </el-form-item>
  381. <el-form-item label="字体颜色" prop="PptFontColor" class="inline-form-item">
  382. <el-input type="color" style="width:64px;" v-model="formData.PptFontColor"></el-input>
  383. </el-form-item>
  384. </div> -->
  385. <el-form-item :label="$t('SystemManage.BaseConfig.ppt_type01')" prop="CnPptCoverImgs" style="min-width:400px;">
  386. <div class="input-line" style="display:flex;">
  387. <ImgUpload
  388. :imgUrl="formData.CnPptCoverImgs.length===3?formData.CnPptCoverImgs[2]:''"
  389. @showImage="(arr)=>{showImageOrder({list:formData.CnPptCoverImgs,item:arr[0]})}"
  390. @upload="(file)=>handleUploadImage(file,'CnPptCoverImgs')"
  391. @remove="deleteFormImg('CnPptCoverImgs',formData.CnPptCoverImgs.length-1)"
  392. />
  393. <ImgThumbnail
  394. :imgList="formData.CnPptCoverImgs.length===3?formData.CnPptCoverImgs.slice(0,2):formData.CnPptCoverImgs"
  395. @showImage="({item})=>{showImageOrder({list:formData.CnPptCoverImgs,item})}"
  396. @deleteImg="(index)=>{deleteFormImg('CnPptCoverImgs',index)}"/>
  397. </div>
  398. <ConfigAnnotation picName="pptCoverList" @showImage="previewImage"
  399. :picHintText="$t('SystemManage.BaseConfig.ppt_tip01')"
  400. :buttonText="$t('SystemManage.BaseConfig.view_example_text')"/>
  401. </el-form-item>
  402. <el-form-item :label="$t('SystemManage.BaseConfig.ppt_type02')" prop="CnPptBackgroundImg">
  403. <ImgUpload
  404. :imgUrl="formData.CnPptBackgroundImg"
  405. @showImage="showImage"
  406. @upload="(file)=>handleUploadImage(file,'CnPptBackgroundImg')"
  407. @remove="deleteFormImg('CnPptBackgroundImg')"
  408. />
  409. <ConfigAnnotation picName="pptBgPic" @showImage="previewImage"
  410. :picHintText="$t('SystemManage.BaseConfig.ppt_tip02')"
  411. :buttonText="$t('SystemManage.BaseConfig.view_example_text')"/>
  412. </el-form-item>
  413. <el-form-item :label="$t('SystemManage.BaseConfig.ppt_type03')" prop="CnPptBottomImg">
  414. <ImgUpload
  415. :imgUrl="formData.CnPptBottomImg"
  416. @showImage="showImage"
  417. @upload="(file)=>handleUploadImage(file,'CnPptBottomImg')"
  418. @remove="deleteFormImg('CnPptBottomImg')"
  419. />
  420. <ConfigAnnotation picName="pptBackPic" @showImage="previewImage"
  421. :picHintText="$t('SystemManage.BaseConfig.ppt_tip03')"
  422. :buttonText="$t('SystemManage.BaseConfig.view_example_text')"/>
  423. </el-form-item>
  424. <el-form-item label="PPT表格" prop="CnPptSheetSize">
  425. <template slot="label">
  426. <span>
  427. <!-- PPT表格 -->{{$t('SystemManage.BaseConfig.ppt_sheet')}}
  428. <el-tooltip class="item" effect="dark" :content="pptSheetTip" placement="top-start">
  429. <i class="el-icon-warning"/>
  430. </el-tooltip>
  431. </span>
  432. </template>
  433. <el-select v-model="formData.CnPptSheetSize" style="width:120px;">
  434. <el-option
  435. v-for="size in sizeOptions"
  436. :key="size.val"
  437. :label="size.label"
  438. :value="size.val"
  439. />
  440. </el-select>
  441. </el-form-item>
  442. </div>
  443. <div v-if="isShowEnPPT&&pptLang === 'en'" class="ppt-form-item-wrap">
  444. <el-form-item :label="$t('SystemManage.BaseConfig.ppt_type01')" prop="EnPptCoverImgs" style="min-width:400px;">
  445. <div class="input-line" style="display:flex;">
  446. <ImgUpload
  447. :imgUrl="formData.EnPptCoverImgs.length===3?formData.EnPptCoverImgs[2]:''"
  448. @showImage="(arr)=>{showImageOrder({list:formData.EnPptCoverImgs,item:arr[0]})}"
  449. @upload="(file)=>handleUploadImage(file,'EnPptCoverImgs')"
  450. @remove="deleteFormImg('EnPptCoverImgs',formData.EnPptCoverImgs.length-1)"
  451. />
  452. <ImgThumbnail
  453. :imgList="formData.EnPptCoverImgs.length===3?formData.EnPptCoverImgs.slice(0,2):formData.EnPptCoverImgs"
  454. @showImage="({item})=>{showImageOrder({list:formData.EnPptCoverImgs,item})}"
  455. @deleteImg="(index)=>{deleteFormImg('EnPptCoverImgs',index)}"/>
  456. </div>
  457. <ConfigAnnotation picName="pptCoverList" @showImage="previewImage"
  458. :picHintText="$t('SystemManage.BaseConfig.ppt_tip01')"
  459. :buttonText="$t('SystemManage.BaseConfig.view_example_text')"/>
  460. </el-form-item>
  461. <el-form-item :label="$t('SystemManage.BaseConfig.ppt_type02')" prop="EnPptBackgroundImg">
  462. <ImgUpload
  463. :imgUrl="formData.EnPptBackgroundImg"
  464. @showImage="showImage"
  465. @upload="(file)=>handleUploadImage(file,'EnPptBackgroundImg')"
  466. @remove="deleteFormImg('EnPptBackgroundImg')"
  467. />
  468. <ConfigAnnotation picName="pptBgPic" @showImage="previewImage"
  469. :picHintText="$t('SystemManage.BaseConfig.ppt_tip02')"
  470. :buttonText="$t('SystemManage.BaseConfig.view_example_text')"/>
  471. </el-form-item>
  472. <el-form-item :label="$t('SystemManage.BaseConfig.ppt_type03')" prop="EnPptBottomImg">
  473. <ImgUpload
  474. :imgUrl="formData.EnPptBottomImg"
  475. @showImage="showImage"
  476. @upload="(file)=>handleUploadImage(file,'EnPptBottomImg')"
  477. @remove="deleteFormImg('EnPptBottomImg')"
  478. />
  479. <ConfigAnnotation picName="pptBackPic" @showImage="previewImage"
  480. :picHintText="$t('SystemManage.BaseConfig.ppt_tip03')"
  481. :buttonText="$t('SystemManage.BaseConfig.view_example_text')"/>
  482. </el-form-item>
  483. <el-form-item label="PPT表格" prop="CnPptSheetSize">
  484. <template slot="label">
  485. <span>
  486. <!-- PPT表格 -->{{$t('SystemManage.BaseConfig.ppt_sheet')}}
  487. <el-tooltip class="item" effect="dark" :content="pptSheetTip" placement="top-start">
  488. <i class="el-icon-warning"/>
  489. </el-tooltip>
  490. </span>
  491. </template>
  492. <el-select v-model="formData.EnPptSheetSize" style="width:120px;">
  493. <el-option
  494. v-for="size in sizeOptions"
  495. :key="size.val"
  496. :label="size.label"
  497. :value="size.val"
  498. />
  499. </el-select>
  500. </el-form-item>
  501. </div>
  502. </div>
  503. </div>
  504. </el-form>
  505. </template>
  506. <template v-if="sectionType==2&&isShowSource">
  507. <div class="smart-report-title">{{$t('SystemManage.BaseConfig.smart_layout_resource_library')}}</div>
  508. <!-- 资源库 -->
  509. <smartReportImgSet />
  510. </template>
  511. <el-image-viewer
  512. v-if="showViewer"
  513. :on-close="()=>{this.picShowList=[];this.showViewer = false}"
  514. :url-list="picShowList" />
  515. </div>
  516. </template>
  517. <script>
  518. import ImgThumbnail from './components/imgThumbnail.vue';
  519. import ImgUpload from './components/imgUpload.vue';
  520. import ConfigAnnotation from './components/configAnnotation.vue';
  521. import ElImageViewer from 'element-ui/packages/image/src/image-viewer';
  522. import smartReportImgSet from './components/smartReportImgSet.vue'
  523. import {bannerupload} from '@/api/api.js';
  524. import {etaBaseConfigInterence} from '@/api/modules/etaBaseConfigApi.js';
  525. export default {
  526. components: { ConfigAnnotation , ElImageViewer , ImgThumbnail , ImgUpload,smartReportImgSet},
  527. data() {
  528. let ListValidator = (rule,value,callback)=>{
  529. if(!value.length){
  530. return callback(new Error('请至少选择一张封面图'))
  531. }else{
  532. return callback()
  533. }
  534. }
  535. return {
  536. /* base config */
  537. checkList:[],//水印应用
  538. Iflytek:false,//是否启用科大讯飞服务
  539. approve:false,//是否开启研报审批
  540. BIApprove:false,//是否开启BI看板审批
  541. formData: {
  542. Disclaimer: '',//免责声明
  543. DisclaimerEn: '',//英文免责声明
  544. CompanyName:'',//公司名称
  545. CompanyWatermark:'',//公司水印
  546. WatermarkChart:0,//是否在研报图表中使用水印 0否 1是
  547. LoginSmsTpId:'',//国内短信模板Id
  548. SmsJhgnAppKey:'',//国内短信模板appKey
  549. LoginSmsGjTpId:'',// 国际短信模板Id
  550. SmsJhgjAppKey:'',//国内短信模板appKey
  551. LoginEmailTemplateSubject:'', // 邮件标题
  552. LoginEmailTemplateContent:'', // 邮件内容
  553. H5ShareName:'', // 中文研报分享标题
  554. H5ShareEnName:'', // 英文研报分享标题
  555. WxAppId:'',
  556. WxAppSecret:'',
  557. WxId:'',
  558. H5ReportShareImg:'',
  559. SmartReportSheetSize: '12',//智能研报表格字号
  560. ReportSheetSize: '12',//研报表格字号
  561. EnReportSheetSize: '12',//英文研报表格字号
  562. UseXf:0,//是否启用科大讯飞服务 0否 1是
  563. XfAppid:'',
  564. XfApiKey:'',
  565. XfApiSecret:'',
  566. XfVcn:'',
  567. CnPptCoverImgs:[],//ppt封面列表
  568. CnPptBackgroundImg:'',//ppt背景图
  569. CnPptBottomImg:'',//ppt封底图
  570. EnPptCoverImgs:[],//英文ppt封面列表
  571. EnPptBackgroundImg:'',//英文ppt背景图
  572. EnPptBottomImg:'',//英文ppt封底图
  573. CnPptSheetSize: '12',//中文ppt表格字号
  574. EnPptSheetSize: '12',//英文ppt表格字号
  575. WatermarkReport:false,//研报分享水印
  576. IsReportApprove:false,//是否开启研报审批
  577. IsBIApprove:false,//是否开启bi看板审批
  578. ReportApproveType:'eta',//研报审批选项
  579. ICPLicense:'', //备案信息
  580. ETATitle:'', //登录页标题
  581. TabName:'',//网页名称-PC端
  582. TabNameMobile:'',//网页名称-移动端
  583. LogoCN:'',//logo-中文版
  584. LogoEN:'',//logo-英文版
  585. LogoMobile:'',//logo-移动端登录页
  586. ReportLogo: '',
  587. ReportCenterLogoShow: false,//研报中心详情logo显示
  588. ReportEnLogoShow: false,//英文研报logo显示
  589. },//表单预设值
  590. rules: {
  591. Disclaimer:[{ required: true, message: '请输入免责声明', trigger: 'blur' }],
  592. CompanyName:[{ required: true, message: '请输入公司名称', trigger: 'blur' }],
  593. LoginSmsTpId:[{ required: true, message: '请输入国内短信模板ID', trigger: 'blur' },
  594. {
  595. validator:(rules,value,callback)=>{
  596. if(!this.formData.SmsJhgnAppKey){
  597. callback(new Error("请输入国内短信模板appkey"))
  598. }else{
  599. callback()
  600. }
  601. },
  602. trigger: 'blur'
  603. }],
  604. LoginEmailTemplateSubject:[{ required: true, message: '请输入邮件标题', trigger: 'blur' }],
  605. LoginEmailTemplateContent:[{ required: true, message: '请输入邮件内容', trigger: 'blur' }],
  606. H5ShareName:[{ required: true, message: '请输入中文研报分享标题', trigger: 'blur' }],
  607. H5ShareEnName:[{ required: true, message: '请输入英文研报分享标题', trigger: 'blur' }],
  608. //CompanyWatermark:[{ required: true, message: '请选择水印图片', trigger: 'blur' }],
  609. CnPptBackgroundImg:[{ required: true, message: '请选择中文PPT背景图', trigger: 'blur' }],
  610. EnPptBackgroundImg:[{ required: true, message: '请选择英文PPT背景图', trigger: 'blur' }],
  611. XfAppid:[{ required: true, message: '请输入APPID', trigger: 'blur' }],
  612. XfApiKey:[{ required: true, message: '请输入APIKey', trigger: 'blur' }],
  613. XfApiSecret:[{ required: true, message: '请输入APISecret', trigger: 'blur' }],
  614. XfVcn:[{ required: true, message: '请输入voice_name', trigger: 'blur' }],
  615. CnPptCoverImgs:[{ required: true, validator:ListValidator}],
  616. EnPptCoverImgs:[{ required: true, validator:ListValidator}],
  617. ETATitle:[{ required: true, message: '请输入登录页标题', trigger: 'blur' }],
  618. TabName:[{ required: true, message: '请输入PC端网页名称', trigger: 'blur' }],
  619. TabNameMobile:[{ required: true, message: '请输入移动端网页名称', trigger: 'blur' }],
  620. LogoCN:[{ required: true, message: '请上传系统中文版Logo', trigger: 'blur' }],
  621. LogoEN:[{ required: true, message: '请上传系统英文版Logo', trigger: 'blur' }],
  622. LogoMobile:[{ required: true, message: '请上传系统移动端Logo', trigger: 'blur' }],
  623. },//表单校验
  624. disclaimerConfig:{
  625. toolbarButtons:[
  626. 'textColor',
  627. 'bold',
  628. 'italic',
  629. 'underline',
  630. 'fontFamily',
  631. 'fontSize',
  632. 'align',
  633. 'outdent',
  634. 'indent',
  635. 'specialCharacters',
  636. 'insertHR',
  637. 'selectAll',
  638. 'clearFormatting',
  639. 'undo',
  640. 'redo',
  641. ],
  642. height:300,
  643. fontSizeDefaultSelection: "16",
  644. quickInsertEnabled: false,
  645. pasteAllowedStyleProps: ['font-family', 'font-size', 'color'],
  646. language: "zh_cn",
  647. placeholderText:'请输入免责声明',
  648. wordPasteKeepFormatting:false,
  649. pastePlain:true,
  650. wordPasteModal:false,
  651. pluginsEnabled:['colors'],//定义可用插件
  652. },//富文本编辑器配置项
  653. emailEditorConfig:{
  654. placeholderText:'请输入邮件内容',
  655. },
  656. /* ppt config */
  657. pptLang:'cn',//切换中英文表单
  658. CnPptCoverImgs:[],//中文封面列表
  659. EnPptCoverImgs:[],//英文封面列表
  660. /* image preview */
  661. showViewer:false,//控制图片预览组件展示
  662. picShowList:[],//ElImageViewer组件展示图片的列表
  663. picShowMap:{ //查看示意图需要展示的图片 支持多张
  664. 'Disclaimer':[
  665. require('@/assets/img/eta_base_config/disclaimer_1.jpg'),
  666. require('@/assets/img/eta_base_config/disclaimer_2.jpg'),
  667. ],
  668. 'CompanyName':[require('@/assets/img/eta_base_config/company_1.jpg')],
  669. 'CompanyWatermark':[require('@/assets/img/eta_base_config/mark_1.jpg')],
  670. 'pptCoverList':[require('@/assets/img/eta_base_config/ppt_cover.jpg')],
  671. 'pptBgPic':[require('@/assets/img/eta_base_config/ppt_bgpic.jpg')],
  672. 'pptBackPic':[require('@/assets/img/eta_base_config/ppt_back.jpg')],
  673. 'emailContentTemplate':[require('@/assets/img/eta_base_config/email_content_template.png')],
  674. 'ICPLicense':[require('@/assets/img/eta_base_config/record_information.jpg')],
  675. 'ETATitle':[require('@/assets/img/eta_base_config/ETA_title.png')],
  676. 'TabName':[require('@/assets/img/eta_base_config/website_title.png')],
  677. 'TabNameMobile':[require('@/assets/img/eta_base_config/ETA_mobile_title.png')],
  678. 'LogoCN':[require('@/assets/img/eta_base_config/Logo_ch.png')],
  679. 'LogoEN':[require('@/assets/img/eta_base_config/Logo_en.png')],
  680. 'LogoMobile':[require('@/assets/img/eta_base_config/ETA_mobile_logo.png')],
  681. 'ReportLogo': [require('@/assets/img/eta_base_config/report_logo.png')]
  682. },
  683. /* loading */
  684. configLoading:null,
  685. partType:1,//1登陆设置 2研报设置 3PPT配置
  686. sectionType:1,//1通用设置 2资源库
  687. reportFromType: [
  688. // { type:'smartReport',label: /* '智能研报' */ this.$t('SystemManage.BaseConfig.report_type1') },
  689. { type:'report',label: /* '研报列表' */this.$t('SystemManage.BaseConfig.report_type2') },
  690. // { type:'enReport',label: /* '英文研报' */this.$t('SystemManage.BaseConfig.report_type3') },
  691. ],
  692. pptSheetTip: /* `设置共享表格、时间序列表格、混合表格插入PPT的表格字号` */this.$t('SystemManage.BaseConfig.ppt_sheet_tip'),
  693. ReportSheetTip: /* `设置共享表格、时间序列表格、混合表格插入研报的表格字号` */this.$t('SystemManage.BaseConfig.report_sheet_tip'),
  694. sizeOptions: [
  695. { label:'5',val:'5' },
  696. { label:'6',val:'6' },
  697. { label:'7',val:'7' },
  698. { label:'8',val:'8' },
  699. { label:'9',val:'9' },
  700. { label:'10',val:'10' },
  701. { label:'11',val:'11' },
  702. { label:'12',val:'12' },
  703. { label:'13',val:'13' },
  704. { label:'14',val:'14' },
  705. { label:'15',val:'15' },
  706. { label:'16',val:'16' },
  707. { label:'17',val:'17' },
  708. { label:'18',val:'18' },
  709. ],
  710. disclaimerLang:'cn',//摘要中英文分开
  711. };
  712. },
  713. computed:{
  714. //是否显示科大讯飞相关的表单项
  715. isShowXunFei(){
  716. return this.permissionBtn.checkPermissionBtn(
  717. this.permissionBtn.baseConfigPermission.etaBaseConfig_xunfei
  718. )
  719. },
  720. //是否显示研报审批相关表单项
  721. isShowApprove(){
  722. return this.permissionBtn.checkPermissionBtn(
  723. this.permissionBtn.baseConfigPermission.etaBaseConfig_approve
  724. )
  725. },
  726. //是否展示BI看板审批
  727. isShowBIApprove(){
  728. return this.permissionBtn.checkPermissionBtn(
  729. this.permissionBtn.baseConfigPermission.etaBaseConfig_biApprove
  730. )
  731. },
  732. //是否显示中文PPT相关的表单项
  733. isShowPPT(){
  734. return this.permissionBtn.checkPermissionBtn(
  735. this.permissionBtn.baseConfigPermission.etaBaseConfig_ppt
  736. )
  737. },
  738. //是否显示英文PPT相关的表单项
  739. isShowEnPPT(){
  740. return this.permissionBtn.checkPermissionBtn(
  741. this.permissionBtn.baseConfigPermission.etaBaseConfig_pptEn
  742. )
  743. },
  744. //是否显示公司水印旁的研报图表,目前只有一个选项,当选项多的时候,不要再单个单个判断
  745. isShowYBChart(){
  746. return this.permissionBtn.checkPermissionBtn(
  747. this.permissionBtn.baseConfigPermission.etaBaseConfig_watermark_ybChart
  748. )
  749. },
  750. // 是否有登录设置
  751. isShowLoginConfig(){
  752. return this.permissionBtn.checkPermissionBtn(
  753. this.permissionBtn.baseConfigPermission.etaBaseConfig_login
  754. )
  755. },
  756. isShowYBShare(){
  757. return this.permissionBtn.checkPermissionBtn(
  758. this.permissionBtn.baseConfigPermission.etaBaseConfig_watermark_ybShare
  759. )
  760. },
  761. isShowSource(){
  762. return this.permissionBtn.checkPermissionBtn(
  763. this.permissionBtn.baseConfigPermission.etaBaseConfig_source_see
  764. )
  765. },
  766. isShowReportEnShare(){
  767. return this.permissionBtn.checkPermissionBtn(
  768. this.permissionBtn.baseConfigPermission.etaBaseConfig_watermark_ybEnShare
  769. )
  770. },
  771. isHaveEnReport() {
  772. return this.permissionBtn.checkPermissionBtn(
  773. this.permissionBtn.enReportManageBtn.enReport_reportView
  774. )
  775. }
  776. },
  777. watch: {
  778. 'isShowLoginConfig':{
  779. handler(){
  780. if(!this.isShowLoginConfig&&this.partType==1){
  781. this.partType=2
  782. }
  783. },
  784. immediate:true
  785. }
  786. },
  787. methods: {
  788. handleUploadImage(file,key){
  789. /* console.log('type',key)
  790. console.log('file',file) */
  791. //如果是封面图
  792. if(['CnPptCoverImgs','EnPptCoverImgs'].includes(key)&&this.formData[key].length===3){
  793. this.$message.warning('封面图最多只能上传三张')
  794. return
  795. }
  796. //图片大小和格式限制
  797. const {size,type} = file.file
  798. const sizeLimit = key==='CompanyWatermark'?50*1024:500*1024
  799. if(!['image/png','image/jpeg'].includes(type)){
  800. this.$message.warning('仅支持png、jpg格式的图片')
  801. return
  802. }
  803. if(size>sizeLimit){
  804. this.$message.warning(`${key==='CompanyWatermark'?'水印图大小不能超过50kb':'ppt配图大小不能超过500kb'}`)
  805. return
  806. }
  807. let form = new FormData();
  808. form.append('file',file.file);
  809. bannerupload(form).then(res=>{
  810. console.log(res);
  811. if(res.Ret!==200) return
  812. if(['CnPptCoverImgs','EnPptCoverImgs'].includes(key)){
  813. this.formData[key].push(res.Data.ResourceUrl)
  814. }else{
  815. this.$set(this.formData,key,res.Data.ResourceUrl)
  816. // this.formData[key] = res.Data.ResourceUrl
  817. }
  818. console.log(this.formData);
  819. })
  820. },
  821. previewImage(picName){
  822. this.picShowList = this.picShowMap[picName]||[]
  823. this.picShowList.length&&(this.showViewer = true)
  824. },
  825. deleteFormImg(key,index){
  826. if(['CnPptCoverImgs','EnPptCoverImgs'].includes(key)){
  827. this.formData[key].splice(index,1)
  828. }else{
  829. this.formData[key] = ''
  830. }
  831. },
  832. showImage(imgList){
  833. this.picShowList = imgList||[]
  834. this.picShowList.length&&(this.showViewer = true)
  835. },
  836. showImageOrder({list,item}){
  837. //改变list的顺序,当前点击的为第一个
  838. const index = list.findIndex(img=>img===item)
  839. this.picShowList = [...list.slice(index),...list.slice(0,index)]
  840. this.picShowList.length&&(this.showViewer = true)
  841. },
  842. getBaseConfig(){
  843. this.configLoading = this.$loading({
  844. lock: true,
  845. target: '.eta-base-config',
  846. text: '正在获取基本配置...',
  847. spinner: 'el-icon-loading',
  848. background: 'rgba(255, 255, 255, 0.8)',
  849. });
  850. //获取WatermarkChart的值,赋值checkList
  851. //获取UseXf的值,赋值Iflytek
  852. //获取IsReportApprove的值,赋值approve
  853. //获取IsBIApprove的值,赋值BIApprove
  854. etaBaseConfigInterence.getBaseConfig().then(res=>{
  855. if(res.Ret!==200) return
  856. const {WatermarkChart='',UseXf='',IsReportApprove='',CnPptCoverImgs='',EnPptCoverImgs='',IsBIApprove=''} = res.Data
  857. this.checkList = WatermarkChart==='true'?['研报图表']:[]
  858. this.Iflytek = UseXf==='true'?true:false
  859. this.approve = IsReportApprove==='true'?true:false
  860. this.BIApprove = IsBIApprove==='true'?true:false
  861. if(res.Data){
  862. // this.$set(this,'formData',res.Data)
  863. this.formData = {...this.formData,...res.Data}
  864. this.formData.CnPptCoverImgs = CnPptCoverImgs.length?CnPptCoverImgs.split(','):[]
  865. this.formData.EnPptCoverImgs = EnPptCoverImgs.length?EnPptCoverImgs.split(','):[]
  866. this.formData.WatermarkReport=res.Data.WatermarkReport==='true'?true:false
  867. this.formData.LogoCN = res.Data.LogoCN || require('@/assets/img/login_logo.png')
  868. this.formData.LogoEN = res.Data.LogoEN || require('@/assets/img/en/logo.png')
  869. this.formData.LogoMobile = res.Data.LogoMobile || require('@/assets/img/logo_mobile.png')
  870. this.formData.ReportCenterLogoShow = res.Data.ReportCenterLogoShow==='true'?true:false;
  871. this.formData.ReportEnLogoShow = res.Data.ReportEnLogoShow==='true'?true:false;
  872. }
  873. this.configLoading&&this.configLoading.close()
  874. })
  875. },
  876. saveBaseConfig(){
  877. //rules验证
  878. this.$refs.baseConfigForm.validate((valid,obj)=>{
  879. console.log('valid',valid)
  880. console.log('obj',obj)
  881. //如果是中英文ppt没填写,切换标签栏
  882. const keys = Object.keys(obj)
  883. const cnProps = ['CnPptCoverImgs','CnPptBackgroundImg','CnPptBottomImg']
  884. const enProps = ['EnPptCoverImgs','EnPptBackgroundImg','EnPptBottomImg']
  885. for(let i = 0;i < keys.length;i++){
  886. if(cnProps.includes(keys[i])){
  887. this.pptLang = 'cn'
  888. break
  889. }
  890. if(enProps.includes(keys[i])){
  891. this.pptLang = 'en'
  892. break
  893. }
  894. }
  895. if(valid){
  896. if(this.formData.WxAppId || this.formData.WxAppSecret || this.formData.WxId){
  897. // 只要有一个填,其他必填
  898. if(!this.formData.WxAppId){
  899. this.$message.warning('AppID 不能为空')
  900. return
  901. }else if(!this.formData.WxAppSecret){
  902. this.$message.warning('AppSecret 不能为空')
  903. return
  904. }else if(!this.formData.WxId){
  905. this.$message.warning('原始Id 不能为空')
  906. return
  907. }
  908. }
  909. //froala 在非本地环境会有版权标识,在表单验证前去掉
  910. this.formData.Disclaimer = this.formData.Disclaimer.replace(/<p data-f-id=\"pbf\".*?<\/p>/g, "");
  911. this.formData.LoginEmailTemplateContent = this.formData.LoginEmailTemplateContent.replace(/<p data-f-id=\"pbf\".*?<\/p>/g, "");
  912. this.formData.WatermarkChart = ''+(this.checkList.includes('研报图表')?true:false)
  913. this.formData.UseXf = ''+(this.Iflytek?true:false)
  914. this.formData.IsReportApprove = ''+(this.approve?true:false)
  915. this.formData.IsBIApprove = ''+(this.BIApprove?true:false)
  916. const CnPptCoverImgs = this.formData.CnPptCoverImgs.join(',')
  917. const EnPptCoverImgs = this.formData.EnPptCoverImgs.join(',')
  918. //通过验证后,提交数据前
  919. //根据isShowXunFei,isShowPPTisShowEnPPT这三个计算属性将对应的表单项隐藏
  920. etaBaseConfigInterence.saveBaseConfig({
  921. ...this.formData,
  922. ...{
  923. CnPptCoverImgs,
  924. EnPptCoverImgs,
  925. WatermarkReport:this.formData.WatermarkReport?'true':'false',
  926. ReportCenterLogoShow:this.formData.ReportCenterLogoShow?'true':'false',
  927. ReportEnLogoShow:this.formData.ReportEnLogoShow?'true':'false',
  928. }
  929. }).then(res=>{
  930. if(res.Ret!==200) return
  931. // 设置logo
  932. this.$store.commit('SET_BASE_INFO',
  933. {logoCh:this.formData.LogoCN,logoEn:this.formData.LogoEN}
  934. )
  935. this.$message.success(this.$t('SystemManage.BaseConfig.tip_msg01')||'保存成功,请稍后到对应页面/项目查看')
  936. })
  937. }
  938. })
  939. },
  940. cancel(){
  941. //取消就恢复原样
  942. this.getBaseConfig()
  943. }
  944. },
  945. mounted(){
  946. this.getBaseConfig()
  947. }
  948. };
  949. </script>
  950. <style lang="scss">
  951. .eta-base-config{
  952. .el-form-item{
  953. .el-form-item__content{line-height: normal;}
  954. }
  955. .inline-form-item{
  956. display: flex;
  957. align-items: center;
  958. label{
  959. height: 40px;
  960. margin-right: 10px;
  961. white-space: nowrap;
  962. }
  963. .el-form-item__content{
  964. flex-grow: 1;
  965. }
  966. }
  967. .el-input__inner[type="color"]{
  968. height: 32px;
  969. padding: 0;
  970. border: none;
  971. }
  972. .fr-wrapper{
  973. height: 220px!important;
  974. .fr-element{
  975. min-height: 220px!important;
  976. }
  977. }
  978. .el-input--suffix .el-input__inner{
  979. padding-right:34px ;
  980. }
  981. .el-radio-button__inner{
  982. width: 150px;
  983. }
  984. }
  985. </style>
  986. <style scoped lang="scss">
  987. .eta-base-config{
  988. box-sizing: border-box;
  989. // padding:30px;
  990. border-radius: 4px;
  991. background-color: #fff;
  992. .scroll-cont {
  993. height: calc(100vh - 310px);
  994. overflow-y: auto;
  995. }
  996. .nav-type-box{
  997. display: flex;
  998. align-items: center;
  999. border-bottom: 1px solid #E7E7E7;
  1000. span{
  1001. display: block;
  1002. height: 100%;
  1003. line-height: 32px;
  1004. padding: 8px;
  1005. cursor: pointer;
  1006. margin-right: 10px;
  1007. color: rgba($color: #000000, $alpha: 0.6);
  1008. }
  1009. .active{
  1010. color: #0052D9;
  1011. border-bottom: 2px solid #0052D9;
  1012. }
  1013. }
  1014. .smart-report-title{
  1015. padding: 20px 30px 0;
  1016. font-size: 16px;
  1017. line-height: 22px;
  1018. color: #333333;
  1019. }
  1020. .base-config-form{
  1021. padding: 30px;
  1022. .el-form-item{
  1023. width:100%;
  1024. }
  1025. .part{
  1026. padding-bottom: 30px;
  1027. display: flex;
  1028. justify-content: space-between;
  1029. flex-wrap: wrap;
  1030. .side{
  1031. width:45%;
  1032. .form-item-type-two{
  1033. .input-suffix{
  1034. display: flex;
  1035. justify-content: center;
  1036. align-items: center;
  1037. height: 100%;
  1038. padding-right: 6px;
  1039. img{
  1040. height: 16px;
  1041. cursor: pointer;
  1042. }
  1043. }
  1044. }
  1045. .sms-type{
  1046. display: flex;
  1047. align-items: center;
  1048. justify-content: space-between;
  1049. }
  1050. .input-hint{
  1051. color: #999999;
  1052. font-size: 14px;
  1053. line-height: 20px;
  1054. margin-bottom: 10px;
  1055. margin-top: -3px;
  1056. }
  1057. .inline-form-item-box{
  1058. .line-form-item-name{
  1059. color: #606266;
  1060. font-size: 14px;
  1061. line-height: 40px;
  1062. }
  1063. .line-form-item{
  1064. width: 50%;
  1065. display: flex;
  1066. gap: 40px;
  1067. }
  1068. }
  1069. }
  1070. .ppt-form-item-wrap{
  1071. width:100%;
  1072. display: flex;
  1073. justify-content: space-between;
  1074. flex-wrap: wrap;
  1075. .inner-input-wrap{
  1076. width: 100%;
  1077. display: flex;
  1078. justify-content: space-between;
  1079. margin: 20px 0;
  1080. >.el-form-item{
  1081. width:30%;
  1082. }
  1083. }
  1084. >.el-form-item{
  1085. width:30%;
  1086. }
  1087. }
  1088. }
  1089. .flex-wrap {
  1090. display: flex;
  1091. flex-wrap: wrap;
  1092. gap: 10px;
  1093. }
  1094. }
  1095. }
  1096. </style>
  1097. <style lang="scss">
  1098. #logo-image{
  1099. .el-upload{
  1100. width: 100%;
  1101. height: 86px;
  1102. .upload-mask{
  1103. line-height: 86px;
  1104. }
  1105. }
  1106. .upload-box{
  1107. width: 100%;
  1108. height: 100%;
  1109. }
  1110. }
  1111. </style>