etaBaseConfig.vue 56 KB

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