cnhis-design-vue 2.1.78 → 2.1.80

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 (598) hide show
  1. package/.prettierrc.js +27 -27
  2. package/CHANGELOG.md +2953 -2911
  3. package/README.md +90 -90
  4. package/commitlint.config.js +1 -1
  5. package/es/affix/index.js +8 -8
  6. package/es/age/index.js +18 -18
  7. package/es/alert/index.js +8 -8
  8. package/es/anchor/index.js +8 -8
  9. package/es/auto-complete/index.js +8 -8
  10. package/es/avatar/index.js +8 -8
  11. package/es/back-top/index.js +8 -8
  12. package/es/badge/index.js +8 -8
  13. package/es/base/index.js +8 -8
  14. package/es/big-table/index.js +358 -338
  15. package/es/big-table/style.css +1 -1
  16. package/es/breadcrumb/index.js +8 -8
  17. package/es/button/index.js +31 -31
  18. package/es/calendar/index.js +8 -8
  19. package/es/captcha/index.js +7 -7
  20. package/es/card/index.js +8 -8
  21. package/es/carousel/index.js +8 -8
  22. package/es/cascader/index.js +8 -8
  23. package/es/checkbox/index.js +17 -17
  24. package/es/col/index.js +8 -8
  25. package/es/collapse/index.js +8 -8
  26. package/es/color-picker/index.js +5 -5
  27. package/es/comment/index.js +8 -8
  28. package/es/config-provider/index.js +8 -8
  29. package/es/date-picker/index.js +30 -30
  30. package/es/descriptions/index.js +8 -8
  31. package/es/divider/index.js +8 -8
  32. package/es/drag-layout/index.js +5 -5
  33. package/es/drawer/index.js +8 -8
  34. package/es/dropdown/index.js +8 -8
  35. package/es/editor/index.js +1 -1
  36. package/es/ellipsis/index.js +1 -1
  37. package/es/empty/index.js +8 -8
  38. package/es/fabric-chart/index.js +45 -45
  39. package/es/form/index.js +8 -8
  40. package/es/form-model/index.js +8 -8
  41. package/es/form-table/index.js +144 -144
  42. package/es/grid/index.js +4 -4
  43. package/es/index/index.js +3657 -2281
  44. package/es/index/style.css +1 -1
  45. package/es/input/index.js +11 -11
  46. package/es/input-number/index.js +8 -8
  47. package/es/keep-cache/index.js +9 -9
  48. package/es/layout/index.js +8 -8
  49. package/es/list/index.js +8 -8
  50. package/es/locale-provider/index.js +8 -8
  51. package/es/map/index.js +13 -13
  52. package/es/mentions/index.js +8 -8
  53. package/es/menu/index.js +8 -8
  54. package/es/message/index.js +8 -8
  55. package/es/multi-chat/index.js +117 -117
  56. package/es/multi-chat-client/index.js +111 -111
  57. package/es/multi-chat-history/index.js +6 -6
  58. package/es/multi-chat-record/index.js +27 -27
  59. package/es/multi-chat-setting/index.js +43 -43
  60. package/es/multi-chat-sip/index.js +1 -1
  61. package/es/notification/index.js +8 -8
  62. package/es/page-header/index.js +8 -8
  63. package/es/pagination/index.js +8 -8
  64. package/es/popconfirm/index.js +8 -8
  65. package/es/popover/index.js +8 -8
  66. package/es/progress/index.js +8 -8
  67. package/es/radio/index.js +17 -17
  68. package/es/rate/index.js +8 -8
  69. package/es/result/index.js +8 -8
  70. package/es/row/index.js +8 -8
  71. package/es/scale-container/index.js +1 -1
  72. package/es/scale-view/index.js +200 -198
  73. package/es/scale-view/style.css +1 -1
  74. package/es/select/index.js +44 -44
  75. package/es/select-label/index.js +75 -73
  76. package/es/select-label/style.css +1 -1
  77. package/es/select-person/index.js +45 -41
  78. package/es/select-person/style.css +1 -1
  79. package/es/shortcut-setter/index.js +10 -10
  80. package/es/skeleton/index.js +8 -8
  81. package/es/slider/index.js +8 -8
  82. package/es/space/index.js +8 -8
  83. package/es/spin/index.js +8 -8
  84. package/es/statistic/index.js +8 -8
  85. package/es/steps/index.js +8 -8
  86. package/es/switch/index.js +8 -8
  87. package/es/table-filter/index.js +2697 -1347
  88. package/es/table-filter/style.css +1 -1
  89. package/es/tabs/index.js +8 -8
  90. package/es/tag/index.js +9 -9
  91. package/es/time-picker/index.js +8 -8
  92. package/es/timeline/index.js +8 -8
  93. package/es/tooltip/index.js +8 -8
  94. package/es/transfer/index.js +8 -8
  95. package/es/tree/index.js +8 -8
  96. package/es/tree-select/index.js +8 -8
  97. package/es/upload/index.js +8 -8
  98. package/es/utils/clickoutside.js +7 -7
  99. package/es/utils/kty.min-1.0.0.js +5 -5
  100. package/es/utils/time-domain.js +16 -16
  101. package/es/utils/utils-map.js +32 -32
  102. package/es/utils/vexutils.js +27 -27
  103. package/es/verification-code/index.js +2 -2
  104. package/lib/cui.common.js +11438 -9918
  105. package/lib/cui.umd.js +11438 -9918
  106. package/lib/cui.umd.min.js +69 -69
  107. package/package.json +110 -110
  108. package/packages/affix/index.js +12 -12
  109. package/packages/affix/src/Affix.jsx +12 -12
  110. package/packages/age/index.js +27 -27
  111. package/packages/age/src/age/index.vue +139 -139
  112. package/packages/age/src/age-com/index.vue +209 -209
  113. package/packages/alert/index.js +12 -12
  114. package/packages/alert/src/Alert.jsx +11 -11
  115. package/packages/anchor/index.js +18 -18
  116. package/packages/anchor/src/Anchor.jsx +11 -11
  117. package/packages/anchor/src/Link.jsx +11 -11
  118. package/packages/auto-complete/index.js +12 -12
  119. package/packages/auto-complete/src/AutoComplete.jsx +12 -12
  120. package/packages/avatar/index.js +12 -12
  121. package/packages/avatar/src/Avatar.jsx +11 -11
  122. package/packages/back-top/index.js +12 -12
  123. package/packages/back-top/src/BackTop.jsx +11 -11
  124. package/packages/badge/index.js +12 -12
  125. package/packages/badge/src/Badge.jsx +11 -11
  126. package/packages/base/index.js +3 -3
  127. package/packages/big-table/index.js +16 -16
  128. package/packages/big-table/src/BigTable.vue +3205 -3193
  129. package/packages/big-table/src/Fieldset.vue +2067 -2067
  130. package/packages/big-table/src/assets/iconfont/iconfont.css +21 -21
  131. package/packages/big-table/src/assets/style/table-base.less +390 -387
  132. package/packages/big-table/src/assets/style/table-global.less +175 -175
  133. package/packages/big-table/src/components/AutoLayoutButton.vue +307 -307
  134. package/packages/big-table/src/components/NoData.vue +81 -81
  135. package/packages/big-table/src/components/TextOverTooltip.vue +120 -120
  136. package/packages/big-table/src/components/edit-form/EditForm.vue +509 -509
  137. package/packages/big-table/src/components/edit-form/edit-component/config-data/index.js +68 -68
  138. package/packages/big-table/src/components/edit-form/edit-component/edit-date-picker/edit-date-picker.vue +60 -60
  139. package/packages/big-table/src/components/edit-form/edit-component/edit-digital/edit-digital.vue +54 -54
  140. package/packages/big-table/src/components/edit-form/edit-component/edit-input/edit-input.vue +39 -39
  141. package/packages/big-table/src/components/edit-form/edit-component/edit-input-password/edit-input-password.vue +79 -79
  142. package/packages/big-table/src/components/edit-form/edit-component/edit-month-picker/edit-month-picker.vue +37 -37
  143. package/packages/big-table/src/components/edit-form/edit-component/edit-search/edit-search.vue +82 -82
  144. package/packages/big-table/src/components/edit-form/edit-component/edit-search-more/edit-search-more.vue +95 -95
  145. package/packages/big-table/src/components/edit-form/edit-component/edit-select/edit-select.vue +40 -40
  146. package/packages/big-table/src/components/edit-form/edit-component/edit-select-multiple/edit-select-multiple.vue +55 -55
  147. package/packages/big-table/src/components/edit-form/edit-component/edit-switch/edit-switch.vue +43 -43
  148. package/packages/big-table/src/components/edit-form/edit-component/edit-textarea/edit-textarea.vue +41 -41
  149. package/packages/big-table/src/components/edit-form/edit-component/edit-time-picker/edit-time-picker.vue +40 -40
  150. package/packages/big-table/src/components/edit-form/edit-component/mixins/bound-date.js +3 -3
  151. package/packages/big-table/src/components/edit-form/edit-component/mixins/dateType.js +217 -217
  152. package/packages/big-table/src/components/edit-form/edit-component/mixins/item-default.js +639 -639
  153. package/packages/big-table/src/components/edit-form/edit-component/mixins/search.js +1247 -1247
  154. package/packages/big-table/src/components/edit-form/edit-component/register-com.js +26 -26
  155. package/packages/big-table/src/components/edit-form/edit-item/form-event.js +80 -80
  156. package/packages/big-table/src/components/edit-form/edit-item/global-props.js +33 -33
  157. package/packages/big-table/src/components/edit-form/edit-item/index.js +4 -4
  158. package/packages/big-table/src/components/edit-form/edit-item/render-methods.js +28 -28
  159. package/packages/big-table/src/components/edit-form/edit-item/validate-rules.js +463 -463
  160. package/packages/big-table/src/components/edit-form/edit-mixins/form-commom.js +673 -673
  161. package/packages/big-table/src/components/edit-form/edit-mixins/index.js +3 -3
  162. package/packages/big-table/src/components/edit-form/edit-utils/index.js +112 -112
  163. package/packages/big-table/src/components/password-com.vue +58 -58
  164. package/packages/big-table/src/components/player-vod/index.vue +57 -57
  165. package/packages/big-table/src/components/player-vod/player.vue +193 -193
  166. package/packages/big-table/src/components/player-vod/video-list.vue +265 -265
  167. package/packages/big-table/src/components/player-vod/video-modal.vue +126 -126
  168. package/packages/big-table/src/utils/CustomPagination.vue +86 -86
  169. package/packages/big-table/src/utils/batchEditing.js +610 -610
  170. package/packages/big-table/src/utils/bigTableProps.js +108 -108
  171. package/packages/big-table/src/utils/eventBroadcast.js +24 -24
  172. package/packages/big-table/src/utils/format.js +557 -557
  173. package/packages/big-table/src/utils/nestTable.js +109 -109
  174. package/packages/big-table/src/utils/tableParse.js +234 -234
  175. package/packages/breadcrumb/index.js +21 -21
  176. package/packages/breadcrumb/src/Breadcrumb.jsx +11 -11
  177. package/packages/breadcrumb/src/BreadcrumbItem.jsx +11 -11
  178. package/packages/breadcrumb/src/BreadcrumbSeparator.jsx +11 -11
  179. package/packages/button/index.js +21 -21
  180. package/packages/button/src/Button.jsx +11 -11
  181. package/packages/button/src/ButtonGroup.jsx +11 -11
  182. package/packages/button/src/ButtonPrint/components/IdentityVerification.vue +181 -181
  183. package/packages/button/src/ButtonPrint/index.vue +766 -766
  184. package/packages/button/src/ButtonPrint/mixin/his-print.js +95 -95
  185. package/packages/calendar/index.js +12 -12
  186. package/packages/calendar/src/Calendar.jsx +11 -11
  187. package/packages/captcha/index.js +9 -9
  188. package/packages/captcha/src/Captcha.vue +164 -164
  189. package/packages/captcha/src/Index.vue +47 -47
  190. package/packages/captcha/src/SlideVerify.vue +285 -285
  191. package/packages/card/index.js +21 -21
  192. package/packages/card/src/Card.jsx +12 -12
  193. package/packages/card/src/CardGrid.js +7 -7
  194. package/packages/card/src/CardMeta.js +7 -7
  195. package/packages/carousel/index.js +12 -12
  196. package/packages/carousel/src/Carousel.jsx +12 -12
  197. package/packages/cascader/index.js +12 -12
  198. package/packages/cascader/src/Cascader.jsx +11 -11
  199. package/packages/checkbox/index.js +30 -30
  200. package/packages/checkbox/src/Checkbox.jsx +11 -11
  201. package/packages/checkbox/src/CheckboxImg/index.vue +141 -141
  202. package/packages/checkbox/src/Group.jsx +11 -11
  203. package/packages/col/index.js +13 -13
  204. package/packages/col/src/Col.jsx +11 -11
  205. package/packages/collapse/index.js +18 -18
  206. package/packages/collapse/src/Collapse.jsx +11 -11
  207. package/packages/collapse/src/Panel.jsx +11 -11
  208. package/packages/color-picker/index.js +10 -10
  209. package/packages/color-picker/src/color-picker.vue +191 -191
  210. package/packages/color-picker/src/style.less +109 -109
  211. package/packages/comment/index.js +12 -12
  212. package/packages/comment/src/Comment.jsx +11 -11
  213. package/packages/config-provider/index.js +12 -12
  214. package/packages/config-provider/src/ConfigProvider.jsx +11 -11
  215. package/packages/date-picker/index.js +26 -26
  216. package/packages/date-picker/src/DatePicker.jsx +12 -12
  217. package/packages/date-picker/src/MonthPicker.jsx +11 -11
  218. package/packages/date-picker/src/RangePicker.jsx +11 -11
  219. package/packages/date-picker/src/WeekPicker.jsx +11 -11
  220. package/packages/date-picker/src/utils/index.js +374 -374
  221. package/packages/descriptions/index.js +18 -18
  222. package/packages/descriptions/src/Descriptions.jsx +11 -11
  223. package/packages/descriptions/src/Item.jsx +11 -11
  224. package/packages/divider/index.js +12 -12
  225. package/packages/divider/src/Divider.jsx +11 -11
  226. package/packages/drag-layout/DragFormLeftItem.vue +173 -173
  227. package/packages/drag-layout/DragFormRightItem.vue +284 -284
  228. package/packages/drag-layout/I18n-mixins.js +10 -10
  229. package/packages/drag-layout/drag-layout.vue +778 -778
  230. package/packages/drag-layout/index.js +12 -12
  231. package/packages/drawer/index.js +12 -12
  232. package/packages/drawer/src/Drawer.jsx +11 -11
  233. package/packages/dropdown/index.js +12 -12
  234. package/packages/dropdown/src/Dropdown.jsx +11 -11
  235. package/packages/editor/index.js +9 -9
  236. package/packages/ellipsis/index.js +8 -8
  237. package/packages/ellipsis/src/Ellipsis.vue +65 -65
  238. package/packages/empty/index.js +12 -12
  239. package/packages/empty/src/Empty.jsx +11 -11
  240. package/packages/fabric-chart/index.js +9 -9
  241. package/packages/fabric-chart/src/FabricGrid.vue +67 -67
  242. package/packages/fabric-chart/src/components/DropPopup.vue +90 -90
  243. package/packages/fabric-chart/src/components/MouseRightClick.vue +168 -168
  244. package/packages/fabric-chart/src/components/TimeScaleValue.vue +125 -125
  245. package/packages/fabric-chart/src/const/defaultVaule.js +60 -60
  246. package/packages/fabric-chart/src/fabric-chart/FabricLines.vue +617 -617
  247. package/packages/fabric-chart/src/fabric-chart/FabricPolylines.vue +1191 -1191
  248. package/packages/fabric-chart/src/fabric-chart/FabricScaleValue.vue +139 -139
  249. package/packages/fabric-chart/src/fabric-chart/FabricTextGroup.vue +651 -651
  250. package/packages/fabric-chart/src/mixins/fabricCommon.js +81 -81
  251. package/packages/fabric-chart/src/mixins/fabricObject.js +193 -193
  252. package/packages/fabric-chart/src/mixins/type.js +5 -5
  253. package/packages/fabric-chart/src/utils/bus.js +2 -2
  254. package/packages/form/index.js +16 -16
  255. package/packages/form/src/Form.jsx +11 -11
  256. package/packages/form/src/Item.jsx +11 -11
  257. package/packages/form-model/index.js +14 -14
  258. package/packages/form-model/src/FormModel.jsx +11 -11
  259. package/packages/form-model/src/Item.jsx +11 -11
  260. package/packages/form-table/index.js +16 -16
  261. package/packages/form-table/src/FormTable.vue +1110 -1110
  262. package/packages/form-table/src/components/table-component/config-data/index.js +80 -80
  263. package/packages/form-table/src/components/table-component/global-props.js +22 -22
  264. package/packages/form-table/src/components/table-component/index.js +8 -8
  265. package/packages/form-table/src/components/table-component/mixins/bound-date.js +455 -455
  266. package/packages/form-table/src/components/table-component/mixins/dateType.js +217 -217
  267. package/packages/form-table/src/components/table-component/mixins/item-default.js +257 -257
  268. package/packages/form-table/src/components/table-component/mixins/search.js +1242 -1242
  269. package/packages/form-table/src/components/table-component/register-com.js +30 -30
  270. package/packages/form-table/src/components/table-component/table-age/table-age.vue +175 -175
  271. package/packages/form-table/src/components/table-component/table-date-picker/table-date-picker.vue +87 -87
  272. package/packages/form-table/src/components/table-component/table-digital/table-digital.vue +93 -93
  273. package/packages/form-table/src/components/table-component/table-input/table-input.vue +81 -81
  274. package/packages/form-table/src/components/table-component/table-input-password/table-input-password.vue +126 -126
  275. package/packages/form-table/src/components/table-component/table-month-picker/table-month-picker.vue +55 -55
  276. package/packages/form-table/src/components/table-component/table-search/table-search.vue +174 -174
  277. package/packages/form-table/src/components/table-component/table-search-more/table-search-more.vue +191 -191
  278. package/packages/form-table/src/components/table-component/table-select/table-select.vue +64 -64
  279. package/packages/form-table/src/components/table-component/table-select-multiple/table-select-multiple.vue +81 -81
  280. package/packages/form-table/src/components/table-component/table-textarea/table-textarea.vue +76 -76
  281. package/packages/form-table/src/components/table-component/table-time-picker/table-time-picker.vue +55 -55
  282. package/packages/form-table/src/components/table-component/table-tree-select/table-tree-select.vue +135 -135
  283. package/packages/form-table/src/components/table-component/text-over-tooltip/TextOverTooltip.vue +97 -97
  284. package/packages/form-table/src/components/table-item/form-event.js +81 -81
  285. package/packages/form-table/src/components/table-item/global-props.js +27 -27
  286. package/packages/form-table/src/components/table-item/index.js +4 -4
  287. package/packages/form-table/src/components/table-item/render-methods.js +28 -28
  288. package/packages/form-table/src/components/table-item/validate-rules.js +520 -520
  289. package/packages/form-table/src/components/table-mixins/form-commom.js +98 -98
  290. package/packages/form-table/src/components/table-mixins/index.js +3 -3
  291. package/packages/form-table/src/components/table-utils/index.js +112 -112
  292. package/packages/form-table/src/disabledDetail.less +46 -46
  293. package/packages/grid/index.js +10 -10
  294. package/packages/grid/src/grid.js +28 -28
  295. package/packages/icon/index.js +10 -10
  296. package/packages/icon/src/icon.js +13 -13
  297. package/packages/index.js +313 -313
  298. package/packages/input/index.js +30 -30
  299. package/packages/input/src/Group.jsx +11 -11
  300. package/packages/input/src/Input.jsx +11 -11
  301. package/packages/input/src/Password.jsx +11 -11
  302. package/packages/input/src/Search.jsx +11 -11
  303. package/packages/input/src/TextArea.jsx +11 -11
  304. package/packages/input/src/input-quick/components/quick-item.vue +284 -284
  305. package/packages/input/src/input-quick/components/quick-popover.vue +596 -596
  306. package/packages/input/src/input-quick/index.vue +137 -137
  307. package/packages/input-number/index.js +12 -12
  308. package/packages/input-number/src/InputNumber.jsx +11 -11
  309. package/packages/keep-cache/KeepCache.js +236 -236
  310. package/packages/keep-cache/index.css +2 -2
  311. package/packages/keep-cache/index.js +8 -8
  312. package/packages/layout/index.js +27 -27
  313. package/packages/layout/src/Content.jsx +11 -11
  314. package/packages/layout/src/Footer.jsx +11 -11
  315. package/packages/layout/src/Header.jsx +11 -11
  316. package/packages/layout/src/Layout.jsx +11 -11
  317. package/packages/layout/src/Sider.jsx +11 -11
  318. package/packages/list/index.js +21 -21
  319. package/packages/list/src/Item.jsx +11 -11
  320. package/packages/list/src/ItemMeta.jsx +11 -11
  321. package/packages/list/src/List.jsx +11 -11
  322. package/packages/locale-provider/index.js +12 -12
  323. package/packages/locale-provider/src/LocaleProvider.jsx +11 -11
  324. package/packages/map/index.js +9 -9
  325. package/packages/map/src/Map.vue +484 -484
  326. package/packages/map/src/popup-map.vue +53 -53
  327. package/packages/mentions/index.js +18 -18
  328. package/packages/mentions/src/Mentions.jsx +11 -11
  329. package/packages/mentions/src/Option.jsx +11 -11
  330. package/packages/menu/index.js +27 -27
  331. package/packages/menu/src/Divider.jsx +11 -11
  332. package/packages/menu/src/Item.jsx +11 -11
  333. package/packages/menu/src/ItemGroup.jsx +11 -11
  334. package/packages/menu/src/Menu.jsx +11 -11
  335. package/packages/menu/src/SubMenu.jsx +11 -11
  336. package/packages/message/index.js +8 -8
  337. package/packages/modal/index.js +10 -10
  338. package/packages/modal/src/Modal.js +7 -7
  339. package/packages/multi-chat/chat/addConference.vue +200 -200
  340. package/packages/multi-chat/chat/addMembers.vue +411 -411
  341. package/packages/multi-chat/chat/advancedFilter.vue +372 -372
  342. package/packages/multi-chat/chat/calling.vue +246 -246
  343. package/packages/multi-chat/chat/chatFooter.vue +1647 -1647
  344. package/packages/multi-chat/chat/chatHistory.vue +605 -605
  345. package/packages/multi-chat/chat/chatMain.vue +1490 -1490
  346. package/packages/multi-chat/chat/client/index.vue +149 -149
  347. package/packages/multi-chat/chat/delay.vue +177 -177
  348. package/packages/multi-chat/chat/evaluate.vue +343 -343
  349. package/packages/multi-chat/chat/messageRecord.vue +324 -324
  350. package/packages/multi-chat/chat/mixins/NoData.js +20 -20
  351. package/packages/multi-chat/chat/mixins/base.js +97 -97
  352. package/packages/multi-chat/chat/mixins/uniRTCAPI.js +80 -80
  353. package/packages/multi-chat/chat/mixins/viewerOptions.js +67 -67
  354. package/packages/multi-chat/chat/quickReply.vue +439 -439
  355. package/packages/multi-chat/chat/robot/index.vue +312 -312
  356. package/packages/multi-chat/chat/scrollList.vue +1259 -1259
  357. package/packages/multi-chat/chat/videoVoiceList.vue +348 -348
  358. package/packages/multi-chat/chat/voice.vue +431 -431
  359. package/packages/multi-chat/components/avatar.vue +113 -113
  360. package/packages/multi-chat/components/chat-tabs-header.vue +251 -251
  361. package/packages/multi-chat/components/classify-tabs.vue +185 -185
  362. package/packages/multi-chat/components/empty.vue +24 -24
  363. package/packages/multi-chat/components/modal-refuse-reason.vue +112 -112
  364. package/packages/multi-chat/components/modal-sip.vue +160 -160
  365. package/packages/multi-chat/components/modal-user-transfer.vue +98 -98
  366. package/packages/multi-chat/components/msg-describe.vue +138 -138
  367. package/packages/multi-chat/components/msg-picture.vue +68 -68
  368. package/packages/multi-chat/components/msg-prescription.vue +205 -205
  369. package/packages/multi-chat/components/read-record.vue +133 -133
  370. package/packages/multi-chat/components/read-status.vue +34 -34
  371. package/packages/multi-chat/components/user-status.vue +198 -198
  372. package/packages/multi-chat/components/vuecmf-dialog.vue +322 -322
  373. package/packages/multi-chat/index.js +7 -7
  374. package/packages/multi-chat/setting/authority/index.vue +156 -156
  375. package/packages/multi-chat/setting/authority/roleSetting.vue +204 -204
  376. package/packages/multi-chat/setting/baseInfo/index.vue +1343 -1343
  377. package/packages/multi-chat/setting/customerService/batchSelect.vue +403 -403
  378. package/packages/multi-chat/setting/customerService/index.vue +273 -273
  379. package/packages/multi-chat/setting/event/edit/condition.vue +128 -128
  380. package/packages/multi-chat/setting/event/edit/index.vue +437 -437
  381. package/packages/multi-chat/setting/event/edit/notice.vue +129 -129
  382. package/packages/multi-chat/setting/event/edit/strategy.vue +98 -98
  383. package/packages/multi-chat/setting/event/index.vue +249 -249
  384. package/packages/multi-chat/setting/index.vue +269 -269
  385. package/packages/multi-chat/setting/page.vue +14 -14
  386. package/packages/multi-chat/setting/sessionList/index.vue +412 -412
  387. package/packages/multi-chat/setting/sessionList/messageRecord.vue +372 -372
  388. package/packages/multi-chat/setting/userConfig/index.vue +124 -124
  389. package/packages/multi-chat/setting/worktime/index.vue +274 -274
  390. package/packages/multi-chat/store/actions.js +452 -452
  391. package/packages/multi-chat/store/getters.js +380 -380
  392. package/packages/multi-chat/store/helper.js +66 -66
  393. package/packages/multi-chat/store/index.js +50 -50
  394. package/packages/multi-chat/store/mutation.js +305 -305
  395. package/packages/multi-chat/store/state.js +120 -120
  396. package/packages/multi-chat/style/emoji.css +315 -315
  397. package/packages/multi-chat/style/message.mixin.less +38 -38
  398. package/packages/multi-chat/utils/chatSock.js +93 -93
  399. package/packages/multi-chat/utils/compressImage.js +115 -115
  400. package/packages/multi-chat/utils/emoji.json +68 -68
  401. package/packages/multi-chat/utils/index.js +259 -259
  402. package/packages/multi-chat/utils/observer-scroll.js +49 -49
  403. package/packages/multi-chat/utils/panelsetting.js +48 -48
  404. package/packages/multi-chat-client/index.js +7 -7
  405. package/packages/multi-chat-history/index.js +7 -7
  406. package/packages/multi-chat-record/index.js +7 -7
  407. package/packages/multi-chat-setting/index.js +7 -7
  408. package/packages/multi-chat-sip/index.js +6 -6
  409. package/packages/notification/index.js +8 -8
  410. package/packages/page-header/index.js +12 -12
  411. package/packages/page-header/src/PageHeader.jsx +11 -11
  412. package/packages/pagination/index.js +12 -12
  413. package/packages/pagination/src/Pagination.jsx +11 -11
  414. package/packages/popconfirm/index.js +12 -12
  415. package/packages/popconfirm/src/Popconfirm.jsx +11 -11
  416. package/packages/popover/index.js +12 -12
  417. package/packages/popover/src/Popover.jsx +11 -11
  418. package/packages/progress/index.js +12 -12
  419. package/packages/progress/src/Progress.jsx +11 -11
  420. package/packages/radio/index.js +33 -33
  421. package/packages/radio/src/Group.jsx +11 -11
  422. package/packages/radio/src/Radio.jsx +11 -11
  423. package/packages/radio/src/RadioButton.jsx +11 -11
  424. package/packages/radio/src/RadioImg/index.vue +124 -124
  425. package/packages/rate/index.js +12 -12
  426. package/packages/rate/src/Rate.jsx +11 -11
  427. package/packages/result/index.js +12 -12
  428. package/packages/result/src/Result.jsx +11 -11
  429. package/packages/row/index.js +12 -12
  430. package/packages/row/src/Row.jsx +11 -11
  431. package/packages/scale-container/index.js +8 -8
  432. package/packages/scale-container/src/ScaleContainer.vue +197 -197
  433. package/packages/scale-view/NoData.vue +81 -81
  434. package/packages/scale-view/answerParse.vue +133 -133
  435. package/packages/scale-view/customList.vue +801 -801
  436. package/packages/scale-view/data.js +80 -80
  437. package/packages/scale-view/evaluateCountdown.vue +155 -155
  438. package/packages/scale-view/evaluatePage.vue +202 -202
  439. package/packages/scale-view/formitem/data.js +3991 -3991
  440. package/packages/scale-view/formitem/index.js +7 -7
  441. package/packages/scale-view/formitem/r-address.vue +245 -245
  442. package/packages/scale-view/formitem/r-choice.vue +746 -746
  443. package/packages/scale-view/formitem/r-input.vue +93 -93
  444. package/packages/scale-view/formitem/r-prompt.vue +52 -52
  445. package/packages/scale-view/formitem/r-sign.vue +218 -218
  446. package/packages/scale-view/formitem/r-time.vue +285 -285
  447. package/packages/scale-view/formitem/r-upload-custom-list.vue +242 -242
  448. package/packages/scale-view/formitem/r-upload.vue +287 -287
  449. package/packages/scale-view/formitem/sign-com.vue +316 -316
  450. package/packages/scale-view/formitem/text-over-tooltip/TextOverTooltip.vue +98 -98
  451. package/packages/scale-view/index.js +17 -17
  452. package/packages/scale-view/mixin/NoData.js +38 -38
  453. package/packages/scale-view/mixin/addressVal.js +156 -156
  454. package/packages/scale-view/mixin/evaluate.js +146 -146
  455. package/packages/scale-view/mixin/index.js +337 -337
  456. package/packages/scale-view/mixin/judgeTypes.js +267 -267
  457. package/packages/scale-view/scaleView.vue +2017 -2017
  458. package/packages/select/index.js +27 -27
  459. package/packages/select/src/CustomSelect/index.vue +130 -130
  460. package/packages/select/src/OptGroup.jsx +11 -11
  461. package/packages/select/src/Option.jsx +11 -11
  462. package/packages/select/src/Select/Select.vue +231 -231
  463. package/packages/select/src/Select/index.js +12 -12
  464. package/packages/select/src/TableSelect/index.vue +514 -514
  465. package/packages/select-label/index.js +14 -14
  466. package/packages/select-label/label-classify.vue +129 -129
  467. package/packages/select-label/labelFormContent.vue +787 -787
  468. package/packages/select-label/select-label.vue +597 -581
  469. package/packages/select-person/index.js +10 -10
  470. package/packages/select-person/search-tree.vue +373 -373
  471. package/packages/select-person/select-person.vue +1703 -1696
  472. package/packages/shortcut-setter/index.js +12 -12
  473. package/packages/shortcut-setter/src/ShortcutSetter.vue +55 -55
  474. package/packages/shortcut-setter/src/ShortcutSetterItem.vue +85 -85
  475. package/packages/shortcut-setter/src/utils/index.js +63 -63
  476. package/packages/skeleton/index.js +12 -12
  477. package/packages/skeleton/src/Skeleton.jsx +11 -11
  478. package/packages/slider/index.js +12 -12
  479. package/packages/slider/src/Slider.jsx +11 -11
  480. package/packages/space/index.js +12 -12
  481. package/packages/space/src/Space.jsx +11 -11
  482. package/packages/spin/index.js +12 -12
  483. package/packages/spin/src/Spin.jsx +11 -11
  484. package/packages/statistic/index.js +18 -18
  485. package/packages/statistic/src/Countdown.jsx +11 -11
  486. package/packages/statistic/src/Statistic.jsx +11 -11
  487. package/packages/steps/index.js +18 -18
  488. package/packages/steps/src/Step.jsx +11 -11
  489. package/packages/steps/src/Steps.jsx +11 -11
  490. package/packages/switch/index.js +12 -12
  491. package/packages/switch/src/Switch.jsx +11 -11
  492. package/packages/table-filter/index.js +27 -27
  493. package/packages/table-filter/src/base-search-com/BaseSearch.vue +2622 -2630
  494. package/packages/table-filter/src/classification/Classification-com.vue +1760 -1760
  495. package/packages/table-filter/src/classification/search-class-name.vue +266 -266
  496. package/packages/table-filter/src/classification/search-professional-model.vue +680 -680
  497. package/packages/table-filter/src/components/TextOverTooltip.vue +120 -107
  498. package/packages/table-filter/src/components/age-com/index.vue +205 -205
  499. package/packages/table-filter/src/components/button-group/ButtonGroup.vue +162 -162
  500. package/packages/table-filter/src/components/button-icon/button-icon.js +33 -33
  501. package/packages/table-filter/src/components/button-icon/getBtnIcon.js +34 -34
  502. package/packages/table-filter/src/components/c-tree-select/tree-select.vue +336 -336
  503. package/packages/table-filter/src/components/checkbox-group/CheckboxGroup.vue +53 -0
  504. package/packages/table-filter/src/components/drop-button/drop-button.vue +224 -224
  505. package/packages/table-filter/src/components/drop-button/head-btn-icon.js +33 -33
  506. package/packages/table-filter/src/components/drop-view/drop-view.vue +89 -89
  507. package/packages/table-filter/src/components/multi-select/multi-select.vue +242 -236
  508. package/packages/table-filter/src/components/out-quick-search/out-quick-search.vue +232 -346
  509. package/packages/table-filter/src/components/range-age/index.vue +171 -172
  510. package/packages/table-filter/src/components/render-widget/components/CheckboxGroup.vue +51 -51
  511. package/packages/table-filter/src/components/render-widget/components/DateRangeQuick.vue +212 -0
  512. package/packages/table-filter/src/components/render-widget/components/NumberRange.vue +145 -0
  513. package/packages/table-filter/src/components/render-widget/components/Select.vue +50 -50
  514. package/packages/table-filter/src/components/render-widget/components/SelectDynamic.vue +304 -0
  515. package/packages/table-filter/src/components/render-widget/components/index.js +7 -7
  516. package/packages/table-filter/src/components/render-widget/enums.js +34 -29
  517. package/packages/table-filter/src/components/render-widget/index.vue +124 -91
  518. package/packages/table-filter/src/components/render-widget/mixins/dynamic-method.js +158 -0
  519. package/packages/table-filter/src/components/render-widget/widgetCfgMaps.js +245 -140
  520. package/packages/table-filter/src/components/search-condition/SearchCondition.vue +1907 -1907
  521. package/packages/table-filter/src/components/search-condition/fieldTypeList.js +169 -169
  522. package/packages/table-filter/src/components/search-filter/SearchFilter.vue +280 -278
  523. package/packages/table-filter/src/components/search-modal/set-classification.vue +336 -336
  524. package/packages/table-filter/src/components/table-modal/TableModal.vue +477 -477
  525. package/packages/table-filter/src/const/dataOptions.js +43 -43
  526. package/packages/table-filter/src/const/index.js +1 -1
  527. package/packages/table-filter/src/index.vue +584 -584
  528. package/packages/table-filter/src/mixins/mixins.js +773 -714
  529. package/packages/table-filter/src/mixins/out-quick-method.js +123 -0
  530. package/packages/table-filter/src/mixins/renderWidget.js +97 -89
  531. package/packages/table-filter/src/mixins/tableSearchCon.js +128 -128
  532. package/packages/table-filter/src/mixins/wordBookutils.js +113 -113
  533. package/packages/table-filter/src/quick-search/QuickSearch.vue +2190 -2167
  534. package/packages/tabs/index.js +18 -18
  535. package/packages/tabs/src/TabPane.jsx +11 -11
  536. package/packages/tabs/src/Tabs.jsx +11 -11
  537. package/packages/tag/index.js +21 -21
  538. package/packages/tag/src/CheckableTag.jsx +11 -11
  539. package/packages/tag/src/Tag.jsx +11 -11
  540. package/packages/tag/src/TagGroup.vue +621 -621
  541. package/packages/time-picker/index.js +12 -12
  542. package/packages/time-picker/src/TimePicker.jsx +11 -11
  543. package/packages/timeline/index.js +14 -14
  544. package/packages/timeline/src/Item.jsx +11 -11
  545. package/packages/timeline/src/Timeline.jsx +11 -11
  546. package/packages/tooltip/index.js +12 -12
  547. package/packages/tooltip/src/Tooltip.jsx +11 -11
  548. package/packages/transfer/index.js +12 -12
  549. package/packages/transfer/src/Transfer.jsx +11 -11
  550. package/packages/tree/index.js +18 -18
  551. package/packages/tree/src/Tree.jsx +11 -11
  552. package/packages/tree/src/TreeNode.jsx +11 -11
  553. package/packages/tree-select/index.js +18 -18
  554. package/packages/tree-select/src/TreeNode.jsx +11 -11
  555. package/packages/tree-select/src/TreeSelect.jsx +11 -11
  556. package/packages/upload/chunk-upload/chunk-upload-new.vue +1001 -1001
  557. package/packages/upload/chunk-upload/vod-chunk-upload.vue +749 -749
  558. package/packages/upload/chunk-upload/vod-upload-modal.vue +100 -100
  559. package/packages/upload/index.js +12 -12
  560. package/packages/upload/src/Upload.jsx +11 -11
  561. package/packages/verification-code/SlideVerify.vue +306 -306
  562. package/packages/verification-code/index.js +17 -17
  563. package/packages/verification-code/verification-code.vue +147 -147
  564. package/src/component/player-vod/index.vue +57 -57
  565. package/src/component/player-vod/player.vue +192 -192
  566. package/src/component/player-vod/video-list.vue +262 -262
  567. package/src/component/player-vod/video-modal.vue +128 -128
  568. package/src/component/select-options/index.vue +430 -430
  569. package/src/component/select-pages/index.vue +95 -95
  570. package/src/component/svg/index.vue +59 -59
  571. package/src/core/create.js +6 -6
  572. package/src/core/event.js +23 -23
  573. package/src/core/table-methods.js +444 -444
  574. package/src/directive/flexibleResize.js +151 -151
  575. package/src/directive/preventReClick.js +12 -12
  576. package/src/directive/scroll.js +230 -230
  577. package/src/global/variable.js +2 -2
  578. package/src/style/normalize.css +424 -424
  579. package/src/style/style.less +49 -49
  580. package/src/utils/UniRTCv2.js +626 -626
  581. package/src/utils/chatFetch.js +61 -61
  582. package/src/utils/clickoutside.js +75 -75
  583. package/src/utils/crypto.js +25 -25
  584. package/src/utils/index.js +81 -81
  585. package/src/utils/kty-sdk.js +582 -582
  586. package/src/utils/kty.min-1.0.0.js +14378 -14378
  587. package/src/utils/sip-device.js +79 -79
  588. package/src/utils/time-domain.js +249 -249
  589. package/src/utils/trtc.js +1 -1
  590. package/src/utils/utils-map.js +485 -485
  591. package/src/utils/vexutils.js +836 -836
  592. package/.idea/cnhis-design-vue.iml +0 -12
  593. package/.idea/codeStyles/Project.xml +0 -57
  594. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  595. package/.idea/git_toolbox_prj.xml +0 -15
  596. package/.idea/inspectionProfiles/Project_Default.xml +0 -6
  597. package/.idea/modules.xml +0 -8
  598. package/.idea/vcs.xml +0 -6
@@ -1,1343 +1,1343 @@
1
- <template>
2
- <div class="chat-base-info">
3
- <h3 class="page-title">{{ i18nText('2.4.3.1') }}</h3>
4
- <div class="main-form">
5
- <a-form :form="form">
6
- <div class="functional-module" v-if="!isStaff">
7
- <span class="title">{{ i18nText('1.9.401') }}</span>
8
- <a-form-item>
9
- <a-checkbox @change="handleTimeSettingShow" :checked="showTimeSetting">{{ i18nText('1.9.402') }}</a-checkbox>
10
- <a-checkbox v-model="readStatus">已读回执</a-checkbox>
11
- <a-checkbox v-model="lineUpNotice">排队提醒</a-checkbox>
12
- </a-form-item>
13
- <template v-if="showTimeSetting">
14
- <a-row class="time-setting">
15
- <a-col :span="12">
16
- <a-form-item :label="i18nText('1.9.403')">
17
- <a-input-number v-decorator="['timeLengthHours']" :min="0" :max="99" />
18
- <span class="setting-hours-text">小时</span>
19
- <a-input-number v-decorator="['timeLengthMins']" :min="0" :max="59" />
20
- {{ i18nText('2.2.6.6') }}
21
- </a-form-item>
22
- </a-col>
23
- <a-col :span="8">
24
- <a-form-item :label="i18nText('1.9.405')" class="ASC_DESC">
25
- <a-radio-group v-decorator="['showMode']">
26
- <a-radio value="ASC">{{ i18nText('1.9.406') }}</a-radio>
27
- <a-radio value="DESC">{{ i18nText('1.9.407') }}</a-radio>
28
- </a-radio-group>
29
- </a-form-item>
30
- </a-col>
31
- </a-row>
32
- <a-form-item style="margin-left: 20px;">
33
- <a-checkbox @change="handleTimeDelayShow" :checked="showTimeDelay">{{ i18nText('1.9.408') }}</a-checkbox>
34
- </a-form-item>
35
- <template v-if="showTimeDelay">
36
- <a-row class="delayed-setting">
37
- <a-col :span="12">
38
- <a-form-item :label="i18nText('1.9.409')">
39
- <a-input-number :precision="0" :min="1" v-decorator="['delayed-timeLength']" style="width: 80px;"></a-input-number>
40
- <span class="unit">{{ i18nText('2.2.6.6') }}</span>
41
- </a-form-item>
42
- </a-col>
43
- <a-col :span="10">
44
- <a-form-item :label="i18nText('1.9.410')">
45
- <a-input-number :precision="0" :min="1" v-decorator="['rightOffRemindTime']" style="width: 80px;" @blur="handleRightOffRemindTimeBlur"></a-input-number>
46
- <span class="unit">{{ i18nText('1.9.411') }}</span>
47
- </a-form-item>
48
- </a-col>
49
- </a-row>
50
- </template>
51
- </template>
52
- </div>
53
- <div class="functional-module">
54
- <span class="title">{{ i18nText('1.9.412') }}</span>
55
- <a-form-item :label="i18nText('1.9.413')" class="server-form-item" v-if="!isStaff">
56
- <template v-for="item in serverInfo">
57
- <div :key="item.key" v-if="item.type === 'TEXT'" class="serverinfo-wrapper">
58
- <a-tooltip placement="top">
59
- <template slot="title">{{ item.title }}</template>
60
- <span class="serverinfo-label">{{ item.title }}:</span>
61
- </a-tooltip>
62
- <a-input v-decorator="[item.key]" class="title-input" allowClear></a-input>
63
- </div>
64
- </template>
65
- </a-form-item>
66
- <a-form-item :label="i18nText('1.9.414')" v-if="!isStaff">
67
- <template v-for="item in serverInfo">
68
- <div :key="item.key" v-if="item.type === 'BUTTON'" class="serverinfo-wrapper">
69
- <a-tooltip placement="top">
70
- <template slot="title">{{ item.title }}</template>
71
- <span class="serverinfo-label">{{ item.title }}:</span>
72
- </a-tooltip>
73
- <a-input v-decorator="[item.key]" class="title-input" allowClear></a-input>
74
- </div>
75
- </template>
76
- </a-form-item>
77
- <a-form-item :label="i18nText('1.9.415')" v-if="queryTimeSettingList.length > 0">
78
- <!-- <a-checkbox-group
79
- :options="queryTimeSettingList"
80
- v-decorator="[`queryTimeSetting`]"
81
- />-->
82
- <a-radio-group :options="queryTimeSettingList" v-decorator="[`queryTimeSetting`]"></a-radio-group>
83
- </a-form-item>
84
- <a-form-item :label="i18nText('1.9.416')">
85
- <a-checkbox-group v-if="isListClassify !== 'Y'" :options="functionList" v-decorator="[`functionSetting`]" />
86
- </a-form-item>
87
- <template v-if="isListClassify === 'Y'">
88
- <div v-for="(item, index) in listClassify" :key="index" class="classify-wrapper">
89
- <!-- <a-checkbox
90
- @change="e => handleClassifyToggle(item, e)"
91
- :checked="item.isChecked === 'Y'"
92
- ></a-checkbox>-->
93
- <div class="classify-item">
94
- <div class="statistic">
95
- <div>
96
- <span class="name">{{ i18nText('1.9.417') }}:</span>
97
- <svg-icon :icon-class="item.icon" style="font-size: 20px;margin-right: 8px;"></svg-icon>
98
- <a-input v-model="item.name" allowClear style="width: 150px;"></a-input>
99
- <a-checkbox v-if="item.isStatistic !== 'NOT'" style="width: 100px;margin-left: 10px;" @change="e => handleStatisticToggle(item, e)" :checked="item.isStatistic === 'Y'">{{
100
- i18nText('1.9.418')
101
- }}</a-checkbox>
102
- <a-checkbox style="width: 100px;margin-left: 10px;" v-model="item.enable">启用</a-checkbox>
103
- </div>
104
- <a-tooltip placement="top">
105
- <template slot="title">上移</template>
106
- <a-icon v-if="listClassify.length > 1" @click="handleGroupUp(index)" type="up" style="margin-right: 10px;" />
107
- </a-tooltip>
108
- </div>
109
- <div class="server">
110
- <span class="name">{{ i18nText('1.9.419') }}</span>
111
- <a-checkbox-group :options="item.serverfunctionList" v-model="item.serverfunctions" />
112
- </div>
113
- <div class="client">
114
- <span class="name">{{ i18nText('1.9.420') }}</span>
115
- <a-checkbox-group :options="item.clientfunctionList" v-model="item.clientfunctions" />
116
- </div>
117
- </div>
118
- </div>
119
- </template>
120
- <!-- 问诊TAB栏 -->
121
- <a-form-item :label="i18nText('1.1.8.1.8') + '-' + i18nText('1.10.232')" v-if="!isStaff">
122
- <template v-if="tabBarSetting.mobileSetting && tabBarSetting.mobileSetting.list">
123
- <a-checkbox
124
- v-for="(item, index) in tabBarSetting.mobileSetting.list"
125
- :key="index"
126
- :disabled="!tabBarMobileEnable || item.isMsgBar == 'Y'"
127
- :checked="item.isChecked == 'Y'"
128
- @input="v => handleCheckInput(v, item)"
129
- >
130
- {{ item.content }}
131
- </a-checkbox>
132
- </template>
133
- </a-form-item>
134
- <a-form-item :label="i18nText('1.9.421')" v-if="!isStaff">
135
- <a-table bordered :columns="columns" :dataSource="serviceState" :pagination="false" :rowKey="getRowkey">
136
- <template slot="operation" slot-scope="text, record">
137
- <a-switch
138
- :disabled="['ON-LINE', 'OFF-LINE'].includes(record.status)"
139
- :checkedChildren="i18nText('1.9.422')"
140
- :unCheckedChildren="i18nText('1.1.1.1.7')"
141
- :checked="record.enable"
142
- @change="() => handleStatusChange(record)"
143
- />
144
- </template>
145
-
146
- <template slot="icon" slot-scope="text, record">
147
- <svg-icon v-if="record.icon" :icon-class="record.icon" style="font-size:16px;"></svg-icon>
148
- </template>
149
- </a-table>
150
- </a-form-item>
151
- <a-form-item :label="i18nText('1.9.698')" v-if="toolbarList.length > 0">
152
- <!-- <a-checkbox-group
153
- :options="toolbarList"
154
- v-decorator="[`toolbar`]"
155
- /> -->
156
- <a-checkbox-group v-decorator="[`toolbar`]">
157
- <a-row>
158
- <a-col>
159
- <span style="display: inline-block;width: 70px;">PC:</span>
160
- <a-checkbox @change="toolbarChange(item, $event)" :value="item.value" v-for="(item, index) in toolbarList.filter(item => item.source === 'PC')" :key="index">
161
- {{ item.label }}
162
- </a-checkbox>
163
- </a-col>
164
- <a-col>
165
- <span style="display: inline-block;width: 70px;">MOBILE:</span>
166
- <a-checkbox @change="toolbarChange(item, $event)" :value="item.value" v-for="(item, index) in toolbarList.filter(item => item.source === 'MOBILE')" :key="index">
167
- {{ item.label }}
168
- </a-checkbox>
169
- </a-col>
170
- </a-row>
171
- </a-checkbox-group>
172
- </a-form-item>
173
- <a-form-item :label="i18nText('1.9.699')" v-if="toolbarList.length > 0">
174
- <a-checkbox-group v-decorator="[`closedToolbar`]">
175
- <a-row>
176
- <a-col>
177
- <span style="display: inline-block;width: 70px;">PC:</span>
178
- <a-checkbox :value="item.value" v-for="(item, index) in closedToolbarList.filter(item => item.source === 'PC')" :key="index">
179
- {{ item.label }}
180
- </a-checkbox>
181
- </a-col>
182
- <a-col>
183
- <span style="display: inline-block;width: 70px;">MOBILE:</span>
184
- <a-checkbox :value="item.value" v-for="(item, index) in closedToolbarList.filter(item => item.source === 'MOBILE')" :key="index">
185
- {{ item.label }}
186
- </a-checkbox>
187
- </a-col>
188
- </a-row>
189
- </a-checkbox-group>
190
- </a-form-item>
191
- </div>
192
- <div class="functional-module" v-if="isListClassify !== 'Y' && !isStaff">
193
- <span class="title">{{ i18nText('1.9.424') }}</span>
194
- <a-form-item :label="i18nText('1.9.425')">
195
- <a-checkbox-group :options="clientFunctionList" v-decorator="[`clientFunctionSetting`]" />
196
- </a-form-item>
197
- </div>
198
- <div class="functional-module" v-if="!isStaff">
199
- <span class="title" style="display: inline-block;margin-bottom: 10px;">
200
- {{ i18nText('1.9.426') }}
201
- <a-checkbox @change="handleEvaluate" :disabled="!evaluateId" :checked="evaluate"></a-checkbox>
202
- </span>
203
- </div>
204
- <div class="functional-module" v-if="!isConference && !isStaff">
205
- <span class="title" style="display: inline-block;margin-bottom: 10px;">
206
- {{ i18nText('1.9.427') }}
207
- <!-- <a-checkbox @change="handleBotSettingShow" :checked="showBotSetting"></a-checkbox> -->
208
- </span>
209
- <!-- <a-row class="bot-setting" v-if="showBotSetting">
210
- <a-col :span="4">
211
- <a-form-item label="secretId">
212
- <a-input v-decorator="['secretId']" style="width: 150px;"></a-input>
213
- </a-form-item>
214
- </a-col>
215
- <a-col :span="5">
216
- <a-form-item label="secretKey">
217
- <a-input v-decorator="['secretKey']" style="width: 150px;"></a-input>
218
- </a-form-item>
219
- </a-col>
220
- </a-row>
221
-
222
- <a-row class="bot-setting" v-if="showBotSetting">
223
- <a-form-item label="botId">
224
- <a-input v-decorator="['botId']" style="width: 150px;"></a-input>
225
- </a-form-item>
226
- </a-row> -->
227
- <a-row class="bot-setting">
228
- <a-form-item label="选择机器人">
229
- <a-select v-decorator="['robotId']" :placeholder="'选择机器人'" style="width: 200px;" allowClear showSearch :filterOption="filterOption">
230
- <a-select-option v-for="robot in robotList" :key="robot.id" :value="robot.id">{{ robot.name }}</a-select-option>
231
- </a-select>
232
- </a-form-item>
233
- </a-row>
234
- <a-row class="bot-setting">
235
- <a-form-item>
236
- <a-radio-group v-decorator="['mode']">
237
- <a-radio value="ROBOT_CHAT">机器人和人工客服</a-radio>
238
- <a-radio value="ROBOT">仅机器人</a-radio>
239
- </a-radio-group>
240
- </a-form-item>
241
- </a-row>
242
- </div>
243
- <div class="functional-module">
244
- <span class="title" style="display: block;margin-bottom: 10px;">
245
- 公共短语
246
- </span>
247
- <a-select style="width: 300px;margin-top: 15px;" mode="multiple" v-model="chatPublicCategory" showSearch placeholder="请选择">
248
- <a-select-option v-for="item in chatPublicCategoryList" :key="item.id" :value="item.id">{{ item.name }}</a-select-option>
249
- </a-select>
250
- </div>
251
- <div class="functional-module">
252
- <span class="title">{{ i18nText('1.9.428') }}</span>
253
- <div class="broadcaste-wrap" v-for="(b, key) in broadcastList" :key="b.type">
254
- <div class="broadcaste-title">
255
- <a-switch v-model="b.isChecked" :checkedChildren="i18nText('1.9.422')" :unCheckedChildren="i18nText('1.1.1.1.7')" />
256
- <span>{{ key === 'PC' ? i18nText('1.9.429') : i18nText('1.1.8.1.8') }}</span>
257
- <a-icon type="plus-circle" theme="filled" style="color: green; fontSize: 18px;" @click="addBroadcast(b.type, b.list)" />
258
- </div>
259
- <ul>
260
- <li v-for="(v, i) in b.list" :key="i" class="broadcaste-item">
261
- <div>
262
- <span class="item-title">{{ i18nText('3.19.5') }}</span>
263
- <a-input v-model="v.content" allowClear />
264
- </div>
265
- <div>
266
- <span class="item-title">{{ i18nText('2.22.8.2') }}</span>
267
- <a-input v-model="v.url" allowClear />
268
- </div>
269
- <svg-icon @click="deleteBroadcast(i, b.list)" class="form-action svg-icon-btn" icon-class="xitongtubiaoliebiaocaozuoanniushanchushixin" style="margin-left: 4px;" />
270
- </li>
271
- </ul>
272
- </div>
273
- </div>
274
- <div class="functional-module" v-if="!isStaff">
275
- <span class="title" style="display: inline-block;margin-bottom: 10px;"> {{ i18nText('1.9.678') }}: </span>
276
- <ul>
277
- <li v-for="(item, i) in refuseReasonList" :key="i" class="refuse-item">
278
- <a-input v-model.trim="item.text" :maxLength="15"></a-input>
279
- <svg-icon class="form-action svg-icon-btn" icon-class="xitongtubiaoliebiaocaozuoanniushanchushixin" @click="refuseReasonDel(i)" />
280
- </li>
281
- </ul>
282
- <a-button class="refuse-add-btn" type="link" size="small" :disabled="refuseReasonList.length > 4" @click="refuseReasonAdd">
283
- <svg-icon icon-class="xinzengwenjian" style="margin-right:6px" />
284
- 添加
285
- </a-button>
286
- </div>
287
- <div class="functional-module" v-if="!isStaff">
288
- <span class="title" style="display: inline-block;margin-bottom: 10px;">转接原因: </span>
289
- <ul>
290
- <li v-for="(item, i) in transferReasonList" :key="i" class="refuse-item">
291
- <a-input v-model.trim="item.text" :maxLength="15"></a-input>
292
- <svg-icon class="form-action svg-icon-btn" icon-class="xitongtubiaoliebiaocaozuoanniushanchushixin" @click="transferReasonDel(i)" />
293
- </li>
294
- </ul>
295
- <a-button class="refuse-add-btn" type="link" size="small" :disabled="transferReasonList.length > 4" @click="transferReasonAdd">
296
- <svg-icon icon-class="xinzengwenjian" style="margin-right:6px" />
297
- 添加
298
- </a-button>
299
- </div>
300
- <div class="functional-module" v-if="!isStaff">
301
- <span class="title" style="display: inline-block;margin-bottom: 10px;">
302
- 环境变量设置:
303
- </span>
304
- <a-row v-for="(item, index) in variableSetting" :key="index">
305
- <a-col :span="4">
306
- <a-form-item label="变量名称">
307
- <a-input v-model="item.name" style="width: 200px;" disabled></a-input>
308
- </a-form-item>
309
- </a-col>
310
- <a-col :span="4">
311
- <a-form-item label="变量值">
312
- <a-input v-model="item.value" style="width: 200px"></a-input>
313
- </a-form-item>
314
- </a-col>
315
- <a-col :span="5">
316
- <a-form-item label="备注">
317
- <a-input v-model="item.remark" style="width: 200px;" disabled></a-input>
318
- </a-form-item>
319
- </a-col>
320
- </a-row>
321
- </div>
322
- <div class="functional-module rightClickSetting">
323
- <span class="title" style="display: inline-block;margin-bottom: 10px;">
324
- 右键设置
325
- <a-icon type="plus-circle" theme="filled" style="color: green; fontSize: 18px;" @click="addRightClick()" />
326
- </span>
327
- <a-row v-for="(item, index) in rightClickSetting" :key="index">
328
- <a-col :span="handleRightClickSpan(item)">
329
- <a-form-item label="名称" class="rightClick-form">
330
- <a-input v-model="item.rightClickName" style="width: 98%" allowClear></a-input>
331
- </a-form-item>
332
- </a-col>
333
- <a-col :span="handleRightClickSpan(item)">
334
- <a-form-item label="操作" class="rightClick-form">
335
- <a-select style="width: 98%" v-model="item.rightClickDo" allowClear showSearch :filterOption="filterOption" placeholder="请选择">
336
- <a-select-option v-for="(i, index) in rightClickDoList" :key="index" :value="i.value">{{ i.label }}</a-select-option>
337
- </a-select>
338
- </a-form-item>
339
- </a-col>
340
- <a-col :span="11" v-if="item.rightClickDo === 'jumpUrl'">
341
- <a-form-item label="外部地址" class="rightClick-form">
342
- <a-input v-model="item.rightClickUrl" style="width: 100%;" allowClear></a-input>
343
- </a-form-item>
344
- </a-col>
345
- <svg-icon @click="deleteRightClick(index)" class="form-action svg-icon-btn" icon-class="xitongtubiaoliebiaocaozuoanniushanchushixin" style="margin: 8px 0 0 4px;" />
346
- </a-row>
347
- </div>
348
- <div class="functional-module" v-if="!isConference && !isStaff">
349
- <span class="title" style="display: inline-block;margin-bottom: 10px;">
350
- 聊天客户端接入地址
351
- </span>
352
- <a-row class="client-url">
353
- <a-col :span="3">PC端:</a-col>
354
- <a-col :span="20">{{ pcUrl }} </a-col>
355
- </a-row>
356
- <a-row class="client-url">
357
- <a-col :span="3">移动端:</a-col>
358
- <a-col :span="20">{{ mobileUrl }} </a-col>
359
- </a-row>
360
- </div>
361
- </a-form>
362
- </div>
363
- <div class="form-bottom">
364
- <!-- <a-button @click="handleCancel">取消</a-button> -->
365
- <a-button type="primary" @click="handleSubmit" style="margin-left: 10px;">{{ i18nText('3.5.29') }}</a-button>
366
- </div>
367
- </div>
368
- </template>
369
-
370
- <script>
371
- import { mapGetters } from '../../store/helper';
372
- import fetch, { qs } from '@/utils/chatFetch';
373
- import vexutils from '@/utils/vexutils';
374
- import { Checkbox, Col, Form, Icon, Input, InputNumber, Radio, Row, Select, Tooltip, Table, Switch, Button } from 'ant-design-vue';
375
- import SvgIcon from '@/component/svg/index.vue';
376
-
377
- export default {
378
- inject: ['store', 'i18nText', 'dispatchEvent'],
379
- components: {
380
- [Icon.name]: Icon,
381
- [Row.name]: Row,
382
- [Col.name]: Col,
383
- [Form.name]: Form,
384
- [Form.Item.name]: Form.Item,
385
- [Checkbox.name]: Checkbox,
386
- [Select.name]: Select,
387
- [Select.Option.name]: Select.Option,
388
- [Radio.name]: Radio,
389
- [Radio.Group.name]: Radio.Group,
390
- [InputNumber.name]: InputNumber,
391
- [Tooltip.name]: Tooltip,
392
- [Checkbox.Group.name]: Checkbox.Group,
393
- [Input.name]: Input,
394
- [Table.name]: Table,
395
- [Switch.name]: Switch,
396
- [Button.name]: Button,
397
- SvgIcon
398
- },
399
- props: ['assemblyId', 'webURL'],
400
- data() {
401
- return {
402
- isListClassify: '',
403
- listClassify: [],
404
- showTimeSetting: false,
405
- showTimeDelay: false,
406
- showBotSetting: false,
407
- evaluate: false,
408
- readStatus: false,
409
- lineUpNotice: false,
410
- evaluateId: '',
411
- timeLength: '', // 会话时长,分钟计算
412
- functionSetting: [], // 服务端功能
413
- clientFunctionSetting: [], // 客户端功能
414
- functionList: [], // 服务端功能下拉列表
415
- clientFunctionList: [], // 客户端功能下拉列表
416
- toolbar: [],
417
- toolbarList: [],
418
- closedToolbarList: [],
419
- queryTimeSetting: [],
420
- queryTimeSettingList: [],
421
- serviceState: [],
422
- serverInfo: [],
423
- tabBarSetting: {},
424
- columns: [
425
- {
426
- title: this.i18nText('1.9.417'),
427
- dataIndex: 'title',
428
- key: 'title',
429
- align: 'center'
430
- },
431
- {
432
- title: this.i18nText('1.2.1.4.4'),
433
- dataIndex: 'description',
434
- key: 'description',
435
- align: 'center'
436
- },
437
- {
438
- title: this.i18nText('1.2.1.3.24'),
439
- dataIndex: 'updatedBy',
440
- key: 'updatedBy',
441
- align: 'center',
442
- scopedSlots: { customRender: 'operation' }
443
- },
444
- {
445
- title: 'icon',
446
- dataIndex: 'icon',
447
- key: 'icon',
448
- align: 'center',
449
- scopedSlots: { customRender: 'icon' }
450
- }
451
- ],
452
- submitData: { setting: {} },
453
- id: '',
454
- originSetting: {},
455
- broadcastList: {
456
- PC: {
457
- isChecked: false,
458
- list: []
459
- },
460
- MOBILE: {
461
- isChecked: false,
462
- list: []
463
- }
464
- },
465
- robotList: [],
466
- variableSetting: [
467
- {
468
- name: 'QUEUE_NOTICE_TIME',
469
- value: '5',
470
- remark: '每个会话平均时长'
471
- }
472
- ],
473
- chatPublicCategoryList: [],
474
- chatPublicCategory: '',
475
- rightClickSetting: [],
476
- rightClickDoList: [
477
- { label: '撤回', value: 'rollBack' },
478
- { label: '外部地址', value: 'jumpUrl' },
479
- { label: '重新发送', value: 'resend' }
480
- ],
481
- clientInfo: {},
482
- mobileUrl: '',
483
- pcUrl: '',
484
- refuseReasonList: [],
485
- transferReasonList: []
486
- };
487
- },
488
- computed: {
489
- ...mapGetters(['userInfo', 'assemblySetting']),
490
- orgId() {
491
- return this.userInfo?.sysParams?.orgId;
492
- },
493
- isConference() {
494
- return this.assemblySetting?.type == 'conference';
495
- },
496
- isStaff() {
497
- return this.assemblySetting?.type == 'staff';
498
- },
499
- tabBarMobileEnable() {
500
- const isChecked = this.tabBarSetting?.mobileSetting?.isChecked;
501
- return isChecked == 'Y';
502
- },
503
- handleRightClickSpan() {
504
- return function(item) {
505
- if (item.rightClickDo === 'jumpUrl') return 5;
506
- return 11;
507
- };
508
- }
509
- },
510
- beforeCreate() {
511
- this.form = this.$form.createForm(this, { name: 'strategy-condition' });
512
- },
513
- created() {
514
- this.init();
515
- this.getBaseInfo();
516
- if (!this.isConference) {
517
- this.getRobotAll();
518
- }
519
- },
520
- watch: {},
521
- methods: {
522
- filterOption(...args) {
523
- return vexutils.filterOption.apply(this, args);
524
- },
525
- init() {
526
- this.mobileUrl = `${location.origin}${this.webURL}/h5/#/multiChat?assemblyId=${this.assemblyId || 'xxx'}&orgId=${this.orgId || 'xxx'}&userId=xxx&userType=xxx&name=xxx`;
527
- this.pcUrl = `${location.origin}${this.webURL}/web/#/multiChat?isOriginPage=1&assemblyId=${this.assemblyId || 'xxx'}&orgId=${this.orgId || 'xxx'}&userId=xxx&userType=xxx&name=xxx`;
528
- },
529
- /* 入口 */
530
- getBaseInfo() {
531
- fetch
532
- .get('/chat/event/getSysBaseInformation', {
533
- params: {
534
- assemblyId: this.assemblyId,
535
- type: 'BASE_INFORMATION'
536
- }
537
- })
538
- .then(({ data }) => {
539
- if (data.result === 'SUCCESS') {
540
- const chatPublicCategoryList = data.map?.chatPublicCategoryList || [];
541
- this.chatPublicCategoryList = chatPublicCategoryList.filter(v => v);
542
- let info = data.map.imformation[0];
543
- if (info) {
544
- this.id = info.id || null;
545
- let setting = info.settingObj;
546
- this.originSetting = setting;
547
- this.fillInfoData(setting);
548
- }
549
- }
550
- });
551
- },
552
- /* 编辑回填 */
553
- fillInfoData(setting) {
554
- let {
555
- timingSettingSwitch,
556
- timingSetting,
557
- serverSetting,
558
- clientSetting,
559
- queryTimeSetting = [],
560
- robotObj,
561
- robotSetting,
562
- toolbar = [],
563
- isListClassify,
564
- listClassify = [],
565
- rightClickSetting = [],
566
- variableSetting = [],
567
- chatPublicCategory,
568
- evaluate,
569
- readStatus,
570
- lineUpNotice,
571
- broadcast
572
- } = setting;
573
- this.readStatus = readStatus === 'Y';
574
- this.lineUpNotice = lineUpNotice === 'Y';
575
- this.showTimeSetting = timingSettingSwitch === '1';
576
- this.isListClassify = isListClassify;
577
- this.rightClickSetting = rightClickSetting;
578
- this.variableSetting = variableSetting;
579
- // 拒绝原因
580
- this.refuseReasonList = setting?.refuseReasonSetting?.list || [];
581
- // 转接原因
582
- this.transferReasonList = setting?.transferReasonSetting?.list || [];
583
- if (chatPublicCategory) {
584
- this.chatPublicCategory = chatPublicCategory.split(',');
585
- } else {
586
- this.chatPublicCategory = [];
587
- }
588
- this.fillListClassify(listClassify);
589
- this.$nextTick(() => {
590
- this.fillServiceSetting(serverSetting);
591
- });
592
- this.fillClientSetting(clientSetting);
593
- this.fillToolbar(toolbar);
594
- this.fillQueryTimeSetting(queryTimeSetting);
595
- this.fillBroadcast(broadcast);
596
- this.fillTabBar(setting.tabBarSetting);
597
- this.$nextTick().then(() => {
598
- this.fillTimeSetting(timingSetting);
599
- });
600
- if (robotObj?.switch) {
601
- this.showBotSetting = true;
602
- let { secretId, secretKey, botId } = robotObj;
603
- this.$nextTick().then(() => {
604
- !this.isConference &&
605
- !this.isStaff &&
606
- this.form.setFieldsValue({
607
- secretKey,
608
- secretId,
609
- botId
610
- });
611
- });
612
- }
613
- !this.isConference && !this.isStaff && this.fillRobotSetting(robotSetting);
614
- if (evaluate) {
615
- this.evaluate = evaluate.isChecked === 'Y';
616
- this.evaluateId = evaluate.id;
617
- }
618
- },
619
- fillQueryTimeSetting(queryTimeSetting) {
620
- this.queryTimeSettingList = queryTimeSetting.map(item => ({
621
- label: item.title,
622
- value: item.title
623
- }));
624
- this.queryTimeSetting = queryTimeSetting;
625
- // let queryTimeSettingChecked = queryTimeSetting.reduce((result, item) => {
626
- // if (item.isChecked === "Y") {
627
- // result.push(item.title);
628
- // }
629
- // return result;
630
- // }, []);
631
- let queryTimeSettingChecked = queryTimeSetting.filter(item => item.isChecked === 'Y')[0]?.title;
632
- this.$nextTick(() => {
633
- this.form.setFieldsValue({ queryTimeSetting: queryTimeSettingChecked });
634
- });
635
- },
636
- fillRobotSetting(robotSetting) {
637
- if (!robotSetting) return;
638
- let { robotId, mode } = robotSetting;
639
- this.$nextTick(() => {
640
- this.form.setFieldsValue({ robotId, mode });
641
- });
642
- },
643
- fillBroadcast(broadcast) {
644
- if (!broadcast) return;
645
- for (let i in broadcast) {
646
- let item = broadcast[i];
647
- item.isChecked = item.isChecked == 'Y' ? true : false;
648
- if (!item.list) {
649
- item.list = [];
650
- }
651
- }
652
- this.broadcastList = broadcast;
653
- },
654
- fillToolbar(toolbar) {
655
- this.toolbarList = toolbar.map(item => ({
656
- label: item.name,
657
- value: item.name + '-' + item.source + '-' + item.key,
658
- source: item.source,
659
- isClosedAble: item.isClosedAble,
660
- isCloseChecked: item.isCloseChecked
661
- }));
662
- const btwList = toolbar.filter(item => item.isClosedAble == "Y" && item.isChecked == "Y");
663
- this.closedToolbarList = btwList.map(item => ({
664
- label: item.name,
665
- value: item.name + '-' + item.source + '-' + item.key,
666
- source: item.source,
667
- isClosedAble: item.isClosedAble,
668
- isCloseChecked: item.isCloseChecked
669
- }));
670
- this.toolbar = toolbar;
671
- let toolbarChecked = toolbar.reduce((result, item) => {
672
- if (item.isChecked === 'Y') {
673
- result.push(item.name + '-' + item.source + '-' + item.key);
674
- }
675
- return result;
676
- }, []);
677
- this.$nextTick(() => {
678
- this.form.setFieldsValue({ toolbar: toolbarChecked });
679
- });
680
- let closedToolbarChecked = this.closedToolbarList.reduce((result, item) => {
681
- if (item.isCloseChecked === 'Y') {
682
- result.push(item.label + '-' + item.source + '-' + item.key);
683
- }
684
- return result;
685
- }, []);
686
- this.$nextTick(() => {
687
- this.form.setFieldsValue({ closedToolbar: closedToolbarChecked });
688
- });
689
- },
690
- toolbarChange(item, e) {
691
- const checked = e.target.checked;
692
- let checkedItemIndex = -1;
693
- const checkedItems = [];
694
- this.closedToolbarList.forEach((itm, index) => {
695
- if (item.source == itm.source && item.value == itm.value) {
696
- checkedItemIndex = index;
697
- } else {
698
- checkedItems.push(itm.value);
699
- }
700
- })
701
- if (checked && checkedItemIndex == -1 && item.isClosedAble == "Y") {
702
- this.closedToolbarList.push(item);
703
- } else if (!checked && checkedItemIndex != -1) {
704
- this.form.setFieldsValue({ closedToolbar: checkedItems });
705
- this.closedToolbarList.splice(checkedItemIndex, 1);
706
- }
707
- },
708
- fillTabBar(data) {
709
- const mobileSetting = {
710
- isChecked: 'N',
711
- list: []
712
- };
713
- if (data.mobileSetting) {
714
- mobileSetting.isChecked = data.mobileSetting.isChecked || mobileSetting.isChecked;
715
- mobileSetting.list = (data?.mobileSetting?.list || []).map(v => {
716
- return Object.assign({}, v, {
717
- isChecked: v.isChecked || 'Y' // 无isChecked的旧数据设值为Y
718
- });
719
- });
720
- }
721
- this.tabBarSetting = {
722
- mobileSetting
723
- };
724
- },
725
- /* 回填时间设置 */
726
- fillTimeSetting(timeSetting) {
727
- if (this.isStaff) return;
728
- let { timeLength, showMode, delayedSetting, delayed } = timeSetting;
729
- this.timeLength = timeLength;
730
- let timeLengthMins = ''
731
- let timeLengthHours = ''
732
- if (this.timeLength) {
733
- timeLengthMins = parseInt(this.timeLength) % 60;
734
- timeLengthHours = parseInt(parseInt(this.timeLength) / 60);
735
- }
736
- this.form.setFieldsValue({
737
- timeLengthMins,
738
- timeLengthHours,
739
- showMode
740
- });
741
- if (delayed) {
742
- this.showTimeDelay = true;
743
- let { timeLength, rightOffRemindTime } = delayedSetting;
744
- this.$nextTick().then(() => {
745
- this.form.setFieldsValue({
746
- 'delayed-timeLength': timeLength,
747
- rightOffRemindTime
748
- });
749
- });
750
- }
751
- },
752
- fillListClassify(listClassify) {
753
- if (this.isListClassify !== 'Y') {
754
- return;
755
- }
756
- this.listClassify = listClassify;
757
- this.listClassify.forEach(item => {
758
- let serverfunctionList = [];
759
- let serverfunctions = [];
760
- let clientfunctionList = [];
761
- let clientfunctions = [];
762
- item.serverFunctionSetting.map(i => {
763
- if (i.isshow === 'Y') {
764
- serverfunctionList.push({
765
- label: i.fTitle,
766
- value: i.function
767
- });
768
- }
769
- if (i.isChecked === 'Y') {
770
- serverfunctions.push(i.function);
771
- }
772
- });
773
- item.clientFunctionSetting.map(i => {
774
- if (i.isshow === 'Y') {
775
- clientfunctionList.push({
776
- label: i.fTitle,
777
- value: i.function
778
- });
779
- }
780
- if (i.isChecked === 'Y') {
781
- clientfunctions.push(i.function);
782
- }
783
- });
784
- if (item.enable === undefined) {
785
- this.$set(item, 'enable', true);
786
- }
787
- this.$set(item, 'serverfunctionList', serverfunctionList);
788
- this.$set(item, 'serverfunctions', serverfunctions);
789
- this.$set(item, 'clientfunctionList', clientfunctionList);
790
- this.$set(item, 'clientfunctions', clientfunctions);
791
- });
792
- },
793
- /* 回填服务端设置 */
794
- fillServiceSetting(serverSetting) {
795
- let { serverInfo, functionSetting, serviceState } = serverSetting;
796
-
797
- this.serverInfo = serverInfo;
798
- this.$nextTick().then(() => {
799
- !this.isStaff &&
800
- serverInfo.map(item => {
801
- this.form.setFieldsValue({ [item.key]: item.value });
802
- });
803
- });
804
- this.serviceState = serviceState;
805
-
806
- if (this.isListClassify === 'Y') {
807
- return;
808
- }
809
-
810
- this.functionSetting = functionSetting;
811
- this.getFunctionList();
812
- let serverFunction = functionSetting.reduce((server, item) => {
813
- if (item.isChecked === 'Y') {
814
- server.push(item.function);
815
- }
816
- return server;
817
- }, []);
818
- this.form.setFieldsValue({ functionSetting: serverFunction });
819
- },
820
- /* 回填客户端设置 */
821
- fillClientSetting(clientSetting) {
822
- if (this.isListClassify === 'Y' || this.isStaff) return;
823
- let { functionSetting } = clientSetting;
824
- this.clientFunctionSetting = functionSetting;
825
- this.getClientFunctionList();
826
- let clientFunction = functionSetting.reduce((client, item) => {
827
- if (item.isChecked === 'Y') {
828
- client.push(item.function);
829
- }
830
- return client;
831
- }, []);
832
- this.form.setFieldsValue({ clientFunctionSetting: clientFunction });
833
- },
834
- getFunctionList() {
835
- let functionList = [];
836
- this.functionSetting.map(item => {
837
- if (item.isshow === 'Y') {
838
- functionList.push({
839
- label: item.fTitle,
840
- value: item.function
841
- });
842
- }
843
- this.functionList = functionList;
844
- });
845
- },
846
- getClientFunctionList() {
847
- let clientFunctionList = [];
848
- this.clientFunctionSetting.map(item => {
849
- if (item.isshow === 'Y') {
850
- clientFunctionList.push({
851
- label: item.fTitle,
852
- value: item.function
853
- });
854
- }
855
- });
856
- this.clientFunctionList = clientFunctionList;
857
- },
858
- getRowkey(record) {
859
- return record.status;
860
- },
861
- handleTimeSettingShow(e) {
862
- this.showTimeSetting = e.target.checked;
863
- },
864
- handleTimeDelayShow(e) {
865
- this.showTimeDelay = e.target.checked;
866
- },
867
- handleBotSettingShow(e) {
868
- this.showBotSetting = e.target.checked;
869
- },
870
- getRobotAll() {
871
- this.spinningText = '3.2.8';
872
- let url = '/robot/getAll';
873
- return fetch.get(url).then(({ data }) => {
874
- if (data.result === 'SUCCESS') {
875
- let { list = [] } = data;
876
- if (list && list.length > 0) {
877
- this.robotList = list;
878
- }
879
- }
880
- });
881
- },
882
- handleEvaluate(e) {
883
- this.evaluate = e.target.checked;
884
- },
885
- handleStatusChange(record) {
886
- record.enable = !record.enable;
887
- },
888
- handleSubmit() {
889
- this.form.validateFields((err, values) => {
890
- if (err) return;
891
- let setting = {};
892
- this.handleTimeSetting(setting, values);
893
- this.handleToolbar(setting, values);
894
- this.handleQueryTimeSetting(setting, values);
895
- this.handleClassify(setting);
896
- let validate = this.handleServiceSetting(setting, values);
897
- if (validate) return;
898
- let broadcastValidate = this.handleBroadcast(setting);
899
- if (!broadcastValidate) return;
900
- this.handleClientSetting(setting, values);
901
- setting.robotObj = {
902
- switch: this.showBotSetting,
903
- secretId: this.form.getFieldValue('secretId'),
904
- secretKey: this.form.getFieldValue('secretKey'),
905
- botId: this.form.getFieldValue('botId')
906
- };
907
- setting.robotSetting = {
908
- robotId: this.form.getFieldValue('robotId'),
909
- mode: this.form.getFieldValue('mode')
910
- };
911
- setting.chatPublicCategory = this.chatPublicCategory.join(',');
912
- setting.rightClickSetting = this.rightClickSetting;
913
- setting.variableSetting = this.variableSetting;
914
- setting.tabBarSetting = this.tabBarSetting;
915
- setting.refuseReasonSetting = {
916
- list: this.refuseReasonList
917
- };
918
- setting.transferReasonSetting = {
919
- list: this.transferReasonList
920
- }
921
- setting = Object.assign({}, this.originSetting, setting);
922
- if (!setting.evaluate) {
923
- setting.evaluate = {};
924
- }
925
- setting.evaluate.isChecked = this.evaluate ? 'Y' : 'N';
926
- setting.readStatus = this.readStatus ? 'Y' : 'N';
927
- setting.lineUpNotice = this.lineUpNotice ? 'Y' : 'N';
928
- this.submitData.setting = JSON.stringify(setting);
929
- this.submitData.type = 'BASE_INFORMATION';
930
- this.submitData.assemblyId = this.assemblyId;
931
- if (this.id) {
932
- this.submitData.id = this.id;
933
- }
934
-
935
- this.saveSysBaseInformation();
936
- });
937
- },
938
- saveSysBaseInformation() {
939
- fetch.post('/chat/event/saveSysBaseInformation', qs.stringify(this.submitData)).then(({ data }) => {
940
- if (data.result === 'SUCCESS') {
941
- this.dispatchEvent('set_sysInfoSuccess', data.map);
942
- this.$message.success(this.i18nText('1.10.52'));
943
- }
944
- });
945
- },
946
- handleClassify(setting) {
947
- if (this.isListClassify !== 'Y') return;
948
- let listClassify = JSON.parse(JSON.stringify(this.listClassify));
949
- listClassify.forEach(item => {
950
- item.serverFunctionSetting.map(i => {
951
- if (item.serverfunctions.includes(i.function)) {
952
- i.isChecked = 'Y';
953
- } else {
954
- i.isChecked = 'N';
955
- }
956
- });
957
- item.clientFunctionSetting.map(i => {
958
- if (item.clientfunctions.includes(i.function)) {
959
- i.isChecked = 'Y';
960
- } else {
961
- i.isChecked = 'N';
962
- }
963
- });
964
- delete item.serverfunctions;
965
- delete item.serverfunctionList;
966
- delete item.clientfunctions;
967
- delete item.clientfunctionList;
968
- });
969
- setting.listClassify = listClassify;
970
- },
971
- handleQueryTimeSetting(setting, values) {
972
- if (this.queryTimeSettingList.length === 0) return;
973
- let { queryTimeSetting } = values;
974
- let clone = JSON.parse(JSON.stringify(this.queryTimeSetting));
975
- setting.queryTimeSetting = clone.reduce((result, item) => {
976
- if (queryTimeSetting === item.title) {
977
- item.isChecked = 'Y';
978
- } else {
979
- item.isChecked = 'N';
980
- }
981
- result.push(item);
982
- return result;
983
- }, []);
984
- },
985
- handleToolbar(setting, values) {
986
- if (this.toolbarList.length === 0) return;
987
- let { toolbar, closedToolbar } = values;
988
- let clone = JSON.parse(JSON.stringify(this.toolbar));
989
- setting.toolbar = clone.reduce((result, item) => {
990
- if (toolbar.includes(item.name + '-' + item.source + '-' + item.key)) {
991
- item.isChecked = 'Y';
992
- } else {
993
- item.isChecked = 'N';
994
- }
995
- if (closedToolbar.includes(item.name + '-' + item.source + '-' + item.key)) {
996
- item.isCloseChecked = 'Y';
997
- } else {
998
- item.isCloseChecked = 'N';
999
- }
1000
- result.push(item);
1001
- return result;
1002
- }, []);
1003
- },
1004
- /* 客户端设置 */
1005
- handleClientSetting(setting, values) {
1006
- if (this.isListClassify === 'Y') return;
1007
- setting.clientSetting = {
1008
- functionSetting: []
1009
- };
1010
- let { clientFunctionSetting } = values;
1011
- let clientFunctionClone = JSON.parse(JSON.stringify(this.clientFunctionSetting));
1012
- setting.clientSetting.functionSetting = clientFunctionClone.reduce((result, func) => {
1013
- if (clientFunctionSetting.includes(func.function)) {
1014
- func.isChecked = 'Y';
1015
- } else {
1016
- func.isChecked = 'N';
1017
- }
1018
- result.push(func);
1019
- return result;
1020
- }, []);
1021
- },
1022
- /* 服务端设置 */
1023
- handleServiceSetting(setting, values) {
1024
- setting.serverSetting = {
1025
- serverInfo: {},
1026
- functionSetting: [],
1027
- serviceState: []
1028
- };
1029
-
1030
- this.serverInfo.map(item => {
1031
- item.value = this.form.getFieldValue(item.key);
1032
- });
1033
- for (let i = 0; i < this.serverInfo.length; i++) {
1034
- let info = this.serverInfo[i];
1035
- if (!info.value && info.key != 'customerName' && !this.isStaff) {
1036
- this.$message.error(`${info.title} ${this.i18nText('1.9.430')}!`);
1037
- return true;
1038
- }
1039
- }
1040
- setting.serverSetting.serverInfo = this.serverInfo;
1041
- if (this.isListClassify === 'Y') return;
1042
- let { functionSetting } = values;
1043
- let functionSettingClone = JSON.parse(JSON.stringify(this.functionSetting));
1044
- setting.serverSetting.functionSetting = functionSettingClone.reduce((result, func) => {
1045
- if (functionSetting.includes(func.function)) {
1046
- func.isChecked = 'Y';
1047
- } else {
1048
- func.isChecked = 'N';
1049
- }
1050
- result.push(func);
1051
- return result;
1052
- }, []);
1053
- setting.serverSetting.serviceState = this.serviceState;
1054
- },
1055
- handleBroadcast(setting) {
1056
- setting.broadcast = {};
1057
- for (let i in this.broadcastList) {
1058
- let broadcastItem = this.broadcastList[i];
1059
- for (let j = 0; j < broadcastItem.list.length; j++) {
1060
- let item = broadcastItem.list[j];
1061
- if (!item.content) {
1062
- this.$message.error(`${this.i18nText('1.2.1.11.60')}!`);
1063
- return false;
1064
- }
1065
- }
1066
- }
1067
- let copyList = JSON.parse(JSON.stringify(this.broadcastList));
1068
- for (let i in copyList) {
1069
- let item = copyList[i];
1070
- item.isChecked = item.isChecked ? 'Y' : 'N';
1071
- }
1072
- setting.broadcast = copyList;
1073
- return true;
1074
- },
1075
- /* 聊天设置 */
1076
- handleTimeSetting(setting, values) {
1077
- setting.timingSettingSwitch = this.showTimeSetting ? '1' : '0';
1078
- setting.timingSetting = {};
1079
- if (this.showTimeSetting) {
1080
- let { showMode, timeLengthMins, timeLengthHours } = values;
1081
- let settingMins = timeLengthMins ? timeLengthMins : 0;
1082
- let settingHours = timeLengthHours ? timeLengthHours : 0;
1083
- this.timeLength = settingMins + settingHours * 60;
1084
- Object.assign(setting.timingSetting, { timeLength: this.timeLength, showMode });
1085
- setting.timingSetting.delayedSetting = {};
1086
- }
1087
- if (this.showTimeDelay && this.showTimeSetting) {
1088
- let { 'delayed-timeLength': timeLength, rightOffRemindTime } = values;
1089
- setting.timingSetting.delayed = true;
1090
- Object.assign(setting.timingSetting.delayedSetting, {
1091
- timeLength,
1092
- rightOffRemindTime
1093
- });
1094
- }
1095
- },
1096
- handleCancel() {},
1097
- handleClassifyToggle(item, e) {
1098
- this.$set(item, 'isChecked', e.target.checked ? 'Y' : 'N');
1099
- },
1100
- handleStatisticToggle(item, e) {
1101
- item.isStatistic = e.target.checked ? 'Y' : 'N';
1102
- },
1103
- handleCheckInput(v, item, key = 'isChecked') {
1104
- item[key] = v ? 'Y' : 'N';
1105
- },
1106
- addBroadcast(type, list) {
1107
- let item = {
1108
- content: '',
1109
- url: ''
1110
- };
1111
- list.push(item);
1112
- },
1113
- deleteBroadcast(index, list) {
1114
- list.splice(index, 1);
1115
- },
1116
- addRightClick() {
1117
- this.rightClickSetting = this.rightClickSetting.concat({
1118
- rightClickName: '',
1119
- rightClickUrl: '',
1120
- rightClickDo: ''
1121
- });
1122
- },
1123
- deleteRightClick(index) {
1124
- this.rightClickSetting.splice(index, 1);
1125
- },
1126
- handleGroupUp(index) {
1127
- if (index === 0) {
1128
- let current = this.listClassify[index];
1129
- let nextList = this.listClassify.slice(1);
1130
- this.listClassify = [].concat(nextList, current);
1131
- } else {
1132
- let current = this.listClassify[index];
1133
- let preList = this.listClassify.slice(0, index - 1);
1134
- let nextList = this.listClassify.slice(index - 1);
1135
- nextList.splice(1, 1);
1136
- this.listClassify = [].concat(preList, current, nextList);
1137
- }
1138
- },
1139
- refuseReasonAdd() {
1140
- this.refuseReasonList.push({
1141
- text: ''
1142
- });
1143
- },
1144
- transferReasonAdd() {
1145
- this.transferReasonList.push({
1146
- text: ''
1147
- });
1148
- },
1149
- refuseReasonDel(i) {
1150
- this.refuseReasonList.splice(i, 1);
1151
- },
1152
- transferReasonDel(i) {
1153
- this.transferReasonList.splice(i, 1);
1154
- },
1155
- handleRightOffRemindTimeBlur(event) {
1156
- const v = this.form.getFieldValue('timeLength') || 0;
1157
- // 限制 到期提醒 输入 数据不能大于等于会话时长
1158
- if (v && v <= event.target.value) {
1159
- this.form.setFieldsValue({
1160
- rightOffRemindTime: v - 1
1161
- });
1162
- }
1163
- }
1164
- }
1165
- };
1166
- </script>
1167
-
1168
- <style lang="less" scoped>
1169
- .chat-base-info {
1170
- height: 100%;
1171
- display: flex;
1172
- flex-direction: column;
1173
- padding: 15px;
1174
- padding-bottom: 0;
1175
- .main-form {
1176
- overflow: auto;
1177
- &::-webkit-scrollbar {
1178
- width: 5px;
1179
- }
1180
- }
1181
- .page-title {
1182
- font-weight: 500;
1183
- color: #2e2e2e;
1184
- font-size: 16px;
1185
- }
1186
- .main-form {
1187
- flex: 1;
1188
- }
1189
- .setting-hours-text {
1190
- margin-right: 15px;
1191
- }
1192
- .time-setting,
1193
- .delayed-setting {
1194
- padding-left: 20px;
1195
- /deep/ .ant-form-item {
1196
- display: flex;
1197
- }
1198
- }
1199
- .delayed-setting {
1200
- margin-left: 30px;
1201
- .unit {
1202
- display: inline-block;
1203
- margin-left: 10px;
1204
- }
1205
- }
1206
- /deep/ .ant-form-item {
1207
- margin-bottom: 0;
1208
- }
1209
- /deep/ .ant-form-item-children {
1210
- display: flex;
1211
- align-items: center;
1212
- }
1213
- .server-form-item {
1214
- /deep/ .ant-form-item-children {
1215
- flex-wrap: wrap;
1216
- }
1217
- }
1218
- .functional-module {
1219
- margin-bottom: 30px;
1220
- .title {
1221
- color: #506493;
1222
- line-height: 22px;
1223
- padding-left: 8px;
1224
- border-left: 3px solid #5585f5;
1225
- }
1226
- .broadcaste-wrap {
1227
- .broadcaste-title {
1228
- display: flex;
1229
- align-items: center;
1230
- margin: 8px 0;
1231
- > span {
1232
- margin: 0 8px;
1233
- }
1234
- }
1235
- .broadcaste-item {
1236
- display: flex;
1237
- align-items: center;
1238
- margin-bottom: 4px;
1239
- > div {
1240
- display: flex;
1241
- align-items: center;
1242
- width: 40%;
1243
- .item-title {
1244
- width: 60px;
1245
- margin: 4px;
1246
- }
1247
- }
1248
- }
1249
- }
1250
- .client-url {
1251
- margin-bottom: 8px;
1252
- }
1253
- }
1254
- /deep/ .ant-table-thead > tr > th,
1255
- /deep/ .ant-table-tbody > tr > td {
1256
- padding: 4px 30px;
1257
- }
1258
- .form-bottom {
1259
- display: flex;
1260
- align-items: center;
1261
- margin-top: auto;
1262
- margin-left: -15px;
1263
- padding-left: 15px;
1264
- height: 49px;
1265
- box-shadow: 0px -3px 8px 2px rgba(239, 243, 255, 1);
1266
- border-top: 1px solid #b8c5e2;
1267
- }
1268
- .title-input {
1269
- width: 150px;
1270
- margin-right: 20px;
1271
- text-align: center;
1272
- }
1273
- .bot-setting {
1274
- /deep/ .ant-form-item {
1275
- display: flex;
1276
- }
1277
- }
1278
- .serverinfo-wrapper {
1279
- display: flex;
1280
- align-items: center;
1281
- }
1282
- .serverinfo-label {
1283
- display: inline-block;
1284
- width: 100px;
1285
- padding-right: 8px;
1286
- overflow: hidden;
1287
- text-overflow: ellipsis;
1288
- white-space: nowrap;
1289
- }
1290
- .classify-wrapper {
1291
- display: flex;
1292
- align-items: flex-start;
1293
- .classify-item {
1294
- margin-left: 10px;
1295
- margin-bottom: 8px;
1296
- padding: 10px;
1297
- border: 1px solid #b8c5e2;
1298
- background-color: #f6f7fa;
1299
- .name {
1300
- display: inline-block;
1301
- width: 80px;
1302
- }
1303
- .statistic {
1304
- display: flex;
1305
- align-items: center;
1306
- justify-content: space-between;
1307
- margin-bottom: 10px;
1308
- }
1309
- .server {
1310
- margin-bottom: 10px;
1311
- }
1312
- }
1313
- }
1314
- .rightClickSetting {
1315
- /deep/ .ant-form-item {
1316
- display: flex;
1317
- }
1318
- }
1319
- .ASC_DESC {
1320
- /deep/ .ant-form-item-control-wrapper {
1321
- display: flex;
1322
- align-items: center;
1323
- }
1324
- }
1325
- .refuse-item {
1326
- margin-bottom: 8px;
1327
- display: flex;
1328
- align-items: center;
1329
- .ant-input {
1330
- max-width: 348px;
1331
- margin-right: 15px;
1332
- }
1333
- }
1334
- .refuse-add-btn {
1335
- border: none;
1336
- }
1337
- /deep/ .rightClick-form {
1338
- .ant-form-item-control-wrapper {
1339
- width: 100%;
1340
- }
1341
- }
1342
- }
1343
- </style>
1
+ <template>
2
+ <div class="chat-base-info">
3
+ <h3 class="page-title">{{ i18nText('2.4.3.1') }}</h3>
4
+ <div class="main-form">
5
+ <a-form :form="form">
6
+ <div class="functional-module" v-if="!isStaff">
7
+ <span class="title">{{ i18nText('1.9.401') }}</span>
8
+ <a-form-item>
9
+ <a-checkbox @change="handleTimeSettingShow" :checked="showTimeSetting">{{ i18nText('1.9.402') }}</a-checkbox>
10
+ <a-checkbox v-model="readStatus">已读回执</a-checkbox>
11
+ <a-checkbox v-model="lineUpNotice">排队提醒</a-checkbox>
12
+ </a-form-item>
13
+ <template v-if="showTimeSetting">
14
+ <a-row class="time-setting">
15
+ <a-col :span="12">
16
+ <a-form-item :label="i18nText('1.9.403')">
17
+ <a-input-number v-decorator="['timeLengthHours']" :min="0" :max="99" />
18
+ <span class="setting-hours-text">小时</span>
19
+ <a-input-number v-decorator="['timeLengthMins']" :min="0" :max="59" />
20
+ {{ i18nText('2.2.6.6') }}
21
+ </a-form-item>
22
+ </a-col>
23
+ <a-col :span="8">
24
+ <a-form-item :label="i18nText('1.9.405')" class="ASC_DESC">
25
+ <a-radio-group v-decorator="['showMode']">
26
+ <a-radio value="ASC">{{ i18nText('1.9.406') }}</a-radio>
27
+ <a-radio value="DESC">{{ i18nText('1.9.407') }}</a-radio>
28
+ </a-radio-group>
29
+ </a-form-item>
30
+ </a-col>
31
+ </a-row>
32
+ <a-form-item style="margin-left: 20px;">
33
+ <a-checkbox @change="handleTimeDelayShow" :checked="showTimeDelay">{{ i18nText('1.9.408') }}</a-checkbox>
34
+ </a-form-item>
35
+ <template v-if="showTimeDelay">
36
+ <a-row class="delayed-setting">
37
+ <a-col :span="12">
38
+ <a-form-item :label="i18nText('1.9.409')">
39
+ <a-input-number :precision="0" :min="1" v-decorator="['delayed-timeLength']" style="width: 80px;"></a-input-number>
40
+ <span class="unit">{{ i18nText('2.2.6.6') }}</span>
41
+ </a-form-item>
42
+ </a-col>
43
+ <a-col :span="10">
44
+ <a-form-item :label="i18nText('1.9.410')">
45
+ <a-input-number :precision="0" :min="1" v-decorator="['rightOffRemindTime']" style="width: 80px;" @blur="handleRightOffRemindTimeBlur"></a-input-number>
46
+ <span class="unit">{{ i18nText('1.9.411') }}</span>
47
+ </a-form-item>
48
+ </a-col>
49
+ </a-row>
50
+ </template>
51
+ </template>
52
+ </div>
53
+ <div class="functional-module">
54
+ <span class="title">{{ i18nText('1.9.412') }}</span>
55
+ <a-form-item :label="i18nText('1.9.413')" class="server-form-item" v-if="!isStaff">
56
+ <template v-for="item in serverInfo">
57
+ <div :key="item.key" v-if="item.type === 'TEXT'" class="serverinfo-wrapper">
58
+ <a-tooltip placement="top">
59
+ <template slot="title">{{ item.title }}</template>
60
+ <span class="serverinfo-label">{{ item.title }}:</span>
61
+ </a-tooltip>
62
+ <a-input v-decorator="[item.key]" class="title-input" allowClear></a-input>
63
+ </div>
64
+ </template>
65
+ </a-form-item>
66
+ <a-form-item :label="i18nText('1.9.414')" v-if="!isStaff">
67
+ <template v-for="item in serverInfo">
68
+ <div :key="item.key" v-if="item.type === 'BUTTON'" class="serverinfo-wrapper">
69
+ <a-tooltip placement="top">
70
+ <template slot="title">{{ item.title }}</template>
71
+ <span class="serverinfo-label">{{ item.title }}:</span>
72
+ </a-tooltip>
73
+ <a-input v-decorator="[item.key]" class="title-input" allowClear></a-input>
74
+ </div>
75
+ </template>
76
+ </a-form-item>
77
+ <a-form-item :label="i18nText('1.9.415')" v-if="queryTimeSettingList.length > 0">
78
+ <!-- <a-checkbox-group
79
+ :options="queryTimeSettingList"
80
+ v-decorator="[`queryTimeSetting`]"
81
+ />-->
82
+ <a-radio-group :options="queryTimeSettingList" v-decorator="[`queryTimeSetting`]"></a-radio-group>
83
+ </a-form-item>
84
+ <a-form-item :label="i18nText('1.9.416')">
85
+ <a-checkbox-group v-if="isListClassify !== 'Y'" :options="functionList" v-decorator="[`functionSetting`]" />
86
+ </a-form-item>
87
+ <template v-if="isListClassify === 'Y'">
88
+ <div v-for="(item, index) in listClassify" :key="index" class="classify-wrapper">
89
+ <!-- <a-checkbox
90
+ @change="e => handleClassifyToggle(item, e)"
91
+ :checked="item.isChecked === 'Y'"
92
+ ></a-checkbox>-->
93
+ <div class="classify-item">
94
+ <div class="statistic">
95
+ <div>
96
+ <span class="name">{{ i18nText('1.9.417') }}:</span>
97
+ <svg-icon :icon-class="item.icon" style="font-size: 20px;margin-right: 8px;"></svg-icon>
98
+ <a-input v-model="item.name" allowClear style="width: 150px;"></a-input>
99
+ <a-checkbox v-if="item.isStatistic !== 'NOT'" style="width: 100px;margin-left: 10px;" @change="e => handleStatisticToggle(item, e)" :checked="item.isStatistic === 'Y'">{{
100
+ i18nText('1.9.418')
101
+ }}</a-checkbox>
102
+ <a-checkbox style="width: 100px;margin-left: 10px;" v-model="item.enable">启用</a-checkbox>
103
+ </div>
104
+ <a-tooltip placement="top">
105
+ <template slot="title">上移</template>
106
+ <a-icon v-if="listClassify.length > 1" @click="handleGroupUp(index)" type="up" style="margin-right: 10px;" />
107
+ </a-tooltip>
108
+ </div>
109
+ <div class="server">
110
+ <span class="name">{{ i18nText('1.9.419') }}</span>
111
+ <a-checkbox-group :options="item.serverfunctionList" v-model="item.serverfunctions" />
112
+ </div>
113
+ <div class="client">
114
+ <span class="name">{{ i18nText('1.9.420') }}</span>
115
+ <a-checkbox-group :options="item.clientfunctionList" v-model="item.clientfunctions" />
116
+ </div>
117
+ </div>
118
+ </div>
119
+ </template>
120
+ <!-- 问诊TAB栏 -->
121
+ <a-form-item :label="i18nText('1.1.8.1.8') + '-' + i18nText('1.10.232')" v-if="!isStaff">
122
+ <template v-if="tabBarSetting.mobileSetting && tabBarSetting.mobileSetting.list">
123
+ <a-checkbox
124
+ v-for="(item, index) in tabBarSetting.mobileSetting.list"
125
+ :key="index"
126
+ :disabled="!tabBarMobileEnable || item.isMsgBar == 'Y'"
127
+ :checked="item.isChecked == 'Y'"
128
+ @input="v => handleCheckInput(v, item)"
129
+ >
130
+ {{ item.content }}
131
+ </a-checkbox>
132
+ </template>
133
+ </a-form-item>
134
+ <a-form-item :label="i18nText('1.9.421')" v-if="!isStaff">
135
+ <a-table bordered :columns="columns" :dataSource="serviceState" :pagination="false" :rowKey="getRowkey">
136
+ <template slot="operation" slot-scope="text, record">
137
+ <a-switch
138
+ :disabled="['ON-LINE', 'OFF-LINE'].includes(record.status)"
139
+ :checkedChildren="i18nText('1.9.422')"
140
+ :unCheckedChildren="i18nText('1.1.1.1.7')"
141
+ :checked="record.enable"
142
+ @change="() => handleStatusChange(record)"
143
+ />
144
+ </template>
145
+
146
+ <template slot="icon" slot-scope="text, record">
147
+ <svg-icon v-if="record.icon" :icon-class="record.icon" style="font-size:16px;"></svg-icon>
148
+ </template>
149
+ </a-table>
150
+ </a-form-item>
151
+ <a-form-item :label="i18nText('1.9.698')" v-if="toolbarList.length > 0">
152
+ <!-- <a-checkbox-group
153
+ :options="toolbarList"
154
+ v-decorator="[`toolbar`]"
155
+ /> -->
156
+ <a-checkbox-group v-decorator="[`toolbar`]">
157
+ <a-row>
158
+ <a-col>
159
+ <span style="display: inline-block;width: 70px;">PC:</span>
160
+ <a-checkbox @change="toolbarChange(item, $event)" :value="item.value" v-for="(item, index) in toolbarList.filter(item => item.source === 'PC')" :key="index">
161
+ {{ item.label }}
162
+ </a-checkbox>
163
+ </a-col>
164
+ <a-col>
165
+ <span style="display: inline-block;width: 70px;">MOBILE:</span>
166
+ <a-checkbox @change="toolbarChange(item, $event)" :value="item.value" v-for="(item, index) in toolbarList.filter(item => item.source === 'MOBILE')" :key="index">
167
+ {{ item.label }}
168
+ </a-checkbox>
169
+ </a-col>
170
+ </a-row>
171
+ </a-checkbox-group>
172
+ </a-form-item>
173
+ <a-form-item :label="i18nText('1.9.699')" v-if="toolbarList.length > 0">
174
+ <a-checkbox-group v-decorator="[`closedToolbar`]">
175
+ <a-row>
176
+ <a-col>
177
+ <span style="display: inline-block;width: 70px;">PC:</span>
178
+ <a-checkbox :value="item.value" v-for="(item, index) in closedToolbarList.filter(item => item.source === 'PC')" :key="index">
179
+ {{ item.label }}
180
+ </a-checkbox>
181
+ </a-col>
182
+ <a-col>
183
+ <span style="display: inline-block;width: 70px;">MOBILE:</span>
184
+ <a-checkbox :value="item.value" v-for="(item, index) in closedToolbarList.filter(item => item.source === 'MOBILE')" :key="index">
185
+ {{ item.label }}
186
+ </a-checkbox>
187
+ </a-col>
188
+ </a-row>
189
+ </a-checkbox-group>
190
+ </a-form-item>
191
+ </div>
192
+ <div class="functional-module" v-if="isListClassify !== 'Y' && !isStaff">
193
+ <span class="title">{{ i18nText('1.9.424') }}</span>
194
+ <a-form-item :label="i18nText('1.9.425')">
195
+ <a-checkbox-group :options="clientFunctionList" v-decorator="[`clientFunctionSetting`]" />
196
+ </a-form-item>
197
+ </div>
198
+ <div class="functional-module" v-if="!isStaff">
199
+ <span class="title" style="display: inline-block;margin-bottom: 10px;">
200
+ {{ i18nText('1.9.426') }}
201
+ <a-checkbox @change="handleEvaluate" :disabled="!evaluateId" :checked="evaluate"></a-checkbox>
202
+ </span>
203
+ </div>
204
+ <div class="functional-module" v-if="!isConference && !isStaff">
205
+ <span class="title" style="display: inline-block;margin-bottom: 10px;">
206
+ {{ i18nText('1.9.427') }}
207
+ <!-- <a-checkbox @change="handleBotSettingShow" :checked="showBotSetting"></a-checkbox> -->
208
+ </span>
209
+ <!-- <a-row class="bot-setting" v-if="showBotSetting">
210
+ <a-col :span="4">
211
+ <a-form-item label="secretId">
212
+ <a-input v-decorator="['secretId']" style="width: 150px;"></a-input>
213
+ </a-form-item>
214
+ </a-col>
215
+ <a-col :span="5">
216
+ <a-form-item label="secretKey">
217
+ <a-input v-decorator="['secretKey']" style="width: 150px;"></a-input>
218
+ </a-form-item>
219
+ </a-col>
220
+ </a-row>
221
+
222
+ <a-row class="bot-setting" v-if="showBotSetting">
223
+ <a-form-item label="botId">
224
+ <a-input v-decorator="['botId']" style="width: 150px;"></a-input>
225
+ </a-form-item>
226
+ </a-row> -->
227
+ <a-row class="bot-setting">
228
+ <a-form-item label="选择机器人">
229
+ <a-select v-decorator="['robotId']" :placeholder="'选择机器人'" style="width: 200px;" allowClear showSearch :filterOption="filterOption">
230
+ <a-select-option v-for="robot in robotList" :key="robot.id" :value="robot.id">{{ robot.name }}</a-select-option>
231
+ </a-select>
232
+ </a-form-item>
233
+ </a-row>
234
+ <a-row class="bot-setting">
235
+ <a-form-item>
236
+ <a-radio-group v-decorator="['mode']">
237
+ <a-radio value="ROBOT_CHAT">机器人和人工客服</a-radio>
238
+ <a-radio value="ROBOT">仅机器人</a-radio>
239
+ </a-radio-group>
240
+ </a-form-item>
241
+ </a-row>
242
+ </div>
243
+ <div class="functional-module">
244
+ <span class="title" style="display: block;margin-bottom: 10px;">
245
+ 公共短语
246
+ </span>
247
+ <a-select style="width: 300px;margin-top: 15px;" mode="multiple" v-model="chatPublicCategory" showSearch placeholder="请选择">
248
+ <a-select-option v-for="item in chatPublicCategoryList" :key="item.id" :value="item.id">{{ item.name }}</a-select-option>
249
+ </a-select>
250
+ </div>
251
+ <div class="functional-module">
252
+ <span class="title">{{ i18nText('1.9.428') }}</span>
253
+ <div class="broadcaste-wrap" v-for="(b, key) in broadcastList" :key="b.type">
254
+ <div class="broadcaste-title">
255
+ <a-switch v-model="b.isChecked" :checkedChildren="i18nText('1.9.422')" :unCheckedChildren="i18nText('1.1.1.1.7')" />
256
+ <span>{{ key === 'PC' ? i18nText('1.9.429') : i18nText('1.1.8.1.8') }}</span>
257
+ <a-icon type="plus-circle" theme="filled" style="color: green; fontSize: 18px;" @click="addBroadcast(b.type, b.list)" />
258
+ </div>
259
+ <ul>
260
+ <li v-for="(v, i) in b.list" :key="i" class="broadcaste-item">
261
+ <div>
262
+ <span class="item-title">{{ i18nText('3.19.5') }}</span>
263
+ <a-input v-model="v.content" allowClear />
264
+ </div>
265
+ <div>
266
+ <span class="item-title">{{ i18nText('2.22.8.2') }}</span>
267
+ <a-input v-model="v.url" allowClear />
268
+ </div>
269
+ <svg-icon @click="deleteBroadcast(i, b.list)" class="form-action svg-icon-btn" icon-class="xitongtubiaoliebiaocaozuoanniushanchushixin" style="margin-left: 4px;" />
270
+ </li>
271
+ </ul>
272
+ </div>
273
+ </div>
274
+ <div class="functional-module" v-if="!isStaff">
275
+ <span class="title" style="display: inline-block;margin-bottom: 10px;"> {{ i18nText('1.9.678') }}: </span>
276
+ <ul>
277
+ <li v-for="(item, i) in refuseReasonList" :key="i" class="refuse-item">
278
+ <a-input v-model.trim="item.text" :maxLength="15"></a-input>
279
+ <svg-icon class="form-action svg-icon-btn" icon-class="xitongtubiaoliebiaocaozuoanniushanchushixin" @click="refuseReasonDel(i)" />
280
+ </li>
281
+ </ul>
282
+ <a-button class="refuse-add-btn" type="link" size="small" :disabled="refuseReasonList.length > 4" @click="refuseReasonAdd">
283
+ <svg-icon icon-class="xinzengwenjian" style="margin-right:6px" />
284
+ 添加
285
+ </a-button>
286
+ </div>
287
+ <div class="functional-module" v-if="!isStaff">
288
+ <span class="title" style="display: inline-block;margin-bottom: 10px;">转接原因: </span>
289
+ <ul>
290
+ <li v-for="(item, i) in transferReasonList" :key="i" class="refuse-item">
291
+ <a-input v-model.trim="item.text" :maxLength="15"></a-input>
292
+ <svg-icon class="form-action svg-icon-btn" icon-class="xitongtubiaoliebiaocaozuoanniushanchushixin" @click="transferReasonDel(i)" />
293
+ </li>
294
+ </ul>
295
+ <a-button class="refuse-add-btn" type="link" size="small" :disabled="transferReasonList.length > 4" @click="transferReasonAdd">
296
+ <svg-icon icon-class="xinzengwenjian" style="margin-right:6px" />
297
+ 添加
298
+ </a-button>
299
+ </div>
300
+ <div class="functional-module" v-if="!isStaff">
301
+ <span class="title" style="display: inline-block;margin-bottom: 10px;">
302
+ 环境变量设置:
303
+ </span>
304
+ <a-row v-for="(item, index) in variableSetting" :key="index">
305
+ <a-col :span="4">
306
+ <a-form-item label="变量名称">
307
+ <a-input v-model="item.name" style="width: 200px;" disabled></a-input>
308
+ </a-form-item>
309
+ </a-col>
310
+ <a-col :span="4">
311
+ <a-form-item label="变量值">
312
+ <a-input v-model="item.value" style="width: 200px"></a-input>
313
+ </a-form-item>
314
+ </a-col>
315
+ <a-col :span="5">
316
+ <a-form-item label="备注">
317
+ <a-input v-model="item.remark" style="width: 200px;" disabled></a-input>
318
+ </a-form-item>
319
+ </a-col>
320
+ </a-row>
321
+ </div>
322
+ <div class="functional-module rightClickSetting">
323
+ <span class="title" style="display: inline-block;margin-bottom: 10px;">
324
+ 右键设置
325
+ <a-icon type="plus-circle" theme="filled" style="color: green; fontSize: 18px;" @click="addRightClick()" />
326
+ </span>
327
+ <a-row v-for="(item, index) in rightClickSetting" :key="index">
328
+ <a-col :span="handleRightClickSpan(item)">
329
+ <a-form-item label="名称" class="rightClick-form">
330
+ <a-input v-model="item.rightClickName" style="width: 98%" allowClear></a-input>
331
+ </a-form-item>
332
+ </a-col>
333
+ <a-col :span="handleRightClickSpan(item)">
334
+ <a-form-item label="操作" class="rightClick-form">
335
+ <a-select style="width: 98%" v-model="item.rightClickDo" allowClear showSearch :filterOption="filterOption" placeholder="请选择">
336
+ <a-select-option v-for="(i, index) in rightClickDoList" :key="index" :value="i.value">{{ i.label }}</a-select-option>
337
+ </a-select>
338
+ </a-form-item>
339
+ </a-col>
340
+ <a-col :span="11" v-if="item.rightClickDo === 'jumpUrl'">
341
+ <a-form-item label="外部地址" class="rightClick-form">
342
+ <a-input v-model="item.rightClickUrl" style="width: 100%;" allowClear></a-input>
343
+ </a-form-item>
344
+ </a-col>
345
+ <svg-icon @click="deleteRightClick(index)" class="form-action svg-icon-btn" icon-class="xitongtubiaoliebiaocaozuoanniushanchushixin" style="margin: 8px 0 0 4px;" />
346
+ </a-row>
347
+ </div>
348
+ <div class="functional-module" v-if="!isConference && !isStaff">
349
+ <span class="title" style="display: inline-block;margin-bottom: 10px;">
350
+ 聊天客户端接入地址
351
+ </span>
352
+ <a-row class="client-url">
353
+ <a-col :span="3">PC端:</a-col>
354
+ <a-col :span="20">{{ pcUrl }} </a-col>
355
+ </a-row>
356
+ <a-row class="client-url">
357
+ <a-col :span="3">移动端:</a-col>
358
+ <a-col :span="20">{{ mobileUrl }} </a-col>
359
+ </a-row>
360
+ </div>
361
+ </a-form>
362
+ </div>
363
+ <div class="form-bottom">
364
+ <!-- <a-button @click="handleCancel">取消</a-button> -->
365
+ <a-button type="primary" @click="handleSubmit" style="margin-left: 10px;">{{ i18nText('3.5.29') }}</a-button>
366
+ </div>
367
+ </div>
368
+ </template>
369
+
370
+ <script>
371
+ import { mapGetters } from '../../store/helper';
372
+ import fetch, { qs } from '@/utils/chatFetch';
373
+ import vexutils from '@/utils/vexutils';
374
+ import { Checkbox, Col, Form, Icon, Input, InputNumber, Radio, Row, Select, Tooltip, Table, Switch, Button } from 'ant-design-vue';
375
+ import SvgIcon from '@/component/svg/index.vue';
376
+
377
+ export default {
378
+ inject: ['store', 'i18nText', 'dispatchEvent'],
379
+ components: {
380
+ [Icon.name]: Icon,
381
+ [Row.name]: Row,
382
+ [Col.name]: Col,
383
+ [Form.name]: Form,
384
+ [Form.Item.name]: Form.Item,
385
+ [Checkbox.name]: Checkbox,
386
+ [Select.name]: Select,
387
+ [Select.Option.name]: Select.Option,
388
+ [Radio.name]: Radio,
389
+ [Radio.Group.name]: Radio.Group,
390
+ [InputNumber.name]: InputNumber,
391
+ [Tooltip.name]: Tooltip,
392
+ [Checkbox.Group.name]: Checkbox.Group,
393
+ [Input.name]: Input,
394
+ [Table.name]: Table,
395
+ [Switch.name]: Switch,
396
+ [Button.name]: Button,
397
+ SvgIcon
398
+ },
399
+ props: ['assemblyId', 'webURL'],
400
+ data() {
401
+ return {
402
+ isListClassify: '',
403
+ listClassify: [],
404
+ showTimeSetting: false,
405
+ showTimeDelay: false,
406
+ showBotSetting: false,
407
+ evaluate: false,
408
+ readStatus: false,
409
+ lineUpNotice: false,
410
+ evaluateId: '',
411
+ timeLength: '', // 会话时长,分钟计算
412
+ functionSetting: [], // 服务端功能
413
+ clientFunctionSetting: [], // 客户端功能
414
+ functionList: [], // 服务端功能下拉列表
415
+ clientFunctionList: [], // 客户端功能下拉列表
416
+ toolbar: [],
417
+ toolbarList: [],
418
+ closedToolbarList: [],
419
+ queryTimeSetting: [],
420
+ queryTimeSettingList: [],
421
+ serviceState: [],
422
+ serverInfo: [],
423
+ tabBarSetting: {},
424
+ columns: [
425
+ {
426
+ title: this.i18nText('1.9.417'),
427
+ dataIndex: 'title',
428
+ key: 'title',
429
+ align: 'center'
430
+ },
431
+ {
432
+ title: this.i18nText('1.2.1.4.4'),
433
+ dataIndex: 'description',
434
+ key: 'description',
435
+ align: 'center'
436
+ },
437
+ {
438
+ title: this.i18nText('1.2.1.3.24'),
439
+ dataIndex: 'updatedBy',
440
+ key: 'updatedBy',
441
+ align: 'center',
442
+ scopedSlots: { customRender: 'operation' }
443
+ },
444
+ {
445
+ title: 'icon',
446
+ dataIndex: 'icon',
447
+ key: 'icon',
448
+ align: 'center',
449
+ scopedSlots: { customRender: 'icon' }
450
+ }
451
+ ],
452
+ submitData: { setting: {} },
453
+ id: '',
454
+ originSetting: {},
455
+ broadcastList: {
456
+ PC: {
457
+ isChecked: false,
458
+ list: []
459
+ },
460
+ MOBILE: {
461
+ isChecked: false,
462
+ list: []
463
+ }
464
+ },
465
+ robotList: [],
466
+ variableSetting: [
467
+ {
468
+ name: 'QUEUE_NOTICE_TIME',
469
+ value: '5',
470
+ remark: '每个会话平均时长'
471
+ }
472
+ ],
473
+ chatPublicCategoryList: [],
474
+ chatPublicCategory: '',
475
+ rightClickSetting: [],
476
+ rightClickDoList: [
477
+ { label: '撤回', value: 'rollBack' },
478
+ { label: '外部地址', value: 'jumpUrl' },
479
+ { label: '重新发送', value: 'resend' }
480
+ ],
481
+ clientInfo: {},
482
+ mobileUrl: '',
483
+ pcUrl: '',
484
+ refuseReasonList: [],
485
+ transferReasonList: []
486
+ };
487
+ },
488
+ computed: {
489
+ ...mapGetters(['userInfo', 'assemblySetting']),
490
+ orgId() {
491
+ return this.userInfo?.sysParams?.orgId;
492
+ },
493
+ isConference() {
494
+ return this.assemblySetting?.type == 'conference';
495
+ },
496
+ isStaff() {
497
+ return this.assemblySetting?.type == 'staff';
498
+ },
499
+ tabBarMobileEnable() {
500
+ const isChecked = this.tabBarSetting?.mobileSetting?.isChecked;
501
+ return isChecked == 'Y';
502
+ },
503
+ handleRightClickSpan() {
504
+ return function(item) {
505
+ if (item.rightClickDo === 'jumpUrl') return 5;
506
+ return 11;
507
+ };
508
+ }
509
+ },
510
+ beforeCreate() {
511
+ this.form = this.$form.createForm(this, { name: 'strategy-condition' });
512
+ },
513
+ created() {
514
+ this.init();
515
+ this.getBaseInfo();
516
+ if (!this.isConference) {
517
+ this.getRobotAll();
518
+ }
519
+ },
520
+ watch: {},
521
+ methods: {
522
+ filterOption(...args) {
523
+ return vexutils.filterOption.apply(this, args);
524
+ },
525
+ init() {
526
+ this.mobileUrl = `${location.origin}${this.webURL}/h5/#/multiChat?assemblyId=${this.assemblyId || 'xxx'}&orgId=${this.orgId || 'xxx'}&userId=xxx&userType=xxx&name=xxx`;
527
+ this.pcUrl = `${location.origin}${this.webURL}/web/#/multiChat?isOriginPage=1&assemblyId=${this.assemblyId || 'xxx'}&orgId=${this.orgId || 'xxx'}&userId=xxx&userType=xxx&name=xxx`;
528
+ },
529
+ /* 入口 */
530
+ getBaseInfo() {
531
+ fetch
532
+ .get('/chat/event/getSysBaseInformation', {
533
+ params: {
534
+ assemblyId: this.assemblyId,
535
+ type: 'BASE_INFORMATION'
536
+ }
537
+ })
538
+ .then(({ data }) => {
539
+ if (data.result === 'SUCCESS') {
540
+ const chatPublicCategoryList = data.map?.chatPublicCategoryList || [];
541
+ this.chatPublicCategoryList = chatPublicCategoryList.filter(v => v);
542
+ let info = data.map.imformation[0];
543
+ if (info) {
544
+ this.id = info.id || null;
545
+ let setting = info.settingObj;
546
+ this.originSetting = setting;
547
+ this.fillInfoData(setting);
548
+ }
549
+ }
550
+ });
551
+ },
552
+ /* 编辑回填 */
553
+ fillInfoData(setting) {
554
+ let {
555
+ timingSettingSwitch,
556
+ timingSetting,
557
+ serverSetting,
558
+ clientSetting,
559
+ queryTimeSetting = [],
560
+ robotObj,
561
+ robotSetting,
562
+ toolbar = [],
563
+ isListClassify,
564
+ listClassify = [],
565
+ rightClickSetting = [],
566
+ variableSetting = [],
567
+ chatPublicCategory,
568
+ evaluate,
569
+ readStatus,
570
+ lineUpNotice,
571
+ broadcast
572
+ } = setting;
573
+ this.readStatus = readStatus === 'Y';
574
+ this.lineUpNotice = lineUpNotice === 'Y';
575
+ this.showTimeSetting = timingSettingSwitch === '1';
576
+ this.isListClassify = isListClassify;
577
+ this.rightClickSetting = rightClickSetting;
578
+ this.variableSetting = variableSetting;
579
+ // 拒绝原因
580
+ this.refuseReasonList = setting?.refuseReasonSetting?.list || [];
581
+ // 转接原因
582
+ this.transferReasonList = setting?.transferReasonSetting?.list || [];
583
+ if (chatPublicCategory) {
584
+ this.chatPublicCategory = chatPublicCategory.split(',');
585
+ } else {
586
+ this.chatPublicCategory = [];
587
+ }
588
+ this.fillListClassify(listClassify);
589
+ this.$nextTick(() => {
590
+ this.fillServiceSetting(serverSetting);
591
+ });
592
+ this.fillClientSetting(clientSetting);
593
+ this.fillToolbar(toolbar);
594
+ this.fillQueryTimeSetting(queryTimeSetting);
595
+ this.fillBroadcast(broadcast);
596
+ this.fillTabBar(setting.tabBarSetting);
597
+ this.$nextTick().then(() => {
598
+ this.fillTimeSetting(timingSetting);
599
+ });
600
+ if (robotObj?.switch) {
601
+ this.showBotSetting = true;
602
+ let { secretId, secretKey, botId } = robotObj;
603
+ this.$nextTick().then(() => {
604
+ !this.isConference &&
605
+ !this.isStaff &&
606
+ this.form.setFieldsValue({
607
+ secretKey,
608
+ secretId,
609
+ botId
610
+ });
611
+ });
612
+ }
613
+ !this.isConference && !this.isStaff && this.fillRobotSetting(robotSetting);
614
+ if (evaluate) {
615
+ this.evaluate = evaluate.isChecked === 'Y';
616
+ this.evaluateId = evaluate.id;
617
+ }
618
+ },
619
+ fillQueryTimeSetting(queryTimeSetting) {
620
+ this.queryTimeSettingList = queryTimeSetting.map(item => ({
621
+ label: item.title,
622
+ value: item.title
623
+ }));
624
+ this.queryTimeSetting = queryTimeSetting;
625
+ // let queryTimeSettingChecked = queryTimeSetting.reduce((result, item) => {
626
+ // if (item.isChecked === "Y") {
627
+ // result.push(item.title);
628
+ // }
629
+ // return result;
630
+ // }, []);
631
+ let queryTimeSettingChecked = queryTimeSetting.filter(item => item.isChecked === 'Y')[0]?.title;
632
+ this.$nextTick(() => {
633
+ this.form.setFieldsValue({ queryTimeSetting: queryTimeSettingChecked });
634
+ });
635
+ },
636
+ fillRobotSetting(robotSetting) {
637
+ if (!robotSetting) return;
638
+ let { robotId, mode } = robotSetting;
639
+ this.$nextTick(() => {
640
+ this.form.setFieldsValue({ robotId, mode });
641
+ });
642
+ },
643
+ fillBroadcast(broadcast) {
644
+ if (!broadcast) return;
645
+ for (let i in broadcast) {
646
+ let item = broadcast[i];
647
+ item.isChecked = item.isChecked == 'Y' ? true : false;
648
+ if (!item.list) {
649
+ item.list = [];
650
+ }
651
+ }
652
+ this.broadcastList = broadcast;
653
+ },
654
+ fillToolbar(toolbar) {
655
+ this.toolbarList = toolbar.map(item => ({
656
+ label: item.name,
657
+ value: item.name + '-' + item.source + '-' + item.key,
658
+ source: item.source,
659
+ isClosedAble: item.isClosedAble,
660
+ isCloseChecked: item.isCloseChecked
661
+ }));
662
+ const btwList = toolbar.filter(item => item.isClosedAble == "Y" && item.isChecked == "Y");
663
+ this.closedToolbarList = btwList.map(item => ({
664
+ label: item.name,
665
+ value: item.name + '-' + item.source + '-' + item.key,
666
+ source: item.source,
667
+ isClosedAble: item.isClosedAble,
668
+ isCloseChecked: item.isCloseChecked
669
+ }));
670
+ this.toolbar = toolbar;
671
+ let toolbarChecked = toolbar.reduce((result, item) => {
672
+ if (item.isChecked === 'Y') {
673
+ result.push(item.name + '-' + item.source + '-' + item.key);
674
+ }
675
+ return result;
676
+ }, []);
677
+ this.$nextTick(() => {
678
+ this.form.setFieldsValue({ toolbar: toolbarChecked });
679
+ });
680
+ let closedToolbarChecked = this.closedToolbarList.reduce((result, item) => {
681
+ if (item.isCloseChecked === 'Y') {
682
+ result.push(item.label + '-' + item.source + '-' + item.key);
683
+ }
684
+ return result;
685
+ }, []);
686
+ this.$nextTick(() => {
687
+ this.form.setFieldsValue({ closedToolbar: closedToolbarChecked });
688
+ });
689
+ },
690
+ toolbarChange(item, e) {
691
+ const checked = e.target.checked;
692
+ let checkedItemIndex = -1;
693
+ const checkedItems = [];
694
+ this.closedToolbarList.forEach((itm, index) => {
695
+ if (item.source == itm.source && item.value == itm.value) {
696
+ checkedItemIndex = index;
697
+ } else {
698
+ checkedItems.push(itm.value);
699
+ }
700
+ })
701
+ if (checked && checkedItemIndex == -1 && item.isClosedAble == "Y") {
702
+ this.closedToolbarList.push(item);
703
+ } else if (!checked && checkedItemIndex != -1) {
704
+ this.form.setFieldsValue({ closedToolbar: checkedItems });
705
+ this.closedToolbarList.splice(checkedItemIndex, 1);
706
+ }
707
+ },
708
+ fillTabBar(data) {
709
+ const mobileSetting = {
710
+ isChecked: 'N',
711
+ list: []
712
+ };
713
+ if (data.mobileSetting) {
714
+ mobileSetting.isChecked = data.mobileSetting.isChecked || mobileSetting.isChecked;
715
+ mobileSetting.list = (data?.mobileSetting?.list || []).map(v => {
716
+ return Object.assign({}, v, {
717
+ isChecked: v.isChecked || 'Y' // 无isChecked的旧数据设值为Y
718
+ });
719
+ });
720
+ }
721
+ this.tabBarSetting = {
722
+ mobileSetting
723
+ };
724
+ },
725
+ /* 回填时间设置 */
726
+ fillTimeSetting(timeSetting) {
727
+ if (this.isStaff) return;
728
+ let { timeLength, showMode, delayedSetting, delayed } = timeSetting;
729
+ this.timeLength = timeLength;
730
+ let timeLengthMins = ''
731
+ let timeLengthHours = ''
732
+ if (this.timeLength) {
733
+ timeLengthMins = parseInt(this.timeLength) % 60;
734
+ timeLengthHours = parseInt(parseInt(this.timeLength) / 60);
735
+ }
736
+ this.form.setFieldsValue({
737
+ timeLengthMins,
738
+ timeLengthHours,
739
+ showMode
740
+ });
741
+ if (delayed) {
742
+ this.showTimeDelay = true;
743
+ let { timeLength, rightOffRemindTime } = delayedSetting;
744
+ this.$nextTick().then(() => {
745
+ this.form.setFieldsValue({
746
+ 'delayed-timeLength': timeLength,
747
+ rightOffRemindTime
748
+ });
749
+ });
750
+ }
751
+ },
752
+ fillListClassify(listClassify) {
753
+ if (this.isListClassify !== 'Y') {
754
+ return;
755
+ }
756
+ this.listClassify = listClassify;
757
+ this.listClassify.forEach(item => {
758
+ let serverfunctionList = [];
759
+ let serverfunctions = [];
760
+ let clientfunctionList = [];
761
+ let clientfunctions = [];
762
+ item.serverFunctionSetting.map(i => {
763
+ if (i.isshow === 'Y') {
764
+ serverfunctionList.push({
765
+ label: i.fTitle,
766
+ value: i.function
767
+ });
768
+ }
769
+ if (i.isChecked === 'Y') {
770
+ serverfunctions.push(i.function);
771
+ }
772
+ });
773
+ item.clientFunctionSetting.map(i => {
774
+ if (i.isshow === 'Y') {
775
+ clientfunctionList.push({
776
+ label: i.fTitle,
777
+ value: i.function
778
+ });
779
+ }
780
+ if (i.isChecked === 'Y') {
781
+ clientfunctions.push(i.function);
782
+ }
783
+ });
784
+ if (item.enable === undefined) {
785
+ this.$set(item, 'enable', true);
786
+ }
787
+ this.$set(item, 'serverfunctionList', serverfunctionList);
788
+ this.$set(item, 'serverfunctions', serverfunctions);
789
+ this.$set(item, 'clientfunctionList', clientfunctionList);
790
+ this.$set(item, 'clientfunctions', clientfunctions);
791
+ });
792
+ },
793
+ /* 回填服务端设置 */
794
+ fillServiceSetting(serverSetting) {
795
+ let { serverInfo, functionSetting, serviceState } = serverSetting;
796
+
797
+ this.serverInfo = serverInfo;
798
+ this.$nextTick().then(() => {
799
+ !this.isStaff &&
800
+ serverInfo.map(item => {
801
+ this.form.setFieldsValue({ [item.key]: item.value });
802
+ });
803
+ });
804
+ this.serviceState = serviceState;
805
+
806
+ if (this.isListClassify === 'Y') {
807
+ return;
808
+ }
809
+
810
+ this.functionSetting = functionSetting;
811
+ this.getFunctionList();
812
+ let serverFunction = functionSetting.reduce((server, item) => {
813
+ if (item.isChecked === 'Y') {
814
+ server.push(item.function);
815
+ }
816
+ return server;
817
+ }, []);
818
+ this.form.setFieldsValue({ functionSetting: serverFunction });
819
+ },
820
+ /* 回填客户端设置 */
821
+ fillClientSetting(clientSetting) {
822
+ if (this.isListClassify === 'Y' || this.isStaff) return;
823
+ let { functionSetting } = clientSetting;
824
+ this.clientFunctionSetting = functionSetting;
825
+ this.getClientFunctionList();
826
+ let clientFunction = functionSetting.reduce((client, item) => {
827
+ if (item.isChecked === 'Y') {
828
+ client.push(item.function);
829
+ }
830
+ return client;
831
+ }, []);
832
+ this.form.setFieldsValue({ clientFunctionSetting: clientFunction });
833
+ },
834
+ getFunctionList() {
835
+ let functionList = [];
836
+ this.functionSetting.map(item => {
837
+ if (item.isshow === 'Y') {
838
+ functionList.push({
839
+ label: item.fTitle,
840
+ value: item.function
841
+ });
842
+ }
843
+ this.functionList = functionList;
844
+ });
845
+ },
846
+ getClientFunctionList() {
847
+ let clientFunctionList = [];
848
+ this.clientFunctionSetting.map(item => {
849
+ if (item.isshow === 'Y') {
850
+ clientFunctionList.push({
851
+ label: item.fTitle,
852
+ value: item.function
853
+ });
854
+ }
855
+ });
856
+ this.clientFunctionList = clientFunctionList;
857
+ },
858
+ getRowkey(record) {
859
+ return record.status;
860
+ },
861
+ handleTimeSettingShow(e) {
862
+ this.showTimeSetting = e.target.checked;
863
+ },
864
+ handleTimeDelayShow(e) {
865
+ this.showTimeDelay = e.target.checked;
866
+ },
867
+ handleBotSettingShow(e) {
868
+ this.showBotSetting = e.target.checked;
869
+ },
870
+ getRobotAll() {
871
+ this.spinningText = '3.2.8';
872
+ let url = '/robot/getAll';
873
+ return fetch.get(url).then(({ data }) => {
874
+ if (data.result === 'SUCCESS') {
875
+ let { list = [] } = data;
876
+ if (list && list.length > 0) {
877
+ this.robotList = list;
878
+ }
879
+ }
880
+ });
881
+ },
882
+ handleEvaluate(e) {
883
+ this.evaluate = e.target.checked;
884
+ },
885
+ handleStatusChange(record) {
886
+ record.enable = !record.enable;
887
+ },
888
+ handleSubmit() {
889
+ this.form.validateFields((err, values) => {
890
+ if (err) return;
891
+ let setting = {};
892
+ this.handleTimeSetting(setting, values);
893
+ this.handleToolbar(setting, values);
894
+ this.handleQueryTimeSetting(setting, values);
895
+ this.handleClassify(setting);
896
+ let validate = this.handleServiceSetting(setting, values);
897
+ if (validate) return;
898
+ let broadcastValidate = this.handleBroadcast(setting);
899
+ if (!broadcastValidate) return;
900
+ this.handleClientSetting(setting, values);
901
+ setting.robotObj = {
902
+ switch: this.showBotSetting,
903
+ secretId: this.form.getFieldValue('secretId'),
904
+ secretKey: this.form.getFieldValue('secretKey'),
905
+ botId: this.form.getFieldValue('botId')
906
+ };
907
+ setting.robotSetting = {
908
+ robotId: this.form.getFieldValue('robotId'),
909
+ mode: this.form.getFieldValue('mode')
910
+ };
911
+ setting.chatPublicCategory = this.chatPublicCategory.join(',');
912
+ setting.rightClickSetting = this.rightClickSetting;
913
+ setting.variableSetting = this.variableSetting;
914
+ setting.tabBarSetting = this.tabBarSetting;
915
+ setting.refuseReasonSetting = {
916
+ list: this.refuseReasonList
917
+ };
918
+ setting.transferReasonSetting = {
919
+ list: this.transferReasonList
920
+ }
921
+ setting = Object.assign({}, this.originSetting, setting);
922
+ if (!setting.evaluate) {
923
+ setting.evaluate = {};
924
+ }
925
+ setting.evaluate.isChecked = this.evaluate ? 'Y' : 'N';
926
+ setting.readStatus = this.readStatus ? 'Y' : 'N';
927
+ setting.lineUpNotice = this.lineUpNotice ? 'Y' : 'N';
928
+ this.submitData.setting = JSON.stringify(setting);
929
+ this.submitData.type = 'BASE_INFORMATION';
930
+ this.submitData.assemblyId = this.assemblyId;
931
+ if (this.id) {
932
+ this.submitData.id = this.id;
933
+ }
934
+
935
+ this.saveSysBaseInformation();
936
+ });
937
+ },
938
+ saveSysBaseInformation() {
939
+ fetch.post('/chat/event/saveSysBaseInformation', qs.stringify(this.submitData)).then(({ data }) => {
940
+ if (data.result === 'SUCCESS') {
941
+ this.dispatchEvent('set_sysInfoSuccess', data.map);
942
+ this.$message.success(this.i18nText('1.10.52'));
943
+ }
944
+ });
945
+ },
946
+ handleClassify(setting) {
947
+ if (this.isListClassify !== 'Y') return;
948
+ let listClassify = JSON.parse(JSON.stringify(this.listClassify));
949
+ listClassify.forEach(item => {
950
+ item.serverFunctionSetting.map(i => {
951
+ if (item.serverfunctions.includes(i.function)) {
952
+ i.isChecked = 'Y';
953
+ } else {
954
+ i.isChecked = 'N';
955
+ }
956
+ });
957
+ item.clientFunctionSetting.map(i => {
958
+ if (item.clientfunctions.includes(i.function)) {
959
+ i.isChecked = 'Y';
960
+ } else {
961
+ i.isChecked = 'N';
962
+ }
963
+ });
964
+ delete item.serverfunctions;
965
+ delete item.serverfunctionList;
966
+ delete item.clientfunctions;
967
+ delete item.clientfunctionList;
968
+ });
969
+ setting.listClassify = listClassify;
970
+ },
971
+ handleQueryTimeSetting(setting, values) {
972
+ if (this.queryTimeSettingList.length === 0) return;
973
+ let { queryTimeSetting } = values;
974
+ let clone = JSON.parse(JSON.stringify(this.queryTimeSetting));
975
+ setting.queryTimeSetting = clone.reduce((result, item) => {
976
+ if (queryTimeSetting === item.title) {
977
+ item.isChecked = 'Y';
978
+ } else {
979
+ item.isChecked = 'N';
980
+ }
981
+ result.push(item);
982
+ return result;
983
+ }, []);
984
+ },
985
+ handleToolbar(setting, values) {
986
+ if (this.toolbarList.length === 0) return;
987
+ let { toolbar, closedToolbar } = values;
988
+ let clone = JSON.parse(JSON.stringify(this.toolbar));
989
+ setting.toolbar = clone.reduce((result, item) => {
990
+ if (toolbar.includes(item.name + '-' + item.source + '-' + item.key)) {
991
+ item.isChecked = 'Y';
992
+ } else {
993
+ item.isChecked = 'N';
994
+ }
995
+ if (closedToolbar.includes(item.name + '-' + item.source + '-' + item.key)) {
996
+ item.isCloseChecked = 'Y';
997
+ } else {
998
+ item.isCloseChecked = 'N';
999
+ }
1000
+ result.push(item);
1001
+ return result;
1002
+ }, []);
1003
+ },
1004
+ /* 客户端设置 */
1005
+ handleClientSetting(setting, values) {
1006
+ if (this.isListClassify === 'Y') return;
1007
+ setting.clientSetting = {
1008
+ functionSetting: []
1009
+ };
1010
+ let { clientFunctionSetting } = values;
1011
+ let clientFunctionClone = JSON.parse(JSON.stringify(this.clientFunctionSetting));
1012
+ setting.clientSetting.functionSetting = clientFunctionClone.reduce((result, func) => {
1013
+ if (clientFunctionSetting.includes(func.function)) {
1014
+ func.isChecked = 'Y';
1015
+ } else {
1016
+ func.isChecked = 'N';
1017
+ }
1018
+ result.push(func);
1019
+ return result;
1020
+ }, []);
1021
+ },
1022
+ /* 服务端设置 */
1023
+ handleServiceSetting(setting, values) {
1024
+ setting.serverSetting = {
1025
+ serverInfo: {},
1026
+ functionSetting: [],
1027
+ serviceState: []
1028
+ };
1029
+
1030
+ this.serverInfo.map(item => {
1031
+ item.value = this.form.getFieldValue(item.key);
1032
+ });
1033
+ for (let i = 0; i < this.serverInfo.length; i++) {
1034
+ let info = this.serverInfo[i];
1035
+ if (!info.value && info.key != 'customerName' && !this.isStaff) {
1036
+ this.$message.error(`${info.title} ${this.i18nText('1.9.430')}!`);
1037
+ return true;
1038
+ }
1039
+ }
1040
+ setting.serverSetting.serverInfo = this.serverInfo;
1041
+ if (this.isListClassify === 'Y') return;
1042
+ let { functionSetting } = values;
1043
+ let functionSettingClone = JSON.parse(JSON.stringify(this.functionSetting));
1044
+ setting.serverSetting.functionSetting = functionSettingClone.reduce((result, func) => {
1045
+ if (functionSetting.includes(func.function)) {
1046
+ func.isChecked = 'Y';
1047
+ } else {
1048
+ func.isChecked = 'N';
1049
+ }
1050
+ result.push(func);
1051
+ return result;
1052
+ }, []);
1053
+ setting.serverSetting.serviceState = this.serviceState;
1054
+ },
1055
+ handleBroadcast(setting) {
1056
+ setting.broadcast = {};
1057
+ for (let i in this.broadcastList) {
1058
+ let broadcastItem = this.broadcastList[i];
1059
+ for (let j = 0; j < broadcastItem.list.length; j++) {
1060
+ let item = broadcastItem.list[j];
1061
+ if (!item.content) {
1062
+ this.$message.error(`${this.i18nText('1.2.1.11.60')}!`);
1063
+ return false;
1064
+ }
1065
+ }
1066
+ }
1067
+ let copyList = JSON.parse(JSON.stringify(this.broadcastList));
1068
+ for (let i in copyList) {
1069
+ let item = copyList[i];
1070
+ item.isChecked = item.isChecked ? 'Y' : 'N';
1071
+ }
1072
+ setting.broadcast = copyList;
1073
+ return true;
1074
+ },
1075
+ /* 聊天设置 */
1076
+ handleTimeSetting(setting, values) {
1077
+ setting.timingSettingSwitch = this.showTimeSetting ? '1' : '0';
1078
+ setting.timingSetting = {};
1079
+ if (this.showTimeSetting) {
1080
+ let { showMode, timeLengthMins, timeLengthHours } = values;
1081
+ let settingMins = timeLengthMins ? timeLengthMins : 0;
1082
+ let settingHours = timeLengthHours ? timeLengthHours : 0;
1083
+ this.timeLength = settingMins + settingHours * 60;
1084
+ Object.assign(setting.timingSetting, { timeLength: this.timeLength, showMode });
1085
+ setting.timingSetting.delayedSetting = {};
1086
+ }
1087
+ if (this.showTimeDelay && this.showTimeSetting) {
1088
+ let { 'delayed-timeLength': timeLength, rightOffRemindTime } = values;
1089
+ setting.timingSetting.delayed = true;
1090
+ Object.assign(setting.timingSetting.delayedSetting, {
1091
+ timeLength,
1092
+ rightOffRemindTime
1093
+ });
1094
+ }
1095
+ },
1096
+ handleCancel() {},
1097
+ handleClassifyToggle(item, e) {
1098
+ this.$set(item, 'isChecked', e.target.checked ? 'Y' : 'N');
1099
+ },
1100
+ handleStatisticToggle(item, e) {
1101
+ item.isStatistic = e.target.checked ? 'Y' : 'N';
1102
+ },
1103
+ handleCheckInput(v, item, key = 'isChecked') {
1104
+ item[key] = v ? 'Y' : 'N';
1105
+ },
1106
+ addBroadcast(type, list) {
1107
+ let item = {
1108
+ content: '',
1109
+ url: ''
1110
+ };
1111
+ list.push(item);
1112
+ },
1113
+ deleteBroadcast(index, list) {
1114
+ list.splice(index, 1);
1115
+ },
1116
+ addRightClick() {
1117
+ this.rightClickSetting = this.rightClickSetting.concat({
1118
+ rightClickName: '',
1119
+ rightClickUrl: '',
1120
+ rightClickDo: ''
1121
+ });
1122
+ },
1123
+ deleteRightClick(index) {
1124
+ this.rightClickSetting.splice(index, 1);
1125
+ },
1126
+ handleGroupUp(index) {
1127
+ if (index === 0) {
1128
+ let current = this.listClassify[index];
1129
+ let nextList = this.listClassify.slice(1);
1130
+ this.listClassify = [].concat(nextList, current);
1131
+ } else {
1132
+ let current = this.listClassify[index];
1133
+ let preList = this.listClassify.slice(0, index - 1);
1134
+ let nextList = this.listClassify.slice(index - 1);
1135
+ nextList.splice(1, 1);
1136
+ this.listClassify = [].concat(preList, current, nextList);
1137
+ }
1138
+ },
1139
+ refuseReasonAdd() {
1140
+ this.refuseReasonList.push({
1141
+ text: ''
1142
+ });
1143
+ },
1144
+ transferReasonAdd() {
1145
+ this.transferReasonList.push({
1146
+ text: ''
1147
+ });
1148
+ },
1149
+ refuseReasonDel(i) {
1150
+ this.refuseReasonList.splice(i, 1);
1151
+ },
1152
+ transferReasonDel(i) {
1153
+ this.transferReasonList.splice(i, 1);
1154
+ },
1155
+ handleRightOffRemindTimeBlur(event) {
1156
+ const v = this.form.getFieldValue('timeLength') || 0;
1157
+ // 限制 到期提醒 输入 数据不能大于等于会话时长
1158
+ if (v && v <= event.target.value) {
1159
+ this.form.setFieldsValue({
1160
+ rightOffRemindTime: v - 1
1161
+ });
1162
+ }
1163
+ }
1164
+ }
1165
+ };
1166
+ </script>
1167
+
1168
+ <style lang="less" scoped>
1169
+ .chat-base-info {
1170
+ height: 100%;
1171
+ display: flex;
1172
+ flex-direction: column;
1173
+ padding: 15px;
1174
+ padding-bottom: 0;
1175
+ .main-form {
1176
+ overflow: auto;
1177
+ &::-webkit-scrollbar {
1178
+ width: 5px;
1179
+ }
1180
+ }
1181
+ .page-title {
1182
+ font-weight: 500;
1183
+ color: #2e2e2e;
1184
+ font-size: 16px;
1185
+ }
1186
+ .main-form {
1187
+ flex: 1;
1188
+ }
1189
+ .setting-hours-text {
1190
+ margin-right: 15px;
1191
+ }
1192
+ .time-setting,
1193
+ .delayed-setting {
1194
+ padding-left: 20px;
1195
+ /deep/ .ant-form-item {
1196
+ display: flex;
1197
+ }
1198
+ }
1199
+ .delayed-setting {
1200
+ margin-left: 30px;
1201
+ .unit {
1202
+ display: inline-block;
1203
+ margin-left: 10px;
1204
+ }
1205
+ }
1206
+ /deep/ .ant-form-item {
1207
+ margin-bottom: 0;
1208
+ }
1209
+ /deep/ .ant-form-item-children {
1210
+ display: flex;
1211
+ align-items: center;
1212
+ }
1213
+ .server-form-item {
1214
+ /deep/ .ant-form-item-children {
1215
+ flex-wrap: wrap;
1216
+ }
1217
+ }
1218
+ .functional-module {
1219
+ margin-bottom: 30px;
1220
+ .title {
1221
+ color: #506493;
1222
+ line-height: 22px;
1223
+ padding-left: 8px;
1224
+ border-left: 3px solid #5585f5;
1225
+ }
1226
+ .broadcaste-wrap {
1227
+ .broadcaste-title {
1228
+ display: flex;
1229
+ align-items: center;
1230
+ margin: 8px 0;
1231
+ > span {
1232
+ margin: 0 8px;
1233
+ }
1234
+ }
1235
+ .broadcaste-item {
1236
+ display: flex;
1237
+ align-items: center;
1238
+ margin-bottom: 4px;
1239
+ > div {
1240
+ display: flex;
1241
+ align-items: center;
1242
+ width: 40%;
1243
+ .item-title {
1244
+ width: 60px;
1245
+ margin: 4px;
1246
+ }
1247
+ }
1248
+ }
1249
+ }
1250
+ .client-url {
1251
+ margin-bottom: 8px;
1252
+ }
1253
+ }
1254
+ /deep/ .ant-table-thead > tr > th,
1255
+ /deep/ .ant-table-tbody > tr > td {
1256
+ padding: 4px 30px;
1257
+ }
1258
+ .form-bottom {
1259
+ display: flex;
1260
+ align-items: center;
1261
+ margin-top: auto;
1262
+ margin-left: -15px;
1263
+ padding-left: 15px;
1264
+ height: 49px;
1265
+ box-shadow: 0px -3px 8px 2px rgba(239, 243, 255, 1);
1266
+ border-top: 1px solid #b8c5e2;
1267
+ }
1268
+ .title-input {
1269
+ width: 150px;
1270
+ margin-right: 20px;
1271
+ text-align: center;
1272
+ }
1273
+ .bot-setting {
1274
+ /deep/ .ant-form-item {
1275
+ display: flex;
1276
+ }
1277
+ }
1278
+ .serverinfo-wrapper {
1279
+ display: flex;
1280
+ align-items: center;
1281
+ }
1282
+ .serverinfo-label {
1283
+ display: inline-block;
1284
+ width: 100px;
1285
+ padding-right: 8px;
1286
+ overflow: hidden;
1287
+ text-overflow: ellipsis;
1288
+ white-space: nowrap;
1289
+ }
1290
+ .classify-wrapper {
1291
+ display: flex;
1292
+ align-items: flex-start;
1293
+ .classify-item {
1294
+ margin-left: 10px;
1295
+ margin-bottom: 8px;
1296
+ padding: 10px;
1297
+ border: 1px solid #b8c5e2;
1298
+ background-color: #f6f7fa;
1299
+ .name {
1300
+ display: inline-block;
1301
+ width: 80px;
1302
+ }
1303
+ .statistic {
1304
+ display: flex;
1305
+ align-items: center;
1306
+ justify-content: space-between;
1307
+ margin-bottom: 10px;
1308
+ }
1309
+ .server {
1310
+ margin-bottom: 10px;
1311
+ }
1312
+ }
1313
+ }
1314
+ .rightClickSetting {
1315
+ /deep/ .ant-form-item {
1316
+ display: flex;
1317
+ }
1318
+ }
1319
+ .ASC_DESC {
1320
+ /deep/ .ant-form-item-control-wrapper {
1321
+ display: flex;
1322
+ align-items: center;
1323
+ }
1324
+ }
1325
+ .refuse-item {
1326
+ margin-bottom: 8px;
1327
+ display: flex;
1328
+ align-items: center;
1329
+ .ant-input {
1330
+ max-width: 348px;
1331
+ margin-right: 15px;
1332
+ }
1333
+ }
1334
+ .refuse-add-btn {
1335
+ border: none;
1336
+ }
1337
+ /deep/ .rightClick-form {
1338
+ .ant-form-item-control-wrapper {
1339
+ width: 100%;
1340
+ }
1341
+ }
1342
+ }
1343
+ </style>