cnhis-design-vue 0.2.63-beta → 0.3.1-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 (768) hide show
  1. package/README.md +23 -81
  2. package/env.d.ts +20 -0
  3. package/es/big-table/index.css +5 -0
  4. package/es/big-table/index.js +8 -19705
  5. package/es/button-print/index.css +7 -0
  6. package/es/button-print/index.js +3 -0
  7. package/es/drag-layout/index.css +10 -0
  8. package/es/drag-layout/index.js +9 -4822
  9. package/es/grid/index.css +10 -0
  10. package/es/grid/index.js +1 -3800
  11. package/es/index.css +10 -0
  12. package/es/index.js +14 -0
  13. package/package.json +45 -87
  14. package/tsconfig.node.json +8 -0
  15. package/.prettierrc.js +0 -27
  16. package/commitlint.config.js +0 -1
  17. package/es/affix/index.js +0 -3008
  18. package/es/affix/style.css +0 -0
  19. package/es/age/index.js +0 -3767
  20. package/es/age/style.css +0 -1
  21. package/es/alert/index.js +0 -3008
  22. package/es/alert/style.css +0 -0
  23. package/es/anchor/index.js +0 -3021
  24. package/es/anchor/style.css +0 -0
  25. package/es/auto-complete/index.js +0 -3008
  26. package/es/auto-complete/style.css +0 -0
  27. package/es/avatar/index.js +0 -3008
  28. package/es/avatar/style.css +0 -0
  29. package/es/back-top/index.js +0 -3008
  30. package/es/back-top/style.css +0 -0
  31. package/es/badge/index.js +0 -3008
  32. package/es/badge/style.css +0 -0
  33. package/es/base/index.js +0 -2896
  34. package/es/base/style.css +0 -0
  35. package/es/big-table/style.css +0 -1
  36. package/es/breadcrumb/index.js +0 -3032
  37. package/es/breadcrumb/style.css +0 -0
  38. package/es/button/index.js +0 -9156
  39. package/es/button/style.css +0 -1
  40. package/es/calendar/index.js +0 -3008
  41. package/es/calendar/style.css +0 -0
  42. package/es/captcha/index.js +0 -3618
  43. package/es/captcha/style.css +0 -1
  44. package/es/card/index.js +0 -3032
  45. package/es/card/style.css +0 -0
  46. package/es/carousel/index.js +0 -3008
  47. package/es/carousel/style.css +0 -0
  48. package/es/cascader/index.js +0 -3008
  49. package/es/cascader/style.css +0 -0
  50. package/es/checkbox/index.js +0 -3343
  51. package/es/checkbox/style.css +0 -1
  52. package/es/col/index.js +0 -3009
  53. package/es/col/style.css +0 -0
  54. package/es/collapse/index.js +0 -3021
  55. package/es/collapse/style.css +0 -0
  56. package/es/color-picker/index.js +0 -3532
  57. package/es/color-picker/style.css +0 -1
  58. package/es/comment/index.js +0 -3008
  59. package/es/comment/style.css +0 -0
  60. package/es/config-provider/index.js +0 -3008
  61. package/es/config-provider/style.css +0 -0
  62. package/es/date-picker/index.js +0 -3043
  63. package/es/date-picker/style.css +0 -0
  64. package/es/descriptions/index.js +0 -3021
  65. package/es/descriptions/style.css +0 -0
  66. package/es/divider/index.js +0 -3008
  67. package/es/divider/style.css +0 -0
  68. package/es/drag-layout/style.css +0 -1
  69. package/es/drawer/index.js +0 -3008
  70. package/es/drawer/style.css +0 -0
  71. package/es/dropdown/index.js +0 -3008
  72. package/es/dropdown/style.css +0 -0
  73. package/es/editor/index.js +0 -3565
  74. package/es/editor/style.css +0 -1
  75. package/es/empty/index.js +0 -3008
  76. package/es/empty/style.css +0 -0
  77. package/es/fabric-chart/index.js +0 -10094
  78. package/es/fabric-chart/style.css +0 -1
  79. package/es/form/index.js +0 -3019
  80. package/es/form/style.css +0 -0
  81. package/es/form-model/index.js +0 -3018
  82. package/es/form-model/style.css +0 -0
  83. package/es/form-table/index.js +0 -12035
  84. package/es/form-table/style.css +0 -1
  85. package/es/grid/style.css +0 -0
  86. package/es/icon/index.js +0 -2962
  87. package/es/icon/style.css +0 -0
  88. package/es/img/calling.ba1a517f.png +0 -0
  89. package/es/img/failure.96c6f004.png +0 -0
  90. package/es/img/no-permission.3aa0dddb.png +0 -0
  91. package/es/img/nodata.bbccf960.png +0 -0
  92. package/es/index/index.js +0 -120162
  93. package/es/index/style.css +0 -1
  94. package/es/input/index.js +0 -4384
  95. package/es/input/style.css +0 -1
  96. package/es/input-number/index.js +0 -3008
  97. package/es/input-number/style.css +0 -0
  98. package/es/keep-cache/index.js +0 -3299
  99. package/es/keep-cache/style.css +0 -1
  100. package/es/layout/index.js +0 -3054
  101. package/es/layout/style.css +0 -0
  102. package/es/list/index.js +0 -3032
  103. package/es/list/style.css +0 -0
  104. package/es/locale-provider/index.js +0 -3008
  105. package/es/locale-provider/style.css +0 -0
  106. package/es/map/index.js +0 -3677
  107. package/es/map/style.css +0 -1
  108. package/es/media/msgTip.6865f0c7.mp3 +0 -0
  109. package/es/mentions/index.js +0 -3021
  110. package/es/mentions/style.css +0 -0
  111. package/es/menu/index.js +0 -3054
  112. package/es/menu/style.css +0 -0
  113. package/es/message/index.js +0 -2896
  114. package/es/message/style.css +0 -0
  115. package/es/modal/index.js +0 -2962
  116. package/es/modal/style.css +0 -0
  117. package/es/multi-chat/index.js +0 -24374
  118. package/es/multi-chat/style.css +0 -1
  119. package/es/multi-chat-client/index.js +0 -18383
  120. package/es/multi-chat-client/style.css +0 -1
  121. package/es/multi-chat-history/index.js +0 -4600
  122. package/es/multi-chat-history/style.css +0 -1
  123. package/es/multi-chat-record/index.js +0 -4864
  124. package/es/multi-chat-record/style.css +0 -1
  125. package/es/multi-chat-setting/index.js +0 -13540
  126. package/es/multi-chat-setting/style.css +0 -1
  127. package/es/multi-chat-sip/index.js +0 -3313
  128. package/es/multi-chat-sip/style.css +0 -1
  129. package/es/notification/index.js +0 -2896
  130. package/es/notification/style.css +0 -0
  131. package/es/page-header/index.js +0 -3008
  132. package/es/page-header/style.css +0 -0
  133. package/es/pagination/index.js +0 -3008
  134. package/es/pagination/style.css +0 -0
  135. package/es/popconfirm/index.js +0 -3008
  136. package/es/popconfirm/style.css +0 -0
  137. package/es/popover/index.js +0 -3008
  138. package/es/popover/style.css +0 -0
  139. package/es/progress/index.js +0 -3008
  140. package/es/progress/style.css +0 -0
  141. package/es/radio/index.js +0 -3334
  142. package/es/radio/style.css +0 -1
  143. package/es/rate/index.js +0 -3008
  144. package/es/rate/style.css +0 -0
  145. package/es/result/index.js +0 -3008
  146. package/es/result/style.css +0 -0
  147. package/es/row/index.js +0 -3008
  148. package/es/row/style.css +0 -0
  149. package/es/scale-view/index.js +0 -18420
  150. package/es/scale-view/style.css +0 -1
  151. package/es/select/index.js +0 -4783
  152. package/es/select/style.css +0 -1
  153. package/es/select-label/index.js +0 -5647
  154. package/es/select-label/style.css +0 -1
  155. package/es/select-person/index.js +0 -5427
  156. package/es/select-person/style.css +0 -1
  157. package/es/skeleton/index.js +0 -3008
  158. package/es/skeleton/style.css +0 -0
  159. package/es/slider/index.js +0 -3008
  160. package/es/slider/style.css +0 -0
  161. package/es/space/index.js +0 -3008
  162. package/es/space/style.css +0 -0
  163. package/es/spin/index.js +0 -3008
  164. package/es/spin/style.css +0 -0
  165. package/es/statistic/index.js +0 -3021
  166. package/es/statistic/style.css +0 -0
  167. package/es/steps/index.js +0 -3021
  168. package/es/steps/style.css +0 -0
  169. package/es/switch/index.js +0 -3008
  170. package/es/switch/style.css +0 -0
  171. package/es/table-filter/index.js +0 -24332
  172. package/es/table-filter/style.css +0 -1
  173. package/es/tabs/index.js +0 -3021
  174. package/es/tabs/style.css +0 -0
  175. package/es/tag/index.js +0 -3912
  176. package/es/tag/style.css +0 -1
  177. package/es/time-picker/index.js +0 -3008
  178. package/es/time-picker/style.css +0 -0
  179. package/es/timeline/index.js +0 -3018
  180. package/es/timeline/style.css +0 -0
  181. package/es/tooltip/index.js +0 -3008
  182. package/es/tooltip/style.css +0 -0
  183. package/es/transfer/index.js +0 -3008
  184. package/es/transfer/style.css +0 -0
  185. package/es/tree/index.js +0 -3021
  186. package/es/tree/style.css +0 -0
  187. package/es/tree-select/index.js +0 -3021
  188. package/es/tree-select/style.css +0 -0
  189. package/es/upload/index.js +0 -3008
  190. package/es/upload/style.css +0 -0
  191. package/es/utils/UniRTCv2.js +0 -586
  192. package/es/utils/chatFetch.js +0 -85
  193. package/es/utils/clickoutside.js +0 -76
  194. package/es/utils/crypto.js +0 -40
  195. package/es/utils/kty-sdk.js +0 -1030
  196. package/es/utils/kty.min-1.0.0.js +0 -6
  197. package/es/utils/sip-device.js +0 -112
  198. package/es/utils/time-domain.js +0 -195
  199. package/es/utils/utils-map.js +0 -547
  200. package/es/utils/vexutils.js +0 -977
  201. package/es/verification-code/index.js +0 -3487
  202. package/es/verification-code/style.css +0 -1
  203. package/packages/affix/index.js +0 -12
  204. package/packages/affix/src/Affix.jsx +0 -12
  205. package/packages/age/index.js +0 -27
  206. package/packages/age/src/age/index.vue +0 -140
  207. package/packages/age/src/age-com/index.vue +0 -210
  208. package/packages/alert/index.js +0 -12
  209. package/packages/alert/src/Alert.jsx +0 -11
  210. package/packages/anchor/index.js +0 -18
  211. package/packages/anchor/src/Anchor.jsx +0 -11
  212. package/packages/anchor/src/Link.jsx +0 -11
  213. package/packages/auto-complete/index.js +0 -12
  214. package/packages/auto-complete/src/AutoComplete.jsx +0 -12
  215. package/packages/avatar/index.js +0 -12
  216. package/packages/avatar/src/Avatar.jsx +0 -11
  217. package/packages/back-top/index.js +0 -12
  218. package/packages/back-top/src/BackTop.jsx +0 -11
  219. package/packages/badge/index.js +0 -12
  220. package/packages/badge/src/Badge.jsx +0 -11
  221. package/packages/base/index.js +0 -3
  222. package/packages/big-table/index.js +0 -16
  223. package/packages/big-table/src/BigTable.vue +0 -3051
  224. package/packages/big-table/src/Fieldset.vue +0 -2067
  225. package/packages/big-table/src/assets/iconfont/iconfont.css +0 -21
  226. package/packages/big-table/src/assets/iconfont/iconfont.ttf +0 -0
  227. package/packages/big-table/src/assets/img/failure.png +0 -0
  228. package/packages/big-table/src/assets/img/icon-asc.png +0 -0
  229. package/packages/big-table/src/assets/img/icon-desc.png +0 -0
  230. package/packages/big-table/src/assets/img/no-permission.png +0 -0
  231. package/packages/big-table/src/assets/img/nodata.png +0 -0
  232. package/packages/big-table/src/assets/img/notfound.png +0 -0
  233. package/packages/big-table/src/assets/img/qr.png +0 -0
  234. package/packages/big-table/src/assets/img/video_default_cover.png +0 -0
  235. package/packages/big-table/src/assets/img/xb_big.png +0 -0
  236. package/packages/big-table/src/assets/img/xb_small.png +0 -0
  237. package/packages/big-table/src/assets/style/table-base.less +0 -345
  238. package/packages/big-table/src/assets/style/table-global.less +0 -175
  239. package/packages/big-table/src/components/NoData.vue +0 -81
  240. package/packages/big-table/src/components/TextOverTooltip.vue +0 -120
  241. package/packages/big-table/src/components/edit-form/EditForm.vue +0 -491
  242. package/packages/big-table/src/components/edit-form/edit-component/config-data/index.js +0 -67
  243. package/packages/big-table/src/components/edit-form/edit-component/edit-date-picker/edit-date-picker.vue +0 -60
  244. package/packages/big-table/src/components/edit-form/edit-component/edit-digital/edit-digital.vue +0 -54
  245. package/packages/big-table/src/components/edit-form/edit-component/edit-input/edit-input.vue +0 -39
  246. package/packages/big-table/src/components/edit-form/edit-component/edit-input-password/edit-input-password.vue +0 -79
  247. package/packages/big-table/src/components/edit-form/edit-component/edit-month-picker/edit-month-picker.vue +0 -37
  248. package/packages/big-table/src/components/edit-form/edit-component/edit-search/edit-search.vue +0 -83
  249. package/packages/big-table/src/components/edit-form/edit-component/edit-search-more/edit-search-more.vue +0 -95
  250. package/packages/big-table/src/components/edit-form/edit-component/edit-select/edit-select.vue +0 -40
  251. package/packages/big-table/src/components/edit-form/edit-component/edit-select-multiple/edit-select-multiple.vue +0 -55
  252. package/packages/big-table/src/components/edit-form/edit-component/edit-textarea/edit-textarea.vue +0 -41
  253. package/packages/big-table/src/components/edit-form/edit-component/edit-time-picker/edit-time-picker.vue +0 -40
  254. package/packages/big-table/src/components/edit-form/edit-component/global-props.js +0 -33
  255. package/packages/big-table/src/components/edit-form/edit-component/index.js +0 -8
  256. package/packages/big-table/src/components/edit-form/edit-component/mixins/bound-date.js +0 -3
  257. package/packages/big-table/src/components/edit-form/edit-component/mixins/dateType.js +0 -216
  258. package/packages/big-table/src/components/edit-form/edit-component/mixins/item-default.js +0 -594
  259. package/packages/big-table/src/components/edit-form/edit-component/mixins/search.js +0 -1198
  260. package/packages/big-table/src/components/edit-form/edit-component/register-com.js +0 -26
  261. package/packages/big-table/src/components/edit-form/edit-item/form-event.js +0 -79
  262. package/packages/big-table/src/components/edit-form/edit-item/global-props.js +0 -33
  263. package/packages/big-table/src/components/edit-form/edit-item/index.js +0 -4
  264. package/packages/big-table/src/components/edit-form/edit-item/render-methods.js +0 -28
  265. package/packages/big-table/src/components/edit-form/edit-item/validate-rules.js +0 -463
  266. package/packages/big-table/src/components/edit-form/edit-mixins/form-commom.js +0 -668
  267. package/packages/big-table/src/components/edit-form/edit-mixins/index.js +0 -3
  268. package/packages/big-table/src/components/edit-form/edit-utils/index.js +0 -112
  269. package/packages/big-table/src/components/password-com.vue +0 -58
  270. package/packages/big-table/src/components/player-vod/index.vue +0 -57
  271. package/packages/big-table/src/components/player-vod/player.vue +0 -189
  272. package/packages/big-table/src/components/player-vod/video-list.vue +0 -264
  273. package/packages/big-table/src/components/player-vod/video-modal.vue +0 -126
  274. package/packages/big-table/src/utils/CustomPagination.vue +0 -86
  275. package/packages/big-table/src/utils/batchEditing.js +0 -534
  276. package/packages/big-table/src/utils/bigTableProps.js +0 -94
  277. package/packages/big-table/src/utils/format.js +0 -557
  278. package/packages/big-table/src/utils/nestTable.js +0 -109
  279. package/packages/big-table/src/utils/tableParse.js +0 -153
  280. package/packages/breadcrumb/index.js +0 -21
  281. package/packages/breadcrumb/src/Breadcrumb.jsx +0 -11
  282. package/packages/breadcrumb/src/BreadcrumbItem.jsx +0 -11
  283. package/packages/breadcrumb/src/BreadcrumbSeparator.jsx +0 -11
  284. package/packages/button/index.js +0 -21
  285. package/packages/button/src/Button.jsx +0 -11
  286. package/packages/button/src/ButtonGroup.jsx +0 -11
  287. package/packages/button/src/ButtonPrint/components/IdentityVerification.vue +0 -176
  288. package/packages/button/src/ButtonPrint/index.vue +0 -687
  289. package/packages/button/src/ButtonPrint/js/print.es.min.js +0 -1
  290. package/packages/button/src/ButtonPrint/mixin/his-print.js +0 -95
  291. package/packages/calendar/index.js +0 -12
  292. package/packages/calendar/src/Calendar.jsx +0 -11
  293. package/packages/captcha/index.js +0 -10
  294. package/packages/captcha/src/Captcha.vue +0 -164
  295. package/packages/captcha/src/Index.vue +0 -47
  296. package/packages/captcha/src/SlideVerify.vue +0 -285
  297. package/packages/card/index.js +0 -21
  298. package/packages/card/src/Card.jsx +0 -12
  299. package/packages/card/src/CardGrid.js +0 -7
  300. package/packages/card/src/CardMeta.js +0 -7
  301. package/packages/carousel/index.js +0 -12
  302. package/packages/carousel/src/Carousel.jsx +0 -12
  303. package/packages/cascader/index.js +0 -12
  304. package/packages/cascader/src/Cascader.jsx +0 -11
  305. package/packages/checkbox/index.js +0 -30
  306. package/packages/checkbox/src/Checkbox.jsx +0 -11
  307. package/packages/checkbox/src/CheckboxImg/index.vue +0 -142
  308. package/packages/checkbox/src/Group.jsx +0 -11
  309. package/packages/col/index.js +0 -13
  310. package/packages/col/src/Col.jsx +0 -11
  311. package/packages/collapse/index.js +0 -18
  312. package/packages/collapse/src/Collapse.jsx +0 -11
  313. package/packages/collapse/src/Panel.jsx +0 -11
  314. package/packages/color-picker/index.js +0 -10
  315. package/packages/color-picker/src/color-picker.vue +0 -191
  316. package/packages/color-picker/src/style.less +0 -109
  317. package/packages/comment/index.js +0 -12
  318. package/packages/comment/src/Comment.jsx +0 -11
  319. package/packages/config-provider/index.js +0 -12
  320. package/packages/config-provider/src/ConfigProvider.jsx +0 -11
  321. package/packages/date-picker/index.js +0 -24
  322. package/packages/date-picker/src/DatePicker.jsx +0 -12
  323. package/packages/date-picker/src/MonthPicker.jsx +0 -11
  324. package/packages/date-picker/src/RangePicker.jsx +0 -11
  325. package/packages/date-picker/src/WeekPicker.jsx +0 -11
  326. package/packages/descriptions/index.js +0 -18
  327. package/packages/descriptions/src/Descriptions.jsx +0 -11
  328. package/packages/descriptions/src/Item.jsx +0 -11
  329. package/packages/divider/index.js +0 -12
  330. package/packages/divider/src/Divider.jsx +0 -11
  331. package/packages/drag-layout/DragFormLeftItem.vue +0 -173
  332. package/packages/drag-layout/DragFormRightItem.vue +0 -284
  333. package/packages/drag-layout/I18n-mixins.js +0 -10
  334. package/packages/drag-layout/drag-layout.vue +0 -778
  335. package/packages/drag-layout/index.js +0 -12
  336. package/packages/drawer/index.js +0 -12
  337. package/packages/drawer/src/Drawer.jsx +0 -11
  338. package/packages/dropdown/index.js +0 -12
  339. package/packages/dropdown/src/Dropdown.jsx +0 -11
  340. package/packages/editor/index.js +0 -10
  341. package/packages/editor/src/Editor.vue +0 -180
  342. package/packages/empty/index.js +0 -12
  343. package/packages/empty/src/Empty.jsx +0 -11
  344. package/packages/fabric-chart/index.js +0 -10
  345. package/packages/fabric-chart/src/FabricChart.vue +0 -179
  346. package/packages/fabric-chart/src/FabricGrid.vue +0 -73
  347. package/packages/fabric-chart/src/components/DropPopup.vue +0 -90
  348. package/packages/fabric-chart/src/components/MouseRightClick.vue +0 -168
  349. package/packages/fabric-chart/src/const/defaultVaule.js +0 -58
  350. package/packages/fabric-chart/src/fabric-chart/FabricCanvas.vue +0 -296
  351. package/packages/fabric-chart/src/fabric-chart/FabricLines.vue +0 -546
  352. package/packages/fabric-chart/src/fabric-chart/FabricPolylines.vue +0 -933
  353. package/packages/fabric-chart/src/fabric-chart/FabricScaleValue.vue +0 -120
  354. package/packages/fabric-chart/src/fabric-chart/FabricTextGroup.vue +0 -526
  355. package/packages/fabric-chart/src/fabric-chart2/FabricBottom.vue +0 -108
  356. package/packages/fabric-chart/src/fabric-chart2/FabricCanvas.vue +0 -181
  357. package/packages/fabric-chart/src/fabric-chart2/FabricCenter.vue +0 -612
  358. package/packages/fabric-chart/src/fabric-chart2/FabricLeft.vue +0 -104
  359. package/packages/fabric-chart/src/fabric-chart2/FabricRight.vue +0 -112
  360. package/packages/fabric-chart/src/fabric-chart2/FabricTop.vue +0 -172
  361. package/packages/fabric-chart/src/mixins/draw.js +0 -290
  362. package/packages/fabric-chart/src/mixins/eventCommon.js +0 -74
  363. package/packages/fabric-chart/src/mixins/fabricCommon.js +0 -85
  364. package/packages/fabric-chart/src/mixins/fabricObject.js +0 -193
  365. package/packages/fabric-chart/src/mixins/type.js +0 -6
  366. package/packages/form/index.js +0 -16
  367. package/packages/form/src/Form.jsx +0 -11
  368. package/packages/form/src/Item.jsx +0 -11
  369. package/packages/form-model/index.js +0 -14
  370. package/packages/form-model/src/FormModel.jsx +0 -11
  371. package/packages/form-model/src/Item.jsx +0 -11
  372. package/packages/form-table/index.js +0 -10
  373. package/packages/form-table/src/FormTable.vue +0 -1103
  374. package/packages/form-table/src/components/table-component/config-data/index.js +0 -80
  375. package/packages/form-table/src/components/table-component/global-props.js +0 -22
  376. package/packages/form-table/src/components/table-component/index.js +0 -8
  377. package/packages/form-table/src/components/table-component/mixins/bound-date.js +0 -455
  378. package/packages/form-table/src/components/table-component/mixins/dateType.js +0 -217
  379. package/packages/form-table/src/components/table-component/mixins/item-default.js +0 -257
  380. package/packages/form-table/src/components/table-component/mixins/search.js +0 -1228
  381. package/packages/form-table/src/components/table-component/register-com.js +0 -30
  382. package/packages/form-table/src/components/table-component/table-age/table-age.vue +0 -175
  383. package/packages/form-table/src/components/table-component/table-date-picker/table-date-picker.vue +0 -87
  384. package/packages/form-table/src/components/table-component/table-digital/table-digital.vue +0 -93
  385. package/packages/form-table/src/components/table-component/table-input/table-input.vue +0 -81
  386. package/packages/form-table/src/components/table-component/table-input-password/table-input-password.vue +0 -126
  387. package/packages/form-table/src/components/table-component/table-month-picker/table-month-picker.vue +0 -53
  388. package/packages/form-table/src/components/table-component/table-search/table-search.vue +0 -128
  389. package/packages/form-table/src/components/table-component/table-search-more/table-search-more.vue +0 -144
  390. package/packages/form-table/src/components/table-component/table-select/table-select.vue +0 -64
  391. package/packages/form-table/src/components/table-component/table-select-multiple/table-select-multiple.vue +0 -81
  392. package/packages/form-table/src/components/table-component/table-textarea/table-textarea.vue +0 -76
  393. package/packages/form-table/src/components/table-component/table-time-picker/table-time-picker.vue +0 -55
  394. package/packages/form-table/src/components/table-component/table-tree-select/table-tree-select.vue +0 -135
  395. package/packages/form-table/src/components/table-component/text-over-tooltip/TextOverTooltip.vue +0 -97
  396. package/packages/form-table/src/components/table-item/form-event.js +0 -81
  397. package/packages/form-table/src/components/table-item/global-props.js +0 -27
  398. package/packages/form-table/src/components/table-item/index.js +0 -4
  399. package/packages/form-table/src/components/table-item/render-methods.js +0 -28
  400. package/packages/form-table/src/components/table-item/validate-rules.js +0 -520
  401. package/packages/form-table/src/components/table-mixins/form-commom.js +0 -98
  402. package/packages/form-table/src/components/table-mixins/index.js +0 -3
  403. package/packages/form-table/src/components/table-utils/index.js +0 -112
  404. package/packages/form-table/src/disabledDetail.less +0 -46
  405. package/packages/grid/index.js +0 -10
  406. package/packages/grid/src/grid.js +0 -28
  407. package/packages/icon/index.js +0 -10
  408. package/packages/icon/src/icon.js +0 -13
  409. package/packages/index.js +0 -304
  410. package/packages/input/index.js +0 -30
  411. package/packages/input/src/Group.jsx +0 -11
  412. package/packages/input/src/Input.jsx +0 -11
  413. package/packages/input/src/Password.jsx +0 -11
  414. package/packages/input/src/Search.jsx +0 -11
  415. package/packages/input/src/TextArea.jsx +0 -11
  416. package/packages/input/src/input-quick/components/quick-item.vue +0 -284
  417. package/packages/input/src/input-quick/components/quick-popover.vue +0 -596
  418. package/packages/input/src/input-quick/index.vue +0 -137
  419. package/packages/input-number/index.js +0 -12
  420. package/packages/input-number/src/InputNumber.jsx +0 -11
  421. package/packages/keep-cache/KeepCache.js +0 -236
  422. package/packages/keep-cache/index.css +0 -3
  423. package/packages/keep-cache/index.js +0 -8
  424. package/packages/layout/index.js +0 -27
  425. package/packages/layout/src/Content.jsx +0 -11
  426. package/packages/layout/src/Footer.jsx +0 -11
  427. package/packages/layout/src/Header.jsx +0 -11
  428. package/packages/layout/src/Layout.jsx +0 -11
  429. package/packages/layout/src/Sider.jsx +0 -11
  430. package/packages/list/index.js +0 -21
  431. package/packages/list/src/Item.jsx +0 -11
  432. package/packages/list/src/ItemMeta.jsx +0 -11
  433. package/packages/list/src/List.jsx +0 -11
  434. package/packages/locale-provider/index.js +0 -12
  435. package/packages/locale-provider/src/LocaleProvider.jsx +0 -11
  436. package/packages/map/index.js +0 -10
  437. package/packages/map/src/Map.vue +0 -480
  438. package/packages/map/src/popup-map.vue +0 -53
  439. package/packages/mentions/index.js +0 -18
  440. package/packages/mentions/src/Mentions.jsx +0 -11
  441. package/packages/mentions/src/Option.jsx +0 -11
  442. package/packages/menu/index.js +0 -27
  443. package/packages/menu/src/Divider.jsx +0 -11
  444. package/packages/menu/src/Item.jsx +0 -11
  445. package/packages/menu/src/ItemGroup.jsx +0 -11
  446. package/packages/menu/src/Menu.jsx +0 -11
  447. package/packages/menu/src/SubMenu.jsx +0 -11
  448. package/packages/message/index.js +0 -8
  449. package/packages/modal/index.js +0 -10
  450. package/packages/modal/src/Modal.js +0 -7
  451. package/packages/multi-chat/chat/addConference.vue +0 -200
  452. package/packages/multi-chat/chat/addMembers.vue +0 -411
  453. package/packages/multi-chat/chat/advancedFilter.vue +0 -372
  454. package/packages/multi-chat/chat/audio.vue +0 -511
  455. package/packages/multi-chat/chat/calling.vue +0 -246
  456. package/packages/multi-chat/chat/chatFooter.vue +0 -1590
  457. package/packages/multi-chat/chat/chatHeader.vue +0 -473
  458. package/packages/multi-chat/chat/chatHistory.vue +0 -601
  459. package/packages/multi-chat/chat/chatMain.vue +0 -1446
  460. package/packages/multi-chat/chat/client/clientChat.vue +0 -716
  461. package/packages/multi-chat/chat/client/index.vue +0 -149
  462. package/packages/multi-chat/chat/delay.vue +0 -177
  463. package/packages/multi-chat/chat/evaluate.vue +0 -343
  464. package/packages/multi-chat/chat/index.vue +0 -2341
  465. package/packages/multi-chat/chat/messageRecord.vue +0 -333
  466. package/packages/multi-chat/chat/mixins/NoData.js +0 -20
  467. package/packages/multi-chat/chat/mixins/base.js +0 -92
  468. package/packages/multi-chat/chat/mixins/uniRTCAPI.js +0 -77
  469. package/packages/multi-chat/chat/multiVideo.vue +0 -1409
  470. package/packages/multi-chat/chat/quickReply.vue +0 -361
  471. package/packages/multi-chat/chat/robot/index.vue +0 -312
  472. package/packages/multi-chat/chat/scrollList.vue +0 -1229
  473. package/packages/multi-chat/chat/video.vue +0 -399
  474. package/packages/multi-chat/chat/videoVoiceList.vue +0 -348
  475. package/packages/multi-chat/chat/voice.vue +0 -431
  476. package/packages/multi-chat/components/avatar.vue +0 -76
  477. package/packages/multi-chat/components/chat-tabs-header.vue +0 -251
  478. package/packages/multi-chat/components/classify-tabs.vue +0 -185
  479. package/packages/multi-chat/components/empty.vue +0 -24
  480. package/packages/multi-chat/components/modal-refuse-reason.vue +0 -112
  481. package/packages/multi-chat/components/modal-sip.vue +0 -160
  482. package/packages/multi-chat/components/modal-user-transfer.vue +0 -98
  483. package/packages/multi-chat/components/msg-describe.vue +0 -138
  484. package/packages/multi-chat/components/msg-picture.vue +0 -68
  485. package/packages/multi-chat/components/msg-prescription.vue +0 -205
  486. package/packages/multi-chat/components/read-record.vue +0 -133
  487. package/packages/multi-chat/components/read-status.vue +0 -34
  488. package/packages/multi-chat/components/user-status.vue +0 -198
  489. package/packages/multi-chat/img/OFF-LINE.png +0 -0
  490. package/packages/multi-chat/img/ON-LINE.png +0 -0
  491. package/packages/multi-chat/img/accept.png +0 -0
  492. package/packages/multi-chat/img/add-person.png +0 -0
  493. package/packages/multi-chat/img/add_prescription.png +0 -0
  494. package/packages/multi-chat/img/all-voice.png +0 -0
  495. package/packages/multi-chat/img/audio-new.png +0 -0
  496. package/packages/multi-chat/img/audio-play.gif +0 -0
  497. package/packages/multi-chat/img/audio.png +0 -0
  498. package/packages/multi-chat/img/base-info-active.png +0 -0
  499. package/packages/multi-chat/img/base-info.png +0 -0
  500. package/packages/multi-chat/img/busy_line.png +0 -0
  501. package/packages/multi-chat/img/call.png +0 -0
  502. package/packages/multi-chat/img/callin.png +0 -0
  503. package/packages/multi-chat/img/callin_cancel.png +0 -0
  504. package/packages/multi-chat/img/calling.png +0 -0
  505. package/packages/multi-chat/img/callout.png +0 -0
  506. package/packages/multi-chat/img/callout_cancel.png +0 -0
  507. package/packages/multi-chat/img/close.png +0 -0
  508. package/packages/multi-chat/img/close_video.png +0 -0
  509. package/packages/multi-chat/img/customer-service-active.png +0 -0
  510. package/packages/multi-chat/img/customer-service.png +0 -0
  511. package/packages/multi-chat/img/customer.png +0 -0
  512. package/packages/multi-chat/img/customer_staff.png +0 -0
  513. package/packages/multi-chat/img/default.png +0 -0
  514. package/packages/multi-chat/img/ellipsis.png +0 -0
  515. package/packages/multi-chat/img/end-voice.png +0 -0
  516. package/packages/multi-chat/img/event-active.png +0 -0
  517. package/packages/multi-chat/img/event.png +0 -0
  518. package/packages/multi-chat/img/exp.png +0 -0
  519. package/packages/multi-chat/img/full-sceen-close.png +0 -0
  520. package/packages/multi-chat/img/full-sceen.png +0 -0
  521. package/packages/multi-chat/img/icon_list.png +0 -0
  522. package/packages/multi-chat/img/icon_list_active.png +0 -0
  523. package/packages/multi-chat/img/icon_table.png +0 -0
  524. package/packages/multi-chat/img/icon_table_active.png +0 -0
  525. package/packages/multi-chat/img/join-video.png +0 -0
  526. package/packages/multi-chat/img/large.png +0 -0
  527. package/packages/multi-chat/img/left-wrapper.png +0 -0
  528. package/packages/multi-chat/img/left.png +0 -0
  529. package/packages/multi-chat/img/medical_record.png +0 -0
  530. package/packages/multi-chat/img/middle.png +0 -0
  531. package/packages/multi-chat/img/msgTip.mp3 +0 -0
  532. package/packages/multi-chat/img/multi-video.png +0 -0
  533. package/packages/multi-chat/img/multi-voice.png +0 -0
  534. package/packages/multi-chat/img/mute-audio.png +0 -0
  535. package/packages/multi-chat/img/muted-audio.png +0 -0
  536. package/packages/multi-chat/img/muted-screen.png +0 -0
  537. package/packages/multi-chat/img/muted-video.png +0 -0
  538. package/packages/multi-chat/img/no-all-voice.png +0 -0
  539. package/packages/multi-chat/img/no-data.png +0 -0
  540. package/packages/multi-chat/img/no-data2.png +0 -0
  541. package/packages/multi-chat/img/no-screen.png +0 -0
  542. package/packages/multi-chat/img/no-video.png +0 -0
  543. package/packages/multi-chat/img/no-voice.png +0 -0
  544. package/packages/multi-chat/img/no-voiced.png +0 -0
  545. package/packages/multi-chat/img/normal-screen.png +0 -0
  546. package/packages/multi-chat/img/normal-video.png +0 -0
  547. package/packages/multi-chat/img/over.png +0 -0
  548. package/packages/multi-chat/img/portrait.png +0 -0
  549. package/packages/multi-chat/img/prescription.png +0 -0
  550. package/packages/multi-chat/img/receive.png +0 -0
  551. package/packages/multi-chat/img/reject.png +0 -0
  552. package/packages/multi-chat/img/remove.png +0 -0
  553. package/packages/multi-chat/img/required.png +0 -0
  554. package/packages/multi-chat/img/screen.png +0 -0
  555. package/packages/multi-chat/img/send_prescription.png +0 -0
  556. package/packages/multi-chat/img/setting.png +0 -0
  557. package/packages/multi-chat/img/small.png +0 -0
  558. package/packages/multi-chat/img/sound.png +0 -0
  559. package/packages/multi-chat/img/sound_forbid.png +0 -0
  560. package/packages/multi-chat/img/start_video.png +0 -0
  561. package/packages/multi-chat/img/system_message.png +0 -0
  562. package/packages/multi-chat/img/to-session.png +0 -0
  563. package/packages/multi-chat/img/transfer.png +0 -0
  564. package/packages/multi-chat/img/transfer2.png +0 -0
  565. package/packages/multi-chat/img/video-accept.png +0 -0
  566. package/packages/multi-chat/img/video.png +0 -0
  567. package/packages/multi-chat/img/video_consult.png +0 -0
  568. package/packages/multi-chat/img/voice.png +0 -0
  569. package/packages/multi-chat/img/worktime-active.png +0 -0
  570. package/packages/multi-chat/img/worktime.png +0 -0
  571. package/packages/multi-chat/index.js +0 -7
  572. package/packages/multi-chat/setting/authority/index.vue +0 -156
  573. package/packages/multi-chat/setting/authority/roleSetting.vue +0 -204
  574. package/packages/multi-chat/setting/baseInfo/index.vue +0 -1241
  575. package/packages/multi-chat/setting/configuration/index.vue +0 -277
  576. package/packages/multi-chat/setting/customerService/batchSelect.vue +0 -403
  577. package/packages/multi-chat/setting/customerService/index.vue +0 -273
  578. package/packages/multi-chat/setting/event/edit/condition.vue +0 -128
  579. package/packages/multi-chat/setting/event/edit/index.vue +0 -437
  580. package/packages/multi-chat/setting/event/edit/notice.vue +0 -129
  581. package/packages/multi-chat/setting/event/edit/strategy.vue +0 -98
  582. package/packages/multi-chat/setting/event/index.vue +0 -249
  583. package/packages/multi-chat/setting/index.vue +0 -269
  584. package/packages/multi-chat/setting/page.vue +0 -14
  585. package/packages/multi-chat/setting/sessionList/index.vue +0 -412
  586. package/packages/multi-chat/setting/sessionList/messageRecord.vue +0 -372
  587. package/packages/multi-chat/setting/userConfig/index.vue +0 -124
  588. package/packages/multi-chat/setting/worktime/index.vue +0 -274
  589. package/packages/multi-chat/store/actions.js +0 -448
  590. package/packages/multi-chat/store/getters.js +0 -353
  591. package/packages/multi-chat/store/helper.js +0 -66
  592. package/packages/multi-chat/store/index.js +0 -50
  593. package/packages/multi-chat/store/mutation.js +0 -278
  594. package/packages/multi-chat/store/state.js +0 -111
  595. package/packages/multi-chat/style/emoji.css +0 -315
  596. package/packages/multi-chat/style/message.mixin.less +0 -38
  597. package/packages/multi-chat/utils/chatSock.js +0 -93
  598. package/packages/multi-chat/utils/compressImage.js +0 -115
  599. package/packages/multi-chat/utils/emoji.json +0 -68
  600. package/packages/multi-chat/utils/index.js +0 -181
  601. package/packages/multi-chat/utils/observer-scroll.js +0 -49
  602. package/packages/multi-chat/utils/panelsetting.js +0 -48
  603. package/packages/multi-chat/utils/rtc-client-multi.js +0 -376
  604. package/packages/multi-chat/utils/rtc-client.js +0 -381
  605. package/packages/multi-chat-client/index.js +0 -7
  606. package/packages/multi-chat-history/index.js +0 -7
  607. package/packages/multi-chat-record/index.js +0 -7
  608. package/packages/multi-chat-setting/index.js +0 -7
  609. package/packages/multi-chat-sip/index.js +0 -6
  610. package/packages/notification/index.js +0 -8
  611. package/packages/page-header/index.js +0 -12
  612. package/packages/page-header/src/PageHeader.jsx +0 -11
  613. package/packages/pagination/index.js +0 -12
  614. package/packages/pagination/src/Pagination.jsx +0 -11
  615. package/packages/popconfirm/index.js +0 -12
  616. package/packages/popconfirm/src/Popconfirm.jsx +0 -11
  617. package/packages/popover/index.js +0 -12
  618. package/packages/popover/src/Popover.jsx +0 -11
  619. package/packages/progress/index.js +0 -12
  620. package/packages/progress/src/Progress.jsx +0 -11
  621. package/packages/radio/index.js +0 -33
  622. package/packages/radio/src/Group.jsx +0 -11
  623. package/packages/radio/src/Radio.jsx +0 -11
  624. package/packages/radio/src/RadioButton.jsx +0 -11
  625. package/packages/radio/src/RadioImg/index.vue +0 -125
  626. package/packages/rate/index.js +0 -12
  627. package/packages/rate/src/Rate.jsx +0 -11
  628. package/packages/result/index.js +0 -12
  629. package/packages/result/src/Result.jsx +0 -11
  630. package/packages/row/index.js +0 -12
  631. package/packages/row/src/Row.jsx +0 -11
  632. package/packages/scale-view/answerParse.vue +0 -124
  633. package/packages/scale-view/customList.vue +0 -801
  634. package/packages/scale-view/data.js +0 -80
  635. package/packages/scale-view/evaluateCountdown.vue +0 -155
  636. package/packages/scale-view/evaluatePage.vue +0 -202
  637. package/packages/scale-view/formitem/data.js +0 -3991
  638. package/packages/scale-view/formitem/index.js +0 -6
  639. package/packages/scale-view/formitem/r-address.vue +0 -238
  640. package/packages/scale-view/formitem/r-choice.vue +0 -534
  641. package/packages/scale-view/formitem/r-input.vue +0 -96
  642. package/packages/scale-view/formitem/r-prompt.vue +0 -52
  643. package/packages/scale-view/formitem/r-time.vue +0 -285
  644. package/packages/scale-view/formitem/r-upload-custom-list.vue +0 -242
  645. package/packages/scale-view/formitem/r-upload.vue +0 -287
  646. package/packages/scale-view/formitem/text-over-tooltip/TextOverTooltip.vue +0 -98
  647. package/packages/scale-view/index.js +0 -17
  648. package/packages/scale-view/mixin/NoData.js +0 -24
  649. package/packages/scale-view/mixin/evaluate.js +0 -146
  650. package/packages/scale-view/mixin/index.js +0 -337
  651. package/packages/scale-view/mixin/judgeTypes.js +0 -267
  652. package/packages/scale-view/scaleView.vue +0 -1836
  653. package/packages/select/index.js +0 -27
  654. package/packages/select/src/CustomSelect/index.vue +0 -130
  655. package/packages/select/src/OptGroup.jsx +0 -11
  656. package/packages/select/src/Option.jsx +0 -11
  657. package/packages/select/src/Select.jsx +0 -11
  658. package/packages/select/src/TableSelect/index.vue +0 -497
  659. package/packages/select-label/index.js +0 -14
  660. package/packages/select-label/label-classify.vue +0 -129
  661. package/packages/select-label/labelFormContent.vue +0 -787
  662. package/packages/select-label/select-label.vue +0 -581
  663. package/packages/select-person/index.js +0 -10
  664. package/packages/select-person/search-tree.vue +0 -373
  665. package/packages/select-person/select-person.vue +0 -1302
  666. package/packages/skeleton/index.js +0 -12
  667. package/packages/skeleton/src/Skeleton.jsx +0 -11
  668. package/packages/slider/index.js +0 -12
  669. package/packages/slider/src/Slider.jsx +0 -11
  670. package/packages/space/index.js +0 -12
  671. package/packages/space/src/Space.jsx +0 -11
  672. package/packages/spin/index.js +0 -12
  673. package/packages/spin/src/Spin.jsx +0 -11
  674. package/packages/statistic/index.js +0 -18
  675. package/packages/statistic/src/Countdown.jsx +0 -11
  676. package/packages/statistic/src/Statistic.jsx +0 -11
  677. package/packages/steps/index.js +0 -18
  678. package/packages/steps/src/Step.jsx +0 -11
  679. package/packages/steps/src/Steps.jsx +0 -11
  680. package/packages/switch/index.js +0 -12
  681. package/packages/switch/src/Switch.jsx +0 -11
  682. package/packages/table-filter/index.js +0 -27
  683. package/packages/table-filter/src/base-search-com/BaseSearch.vue +0 -2442
  684. package/packages/table-filter/src/classification/Classification-com.vue +0 -1756
  685. package/packages/table-filter/src/classification/search-class-name.vue +0 -266
  686. package/packages/table-filter/src/classification/search-professional-model.vue +0 -680
  687. package/packages/table-filter/src/components/TextOverTooltip.vue +0 -107
  688. package/packages/table-filter/src/components/age-com/index.vue +0 -205
  689. package/packages/table-filter/src/components/button-group/ButtonGroup.vue +0 -162
  690. package/packages/table-filter/src/components/button-icon/button-icon.js +0 -33
  691. package/packages/table-filter/src/components/button-icon/getBtnIcon.js +0 -34
  692. package/packages/table-filter/src/components/c-tree-select/tree-select.vue +0 -336
  693. package/packages/table-filter/src/components/drop-button/drop-button.vue +0 -224
  694. package/packages/table-filter/src/components/drop-button/head-btn-icon.js +0 -33
  695. package/packages/table-filter/src/components/drop-view/drop-view.vue +0 -89
  696. package/packages/table-filter/src/components/multi-select/multi-select.vue +0 -215
  697. package/packages/table-filter/src/components/out-quick-search/out-quick-search.vue +0 -337
  698. package/packages/table-filter/src/components/range-age/index.vue +0 -172
  699. package/packages/table-filter/src/components/search-condition/SearchCondition.vue +0 -1819
  700. package/packages/table-filter/src/components/search-condition/fieldTypeList.js +0 -169
  701. package/packages/table-filter/src/components/search-filter/SearchFilter.vue +0 -270
  702. package/packages/table-filter/src/components/search-modal/set-classification.vue +0 -310
  703. package/packages/table-filter/src/components/table-modal/TableModal.vue +0 -463
  704. package/packages/table-filter/src/const/index.js +0 -1
  705. package/packages/table-filter/src/index.vue +0 -584
  706. package/packages/table-filter/src/mixins/mixins.js +0 -682
  707. package/packages/table-filter/src/mixins/tableSearchCon.js +0 -128
  708. package/packages/table-filter/src/mixins/wordBookutils.js +0 -99
  709. package/packages/table-filter/src/quick-search/QuickSearch.vue +0 -2003
  710. package/packages/tabs/index.js +0 -18
  711. package/packages/tabs/src/TabPane.jsx +0 -11
  712. package/packages/tabs/src/Tabs.jsx +0 -11
  713. package/packages/tag/index.js +0 -21
  714. package/packages/tag/src/CheckableTag.jsx +0 -11
  715. package/packages/tag/src/Tag.jsx +0 -11
  716. package/packages/tag/src/TagGroup.vue +0 -622
  717. package/packages/time-picker/index.js +0 -12
  718. package/packages/time-picker/src/TimePicker.jsx +0 -11
  719. package/packages/timeline/index.js +0 -14
  720. package/packages/timeline/src/Item.jsx +0 -11
  721. package/packages/timeline/src/Timeline.jsx +0 -11
  722. package/packages/tooltip/index.js +0 -12
  723. package/packages/tooltip/src/Tooltip.jsx +0 -11
  724. package/packages/transfer/index.js +0 -12
  725. package/packages/transfer/src/Transfer.jsx +0 -11
  726. package/packages/tree/index.js +0 -18
  727. package/packages/tree/src/Tree.jsx +0 -11
  728. package/packages/tree/src/TreeNode.jsx +0 -11
  729. package/packages/tree-select/index.js +0 -18
  730. package/packages/tree-select/src/TreeNode.jsx +0 -11
  731. package/packages/tree-select/src/TreeSelect.jsx +0 -11
  732. package/packages/upload/chunk-upload/chunk-upload-new.vue +0 -1001
  733. package/packages/upload/chunk-upload/vod-chunk-upload.vue +0 -749
  734. package/packages/upload/chunk-upload/vod-upload-modal.vue +0 -100
  735. package/packages/upload/index.js +0 -12
  736. package/packages/upload/src/Upload.jsx +0 -11
  737. package/packages/verification-code/SlideVerify.vue +0 -306
  738. package/packages/verification-code/index.js +0 -17
  739. package/packages/verification-code/verification-code.vue +0 -147
  740. package/src/assets/img/success.png +0 -0
  741. package/src/assets/img/video.png +0 -0
  742. package/src/assets/img/video_default_cover.png +0 -0
  743. package/src/assets/img/video_hover.png +0 -0
  744. package/src/assets/img/video_play_hover.png +0 -0
  745. package/src/component/player-vod/index.vue +0 -57
  746. package/src/component/player-vod/player.vue +0 -188
  747. package/src/component/player-vod/video-list.vue +0 -262
  748. package/src/component/player-vod/video-modal.vue +0 -128
  749. package/src/component/select-pages/index.vue +0 -72
  750. package/src/component/svg/index.vue +0 -59
  751. package/src/core/create.js +0 -6
  752. package/src/core/event.js +0 -23
  753. package/src/core/table-methods.js +0 -444
  754. package/src/directive/flexibleResize.js +0 -151
  755. package/src/directive/scroll.js +0 -230
  756. package/src/global/variable.js +0 -2
  757. package/src/style/normalize.css +0 -424
  758. package/src/style/style.less +0 -49
  759. package/src/utils/UniRTCv2.js +0 -561
  760. package/src/utils/chatFetch.js +0 -61
  761. package/src/utils/clickoutside.js +0 -75
  762. package/src/utils/crypto.js +0 -25
  763. package/src/utils/kty-sdk.js +0 -582
  764. package/src/utils/kty.min-1.0.0.js +0 -14378
  765. package/src/utils/sip-device.js +0 -79
  766. package/src/utils/time-domain.js +0 -193
  767. package/src/utils/utils-map.js +0 -450
  768. package/src/utils/vexutils.js +0 -811
@@ -1,2341 +0,0 @@
1
- <template>
2
- <div class="online-chat multiChat-chat-index" :class="{ 'chat-style-fold': !isNormalStyle }">
3
- <a-spin v-if="loading" class="loading" />
4
- <a-layout v-else>
5
- <a-layout-sider :width="isNormalStyle ? 300 : 94" class="message-list" :class="{ 'message-list-close': !enable }">
6
- <div v-if="enable && !hideSearch && isNormalStyle" class="message-search">
7
- <a-input :placeholder="i18nText('1.9.321')" :value="keywords" @change="handleKeywordsChange" @pressEnter="handleKeywordsSearch">
8
- <a-icon slot="prefix" type="search" />
9
- </a-input>
10
- <a-button ghost type="primary" style="margin-left: 10px;" @click="advancedFilterVisible = true">{{ i18nText('1.9.271') }}</a-button>
11
- </div>
12
- <div :class="{ 'chat-style-set': true, 'show-style': enableTableStyle }">
13
- <div v-if="enableTableStyle" class="chat-style-btns">
14
- <span :class="{ 'chat-style-btn': true, active: styleType === item.type }" v-for="item in styleBtns" :key="item.type" @click="toggleStyleType(item.type)">
15
- <img :src="styleType === item.type ? item.activeIcon : item.icon" />
16
- </span>
17
- </div>
18
- <div>
19
- <a-range-picker v-show="isNormalStyle" :value="searchDate" :open="dateOpenStatus" @change="handleSearchDateChange" @openChange="handleDateOpenChange">
20
- <i :class="{ 'set-btn-icon': true, active: searchDate.length > 1 }">
21
- <svg-icon icon-class="a-xitongtubiaoliaotianriqishaixuan" />
22
- </i>
23
- <div class="data-picker-clear" slot="renderExtraFooter" @click="clearSearchDate">清空</div>
24
- </a-range-picker>
25
- <a-tooltip placement="right" title="视图切换">
26
- <a-icon class="set-btn-icon" type="swap" @click="toggleStyleFold" />
27
- </a-tooltip>
28
- </div>
29
- </div>
30
- <ChatTabsHeader
31
- v-if="!isNormalStyle"
32
- :activeKey="currentTab"
33
- :tabList="tabList"
34
- :queueStatistic="queueStatistic"
35
- :sessionStatistic="sessionStatistic"
36
- :offlineSessionStatistic="offlineSessionStatistic"
37
- :classify="classify"
38
- :handleOfflineClassifyCount="handleOfflineClassifyCount"
39
- :classifyList="classifyList"
40
- @change="handleTabChange"
41
- @changeClassify="handleClassifyClick"
42
- >
43
- <template v-if="isConference && enable">
44
- <a-tooltip placement="bottom">
45
- <template slot="title"> {{ conferenceTitle }} </template>
46
- <a-icon class="add-icon" @click="addConference" type="plus-circle" />
47
- </a-tooltip>
48
- </template>
49
- </ChatTabsHeader>
50
- <a-tabs v-if="enable" class="message-tabs" :activeKey="currentTab" @change="handleTabChange" :class="{ 'message-conference-tab': isConference, 'message-staff-tab': isStaff }">
51
- <template v-for="{ name, type } in tabList">
52
- <a-tab-pane :key="type">
53
- <a-tooltip v-if="isNormalStyle" placement="top" slot="tab">
54
- <template slot="title">
55
- {{ name }}
56
- </template>
57
- <div class="serverinfo-label" v-if="type === 'queue'">
58
- <span class="ellips" style="max-width: 85%;">{{ name }}</span>
59
- <div>{{ `(${queueStatistic.peopleCount}人)` }}</div>
60
- <span class="msg-count" v-if="queueStatistic && queueStatistic.unreadCount">
61
- <template v-if="+queueStatistic.unreadCount > 99">
62
- <a-tooltip :title="queueStatistic.unreadCount">
63
- 99+
64
- </a-tooltip>
65
- </template>
66
- <template v-else>
67
- {{ queueStatistic.unreadCount }}
68
- </template>
69
- </span>
70
- </div>
71
- <div class="serverinfo-label" v-else-if="type === 'session'">
72
- <span class="ellips" style="max-width: 85%;">{{ name }}</span>
73
- <div>{{ `(${sessionStatistic.peopleCount}人)` }}</div>
74
- <span class="msg-count" v-if="sessionStatistic && sessionStatistic.unreadCount">
75
- <template v-if="+sessionStatistic.unreadCount > 99">
76
- <a-tooltip :title="sessionStatistic.unreadCount">
77
- 99+
78
- </a-tooltip>
79
- </template>
80
- <template v-else>
81
- {{ sessionStatistic.unreadCount }}
82
- </template>
83
- </span>
84
- </div>
85
- <span v-else class="serverinfo-label">
86
- <span class="ellips" style="max-width: 85%;">{{ name }}</span>
87
- <div style="display:none">()</div>
88
- <span class="msg-count" v-if="offlineSessionStatistic && offlineSessionStatistic.unreadCount">
89
- <template v-if="+offlineSessionStatistic.unreadCount > 99">
90
- <a-tooltip :title="offlineSessionStatistic.unreadCount">
91
- 99+
92
- </a-tooltip>
93
- </template>
94
- <template v-else>
95
- {{ offlineSessionStatistic.unreadCount }}
96
- </template>
97
- </span>
98
- </span>
99
- </a-tooltip>
100
- <span v-else slot="tab"></span>
101
- <template v-if="isNormalStyle && videoRecord.length">
102
- <div @click="handleVideoEnter(videoRecord[0])" class="video-record">
103
- <img src="../img/join-video.png" width="16" style="margin-right: 8px;" />
104
- [{{ videoRecord[0].caller.name }}…]正在进行,点击加入
105
- </div>
106
- </template>
107
- <ClassifyTabs v-if="isNormalStyle && isListClassify" :list="classifyList" :value="classify" @input="handleClassifyClick" ref="ClassifyTabs">
108
- <template v-slot:default="{ item }">
109
- <svg-icon v-if="item.icon" :icon-class="item.icon"></svg-icon>
110
- <span class="name"> {{ item.name }}{{ item.isStatistic === 'Y' ? (currentTab != 'end' ? `(${item.count})` : `(${handleOfflineClassifyCount(item.classify)})`) : null }} </span>
111
- </template>
112
- </ClassifyTabs>
113
- <div style="flex:1;overflow: hidden;">
114
- <scroll-list
115
- v-if="currentTab === type"
116
- :ref="'scrollList-' + type"
117
- :type="type"
118
- :defSessionId="defSessionId"
119
- :theme="isNormalStyle ? (styleType == 'LIST' ? '' : 'table') : 'fold'"
120
- :dateParams="searchDate"
121
- ></scroll-list>
122
- </div>
123
- </a-tab-pane>
124
- </template>
125
- <template v-if="isConference && enable">
126
- <a-tooltip slot="tabBarExtraContent" placement="bottom">
127
- <template slot="title"> {{ conferenceTitle }} </template>
128
- <a-icon @click="addConference" type="plus-circle" />
129
- </a-tooltip>
130
- </template>
131
- </a-tabs>
132
- <div v-if="isNormalStyle" class="footer-operate">
133
- <!-- 状态切换 -->
134
- <UserStatus v-if="hideHeader" placement="topCenter" />
135
- <div class="footer-operate-right">
136
- <span v-if="showSetting" class="setting-span">
137
- <svg-icon icon-class="a-xitongtubiaoliaotianshezhi" @click="handleSetting" />
138
- </span>
139
- <span>
140
- <a-tooltip placement="bottom">
141
- <template slot="title">
142
- <span>声音提醒</span>
143
- </template>
144
- <svg-icon :icon-class="voiceAlert ? 'a-xitongtubiaoliaotianlaba' : 'a-xitongtubiaoliaotianjingyin'" style="margin-right: 10px" @click="toggleVoiceAlert" />
145
- </a-tooltip>
146
- </span>
147
- <span>
148
- <a-tooltip placement="top">
149
- <template slot="title">
150
- <span>语音历史</span>
151
- </template>
152
- <svg-icon @click="toggleVideoVoiceList" icon-class="a-xitongtubiaoliaotiantonghua" />
153
- </a-tooltip>
154
- </span>
155
- </div>
156
- </div>
157
- <template v-else>
158
- <a-popover placement="rightBottom" arrowPointAtCenter>
159
- <template slot="content">
160
- <div class="chat-operate-group">
161
- <div v-if="showSetting" class="chat-operate-item" @click="handleSetting">
162
- <svg-icon icon-class="a-xitongtubiaoliaotianshezhi" />
163
- <span>设置</span>
164
- </div>
165
- <div class="chat-operate-item" @click="toggleVoiceAlert">
166
- <svg-icon :icon-class="voiceAlert ? 'a-xitongtubiaoliaotianlaba' : 'a-xitongtubiaoliaotianjingyin'" />
167
- <span>静音</span>
168
- </div>
169
- <div class="chat-operate-item" @click="toggleVideoVoiceList">
170
- <svg-icon icon-class="a-xitongtubiaoliaotiantonghua" />
171
- <span>通话</span>
172
- </div>
173
- </div>
174
- </template>
175
- <div class="chat-operate-more">
176
- <i class="operate-more-icon"></i>
177
- </div>
178
- </a-popover>
179
- <!-- 状态切换 -->
180
- <UserStatus v-if="hideHeader" placement="topCenter" />
181
- </template>
182
- </a-layout-sider>
183
- <a-row style="width: 100%;height: 100%;overflow: hidden;">
184
- <a-col :span="mainSpan" style="height: 100%;position: relative">
185
- <a-layout>
186
- <chat-main :isShowPortraitPanel="isShowPortraitPanel" :hideHeader="hideHeader" v-bind="$attrs">
187
- <a-alert v-if="reConnention >= 60" type="warning" message="网络质量不佳,请检查网络后重试!" show-icon>
188
- <a-icon type="exclamation-circle" slot="icon" />
189
- </a-alert>
190
- </chat-main>
191
- <chat-footer :addvisible.sync="visible" :validTalkingEnv="validTalkingEnv" :hideQueueBtns="hideQueueBtns"></chat-footer>
192
- <Video v-if="showVideo"></Video>
193
- <Audio v-if="showAudio" :validTalkingEnv="validTalkingEnv"></Audio>
194
- <div v-if="showPanel && clientId" :class="['collapse-icon', foldPanel ? '' : 'fold']" @click="() => (foldPanel = !foldPanel)">
195
- <img style="position: absolute;z-index: 30000;top: calc(50% - 6px);right: 10px;" src="../img/left.png" width="9" />
196
- </div>
197
- </a-layout>
198
- </a-col>
199
- <a-col :span="panelSpan" style="height: 100%;" class="right-panel">
200
- <div v-if="panelSpan > 0" style="margin-left: 5px;box-shadow: -4px 0 4px #e9e9e9;height: 100%;">
201
- <div class="tab-operate" v-if="isShowPanel && isShowGroupChat && $slots.userPanel">
202
- <span
203
- class="tab left"
204
- v-if="isShowPanel"
205
- :class="{ active: rightPanelTabActive === 0 }"
206
- @click="
207
- () => {
208
- this.rightPanelTabActive = 0;
209
- }
210
- "
211
- >用户信息</span
212
- >
213
- <span
214
- v-if="isShowGroupChat"
215
- class="tab right"
216
- :class="{ active: rightPanelTabActive === 1 }"
217
- @click="
218
- () => {
219
- this.rightPanelTabActive = 1;
220
- }
221
- "
222
- >成员管理</span
223
- >
224
- </div>
225
- <div
226
- v-if="rightPanelTabActive === 0 && isShowPanel"
227
- :style="{
228
- height: isSupportGroup ? `calc(100% - 50px)` : '100%',
229
- padding: '10px 0 10px 10px',
230
- background: isSupportGroup ? '#fff' : '#f0f2f5'
231
- }"
232
- >
233
- <slot name="userPanel"></slot>
234
- </div>
235
- <template v-if="rightPanelTabActive === 1 && isShowGroupChat">
236
- <div
237
- style="padding: 10px;display: flex;flex-direction: column;"
238
- :style="{
239
- height: isSupportGroup ? `calc(100% - 50px)` : '100%'
240
- }"
241
- >
242
- <a-input :value="memberName" placeholder="请输入用户名模糊搜索" class="name-search" @change="handleMemberNameChange">
243
- <a-icon slot="prefix" type="search" />
244
- </a-input>
245
- <div class="add-member" v-if="showAddMembers">
246
- <span class="add" @click="addMembers('')"> <a-icon type="plus" /> </span>添加成员
247
- </div>
248
- <div class="member-list">
249
- <div
250
- class="member-item"
251
- v-for="item in sessionMember"
252
- :key="item.userId"
253
- @mouseenter="
254
- () => {
255
- if (item.isOwner === 'Y' || item.userId == clientParams.userId || !isSessionOwner || item.unRemoved === 'Y') return;
256
- $set(item, 'hover', true);
257
- }
258
- "
259
- @mouseleave="
260
- () => {
261
- $set(item, 'hover', false);
262
- }
263
- "
264
- >
265
- <img src="../img/portrait.png" />
266
- <span class="name">{{ item.userName }}</span>
267
- <span class="remove" v-if="item.hover" @click="handleMemberRemoveConfirm(item)">移出</span>
268
- </div>
269
- </div>
270
- </div>
271
- </template>
272
- </div>
273
- </a-col>
274
- </a-row>
275
- </a-layout>
276
- <div class="overlay" v-if="!enable && !loading">
277
- <p class="note">{{ i18nText('1.9.325') }}</p>
278
- <p></p>
279
- </div>
280
-
281
- <div class="videoHistory-list" v-if="isVideoVoiceList" :class="{ 'show-list': isVideoVoiceList }">
282
- <VideoVoiceList @handleVideoEnter="handleVideoEnter" @closeVideoList="closeVideoList"></VideoVoiceList>
283
- </div>
284
- <Calling v-if="callings.length > 0" :validTalkingEnv="validTalkingEnv" />
285
- <div ref="delays" class="delay-wrapper" v-if="delays.length > 0">
286
- <Delay v-for="item in delays" :key="item.sessionId" :delay="item" />
287
- </div>
288
- <AdvancedFilter v-if="advancedFilterVisible" @handleAdvancedFilterClose="handleAdvancedFilterClose" :advancedFilterVisible="advancedFilterVisible" />
289
- <audio controls="controls" preload ref="msgTip" style="display: none;">
290
- <source src="../img/msgTip.mp3" />
291
- </audio>
292
- <div v-if="visible">
293
- <a-modal title="请选择人员" v-model="visible" :maskClosable="false" :destroyOnClose="true" width="720px" :footer="null" :bodyStyle="{ padding: 0, height: '600px' }">
294
- <add-members
295
- :visible.sync="visible"
296
- :membersType="membersType"
297
- :conferenceMemberList="conferenceMemberList"
298
- :validTalkingEnv="validTalkingEnv"
299
- @updateMemberList="getGroupMembers"
300
- @addConferenceMemberList="addConferenceMemberList"
301
- @addStaffMemberList="addStaffMemberList"
302
- ></add-members>
303
- </a-modal>
304
- </div>
305
- <MultiVideo v-if="multiVideoShow" :addvisible.sync="visible" :validTalkingEnv="validTalkingEnv"></MultiVideo>
306
- <template v-if="conferenceVisible">
307
- <a-modal :title="conferenceTitle" v-model="conferenceVisible" :maskClosable="false" :destroyOnClose="true" width="720px" @ok="handleConferenceModal" @cancel="closeConferenceModal">
308
- <add-conference ref="addConferenceCom" :conferenceMemberList="conferenceMemberList" @addConferenceMember="addMembers" @saveConference="saveConference"></add-conference>
309
- </a-modal>
310
- </template>
311
- <div class="disable-operate" v-if="disableOperate">
312
- <a-spin />
313
- </div>
314
- </div>
315
- </template>
316
-
317
- <script>
318
- import { Alert, Button, Col, Icon, Input, Layout, Modal, Popover, Row, Spin, Tabs, Tooltip, DatePicker } from 'ant-design-vue';
319
- import SvgIcon from '@/component/svg/index.vue';
320
- import ChatSock from '../utils/chatSock';
321
- import { mapGetters, mapMutations, mapActions } from '../store/helper';
322
- import fetch, { qs } from '@/utils/chatFetch';
323
- import baseMix from './mixins/base';
324
- import ChatFooter from './chatFooter';
325
- import ChatMain from './chatMain';
326
- import ScrollList from './scrollList';
327
- import Video from './video';
328
- import Audio from './audio';
329
- import Calling from './calling';
330
- import Delay from './delay';
331
- import AdvancedFilter from './advancedFilter';
332
- import AddMembers from './addMembers';
333
- import MultiVideo from './multiVideo';
334
- import VideoVoiceList from './videoVoiceList';
335
- import addConference from './addConference';
336
- import ClassifyTabs from '../components/classify-tabs';
337
- import ChatTabsHeader from '../components/chat-tabs-header';
338
- import UserStatus from '../components/user-status';
339
- import { checkTalkingEnv } from '../utils/index';
340
- import uniRTCAPI from './mixins/uniRTCAPI';
341
-
342
- export default {
343
- name: 'c-chat-server',
344
- mixins: [baseMix, uniRTCAPI],
345
- data() {
346
- this.stompClient = null;
347
- this.videoGroupSubscribe = null;
348
- return {
349
- styleBtns: Object.freeze([
350
- {
351
- type: 'LIST',
352
- icon: require('../img/icon_list.png'),
353
- activeIcon: require('../img/icon_list_active.png')
354
- },
355
- {
356
- type: 'TABLE',
357
- icon: require('../img/icon_table.png'),
358
- activeIcon: require('../img/icon_table_active.png')
359
- }
360
- ]),
361
- styleType: 'LIST',
362
- styleFold: 'N',
363
- dateOpenStatus: false,
364
- searchDate: [],
365
- queueKey: null,
366
- status: 'ON-LINE', // 客服状态
367
- loading: true,
368
- params: {},
369
- heartTimer: null,
370
- advancedFilterVisible: false,
371
- convertShow: false,
372
- serviceList: [],
373
- converUserId: '',
374
- converMark: '',
375
- reConnention: 0,
376
- rightPanelTabActive: 0,
377
- memberName: '',
378
- groupMembers: [],
379
- visible: false,
380
- foldPanel: false,
381
- isVideoVoiceList: false,
382
- conferenceVisible: false,
383
- membersType: '',
384
- conferenceMemberList: [],
385
- isSaveConference: false,
386
- saveConferenceItem: null
387
- };
388
- },
389
- props: {
390
- // 隐藏排队状态底部信息
391
- hideQueueBtns: {
392
- type: Boolean,
393
- default: false
394
- },
395
- // 隐藏高级筛选
396
- hideSearch: {
397
- type: Boolean,
398
- default: false
399
- },
400
- // 隐藏头部
401
- hideHeader: {
402
- type: Boolean,
403
- default: false
404
- },
405
- chatURL: {
406
- type: String
407
- },
408
- assembly: {
409
- type: String
410
- },
411
- isServer: {
412
- type: Boolean,
413
- default: true
414
- },
415
- // 允许 chatType 类型校验
416
- enableTypeValid: {
417
- type: Boolean,
418
- default: false
419
- }
420
- },
421
- async created() {
422
- this.init();
423
- this.registerEvent('searchCurrenChatList', ({type = 'change', keyword}) => {
424
- this.handleKeywordsChange({ target: { value: keyword } });
425
- type == 'pressEnter' && this.handleKeywordsSearch({ target: { value: keyword } });
426
- });
427
- this.registerEvent('updatePanelTab', this.onlyGroup);
428
- },
429
- computed: {
430
- ...mapGetters([
431
- 'assemblyId',
432
- 'sessionId',
433
- 'classify',
434
- 'currentTab',
435
- 'clientId',
436
- 'serviceId',
437
- 'keywords',
438
- 'onChating',
439
- 'showVideo',
440
- 'enable',
441
- 'caller',
442
- 'callings',
443
- 'assemblySetting',
444
- 'statusList',
445
- 'tabList',
446
- 'chatMainTitle',
447
- 'endSessionTitle',
448
- 'convertButtonTitle',
449
- 'delays',
450
- 'panelParams',
451
- 'clientParams',
452
- 'sessionEnd',
453
- 'sessionStatistic',
454
- 'queueStatistic',
455
- 'offlineSessionStatistic',
456
- 'offlineClassifyCount',
457
- 'voiceAlert',
458
- 'multiVideoShow',
459
- 'recordId',
460
- 'isSessionOwner',
461
- 'showAudio',
462
- 'videoRecord',
463
- 'msgList',
464
- 'videoData',
465
- 'scrollQueueId',
466
- 'lastClassify',
467
- 'lastCurrentTab',
468
- 'curScrollItem',
469
- 'disableOperate',
470
- 'sdkInfo'
471
- ]),
472
- isNormalStyle() {
473
- return this.styleFold !== 'Y';
474
- },
475
- enableTableStyle() {
476
- const len = this.assemblySetting?.listLayoutSetting?.tableLayout?.length || 0;
477
- return len > 0;
478
- },
479
- defSessionId() {
480
- return this.chatParams.sessionId;
481
- },
482
- isOrgAdmin() {
483
- return this.userInfo?.sysParams?.userType === 'orgAdmin';
484
- },
485
- showSetting() {
486
- return this.isOrgAdmin || this.sdkInfo?.vendor == 2;
487
- },
488
- statusDesc() {
489
- return this.statusList.find(item => item.status === this.status)?.title;
490
- },
491
- showPanel() {
492
- return this.assemblySetting.panelSetting?.targetIs;
493
- },
494
- handleCurrentTab() {
495
- let currentTab = this.currentTab;
496
- if (this.lastCurrentTab && this.lastCurrentTab != currentTab) {
497
- currentTab = this.lastCurrentTab;
498
- }
499
- return currentTab;
500
- },
501
- mainSpan() {
502
- let currentTab = this.handleCurrentTab;
503
- if (
504
- !this.showPanel ||
505
- (this.isConference && !this.curScrollItem) ||
506
- (!this.isConference && !this.clientId) ||
507
- this.foldPanel ||
508
- (currentTab == 'queue' && !this.isShowPanel) ||
509
- (!this.isShowPanel && !this.isShowGroupChat)
510
- ) {
511
- return 24;
512
- }
513
- return 24 - (this.assemblySetting.panelSetting?.targetWith || 0);
514
- },
515
- panelSpan() {
516
- let currentTab = this.handleCurrentTab;
517
- if (
518
- !this.showPanel ||
519
- (this.isConference && !this.curScrollItem) ||
520
- (!this.isConference && !this.clientId) ||
521
- this.foldPanel ||
522
- (currentTab == 'queue' && !this.isShowPanel) ||
523
- (!this.isShowPanel && !this.isShowGroupChat)
524
- ) {
525
- return 0;
526
- }
527
- return this.assemblySetting.panelSetting?.targetWith || 0;
528
- },
529
- classifyList() {
530
- if (this.assemblySetting.isListClassify !== 'Y') {
531
- return [];
532
- }
533
- return this.assemblySetting.listClassify.filter(item => item.enable === undefined || item.enable) || [];
534
- },
535
- isListClassify() {
536
- return this.assemblySetting.isListClassify === 'Y';
537
- },
538
-
539
- sessionMember() {
540
- let list = this.groupMembers
541
- .filter(item => item.isChecked === 'Y' || item.isOwner === 'Y')
542
- .filter(item => {
543
- return item.userName.includes(this.memberName);
544
- });
545
- return list;
546
- },
547
- // 用户头像面板
548
- isShowPortraitPanel() {
549
- return this.handleShowPanel('PORTRAIT_PANEL');
550
- },
551
- // 用户信息面板
552
- isShowPanel() {
553
- return this.handleShowPanel('PANEL');
554
- },
555
- // 群组
556
- isShowGroupChat() {
557
- let currentTab = this.handleCurrentTab;
558
- return this.handleShowPanel('GROUP_CHAT') && currentTab != 'queue';
559
- },
560
- isSupportGroup() {
561
- // return this.assemblySetting.isSupportGroup === "Y";
562
- return this.isShowPanel && this.isShowGroupChat;
563
- },
564
- isConference() {
565
- return ['conference', 'staff'].includes(this.assemblySetting?.type);
566
- },
567
- isStaff() {
568
- return this.assemblySetting?.type === 'staff';
569
- },
570
- showAddMembers() {
571
- if (this.isConference) {
572
- return (this.isSessionOwner || this.curScrollItem.allowAdd == 1) && this.handleCurrentTab != 'end';
573
- }
574
- return this.isSessionOwner && this.handleCurrentTab != 'end';
575
- },
576
- conferenceTitle() {
577
- if (this.isStaff) {
578
- return '发起群聊';
579
- }
580
- let str = '发起';
581
- let { serverInfo } = this.assemblySetting?.serverSetting || {};
582
- if (!serverInfo) return `${str}会议`;
583
- let matchItem = serverInfo.find(item => item.key === 'conferenceTitle');
584
- return str + (matchItem?.value || '会议');
585
- }
586
- },
587
- methods: {
588
- ...mapMutations([
589
- 'setMsgRecordCache',
590
- 'setAssemblyId',
591
- 'setClassify',
592
- 'setMessage',
593
- 'setIsAppendMsg',
594
- 'setListChangeItem',
595
- 'setIsScrollListChange',
596
- 'setCurrentTab',
597
- 'setServiceId',
598
- 'setKeywords',
599
- 'setSearchKeywords',
600
- 'setOnChating',
601
- 'setSessionId',
602
- 'setMsgList',
603
- 'setEnable',
604
- 'setShowVideo',
605
- 'setCaller',
606
- 'setRoomId',
607
- 'setUserSig',
608
- 'setVideoId',
609
- 'setCallings',
610
- 'setAssemblySetting',
611
- 'setDelays',
612
- 'setIsServer',
613
- 'setSessionEnd',
614
- 'setSessionStatistic',
615
- 'setQueueStatistic',
616
- 'setOfflineSessionStatistic',
617
- 'setClientId',
618
- 'setSdkInfo',
619
- 'appendList',
620
- 'setVideoListChange',
621
- 'setVideoData',
622
- 'setAddMemberType',
623
- 'setRecordId',
624
- 'setCurrentSip',
625
- 'setMultiVideoShow',
626
- 'setIsSessionOwner',
627
- 'setVideoStatus',
628
- 'setVideoMode',
629
- 'setShowAudio',
630
- 'setGroupMembers',
631
- 'setVideoMembers',
632
- 'setMuteAudio',
633
- 'setVideoRecord',
634
- 'setVoiceAlert',
635
- 'setLastCurrentTab',
636
- 'setQueueItem',
637
- 'setCurScrollItem',
638
- 'setSessionType',
639
- ]),
640
- ...mapActions(['setChatTimer', 'getVideoHistoryList', 'initUniRTC']),
641
- ...mapActions({
642
- getMsgList: 'setMsgList'
643
- }),
644
- handleDateOpenChange(v) {
645
- this.dateOpenStatus = v;
646
- },
647
- handleSearchDateChange(v) {
648
- if (this.currentTab !== 'end' && v.length) {
649
- const queryTimeSetting = this.assemblySetting?.queryTimeSetting || [];
650
- const time = queryTimeSetting.find(item => item.isChecked === 'Y');
651
- const num = time?.num || 0;
652
- if (num) {
653
- const diff = v[1]
654
- .clone()
655
- .set({ second: 0, minute: 0, hour: 0 })
656
- .diff(v[0].clone().set({ second: 0, minute: 0, hour: 0 }), 'day');
657
- if (diff >= num) {
658
- this.$message.warning(`时间跨度不能超过${time.title}`);
659
- return;
660
- }
661
- }
662
- }
663
- this.searchDate = Object.freeze(v);
664
- this.dateOpenStatus = false;
665
- },
666
- clearSearchDate() {
667
- this.searchDate = [];
668
- this.dateOpenStatus = false;
669
- },
670
- handleOfflineClassifyCount(classify) {
671
- if (!classify) return 0;
672
- let res = this.offlineClassifyCount[classify];
673
- return res || 0;
674
- },
675
- async init() {
676
- // 校验组件类型
677
- if (this.enableTypeValid) {
678
- let isChat = this.isChatValidate();
679
- if (isChat) return;
680
- }
681
- this.setIsServer(true);
682
- this.setAssemblyId(this.assembly || this.routeQuery.assemblyId);
683
- try {
684
- // 如果有默认会话id 则查询该会话状态
685
- if (this.defSessionId) {
686
- await this.getSessionStatus();
687
- }
688
- } catch (err) {
689
- console.log(err);
690
- }
691
- await this.handleServiceAccess();
692
- this.enable && this.initWebSocket();
693
- await this.getListStatistic();
694
- await this.getSdkAppId();
695
- await this.getVideoRecord();
696
- },
697
- isChatValidate() {
698
- let chatType = this.chatType;
699
- if (!['serverlet', 'client'].includes(chatType)) {
700
- return true;
701
- }
702
- return false;
703
- },
704
- onlyGroup() {
705
- if (this.currentTab == 'queue' && this.isShowPanel) {
706
- this.rightPanelTabActive = 0;
707
- return;
708
- }
709
- if (!this.isShowPanel && this.isShowGroupChat) {
710
- this.rightPanelTabActive = 1;
711
- } else if (this.isShowGroupChat) {
712
- this.rightPanelTabActive = this.$slots.userPanel ? 0 : 1; // 无面板插槽显示群组人员
713
- } else {
714
- this.rightPanelTabActive = 0;
715
- }
716
- },
717
- handleShowPanel(key) {
718
- let { listClassify = [], isListClassify, serverSetting = {} } = this.assemblySetting;
719
- let list = [];
720
- let classify = this.classify;
721
- if (this.lastClassify && this.lastClassify != this.classify) {
722
- classify = this.lastClassify;
723
- }
724
- if (isListClassify != 'Y') {
725
- let { functionSetting = [] } = serverSetting;
726
- list = functionSetting;
727
- } else {
728
- let curList = listClassify.find(item => item.classify == classify);
729
- if (!curList) return false;
730
- list = curList.serverFunctionSetting || [];
731
- }
732
- if (!list.length) return true;
733
- let curItem = list.find(item => item.function == key);
734
- if (!curItem) return true;
735
- return curItem.isChecked == 'Y';
736
- },
737
- // 根据 sessionId 查询 tab classify
738
- getSessionStatus() {
739
- let sessionId = this.defSessionId;
740
- if (!sessionId) return;
741
- return fetch
742
- .get('/chat/service/getSessionStatus', {
743
- params: {
744
- sessionId,
745
- assemblyId: this.assemblyId
746
- }
747
- })
748
- .then(({ data }) => {
749
- if (data.result === 'SUCCESS') {
750
- // status 0 已结束 1 已接入
751
- let { status, classify } = data?.map || {};
752
- if (status === undefined) return;
753
- this._chatSessionStatus = status; // 标识会话状态
754
- status == 1 ? this.setCurrentTab('session') : this.setCurrentTab('end');
755
- classify && this.setClassify(classify);
756
- }
757
- });
758
- },
759
- /* 客服端接入聊天 */
760
- handleServiceAccess() {
761
- return fetch
762
- .post(
763
- '/chat/service/access',
764
- qs.stringify({
765
- assemblyId: this.assemblyId
766
- })
767
- )
768
- .then(({ data }) => {
769
- if (data.result === 'SUCCESS') {
770
- let { isService = true, queueId, username, assembly, status } = data.map;
771
- const behaviour = assembly.settingObj?.behaviour || {};
772
- this.setAssemblySetting(assembly.settingObj);
773
- this.styleType = (this.enableTableStyle && behaviour.style) || this.styleBtns[0].type;
774
- this.styleFold = behaviour.fold || 'N';
775
- if (isService) {
776
- this.queueKey = queueId;
777
- this.setServiceId(username);
778
- if (this.assemblySetting.isListClassify === 'Y') {
779
- if (this.defSessionId && this._chatSessionStatus != -1) {
780
- if (!this.classify) {
781
- this.setClassify(this.classifyList[0]?.classify);
782
- }
783
- } else {
784
- this.setClassify(this.classifyList[0]?.classify);
785
- }
786
- }
787
- }
788
- this.setEnable(isService);
789
- this.loading = false;
790
- this.status = status;
791
- clearInterval(this.heartTimer);
792
- this.heartTimer = setInterval(() => {
793
- fetch.post(
794
- '/chat/service/sessionHeart',
795
- qs.stringify({
796
- assemblyId: this.assemblyId
797
- })
798
- );
799
- }, 10000);
800
- } else {
801
- this.$message.warning(data.resultMsg);
802
- }
803
- });
804
- },
805
-
806
- /** 初始化Socket连接 */
807
- initWebSocket() {
808
- const heartFn = () => {
809
- try {
810
- this.stompClient.send('test');
811
- } catch (err) {
812
- this.stompClient.disconnect();
813
- this.initWebSocket();
814
- }
815
- };
816
- const options = {
817
- headers: { username: this.serviceId },
818
- heartbeatFn: heartFn,
819
- connectCb: () => {
820
- if (this.reConnention > 0) {
821
- this.setMsgList([]);
822
- this.getMsgList();
823
- this.reConnention = 0;
824
- }
825
- this.subscribeMessage();
826
- this.subscribeQueue();
827
- this.subscribeSession();
828
- this.subscribeVideoInvite();
829
- this.subscribeVideoConfirm();
830
- this.subscribeVideoClose();
831
- this.subscribeDelay();
832
- this.subscribeSessionClose();
833
- this.subscribeRecallMessage();
834
- this.subscribeUpdateCountdown();
835
- this.subscribeQueueStatistic();
836
- this.subscribeSessionStatistic();
837
- this.subscribeVideoRecord();
838
- this.subscribeOfflineSessionStatistic();
839
- this.subscribeMessageRecord();
840
- },
841
- errorCb: (_err, count) => {
842
- this.reConnention = count;
843
- this.$message.warning(`断线了,正在重连...`);
844
- }
845
- };
846
- this.stompClient = new ChatSock(`${this.chatURL}/stomp`, options);
847
- },
848
-
849
- subscribeGroupVideo(recordId) {
850
- this.videoGroupSubscribe = this.stompClient.subscribe(`/topic/videoGroupChat/updateStatus/${recordId}`, response => {
851
- this.setVideoListChange(JSON.parse(response.body));
852
- });
853
- },
854
-
855
- /* 订阅排队列表人数及未读消息数 */
856
- subscribeQueueStatistic() {
857
- this.stompClient.subscribe(`/topic/queueStatistic/${this.queueKey}`, response => {
858
- this.setQueueStatistic(JSON.parse(response.body));
859
- });
860
- },
861
-
862
- /* 订阅会话列表人数及未读消息数 */
863
- subscribeSessionStatistic() {
864
- this.stompClient.subscribe(`/user/` + this.serviceId + `/onlineSessionStatistic`, response => {
865
- this.setSessionStatistic(JSON.parse(response.body));
866
- });
867
- },
868
- /* 订阅已结束会话列表人数及未读消息数 */
869
- subscribeOfflineSessionStatistic() {
870
- this.stompClient.subscribe('/user/' + this.serviceId + '/offlineSessionStatistic', response => {
871
- this.setOfflineSessionStatistic(JSON.parse(response.body));
872
- });
873
- },
874
- // 订阅消息已读回执
875
- subscribeMessageRecord() {
876
- this.stompClient.subscribe('/user/' + this.serviceId + '/msgReadStatus', response => {
877
- if (!this.sessionId) return;
878
- let body = JSON.parse(response.body);
879
- if (body?.sessionId !== this.sessionId) return;
880
- const readStatus = body?.readStatus || {};
881
- const keys = Object.keys(readStatus);
882
- if (keys.length < 1) return;
883
- const idxs = {};
884
- let hasSending = false;
885
- const msgList = this.msgList;
886
- msgList.forEach((item, i) => {
887
- const id = item?.id;
888
- if (id) {
889
- idxs[id] = i;
890
- } else if (item.sending) {
891
- hasSending = true; // 存在正在发送的消息
892
- }
893
- });
894
- let notFound = {};
895
- keys.forEach(id => {
896
- const i = idxs[id];
897
- if (typeof i === 'number') {
898
- const item = msgList[i];
899
- msgList.splice(i, 1, {
900
- ...item,
901
- readStatus: readStatus[id]
902
- });
903
- } else {
904
- notFound[id] = readStatus[id];
905
- }
906
- });
907
- this.setMsgRecordCache(hasSending ? Object.freeze(notFound) : {});
908
- });
909
- },
910
-
911
- /* 订阅消息 */
912
- subscribeMessage() {
913
- this.stompClient.subscribe('/user/' + this.serviceId + '/message', response => {
914
- let res = JSON.parse(response.body);
915
- let { from, body, fromName, id, to, sessionId, portrait, readStatus } = res;
916
- if (this.voiceAlert) {
917
- this.$refs.msgTip.play();
918
- }
919
- // 外部链接发送消息
920
- if (from === this.serviceId && this.clientId === to) {
921
- this.setIsAppendMsg(true);
922
- let message = {
923
- readStatus,
924
- content: body,
925
- fromId: from,
926
- fromName,
927
- sessionId: this.sessionId,
928
- id,
929
- portrait
930
- };
931
- this.setMessage(message);
932
- this.appendList([message]);
933
- }
934
-
935
- if (this.sessionId !== sessionId || !this.onChating) {
936
- return;
937
- }
938
- this.setIsAppendMsg(true);
939
- let message = {
940
- senderFlag: from === this.serviceId ? 2 : 1,
941
- readStatus,
942
- content: body,
943
- fromId: from,
944
- fromName,
945
- sessionId: this.sessionId,
946
- id,
947
- portrait
948
- };
949
- this.setMessage(message);
950
- this.appendList([message]);
951
- });
952
- },
953
- /* 订阅消息撤回 */
954
- subscribeRecallMessage() {
955
- this.stompClient.subscribe('/user/' + this.serviceId + '/recallMessage', response => {
956
- let res = JSON.parse(response.body);
957
- let { id } = res;
958
- // 客服撤回
959
- let msgList = this.msgList;
960
- let msg = msgList.find(msg => msg.id == id);
961
- if (msg) {
962
- this.$set(msg, 'recallFlag', 1);
963
- msg.recallFlag = 1;
964
- this.setMsgList(msgList);
965
- }
966
- });
967
- },
968
-
969
- /* 订阅排队列表变化 */
970
- subscribeQueue() {
971
- this.stompClient.subscribe(`/topic/clientQueue/${this.queueKey}`, response => {
972
- if (this.voiceAlert) {
973
- this.$refs.msgTip.play();
974
- }
975
- if (this.currentTab !== 'queue') {
976
- return;
977
- }
978
- this.setIsScrollListChange(true);
979
- this.setListChangeItem(JSON.parse(response.body));
980
- });
981
- },
982
-
983
- /* 订阅会话列表变化 */
984
- subscribeSession() {
985
- this.stompClient.subscribe('/user/' + this.serviceId + '/sessionList', response => {
986
- if (this.currentTab === 'queue') {
987
- return;
988
- }
989
- let body = JSON.parse(response.body);
990
- this.$nextTick(() => {
991
- this.setIsScrollListChange(true);
992
- this.setListChangeItem(body);
993
- if (this.isStaff) {
994
- let refDom = this.$refs['scrollList-session'][0];
995
- refDom?.scrollToItem(body.sessionId);
996
- }
997
- });
998
- this.saveConferenceItem = body;
999
- if (this.isSaveConference) {
1000
- this.setCurScrollItem(this.saveConferenceItem);
1001
- this.isSaveConference = false;
1002
- this.saveConferenceItem = null;
1003
- }
1004
- });
1005
- },
1006
-
1007
- /* 订阅视频邀请 */
1008
- subscribeVideoInvite() {
1009
- this.stompClient.subscribe(`/user/${this.serviceId}/videoChat/invite/notice`, response => {
1010
- let res = JSON.parse(response.body);
1011
- let { sessionId, type, mode, inviteResult } = res;
1012
- if (inviteResult == 0) {
1013
- this.setVideoMembers([]);
1014
- }
1015
- this.setVideoData(res);
1016
- if (this.sessionId == sessionId) {
1017
- if (type == 2) {
1018
- this.setMultiVideoShow(true);
1019
- this.setVideoStatus(1);
1020
- this.setVideoData(res);
1021
- this.setVideoMode(mode);
1022
- } else {
1023
- this.setShowAudio(true);
1024
- this.setVideoData(res);
1025
- this.setVideoMode(mode);
1026
- }
1027
- } else {
1028
- const roomId = res.roomId;
1029
- const callings = this.callings.filter(item => item.roomId !== roomId);
1030
- this.setCallings([res, ...callings]);
1031
- }
1032
- });
1033
- },
1034
-
1035
- /* 订阅视频确认接入 */
1036
- subscribeVideoConfirm() {
1037
- this.stompClient.subscribe(`/user/${this.serviceId}/videoChat/inviteEnter/notice`, response => {
1038
- let res = JSON.parse(response.body);
1039
- this.setMultiVideoShow(false);
1040
- let { inviteResult, callee, sessionId, isCaller, mode, recordId, type } = res;
1041
- let realIndex = this.callings.findIndex(item => item.sessionId === sessionId);
1042
- if (realIndex !== -1) {
1043
- this.callings.splice(realIndex, 1);
1044
- }
1045
- if (isCaller === 0) {
1046
- return;
1047
- }
1048
- if (inviteResult === 0) {
1049
- if (callee !== this.serviceId) {
1050
- this.$message.warning(`${this.i18nText('1.9.329')}!`);
1051
- this.setShowVideo(false);
1052
- this.setShowAudio(false);
1053
- this.setVideoData({});
1054
- this.setVideoMembers([]);
1055
- }
1056
- return;
1057
- }
1058
- if (type == 1) {
1059
- if (mode == 2) {
1060
- this.setShowVideo(true);
1061
- this.setShowAudio(false);
1062
- } else {
1063
- this.setShowVideo(false);
1064
- this.setShowAudio(true);
1065
- }
1066
- }
1067
- this.setVideoData(res);
1068
- this.$nextTick(() => {
1069
- this.setRecordId(recordId);
1070
- });
1071
- // this.setShowVideo(true);
1072
- // this.setCaller(caller);
1073
- // this.setRoomId(roomId);
1074
- // this.setUserSig(userSig);
1075
- // this.$nextTick().then(() => {
1076
- // this.setVideoId(videoId);
1077
- // });
1078
- });
1079
- },
1080
- /**
1081
- * 视频通话记录变更
1082
- */
1083
- subscribeVideoRecord() {
1084
- this.stompClient.subscribe(`/user/${this.serviceId}/videoChat/userRecord`, response => {
1085
- let res = JSON.parse(response.body);
1086
- let { opt, caller } = res;
1087
- if (opt == 0) {
1088
- if (caller.status == 1) {
1089
- this.setVideoRecord([res].concat(this.videoRecord));
1090
- } else {
1091
- this.videoRecord.splice(1, 0, res);
1092
- }
1093
- } else {
1094
- let restList = this.videoRecord.filter(item => item.id != res.id);
1095
- this.setVideoRecord(restList);
1096
- this.getVideoHistoryList();
1097
- }
1098
- });
1099
- },
1100
-
1101
- /* 订阅视频挂断 */
1102
- subscribeVideoClose() {
1103
- this.stompClient.subscribe(`/user/${this.serviceId}/videoChat/hangUp/notice`, () => {
1104
- this.$message.success('通话结束!');
1105
- this.setShowVideo(false);
1106
- this.setRoomId(null);
1107
- this.setRecordId('');
1108
- this.setMultiVideoShow(false);
1109
- this.setVideoData({});
1110
- this.setMuteAudio(false);
1111
- });
1112
- },
1113
-
1114
- /* 订阅延时提醒 */
1115
- subscribeDelay() {
1116
- this.stompClient.subscribe(`/user/${this.serviceId}/countdownNotice`, response => {
1117
- let res = JSON.parse(response.body);
1118
- let realIndex = this.delays.findIndex(item => item.sessionId === res.sessionId);
1119
- if (realIndex === -1 && res.countdown > 0) {
1120
- this.setDelays([res, ...this.delays]);
1121
- }
1122
- });
1123
- },
1124
-
1125
- /* 订阅延时后的会话时长 */
1126
- subscribeUpdateCountdown() {
1127
- this.stompClient.subscribe(`/user/${this.serviceId}/updateCountdown`, response => {
1128
- let res = JSON.parse(response.body);
1129
- let { countdown, sessionId, countdownDesc } = res;
1130
- this.removeDelay(sessionId);
1131
- if (sessionId === this.sessionId) {
1132
- this.setChatTimer({ countdown, countdownDesc });
1133
- }
1134
- });
1135
- },
1136
-
1137
- /* 订阅客服关闭会话 */
1138
- subscribeSessionClose() {
1139
- this.stompClient.subscribe(`/user/${this.serviceId}/closeSession`, response => {
1140
- let res = JSON.parse(response.body);
1141
- let { sessionId } = res;
1142
- if (sessionId !== this.sessionId) return;
1143
- this.$message.success(this.i18nText('1.9.330'));
1144
- this.removeDelay(sessionId);
1145
- this.setOnChating(false);
1146
- this.setSessionId(null);
1147
- this.setMsgList();
1148
- this.setChatTimer();
1149
- this.setSessionEnd(true);
1150
- this.setClientId(null);
1151
- this.setCurScrollItem();
1152
- });
1153
- },
1154
-
1155
- handleTabChange(key) {
1156
- this.setCurrentTab(key);
1157
- this.getVideoRecord();
1158
- },
1159
-
1160
- handleSetting() {
1161
- if (this.showVideo || this.showAudio || this.multiVideoShow) {
1162
- this.$message.warning('本机正在音视频中,请结束后再设置');
1163
- return;
1164
- }
1165
- this.dispatchEvent('open_chatSetting', {
1166
- assemblyId: this.assemblyId
1167
- });
1168
- },
1169
- toggleVoiceAlert() {
1170
- this.setVoiceAlert(!this.voiceAlert);
1171
- },
1172
- toggleVideoVoiceList() {
1173
- this.isVideoVoiceList = !this.isVideoVoiceList;
1174
- },
1175
- closeVideoList(val) {
1176
- this.isVideoVoiceList = val;
1177
- },
1178
- handleKeywordsChange(e) {
1179
- this.setKeywords(e.target.value);
1180
- },
1181
- handleKeywordsSearch(value) {
1182
- if (this.currentTab != 'end') return;
1183
- this.setSearchKeywords(value.target.value);
1184
- },
1185
- handleMemberNameChange(e) {
1186
- this.memberName = e.target.value;
1187
- },
1188
- getImg(name) {
1189
- try {
1190
- return require(`../img/${name}.png`);
1191
- } catch {
1192
- return '';
1193
- }
1194
- },
1195
- /**
1196
- * 剔除延时提醒
1197
- */
1198
- removeDelay(sessionId) {
1199
- let delays = this.delays.filter(item => item.sessionId !== sessionId);
1200
- this.setDelays(delays);
1201
- },
1202
- handleMove(e) {
1203
- let currentTarget = e.currentTarget;
1204
- let disX = e.clientX - currentTarget.offsetLeft;
1205
- let disY = e.clientY - currentTarget.offsetTop;
1206
- document.onmousemove = e => {
1207
- let left = e.clientX - disX;
1208
- let top = e.clientY - disY;
1209
- this.positionX = top;
1210
- this.positionY = left;
1211
- currentTarget.style.left = left + 'px';
1212
- currentTarget.style.right = 'auto';
1213
- currentTarget.style.top = top + 'px';
1214
- };
1215
- document.onmouseup = () => {
1216
- document.onmousemove = null;
1217
- document.onmouseup = null;
1218
- };
1219
- },
1220
- handleClassifyClick(classify) {
1221
- this.setClassify(classify);
1222
- },
1223
- handleAdvancedFilterClose() {
1224
- this.advancedFilterVisible = false;
1225
- },
1226
- isShow(type) {
1227
- if (this.isListClassify) {
1228
- let label;
1229
- if (this.isServer) {
1230
- label = 'serverFunctionSetting';
1231
- } else {
1232
- label = 'clientFunctionSetting';
1233
- }
1234
- let classify = '';
1235
- if (!this.lastClassify) {
1236
- classify = this.classify;
1237
- } else {
1238
- if (this.lastClassify != this.classify) {
1239
- classify = this.lastClassify;
1240
- }
1241
- }
1242
- let funs = this.assemblySetting.listClassify.filter(item => item.classify === classify)[0][label];
1243
- return funs.find(item => item.function === type)?.isChecked === 'Y';
1244
- }
1245
- let label;
1246
- if (this.isServer) {
1247
- label = 'serverSetting';
1248
- } else {
1249
- label = 'clientSetting';
1250
- }
1251
- let funs = this.assemblySetting[label]?.functionSetting || [];
1252
- return funs.find(item => item.function === type)?.isChecked === 'Y';
1253
- },
1254
- getListStatistic() {
1255
- fetch
1256
- .get('/chat/service/getListStatistic', {
1257
- params: {
1258
- assemblyId: this.assemblyId
1259
- }
1260
- })
1261
- .then(({ data }) => {
1262
- if (data.result === 'SUCCESS') {
1263
- let { sessionStatistic, queueStatistic, offlineSessionStatistic } = data.map;
1264
- this.setSessionStatistic(sessionStatistic);
1265
- this.setQueueStatistic(queueStatistic);
1266
- this.setOfflineSessionStatistic(offlineSessionStatistic);
1267
- console.log(this.$data.queueStatistic, '....');
1268
- }
1269
- });
1270
- },
1271
- // 获取视频sdk
1272
- getSdkAppId() {
1273
- fetch
1274
- .get('/chat/access/getMediaAuth', {
1275
- params: {
1276
- orgId: this.userInfo?.sysParams?.orgId
1277
- }
1278
- })
1279
- .then(({ data }) => {
1280
- if (data.result === 'SUCCESS') {
1281
- const { sdkAppId, host, vendor } = data.obj;
1282
- this.setSdkInfo({ sdkAppId, host, vendor });
1283
- // 江苏省
1284
- if (vendor == 3) {
1285
- this.initUniRTC({
1286
- ...data.obj,
1287
- params: {
1288
- assemblyId: this.assemblyId,
1289
- }
1290
- });
1291
- }
1292
- }
1293
- });
1294
- },
1295
- validTalkingEnv() {
1296
- return checkTalkingEnv(this.assemblyId, this.sdkInfo).then(res => {
1297
- if (!res.status) {
1298
- this.$message.error(res.message);
1299
- }
1300
- return res;
1301
- });
1302
- },
1303
- // 获取群组人员
1304
- getGroupMembers() {
1305
- this.onlyGroup();
1306
- fetch
1307
- .get('/chat/service/getSessionMember', {
1308
- params: {
1309
- assemblyId: this.assemblyId,
1310
- sessionId: this.sessionId,
1311
- isExist: 'Y'
1312
- }
1313
- })
1314
- .then(({ data }) => {
1315
- if (data.result === 'SUCCESS') {
1316
- let item = data.list.find(item => item.isOwner === 'Y');
1317
- if (item.userId == this.userInfo?.sysParams?.userId) {
1318
- this.setIsSessionOwner(true);
1319
- } else {
1320
- this.setIsSessionOwner(false);
1321
- }
1322
- let index = data.list.findIndex(item => item.isOwner === 'Y');
1323
- data.list.splice(index, 1);
1324
- const arr = item ? [item] : [];
1325
- this.groupMembers = arr.concat(data.list);
1326
- this.setGroupMembers(this.groupMembers);
1327
- }
1328
- });
1329
- },
1330
- handleMemberRemoveConfirm(item) {
1331
- this.$confirm({
1332
- title: `是否移除${item.userName}?`,
1333
- okText: '确定',
1334
- cancelText: '取消',
1335
- onOk: () => {
1336
- this.handleMemberRemove(item.userId);
1337
- },
1338
- onCancel() {}
1339
- });
1340
- },
1341
- handleMemberRemove(userId) {
1342
- let index = this.groupMembers.findIndex(item => item.userId === userId);
1343
- this.groupMembers.splice(index, 1);
1344
- let params = {
1345
- assemblyId: this.assemblyId,
1346
- sessionId: this.sessionId,
1347
- memberIds: `${userId}`
1348
- };
1349
- fetch.post(`/chat/service/removeSessionMember`, qs.stringify(params)).then(({ data }) => {
1350
- if (data.result === 'SUCCESS') {
1351
- let { sessionType } = data.map || {};
1352
- sessionType && this.setSessionType(sessionType);
1353
- this.$message.success('删除成功!');
1354
- }
1355
- });
1356
- },
1357
- getVideoRecord() {
1358
- fetch
1359
- .get('/chat/service/getVideoRecordList', {
1360
- params: {
1361
- assemblyId: this.assemblyId
1362
- }
1363
- })
1364
- .then(({ data }) => {
1365
- if (data.result === 'SUCCESS') {
1366
- this.setVideoRecord(data.list);
1367
- }
1368
- });
1369
- },
1370
- async handleVideoEnter(videoRecord) {
1371
- if (this.showVideo || this.showAudio || this.multiVideoShow) {
1372
- if (this.videoData.recordId && videoRecord.id === this.videoData.recordId) {
1373
- return;
1374
- } else {
1375
- return this.$message.warning('你当前有正在进行的通话,请退出当前通话后重试。');
1376
- }
1377
- }
1378
- const valid = await this.validTalkingEnv();
1379
- if (!valid.status) {
1380
- return;
1381
- }
1382
- const sip = valid.sip;
1383
- let { isCaller, type, callee, roomId, caller, mode, sessionId, id } = videoRecord;
1384
- // 单人 未接入情况 audio
1385
- // 多人进入房间 multiVideo 页面
1386
- // isCaller=1 时表示为呼叫者,则需要进入视频
1387
- // type 1:单聊 2:群聊
1388
- // status 1:待接听 2:未接听 3:已接
1389
- // mode 1:语音 2:视频
1390
- if (isCaller == 1 && type == 1 && callee.status == 1) {
1391
- let { name: callerName, portrait: callerPortrait, expireTime } = caller;
1392
- let { name: calleeName, portrait: calleePortrait } = callee;
1393
- this.videoInvited = {
1394
- roomId,
1395
- callerName,
1396
- callerPortrait,
1397
- calleerSipKey: sip?.username,
1398
- calleerSipName: sip?.name,
1399
- calleeName,
1400
- calleePortrait,
1401
- calleeSipKey: callee.sipKey,
1402
- calleeSipName: callee.sipName,
1403
- mode,
1404
- type,
1405
- sessionId,
1406
- expireTime,
1407
- recordId: id,
1408
- isCaller
1409
- };
1410
- type == 1 ? this.setShowAudio(true) : this.setMultiVideoShow(true);
1411
- this.setVideoData(this.videoInvited);
1412
- return;
1413
- }
1414
- // 单人 接入 video/audio
1415
- // 多人 multiVideo 页面
1416
- let params = {
1417
- assemblyId: this.assemblyId,
1418
- orgId: this.userInfo?.sysParams?.orgId,
1419
- userId: this.userInfo?.sysParams?.userId,
1420
- sessionId: videoRecord.sessionId,
1421
- recordId: videoRecord.id,
1422
- inviteResult: '1'
1423
- };
1424
- if (sip) {
1425
- params.sipKey = sip.username;
1426
- params.sipName = sip.name;
1427
- }
1428
- fetch
1429
- .post('/chat/access/videoInviteEnter', qs.stringify(params))
1430
- .then(({ data }) => {
1431
- if (data.result === 'SUCCESS') {
1432
- let res = data.obj || data.map;
1433
- if (!res) {
1434
- this.$message.warning(data.resultMsg);
1435
- return;
1436
- }
1437
- // 江苏省接听
1438
- console.log('江苏省接听->videoInviteEnter', this.incoming);
1439
- this.uniRTC && this.acceptCall();
1440
- let { recordId, mode, type } = res;
1441
- this.delCalling(id);
1442
- if (type == 1) {
1443
- mode == 1 ? this.setShowAudio(true) : this.setShowVideo(true);
1444
- this.setVideoData(res);
1445
- this.$nextTick(() => {
1446
- this.setRecordId(recordId);
1447
- });
1448
- } else {
1449
- this.setCurrentSip(sip ? Object.freeze(sip) : null);
1450
- this.setMultiVideoShow(true);
1451
- this.setVideoStatus(2);
1452
- this.setVideoData(res);
1453
- this.setVideoMode(mode);
1454
- this.$nextTick(() => {
1455
- this.setRecordId(recordId);
1456
- });
1457
- return;
1458
- }
1459
- } else {
1460
- this.$message.warning(data.resultMsg);
1461
- }
1462
- })
1463
- .catch(err => {
1464
- this.$message.warning(err?.resultMsg || '无法加入通话');
1465
- });
1466
- },
1467
- delCalling(curId) {
1468
- let callings = this.callings;
1469
- if (!callings.length) return;
1470
- let curIndex = callings.findIndex(v => v.recordId == curId);
1471
- if (curIndex > -1) {
1472
- callings.splice(curIndex, 1);
1473
- }
1474
- },
1475
- addConference(isAddConference) {
1476
- if (this.assemblySetting?.type === 'conference' || isAddConference === true) {
1477
- this.conferenceVisible = true;
1478
- } else if (this.isStaff) {
1479
- this.addMembers('staff');
1480
- }
1481
- },
1482
- handleConferenceModal() {
1483
- this.$refs.addConferenceCom?.addConferenceForm();
1484
- },
1485
- addMembers(type) {
1486
- this.visible = true;
1487
- this.membersType = type;
1488
- this.setAddMemberType(1);
1489
- },
1490
- saveConference(obj) {
1491
- let { classify, sessionId, opt } = obj || {};
1492
-
1493
- if (!sessionId) return;
1494
- // this.setClientParams()
1495
- // opt: 0:新增 1:更新(pc需要根据sessionId从会话列表中找到数据并选中)
1496
- if (opt == 1 && this.isStaff) {
1497
- let scrollListName = 'scrollList-session';
1498
- let refDom = this.$refs[scrollListName][0];
1499
- const processedScrollList = refDom?.processedScrollList || [];
1500
- if (processedScrollList.length) {
1501
- let matchItem = processedScrollList.find(v => v.id == sessionId || v.sessionId == sessionId);
1502
- matchItem && this.setCurScrollItem(matchItem);
1503
- refDom?.getMsgList(matchItem);
1504
- refDom?.scrollToItem(sessionId);
1505
- }
1506
- }
1507
- classify && this.setClassify(classify);
1508
- this.isSaveConference = true;
1509
- this.closeConferenceModal();
1510
- this.setSessionId(sessionId);
1511
- this.$nextTick(() => {
1512
- this.setMsgList();
1513
- this.getMsgList();
1514
- this.setCurrentTab('session');
1515
- this.setLastCurrentTab('session');
1516
- this.setOnChating(true);
1517
- this.setSessionEnd(false);
1518
- this.setQueueItem(null);
1519
- });
1520
- },
1521
- addConferenceMemberList(val) {
1522
- this.conferenceMemberList = val;
1523
- this.visible = false;
1524
- if (!this.isStaff) {
1525
- this.membersType = '';
1526
- return;
1527
- }
1528
- if (!val || !val.length) {
1529
- this.membersType = '';
1530
- return;
1531
- }
1532
- // 添加的有多人时,进入发起群聊弹框。
1533
- if (val.length > 1 || this.membersType == 'conference') {
1534
- this.addConference(true);
1535
- this.membersType = '';
1536
- return;
1537
- }
1538
- this.membersType = '';
1539
- // 添加的只有一个人时,创建单人会话,确定后直接进入对话页面
1540
- // 已经创建了和他的对话时,直接进入。
1541
- let listClassify = this.assemblySetting?.listClassify || [];
1542
- let params = {
1543
- allowAdd: 1,
1544
- classify: this.classify || (listClassify && listClassify[0]?.classify),
1545
- memberList: val,
1546
- title: ''
1547
- };
1548
- this.createConferenceSession(params);
1549
- },
1550
- addStaffMemberList(val) {
1551
- let { userId } = this.userInfo || {};
1552
- let sessionMember =
1553
- this.sessionMember
1554
- .map(item => {
1555
- if (item.userId != userId) {
1556
- return {
1557
- userId: item.userId,
1558
- userName: item.userName
1559
- };
1560
- }
1561
- return null;
1562
- })
1563
- .filter(Boolean) || [];
1564
- let newVal = val.concat(sessionMember);
1565
- this.visible = false;
1566
-
1567
- this.conferenceMemberList = newVal;
1568
- this.membersType = 'staff';
1569
- this.conferenceVisible = true;
1570
- },
1571
- toggleStyleFold() {
1572
- this.styleFold = this.isNormalStyle ? 'Y' : 'N';
1573
- this.saveStyleBehaviour();
1574
- },
1575
- toggleStyleType(type) {
1576
- if (type === this.styleType) return;
1577
- this.styleType = type;
1578
- this.saveStyleBehaviour();
1579
- },
1580
- saveStyleBehaviour() {
1581
- fetch.post(
1582
- `/chat/event/saveBehaviour`,
1583
- qs.stringify({
1584
- assemblyId: this.assemblyId,
1585
- fold: this.styleFold,
1586
- style: this.styleType
1587
- })
1588
- );
1589
- },
1590
- createConferenceSession(params) {
1591
- let url = '/chat/service/createConferenceSession';
1592
- Object.assign(params, {
1593
- assemblyId: this.assemblyId,
1594
- orgId: this.userInfo?.sysParams?.orgId
1595
- });
1596
- fetch({
1597
- method: 'POST',
1598
- url,
1599
- headers: { 'Content-Type': 'application/json; charset=utf-8' },
1600
- data: { ...params }
1601
- }).then(({ data }) => {
1602
- if (data.result === 'SUCCESS') {
1603
- this.saveConference(data.obj);
1604
- } else {
1605
- this.$message.error(data.resultMsg || '保存失败');
1606
- }
1607
- });
1608
- },
1609
- closeConferenceModal() {
1610
- this.membersType = '';
1611
- this.conferenceVisible = false;
1612
- this.conferenceMemberList = [];
1613
- this.$refs.addConferenceCom?.resetParams();
1614
- }
1615
- },
1616
- components: {
1617
- AModal: Modal,
1618
- [Popover.name]: Popover,
1619
- [Spin.name]: Spin,
1620
- [Layout.name]: Layout,
1621
- [Layout.Sider.name]: Layout.Sider,
1622
- [Icon.name]: Icon,
1623
- [Button.name]: Button,
1624
- [Tabs.name]: Tabs,
1625
- [Tabs.TabPane.name]: Tabs.TabPane,
1626
- [Tooltip.name]: Tooltip,
1627
- [Row.name]: Row,
1628
- [Col.name]: Col,
1629
- [Alert.name]: Alert,
1630
- [Input.name]: Input,
1631
- [DatePicker.RangePicker.name]: DatePicker.RangePicker,
1632
- SvgIcon,
1633
- ChatFooter,
1634
- ChatMain,
1635
- ScrollList,
1636
- Video,
1637
- Calling,
1638
- Delay,
1639
- AdvancedFilter,
1640
- AddMembers,
1641
- MultiVideo,
1642
- Audio,
1643
- VideoVoiceList,
1644
- addConference,
1645
- ChatTabsHeader,
1646
- ClassifyTabs,
1647
- UserStatus
1648
- },
1649
- beforeDestroy() {
1650
- if (this.stompClient) {
1651
- this.stompClient.disconnect();
1652
- }
1653
- if (this.heartTimer) {
1654
- clearInterval(this.heartTimer);
1655
- }
1656
- this.$refs.delays?.removeEventListener('mousedown', this.handleMove);
1657
- },
1658
- watch: {
1659
- 'delays.length': {
1660
- immediate: true,
1661
- handler(val, oldVal) {
1662
- if (oldVal > 0) return;
1663
- this.$nextTick().then(() => {
1664
- this.$refs.delays?.addEventListener('mousedown', this.handleMove);
1665
- });
1666
- }
1667
- },
1668
- sessionId: {
1669
- handler(sessionId) {
1670
- if (sessionId) {
1671
- if (this.heartTimer) {
1672
- clearInterval(this.heartTimer);
1673
- }
1674
-
1675
- this.heartTimer = setInterval(() => {
1676
- fetch.post(
1677
- '/chat/service/sessionHeart',
1678
- qs.stringify({
1679
- assemblyId: this.assemblyId,
1680
- sessionId: this.sessionId
1681
- })
1682
- );
1683
- }, 10000);
1684
- this.getGroupMembers();
1685
- if (this.isConference) {
1686
- this.onlyGroup();
1687
- }
1688
- if (this.isSaveConference) {
1689
- this.saveConferenceItem && this.setCurScrollItem(this.saveConferenceItem);
1690
- this.isSaveConference = false;
1691
- this.saveConferenceItem = null;
1692
- }
1693
- } else {
1694
- this.setIsSessionOwner(false);
1695
- }
1696
- }
1697
- },
1698
- recordId: {
1699
- handler(val, old) {
1700
- if (old) {
1701
- this.videoGroupSubscribe.unsubscribe();
1702
- }
1703
- if (val) {
1704
- this.subscribeGroupVideo(val);
1705
- }
1706
- }
1707
- },
1708
- scrollQueueId: {
1709
- immediate: true,
1710
- handler(val) {
1711
- if (val) {
1712
- this.onlyGroup();
1713
- }
1714
- }
1715
- },
1716
- assemblySetting: {
1717
- immediate: true,
1718
- deep: true,
1719
- handler(val) {
1720
- if (!val || !Object.keys(val).length) return;
1721
- let { type } = val;
1722
- if (!type) return;
1723
- if (['conference', 'staff'].includes(type) && this.currentTab != 'end') {
1724
- this.setCurrentTab('session');
1725
- }
1726
- }
1727
- },
1728
- clientParams(v) {
1729
- this.dispatchEvent('change_clientParams', {
1730
- showPanel: this.isShowPanel,
1731
- assemblySetting: this.assemblySetting,
1732
- panelParams: this.panelParams,
1733
- value: JSON.parse(JSON.stringify(v))
1734
- });
1735
- }
1736
- }
1737
- };
1738
- </script>
1739
-
1740
- <style lang="less" scoped>
1741
- .online-chat {
1742
- position: relative;
1743
- height: 100%;
1744
-
1745
- /deep/ .ant-layout {
1746
- height: 100%;
1747
- }
1748
- /deep/ .ant-layout-footer {
1749
- color: rgb(0, 0, 0);
1750
- }
1751
- /deep/ .ant-layout-sider-children {
1752
- display: flex;
1753
- flex-direction: column;
1754
- align-items: center;
1755
- }
1756
- &.chat-style-fold {
1757
- .message-tabs /deep/ .ant-tabs-bar {
1758
- display: none;
1759
- }
1760
- .add-icon {
1761
- padding-top: 12px;
1762
- font-size: 18px;
1763
- }
1764
- /deep/ .message-tabs .ant-tabs-top-content.ant-tabs-content-animated {
1765
- height: 100%;
1766
- }
1767
- .chat-style-set {
1768
- justify-content: center;
1769
- padding-bottom: 8px;
1770
- }
1771
- .chat-style-btns {
1772
- display: none;
1773
- }
1774
- .videoHistory-list.show-list {
1775
- height: 100%;
1776
- }
1777
- }
1778
- }
1779
- .online-chat .message-tabs {
1780
- overflow-x: unset;
1781
- /deep/ .ant-tabs-nav-container,
1782
- /deep/ .ant-tabs-nav-wrap,
1783
- /deep/ .ant-tabs-nav-scroll {
1784
- overflow: unset;
1785
- }
1786
- /deep/ .ant-tabs-top-content.ant-tabs-content-animated {
1787
- height: calc(100% - 75px);
1788
- }
1789
- /deep/ .ant-tabs-top-content > .ant-tabs-tabpane {
1790
- display: flex;
1791
- flex-direction: column;
1792
- }
1793
- /deep/ .ant-tabs-nav-container-scrolling {
1794
- padding-left: 0;
1795
- padding-right: 0;
1796
- }
1797
- /deep/ .ant-tabs-tab-prev-icon-target,
1798
- /deep/ .ant-tabs-tab-next-icon-target {
1799
- display: none;
1800
- font-size: 16px;
1801
- }
1802
- }
1803
- .online-chat {
1804
- .message-list {
1805
- padding: 0;
1806
- border-right: 1px solid #e6e6e6;
1807
- transition: none;
1808
- &.message-list-close {
1809
- position: relative;
1810
- .footer-operate {
1811
- position: absolute;
1812
- bottom: 0;
1813
- }
1814
- }
1815
- background: #f6f6f6;
1816
- .message-search {
1817
- display: flex;
1818
- cursor: pointer;
1819
- padding: 12px;
1820
- border-bottom: 1px solid #e6e6e6;
1821
- .ant-btn {
1822
- height: 40px;
1823
- }
1824
- /deep/ .ant-input {
1825
- height: 100%;
1826
- }
1827
- }
1828
- .message-tabs-wrap {
1829
- position: relative;
1830
- // -webkit-box-flex: 1;
1831
- // -ms-flex: 1;
1832
- flex: 1;
1833
- .count {
1834
- position: absolute;
1835
- top: 20px;
1836
- width: 20px;
1837
- height: 20px;
1838
- text-align: center;
1839
- border-radius: 50%;
1840
- background: #e54949;
1841
- color: #fff;
1842
- }
1843
- .queue-count {
1844
- left: 120px;
1845
- }
1846
- .my-session-count {
1847
- left: 270px;
1848
- }
1849
- }
1850
- .message-tabs.ant-tabs {
1851
- width: 100%;
1852
- flex: 1;
1853
- overflow: hidden;
1854
- &.message-conference-tab {
1855
- /deep/ .ant-tabs-tab {
1856
- width: 50%;
1857
- }
1858
- /deep/ .ant-tabs-nav-container {
1859
- margin-right: 28px;
1860
- }
1861
- }
1862
- // staff 隐藏 tab
1863
- &.message-staff-tab {
1864
- /deep/ .ant-tabs-tab {
1865
- height: 25px;
1866
- line-height: 25px;
1867
- }
1868
- /deep/ .ant-tabs-top-content.ant-tabs-content-animated {
1869
- height: calc(100% - 50px);
1870
- }
1871
- /deep/ .ant-tabs-bar {
1872
- .ant-tabs-nav-container {
1873
- opacity: 0;
1874
- pointer-events: none;
1875
- }
1876
- .ant-tabs-tab-btn-disabled {
1877
- cursor: default;
1878
- }
1879
-
1880
- .ant-tabs-extra-content {
1881
- top: 12px;
1882
- line-height: 25px;
1883
- font-size: 22px;
1884
- }
1885
- }
1886
- }
1887
- /deep/ .ant-tabs-nav-scroll {
1888
- .ant-tabs-nav {
1889
- width: 100%;
1890
- }
1891
- }
1892
- /deep/ .ant-tabs-nav-container {
1893
- border: 1px solid #d5d5d5;
1894
- border-left: 0;
1895
- border-radius: 4px;
1896
- }
1897
- /deep/ .ant-tabs-tab {
1898
- width: 33.33%;
1899
- height: 50px;
1900
- line-height: 50px;
1901
- margin: 0;
1902
- padding: 0;
1903
- text-align: center;
1904
- background: #fff;
1905
- vertical-align: top;
1906
- &:first-child {
1907
- border-top-left-radius: 4px;
1908
- border-bottom-left-radius: 4px;
1909
- }
1910
- &:last-child {
1911
- border-top-right-radius: 4px;
1912
- border-bottom-right-radius: 4px;
1913
- }
1914
- border-left: 1px solid #d5d5d5;
1915
- }
1916
- /deep/ .ant-tabs-tab-active {
1917
- background: #5585f5;
1918
- border-radius: 4px;
1919
- border-color: #5585f5;
1920
- &:after {
1921
- content: '';
1922
- position: absolute;
1923
- top: 0;
1924
- bottom: 0;
1925
- left: 100%;
1926
- width: 1px;
1927
- background-color: #fff;
1928
- z-index: 1;
1929
- }
1930
- .serverinfo-label {
1931
- color: #fff;
1932
- }
1933
- }
1934
- /deep/ .ant-tabs-nav {
1935
- width: 100%;
1936
- float: left;
1937
- }
1938
- /deep/ .ant-tabs-ink-bar {
1939
- height: 0;
1940
- }
1941
- /deep/ .ant-tabs-bar {
1942
- border: none;
1943
- padding: 8px 12px;
1944
- width: 100%;
1945
- margin-bottom: 0;
1946
- }
1947
- /deep/ .ant-tabs-extra-content {
1948
- position: absolute;
1949
- right: 12px;
1950
- top: 16px;
1951
- padding-left: 8px;
1952
- font-size: 18px;
1953
- color: #707070;
1954
- }
1955
- }
1956
- .footer-operate {
1957
- display: inline-flex;
1958
- justify-content: space-around;
1959
- align-items: center;
1960
- width: 100%;
1961
- box-sizing: border-box;
1962
- padding: 0 0 0 8px;
1963
- height: 55px;
1964
- line-height: 55px;
1965
- border-top: 1px solid #f0f0f5;
1966
- &-right {
1967
- flex: 1;
1968
- display: inline-flex;
1969
- justify-content: flex-end;
1970
- height: 100%;
1971
- line-height: 55px;
1972
- .setting-span {
1973
- position: relative;
1974
- z-index: 2;
1975
- }
1976
- span {
1977
- position: relative;
1978
- // flex: 1;
1979
- display: inline-flex;
1980
- justify-content: center;
1981
- padding: 0 10px;
1982
- align-items: center;
1983
- &::after {
1984
- content: '';
1985
- position: absolute;
1986
- right: 0;
1987
- top: 50%;
1988
- transform: translateY(-50%);
1989
- width: 1px;
1990
- background: #ccc;
1991
- height: 22px;
1992
- }
1993
- .svg-icon {
1994
- font-size: 20px;
1995
- cursor: pointer;
1996
- outline: none;
1997
- color: #b5b5b5;
1998
- }
1999
- }
2000
- span:last-child {
2001
- &::after {
2002
- width: 0;
2003
- }
2004
- }
2005
- }
2006
- }
2007
- }
2008
- .videoHistory-list {
2009
- position: absolute;
2010
- top: 0;
2011
- left: 0;
2012
- width: 300px;
2013
- height: 0;
2014
- background: #fff;
2015
- z-index: -1;
2016
- box-shadow: 0px -5px 10px #e0e0e0;
2017
- transition: all 0.5s;
2018
- &.show-list {
2019
- height: calc(100% - 55px);
2020
- z-index: 2;
2021
- }
2022
- }
2023
- /deep/ .ant-layout-footer {
2024
- height: 190px;
2025
- padding: 0;
2026
- background: #fff;
2027
- }
2028
- /deep/ .ant-layout-content {
2029
- background: #fff;
2030
- }
2031
- .overlay {
2032
- position: absolute;
2033
- width: 100%;
2034
- height: 100%;
2035
- top: 0;
2036
- cursor: not-allowed;
2037
- .note {
2038
- display: flex;
2039
- align-items: center;
2040
- justify-content: center;
2041
- height: 60%;
2042
- font-size: 20px;
2043
- }
2044
- }
2045
- .delay-wrapper {
2046
- position: fixed;
2047
- top: 0;
2048
- right: 0;
2049
- z-index: 200001; // 要比 multiVideo 组件层级高
2050
- cursor: pointer;
2051
- &::-webkit-scrollbar {
2052
- width: 5px;
2053
- }
2054
- > div:last-child {
2055
- margin-bottom: 0 !important;
2056
- }
2057
- }
2058
- .serverinfo-label {
2059
- position: relative;
2060
- float: left;
2061
- display: inline-flex;
2062
- flex-direction: column;
2063
- align-items: center;
2064
- justify-content: center;
2065
- height: 100%;
2066
- width: 100%;
2067
- text-overflow: ellipsis;
2068
- white-space: nowrap;
2069
- color: rgb(0, 0, 0, 0.65);
2070
- line-height: 1;
2071
- & + & {
2072
- border-left: 1px solid #d5d5d5;
2073
- }
2074
- .msg-count {
2075
- position: absolute;
2076
- right: 0;
2077
- top: 0;
2078
- display: inline-block;
2079
- min-width: 28px;
2080
- height: 28px;
2081
- line-height: 28px;
2082
- text-align: center;
2083
- border-radius: 14px;
2084
- background: #e54949;
2085
- color: #fff;
2086
- z-index: 1;
2087
- font-size: 20px;
2088
- transform: scale(0.5);
2089
- padding: 0 2px;
2090
- }
2091
- }
2092
- .loading {
2093
- width: 100%;
2094
- height: 100%;
2095
- display: flex;
2096
- align-items: center;
2097
- justify-content: center;
2098
- }
2099
- .video-record {
2100
- background: #fff;
2101
- color: #5585f5;
2102
- line-height: 22px;
2103
- padding: 8px 16px;
2104
- display: flex;
2105
- align-items: center;
2106
- cursor: pointer;
2107
- }
2108
- /deep/ .classify-tabs {
2109
- margin-bottom: 8px;
2110
- }
2111
- .ant-alert {
2112
- line-height: 18px;
2113
- border-radius: 0;
2114
- }
2115
- /deep/ .ant-alert-icon {
2116
- margin-top: -3px;
2117
- }
2118
- .right-panel {
2119
- background: #fff;
2120
- .tab-operate {
2121
- display: flex;
2122
- height: 50px;
2123
- margin: 0 10px;
2124
- padding: 10px 0 0;
2125
- border-radius: 4px;
2126
- cursor: pointer;
2127
- .tab {
2128
- flex: 1;
2129
- line-height: 40px;
2130
- text-align: center;
2131
- font-size: 14px;
2132
- color: #252529;
2133
- border: 1px solid #e1e4eb;
2134
- background: #fff;
2135
- &.active {
2136
- background: #5585f5;
2137
- color: #fff;
2138
- }
2139
- }
2140
- .left {
2141
- border-radius: 4px 0px 0px 4px;
2142
- border-right: none;
2143
- }
2144
- .right {
2145
- border-radius: 0px 4px 4px 0px;
2146
- border-left: none;
2147
- }
2148
- }
2149
- .name-search {
2150
- margin: 0 0 8px;
2151
- }
2152
- .add-member {
2153
- color: #373737;
2154
- margin-bottom: 15px;
2155
- }
2156
- .add {
2157
- display: inline-block;
2158
- width: 48px;
2159
- height: 48px;
2160
- border: 1px solid #e1e4eb;
2161
- border-radius: 4px;
2162
- margin-right: 8px;
2163
- line-height: 48px;
2164
- text-align: center;
2165
- }
2166
- .member-list {
2167
- overflow: auto;
2168
- margin: 0 -10px;
2169
- &::-webkit-scrollbar {
2170
- width: 5px;
2171
- }
2172
- .member-item {
2173
- padding: 0 10px;
2174
- height: 80px;
2175
- display: flex;
2176
- align-items: center;
2177
- img {
2178
- width: 50px;
2179
- height: 50px;
2180
- border-radius: 50%;
2181
- margin-right: 8px;
2182
- }
2183
- .name {
2184
- font-weight: 600;
2185
- color: #212121;
2186
- font-size: 16px;
2187
- }
2188
- .remove {
2189
- margin-left: auto;
2190
- color: #ff1818;
2191
- }
2192
- &:hover {
2193
- background: #f4f4f4;
2194
- }
2195
- }
2196
- }
2197
- }
2198
- .collapse-icon {
2199
- width: 35px;
2200
- height: 76px;
2201
- background: url(../img/left-wrapper.png) no-repeat;
2202
- background-position: -2px center;
2203
- background-size: 46px 76px;
2204
- position: absolute;
2205
- right: 0;
2206
- top: 50%;
2207
- transform: translate(6px, -50%);
2208
- z-index: 1;
2209
- &.fold img {
2210
- transform: rotate(180deg) translateX(-5px);
2211
- }
2212
- }
2213
- }
2214
- .disable-operate {
2215
- position: fixed;
2216
- top: 0;
2217
- bottom: 0;
2218
- left: 0;
2219
- right: 0;
2220
- z-index: 3000000;
2221
- background-color: rgba(0, 0, 0, 0);
2222
- display: flex;
2223
- align-items: center;
2224
- justify-content: center;
2225
- }
2226
- .chat-style-set {
2227
- padding: 8px 12px 0;
2228
- display: flex;
2229
- align-items: center;
2230
- justify-content: flex-end;
2231
- width: 100%;
2232
- &.show-style {
2233
- justify-content: space-between;
2234
- }
2235
- .set-btn-icon {
2236
- font-size: 14px;
2237
- color: #333;
2238
- padding: 6px;
2239
- cursor: pointer;
2240
- display: inline-block;
2241
- line-height: 0;
2242
- &:hover {
2243
- background-color: #e6e6e6;
2244
- border-radius: 3px;
2245
- }
2246
- &.active {
2247
- color: #5585f5;
2248
- }
2249
- }
2250
- .chat-style-btns {
2251
- display: flex;
2252
- background-color: #fff;
2253
- border-radius: 4px;
2254
- }
2255
- .chat-style-btn {
2256
- width: 40px;
2257
- height: 32px;
2258
- cursor: pointer;
2259
- text-align: center;
2260
- line-height: 32px;
2261
- &.active {
2262
- background-color: #5585f5;
2263
- border-radius: 4px;
2264
- }
2265
- }
2266
- }
2267
- .chat-operate-more {
2268
- margin: 8px 0 20px;
2269
- width: 24px;
2270
- height: 24px;
2271
- line-height: 24px;
2272
- text-align: center;
2273
- cursor: pointer;
2274
- &:hover {
2275
- border-radius: 3px;
2276
- background: rgba(213, 213, 213, 0.6);
2277
- }
2278
- .operate-more-icon {
2279
- &,
2280
- &::after,
2281
- &::before {
2282
- width: 4px;
2283
- height: 4px;
2284
- background: rgba(0, 0, 0, 0.6);
2285
- border-radius: 50%;
2286
- }
2287
- position: relative;
2288
- display: inline-block;
2289
- vertical-align: middle;
2290
- &::after,
2291
- &::before {
2292
- content: '';
2293
- position: absolute;
2294
- top: 0;
2295
- }
2296
- &::after {
2297
- left: 100%;
2298
- margin-left: 2px;
2299
- }
2300
- &::before {
2301
- right: 100%;
2302
- margin-right: 2px;
2303
- }
2304
- }
2305
- }
2306
- .chat-operate-group {
2307
- margin: 0 -8px -8px 0;
2308
- overflow: hidden;
2309
- width: 196px;
2310
- font-size: 0;
2311
- }
2312
- .chat-operate-item {
2313
- float: left;
2314
- width: 90px;
2315
- height: 84px;
2316
- display: flex;
2317
- justify-content: center;
2318
- flex-direction: column;
2319
- align-items: center;
2320
- font-size: 14px;
2321
- color: rgba(0, 0, 0, 0.6);
2322
- line-height: 20px;
2323
- margin: 0 8px 8px 0;
2324
- border: 1px solid #e6e6e6;
2325
- border-radius: 4px;
2326
- cursor: pointer;
2327
- &:hover {
2328
- background: #f5f5f5;
2329
- }
2330
- .svg-icon {
2331
- font-size: 24px;
2332
- width: 24px;
2333
- margin-bottom: 8px;
2334
- color: #5585f5;
2335
- }
2336
- }
2337
- .data-picker-clear {
2338
- color: #5585f5;
2339
- cursor: pointer;
2340
- }
2341
- </style>