askbot-dragon 1.7.34-beta → 1.7.35-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/README.md +27 -27
  2. package/babel.config.js +6 -6
  3. package/dragon.iml +7 -7
  4. package/package.json +56 -54
  5. package/public/index.html +73 -75
  6. package/src/App.vue +31 -31
  7. package/src/api/index.js +1 -1
  8. package/src/api/mock.http +2 -2
  9. package/src/api/requestUrl.js +185 -185
  10. package/src/assets/js/AliyunlssUtil.js +141 -94
  11. package/src/assets/js/Base64Util.js +22 -22
  12. package/src/assets/js/common.js +252 -252
  13. package/src/assets/js/hammer.js +100 -89
  14. package/src/assets/js/script.js +36 -36
  15. package/src/assets/less/common.css +6773 -6773
  16. package/src/assets/less/converSationContainer/common.less +199 -192
  17. package/src/assets/less/converSationContainer/converSatonContainer.less +493 -493
  18. package/src/assets/less/iconfont.css +37 -37
  19. package/src/assets/less/ticketMessage.less +294 -294
  20. package/src/components/ActionAlertIframe.vue +177 -154
  21. package/src/components/AiGuide.vue +438 -471
  22. package/src/components/AnswerDocknowledge.vue +1111 -1068
  23. package/src/components/AnswerVoice.vue +285 -285
  24. package/src/components/AskIFrame.vue +15 -15
  25. package/src/components/ConversationContainer.vue +10764 -10960
  26. package/src/components/FileType.vue +86 -86
  27. package/src/components/Message.vue +27 -27
  28. package/src/components/MyEditor.vue +342 -350
  29. package/src/components/QwFeedback.vue +301 -301
  30. package/src/components/actionSatisfaction.vue +107 -107
  31. package/src/components/actionSendToBot.vue +62 -62
  32. package/src/components/answerDissatisfaction.vue +62 -62
  33. package/src/components/answerRadio.vue +204 -204
  34. package/src/components/ask-components/DissatisfactionOptions.vue +57 -57
  35. package/src/components/ask-components/Msgloading.vue +37 -37
  36. package/src/components/ask-components/SatisfactionV2.vue +15 -15
  37. package/src/components/askVideo.vue +162 -139
  38. package/src/components/assetDetails.vue +378 -378
  39. package/src/components/assetMessage.vue +228 -228
  40. package/src/components/associationIntention.vue +378 -374
  41. package/src/components/attachmentPreview.vue +90 -90
  42. package/src/components/botActionSatisfactor.vue +68 -68
  43. package/src/components/chatContent.vue +513 -513
  44. package/src/components/feedBack.vue +136 -136
  45. package/src/components/fielListView.vue +351 -351
  46. package/src/components/file/AliyunOssComponents.vue +108 -108
  47. package/src/components/formTemplate.vue +3501 -3507
  48. package/src/components/imgView.vue +32 -0
  49. package/src/components/intelligentSummary.vue +231 -227
  50. package/src/components/kkview.vue +1138 -1138
  51. package/src/components/loadingProcess.vue +164 -164
  52. package/src/components/markDownText.vue +198 -0
  53. package/src/components/message/ActionAlertIframe.vue +112 -112
  54. package/src/components/message/ShopMessage.vue +164 -164
  55. package/src/components/message/TextMessage.vue +928 -924
  56. package/src/components/message/TicketMessage.vue +201 -201
  57. package/src/components/message/swiper/index.js +4 -4
  58. package/src/components/message/swiper/ticketSwiper.vue +503 -503
  59. package/src/components/message/swiper/ticketSwiperItem.vue +61 -61
  60. package/src/components/msgLoading.vue +231 -231
  61. package/src/components/myPopup.vue +70 -70
  62. package/src/components/newPdfPosition.vue +878 -0
  63. package/src/components/pagination.vue +129 -0
  64. package/src/components/pdfPosition.vue +1514 -1334
  65. package/src/components/popup.vue +227 -227
  66. package/src/components/preview/docView.vue +107 -0
  67. package/src/components/preview/excelView.vue +160 -0
  68. package/src/components/preview/newPositionPreview.vue +285 -0
  69. package/src/components/preview/pdfView.vue +737 -0
  70. package/src/components/previewDoc.vue +251 -247
  71. package/src/components/previewPdf.vue +822 -779
  72. package/src/components/receiverMessagePlatform.vue +65 -65
  73. package/src/components/recommend.vue +80 -80
  74. package/src/components/selector/hOption.vue +20 -20
  75. package/src/components/selector/hSelector.vue +199 -199
  76. package/src/components/selector/hWrapper.vue +216 -216
  77. package/src/components/senderMessagePlatform.vue +50 -50
  78. package/src/components/source/BotMessage.vue +24 -24
  79. package/src/components/source/CustomMessage.vue +24 -24
  80. package/src/components/test.vue +260 -260
  81. package/src/components/tree.vue +307 -307
  82. package/src/components/utils/AliyunIssUtil.js +103 -82
  83. package/src/components/utils/ckeditor.js +185 -174
  84. package/src/components/utils/format_date.js +25 -25
  85. package/src/components/utils/index.js +6 -6
  86. package/src/components/utils/math_utils.js +29 -29
  87. package/src/components/voiceComponent.vue +119 -119
  88. package/src/components/welcomeKnowledgeFile.vue +344 -340
  89. package/src/components/welcomeLlmCard.vue +144 -140
  90. package/src/components/welcomeSuggest.vue +97 -97
  91. package/src/locales/cn.json +72 -0
  92. package/src/locales/en.json +73 -0
  93. package/src/locales/jp.json +73 -0
  94. package/src/main.js +75 -57
  95. package/vue.config.js +54 -54
@@ -1,779 +1,822 @@
1
-
2
- <!-- preview-pdf
3
- 组件主要负责 知识项目中 文件的预览,携带定位信息参数 tagIds tagId 的会解析文件增加定位功能
4
- 不携带定位信息的 也是走 kkview项目预览
5
- 另外增加了在知识项目中预览当前文件的一些功能
6
- -->
7
- <template>
8
- <el-drawer title="我是标题" :visible.sync="drawer" :with-header="false" :append-to-body="true" :destroy-on-close="true"
9
- :modal="false" :direction="previewShowPopup ? 'btt' : 'rtl'" :size="previewShowPopup ? '90%' : '65%'"
10
- custom-class="pdf-preview-drawer" v-if="drawer">
11
- <!-- v-else-if="drawer" -->
12
- <div class="drawer-header" :class="isLiBang ? 'libang_head' : ''" v-if="!isPc">
13
- <div class="header-btn btn_position">
14
- <div class="onload_btn" v-if="isDownload" @click="downLoad">
15
- 下载
16
- </div>
17
- <div class="summaryBtn" :class="showSummary ? 'summaryActiveBtn' : ''" @click="summaryFun" v-if="isHasChat">
18
- <i class="iconfont guoran-tongyichicun-write-29-jiqiren"></i>
19
- <span>智能摘要</span>
20
- </div>
21
- <template v-if="isHasChat">
22
- <div class="chat" @click="previewToDialog(true)" v-if="!previewKnowledgeId">
23
- <i class="iconfont guoran-wendapingjia"></i>
24
- 聊一聊
25
- </div>
26
- <div class="chat chat_active" @click="previewToDialog(false)" v-else>
27
- <i class="iconfont guoran-wendapingjia"></i>
28
- 聊一聊
29
- </div>
30
- </template>
31
- </div>
32
- <div class="header_title">
33
- <div class="header_close">
34
- <span class="title_left">
35
- {{ title ? title : "查看详情" }}
36
- </span>
37
- <section @click="close">
38
- <i class="iconfont guoran-shanchu"></i>
39
- </section>
40
- </div>
41
- <p v-if="folderName && isLiBang" class="header_floder" @click="clickFloder">
42
- <i class="iconfont guoran-tongyichicun-wenjianjia-zhankaizhuangtai--folderOpen"></i>
43
- {{ folderName }}
44
- <i v-if="folderUrl" class="iconfont guoran-tongyichicun-dianjichakantuli"></i>
45
- </p>
46
- </div>
47
- </div>
48
- <div class="drawer-header" :class="isLiBang && folderName ? 'libang_head' : ''" v-else>
49
- <div class="header_title">
50
- <div :class="isLiBang && folderName ? 'header_close' : 'header_top'">
51
- <span class="title_left">
52
- {{ title ? title : "查看详情" }}
53
- </span>
54
- <div class="header-btn">
55
- <div class="onload_btn" v-if="isDownload || true" @click="downLoad">
56
- 下载
57
- </div>
58
- <div class="summaryBtn" :class="showSummary ? 'summaryActiveBtn' : ''" @click="summaryFun"
59
- v-if="isHasChat || true">
60
- <i class="iconfont guoran-tongyichicun-write-29-jiqiren"></i>
61
- <span>智能摘要</span>
62
- </div>
63
- <template v-if="isHasChat || true">
64
- <div class="chat" @click="previewToDialog(true)" v-if="!previewKnowledgeId">
65
- <i class="iconfont guoran-wendapingjia"></i>
66
- 聊一聊
67
- </div>
68
- <div class="chat chat_active" @click="previewToDialog(false)" v-else>
69
- <i class="iconfont guoran-wendapingjia"></i>
70
- 聊一聊
71
- </div>
72
- </template>
73
- <section @click="close">
74
- <i class="iconfont guoran-shanchu"></i>
75
- </section>
76
- </div>
77
- </div>
78
- <p v-if="folderName && isLiBang" class="header_floder" @click="clickFloder">
79
- <i class="iconfont guoran-tongyichicun-wenjianjia-zhankaizhuangtai--folderOpen"></i>
80
- {{ folderName }}
81
- <i v-if="folderUrl" class="iconfont guoran-tongyichicun-dianjichakantuli"></i>
82
- </p>
83
- </div>
84
- </div>
85
- <div id="drawer_content_pre" :class="isLiBang && folderName ? 'libang_content_pre' : ''">
86
- <!-- :style="{marginTop:tagIds && tagIds.length != 0 && isPc ? '50px' : ''}" -->
87
- <intelligent-summary v-show="showSummary && isHasChat" :tagIds="tagIds" :knowledgeId="knowledgeId"
88
- @closeSummary="closeSummary" @recommendQues="recommendQues"
89
- @getSummarySuccess="getSummarySuccess"></intelligent-summary>
90
- <div class="pdf_positon" :style="pdfStyle" v-if="tagIds && tagIds.length != 0 && drawer">
91
- <pdfPosition :tagIds="tagIds" :isMessageRecord="isMessageRecord" :textWatermarkStr="textWatermarkStr">
92
- </pdfPosition>
93
- </div>
94
- <template v-else>
95
- <div v-if="fileType == 'VIDEO'" style="width: 100%;">
96
- <video :src="url" controls width="100%;" height="98%"></video>
97
- </div>
98
- <div v-else-if="fileType == 'HTML'" style="width: 100%;">
99
- <div class="preview_iframe_html" style="text-algin:left" v-html="fileText"></div>
100
- </div>
101
- <template v-else-if="url.includes('https://www') || url.includes('http://www')">
102
- <iframe class="preview_iframe" :src="url" width="100%" height="100%" scrolling="100%" frameborder="no"
103
- border="0"></iframe>
104
- </template>
105
- <template v-else>
106
- <iframe class="preview_iframe_kk" :src="previewUrl" style="border:none;"
107
- :style="{ height: iframeHeight }"></iframe>
108
- </template>
109
- </template>
110
- <!-- <div class="mobile_onload_btn" v-if="isDownload && !isPc" @click="downLoad">
111
- 下载
112
- </div> -->
113
- </div>
114
- <div class="loading_img" v-show="loading">
115
- <img src="https://guoranopen-zjk.oss-cn-zhangjiakou.aliyuncs.com/cdn-common/images/loading.gif" alt="">
116
- </div>
117
- <div id="text">
118
- {{ copy }}
119
- </div>
120
- </el-drawer>
121
- </template>
122
-
123
- <script>
124
- import pdfPosition from './pdfPosition.vue'
125
- import { zoomElement } from '../assets/js/hammer'
126
- import IntelligentSummary from "./intelligentSummary";
127
- import { isMobile } from "../assets/js/common";
128
- import { Toast } from 'vant';
129
- export default {
130
- data () {
131
- return {
132
- previewShowPopup: false,
133
- fileText: '',
134
- fileType: "",
135
- isPc: false,
136
- drawer: false,
137
- tagIds: [],
138
- // '6454aa1a70573a6ead6f0f7d', '6454aa1a70573a6ead6f0f81',
139
- loading: true,
140
- previewKnowledgeId: "",
141
- showSummary: true,
142
- iframeHeight: "100%",
143
- isDownload: false,
144
- textWatermarkStr: "",
145
- copy:''
146
- }
147
- },
148
- mounted () {
149
- window.addEventListener('message', this.handleIframeMessage, false);
150
- this.isPcFun();
151
- },
152
- props: {
153
- url: {
154
- type: String,
155
- required: true,
156
- },
157
- officePreviewType: {
158
- type: String,
159
- default: ''
160
- },
161
- isMessageRecord: {
162
- type: Boolean,
163
- default: false,
164
- },
165
- sourceFileType: {
166
- type: String,
167
- default: '',
168
- },
169
- title: {
170
- type: String,
171
- default: ''
172
- },
173
- isHasChat: {
174
- type: Boolean,
175
- default: false
176
- },
177
- knowledgeId: {
178
- type: String,
179
- default: '',
180
- },
181
- previewOssPath: {
182
- type: String,
183
- default: '',
184
- },
185
- folderName: {
186
- type: String,
187
- default: '',
188
- },
189
- folderUrl: {
190
- type: String,
191
- default: '',
192
- },
193
- isLiBang: {
194
- type: Boolean,
195
- default: false
196
- }},
197
- components: {
198
- IntelligentSummary,
199
- pdfPosition
200
- },
201
- watch: {
202
- drawer (value) {
203
- if (value) {
204
- this.$emit('open')
205
- this.$nextTick(() => {
206
- zoomElement(document.getElementById('drawer_content_pre'))
207
- })
208
- } else {
209
- this.$emit('close')
210
- }
211
- },
212
- showSummary: {
213
- handler (val) {
214
- // if (!val){
215
- // this.$nextTick(() => {
216
- // let preCon = document.querySelector('.pdf_view');
217
- // if (preCon){
218
- // preCon.style.height = 'calc(100% - ' + 50 + 'px)'
219
- // }
220
- // })
221
- // } else {
222
- // this.getSummarySuccess();
223
- // }
224
- if (val) {
225
- this.getSummarySuccess();
226
- }
227
- }
228
- },
229
- knowledgeId: {
230
- handler (val) {
231
- if (val) {
232
- this.getTextWatermark();
233
- }
234
- }
235
- }
236
- },
237
- computed: {
238
- pdfStyle () {
239
- return {
240
- paddingTop: this.isPc ? '30px' : '0', // 30px 是 加上外层的 20 流出 50的上边距展示 放大缩小操作栏
241
- paddingBottom: this.tagIds > 1 ? '60px' : '0',
242
- height: '100%'
243
- }
244
- },
245
- previewUrl () {
246
- console.debug('VUE_APP_ENV', process.env.VUE_APP_ENV)
247
- let url = process.env.VUE_APP_ENV === 'production' ? 'https://kkfileview.askbot.cn/onlinePreview?url=' : 'https://test.open.askbot.cn/kkfileview/onlinePreview?url='
248
- // if(this.url != '') {
249
- // if(/[\u4E00-\u9FA5]+/g.test(this.url)) {
250
- // url += btoa(encodeURIComponent(this.url))
251
- // } else {
252
- // url += btoa(this.url)
253
- // }
254
- // }
255
- url = url + this.url
256
- if (this.sourceFileType == '.ppt' || this.sourceFileType == '.pptx' || this.sourceFileType == '.pdf') {
257
- url += '&officePreviewType=pdf'
258
- }
259
- console.log('textWatermarkStr 216', this.textWatermarkStr)
260
- if (this.textWatermarkStr) {
261
- url += '&textWatermarkValue=' + this.textWatermarkStr
262
- }
263
- return url
264
- },
265
- // fileType() {
266
- // const fileType = this.url.substring(this.url.lastIndexOf('.'));
267
- // if (fileType === '.mp4' || fileType === '.MP4' || fileType === '.MOV' || fileType === '.mov') {
268
- // return 'VIDEO'
269
- // } else {
270
- // return 'OTHER'
271
- // }
272
-
273
- // }
274
- },
275
- methods: {
276
- close () {
277
- setTimeout(() => {
278
- this.previewShowPopup = false;
279
- this.fileType = ''
280
- }, 300)
281
- this.drawer = false;
282
- this.showSummary = false;
283
- },
284
- loadIframe () {
285
-
286
- if (this.fileType == 'VIDEO' || this.fileType == 'WECHAT' || (this.tagIds && this.tagIds.length != 0)) {
287
- this.loading = false
288
- } else {
289
- let iframe = document.getElementsByClassName('preview_iframe')[0] || document.getElementsByClassName('preview_iframe_kk')[0];
290
- if (iframe) {
291
- iframe.onload = () => {
292
- this.loading = false;
293
- document.getElementById('drawer_content_pre').style.backgroundImage = 'none'
294
- }
295
- }
296
- // let time = setInterval(() =>{
297
- //
298
- // if(iframe) {
299
- // this.loading = false
300
- // clearInterval(time)
301
- // }
302
- // }, 500)
303
- }
304
- },
305
- getBolb () {
306
- this.$http.post('/knowledge-api/knowledge/htmlTextDeal?onlyText=false', {
307
- fileInOssPath: this.url,
308
- templateId: ''
309
- }).then(res => {
310
- if (res.data.code == 0) {
311
- this.fileText = res.data.data
312
- this.loading = false
313
- }
314
- })
315
- },
316
- previewToDialog (flag) {
317
- this.$emit('previewToDialog', flag)
318
- },
319
- closeSummary () {
320
- this.showSummary = false;
321
- },
322
- recommendQues (item, knowledgeId) {
323
- console.log('recommendQues', item, knowledgeId);
324
- this.$emit('recommendQues', item, knowledgeId)
325
- },
326
- handleIframeMessage (res) {
327
- console.log('handleIframeMessage', res)
328
- if (res.data.type == 'getViewerHeight') {
329
- let iframeHeight = this.iframeHeight.replace('px', '')
330
- if (res.data.data && iframeHeight != (res.data.data + 50)) {
331
- this.iframeHeight = res.data.data + 50 + 'px'
332
- }
333
- }
334
- },
335
- summaryFun () {
336
- this.showSummary = !this.showSummary;
337
- if (this.showSummary) {
338
- document.getElementById('drawer_content_pre').scrollTop = 0;
339
- }
340
- },
341
- getSummarySuccess () {
342
- this.$nextTick(() => {
343
- // if (this.tagIds.length > 0){
344
- // let intelligentSummary = document.getElementById('intelligentSummary');
345
- // let preCon = document.querySelector('.pdf_view')
346
- // if (intelligentSummary){
347
- // let height = intelligentSummary.offsetHeight + (this.isPc ? 100 : 50 );
348
- // if (preCon){
349
- // preCon.style.height = 'calc(100% - ' + height + 'px)'
350
- // }
351
- // console.log('height',height,preCon)
352
- // }
353
- // }
354
- // let intelligentSummary = document.getElementById('intelligentSummary');
355
- // let height = intelligentSummary.offsetHeight
356
- // this.pdfStyle.height = 'calc(100% - ' + height + 'px)'
357
- })
358
- },
359
- getTextWatermark () {
360
- let url = '/knowledge-api/open/knowledge/getPermissionInfo';
361
- let obj = {
362
- "knowledgeId": this.knowledgeId,
363
- "userId": sessionStorage.getItem('_currentUserId'),
364
- "mainId": sessionStorage.getItem('_mainId'),
365
- "corpId": sessionStorage.getItem('_corpid')
366
- }
367
- this.$http.post(url, obj).then(res => {
368
- console.log('getTextWatermark', res.data.data)
369
- if (res.data.data) {
370
- this.textWatermarkStr = res.data.data.textWatermarkStr;
371
- this.isDownload = res.data.data.showDownloadBtn;
372
- }
373
- })
374
- },
375
- downLoad () {
376
- let url = this.previewOssPath
377
- if (decodeURIComponent(url) != url) {
378
- url = decodeURIComponent(url)
379
- }
380
- const fileType = url.substring(url.lastIndexOf('.'));
381
- this.$http.post('/knowledge-api/temporary-certificate/or-origin?expired=10', url, {
382
- headers: {
383
- "Content-Type": "application/json",
384
- }
385
- }).then(res => {
386
- console.log('downLoad 341', res)
387
- if (res.data || res.bodyText) {
388
- if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) {
389
- this.copy = res.data
390
- if (isMobile()) {
391
- setTimeout(() =>{
392
- const range = document.createRange();
393
- range.selectNode(document.getElementById('text'));
394
- const selection = window.getSelection();
395
- //移除之前选中内容
396
- if (selection.rangeCount > 0) selection.removeAllRanges();
397
- selection.addRange(range);
398
- document.execCommand('copy');
399
- selection.removeAllRanges()
400
- Toast('下载地址已复制,请前往Safari浏览器访问下载');
401
- this.close()
402
- },100)
403
- } else {
404
- let a = document.createElement('a')
405
- a.href = res.data
406
- a.download = (this.title) + fileType
407
- a.dispatchEvent(new MouseEvent('click', { bubbles: true, cancelable: true, view: window }))
408
- }
409
- return
410
- } else {
411
- // setTimeout(() =>{
412
- // window.open(res.data,'下载', 'noopener')
413
- // }, 2000)
414
- // window.open(res.data,'下载', 'noopener')
415
- if (isMobile()) {
416
- const iframe = document.createElement("iframe");
417
- iframe.setAttribute("hidden", "hidden");
418
- iframe.onload = () => {
419
- if (iframe) {
420
- console.log("iframe onload....")
421
- iframe.setAttribute('src', 'about:blank');
422
- }
423
- };
424
- document.body.insertBefore(iframe, null);
425
- iframe.setAttribute("src", res.data);
426
- } else {
427
- let a = document.createElement('a')
428
- a.href = res.data
429
- a.download = (this.title) + fileType
430
- a.dispatchEvent(new MouseEvent('click', { bubbles: true, cancelable: true, view: window }))
431
- }
432
- this.close()
433
- }
434
- }
435
- })
436
- },
437
- isPcFun () {
438
- if (/(iPhone|iPad|iPod|iOS|Android)/i.test(navigator.userAgent)) {
439
- this.isPc = false
440
- } else {
441
- this.isPc = true
442
- }
443
- },
444
- clickFloder() {
445
- this.$emit('previewClickFloder')
446
- }},
447
- beforeDestroy () {
448
- window.removeEventListener('message', this.handleIframeMessage);
449
- }
450
- }
451
- </script>
452
-
453
- <style lang="less" scoped>
454
- #drawer_content_pre {
455
- padding: 20px;
456
- scroll-behavior: smooth;
457
-
458
- .mobile_onload_btn {
459
- position: absolute;
460
- right: 0;
461
- bottom: 10%;
462
- width: 20px;
463
- height: 60px;
464
- display: flex;
465
- align-items: center;
466
- justify-content: center;
467
- cursor: pointer;
468
- border-top-left-radius: 10px;
469
- border-bottom-left-radius: 10px;
470
- color: #366aff;
471
- background: #ffffff;
472
- border: 1px solid #a1b9ff;
473
- font-size: 12px;
474
- border-right: none;
475
- text-align: center;
476
- }
477
-
478
- .pdf_positon {
479
- width: 100%;
480
- box-sizing: border-box;
481
- }
482
- }
483
-
484
- .onload_btn {
485
- width: 76px;
486
- height: 26px;
487
- display: flex;
488
- align-items: center;
489
- justify-content: center;
490
- cursor: pointer;
491
- margin-right: 10px;
492
- border-radius: 15px;
493
- color: #366aff;
494
- background: #ffffff;
495
- border: 1px solid #a1b9ff;
496
- box-sizing: border-box;
497
- }
498
-
499
- .preview_iframe {
500
- width: 100%;
501
- height: 100%;
502
- box-sizing: border-box;
503
- background-image: url('https://guoranopen-zjk.oss-cn-zhangjiakou.aliyuncs.com/cdn-common/images/loading.gif');
504
- background-position: center;
505
- background-size: 50px;
506
- background-repeat: no-repeat;
507
- }
508
-
509
- .preview_iframe_kk {
510
- width: 100%;
511
- height: 100%;
512
- }
513
-
514
- .preview_iframe_html {
515
- width: 100%;
516
- height: 100%;
517
- overflow-y: scroll;
518
- text-align: left;
519
- box-sizing: border-box;
520
- padding: 16px;
521
-
522
- /deep/.lake-content {
523
- margin-left: 10px;
524
- }
525
-
526
- /deep/a:link {
527
- color: #0000ee !important;
528
- }
529
-
530
- /deep/a:visited {
531
- color: #0000ee !important;
532
- }
533
-
534
- /deep/a:hover {
535
- color: #0000ee !important;
536
- }
537
-
538
- /deep/a:active {
539
- color: #0000ee !important;
540
- }
541
-
542
- /deep/li:not(.rich-text-li),
543
- ol:not(.list-paddingleft-2),
544
- ul:not(.list-paddingleft-2) {
545
- list-style-type: auto !important;
546
- }
547
-
548
- /deep/img {
549
- width: 100%;
550
- }
551
-
552
- /deep/.ne-table {
553
- width: 100% !important;
554
- }
555
- }
556
-
557
- .footer {
558
- width: calc(100% - 40px);
559
- height: 50px;
560
- display: flex;
561
- align-items: center;
562
- justify-content: space-between;
563
- cursor: pointer;
564
- padding: 0 20px;
565
- border-bottom: 1px solid #cccccc;
566
- }
567
-
568
- .loading_img {
569
- display: flex;
570
- align-items: center;
571
- justify-content: center;
572
- width: 100%;
573
- height: 100%;
574
- position: absolute;
575
- top: 0;
576
- left: 0;
577
- background: #FFF;
578
-
579
- img {
580
- width: 50px;
581
- height: 50px;
582
- }
583
- }
584
-
585
- .libang_head {
586
- height: 64px !important;
587
- }
588
-
589
- .drawer-header {
590
- width: 100%;
591
- height: 50px;
592
- cursor: pointer;
593
- padding: 6px 20px;
594
- border-bottom: 1px solid #cccccc;
595
- .btn_position {
596
- position: absolute;
597
- top: -34px;
598
- left: 12px;
599
- }
600
-
601
- .header-btn {
602
- display: flex;
603
- align-items: center;
604
- justify-content: space-between;
605
-
606
- .header-right {
607
- display: flex;
608
- }
609
- .summaryBtn {
610
- flex: none;
611
- //width: 95px;
612
- height: 26px;
613
- padding: 0 8px;
614
- background: #ffffff;
615
- display: flex;
616
- align-items: center;
617
- justify-content: center;
618
- box-sizing: border-box;
619
- border: 1px solid #a1b9ff;
620
- border-radius: 15px;
621
- cursor: pointer;
622
- color: #366aff;
623
- margin-right: 10px;
624
- font-size: 14px;
625
-
626
- i {
627
- font-size: 14px;
628
- margin-right: 5px;
629
- }
630
- }
631
-
632
- .summaryActiveBtn {
633
- background: #366aff !important;
634
- color: #ffffff !important;
635
- }
636
-
637
- .chat {
638
- flex: none;
639
- height: 26px;
640
- padding: 0 8px;
641
- background: #ffffff;
642
- display: flex;
643
- align-items: center;
644
- justify-content: center;
645
- box-sizing: border-box;
646
- border: 1px solid #a1b9ff;
647
- border-radius: 15px 0px 15px 15px;
648
- cursor: pointer;
649
- color: #366aff;
650
- margin-right: 10px;
651
- font-size: 14px;
652
-
653
- i {
654
- font-size: 14px;
655
- margin-right: 5px;
656
- margin-top: 2px;
657
- }
658
- }
659
-
660
- .chat_active {
661
- background: #366aff !important;
662
- color: #FFFFFF !important;
663
- }
664
- }
665
-
666
- .header_title {
667
- font-size: 14px;
668
- height: 100%;
669
- .header_close {
670
- display: flex;
671
- align-items: center;
672
- justify-content: space-between;
673
- line-height: 26px;
674
- .title_left {
675
- white-space: nowrap; /* 确保文本不会换行 */
676
- overflow: hidden; /* 隐藏超出容器的文本 */
677
- text-overflow: ellipsis; /* 当文本超出容器时显示省略号 */
678
- margin-right: 8px;
679
- }
680
- }
681
- .header_floder {
682
- display: flex;
683
- align-items: center;
684
- line-height: 26px;
685
- i {
686
- margin: 0 5px;
687
- color: #366aff;
688
- }
689
- }
690
- .header_top {
691
- height: 100%;
692
- display: flex;
693
- align-items: center;
694
- justify-content: space-between;
695
- }
696
- }
697
- }
698
-
699
- @media screen and (max-width: 767px) {
700
-
701
- /* 这里是针对移动设备的css样式设置 */
702
- /deep/.el-drawer__body {
703
- height: 100%;
704
- }
705
-
706
- #drawer_content_pre {
707
- overflow: auto;
708
- height: calc(100% - 50px);
709
- background: #FFF;
710
- background-image: url('https://guoranopen-zjk.oss-cn-zhangjiakou.aliyuncs.com/cdn-common/images/loading.gif');
711
- background-position: center;
712
- background-size: 50px;
713
- background-repeat: no-repeat;
714
- }
715
-
716
- .libang_content_pre {
717
- height: calc(100% - 64px) !important;
718
- }
719
- }
720
-
721
- @media screen and (min-width: 768px) {
722
-
723
- /* 这里是针对pc设备的css样式设置 */
724
- /deep/.el-drawer__body {
725
- height: 100%;
726
- }
727
-
728
- #drawer_content_pre {
729
- overflow: auto;
730
- height: calc(100% - 50px);
731
- background: #FFF;
732
- }
733
-
734
- .libang_content_pre {
735
- height: calc(100% - 64px) !important;
736
- }
737
- }
738
-
739
- @media screen and (min-width: 1200px) {
740
-
741
- /* 这里是针对pc设备的css样式设置 */
742
- .el-drawer__wrapper {
743
- width: 55%;
744
- left: calc(100vw - 55%);
745
- right: 0;
746
-
747
- /deep/.pdf-preview-drawer {
748
- width: 100% !important;
749
- }
750
- }
751
-
752
- /deep/.el-drawer__body {
753
- height: 100%;
754
- }
755
-
756
- #drawer_content_pre {
757
- overflow: auto;
758
- height: calc(100% - 50px);
759
- background: #FFF;
760
- }
761
-
762
- .libang_content_pre {
763
- height: calc(100% - 64px) !important;
764
- }
765
- }
766
- </style>
767
- <style lang="less">
768
- .pdf-preview-drawer {
769
- overflow: visible !important;
770
- }
771
- .libang_content_pre {
772
- .change_scale {
773
- top: 64px !important;
774
- }
775
- .float_intelligentSummary {
776
- top: 74px !important;
777
- }
778
- }
779
- </style>
1
+
2
+ <!-- preview-pdf
3
+ 组件主要负责 知识项目中 文件的预览,携带定位信息参数 tagIds tagId 的会解析文件增加定位功能
4
+ 不携带定位信息的 也是走 kkview项目预览
5
+ 另外增加了在知识项目中预览当前文件的一些功能
6
+ -->
7
+ <template>
8
+ <el-drawer :title="$t('common.drawerTitle')" :visible.sync="drawer" :with-header="false" :append-to-body="true" :destroy-on-close="true"
9
+ :modal="formKnowledgeManagement ? true : false" :direction="previewShowPopup ? 'btt' : 'rtl'" :size="previewShowPopup ? '90%' : '65%'"
10
+ custom-class="pdf-preview-drawer" v-if="drawer">
11
+ <!-- v-else-if="drawer" -->
12
+ <div class="drawer-header" :class="isLiBang ? 'libang_head' : ''" v-if="!isPc">
13
+ <div class="header-btn btn_position">
14
+ <div class="onload_btn" v-if="isDownload" @click="downLoad">
15
+ {{$t('common.download')}}
16
+ </div>
17
+ <div class="summaryBtn" :class="showSummary ? 'summaryActiveBtn' : ''" @click="summaryFun" v-if="isHasChat">
18
+ <i class="iconfont guoran-tongyichicun-write-29-jiqiren"></i>
19
+ <span>{{$t('previewPdf.intelligentSummary')}}</span>
20
+ </div>
21
+ <template v-if="isHasChat">
22
+ <div class="chat" @click="previewToDialog(true)" v-if="!previewKnowledgeId">
23
+ <i class="iconfont guoran-wendapingjia"></i>
24
+ {{$t('previewPdf.chat')}}
25
+ </div>
26
+ <div class="chat chat_active" @click="previewToDialog(false)" v-else>
27
+ <i class="iconfont guoran-wendapingjia"></i>
28
+ {{$t('previewPdf.chat')}}
29
+ </div>
30
+ </template>
31
+ </div>
32
+ <div class="header_title">
33
+ <div class="header_close">
34
+ <span class="title_left">
35
+ {{ title ? title : $t('common.viewDetail') }}
36
+ </span>
37
+ <section @click="close">
38
+ <i class="iconfont guoran-shanchu"></i>
39
+ </section>
40
+ </div>
41
+ <p v-if="folderName && isLiBang" class="header_floder" @click="clickFloder">
42
+ <i class="iconfont guoran-tongyichicun-wenjianjia-zhankaizhuangtai--folderOpen"></i>
43
+ {{ folderName }}
44
+ <i v-if="folderUrl" class="iconfont guoran-tongyichicun-dianjichakantuli"></i>
45
+ </p>
46
+ </div>
47
+ </div>
48
+ <div class="drawer-header" :class="isLiBang && folderName ? 'libang_head' : ''" v-else>
49
+ <div class="header_title">
50
+ <div :class="isLiBang && folderName ? 'header_close' : 'header_top'">
51
+ <span class="title_left">
52
+ {{ title ? title : "查看详情" }}
53
+ </span>
54
+ <div class="header-btn">
55
+ <div class="onload_btn" v-if="isDownload" @click="downLoad">
56
+ {{$t('common.download')}}
57
+ </div>
58
+ <div class="summaryBtn" :class="showSummary ? 'summaryActiveBtn' : ''" @click="summaryFun"
59
+ v-if="isHasChat || formKnowledgeManagement">
60
+ <i class="iconfont guoran-tongyichicun-write-29-jiqiren"></i>
61
+ <span>{{$t('previewPdf.intelligentSummary')}}</span>
62
+ </div>
63
+ <template v-if="isHasChat">
64
+ <div class="chat" @click="previewToDialog(true)" v-if="!previewKnowledgeId">
65
+ <i class="iconfont guoran-wendapingjia"></i>
66
+ {{$t('previewPdf.chat')}}
67
+ </div>
68
+ <div class="chat chat_active" @click="previewToDialog(false)" v-else>
69
+ <i class="iconfont guoran-wendapingjia"></i>
70
+ {{$t('previewPdf.chat')}}
71
+ </div>
72
+ </template>
73
+ <section @click="close">
74
+ <i class="iconfont guoran-shanchu"></i>
75
+ </section>
76
+ </div>
77
+ </div>
78
+ <p v-if="folderName && isLiBang" class="header_floder" @click="clickFloder">
79
+ <i class="iconfont guoran-tongyichicun-wenjianjia-zhankaizhuangtai--folderOpen"></i>
80
+ {{ folderName }}
81
+ <i v-if="folderUrl" class="iconfont guoran-tongyichicun-dianjichakantuli"></i>
82
+ </p>
83
+ </div>
84
+ </div>
85
+ <div id="drawer_content_pre" :class="isLiBang && folderName ? 'libang_content_pre' : ''">
86
+ <!-- :style="{marginTop:tagIds && tagIds.length != 0 && isPc ? '50px' : ''}" -->
87
+ <intelligent-summary
88
+ v-show="showSummary && (isHasChat || formKnowledgeManagement) && fileType !== 'VIDEO' && fileType !== 'IMAGE'"
89
+ :tagIds="tagIds"
90
+ :knowledgeId="knowledgeId"
91
+ :formKnowledgeManagement="formKnowledgeManagement"
92
+ @closeSummary="closeSummary" @recommendQues="recommendQues"
93
+ @getSummarySuccess="getSummarySuccess"></intelligent-summary>
94
+ <div class="pdf_positon" :style="pdfStyle" v-if="tagIds && tagIds.length != 0 && drawer && newVersion === false">
95
+ <pdfPosition :tagIds="tagIds" :isMessageRecord="isMessageRecord" :textWatermarkStr="textWatermarkStr">
96
+ </pdfPosition>
97
+ </div>
98
+ <new-position-preview v-else-if="newVersion" :knowledgeId="knowledgeId" :tagIds="tagIds" :url="url"></new-position-preview>
99
+ <template v-else>
100
+ <div v-if="fileType == 'VIDEO'" style="width: 100%;height: 100%">
101
+ <video :src="url" controls width="100%;" height="98%"></video>
102
+ </div>
103
+ <div v-else-if="fileType == 'HTML'" style="width: 100%;">
104
+ <div class="preview_iframe_html" style="text-algin:left" v-html="fileText"></div>
105
+ </div>
106
+ <template v-else-if="url.includes('https://www') || url.includes('http://www')">
107
+ <iframe class="preview_iframe" :src="url" width="100%" height="100%" scrolling="100%" frameborder="no"
108
+ border="0"></iframe>
109
+ </template>
110
+ <template v-else>
111
+ <iframe class="preview_iframe_kk" :src="previewUrl" style="border:none;"
112
+ :style="{ height: iframeHeight }"></iframe>
113
+ </template>
114
+ </template>
115
+ <!-- <div class="mobile_onload_btn" v-if="isDownload && !isPc" @click="downLoad">
116
+ 下载
117
+ </div> -->
118
+ </div>
119
+ <div class="loading_img" v-show="loading">
120
+ <img src="https://guoranopen-zjk.oss-cn-zhangjiakou.aliyuncs.com/cdn-common/images/loading.gif" alt="">
121
+ </div>
122
+ <div id="text">
123
+ {{ copy }}
124
+ </div>
125
+ </el-drawer>
126
+ </template>
127
+
128
+ <script>
129
+ import pdfPosition from './pdfPosition.vue'
130
+ import { zoomElement } from '../assets/js/hammer'
131
+ import IntelligentSummary from "./intelligentSummary";
132
+ import { isMobile } from "../assets/js/common";
133
+ import { Toast } from 'vant';
134
+ import NewPositionPreview from "./preview/newPositionPreview";
135
+ export default {
136
+ data () {
137
+ return {
138
+ previewShowPopup: false,
139
+ fileText: '',
140
+ fileType: "",
141
+ isPc: false,
142
+ drawer: false,
143
+ tagIds: [],
144
+ // '6454aa1a70573a6ead6f0f7d', '6454aa1a70573a6ead6f0f81',
145
+ loading: true,
146
+ fileName:'',
147
+ previewKnowledgeId:"",
148
+ showSummary:true,
149
+ iframeHeight:"100%",
150
+ isDownload: false,
151
+ textWatermarkStr:"",
152
+ copy:'',
153
+ newVersion:''}
154
+ },
155
+ mounted() {
156
+ window.addEventListener('message',this.handleIframeMessage,false);
157
+ this.isPcFun();
158
+ },
159
+ props:{
160
+ url:{
161
+ type: String,
162
+ required: true,
163
+ },
164
+ officePreviewType:{
165
+ type: String,
166
+ default: ''
167
+ },
168
+ isMessageRecord:{
169
+ type: Boolean,
170
+ default:false,
171
+ },
172
+ sourceFileType:{
173
+ type: String,
174
+ default: '',
175
+ },
176
+ title: {
177
+ type: String,
178
+ default: ''
179
+ },
180
+ isHasChat:{
181
+ type:Boolean,
182
+ default:false
183
+ },
184
+ knowledgeId:{
185
+ type: String,
186
+ default: '',
187
+ },
188
+ previewOssPath:{
189
+ type: String,
190
+ default: '',
191
+ },
192
+ folderName: {
193
+ type: String,
194
+ default: '',
195
+ },
196
+ folderUrl: {
197
+ type: String,
198
+ default: '',
199
+ },
200
+ isLiBang: {
201
+ type: Boolean,
202
+ default: false
203
+ },
204
+ formKnowledgeManagement:{
205
+ type: Boolean,
206
+ default: false
207
+ }
208
+ },
209
+ components: {
210
+ NewPositionPreview,
211
+ IntelligentSummary,
212
+ pdfPosition
213
+ },
214
+ watch: {
215
+ drawer (value) {
216
+ if (value) {
217
+ this.$emit('open')
218
+ this.$nextTick(() => {
219
+ if (this.tagIds && this.tagIds.length != 0){
220
+ zoomElement(document.getElementById('pdf_container_view'))
221
+ }
222
+ })
223
+ } else {
224
+ this.$emit('close')
225
+ }
226
+ setTimeout(() => {
227
+ let previewIframe = document.getElementsByClassName('preview_iframe')
228
+ Array.from(previewIframe).forEach(item =>{
229
+ item.onload = () =>{
230
+ console.debug('previewIframe 106',previewIframe,this.drawer)
231
+ item.style.backgroundImage = 'none'
232
+ }
233
+ })
234
+ })
235
+ },
236
+ showSummary:{
237
+ handler(val){
238
+ // if (!val){
239
+ // this.$nextTick(() => {
240
+ // let preCon = document.querySelector('.pdf_view');
241
+ // if (preCon){
242
+ // preCon.style.height = 'calc(100% - ' + 50 + 'px)'
243
+ // }
244
+ // })
245
+ // } else {
246
+ // this.getSummarySuccess();
247
+ // }
248
+ if(val) {
249
+ this.getSummarySuccess();
250
+ }
251
+ }
252
+ },
253
+ knowledgeId:{
254
+ handler(val){
255
+ if (val){
256
+ this.getTextWatermark();
257
+ }
258
+ }
259
+ }
260
+ },
261
+ computed:{
262
+ pdfStyle() {
263
+ return {
264
+ paddingTop: this.isPc ? '30px' : '0', // 30px 是 加上外层的 20 流出 50的上边距展示 放大缩小操作栏
265
+ paddingBottom: this.tagIds > 1 ? '60px' : '0',
266
+ height: '100%'
267
+ }
268
+ },
269
+ previewUrl() {
270
+ console.debug('VUE_APP_ENV',process.env.VUE_APP_ENV)
271
+ let url = process.env.VUE_APP_ENV === 'production' ? 'https://kkfileview.askbot.cn/onlinePreview?url=' : 'https://test.open.askbot.cn/kkfileview/onlinePreview?url='
272
+ // if(this.url != '') {
273
+ // if(/[\u4E00-\u9FA5]+/g.test(this.url)) {
274
+ // url += btoa(encodeURIComponent(this.url))
275
+ // } else {
276
+ // url += btoa(this.url)
277
+ // }
278
+ // }
279
+ url = url + this.url
280
+ url += '&officePreviewType=pdf'
281
+ if(this.watermark) {
282
+ url = this.watermark.textWatermarkValue ? (url += '&textWatermarkValue=' + this.watermark.textWatermarkValue) : url
283
+ url = this.watermark.visitorWatermarkValue ? (url += '&visitorWatermarkValue=' + this.watermark.visitorWatermarkValue) : url
284
+ }
285
+ console.log('textWatermarkStr 216', this.textWatermarkStr)
286
+ if (this.textWatermarkStr) {
287
+ url += '&textWatermarkValue=' + this.textWatermarkStr
288
+ }
289
+ return url
290
+ },
291
+ // fileType() {
292
+ // const fileType = this.url.substring(this.url.lastIndexOf('.'));
293
+ // if (fileType === '.mp4' || fileType === '.MP4' || fileType === '.MOV' || fileType === '.mov') {
294
+ // return 'VIDEO'
295
+ // } else {
296
+ // return 'OTHER'
297
+ // }
298
+
299
+ // }
300
+ },
301
+ methods: {
302
+ close () {
303
+ setTimeout(() => {
304
+ this.previewShowPopup = false;
305
+ this.fileType = ''
306
+ }, 300)
307
+ this.drawer = false;
308
+ this.showSummary = false;
309
+ },
310
+ loadIframe () {
311
+
312
+ if (this.fileType == 'VIDEO' || this.fileType == 'WECHAT' || (this.tagIds && this.tagIds.length != 0)) {
313
+ this.loading = false
314
+ } else {
315
+ let iframe = document.getElementsByClassName('preview_iframe')[0] || document.getElementsByClassName('preview_iframe_kk')[0];
316
+ if (iframe) {
317
+ iframe.onload = () => {
318
+ this.loading = false;
319
+ document.getElementById('drawer_content_pre').style.backgroundImage = 'none'
320
+ }
321
+ }
322
+ // let time = setInterval(() =>{
323
+ //
324
+ // if(iframe) {
325
+ // this.loading = false
326
+ // clearInterval(time)
327
+ // }
328
+ // }, 500)
329
+ }
330
+ },
331
+ getBolb () {
332
+ this.$http.post('/knowledge-api/knowledge/htmlTextDeal?onlyText=false', {
333
+ fileInOssPath: this.url,
334
+ templateId: ''
335
+ }).then(res => {
336
+ if (res.data.code == 0) {
337
+ this.fileText = res.data.data
338
+ this.loading = false
339
+ }
340
+ })
341
+ },
342
+ previewToDialog (flag) {
343
+ this.$emit('previewToDialog', flag)
344
+ },
345
+ closeSummary () {
346
+ this.showSummary = false;
347
+ },
348
+ recommendQues (item, knowledgeId) {
349
+ console.log('recommendQues', item, knowledgeId);
350
+ this.$emit('recommendQues', item, knowledgeId)
351
+ },
352
+ handleIframeMessage (res) {
353
+ console.log('handleIframeMessage', res)
354
+ if (res.data.type == 'getViewerHeight') {
355
+ let iframeHeight = this.iframeHeight.replace('px', '')
356
+ if (res.data.data && iframeHeight != (res.data.data + 50)) {
357
+ this.iframeHeight = res.data.data + 50 + 'px'
358
+ }
359
+ }
360
+ },
361
+ summaryFun () {
362
+ this.showSummary = !this.showSummary;
363
+ if (this.showSummary) {
364
+ document.getElementById('drawer_content_pre').scrollTop = 0;
365
+ }
366
+ },
367
+ getSummarySuccess () {
368
+ this.$nextTick(() => {
369
+ // if (this.tagIds.length > 0){
370
+ // let intelligentSummary = document.getElementById('intelligentSummary');
371
+ // let preCon = document.querySelector('.pdf_view')
372
+ // if (intelligentSummary){
373
+ // let height = intelligentSummary.offsetHeight + (this.isPc ? 100 : 50 );
374
+ // if (preCon){
375
+ // preCon.style.height = 'calc(100% - ' + height + 'px)'
376
+ // }
377
+ // console.log('height',height,preCon)
378
+ // }
379
+ // }
380
+ // let intelligentSummary = document.getElementById('intelligentSummary');
381
+ // let height = intelligentSummary.offsetHeight
382
+ // this.pdfStyle.height = 'calc(100% - ' + height + 'px)'
383
+ })
384
+ },
385
+ getTextWatermark () {
386
+ let url = '/knowledge-api/open/knowledge/getPermissionInfo';
387
+ let obj = {
388
+ "knowledgeId": this.knowledgeId,
389
+ "userId": sessionStorage.getItem('_currentUserId'),
390
+ "mainId": sessionStorage.getItem('_mainId'),
391
+ "corpId": sessionStorage.getItem('_corpid')
392
+ }
393
+ this.$http.post(url, obj).then(res => {
394
+ console.log('getTextWatermark', res.data.data)
395
+ if (res.data.data) {
396
+ this.textWatermarkStr = res.data.data.textWatermarkStr;
397
+ this.isDownload = res.data.data.showDownloadBtn;
398
+ }
399
+ })
400
+ },
401
+ downLoad () {
402
+ if (this.formKnowledgeManagement){
403
+ this.$emit('downLoad',this.previewOssPath);
404
+ return
405
+ }
406
+ let url = this.previewOssPath
407
+ if (decodeURIComponent(url) != url) {
408
+ url = decodeURIComponent(url)
409
+ }
410
+ const fileType = url.substring(url.lastIndexOf('.'));
411
+ this.$http.post('/knowledge-api/temporary-certificate/or-origin?expired=10', url, {
412
+ headers: {
413
+ "Content-Type": "application/json",
414
+ }
415
+ }).then(res => {
416
+ console.log('downLoad 341', res)
417
+ if (res.data|| res.bodyText) {
418
+ if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) {
419
+ this.copy = res.data
420
+ if (isMobile()) {
421
+ setTimeout(() =>{
422
+ const range = document.createRange();
423
+ range.selectNode(document.getElementById('text'));
424
+ const selection = window.getSelection();
425
+ //移除之前选中内容
426
+ if (selection.rangeCount > 0) selection.removeAllRanges();
427
+ selection.addRange(range);
428
+ document.execCommand('copy');
429
+ selection.removeAllRanges()
430
+ Toast(this.$t('previewPdf.copyUrl'));
431
+ this.close()
432
+ },100)
433
+ } else {
434
+ let a = document.createElement('a')
435
+ a.href = res.data
436
+ a.download = (this.title) + fileType
437
+ a.dispatchEvent(new MouseEvent('click', { bubbles: true, cancelable: true, view: window }))
438
+ }
439
+ return
440
+ } else {
441
+ // setTimeout(() =>{
442
+ // window.open(res.data,'下载', 'noopener')
443
+ // }, 2000)
444
+ // window.open(res.data,'下载', 'noopener')
445
+ if (isMobile()) {
446
+
447
+ const iframe = document.createElement("iframe");
448
+ iframe.setAttribute("hidden", "hidden");
449
+ iframe.onload = () => {
450
+ if (iframe) {
451
+ console.log("iframe onload....")
452
+ iframe.setAttribute('src', 'about:blank');
453
+ }
454
+ };
455
+ document.body.insertBefore(iframe, null);
456
+ iframe.setAttribute("src", res.data );
457
+ } else {
458
+ let a = document.createElement('a')
459
+ a.href = res.data
460
+ a.download = (this.title) + fileType
461
+ a.dispatchEvent(new MouseEvent('click', { bubbles: true, cancelable: true, view: window }))
462
+ }
463
+ this.close()
464
+ }
465
+ }
466
+ })
467
+ },
468
+ isPcFun () {
469
+ if (/(iPhone|iPad|iPod|iOS|Android)/i.test(navigator.userAgent)) {
470
+ this.isPc = false
471
+ } else {
472
+ this.isPc = true
473
+ }
474
+ },
475
+ clickFloder() {
476
+ this.$emit('previewClickFloder')
477
+ },
478
+ //判断是否使用新定位组件
479
+ getLocationInfo(){
480
+ this.$http.get('/knowledge-api/knowledge/knowledge-part-location-info/list?ids=' + this.tagIds.join(',')).then(res => {
481
+ if (res.data.code == 0){
482
+ if (res.data.data && res.data.data.length > 0 && res.data.data[0].extractVersion == 'v3'){
483
+ this.newVersion = true;
484
+ this.loading = false;
485
+ } else {
486
+ this.newVersion = false;
487
+ }
488
+ }
489
+ })
490
+ },
491
+ },
492
+ beforeDestroy () {
493
+ window.removeEventListener('message', this.handleIframeMessage);
494
+ }
495
+ }
496
+ </script>
497
+
498
+ <style lang="less" scoped>
499
+ #drawer_content_pre {
500
+ padding: 20px;
501
+ scroll-behavior: smooth;
502
+
503
+ .mobile_onload_btn {
504
+ position: absolute;
505
+ right: 0;
506
+ bottom: 10%;
507
+ width: 20px;
508
+ height: 60px;
509
+ display: flex;
510
+ align-items: center;
511
+ justify-content: center;
512
+ cursor: pointer;
513
+ border-top-left-radius: 10px;
514
+ border-bottom-left-radius: 10px;
515
+ color: #366aff;
516
+ background: #ffffff;
517
+ border: 1px solid #a1b9ff;
518
+ font-size: 12px;
519
+ border-right: none;
520
+ text-align: center;
521
+ }
522
+
523
+ .pdf_positon {
524
+ width: 100%;
525
+ box-sizing: border-box;
526
+ }
527
+ }
528
+
529
+ .onload_btn {
530
+ width: 76px;
531
+ height: 26px;
532
+ display: flex;
533
+ align-items: center;
534
+ justify-content: center;
535
+ cursor: pointer;
536
+ margin-right: 10px;
537
+ border-radius: 15px;
538
+ color: #366aff;
539
+ background: #ffffff;
540
+ border: 1px solid #a1b9ff;
541
+ box-sizing: border-box;
542
+ }
543
+
544
+ .preview_iframe {
545
+ width: 100%;
546
+ height: 100%;
547
+ box-sizing: border-box;
548
+ background-image: url('https://guoranopen-zjk.oss-cn-zhangjiakou.aliyuncs.com/cdn-common/images/loading.gif');
549
+ background-position: center;
550
+ background-size: 50px;
551
+ background-repeat: no-repeat;
552
+ }
553
+
554
+ .preview_iframe_kk {
555
+ width: 100%;
556
+ height: 100%;
557
+ }
558
+
559
+
560
+ .preview_iframe_html {
561
+ width: 100%;
562
+ height: 100%;
563
+ overflow-y: scroll;
564
+ text-align: left;
565
+ box-sizing: border-box;
566
+ padding: 16px;
567
+
568
+ /deep/.lake-content {
569
+ margin-left: 10px;
570
+ }
571
+
572
+ /deep/a:link {
573
+ color: #0000ee !important;
574
+ }
575
+
576
+ /deep/a:visited {
577
+ color: #0000ee !important;
578
+ }
579
+
580
+ /deep/a:hover {
581
+ color: #0000ee !important;
582
+ }
583
+
584
+ /deep/a:active {
585
+ color: #0000ee !important;
586
+ }
587
+
588
+ /deep/li:not(.rich-text-li),
589
+ ol:not(.list-paddingleft-2),
590
+ ul:not(.list-paddingleft-2) {
591
+ list-style-type: auto !important;
592
+ }
593
+
594
+ /deep/img {
595
+ width: 100%;
596
+ }
597
+
598
+ /deep/.ne-table {
599
+ width: 100% !important;
600
+ }
601
+ }
602
+
603
+ .footer {
604
+ width: calc(100% - 40px);
605
+ height: 50px;
606
+ display: flex;
607
+ align-items: center;
608
+ justify-content: space-between;
609
+ cursor: pointer;
610
+ padding: 0 20px;
611
+ border-bottom: 1px solid #cccccc;
612
+ }
613
+
614
+ .loading_img {
615
+ display: flex;
616
+ align-items: center;
617
+ justify-content: center;
618
+ width: 100%;
619
+ height: 100%;
620
+ position: absolute;
621
+ top: 0;
622
+ left: 0;
623
+ background: #FFF;
624
+
625
+ img {
626
+ width: 50px;
627
+ height: 50px;
628
+ }
629
+ }
630
+
631
+ .libang_head {
632
+ height: 64px !important;
633
+ }
634
+
635
+ .drawer-header {
636
+ width: 100%;
637
+ height: 50px;
638
+ cursor: pointer;
639
+ padding: 6px 20px;
640
+ border-bottom: 1px solid #cccccc;
641
+ .btn_position {
642
+ position: absolute;
643
+ top: -34px;
644
+ left: 12px;
645
+ }
646
+
647
+ .header-btn {
648
+ display: flex;
649
+ align-items: center;
650
+ justify-content: space-between;
651
+
652
+ .header-right {
653
+ display: flex;
654
+ }
655
+
656
+ .summaryBtn {
657
+ flex: none;
658
+ //width: 95px;
659
+ height: 26px;
660
+ padding: 0 8px;
661
+ background: #ffffff;
662
+ display: flex;
663
+ align-items: center;
664
+ justify-content: center;
665
+ box-sizing: border-box;
666
+ border: 1px solid #a1b9ff;
667
+ border-radius: 15px;
668
+ cursor: pointer;
669
+ color: #366aff;
670
+ margin-right: 10px;
671
+ font-size: 14px;
672
+
673
+ i {
674
+ font-size: 14px;
675
+ margin-right: 5px;
676
+ }
677
+ }
678
+
679
+ .summaryActiveBtn {
680
+ background: #366aff !important;
681
+ color: #ffffff !important;
682
+ }
683
+
684
+ .chat {
685
+ flex: none;
686
+ height: 26px;
687
+ padding: 0 8px;
688
+ background: #ffffff;
689
+ display: flex;
690
+ align-items: center;
691
+ justify-content: center;
692
+ box-sizing: border-box;
693
+ border: 1px solid #a1b9ff;
694
+ border-radius: 15px 0px 15px 15px;
695
+ cursor: pointer;
696
+ color: #366aff;
697
+ margin-right: 10px;
698
+ font-size: 14px;
699
+
700
+ i {
701
+ font-size: 14px;
702
+ margin-right: 5px;
703
+ margin-top: 2px;
704
+ }
705
+ }
706
+
707
+ .chat_active {
708
+ background: #366aff !important;
709
+ color: #FFFFFF !important;
710
+ }
711
+ }
712
+
713
+ .header_title {
714
+ font-size: 14px;
715
+ height: 100%;
716
+ .header_close {
717
+ display: flex;
718
+ align-items: center;
719
+ justify-content: space-between;
720
+ line-height: 26px;
721
+ .title_left {
722
+ white-space: nowrap; /* 确保文本不会换行 */
723
+ overflow: hidden; /* 隐藏超出容器的文本 */
724
+ text-overflow: ellipsis; /* 当文本超出容器时显示省略号 */
725
+ margin-right: 8px;
726
+ }
727
+ }
728
+ .header_floder {
729
+ display: flex;
730
+ align-items: center;
731
+ line-height: 26px;
732
+ i {
733
+ margin: 0 5px;
734
+ color: #366aff;
735
+ }
736
+ }
737
+ .header_top {
738
+ height: 100%;
739
+ display: flex;
740
+ align-items: center;
741
+ justify-content: space-between;
742
+ }
743
+ }
744
+ }
745
+
746
+ @media screen and (max-width: 767px) {
747
+
748
+ /* 这里是针对移动设备的css样式设置 */
749
+ /deep/.el-drawer__body {
750
+ height: 100%;
751
+ }
752
+
753
+ #drawer_content_pre {
754
+ overflow: auto;
755
+ height: calc(100% - 50px);
756
+ background: #FFF;
757
+ }
758
+
759
+ .libang_content_pre {
760
+ height: calc(100% - 64px) !important;
761
+ }
762
+ }
763
+
764
+ @media screen and (min-width: 768px) {
765
+
766
+ /* 这里是针对pc设备的css样式设置 */
767
+ /deep/.el-drawer__body {
768
+ height: 100%;
769
+ }
770
+
771
+ #drawer_content_pre {
772
+ overflow: auto;
773
+ height: calc(100% - 50px);
774
+ background: #FFF;
775
+ }
776
+
777
+ .libang_content_pre {
778
+ height: calc(100% - 64px) !important;
779
+ }
780
+ }
781
+
782
+ @media screen and (min-width: 1200px) {
783
+
784
+ /* 这里是针对pc设备的css样式设置 */
785
+ .el-drawer__wrapper {
786
+ width: 55%;
787
+ left: calc(100vw - 55%);
788
+ right: 0;
789
+
790
+ /deep/.pdf-preview-drawer {
791
+ width: 100% !important;
792
+ }
793
+ }
794
+
795
+ /deep/.el-drawer__body {
796
+ height: 100%;
797
+ }
798
+
799
+ #drawer_content_pre {
800
+ overflow: auto;
801
+ height: calc(100% - 50px);
802
+ background: #FFF;
803
+ }
804
+
805
+ .libang_content_pre {
806
+ height: calc(100% - 64px) !important;
807
+ }
808
+ }
809
+ </style>
810
+ <style lang="less">
811
+ .pdf-preview-drawer {
812
+ overflow: visible !important;
813
+ }
814
+ .libang_content_pre {
815
+ .change_scale {
816
+ top: 64px !important;
817
+ }
818
+ .float_intelligentSummary {
819
+ top: 74px !important;
820
+ }
821
+ }
822
+ </style>