cnhis-design-vue 2.2.3 → 2.2.6

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