@tencentcloud/ai-desk-customer-vue 0.1.0

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 (351) hide show
  1. package/.code.yml +17 -0
  2. package/.eslintignore +6 -0
  3. package/.stylelintrc.json +40 -0
  4. package/CHANGELOG.md +5 -0
  5. package/README.md +12 -0
  6. package/adapter-vue-web.ts +73 -0
  7. package/adapter-vue.ts +10 -0
  8. package/assets/audio-before-delete.svg +4 -0
  9. package/assets/audio-blue.png +0 -0
  10. package/assets/audio-bubble-blue.svg +3 -0
  11. package/assets/audio-bubble-red.svg +3 -0
  12. package/assets/audio-delete.svg +10 -0
  13. package/assets/audio.svg +6 -0
  14. package/assets/back.svg +16 -0
  15. package/assets/background_mobile.png +0 -0
  16. package/assets/camera-uni.png +0 -0
  17. package/assets/close-quote-icon.svg +3 -0
  18. package/assets/customer_avatar.png +0 -0
  19. package/assets/customer_avatar_mobile.png +0 -0
  20. package/assets/dialog-close.png +0 -0
  21. package/assets/double-arrow.svg +1 -0
  22. package/assets/download.svg +6 -0
  23. package/assets/emoji.png +0 -0
  24. package/assets/face-uni.png +0 -0
  25. package/assets/face.png +0 -0
  26. package/assets/file-h5.png +0 -0
  27. package/assets/files.png +0 -0
  28. package/assets/form-dialog-bg.png +0 -0
  29. package/assets/icon-arrow-left.svg +7 -0
  30. package/assets/icon-close.svg +6 -0
  31. package/assets/iconRight.svg +3 -0
  32. package/assets/icon_form.png +0 -0
  33. package/assets/icon_form_filled.png +0 -0
  34. package/assets/icon_question.png +0 -0
  35. package/assets/icon_refresh.png +0 -0
  36. package/assets/icon_success.png +0 -0
  37. package/assets/imRobotGuess.svg +4 -0
  38. package/assets/image-uni.png +0 -0
  39. package/assets/image.png +0 -0
  40. package/assets/keyboard_icon.png +0 -0
  41. package/assets/loading.png +0 -0
  42. package/assets/more-uni.png +0 -0
  43. package/assets/more_tools.png +0 -0
  44. package/assets/msg-audio.svg +1 -0
  45. package/assets/msg-copy.svg +30 -0
  46. package/assets/msg-del.svg +33 -0
  47. package/assets/msg-quote.svg +8 -0
  48. package/assets/msg-revoke.svg +29 -0
  49. package/assets/radio-check.png +0 -0
  50. package/assets/radio-uncheck.png +0 -0
  51. package/assets/radio.svg +6 -0
  52. package/assets/refresh.svg +4 -0
  53. package/assets/rotate-left.svg +7 -0
  54. package/assets/rotate-right.svg +7 -0
  55. package/assets/star.png +0 -0
  56. package/assets/starLine.png +0 -0
  57. package/assets/translate.svg +12 -0
  58. package/assets/video-play.png +0 -0
  59. package/assets/video-uni.png +0 -0
  60. package/assets/video.png +0 -0
  61. package/assets/zoom-in.svg +9 -0
  62. package/assets/zoom-out.svg +9 -0
  63. package/components/CustomerServiceChat/chat-header/index-web.vue +141 -0
  64. package/components/CustomerServiceChat/emoji-config/custom-emoji.ts +15 -0
  65. package/components/CustomerServiceChat/emoji-config/default-emoji.ts +114 -0
  66. package/components/CustomerServiceChat/emoji-config/index.ts +140 -0
  67. package/components/CustomerServiceChat/emoji-config/locales/en.ts +66 -0
  68. package/components/CustomerServiceChat/emoji-config/locales/zh_cn.ts +66 -0
  69. package/components/CustomerServiceChat/index-web.vue +250 -0
  70. package/components/CustomerServiceChat/message-input/index-web.vue +214 -0
  71. package/components/CustomerServiceChat/message-input/index.ts +2 -0
  72. package/components/CustomerServiceChat/message-input/message-input-button.vue +95 -0
  73. package/components/CustomerServiceChat/message-input/message-input-editor-web.vue +884 -0
  74. package/components/CustomerServiceChat/message-input/message-input-file-web.ts +38 -0
  75. package/components/CustomerServiceChat/message-input/message-input-quote/index.vue +204 -0
  76. package/components/CustomerServiceChat/message-input-toolbar/emoji-dialog-mobile/emoji-dialog-mobile.vue +145 -0
  77. package/components/CustomerServiceChat/message-input-toolbar/emoji-picker/emoji-picker-dialog.vue +180 -0
  78. package/components/CustomerServiceChat/message-input-toolbar/emoji-picker/index.ts +2 -0
  79. package/components/CustomerServiceChat/message-input-toolbar/emoji-picker/index.vue +90 -0
  80. package/components/CustomerServiceChat/message-input-toolbar/emoji-picker/style/h5.scss +26 -0
  81. package/components/CustomerServiceChat/message-input-toolbar/emoji-picker/style/index.scss +4 -0
  82. package/components/CustomerServiceChat/message-input-toolbar/emoji-picker/style/web.scss +55 -0
  83. package/components/CustomerServiceChat/message-input-toolbar/file-upload/index.ts +2 -0
  84. package/components/CustomerServiceChat/message-input-toolbar/file-upload/index.vue +77 -0
  85. package/components/CustomerServiceChat/message-input-toolbar/image-upload/index.ts +2 -0
  86. package/components/CustomerServiceChat/message-input-toolbar/image-upload/index.vue +185 -0
  87. package/components/CustomerServiceChat/message-input-toolbar/index-web.vue +191 -0
  88. package/components/CustomerServiceChat/message-input-toolbar/index.ts +2 -0
  89. package/components/CustomerServiceChat/message-input-toolbar/style/uni.scss +111 -0
  90. package/components/CustomerServiceChat/message-input-toolbar/toolbar-item-container/index.vue +149 -0
  91. package/components/CustomerServiceChat/message-input-toolbar/toolbar-item-container/style/color.scss +6 -0
  92. package/components/CustomerServiceChat/message-input-toolbar/toolbar-item-container/style/h5.scss +20 -0
  93. package/components/CustomerServiceChat/message-input-toolbar/toolbar-item-container/style/index.scss +5 -0
  94. package/components/CustomerServiceChat/message-input-toolbar/toolbar-item-container/style/uni.scss +36 -0
  95. package/components/CustomerServiceChat/message-input-toolbar/toolbar-item-container/style/web.scss +19 -0
  96. package/components/CustomerServiceChat/message-input-toolbar/video-upload/index.ts +2 -0
  97. package/components/CustomerServiceChat/message-input-toolbar/video-upload/index.vue +146 -0
  98. package/components/CustomerServiceChat/message-list/index-web.vue +712 -0
  99. package/components/CustomerServiceChat/message-list/link/index.ts +23 -0
  100. package/components/CustomerServiceChat/message-list/message-elements/message-audio-web.vue +223 -0
  101. package/components/CustomerServiceChat/message-list/message-elements/message-bubble-web.vue +504 -0
  102. package/components/CustomerServiceChat/message-list/message-elements/message-custom.vue +5 -0
  103. package/components/CustomerServiceChat/message-list/message-elements/message-face.vue +45 -0
  104. package/components/CustomerServiceChat/message-list/message-elements/message-file.vue +151 -0
  105. package/components/CustomerServiceChat/message-list/message-elements/message-image-web.vue +97 -0
  106. package/components/CustomerServiceChat/message-list/message-elements/message-location.vue +34 -0
  107. package/components/CustomerServiceChat/message-list/message-elements/message-quote/index-web.vue +286 -0
  108. package/components/CustomerServiceChat/message-list/message-elements/message-quote/interface.ts +60 -0
  109. package/components/CustomerServiceChat/message-list/message-elements/message-record/index.vue +139 -0
  110. package/components/CustomerServiceChat/message-list/message-elements/message-text.vue +94 -0
  111. package/components/CustomerServiceChat/message-list/message-elements/message-timestamp.vue +76 -0
  112. package/components/CustomerServiceChat/message-list/message-elements/message-video-web.vue +319 -0
  113. package/components/CustomerServiceChat/message-list/message-elements/plugins/plugin-components/index.ts +9 -0
  114. package/components/CustomerServiceChat/message-list/message-elements/plugins/plugin-components/message-customer/index.ts +5 -0
  115. package/components/CustomerServiceChat/message-list/message-elements/plugins/plugin-components/message-customer/message-customer-service.vue +22 -0
  116. package/components/CustomerServiceChat/message-list/message-elements/plugins/plugin-components/message-plugin-layout-web.vue +133 -0
  117. package/components/CustomerServiceChat/message-list/message-elements/plugins/plugin-components/message-plugin-web.vue +83 -0
  118. package/components/CustomerServiceChat/message-list/message-elements/read-status/index.vue +193 -0
  119. package/components/CustomerServiceChat/message-list/message-elements/simple-message-list/index.vue +462 -0
  120. package/components/CustomerServiceChat/message-list/message-elements/simple-message-list/message-container.vue +105 -0
  121. package/components/CustomerServiceChat/message-list/message-elements/video-play.vue +59 -0
  122. package/components/CustomerServiceChat/message-list/message-tool/index-web.vue +312 -0
  123. package/components/CustomerServiceChat/message-list/message-tool/message-revoked.vue +63 -0
  124. package/components/CustomerServiceChat/message-list/scroll-button/index.vue +201 -0
  125. package/components/CustomerServiceChat/message-list/style/color.scss +32 -0
  126. package/components/CustomerServiceChat/message-list/style/h5.scss +16 -0
  127. package/components/CustomerServiceChat/message-list/style/index.scss +11 -0
  128. package/components/CustomerServiceChat/message-list/style/web.scss +180 -0
  129. package/components/CustomerServiceChat/style/common.scss +59 -0
  130. package/components/CustomerServiceChat/style/h5.scss +51 -0
  131. package/components/CustomerServiceChat/style/index.scss +12 -0
  132. package/components/CustomerServiceChat/style/uni.scss +13 -0
  133. package/components/CustomerServiceChat/style/web.scss +46 -0
  134. package/components/CustomerServiceChat/style/wx.scss +5 -0
  135. package/components/CustomerServiceChat/utils/conversationDraft.ts +86 -0
  136. package/components/CustomerServiceChat/utils/sendMessage.ts +140 -0
  137. package/components/common/Avatar/index.vue +148 -0
  138. package/components/common/BottomPopup/index.ts +3 -0
  139. package/components/common/BottomPopup/index.vue +160 -0
  140. package/components/common/BottomPopup/style/h5.scss +62 -0
  141. package/components/common/BottomPopup/style/index.scss +3 -0
  142. package/components/common/BottomPopup/style/modal.scss +5 -0
  143. package/components/common/Dialog/index.ts +3 -0
  144. package/components/common/Dialog/index.vue +120 -0
  145. package/components/common/Dialog/style/color.scss +43 -0
  146. package/components/common/Dialog/style/dialog.scss +4 -0
  147. package/components/common/Dialog/style/h5.scss +56 -0
  148. package/components/common/Dialog/style/web.scss +61 -0
  149. package/components/common/Drawer/index.vue +164 -0
  150. package/components/common/Icon.vue +83 -0
  151. package/components/common/ImagePreviewer/image-item-web.vue +42 -0
  152. package/components/common/ImagePreviewer/index-web.vue +682 -0
  153. package/components/common/ImagePreviewer/index.ts +3 -0
  154. package/components/common/Overlay/index.vue +126 -0
  155. package/components/common/ProgressMessage/index.vue +95 -0
  156. package/components/common/RadioSelect/index.vue +59 -0
  157. package/components/common/RichText/LICENSE +21 -0
  158. package/components/common/RichText/README.md +244 -0
  159. package/components/common/RichText/dist/mp-alipay/index.acss +1 -0
  160. package/components/common/RichText/dist/mp-alipay/index.axml +1 -0
  161. package/components/common/RichText/dist/mp-alipay/index.js +8 -0
  162. package/components/common/RichText/dist/mp-alipay/index.json +1 -0
  163. package/components/common/RichText/dist/mp-alipay/node/node.acss +1 -0
  164. package/components/common/RichText/dist/mp-alipay/node/node.axml +1 -0
  165. package/components/common/RichText/dist/mp-alipay/node/node.js +1 -0
  166. package/components/common/RichText/dist/mp-alipay/node/node.json +1 -0
  167. package/components/common/RichText/dist/mp-alipay/parser.js +1 -0
  168. package/components/common/RichText/dist/mp-baidu/index.css +1 -0
  169. package/components/common/RichText/dist/mp-baidu/index.js +8 -0
  170. package/components/common/RichText/dist/mp-baidu/index.json +1 -0
  171. package/components/common/RichText/dist/mp-baidu/index.swan +1 -0
  172. package/components/common/RichText/dist/mp-baidu/node/node.css +1 -0
  173. package/components/common/RichText/dist/mp-baidu/node/node.js +1 -0
  174. package/components/common/RichText/dist/mp-baidu/node/node.json +1 -0
  175. package/components/common/RichText/dist/mp-baidu/node/node.swan +1 -0
  176. package/components/common/RichText/dist/mp-baidu/parser.js +1 -0
  177. package/components/common/RichText/dist/mp-qq/index.js +8 -0
  178. package/components/common/RichText/dist/mp-qq/index.json +1 -0
  179. package/components/common/RichText/dist/mp-qq/index.qml +1 -0
  180. package/components/common/RichText/dist/mp-qq/index.qss +1 -0
  181. package/components/common/RichText/dist/mp-qq/node/node.js +1 -0
  182. package/components/common/RichText/dist/mp-qq/node/node.json +1 -0
  183. package/components/common/RichText/dist/mp-qq/node/node.qml +1 -0
  184. package/components/common/RichText/dist/mp-qq/node/node.qss +1 -0
  185. package/components/common/RichText/dist/mp-qq/parser.js +1 -0
  186. package/components/common/RichText/dist/mp-toutiao/index.js +8 -0
  187. package/components/common/RichText/dist/mp-toutiao/index.json +1 -0
  188. package/components/common/RichText/dist/mp-toutiao/index.ttml +1 -0
  189. package/components/common/RichText/dist/mp-toutiao/index.ttss +1 -0
  190. package/components/common/RichText/dist/mp-toutiao/node/node.js +1 -0
  191. package/components/common/RichText/dist/mp-toutiao/node/node.json +1 -0
  192. package/components/common/RichText/dist/mp-toutiao/node/node.ttml +1 -0
  193. package/components/common/RichText/dist/mp-toutiao/node/node.ttss +1 -0
  194. package/components/common/RichText/dist/mp-toutiao/parser.js +1 -0
  195. package/components/common/RichText/dist/mp-weixin/index.js +8 -0
  196. package/components/common/RichText/dist/mp-weixin/index.json +1 -0
  197. package/components/common/RichText/dist/mp-weixin/index.wxml +1 -0
  198. package/components/common/RichText/dist/mp-weixin/index.wxss +1 -0
  199. package/components/common/RichText/dist/mp-weixin/node/node.js +1 -0
  200. package/components/common/RichText/dist/mp-weixin/node/node.json +1 -0
  201. package/components/common/RichText/dist/mp-weixin/node/node.wxml +1 -0
  202. package/components/common/RichText/dist/mp-weixin/node/node.wxss +1 -0
  203. package/components/common/RichText/dist/mp-weixin/parser.js +1 -0
  204. package/components/common/RichText/dist/uni-app/components/mp-html/mp-html.vue +498 -0
  205. package/components/common/RichText/dist/uni-app/components/mp-html/node/node.vue +587 -0
  206. package/components/common/RichText/dist/uni-app/components/mp-html/parser.js +1393 -0
  207. package/components/common/RichText/dist/uni-app/static/app-plus/mp-html/js/handler.js +1 -0
  208. package/components/common/RichText/dist/uni-app/static/app-plus/mp-html/js/uni.webview.min.js +1 -0
  209. package/components/common/RichText/dist/uni-app/static/app-plus/mp-html/local.html +1 -0
  210. package/components/common/RichText/docs/.nojekyll +0 -0
  211. package/components/common/RichText/docs/index.html +50 -0
  212. package/components/common/RichText/docs/lib/docsify.min.js +1 -0
  213. package/components/common/RichText/docs/lib/prism-bash.min.js +1 -0
  214. package/components/common/RichText/docs/lib/search.min.js +1 -0
  215. package/components/common/RichText/docs/lib/vue.css +858 -0
  216. package/components/common/RichText/gulpfile.js +113 -0
  217. package/components/common/RichText/lint.js +63 -0
  218. package/components/common/RichText/package.json +74 -0
  219. package/components/common/RichText/plugins/README.md +2 -0
  220. package/components/common/RichText/plugins/audio/README.md +25 -0
  221. package/components/common/RichText/plugins/audio/build.js +11 -0
  222. package/components/common/RichText/plugins/audio/context.js +7 -0
  223. package/components/common/RichText/plugins/audio/index.js +34 -0
  224. package/components/common/RichText/plugins/audio/miniprogram/audio.js +189 -0
  225. package/components/common/RichText/plugins/audio/miniprogram/audio.json +3 -0
  226. package/components/common/RichText/plugins/audio/miniprogram/audio.wxml +17 -0
  227. package/components/common/RichText/plugins/audio/miniprogram/audio.wxss +127 -0
  228. package/components/common/RichText/plugins/audio/miniprogram/build.js +3 -0
  229. package/components/common/RichText/plugins/audio/uni-app/audio.vue +269 -0
  230. package/components/common/RichText/plugins/audio/uni-app/build.js +3 -0
  231. package/components/common/RichText/plugins/card/README.md +30 -0
  232. package/components/common/RichText/plugins/card/build.js +14 -0
  233. package/components/common/RichText/plugins/card/index.js +7 -0
  234. package/components/common/RichText/plugins/card/miniprogram/build.js +3 -0
  235. package/components/common/RichText/plugins/card/miniprogram/card.js +26 -0
  236. package/components/common/RichText/plugins/card/miniprogram/card.json +3 -0
  237. package/components/common/RichText/plugins/card/miniprogram/card.wxml +9 -0
  238. package/components/common/RichText/plugins/card/miniprogram/card.wxss +55 -0
  239. package/components/common/RichText/plugins/card/uni-app/build.js +3 -0
  240. package/components/common/RichText/plugins/card/uni-app/card.vue +122 -0
  241. package/components/common/RichText/plugins/editable/README.md +137 -0
  242. package/components/common/RichText/plugins/editable/config.js +15 -0
  243. package/components/common/RichText/plugins/editable/miniprogram/build.js +813 -0
  244. package/components/common/RichText/plugins/editable/miniprogram/index.js +551 -0
  245. package/components/common/RichText/plugins/editable/uni-app/build.js +744 -0
  246. package/components/common/RichText/plugins/editable/uni-app/index.js +553 -0
  247. package/components/common/RichText/plugins/emoji/README.md +15 -0
  248. package/components/common/RichText/plugins/emoji/index.js +203 -0
  249. package/components/common/RichText/plugins/highlight/README.md +26 -0
  250. package/components/common/RichText/plugins/highlight/config.js +5 -0
  251. package/components/common/RichText/plugins/highlight/index.js +96 -0
  252. package/components/common/RichText/plugins/highlight/miniprogram/build.js +88 -0
  253. package/components/common/RichText/plugins/highlight/prism.css +125 -0
  254. package/components/common/RichText/plugins/highlight/prism.min.js +7 -0
  255. package/components/common/RichText/plugins/highlight/uni-app/build.js +88 -0
  256. package/components/common/RichText/plugins/img-cache/README.md +24 -0
  257. package/components/common/RichText/plugins/img-cache/build.js +16 -0
  258. package/components/common/RichText/plugins/img-cache/index.js +138 -0
  259. package/components/common/RichText/plugins/latex/README.md +16 -0
  260. package/components/common/RichText/plugins/latex/build.js +14 -0
  261. package/components/common/RichText/plugins/latex/index.js +77 -0
  262. package/components/common/RichText/plugins/latex/katex.css +1070 -0
  263. package/components/common/RichText/plugins/latex/katex.min.js +1 -0
  264. package/components/common/RichText/plugins/markdown/README.md +17 -0
  265. package/components/common/RichText/plugins/markdown/index.js +34 -0
  266. package/components/common/RichText/plugins/markdown/marked.min.js +6 -0
  267. package/components/common/RichText/plugins/markdown/miniprogram/build.js +70 -0
  268. package/components/common/RichText/plugins/markdown/uni-app/build.js +68 -0
  269. package/components/common/RichText/plugins/search/README.md +46 -0
  270. package/components/common/RichText/plugins/search/miniprogram/index.js +137 -0
  271. package/components/common/RichText/plugins/search/uni-app/index.js +132 -0
  272. package/components/common/RichText/plugins/style/README.md +30 -0
  273. package/components/common/RichText/plugins/style/index.js +129 -0
  274. package/components/common/RichText/plugins/style/parser.js +175 -0
  275. package/components/common/RichText/plugins/template/README.md +2 -0
  276. package/components/common/RichText/plugins/template/build.js +65 -0
  277. package/components/common/RichText/plugins/template/index.js +67 -0
  278. package/components/common/RichText/plugins/txv-video/README.md +18 -0
  279. package/components/common/RichText/plugins/txv-video/build.js +3 -0
  280. package/components/common/RichText/plugins/txv-video/index.js +46 -0
  281. package/components/common/RichText/plugins/txv-video/miniprogram/build.js +6 -0
  282. package/components/common/RichText/plugins/txv-video/uni-app/build.js +3 -0
  283. package/components/common/RichText/src/miniprogram/index.js +396 -0
  284. package/components/common/RichText/src/miniprogram/index.json +6 -0
  285. package/components/common/RichText/src/miniprogram/index.wxml +7 -0
  286. package/components/common/RichText/src/miniprogram/index.wxss +13 -0
  287. package/components/common/RichText/src/miniprogram/node/node.js +247 -0
  288. package/components/common/RichText/src/miniprogram/node/node.json +6 -0
  289. package/components/common/RichText/src/miniprogram/node/node.wxml +112 -0
  290. package/components/common/RichText/src/miniprogram/node/node.wxss +164 -0
  291. package/components/common/RichText/src/miniprogram/parser.js +1269 -0
  292. package/components/common/RichText/src/uni-app/components/mp-html/mp-html.vue +498 -0
  293. package/components/common/RichText/src/uni-app/components/mp-html/node/node.vue +585 -0
  294. package/components/common/RichText/src/uni-app/components/mp-html/parser.js +1393 -0
  295. package/components/common/RichText/src/uni-app/static/app-plus/mp-html/js/handler.js +254 -0
  296. package/components/common/RichText/src/uni-app/static/app-plus/mp-html/js/uni.webview.min.js +1 -0
  297. package/components/common/RichText/src/uni-app/static/app-plus/mp-html/local.html +33 -0
  298. package/components/common/RichText/tools/config.js +82 -0
  299. package/components/common/RichText/tools/converter.js +205 -0
  300. package/components/common/RichText/tools/ifdef.js +115 -0
  301. package/components/common/RichText/tools/minifier.js +40 -0
  302. package/components/common/RichText/tools/plugin.js +248 -0
  303. package/components/common/Toast/index-web.ts +122 -0
  304. package/components/common/Toast/index-web.vue +178 -0
  305. package/components/common/Toast/type.ts +8 -0
  306. package/components/common/common.scss +59 -0
  307. package/components/customer-icon.vue +56 -0
  308. package/components/message-branch.vue +120 -0
  309. package/components/message-customer-service.vue +114 -0
  310. package/components/message-form/form-branch.vue +68 -0
  311. package/components/message-form/form-input.vue +242 -0
  312. package/components/message-form/index.vue +80 -0
  313. package/components/message-multi-branch/branch-pc.vue +79 -0
  314. package/components/message-multi-branch/index.vue +60 -0
  315. package/components/message-multi-form/component-mobile/form-popup.vue +37 -0
  316. package/components/message-multi-form/component-mobile/input-mobile.vue +102 -0
  317. package/components/message-multi-form/component-mobile/label-mobile.vue +32 -0
  318. package/components/message-multi-form/component-mobile/radios-mobile.vue +161 -0
  319. package/components/message-multi-form/component-pc/input-pc.vue +93 -0
  320. package/components/message-multi-form/component-pc/label-pc.vue +33 -0
  321. package/components/message-multi-form/component-pc/radio-pc.vue +98 -0
  322. package/components/message-multi-form/form-mobile.vue +385 -0
  323. package/components/message-multi-form/form-pc.vue +184 -0
  324. package/components/message-multi-form/index.vue +61 -0
  325. package/components/message-product-card.vue +129 -0
  326. package/components/message-rating/index.vue +56 -0
  327. package/components/message-rating/message-rating-number.vue +247 -0
  328. package/components/message-rating/message-rating-star.vue +237 -0
  329. package/components/message-rich-text.vue +155 -0
  330. package/components/message-robot-welcome.vue +181 -0
  331. package/components/message-stream.vue +109 -0
  332. package/constant.ts +122 -0
  333. package/excluded-list.txt +6 -0
  334. package/index.ts +30 -0
  335. package/index.vue +60 -0
  336. package/interface.ts +176 -0
  337. package/logger/index.ts +12 -0
  338. package/logger/main.ts +120 -0
  339. package/package.json +62 -0
  340. package/script/fileCopy.js +60 -0
  341. package/script/syncVersion.js +35 -0
  342. package/server.ts +128 -0
  343. package/styles/common.scss +116 -0
  344. package/tsconfig.json +34 -0
  345. package/typings.d.ts +20 -0
  346. package/utils/chatStorage.ts +70 -0
  347. package/utils/copy-web.ts +141 -0
  348. package/utils/enableSampleTaskStatus.ts +8 -0
  349. package/utils/env.ts +15 -0
  350. package/utils/index.ts +59 -0
  351. package/utils/utils.ts +162 -0
@@ -0,0 +1,385 @@
1
+ <template>
2
+ <div>
3
+ <div v-if="!finishSubmit && props.payload.nodeStatus == 0" class="before-form">
4
+ <Icon :src="iconForm" width="60px" height="60px" style="margin:5px 4px"/>
5
+ <div class="form-button" @click="clickShowDialog">
6
+ 立即填写
7
+ </div>
8
+ </div>
9
+ <div class="edit-form">
10
+ <div class="edit-form-item">
11
+ <FormPopup
12
+ class="form-item"
13
+ :show="showDialog"
14
+ :showHeaderCloseButton="false"
15
+ @onClose="closeDialog"
16
+ >
17
+ <div style="height:100%;overflow-y: auto;">
18
+ <div class="dialog-title">
19
+ <div>
20
+ {{ props.payload.content.tip }}
21
+ </div>
22
+ <div @click="closeDialog">
23
+ <Icon :src="iconClose" width="16px" height="16px"/>
24
+ </div>
25
+ </div>
26
+ <div
27
+ v-for="(item, index) in props.payload.content.inputVariables"
28
+ :key="index"
29
+ >
30
+ <div v-if="!finishSubmit && item.formType == 0 && props.payload.nodeStatus == 0">
31
+ <InputMobile :placeholder="item.placeholder" :variableValue="item.variableValue" :name="item.name" :isRequired="item.isRequired" @input-change="handleInputChange" :validator="item.isRequired == 1 && isValid(item.name)"/>
32
+ </div>
33
+ <div v-else-if="!finishSubmit && item.formType == 1 && props.payload.nodeStatus == 0">
34
+ <RadioMobile :chooseItemList="item.chooseItemList" :name="item.name" :isRequired="item.isRequired" @input-change="handleInputChange" :validator="item.isRequired == 1 && isValid(item.name)"/>
35
+ </div>
36
+ <div v-else class="variable-value-container-mobile">
37
+ <div style="width:70px">
38
+ {{ item.name }}
39
+ </div>
40
+ <div>
41
+ {{ item.variableValue == '' || item.variableValue == null ? mapValue[item.name] : item.variableValue}}
42
+ </div>
43
+
44
+ </div>
45
+ </div>
46
+ <div class="button-container"v-if="!finishSubmit && props.payload.nodeStatus == 0">
47
+ <div class="button" @click="handleSendForm">
48
+ 提交
49
+ </div>
50
+
51
+ </div>
52
+ </div>
53
+
54
+ </FormPopup>
55
+ </div>
56
+ </div>
57
+ <div v-if="finishSubmit || props.payload.nodeStatus != 0" class="before-form">
58
+ <div class="icon-container">
59
+ <Icon class="form-icon" :src="iconForm" width="60px" height="60px" style="margin:5px 4px"/>
60
+ <Icon v-if="finishSubmit || props.payload.nodeStatus == 2" class="form-icon-check" width="26px" height="26px" :src="iconFormFilled"/>
61
+ </div>
62
+
63
+ <div class="form-button" @click="clickShowDialog">
64
+ 查看内容
65
+ </div>
66
+ </div>
67
+ </div>
68
+
69
+ </template>
70
+ <script lang="ts">
71
+ import vue from '../../adapter-vue';
72
+ import { customerServicePayloadType } from '../../interface';
73
+ import iconForm from '../../assets/icon_form.png';
74
+ import iconFormFilled from '../../assets/icon_form_filled.png';
75
+ import iconClose from '../../assets/dialog-close.png';
76
+ import Icon from '../customer-icon.vue';
77
+ import InputMobile from './component-mobile/input-mobile.vue';
78
+ import RadioMobile from './component-mobile/radios-mobile.vue';
79
+ import LabelMobile from './component-mobile/label-mobile.vue';
80
+ import FormPopup from './component-mobile/form-popup.vue';
81
+ import { CUSTOM_MESSAGE_SRC } from '../../constant';
82
+ const { ref , onMounted,computed} = vue;
83
+ interface Props {
84
+ payload: customerServicePayloadType;
85
+ }
86
+ export default {
87
+ components:{
88
+ Icon,
89
+ InputMobile,
90
+ RadioMobile,
91
+ FormPopup,
92
+ LabelMobile
93
+ },
94
+ props: {
95
+ payload: {
96
+ type: Object as () => customerServicePayloadType,
97
+ default: () => ({}),
98
+ },
99
+ },
100
+ options:{
101
+ styleIsolation: 'apply-shared'
102
+ },
103
+ emits: ['sendMessage','showFormPopup'],
104
+ setup(props: Props, { emit }) {
105
+ const showDialog = ref<boolean>(false);
106
+ const mapValue=ref({});
107
+ const isSubmit = ref<boolean>(false);
108
+ const finishSubmit = ref<boolean>(false);
109
+ const hasNullValue = ref<boolean>(true);
110
+ onMounted(()=>{
111
+ let inputVariables = props.payload.content.inputVariables ?? [];
112
+ for(let i=0;i<inputVariables.length;i++){
113
+ const name = inputVariables[i].name;
114
+ const variableValue = inputVariables[i].variableValue;
115
+ mapValue.value[name]=variableValue;
116
+ }
117
+
118
+ });
119
+ const clickShowDialog = ()=>{
120
+ showDialog.value = true;
121
+ emit('showFormPopup',true);
122
+ }
123
+
124
+ const closeDialog=()=>{
125
+ showDialog.value = false;
126
+ emit('showFormPopup',false);
127
+ }
128
+
129
+ const checkValidator = (name:string) => {
130
+ hasNullValue.value = false;
131
+ if(isSubmit.value == true){
132
+ if(mapValue.value[name] == null || mapValue.value[name] == ''){
133
+ hasNullValue.value = true;
134
+ return true;
135
+
136
+ }
137
+ }
138
+ return false;
139
+ }
140
+
141
+ const isValid = (name:string) => {
142
+ return isSubmit.value && (mapValue.value[name] == null || mapValue.value[name] == '' || mapValue.value[name] == undefined)
143
+ }
144
+
145
+ const handleSendForm = (data: any) => {
146
+ isSubmit.value = true;
147
+ let list = props.payload.content.inputVariables;
148
+ for(let i=0;i<list.length;i++){
149
+ let value = mapValue.value[list[i].name];
150
+ if(value !='' && value != null){
151
+ list[i].variableValue = value;
152
+ }else {
153
+ if(list[i].isRequired === 1 && checkValidator(list[i].name)){
154
+ return;
155
+ }
156
+ }
157
+ }
158
+ const submitData = {
159
+ data: JSON.stringify({
160
+ src: CUSTOM_MESSAGE_SRC.MULTI_FORM,
161
+ content: {
162
+ inputVariables: list
163
+ },
164
+ customerServicePlugin: 0,
165
+ }),
166
+ };
167
+ emit('sendMessage', submitData);
168
+ finishSubmit.value = true;
169
+ isSubmit.value = false;
170
+ };
171
+ const handleInputChange = ({name,value}) =>{
172
+ mapValue.value[name] = value;
173
+ }
174
+
175
+ const showValue = (name:string,variableValue:string) => {
176
+ if(variableValue != null && variableValue != ''){
177
+ return variableValue
178
+ }
179
+ return mapValue.value[name];
180
+ }
181
+ return {
182
+ props,
183
+ iconForm,
184
+ iconFormFilled,
185
+ showDialog,
186
+ clickShowDialog,
187
+ iconClose,
188
+ checkValidator,
189
+ finishSubmit,
190
+ showValue,
191
+ mapValue,
192
+ isSubmit,
193
+ handleInputChange,
194
+ handleSendForm,
195
+ closeDialog,
196
+ isValid
197
+ }
198
+ }
199
+ }
200
+ </script>
201
+ <style lang="scss">
202
+ @import "../../styles/common.scss";
203
+
204
+ .edit-profile-container {
205
+ @extend .container;
206
+ font-size: 14px;
207
+ .edit-profile-box {
208
+ @extend .box;
209
+ align-items: stretch;
210
+ .edit-form {
211
+ flex: 1;
212
+ @include flex(column, flex-start, stretch);
213
+ .edit-form-item {
214
+ @include flex(row, flex-start, center);
215
+ min-height: 54px;
216
+ padding: 10px;
217
+ .form-label {
218
+ box-sizing: border-box;
219
+ width: 70px;
220
+ margin-right: 20px;
221
+ color: #333;
222
+ }
223
+ .form-item {
224
+ @include flex(row, flex-start, stretch);
225
+
226
+ }
227
+ }
228
+ }
229
+ .edit-footer {
230
+ @include flex(row, flex-end);
231
+ .btn-close {
232
+ @include btn-normal;
233
+ margin-right: 10px;
234
+ }
235
+ .btn-save {
236
+ @include btn-default;
237
+ }
238
+ .btn-close,
239
+ .btn-save {
240
+ width: 90px;
241
+ height: 30px;
242
+ padding: 2px;
243
+ }
244
+ }
245
+ }
246
+ }
247
+ .edit-profile-container-pc {
248
+ .edit-profile-box {
249
+ width: 495px;
250
+ height: 472px;
251
+ border-radius: 10px;
252
+ padding: 20px;
253
+ .edit-form {
254
+ .edit-form-item {
255
+ .form-item {
256
+ flex: 1;
257
+ }
258
+ }
259
+ }
260
+ }
261
+ .title {
262
+ justify-content: flex-start;
263
+ padding: 0px;
264
+ }
265
+ }
266
+ .edit-profile-container-h5 {
267
+ @extend .edit-profile-container;
268
+ .edit-profile-box {
269
+ @extend .box-h5;
270
+ width: 100%;
271
+ height: 100%;
272
+ background-color: #efefef;
273
+ .title {
274
+ background-color: #ffffff;
275
+ }
276
+ .edit-form {
277
+ .edit-form-item {
278
+ background-color: #ffffff;
279
+ .form-label {
280
+ font-size: 16px;
281
+ color: #000000;
282
+ width: 80px;
283
+ }
284
+ .form-info {
285
+ @include flex(row, flex-end, stretch);
286
+ .form-info-content {
287
+ @include single-line-ellipsis(auto);
288
+ }
289
+ flex: 1;
290
+ overflow: hidden;
291
+ font-size: 16px;
292
+ color: rgba(151, 151, 151, 1);
293
+ .form-info-arrow {
294
+ margin-left: 2px;
295
+ }
296
+ }
297
+ .form-item {
298
+ flex: none;
299
+ }
300
+ }
301
+ .edit-form-space {
302
+ box-sizing: border-box;
303
+ height: 10px;
304
+ padding: 0px;
305
+ background-color: transparent;
306
+ }
307
+ }
308
+ }
309
+ }
310
+ .before-form {
311
+ display:flex;
312
+ flex-direction: column;
313
+ justify-content: center;
314
+ .form-button{
315
+ display:flex;
316
+ justify-content: center;
317
+ width: 66px;
318
+ padding:6px 10px;
319
+ background-color: #1c66e5;
320
+ color:white;
321
+ border-radius:25px ;
322
+ }
323
+ .icon-container{
324
+ position:relative;
325
+ .form-icon-check{
326
+ position:absolute;
327
+ right:15px;
328
+ bottom:6px;
329
+ }
330
+ }
331
+ }
332
+
333
+ .edit-form {
334
+ flex:1;
335
+ @include flex(column,flex-start,stretch);
336
+ .edit-form-item{
337
+ @include flex(row, flex-start, center);
338
+ // min-height: 54px;
339
+ .form-item{
340
+ @include flex(row, flex-start, stretch);
341
+ flex: none;
342
+ .form-item-input {
343
+ padding: 14px 10px;
344
+ font-size: 16px;
345
+ border: 0px;
346
+ background-color: rgba(248, 248, 248, 1);
347
+ }
348
+ }
349
+ }
350
+
351
+ }
352
+
353
+ .dialog-title{
354
+ display:flex;
355
+ flex-direction: row;
356
+ justify-content: space-between;
357
+ padding:20px;
358
+ font-size:16px;
359
+ font-weight: 500;
360
+ .dialog-close{
361
+ color:rgba(153,153,153,1);
362
+ }
363
+ }
364
+ .variable-value-container-mobile{
365
+ padding:16px;
366
+ display:flex;
367
+ flex-direction: row;
368
+ align-items: center;
369
+ border-bottom:1px solid #e7e7e7;
370
+ }
371
+ .button-container{
372
+ display:flex;
373
+ justify-content: center;
374
+ margin:15px;
375
+ .button {
376
+ display:flex;
377
+ justify-content: center;
378
+ width: 87px;
379
+ padding:6px 10px;
380
+ background-color: #1c66e5;
381
+ color:white;
382
+ border-radius:25px ;
383
+ }
384
+ }
385
+ </style>
@@ -0,0 +1,184 @@
1
+ <template>
2
+ <div>
3
+ <div class="title-container">
4
+ <div class="form-title" v-if="checkTip">
5
+ {{ props.payload.content.tip }}
6
+ </div>
7
+ <div class="form-finish-title-right" v-if="finishSubmit || props.payload.nodeStatus == 2" >
8
+ <Icon :src="iconSucess" style="margin:0px 4px"/>
9
+ 已提交
10
+ </div>
11
+ </div>
12
+
13
+ <div
14
+ v-for="(item, index) in props.payload.content.inputVariables"
15
+ :key="index"
16
+ >
17
+ <LabelPC :name="item.name" :is-required="item.isRequired" />
18
+ <div v-if="!finishSubmit && item.formType == 0 && props.payload.nodeStatus == 0">
19
+ <InputPC :placeholder="item.placeholder" :variableValue="item.variableValue" :name="item.name" :isRequired="item.isRequired" @input-change="handleInputChange" :validator="item.isRequired == 1 && isValid(item.name)"/>
20
+ </div>
21
+ <div v-else-if="!finishSubmit && item.formType == 1 && props.payload.nodeStatus == 0">
22
+ <RadioPC :chooseItemList="item.chooseItemList" :name="item.name" :isRequired="item.isRequired" @input-change="handleInputChange" :validator="item.isRequired == 1 && isValid(item.name)"/>
23
+ </div>
24
+ <div v-else class="variable-value-container">
25
+ {{ item.variableValue == '' || item.variableValue == null ? mapValue[item.name] : item.variableValue}}
26
+ </div>
27
+ </div>
28
+
29
+ <div class="button-container"v-if="!finishSubmit && props.payload.nodeStatus == 0">
30
+ <div class="button" @click="handleSendForm">
31
+ 提交
32
+ </div>
33
+
34
+ </div>
35
+ </div>
36
+
37
+ </template>
38
+ <script lang="ts">
39
+ import vue from '../../adapter-vue';
40
+ import { customerServicePayloadType } from '../../interface';
41
+ import LabelPC from './component-pc/label-pc.vue';
42
+ import InputPC from './component-pc/input-pc.vue';
43
+ import RadioPC from './component-pc/radio-pc.vue';
44
+ import Icon from '../customer-icon.vue';
45
+ import iconSucess from '../../assets/icon_success.png';
46
+ import { CUSTOM_MESSAGE_SRC } from '../../constant';
47
+ const { ref, onMounted } = vue;
48
+ interface Props {
49
+ payload: customerServicePayloadType;
50
+ }
51
+ export default {
52
+ components: {
53
+ LabelPC,
54
+ InputPC,
55
+ RadioPC,
56
+ Icon
57
+ },
58
+ props: {
59
+ payload: {
60
+ type: Object as () => customerServicePayloadType,
61
+ default: () => ({}),
62
+ },
63
+ },
64
+ emits: ['sendMessage'],
65
+ setup(props: Props, { emit }) {
66
+ const mapValue=ref({});
67
+ const isSubmit = ref<boolean>(false);
68
+ const finishSubmit = ref<boolean>(false);
69
+ const hasNullValue = ref<boolean>(true);
70
+ onMounted(()=>{
71
+ let inputVariables = props.payload.content.inputVariables ?? [];
72
+ for(let i=0;i<inputVariables.length;i++){
73
+ const name = inputVariables[i].name;
74
+ const variableValue = inputVariables[i].variableValue;
75
+ mapValue.value[name]=variableValue;
76
+ }
77
+ });
78
+
79
+ const checkTip = () => {
80
+ return props.payload.content.tip != '' && props.payload.content.tip != null;
81
+ }
82
+
83
+
84
+ const checkValidator = (name:string) => {
85
+ hasNullValue.value = false;
86
+ if(isSubmit.value == true){
87
+ if(mapValue.value[name] == null || mapValue.value[name] == ''){
88
+ hasNullValue.value = true;
89
+ return true;
90
+
91
+ }
92
+ }
93
+ return false;
94
+ }
95
+
96
+
97
+
98
+ const handleSendForm = (data: any) => {
99
+ isSubmit.value = true;
100
+ let list = props.payload.content.inputVariables;
101
+ for(let i=0;i<list.length;i++){
102
+ let value = mapValue.value[list[i].name];
103
+ if(value !='' && value != null){
104
+ list[i].variableValue = value;
105
+ }else {
106
+ if(list[i].isRequired === 1 && checkValidator(list[i].name)){
107
+ return;
108
+ }
109
+ }
110
+ }
111
+ const submitData = {
112
+ data: JSON.stringify({
113
+ src: CUSTOM_MESSAGE_SRC.MULTI_FORM,
114
+ content: {
115
+ inputVariables: list
116
+ },
117
+ customerServicePlugin: 0,
118
+ }),
119
+ };
120
+
121
+ emit('sendMessage', submitData);
122
+ finishSubmit.value = true;
123
+
124
+ isSubmit.value = false;
125
+ };
126
+ const handleInputChange = ({name,value}) =>{
127
+ mapValue.value[name] = value;
128
+ }
129
+
130
+ const showValue = (name:string,variableValue:string) => {
131
+ if(variableValue != null && variableValue != ''){
132
+ return variableValue
133
+ }
134
+ return mapValue.value[name];
135
+ }
136
+ const isValid = (name:string) => {
137
+ return isSubmit.value && (mapValue.value[name] == null || mapValue.value[name] == '' || mapValue.value[name] == undefined)
138
+ }
139
+ return {
140
+ props,
141
+ handleSendForm,
142
+ handleInputChange,
143
+ iconSucess,
144
+ checkValidator,
145
+ finishSubmit,
146
+ showValue,
147
+ mapValue,
148
+ isSubmit,
149
+ checkTip,
150
+ isValid
151
+ };
152
+ },
153
+ };
154
+ </script>
155
+ <style lang="scss">
156
+ .title-container{
157
+ display: flex;
158
+ justify-content: space-between;
159
+ align-items: center;
160
+ margin-bottom: 12px;
161
+ min-width: 300px;
162
+ }
163
+ .form-finish-title-right {
164
+ display:flex;
165
+ }
166
+ .button-container{
167
+ display:flex;
168
+ justify-content: center;
169
+ margin-top:15px;
170
+ .button {
171
+ display:flex;
172
+ justify-content: center;
173
+ width: 87px;
174
+ padding:6px 10px;
175
+ background-color: #1c66e5;
176
+ color:white;
177
+ border-radius:25px ;
178
+ }
179
+ }
180
+ .variable-value-container{
181
+ padding-bottom: 8px;
182
+ margin-top:3px;
183
+ }
184
+ </style>
@@ -0,0 +1,61 @@
1
+ <template>
2
+ <div v-if="isPC" class="message-input">
3
+ <FormPC :payload="payloads" @sendMessage="handleSendForm" />
4
+ </div>
5
+ <div v-else>
6
+ <FormMobile :payload="payloads" @sendMessage="handleSendForm" @showFormPopup="handleShowFormPopup"/>
7
+ </div>
8
+ </template>
9
+
10
+ <script lang="ts">
11
+ import vue from '../../adapter-vue';
12
+ import FormPC from './form-pc.vue';
13
+ import FormMobile from './form-mobile.vue';
14
+ import { customerServicePayloadType } from '../../interface';
15
+ import { isApp, isPC } from '../../utils/env';
16
+ const { computed} = vue;
17
+
18
+ interface branchItem {
19
+ content: string;
20
+ desc: string;
21
+ }
22
+
23
+ interface Props {
24
+ payload: customerServicePayloadType;
25
+ }
26
+
27
+ export default {
28
+ components: {
29
+ FormPC,
30
+ FormMobile
31
+ },
32
+ props: {
33
+ payload: {
34
+ type: Object,
35
+ default: () => ({}),
36
+ },
37
+ },
38
+ emits: ['sendMessage','showFormPopup'],
39
+ setup(props: Props, { emit }) {
40
+ const payloads = computed<customerServicePayloadType>(() => {
41
+ return props.payload;
42
+ });
43
+ const handleSendForm = (data: any) => {
44
+ emit('sendMessage', data);
45
+ };
46
+ const handleShowFormPopup = (data: boolean) => {
47
+ emit('showFormPopup', data);
48
+ }
49
+
50
+ return {
51
+ payloads,
52
+ handleSendForm,
53
+ isPC,
54
+ handleShowFormPopup
55
+ };
56
+ },
57
+ };
58
+ </script>
59
+ <style lang="scss">
60
+
61
+ </style>