Feature.vue 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329
  1. <template>
  2. <div class="wrapper">
  3. <div class="main-features lg:mt-52px main-container">
  4. <div ref="text" class="relative text-container flex justify-around border-b-1px border-[#E1E3E8] overflow-x-auto px-60px">
  5. <Arrow class="btn z-2 prev absolute left-0 top-12px mr-5px cursor-pointer" @click.prevent ="changeGroup('left')" />
  6. <template v-for="(iconList, i) in iconData">
  7. <template v-if="i === activeGroup" v-for="(icon, index) in iconList">
  8. <div :key="index" class="cursor-pointer text-item pb-12px flex flex-col items-center w-150px" :class="[icon.index === activeIndex ? 'border-[#396FFA] border-b-3px' : '']" @click="changeIndex(icon.index)">
  9. <div>
  10. <img v-show="icon.index === activeIndex" :src="icon.iconActiveUrl" :alt="icon.alt" class="w-36px h-36px mb-8px" >
  11. <img v-show="icon.index !== activeIndex" :src="icon.iconUrl" :alt="icon.alt" class="w-36px h-36px mb-8px" >
  12. </div>
  13. <div class="whitespace-nowrap text-sm" :class="[icon.index === activeIndex ? 'font-600' : '']">{{ icon.iconTitle }}</div>
  14. </div>
  15. </template>
  16. </template>
  17. <Arrow class="btn z-2 next absolute right-0 top-12px ml-5px cursor-pointer" @click.prevent ="changeGroup('right')" />
  18. </div>
  19. <div v-show="i === activeIndex" v-for="(data, i) in featureData" :key="i" class="feature-item-container">
  20. <div class="flex justify-between flex-row-reverse py-80px">
  21. <div class="flex-1 flex flex-col justify-center max-w-480px">
  22. <div class="relative text-32px leading-48px text-[#232748] font-600">{{ data.title }}</div>
  23. <p class="my-12px text-16px leading-24px text-[#52555F]">{{ data.decs }}</p>
  24. <span class="move-arrow inline-flex items-center text-16px leading-24px text-[#396FFA] font-500 cursor-pointer" @click="openModal">申请试用<ArrowRightActive class="ml-8px move" /></span>
  25. </div>
  26. <div class="img-container relative flex items-center">
  27. <img :src="data.bannerUrl" :alt="data.alt" width="580">
  28. </div>
  29. </div>
  30. </div>
  31. </div>
  32. </div>
  33. </template>
  34. <script>
  35. import ArrowRightActive from '~/assets/images/tools/arrowRightActive.svg?inline'
  36. import Arrow from '~/assets/images/tools/arrow.svg?inline'
  37. export default {
  38. components: {
  39. ArrowRightActive,
  40. Arrow
  41. },
  42. data () {
  43. return {
  44. activeGroup: 0,
  45. index: 0,
  46. activeIndex: 0,
  47. iconData: [
  48. [
  49. {
  50. iconTitle: 'PDF查看',
  51. iconUrl: require('~/assets/images/tools/viewer.svg'),
  52. iconActiveUrl: require('~/assets/images/tools/viewerActive.svg'),
  53. index: 0
  54. },
  55. {
  56. iconTitle: 'PDF批注',
  57. iconUrl: require('~/assets/images/tools/annotation.svg'),
  58. iconActiveUrl: require('~/assets/images/tools/annotationActive.svg'),
  59. index: 1
  60. },
  61. {
  62. iconTitle: 'PDF签名',
  63. iconUrl: require('~/assets/images/tools/signatures.svg'),
  64. iconActiveUrl: require('~/assets/images/tools/signaturesActive.svg'),
  65. index: 2
  66. },
  67. {
  68. iconTitle: 'PDF内容编辑',
  69. iconUrl: require('~/assets/images/tools/contEdit.svg'),
  70. iconActiveUrl: require('~/assets/images/tools/contEditActive.svg'),
  71. index: 3
  72. },
  73. {
  74. iconTitle: 'PDF表单',
  75. iconUrl: require('~/assets/images/tools/formFill.svg'),
  76. iconActiveUrl: require('~/assets/images/tools/formFillActive.svg'),
  77. index: 4
  78. },
  79. {
  80. iconTitle: 'PDF页面管理',
  81. iconUrl: require('~/assets/images/tools/docEdit.svg'),
  82. iconActiveUrl: require('~/assets/images/tools/docEditActive.svg'),
  83. index: 5
  84. }
  85. ],
  86. [
  87. {
  88. iconTitle: 'PDF安全',
  89. iconUrl: require('~/assets/images/tools/encrypt.svg'),
  90. iconActiveUrl: require('~/assets/images/tools/encryptActive.svg'),
  91. index: 6
  92. },
  93. {
  94. iconTitle: 'PDF文档对比',
  95. iconUrl: require('~/assets/images/tools/compare.svg'),
  96. iconActiveUrl: require('~/assets/images/tools/compareActive.svg'),
  97. index: 7
  98. },
  99. {
  100. iconTitle: '格式转换',
  101. iconUrl: require('~/assets/images/tools/conversion.svg'),
  102. iconActiveUrl: require('~/assets/images/tools/conversionActive.svg'),
  103. index: 8
  104. },
  105. {
  106. iconTitle: 'OCR文字识别',
  107. iconUrl: require('~/assets/images/tools/ocr.svg'),
  108. iconActiveUrl: require('~/assets/images/tools/ocrActive.svg'),
  109. index: 9
  110. },
  111. {
  112. iconTitle: '标记密文',
  113. iconUrl: require('~/assets/images/tools/notes.svg'),
  114. iconActiveUrl: require('~/assets/images/tools/notesActive.svg'),
  115. index: 10
  116. },
  117. {
  118. iconTitle: '文件压缩',
  119. iconUrl: require('~/assets/images/tools/compress.svg'),
  120. iconActiveUrl: require('~/assets/images/tools/compressActive.svg'),
  121. index: 11
  122. },
  123. ]
  124. ],
  125. featureData: [
  126. {
  127. title: 'PDF阅读SDK',
  128. alt: 'Viewer',
  129. decs: '专业的PDF SDK提供了强大的PDF查看功能,为您的应用程序带来流畅,舒适的阅读体验。提供放大镜,多种翻页模式,旋转等适配不同开发平台的阅读习惯。通过文本搜索,书签,大纲等方式,快速定位PDF内容。提供夜间模式,自定义主题等来适应不同阅读环境。',
  130. bannerUrl: '/images/tools/viewer.png',
  131. index: 0
  132. },
  133. {
  134. title: 'PDF注释SDK',
  135. alt: 'Annotations',
  136. decs: '丰富的PDF注释类型,使您的应用程序支持添加,设置,导入,导出,扁平化,注解,回复,管理,显示/隐藏几十种注释,包括文字、图章、亮高、下划线、删除线、波浪线、形状(矩形、圆形等),箭头、线条、自由画笔,链接,语音等。',
  137. bannerUrl: '/images/tools/annotation.png',
  138. index: 1
  139. },
  140. {
  141. title: 'PDF签名SDK',
  142. alt: 'Signatures',
  143. decs: '提供电子签名和数字签名,支持多种签名类型签署文档如图片签名,基于字体的签名,触控笔或手写笔签名,以及包含签名人身份信息的数字签名,满足您应用程序所有的签名需求,轻松签署和验证PDF文档,保证文档的完整性和真实性。',
  144. bannerUrl: '/images/tools/signatures.png',
  145. index: 2
  146. },
  147. {
  148. title: 'PDF内容编辑SDK',
  149. alt: 'Content Editor',
  150. decs: '像编辑Word文档一样,灵活地编辑PDF文字和图片。集成PDF SDK,使在您的app中添加,删除,替换或者移动PDF文档中的文字和图片成为可能,并支持查看和设置属性,如字体,颜色,大小等。',
  151. bannerUrl: '/images/tools/contEditor.png',
  152. index: 3
  153. },
  154. {
  155. title: 'PDF表单SDK',
  156. alt: 'Form Filling',
  157. decs: '我们的PDF SDK提供了完善的PDF表格功能,让你的应用程序支持轻松创建和填写PDF表格。提供多种表单域工具,如文字框,下拉框,列表框,单选框、复选框、按钮等,使您app的用户轻松设计和布局表单。',
  158. bannerUrl: '/images/tools/formFill.png',
  159. index: 4
  160. },
  161. {
  162. title: 'PDF编辑SDK:页面管理',
  163. alt: 'Document Editor',
  164. decs: '提供便捷的PDF页面管理功能,支持轻松操作和编辑PDF页面,如移动、添加、删除、PDF合并、PDF拆分、替换、旋转PDF页面。',
  165. bannerUrl: '/images/tools/docEditor.png',
  166. index: 5
  167. },
  168. {
  169. title: 'PDF加密SDK',
  170. alt: 'PDF Encrypt',
  171. decs: '为您的app/系统,提供密码保护功能,轻松为文档设置不同加密级别的加密方式,如RC4和高级加密算法AES-128 & AES-256。甚至可以为不同的角色设置不同的文档权限,如阅读,打印,复制,分享等。支持给PDF文档批量添加水印、页眉页脚、贝茨码等',
  172. bannerUrl: '/images/tools/encrypt.png',
  173. index: 6
  174. },
  175. {
  176. title: 'PDF文件对比SDK',
  177. alt: 'PDF Compare',
  178. decs: '集成PDF文档对比功能,逐字、逐段、逐页进行精准对比并分类列出不同版本的文档中新增、替换、删除的文本。提供覆盖对比方式有效对比图纸类文档。',
  179. bannerUrl: '/images/tools/compare.png',
  180. index: 7
  181. },
  182. {
  183. title: 'PDF转换SDK',
  184. alt: 'PDF Conversion',
  185. decs: '基于AI的PDF转换库,拥有更高的转换精准度,快速高效地将PDF文件转换成其他格式,或者将其他格式的文件转换成PDF文档,支持的格式包括Word, Excel, PPT, PNG, JPG, RTF, CSV, HTML等。',
  186. bannerUrl: '/images/tools/conversion.png',
  187. index: 8
  188. },
  189. {
  190. title: 'OCR文字识别SDK',
  191. alt: 'PDF OCR',
  192. decs: '提供强大的OCR图片文字识别SDK开发包,让你可以在你的应用程序中轻松识别图片或者扫描文件中的文字。支持文件版面分析和图片预处理功能,提高低质量图片的识别效果。支持识别常用的中文,英文,西班牙语,法语等几十种语言。',
  193. bannerUrl: '/images/tools/ocr.png',
  194. index: 9
  195. },
  196. {
  197. title: '标记密文SDK',
  198. alt: 'PDF Notes',
  199. decs: '集成标记密文功能,在应用程序中轻松覆盖并移除PDF文档中的敏感信息或者不可外泄的文字或图片信息。支持设置标记的样式、颜色、文字说明等,擦除的信息无法恢复。',
  200. bannerUrl: '/images/tools/notes.png',
  201. index: 10
  202. },
  203. {
  204. title: '多文件压缩SDK',
  205. alt: 'PDF Compress',
  206. decs: '优秀的文档压缩SDK/API,让你可以在你的应用程序中轻松压缩或优化一个或批量的PDF文件,删除冗余数据,降低文件存储和传输压力。支持不同级别的文档压缩。',
  207. bannerUrl: '/images/tools/compress.png',
  208. index: 11
  209. }
  210. ]
  211. }
  212. },
  213. methods: {
  214. changeIndex (i) {
  215. this.activeIndex = i
  216. },
  217. openModal () {
  218. this.$emit('open')
  219. },
  220. changeGroup (to) {
  221. // <Arrow class="btn prev absolute left-0 top-12px cursor-pointer" @click="activeGroup = (activeGroup === 1 ? 0 : 1)" /><Arrow class="btn next absolute right-0 top-12px cursor-pointer" @click="activeGroup = (activeGroup === 1 ? 0 : 1)" />
  222. this.activeGroup = (this.activeGroup === 1 ? 0 : 1)
  223. if (to === 'right'){
  224. if (this.activeIndex <= 5) {
  225. this.activeIndex = this.activeIndex + 6
  226. } else {
  227. this.activeIndex = this.activeIndex - 6
  228. }
  229. } else {
  230. if (this.activeIndex > 5) {
  231. this.activeIndex = this.activeIndex - 6
  232. } else {
  233. this.activeIndex = this.activeIndex + 6
  234. }
  235. }
  236. }
  237. }
  238. }
  239. </script>
  240. <style lang="scss" scoped>
  241. .main-content {
  242. font-family: 'Poppins';
  243. .main-features {
  244. position: sticky;
  245. top: 0rem;
  246. display: flex;
  247. flex-direction: column;
  248. height: 100vh;
  249. padding-top: 70px;
  250. overflow: hidden;
  251. .video-container {
  252. position: relative;
  253. display: flex;
  254. flex-grow: 1;
  255. }
  256. .text-container {
  257. scrollbar-width: none; /* firefox */
  258. -ms-overflow-style: none; /* IE 10+ */
  259. & :nth-child(1) {
  260. .mx-8px {
  261. padding-left: 12px;
  262. padding-right: 12px;
  263. }
  264. }
  265. .text-item {
  266. .line-container {
  267. height: 2px;
  268. overflow: hidden;
  269. opacity: 1;
  270. }
  271. }
  272. }
  273. .text-container::-webkit-scrollbar {
  274. display: none; /* Chrome Safari */
  275. }
  276. }
  277. }
  278. .move-arrow {
  279. svg {
  280. transition: all 0.25s ease-out;
  281. }
  282. &:hover svg {
  283. transform: translateX(8px);
  284. }
  285. }
  286. ::-webkit-scrollbar {
  287. scrollbar-width: none; /* firefox */
  288. -ms-overflow-style: none;
  289. display: none; /* Chrome Safari */
  290. }
  291. .line-container {
  292. position: relative;
  293. height: 2px;
  294. overflow: hidden;
  295. opacity: 1;
  296. &::before {
  297. content: '';
  298. position: absolute;
  299. top: 1px;
  300. left: 0;
  301. width: 100%;
  302. height: 1px;
  303. background-color: #E1E3E8;
  304. }
  305. }
  306. .next {
  307. transform: rotate(180deg);
  308. }
  309. .line {
  310. position: relative;
  311. width: 100%;
  312. height: 2px;
  313. background-color: #396FFA;
  314. transform-origin: left center;
  315. }
  316. .main-content .main-features .text-container .text-item .title {
  317. font-size: 18px;
  318. }
  319. .main-content .main-features .video-container {
  320. margin-bottom: 3.125rem;
  321. }
  322. @media screen and (min-width: 1280px) {
  323. .main-content .main-features .text-container .text-item .title {
  324. font-size: 22px;
  325. }
  326. }
  327. </style>