askbot-dragon 1.6.76-beta → 1.6.76

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 (308) 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 +58 -55
  5. package/public/index.html +75 -72
  6. package/public/pdfjs/cmaps/78-EUC-H.bcmap +0 -0
  7. package/public/pdfjs/cmaps/78-EUC-V.bcmap +0 -0
  8. package/public/pdfjs/cmaps/78-H.bcmap +0 -0
  9. package/public/pdfjs/cmaps/78-RKSJ-H.bcmap +0 -0
  10. package/public/pdfjs/cmaps/78-RKSJ-V.bcmap +0 -0
  11. package/public/pdfjs/cmaps/78-V.bcmap +0 -0
  12. package/public/pdfjs/cmaps/78ms-RKSJ-H.bcmap +0 -0
  13. package/public/pdfjs/cmaps/78ms-RKSJ-V.bcmap +0 -0
  14. package/public/pdfjs/cmaps/83pv-RKSJ-H.bcmap +0 -0
  15. package/public/pdfjs/cmaps/90ms-RKSJ-H.bcmap +0 -0
  16. package/public/pdfjs/cmaps/90ms-RKSJ-V.bcmap +0 -0
  17. package/public/pdfjs/cmaps/90msp-RKSJ-H.bcmap +0 -0
  18. package/public/pdfjs/cmaps/90msp-RKSJ-V.bcmap +0 -0
  19. package/public/pdfjs/cmaps/90pv-RKSJ-H.bcmap +0 -0
  20. package/public/pdfjs/cmaps/90pv-RKSJ-V.bcmap +0 -0
  21. package/public/pdfjs/cmaps/Add-H.bcmap +0 -0
  22. package/public/pdfjs/cmaps/Add-RKSJ-H.bcmap +0 -0
  23. package/public/pdfjs/cmaps/Add-RKSJ-V.bcmap +0 -0
  24. package/public/pdfjs/cmaps/Add-V.bcmap +0 -0
  25. package/public/pdfjs/cmaps/Adobe-CNS1-0.bcmap +0 -0
  26. package/public/pdfjs/cmaps/Adobe-CNS1-1.bcmap +0 -0
  27. package/public/pdfjs/cmaps/Adobe-CNS1-2.bcmap +0 -0
  28. package/public/pdfjs/cmaps/Adobe-CNS1-3.bcmap +0 -0
  29. package/public/pdfjs/cmaps/Adobe-CNS1-4.bcmap +0 -0
  30. package/public/pdfjs/cmaps/Adobe-CNS1-5.bcmap +0 -0
  31. package/public/pdfjs/cmaps/Adobe-CNS1-6.bcmap +0 -0
  32. package/public/pdfjs/cmaps/Adobe-CNS1-UCS2.bcmap +0 -0
  33. package/public/pdfjs/cmaps/Adobe-GB1-0.bcmap +0 -0
  34. package/public/pdfjs/cmaps/Adobe-GB1-1.bcmap +0 -0
  35. package/public/pdfjs/cmaps/Adobe-GB1-2.bcmap +0 -0
  36. package/public/pdfjs/cmaps/Adobe-GB1-3.bcmap +0 -0
  37. package/public/pdfjs/cmaps/Adobe-GB1-4.bcmap +0 -0
  38. package/public/pdfjs/cmaps/Adobe-GB1-5.bcmap +0 -0
  39. package/public/pdfjs/cmaps/Adobe-GB1-UCS2.bcmap +0 -0
  40. package/public/pdfjs/cmaps/Adobe-Japan1-0.bcmap +0 -0
  41. package/public/pdfjs/cmaps/Adobe-Japan1-1.bcmap +0 -0
  42. package/public/pdfjs/cmaps/Adobe-Japan1-2.bcmap +0 -0
  43. package/public/pdfjs/cmaps/Adobe-Japan1-3.bcmap +0 -0
  44. package/public/pdfjs/cmaps/Adobe-Japan1-4.bcmap +0 -0
  45. package/public/pdfjs/cmaps/Adobe-Japan1-5.bcmap +0 -0
  46. package/public/pdfjs/cmaps/Adobe-Japan1-6.bcmap +0 -0
  47. package/public/pdfjs/cmaps/Adobe-Japan1-UCS2.bcmap +0 -0
  48. package/public/pdfjs/cmaps/Adobe-Korea1-0.bcmap +0 -0
  49. package/public/pdfjs/cmaps/Adobe-Korea1-1.bcmap +0 -0
  50. package/public/pdfjs/cmaps/Adobe-Korea1-2.bcmap +0 -0
  51. package/public/pdfjs/cmaps/Adobe-Korea1-UCS2.bcmap +0 -0
  52. package/public/pdfjs/cmaps/B5-H.bcmap +0 -0
  53. package/public/pdfjs/cmaps/B5-V.bcmap +0 -0
  54. package/public/pdfjs/cmaps/B5pc-H.bcmap +0 -0
  55. package/public/pdfjs/cmaps/B5pc-V.bcmap +0 -0
  56. package/public/pdfjs/cmaps/CNS-EUC-H.bcmap +0 -0
  57. package/public/pdfjs/cmaps/CNS-EUC-V.bcmap +0 -0
  58. package/public/pdfjs/cmaps/CNS1-H.bcmap +0 -0
  59. package/public/pdfjs/cmaps/CNS1-V.bcmap +0 -0
  60. package/public/pdfjs/cmaps/CNS2-H.bcmap +0 -0
  61. package/public/pdfjs/cmaps/CNS2-V.bcmap +3 -0
  62. package/public/pdfjs/cmaps/ETHK-B5-H.bcmap +0 -0
  63. package/public/pdfjs/cmaps/ETHK-B5-V.bcmap +0 -0
  64. package/public/pdfjs/cmaps/ETen-B5-H.bcmap +0 -0
  65. package/public/pdfjs/cmaps/ETen-B5-V.bcmap +0 -0
  66. package/public/pdfjs/cmaps/ETenms-B5-H.bcmap +3 -0
  67. package/public/pdfjs/cmaps/ETenms-B5-V.bcmap +0 -0
  68. package/public/pdfjs/cmaps/EUC-H.bcmap +0 -0
  69. package/public/pdfjs/cmaps/EUC-V.bcmap +0 -0
  70. package/public/pdfjs/cmaps/Ext-H.bcmap +0 -0
  71. package/public/pdfjs/cmaps/Ext-RKSJ-H.bcmap +0 -0
  72. package/public/pdfjs/cmaps/Ext-RKSJ-V.bcmap +0 -0
  73. package/public/pdfjs/cmaps/Ext-V.bcmap +0 -0
  74. package/public/pdfjs/cmaps/GB-EUC-H.bcmap +0 -0
  75. package/public/pdfjs/cmaps/GB-EUC-V.bcmap +0 -0
  76. package/public/pdfjs/cmaps/GB-H.bcmap +4 -0
  77. package/public/pdfjs/cmaps/GB-V.bcmap +0 -0
  78. package/public/pdfjs/cmaps/GBK-EUC-H.bcmap +0 -0
  79. package/public/pdfjs/cmaps/GBK-EUC-V.bcmap +0 -0
  80. package/public/pdfjs/cmaps/GBK2K-H.bcmap +0 -0
  81. package/public/pdfjs/cmaps/GBK2K-V.bcmap +0 -0
  82. package/public/pdfjs/cmaps/GBKp-EUC-H.bcmap +0 -0
  83. package/public/pdfjs/cmaps/GBKp-EUC-V.bcmap +0 -0
  84. package/public/pdfjs/cmaps/GBT-EUC-H.bcmap +0 -0
  85. package/public/pdfjs/cmaps/GBT-EUC-V.bcmap +0 -0
  86. package/public/pdfjs/cmaps/GBT-H.bcmap +0 -0
  87. package/public/pdfjs/cmaps/GBT-V.bcmap +0 -0
  88. package/public/pdfjs/cmaps/GBTpc-EUC-H.bcmap +0 -0
  89. package/public/pdfjs/cmaps/GBTpc-EUC-V.bcmap +0 -0
  90. package/public/pdfjs/cmaps/GBpc-EUC-H.bcmap +0 -0
  91. package/public/pdfjs/cmaps/GBpc-EUC-V.bcmap +0 -0
  92. package/public/pdfjs/cmaps/H.bcmap +0 -0
  93. package/public/pdfjs/cmaps/HKdla-B5-H.bcmap +0 -0
  94. package/public/pdfjs/cmaps/HKdla-B5-V.bcmap +0 -0
  95. package/public/pdfjs/cmaps/HKdlb-B5-H.bcmap +0 -0
  96. package/public/pdfjs/cmaps/HKdlb-B5-V.bcmap +0 -0
  97. package/public/pdfjs/cmaps/HKgccs-B5-H.bcmap +0 -0
  98. package/public/pdfjs/cmaps/HKgccs-B5-V.bcmap +0 -0
  99. package/public/pdfjs/cmaps/HKm314-B5-H.bcmap +0 -0
  100. package/public/pdfjs/cmaps/HKm314-B5-V.bcmap +0 -0
  101. package/public/pdfjs/cmaps/HKm471-B5-H.bcmap +0 -0
  102. package/public/pdfjs/cmaps/HKm471-B5-V.bcmap +0 -0
  103. package/public/pdfjs/cmaps/HKscs-B5-H.bcmap +0 -0
  104. package/public/pdfjs/cmaps/HKscs-B5-V.bcmap +0 -0
  105. package/public/pdfjs/cmaps/Hankaku.bcmap +0 -0
  106. package/public/pdfjs/cmaps/Hiragana.bcmap +0 -0
  107. package/public/pdfjs/cmaps/KSC-EUC-H.bcmap +0 -0
  108. package/public/pdfjs/cmaps/KSC-EUC-V.bcmap +0 -0
  109. package/public/pdfjs/cmaps/KSC-H.bcmap +0 -0
  110. package/public/pdfjs/cmaps/KSC-Johab-H.bcmap +0 -0
  111. package/public/pdfjs/cmaps/KSC-Johab-V.bcmap +0 -0
  112. package/public/pdfjs/cmaps/KSC-V.bcmap +0 -0
  113. package/public/pdfjs/cmaps/KSCms-UHC-H.bcmap +0 -0
  114. package/public/pdfjs/cmaps/KSCms-UHC-HW-H.bcmap +0 -0
  115. package/public/pdfjs/cmaps/KSCms-UHC-HW-V.bcmap +0 -0
  116. package/public/pdfjs/cmaps/KSCms-UHC-V.bcmap +0 -0
  117. package/public/pdfjs/cmaps/KSCpc-EUC-H.bcmap +0 -0
  118. package/public/pdfjs/cmaps/KSCpc-EUC-V.bcmap +0 -0
  119. package/public/pdfjs/cmaps/Katakana.bcmap +0 -0
  120. package/public/pdfjs/cmaps/LICENSE +36 -0
  121. package/public/pdfjs/cmaps/NWP-H.bcmap +0 -0
  122. package/public/pdfjs/cmaps/NWP-V.bcmap +0 -0
  123. package/public/pdfjs/cmaps/RKSJ-H.bcmap +0 -0
  124. package/public/pdfjs/cmaps/RKSJ-V.bcmap +0 -0
  125. package/public/pdfjs/cmaps/Roman.bcmap +0 -0
  126. package/public/pdfjs/cmaps/UniCNS-UCS2-H.bcmap +0 -0
  127. package/public/pdfjs/cmaps/UniCNS-UCS2-V.bcmap +0 -0
  128. package/public/pdfjs/cmaps/UniCNS-UTF16-H.bcmap +0 -0
  129. package/public/pdfjs/cmaps/UniCNS-UTF16-V.bcmap +0 -0
  130. package/public/pdfjs/cmaps/UniCNS-UTF32-H.bcmap +0 -0
  131. package/public/pdfjs/cmaps/UniCNS-UTF32-V.bcmap +0 -0
  132. package/public/pdfjs/cmaps/UniCNS-UTF8-H.bcmap +0 -0
  133. package/public/pdfjs/cmaps/UniCNS-UTF8-V.bcmap +0 -0
  134. package/public/pdfjs/cmaps/UniGB-UCS2-H.bcmap +0 -0
  135. package/public/pdfjs/cmaps/UniGB-UCS2-V.bcmap +0 -0
  136. package/public/pdfjs/cmaps/UniGB-UTF16-H.bcmap +0 -0
  137. package/public/pdfjs/cmaps/UniGB-UTF16-V.bcmap +0 -0
  138. package/public/pdfjs/cmaps/UniGB-UTF32-H.bcmap +0 -0
  139. package/public/pdfjs/cmaps/UniGB-UTF32-V.bcmap +0 -0
  140. package/public/pdfjs/cmaps/UniGB-UTF8-H.bcmap +0 -0
  141. package/public/pdfjs/cmaps/UniGB-UTF8-V.bcmap +0 -0
  142. package/public/pdfjs/cmaps/UniJIS-UCS2-H.bcmap +0 -0
  143. package/public/pdfjs/cmaps/UniJIS-UCS2-HW-H.bcmap +0 -0
  144. package/public/pdfjs/cmaps/UniJIS-UCS2-HW-V.bcmap +0 -0
  145. package/public/pdfjs/cmaps/UniJIS-UCS2-V.bcmap +0 -0
  146. package/public/pdfjs/cmaps/UniJIS-UTF16-H.bcmap +0 -0
  147. package/public/pdfjs/cmaps/UniJIS-UTF16-V.bcmap +0 -0
  148. package/public/pdfjs/cmaps/UniJIS-UTF32-H.bcmap +0 -0
  149. package/public/pdfjs/cmaps/UniJIS-UTF32-V.bcmap +0 -0
  150. package/public/pdfjs/cmaps/UniJIS-UTF8-H.bcmap +0 -0
  151. package/public/pdfjs/cmaps/UniJIS-UTF8-V.bcmap +0 -0
  152. package/public/pdfjs/cmaps/UniJIS2004-UTF16-H.bcmap +0 -0
  153. package/public/pdfjs/cmaps/UniJIS2004-UTF16-V.bcmap +0 -0
  154. package/public/pdfjs/cmaps/UniJIS2004-UTF32-H.bcmap +0 -0
  155. package/public/pdfjs/cmaps/UniJIS2004-UTF32-V.bcmap +0 -0
  156. package/public/pdfjs/cmaps/UniJIS2004-UTF8-H.bcmap +0 -0
  157. package/public/pdfjs/cmaps/UniJIS2004-UTF8-V.bcmap +0 -0
  158. package/public/pdfjs/cmaps/UniJISPro-UCS2-HW-V.bcmap +0 -0
  159. package/public/pdfjs/cmaps/UniJISPro-UCS2-V.bcmap +0 -0
  160. package/public/pdfjs/cmaps/UniJISPro-UTF8-V.bcmap +0 -0
  161. package/public/pdfjs/cmaps/UniJISX0213-UTF32-H.bcmap +0 -0
  162. package/public/pdfjs/cmaps/UniJISX0213-UTF32-V.bcmap +0 -0
  163. package/public/pdfjs/cmaps/UniJISX02132004-UTF32-H.bcmap +0 -0
  164. package/public/pdfjs/cmaps/UniJISX02132004-UTF32-V.bcmap +0 -0
  165. package/public/pdfjs/cmaps/UniKS-UCS2-H.bcmap +0 -0
  166. package/public/pdfjs/cmaps/UniKS-UCS2-V.bcmap +0 -0
  167. package/public/pdfjs/cmaps/UniKS-UTF16-H.bcmap +0 -0
  168. package/public/pdfjs/cmaps/UniKS-UTF16-V.bcmap +0 -0
  169. package/public/pdfjs/cmaps/UniKS-UTF32-H.bcmap +0 -0
  170. package/public/pdfjs/cmaps/UniKS-UTF32-V.bcmap +0 -0
  171. package/public/pdfjs/cmaps/UniKS-UTF8-H.bcmap +0 -0
  172. package/public/pdfjs/cmaps/UniKS-UTF8-V.bcmap +0 -0
  173. package/public/pdfjs/cmaps/V.bcmap +0 -0
  174. package/public/pdfjs/cmaps/WP-Symbol.bcmap +0 -0
  175. package/public/pdfjs/standard_fonts/FoxitDingbats.pfb +0 -0
  176. package/public/pdfjs/standard_fonts/FoxitFixed.pfb +0 -0
  177. package/public/pdfjs/standard_fonts/FoxitFixedBold.pfb +0 -0
  178. package/public/pdfjs/standard_fonts/FoxitFixedBoldItalic.pfb +0 -0
  179. package/public/pdfjs/standard_fonts/FoxitFixedItalic.pfb +0 -0
  180. package/public/pdfjs/standard_fonts/FoxitSans.pfb +0 -0
  181. package/public/pdfjs/standard_fonts/FoxitSansBold.pfb +0 -0
  182. package/public/pdfjs/standard_fonts/FoxitSansBoldItalic.pfb +0 -0
  183. package/public/pdfjs/standard_fonts/FoxitSansItalic.pfb +0 -0
  184. package/public/pdfjs/standard_fonts/FoxitSerif.pfb +0 -0
  185. package/public/pdfjs/standard_fonts/FoxitSerifBold.pfb +0 -0
  186. package/public/pdfjs/standard_fonts/FoxitSerifBoldItalic.pfb +0 -0
  187. package/public/pdfjs/standard_fonts/FoxitSerifItalic.pfb +0 -0
  188. package/public/pdfjs/standard_fonts/FoxitSymbol.pfb +0 -0
  189. package/public/pdfjs/standard_fonts/LICENSE_FOXIT +27 -0
  190. package/public/pdfjs/standard_fonts/LICENSE_LIBERATION +102 -0
  191. package/public/pdfjs/standard_fonts/LiberationSans-Bold.ttf +0 -0
  192. package/public/pdfjs/standard_fonts/LiberationSans-BoldItalic.ttf +0 -0
  193. package/public/pdfjs/standard_fonts/LiberationSans-Italic.ttf +0 -0
  194. package/public/pdfjs/standard_fonts/LiberationSans-Regular.ttf +0 -0
  195. package/src/App.vue +31 -31
  196. package/src/api/index.js +1 -1
  197. package/src/api/mock.http +2 -2
  198. package/src/api/requestUrl.js +185 -185
  199. package/src/assets/image/default_avt_ui.png +0 -0
  200. package/src/assets/image/filtType/audio.png +0 -0
  201. package/src/assets/image/filtType/excel1.png +0 -0
  202. package/src/assets/image/filtType/general.png +0 -0
  203. package/src/assets/image/filtType/html.png +0 -0
  204. package/src/assets/image/filtType/image1.png +0 -0
  205. package/src/assets/image/filtType/link.png +0 -0
  206. package/src/assets/image/filtType/md2.png +0 -0
  207. package/src/assets/image/filtType/mode.png +0 -0
  208. package/src/assets/image/filtType/news.png +0 -0
  209. package/src/assets/image/filtType/pdf1.png +0 -0
  210. package/src/assets/image/filtType/ppt1.png +0 -0
  211. package/src/assets/image/filtType/selfadd1.png +0 -0
  212. package/src/assets/image/filtType/txt1.png +0 -0
  213. package/src/assets/image/filtType/video.png +0 -0
  214. package/src/assets/image/filtType/wechat.png +0 -0
  215. package/src/assets/image/filtType/word1.png +0 -0
  216. package/src/assets/image/loading.gif +0 -0
  217. package/src/assets/js/AliyunlssUtil.js +117 -92
  218. package/src/assets/js/Base64Util.js +22 -22
  219. package/src/assets/js/common.js +287 -252
  220. package/src/assets/js/hammer.js +89 -100
  221. package/src/assets/js/script.js +36 -36
  222. package/src/assets/less/common.css +6773 -6773
  223. package/src/assets/less/converSationContainer/common.less +192 -199
  224. package/src/assets/less/converSationContainer/converSatonContainer.less +486 -493
  225. package/src/assets/less/iconfont.css +37 -37
  226. package/src/assets/less/ticketMessage.less +294 -294
  227. package/src/assets/less/variables.less +122 -0
  228. package/src/components/ActionAlertIframe.vue +155 -177
  229. package/src/components/AiGuide.vue +473 -466
  230. package/src/components/AnswerDocknowledge.vue +1207 -1059
  231. package/src/components/AnswerVoice.vue +286 -285
  232. package/src/components/AskIFrame.vue +15 -15
  233. package/src/components/ConversationContainer.vue +10880 -4934
  234. package/src/components/FileType.vue +86 -86
  235. package/src/components/Message.vue +27 -27
  236. package/src/components/MyEditor.vue +343 -351
  237. package/src/components/QwFeedback.vue +304 -0
  238. package/src/components/actionSatisfaction.vue +109 -107
  239. package/src/components/actionSendToBot.vue +64 -62
  240. package/src/components/answerDissatisfaction.vue +64 -62
  241. package/src/components/answerRadio.vue +261 -186
  242. package/src/components/ask-components/DissatisfactionOptions.vue +58 -57
  243. package/src/components/ask-components/Msgloading.vue +38 -37
  244. package/src/components/ask-components/SatisfactionV2.vue +15 -15
  245. package/src/components/askVideo.vue +214 -162
  246. package/src/components/assetDetails.vue +379 -378
  247. package/src/components/assetMessage.vue +231 -228
  248. package/src/components/associationIntention.vue +414 -355
  249. package/src/components/attachmentPreview.vue +92 -90
  250. package/src/components/botActionSatisfactor.vue +70 -68
  251. package/src/components/chatContent.vue +514 -513
  252. package/src/components/feedBack.vue +138 -136
  253. package/src/components/fielListView.vue +352 -351
  254. package/src/components/file/AliyunOssComponents.vue +108 -108
  255. package/src/components/formTemplate.vue +3517 -3572
  256. package/src/components/imgView.vue +32 -0
  257. package/src/components/intelligentSummary.vue +232 -227
  258. package/src/components/interruptComponents/imageSelectionAnswer.vue +203 -0
  259. package/src/components/interruptComponents/multipleChoiceAnswer.vue +134 -0
  260. package/src/components/interruptComponents/singleChoiceAnswer.vue +82 -0
  261. package/src/components/kkview.vue +1130 -1138
  262. package/src/components/loadingProcess.vue +164 -164
  263. package/src/components/markDownText.vue +961 -0
  264. package/src/components/message/ActionAlertIframe.vue +112 -112
  265. package/src/components/message/ShopMessage.vue +164 -164
  266. package/src/components/message/TextMessage.vue +926 -924
  267. package/src/components/message/TicketMessage.vue +201 -201
  268. package/src/components/message/swiper/index.js +4 -4
  269. package/src/components/message/swiper/ticketSwiper.vue +503 -503
  270. package/src/components/message/swiper/ticketSwiperItem.vue +61 -61
  271. package/src/components/msgLoading.vue +231 -231
  272. package/src/components/myPopup.vue +75 -70
  273. package/src/components/outputComponents/outputCom.vue +149 -0
  274. package/src/components/pagination.vue +130 -0
  275. package/src/components/pdfPosition.vue +1337 -1506
  276. package/src/components/popup.vue +230 -227
  277. package/src/components/preview/docView.vue +263 -0
  278. package/src/components/preview/excelView.vue +260 -0
  279. package/src/components/preview/markDownView.vue +70 -0
  280. package/src/components/preview/newPositionPreview.vue +601 -0
  281. package/src/components/preview/pdfView.vue +973 -0
  282. package/src/components/previewDoc.vue +253 -247
  283. package/src/components/previewPdf.vue +1106 -757
  284. package/src/components/previewWisdom.vue +252 -0
  285. package/src/components/receiverMessagePlatform.vue +71 -65
  286. package/src/components/recommend.vue +82 -80
  287. package/src/components/selector/hOption.vue +20 -20
  288. package/src/components/selector/hSelector.vue +199 -199
  289. package/src/components/selector/hWrapper.vue +216 -216
  290. package/src/components/senderMessagePlatform.vue +60 -50
  291. package/src/components/source/BotMessage.vue +24 -24
  292. package/src/components/source/CustomMessage.vue +24 -24
  293. package/src/components/test.vue +260 -260
  294. package/src/components/tree.vue +310 -295
  295. package/src/components/utils/AliyunIssUtil.js +103 -81
  296. package/src/components/utils/ckeditor.js +185 -174
  297. package/src/components/utils/format_date.js +25 -25
  298. package/src/components/utils/index.js +6 -6
  299. package/src/components/utils/math_utils.js +29 -29
  300. package/src/components/voiceComponent.vue +122 -119
  301. package/src/components/welcomeKnowledgeFile.vue +346 -340
  302. package/src/components/welcomeLlmCard.vue +142 -140
  303. package/src/components/welcomeSuggest.vue +99 -97
  304. package/src/locales/cn.json +100 -0
  305. package/src/locales/en.json +99 -0
  306. package/src/main.js +76 -57
  307. package/vue.config.js +54 -54
  308. package/src/components/newPdfPosition.vue +0 -878
@@ -1,352 +1,344 @@
1
- <template>
2
- <div class="my_editor">
3
- <div class="editor_head" v-if="havToolbar">
4
- <button class="button" @click="handleUpdate">
5
- <svg
6
- t="1703581982515"
7
- class="icon"
8
- viewBox="0 0 1024 1024"
9
- version="1.1"
10
- xmlns="http://www.w3.org/2000/svg"
11
- p-id="74840"
12
- width="200"
13
- height="200"
14
- >
15
- <path
16
- d="M566.839921 866.857572V983.050833c0 22.522042-7.677969 33.271198-29.688146 37.877979-18.427125 4.094917-37.366115 3.583052-55.281375-2.047458-17.403396-5.63051-24.057636-15.867802-24.057636-33.271198v-410.003534c0-7.166104-1.535594-9.213563-9.213562-9.213562-80.36274 0.511865-330.152658 0-410.515399 0-19.450854 0-29.688146-7.166104-34.294927-26.105094-5.118646-19.450854-5.118646-39.925438 0.511865-58.864427 5.118646-16.891531 15.355938-23.545771 32.759333-23.545771h412.562857c7.166104 0 8.189833-1.535594 8.189833-8.189834V41.219994c0-25.081365 7.166104-34.806792 32.247469-38.901708 18.93899-3.583052 38.389844-3.583052 56.305105 4.094917 13.820344 5.63051 20.474583 15.867802 20.474583 30.711875v412.562856c0 6.65424 1.535594 8.189833 8.189833 8.189834h406.932346c23.545771 0 33.783063 7.677969 38.901709 30.711875 4.094917 18.427125 4.094917 37.366115-2.047458 55.281375-5.118646 16.379667-15.355938 23.033906-32.247469 23.033907h-410.515398c-7.166104 0-10.237292 1.023729-9.725428 9.725427 0.511865 40.437302 0.511865 249.789918 0.511865 290.22722z"
17
- p-id="74841"
18
- />
19
- </svg>
20
- 上传图片或附件
21
- </button>
22
- </div>
23
- <div
24
- class="editor_content"
25
- id="my_editor_content"
26
- v-html="text"
27
- contenteditable
28
- ref="editorContent"
29
- @focus="ischecked = true"
30
- @blur="blurFn"
31
- @input="changeInput"
32
- :data-placeholder="placeholder"
33
- ></div>
34
- </div>
35
- </template>
36
-
37
- <script>
38
- import { v4 as uuidv4 } from "uuid";
39
- import { multipartUpload, ossFileUrl } from "./utils/AliyunIssUtil";
40
-
41
- export default {
42
- props: ["value", "placeholder", "havToolbar"],
43
- data () {
44
- return {
45
- ossConfig: {
46
- region: "oss-cn-zhangjiakou",
47
- //云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用STS方式来进行API访问
48
- accessKeyId: "LTAI4G3QtdEdwkEbihBngAsK",
49
- accessKeySecret: "OwgdVfc5PeCkIgqIdug660xmiSPchn",
50
- // stsToken: '<Your securityToken(STS)>',
51
- bucket: "guoranopen-zjk",
52
- },
53
- ischecked: false,
54
- text: ''
55
- }
56
- },
57
- watch: {
58
- value: {
59
- handler () {
60
- // 解决光标跳动BUG
61
- if (!this.ischecked) {
62
- this.text = this.value
63
- }
64
- },
65
- deep: true,
66
- immediate: true
67
- }
68
- },
69
- methods: {
70
- blurFn (e) {
71
- this.ischecked = false
72
- this.text = this.value
73
- e.view.blur()
74
- },
75
- changeInput (e) {
76
- this.$emit("input", e.target.innerHTML)
77
- },
78
- handleUpdate () {
79
- let inputObj = document.createElement('input')
80
- inputObj.setAttribute('id', '_ef');
81
- inputObj.setAttribute('type', 'file');
82
- inputObj.setAttribute('accept', '*')
83
- inputObj.setAttribute('capture', 'camcorder')
84
- inputObj.setAttribute('multiple', true)
85
- inputObj.setAttribute("style", 'visibility:hidden');
86
- document.body.appendChild(inputObj);
87
- inputObj.click();
88
- inputObj.onchange = () => {
89
- // 循环上传文件
90
- let files = inputObj.files;
91
- for (let index = 0; index < files.length; index++) {
92
- const file = files[index];
93
- let uid = uuidv4()
94
- // let command = this.editor.commands.get("insertAskComponent");
95
- // const listeners = this.editor.config.get('askPluginListener');
96
- // let beforeButtonInsert = findListener(listeners, "UPLOAD");
97
- if (file.type.includes('image')) {
98
- // if (this.editor.uploadImg) {
99
- // this.editor.uploadImg.push(uid)
100
- // } else {
101
- // this.editor.uploadImg = []
102
- // this.editor.uploadImg.push(uid)
103
- // }
104
- this.imgUploadCallback(file, uid, index)
105
- } else {
106
- this.fileUploadCallback(file, uid)
107
- }
108
- }
109
- }
110
- },
111
- appenNode (type, uid, value) {
112
- let node = document.createElement(type)
113
- node.setAttribute("uid", uid)
114
- if (type == 'img') {
115
- node.setAttribute("src", value)
116
- node.setAttribute("class", 'image')
117
- setTimeout(() => {
118
- this.appenNode('div', '', '')
119
- })
120
- }
121
- if (type == 'div' && uid) {
122
- node.innerText = value
123
- node.setAttribute("class", 'loading')
124
- setTimeout(() => {
125
- this.appenNode('div', '', '')
126
- })
127
- }
128
- if (type == 'div' && !uid) {
129
- node.setAttribute("class", 'wrap')
130
- }
131
- this.$refs.editorContent.appendChild(node)
132
- },
133
- deleteNode (uid) {
134
- console.log(uid);
135
- try {
136
- let node = document.querySelector("[uid=" + uid + ']')
137
- if (node) {
138
- this.$refs.editorContent.removeChild(node)
139
- }
140
- } catch {
141
- console.error("未找到该节点");
142
- }
143
- },
144
- imgUploadCallback (file, uid, index) {
145
- console.log(file, uid, index);
146
- this.appenNode("div", "div" + index + uid, file.name + "正在上传,请稍后...")
147
- this.upload(file).then(res => {
148
- this.appenNode('img', "img" + index + uid, res.default)
149
- this.deleteNode("div" + index + uid)
150
- this.$emit("input", this.$refs.editorContent.innerHTML)
151
- })
152
- },
153
- upload (file) {
154
- return new Promise((resolve) => {
155
- this.uploadFile(file, resolve)
156
- })
157
- },
158
- uploadFile (file, resolve) {
159
- let imgInfo = {
160
- url: '',
161
- }
162
- let res = multipartUpload(
163
- this.ossConfig,
164
- file,
165
- null,
166
- imgInfo
167
- );
168
- res.then(resp => {
169
- imgInfo.url = ossFileUrl(this.ossConfig, resp.name)
170
- resolve({
171
- name: resp.name,
172
- default: imgInfo.url
173
- })
174
- })
175
- },
176
- fileUploadCallback (file, uid) {
177
- this.$emit("fileUploadCallback", {
178
- param: {
179
- uid: uid,
180
- type: 'pending',
181
- name: file.name
182
- }
183
- })
184
- this.upload(file).then(res => {
185
- this.$emit("fileUploadCallback", {
186
- param: {
187
- uid: uid,
188
- name: file.name,
189
- type: 'success',
190
- url: res.default
191
- }
192
- })
193
- this.$emit("input", this.$refs.editorContent.innerHTML)
194
- })
195
- },
196
-
197
- },
198
- mounted () {
199
- this.$nextTick(() => {
200
- let myEditorContent = this.$refs.editorContent
201
- console.log(myEditorContent, 'myEditorContent');
202
- myEditorContent.addEventListener("paste", (e) => {
203
- let { files } = e.clipboardData
204
- console.log(files, e.clipboardData, 'filesfilesfilesfiles');
205
- if (files.length > 0) {
206
- for (let index = 0; index < files.length; index++) {
207
- let uid = uuidv4()
208
- if (files[index].type.indexOf('image') != -1) {
209
- this.imgUploadCallback(files[index], uid, index)
210
- e.preventDefault();
211
- } else {
212
- this.fileUploadCallback(files[index], uid)
213
- e.preventDefault();
214
- }
215
- }
216
- }
217
- })
218
- myEditorContent.addEventListener("dragenter", function () {
219
- });
220
- myEditorContent.addEventListener("dragover", function (e) {
221
- e.preventDefault();
222
- });
223
- myEditorContent.addEventListener("drop", (e) => {
224
- e.preventDefault();
225
- let files = e.dataTransfer.files; // 这个就相当于文件上传组件
226
- if (files.length > 0) {
227
- for (let index = 0; index < files.length; index++) {
228
- let uid = uuidv4()
229
- if (files[index].type.indexOf('image') != -1) {
230
- this.imgUploadCallback(files[index], uid, index)
231
- e.preventDefault();
232
- } else {
233
- this.fileUploadCallback(files[index], uid)
234
- e.preventDefault();
235
- }
236
- }
237
- }
238
- }, false);
239
- })
240
-
241
- }
242
- }
243
- </script>
244
-
245
- <style lang="less" scoped>
246
- .my_editor {
247
- width: 100%;
248
- border: 1px solid #e0e6f7;
249
- border-radius: 9px !important;
250
- background: #ffffff;
251
- /deep/.editor_content {
252
- border-bottom-left-radius: 9px !important;
253
- border-bottom-right-radius: 9px !important;
254
- padding: 10px;
255
- box-sizing: border-box;
256
- min-height: 150px !important;
257
- font-size: 14px !important;
258
- outline: none;
259
- div {
260
- margin-bottom: 8px;
261
- white-space: pre-wrap;
262
- }
263
- .image {
264
- height: 140px;
265
- object-fit: contain;
266
- }
267
- // .image{
268
- // outline: 3px solid #366aff;
269
- // }
270
- .loading {
271
- background: rgba(0, 89, 255, 0.2);
272
- display: inline-block;
273
- padding: 2px 5px;
274
- border-radius: 3px;
275
- padding-left: 20px;
276
- position: relative;
277
- font-size: 12px;
278
- -webkit-user-modify: read-only;
279
- -moz-user-modify: read-only;
280
- }
281
- .loading::after {
282
- content: '';
283
- background-image: url(../assets/image/building.png);
284
- background-size: 100%;
285
- width: 15px;
286
- height: 15px;
287
- position: absolute;
288
- top: 3px;
289
- left: 2px;
290
- color: #366aff;
291
- -webkit-animation: rotate 1.5s linear infinite;
292
- animation: rotate 1.5s linear infinite;
293
- }
294
- .wrap {
295
- height: 1px;
296
- width: 100%;
297
- }
298
- }
299
- .editor_content:focus {
300
- box-shadow: 2px 2px 3px rgba(0, 0, 0, 0.1) inset, 0, 0;
301
- }
302
- .editor_content:empty::before {
303
- content: attr(data-placeholder);
304
- color: #b3b3b3;
305
- font-size: 14px;
306
- }
307
- .editor_head {
308
- display: flex;
309
- align-items: center;
310
- width: 100%;
311
- height: 38px;
312
- padding: 0 10px;
313
- padding-left: 3px;
314
- box-sizing: border-box;
315
- color: #366aff;
316
- font-size: 14px;
317
- border-bottom: 1px solid #e0e6f7;
318
-
319
- .button {
320
- padding: 5px 8px;
321
- background: #ffffff;
322
- border: none;
323
- border-radius: 2px;
324
- svg {
325
- fill: #366aff;
326
- width: 12px !important;
327
- height: 12px !important;
328
- }
329
- }
330
- .button:focus {
331
- // box-shadow: var(--ck-focus-outer-shadow),0 0;
332
- outline: none;
333
- background: #f0f0f0;
334
- transition: box-shadow 0.2s ease-in-out, border 0.2s ease-in-ou;
335
- }
336
- .button:active {
337
- border: 1px solid #366aff;
338
- }
339
- }
340
- }
341
- @keyframes rotate {
342
- 0% {
343
- -webkit-transform: rotate(0deg);
344
- transform: rotate(0deg);
345
- }
346
-
347
- 100% {
348
- -webkit-transform: rotate(360deg);
349
- transform: rotate(360deg);
350
- }
351
- }
1
+ <template>
2
+ <div class="my_editor">
3
+ <div class="editor_head" v-if="havToolbar">
4
+ <button class="button" @click="handleUpdate">
5
+ <svg
6
+ t="1703581982515"
7
+ class="icon"
8
+ viewBox="0 0 1024 1024"
9
+ version="1.1"
10
+ xmlns="http://www.w3.org/2000/svg"
11
+ p-id="74840"
12
+ width="200"
13
+ height="200"
14
+ >
15
+ <path
16
+ d="M566.839921 866.857572V983.050833c0 22.522042-7.677969 33.271198-29.688146 37.877979-18.427125 4.094917-37.366115 3.583052-55.281375-2.047458-17.403396-5.63051-24.057636-15.867802-24.057636-33.271198v-410.003534c0-7.166104-1.535594-9.213563-9.213562-9.213562-80.36274 0.511865-330.152658 0-410.515399 0-19.450854 0-29.688146-7.166104-34.294927-26.105094-5.118646-19.450854-5.118646-39.925438 0.511865-58.864427 5.118646-16.891531 15.355938-23.545771 32.759333-23.545771h412.562857c7.166104 0 8.189833-1.535594 8.189833-8.189834V41.219994c0-25.081365 7.166104-34.806792 32.247469-38.901708 18.93899-3.583052 38.389844-3.583052 56.305105 4.094917 13.820344 5.63051 20.474583 15.867802 20.474583 30.711875v412.562856c0 6.65424 1.535594 8.189833 8.189833 8.189834h406.932346c23.545771 0 33.783063 7.677969 38.901709 30.711875 4.094917 18.427125 4.094917 37.366115-2.047458 55.281375-5.118646 16.379667-15.355938 23.033906-32.247469 23.033907h-410.515398c-7.166104 0-10.237292 1.023729-9.725428 9.725427 0.511865 40.437302 0.511865 249.789918 0.511865 290.22722z"
17
+ p-id="74841"
18
+ />
19
+ </svg>
20
+ {{$t('dragonCommon.uploadImgFile')}}
21
+ </button>
22
+ </div>
23
+ <div
24
+ class="editor_content"
25
+ id="my_editor_content"
26
+ v-html="text"
27
+ contenteditable
28
+ ref="editorContent"
29
+ @focus="ischecked = true"
30
+ @blur="blurFn"
31
+ @input="changeInput"
32
+ :data-placeholder="placeholder"
33
+ ></div>
34
+ </div>
35
+ </template>
36
+
37
+ <script>
38
+ import { v4 as uuidv4 } from "uuid";
39
+ import { multipartUpload, ossFileUrl } from "./utils/AliyunIssUtil";
40
+
41
+ export default {
42
+ props: ["value", "placeholder", "havToolbar"],
43
+ data () {
44
+ return {
45
+ ischecked: false,
46
+ text: ''
47
+ }
48
+ },
49
+ watch: {
50
+ value: {
51
+ handler () {
52
+ // 解决光标跳动BUG
53
+ if (!this.ischecked) {
54
+ this.text = this.value
55
+ }
56
+ },
57
+ deep: true,
58
+ immediate: true
59
+ }
60
+ },
61
+ methods: {
62
+ blurFn (e) {
63
+ this.ischecked = false
64
+ this.text = this.value
65
+ e.view.blur()
66
+ },
67
+ changeInput (e) {
68
+ this.$emit("input", e.target.innerHTML)
69
+ },
70
+ handleUpdate () {
71
+ let inputObj = document.createElement('input')
72
+ inputObj.setAttribute('id', '_ef');
73
+ inputObj.setAttribute('type', 'file');
74
+ inputObj.setAttribute('accept', '*')
75
+ inputObj.setAttribute('multiple', true)
76
+ inputObj.setAttribute("style", 'visibility:hidden');
77
+ document.body.appendChild(inputObj);
78
+ inputObj.click();
79
+ inputObj.onchange = () => {
80
+ // 循环上传文件
81
+ let files = inputObj.files;
82
+ for (let index = 0; index < files.length; index++) {
83
+ const file = files[index];
84
+ let uid = uuidv4()
85
+ // let command = this.editor.commands.get("insertAskComponent");
86
+ // const listeners = this.editor.config.get('askPluginListener');
87
+ // let beforeButtonInsert = findListener(listeners, "UPLOAD");
88
+ if (file.type.includes('image')) {
89
+ // if (this.editor.uploadImg) {
90
+ // this.editor.uploadImg.push(uid)
91
+ // } else {
92
+ // this.editor.uploadImg = []
93
+ // this.editor.uploadImg.push(uid)
94
+ // }
95
+ this.imgUploadCallback(file, uid, index)
96
+ } else {
97
+ this.fileUploadCallback(file, uid)
98
+ }
99
+ }
100
+ }
101
+ },
102
+ appenNode (type, uid, value) {
103
+ let node = document.createElement(type)
104
+ node.setAttribute("uid", uid)
105
+ if (type == 'img') {
106
+ node.setAttribute("src", value)
107
+ node.setAttribute("class", 'image')
108
+ setTimeout(() => {
109
+ this.appenNode('div', '', '')
110
+ })
111
+ }
112
+ if (type == 'div' && uid) {
113
+ node.innerText = value
114
+ node.setAttribute("class", 'loading')
115
+ setTimeout(() => {
116
+ this.appenNode('div', '', '')
117
+ })
118
+ }
119
+ if (type == 'div' && !uid) {
120
+ node.setAttribute("class", 'wrap')
121
+ }
122
+ this.$refs.editorContent.appendChild(node)
123
+ },
124
+ deleteNode (uid) {
125
+ console.log(uid);
126
+ try {
127
+ let node = document.querySelector("[uid=" + uid + ']')
128
+ if (node) {
129
+ this.$refs.editorContent.removeChild(node)
130
+ }
131
+ } catch {
132
+ console.error("未找到该节点");
133
+ }
134
+ },
135
+ imgUploadCallback (file, uid, index) {
136
+ console.log(file, uid, index);
137
+ this.appenNode("div", "div" + index + uid, file.name + "正在上传,请稍后...")
138
+ this.upload(file).then(res => {
139
+ this.appenNode('img', "img" + index + uid, res.default)
140
+ this.deleteNode("div" + index + uid)
141
+ this.$emit("input", this.$refs.editorContent.innerHTML)
142
+ })
143
+ },
144
+ upload (file) {
145
+ return new Promise((resolve) => {
146
+ this.uploadFile(file, resolve)
147
+ })
148
+ },
149
+ uploadFile (file, resolve) {
150
+ let imgInfo = {
151
+ url: '',
152
+ }
153
+ let res = multipartUpload(
154
+ file,
155
+ null,
156
+ imgInfo
157
+ );
158
+ res.then(resp => {
159
+ imgInfo.url = ossFileUrl(resp.name)
160
+ resolve({
161
+ name: resp.name,
162
+ default: imgInfo.url
163
+ })
164
+ })
165
+ },
166
+ fileUploadCallback (file, uid) {
167
+ this.$emit("fileUploadCallback", {
168
+ param: {
169
+ uid: uid,
170
+ type: 'pending',
171
+ name: file.name
172
+ }
173
+ })
174
+ this.upload(file).then(res => {
175
+ this.$emit("fileUploadCallback", {
176
+ param: {
177
+ uid: uid,
178
+ name: file.name,
179
+ type: 'success',
180
+ url: res.default
181
+ }
182
+ })
183
+ this.$emit("input", this.$refs.editorContent.innerHTML)
184
+ })
185
+ },
186
+
187
+ },
188
+ mounted () {
189
+ this.$nextTick(() => {
190
+ let myEditorContent = this.$refs.editorContent
191
+ console.log(myEditorContent, 'myEditorContent');
192
+ myEditorContent.addEventListener("paste", (e) => {
193
+ let { files } = e.clipboardData
194
+ console.log(files, e.clipboardData, 'filesfilesfilesfiles');
195
+ if (files.length > 0) {
196
+ for (let index = 0; index < files.length; index++) {
197
+ let uid = uuidv4()
198
+ if (files[index].type.indexOf('image') != -1) {
199
+ this.imgUploadCallback(files[index], uid, index)
200
+ e.preventDefault();
201
+ } else {
202
+ this.fileUploadCallback(files[index], uid)
203
+ e.preventDefault();
204
+ }
205
+ }
206
+ }
207
+ })
208
+ myEditorContent.addEventListener("dragenter", function () {
209
+ });
210
+ myEditorContent.addEventListener("dragover", function (e) {
211
+ e.preventDefault();
212
+ });
213
+ myEditorContent.addEventListener("drop", (e) => {
214
+ e.preventDefault();
215
+ let files = e.dataTransfer.files; // 这个就相当于文件上传组件
216
+ if (files.length > 0) {
217
+ for (let index = 0; index < files.length; index++) {
218
+ let uid = uuidv4()
219
+ if (files[index].type.indexOf('image') != -1) {
220
+ this.imgUploadCallback(files[index], uid, index)
221
+ e.preventDefault();
222
+ } else {
223
+ this.fileUploadCallback(files[index], uid)
224
+ e.preventDefault();
225
+ }
226
+ }
227
+ }
228
+ }, false);
229
+ })
230
+
231
+ }
232
+ }
233
+ </script>
234
+
235
+ <style lang="less" scoped>
236
+ @import '../assets/less/variables.less';
237
+
238
+ .my_editor {
239
+ width: 100%;
240
+ border: 1px solid @border-color-table;
241
+ border-radius: 9px !important;
242
+ background: @background-color-light;
243
+ /deep/.editor_content {
244
+ border-bottom-left-radius: 9px !important;
245
+ border-bottom-right-radius: 9px !important;
246
+ padding: 10px;
247
+ box-sizing: border-box;
248
+ min-height: 150px !important;
249
+ font-size: 14px !important;
250
+ outline: none;
251
+ div {
252
+ margin-bottom: 8px;
253
+ white-space: pre-wrap;
254
+ }
255
+ .image {
256
+ height: 140px;
257
+ object-fit: contain;
258
+ }
259
+ // .image{
260
+ // outline: 3px solid #366aff;
261
+ // }
262
+ .loading {
263
+ background: rgba(0, 89, 255, 0.2);
264
+ display: inline-block;
265
+ padding: 2px 5px;
266
+ border-radius: 3px;
267
+ padding-left: 20px;
268
+ position: relative;
269
+ font-size: 12px;
270
+ -webkit-user-modify: read-only;
271
+ -moz-user-modify: read-only;
272
+ }
273
+ .loading::after {
274
+ content: '';
275
+ background-image: url(../assets/image/building.png);
276
+ background-size: 100%;
277
+ width: 15px;
278
+ height: 15px;
279
+ position: absolute;
280
+ top: 3px;
281
+ left: 2px;
282
+ color: @font-primary-accent-color;
283
+ -webkit-animation: rotate 1.5s linear infinite;
284
+ animation: rotate 1.5s linear infinite;
285
+ }
286
+ // .wrap {
287
+ // height: 1px;
288
+ // width: 100%;
289
+ // }
290
+ }
291
+ .editor_content:focus {
292
+ box-shadow: 2px 2px 3px rgba(0, 0, 0, 0.1) inset, 0, 0;
293
+ }
294
+ .editor_content:empty::before {
295
+ content: attr(data-placeholder);
296
+ color: @font-primary-color-r3;
297
+ font-size: 14px;
298
+ }
299
+ .editor_head {
300
+ display: flex;
301
+ align-items: center;
302
+ width: 100%;
303
+ height: 38px;
304
+ padding: 0 10px;
305
+ padding-left: 3px;
306
+ box-sizing: border-box;
307
+ color: @primary-color;
308
+ font-size: 14px;
309
+ border-bottom: 1px solid @border-color-table;
310
+
311
+ .button {
312
+ padding: 5px 8px;
313
+ background: @background-color-light;
314
+ border: none;
315
+ border-radius: 2px;
316
+ svg {
317
+ fill: @primary-color;
318
+ width: 12px !important;
319
+ height: 12px !important;
320
+ }
321
+ }
322
+ .button:focus {
323
+ // box-shadow: var(--ck-focus-outer-shadow),0 0;
324
+ outline: none;
325
+ background: #f0f0f0;
326
+ transition: box-shadow 0.2s ease-in-out, border 0.2s ease-in-ou;
327
+ }
328
+ .button:active {
329
+ border: 1px solid @primary-color;
330
+ }
331
+ }
332
+ }
333
+ @keyframes rotate {
334
+ 0% {
335
+ -webkit-transform: rotate(0deg);
336
+ transform: rotate(0deg);
337
+ }
338
+
339
+ 100% {
340
+ -webkit-transform: rotate(360deg);
341
+ transform: rotate(360deg);
342
+ }
343
+ }
352
344
  </style>