cnhis-design-vue 2.1.58 → 2.1.59

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 (572) hide show
  1. package/.prettierrc.js +27 -27
  2. package/CHANGELOG.md +2610 -2641
  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 +345 -333
  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 +724 -436
  39. package/es/fabric-chart/style.css +1 -1
  40. package/es/form/index.js +8 -8
  41. package/es/form-model/index.js +8 -8
  42. package/es/form-table/index.js +144 -144
  43. package/es/grid/index.js +4 -4
  44. package/es/index/index.js +1965 -1650
  45. package/es/index/style.css +1 -1
  46. package/es/input/index.js +11 -11
  47. package/es/input-number/index.js +8 -8
  48. package/es/keep-cache/index.js +9 -9
  49. package/es/layout/index.js +8 -8
  50. package/es/list/index.js +8 -8
  51. package/es/locale-provider/index.js +8 -8
  52. package/es/map/index.js +13 -13
  53. package/es/mentions/index.js +8 -8
  54. package/es/menu/index.js +8 -8
  55. package/es/message/index.js +8 -8
  56. package/es/multi-chat/index.js +116 -116
  57. package/es/multi-chat-client/index.js +110 -110
  58. package/es/multi-chat-history/index.js +6 -6
  59. package/es/multi-chat-record/index.js +27 -27
  60. package/es/multi-chat-setting/index.js +43 -43
  61. package/es/multi-chat-sip/index.js +1 -1
  62. package/es/notification/index.js +8 -8
  63. package/es/page-header/index.js +8 -8
  64. package/es/pagination/index.js +8 -8
  65. package/es/popconfirm/index.js +8 -8
  66. package/es/popover/index.js +8 -8
  67. package/es/progress/index.js +8 -8
  68. package/es/radio/index.js +17 -17
  69. package/es/rate/index.js +8 -8
  70. package/es/result/index.js +8 -8
  71. package/es/row/index.js +8 -8
  72. package/es/scale-container/index.js +1 -1
  73. package/es/scale-view/index.js +158 -158
  74. package/es/select/index.js +44 -44
  75. package/es/select-label/index.js +50 -50
  76. package/es/select-person/index.js +20 -20
  77. package/es/shortcut-setter/index.js +10 -10
  78. package/es/skeleton/index.js +8 -8
  79. package/es/slider/index.js +8 -8
  80. package/es/space/index.js +8 -8
  81. package/es/spin/index.js +8 -8
  82. package/es/statistic/index.js +8 -8
  83. package/es/steps/index.js +8 -8
  84. package/es/switch/index.js +8 -8
  85. package/es/table-filter/index.js +253 -238
  86. package/es/table-filter/style.css +1 -1
  87. package/es/tabs/index.js +8 -8
  88. package/es/tag/index.js +9 -9
  89. package/es/time-picker/index.js +8 -8
  90. package/es/timeline/index.js +8 -8
  91. package/es/tooltip/index.js +8 -8
  92. package/es/transfer/index.js +8 -8
  93. package/es/tree/index.js +8 -8
  94. package/es/tree-select/index.js +8 -8
  95. package/es/upload/index.js +8 -8
  96. package/es/utils/clickoutside.js +7 -7
  97. package/es/utils/kty.min-1.0.0.js +5 -5
  98. package/es/utils/time-domain.js +16 -16
  99. package/es/utils/utils-map.js +32 -32
  100. package/es/utils/vexutils.js +27 -27
  101. package/es/verification-code/index.js +2 -2
  102. package/lib/cui.common.js +2045 -1730
  103. package/lib/cui.umd.js +2045 -1730
  104. package/lib/cui.umd.min.js +20 -20
  105. package/package.json +110 -110
  106. package/packages/affix/index.js +12 -12
  107. package/packages/affix/src/Affix.jsx +12 -12
  108. package/packages/age/index.js +27 -27
  109. package/packages/age/src/age/index.vue +139 -139
  110. package/packages/age/src/age-com/index.vue +209 -209
  111. package/packages/alert/index.js +12 -12
  112. package/packages/alert/src/Alert.jsx +11 -11
  113. package/packages/anchor/index.js +18 -18
  114. package/packages/anchor/src/Anchor.jsx +11 -11
  115. package/packages/anchor/src/Link.jsx +11 -11
  116. package/packages/auto-complete/index.js +12 -12
  117. package/packages/auto-complete/src/AutoComplete.jsx +12 -12
  118. package/packages/avatar/index.js +12 -12
  119. package/packages/avatar/src/Avatar.jsx +11 -11
  120. package/packages/back-top/index.js +12 -12
  121. package/packages/back-top/src/BackTop.jsx +11 -11
  122. package/packages/badge/index.js +12 -12
  123. package/packages/badge/src/Badge.jsx +11 -11
  124. package/packages/base/index.js +3 -3
  125. package/packages/big-table/index.js +16 -16
  126. package/packages/big-table/src/BigTable.vue +3150 -3144
  127. package/packages/big-table/src/Fieldset.vue +2067 -2067
  128. package/packages/big-table/src/assets/iconfont/iconfont.css +21 -21
  129. package/packages/big-table/src/assets/style/table-base.less +385 -385
  130. package/packages/big-table/src/assets/style/table-global.less +175 -175
  131. package/packages/big-table/src/components/AutoLayoutButton.vue +279 -279
  132. package/packages/big-table/src/components/NoData.vue +81 -81
  133. package/packages/big-table/src/components/TextOverTooltip.vue +120 -120
  134. package/packages/big-table/src/components/edit-form/EditForm.vue +509 -509
  135. package/packages/big-table/src/components/edit-form/edit-component/config-data/index.js +68 -68
  136. package/packages/big-table/src/components/edit-form/edit-component/edit-date-picker/edit-date-picker.vue +60 -60
  137. package/packages/big-table/src/components/edit-form/edit-component/edit-digital/edit-digital.vue +54 -54
  138. package/packages/big-table/src/components/edit-form/edit-component/edit-input/edit-input.vue +39 -39
  139. package/packages/big-table/src/components/edit-form/edit-component/edit-input-password/edit-input-password.vue +79 -79
  140. package/packages/big-table/src/components/edit-form/edit-component/edit-month-picker/edit-month-picker.vue +37 -37
  141. package/packages/big-table/src/components/edit-form/edit-component/edit-search/edit-search.vue +82 -82
  142. package/packages/big-table/src/components/edit-form/edit-component/edit-search-more/edit-search-more.vue +95 -95
  143. package/packages/big-table/src/components/edit-form/edit-component/edit-select/edit-select.vue +40 -40
  144. package/packages/big-table/src/components/edit-form/edit-component/edit-select-multiple/edit-select-multiple.vue +55 -55
  145. package/packages/big-table/src/components/edit-form/edit-component/edit-switch/edit-switch.vue +43 -43
  146. package/packages/big-table/src/components/edit-form/edit-component/edit-textarea/edit-textarea.vue +41 -41
  147. package/packages/big-table/src/components/edit-form/edit-component/edit-time-picker/edit-time-picker.vue +40 -40
  148. package/packages/big-table/src/components/edit-form/edit-component/mixins/bound-date.js +3 -3
  149. package/packages/big-table/src/components/edit-form/edit-component/mixins/dateType.js +217 -217
  150. package/packages/big-table/src/components/edit-form/edit-component/mixins/item-default.js +639 -639
  151. package/packages/big-table/src/components/edit-form/edit-component/mixins/search.js +1247 -1247
  152. package/packages/big-table/src/components/edit-form/edit-component/register-com.js +26 -26
  153. package/packages/big-table/src/components/edit-form/edit-item/form-event.js +80 -80
  154. package/packages/big-table/src/components/edit-form/edit-item/global-props.js +33 -33
  155. package/packages/big-table/src/components/edit-form/edit-item/index.js +4 -4
  156. package/packages/big-table/src/components/edit-form/edit-item/render-methods.js +28 -28
  157. package/packages/big-table/src/components/edit-form/edit-item/validate-rules.js +463 -463
  158. package/packages/big-table/src/components/edit-form/edit-mixins/form-commom.js +673 -673
  159. package/packages/big-table/src/components/edit-form/edit-mixins/index.js +3 -3
  160. package/packages/big-table/src/components/edit-form/edit-utils/index.js +112 -112
  161. package/packages/big-table/src/components/password-com.vue +58 -58
  162. package/packages/big-table/src/components/player-vod/index.vue +57 -57
  163. package/packages/big-table/src/components/player-vod/player.vue +189 -189
  164. package/packages/big-table/src/components/player-vod/video-list.vue +265 -265
  165. package/packages/big-table/src/components/player-vod/video-modal.vue +126 -126
  166. package/packages/big-table/src/utils/CustomPagination.vue +86 -86
  167. package/packages/big-table/src/utils/batchEditing.js +610 -610
  168. package/packages/big-table/src/utils/bigTableProps.js +103 -103
  169. package/packages/big-table/src/utils/format.js +557 -557
  170. package/packages/big-table/src/utils/nestTable.js +109 -109
  171. package/packages/big-table/src/utils/tableParse.js +234 -234
  172. package/packages/breadcrumb/index.js +21 -21
  173. package/packages/breadcrumb/src/Breadcrumb.jsx +11 -11
  174. package/packages/breadcrumb/src/BreadcrumbItem.jsx +11 -11
  175. package/packages/breadcrumb/src/BreadcrumbSeparator.jsx +11 -11
  176. package/packages/button/index.js +21 -21
  177. package/packages/button/src/Button.jsx +11 -11
  178. package/packages/button/src/ButtonGroup.jsx +11 -11
  179. package/packages/button/src/ButtonPrint/components/IdentityVerification.vue +181 -181
  180. package/packages/button/src/ButtonPrint/index.vue +766 -766
  181. package/packages/button/src/ButtonPrint/mixin/his-print.js +95 -95
  182. package/packages/calendar/index.js +12 -12
  183. package/packages/calendar/src/Calendar.jsx +11 -11
  184. package/packages/captcha/index.js +9 -9
  185. package/packages/captcha/src/Captcha.vue +164 -164
  186. package/packages/captcha/src/Index.vue +47 -47
  187. package/packages/captcha/src/SlideVerify.vue +285 -285
  188. package/packages/card/index.js +21 -21
  189. package/packages/card/src/Card.jsx +12 -12
  190. package/packages/card/src/CardGrid.js +7 -7
  191. package/packages/card/src/CardMeta.js +7 -7
  192. package/packages/carousel/index.js +12 -12
  193. package/packages/carousel/src/Carousel.jsx +12 -12
  194. package/packages/cascader/index.js +12 -12
  195. package/packages/cascader/src/Cascader.jsx +11 -11
  196. package/packages/checkbox/index.js +30 -30
  197. package/packages/checkbox/src/Checkbox.jsx +11 -11
  198. package/packages/checkbox/src/CheckboxImg/index.vue +141 -141
  199. package/packages/checkbox/src/Group.jsx +11 -11
  200. package/packages/col/index.js +13 -13
  201. package/packages/col/src/Col.jsx +11 -11
  202. package/packages/collapse/index.js +18 -18
  203. package/packages/collapse/src/Collapse.jsx +11 -11
  204. package/packages/collapse/src/Panel.jsx +11 -11
  205. package/packages/color-picker/index.js +10 -10
  206. package/packages/color-picker/src/color-picker.vue +191 -191
  207. package/packages/color-picker/src/style.less +109 -109
  208. package/packages/comment/index.js +12 -12
  209. package/packages/comment/src/Comment.jsx +11 -11
  210. package/packages/config-provider/index.js +12 -12
  211. package/packages/config-provider/src/ConfigProvider.jsx +11 -11
  212. package/packages/date-picker/index.js +26 -26
  213. package/packages/date-picker/src/DatePicker.jsx +12 -12
  214. package/packages/date-picker/src/MonthPicker.jsx +11 -11
  215. package/packages/date-picker/src/RangePicker.jsx +11 -11
  216. package/packages/date-picker/src/WeekPicker.jsx +11 -11
  217. package/packages/date-picker/src/utils/index.js +374 -374
  218. package/packages/descriptions/index.js +18 -18
  219. package/packages/descriptions/src/Descriptions.jsx +11 -11
  220. package/packages/descriptions/src/Item.jsx +11 -11
  221. package/packages/divider/index.js +12 -12
  222. package/packages/divider/src/Divider.jsx +11 -11
  223. package/packages/drag-layout/DragFormLeftItem.vue +173 -173
  224. package/packages/drag-layout/DragFormRightItem.vue +284 -284
  225. package/packages/drag-layout/I18n-mixins.js +10 -10
  226. package/packages/drag-layout/drag-layout.vue +778 -778
  227. package/packages/drag-layout/index.js +12 -12
  228. package/packages/drawer/index.js +12 -12
  229. package/packages/drawer/src/Drawer.jsx +11 -11
  230. package/packages/dropdown/index.js +12 -12
  231. package/packages/dropdown/src/Dropdown.jsx +11 -11
  232. package/packages/editor/index.js +9 -9
  233. package/packages/ellipsis/index.js +8 -8
  234. package/packages/ellipsis/src/Ellipsis.vue +65 -65
  235. package/packages/empty/index.js +12 -12
  236. package/packages/empty/src/Empty.jsx +11 -11
  237. package/packages/fabric-chart/index.js +9 -9
  238. package/packages/fabric-chart/src/FabricGrid.vue +67 -66
  239. package/packages/fabric-chart/src/components/DropPopup.vue +90 -90
  240. package/packages/fabric-chart/src/components/MouseRightClick.vue +168 -168
  241. package/packages/fabric-chart/src/components/TimeScaleValue.vue +114 -115
  242. package/packages/fabric-chart/src/const/defaultVaule.js +60 -59
  243. package/packages/fabric-chart/src/fabric-chart/FabricCanvas.vue +43 -9
  244. package/packages/fabric-chart/src/fabric-chart/FabricLines.vue +579 -552
  245. package/packages/fabric-chart/src/fabric-chart/FabricPolylines.vue +1142 -1126
  246. package/packages/fabric-chart/src/fabric-chart/FabricScaleValue.vue +134 -134
  247. package/packages/fabric-chart/src/fabric-chart/FabricTextGroup.vue +574 -566
  248. package/packages/fabric-chart/src/mixins/eventCommon.js +34 -1
  249. package/packages/fabric-chart/src/mixins/fabricCommon.js +95 -95
  250. package/packages/fabric-chart/src/mixins/fabricObject.js +193 -193
  251. package/packages/fabric-chart/src/mixins/type.js +5 -5
  252. package/packages/form/index.js +16 -16
  253. package/packages/form/src/Form.jsx +11 -11
  254. package/packages/form/src/Item.jsx +11 -11
  255. package/packages/form-model/index.js +14 -14
  256. package/packages/form-model/src/FormModel.jsx +11 -11
  257. package/packages/form-model/src/Item.jsx +11 -11
  258. package/packages/form-table/index.js +16 -16
  259. package/packages/form-table/src/FormTable.vue +1110 -1110
  260. package/packages/form-table/src/components/table-component/config-data/index.js +80 -80
  261. package/packages/form-table/src/components/table-component/global-props.js +22 -22
  262. package/packages/form-table/src/components/table-component/index.js +8 -8
  263. package/packages/form-table/src/components/table-component/mixins/bound-date.js +455 -455
  264. package/packages/form-table/src/components/table-component/mixins/dateType.js +217 -217
  265. package/packages/form-table/src/components/table-component/mixins/item-default.js +257 -257
  266. package/packages/form-table/src/components/table-component/mixins/search.js +1242 -1242
  267. package/packages/form-table/src/components/table-component/register-com.js +30 -30
  268. package/packages/form-table/src/components/table-component/table-age/table-age.vue +175 -175
  269. package/packages/form-table/src/components/table-component/table-date-picker/table-date-picker.vue +87 -87
  270. package/packages/form-table/src/components/table-component/table-digital/table-digital.vue +93 -93
  271. package/packages/form-table/src/components/table-component/table-input/table-input.vue +81 -81
  272. package/packages/form-table/src/components/table-component/table-input-password/table-input-password.vue +126 -126
  273. package/packages/form-table/src/components/table-component/table-month-picker/table-month-picker.vue +55 -55
  274. package/packages/form-table/src/components/table-component/table-search/table-search.vue +174 -174
  275. package/packages/form-table/src/components/table-component/table-search-more/table-search-more.vue +191 -191
  276. package/packages/form-table/src/components/table-component/table-select/table-select.vue +64 -64
  277. package/packages/form-table/src/components/table-component/table-select-multiple/table-select-multiple.vue +81 -81
  278. package/packages/form-table/src/components/table-component/table-textarea/table-textarea.vue +76 -76
  279. package/packages/form-table/src/components/table-component/table-time-picker/table-time-picker.vue +55 -55
  280. package/packages/form-table/src/components/table-component/table-tree-select/table-tree-select.vue +135 -135
  281. package/packages/form-table/src/components/table-component/text-over-tooltip/TextOverTooltip.vue +97 -97
  282. package/packages/form-table/src/components/table-item/form-event.js +81 -81
  283. package/packages/form-table/src/components/table-item/global-props.js +27 -27
  284. package/packages/form-table/src/components/table-item/index.js +4 -4
  285. package/packages/form-table/src/components/table-item/render-methods.js +28 -28
  286. package/packages/form-table/src/components/table-item/validate-rules.js +520 -520
  287. package/packages/form-table/src/components/table-mixins/form-commom.js +98 -98
  288. package/packages/form-table/src/components/table-mixins/index.js +3 -3
  289. package/packages/form-table/src/components/table-utils/index.js +112 -112
  290. package/packages/form-table/src/disabledDetail.less +46 -46
  291. package/packages/grid/index.js +10 -10
  292. package/packages/grid/src/grid.js +28 -28
  293. package/packages/icon/index.js +10 -10
  294. package/packages/icon/src/icon.js +13 -13
  295. package/packages/index.js +313 -313
  296. package/packages/input/index.js +30 -30
  297. package/packages/input/src/Group.jsx +11 -11
  298. package/packages/input/src/Input.jsx +11 -11
  299. package/packages/input/src/Password.jsx +11 -11
  300. package/packages/input/src/Search.jsx +11 -11
  301. package/packages/input/src/TextArea.jsx +11 -11
  302. package/packages/input/src/input-quick/components/quick-item.vue +284 -284
  303. package/packages/input/src/input-quick/components/quick-popover.vue +596 -596
  304. package/packages/input/src/input-quick/index.vue +137 -137
  305. package/packages/input-number/index.js +12 -12
  306. package/packages/input-number/src/InputNumber.jsx +11 -11
  307. package/packages/keep-cache/KeepCache.js +236 -236
  308. package/packages/keep-cache/index.css +2 -2
  309. package/packages/keep-cache/index.js +8 -8
  310. package/packages/layout/index.js +27 -27
  311. package/packages/layout/src/Content.jsx +11 -11
  312. package/packages/layout/src/Footer.jsx +11 -11
  313. package/packages/layout/src/Header.jsx +11 -11
  314. package/packages/layout/src/Layout.jsx +11 -11
  315. package/packages/layout/src/Sider.jsx +11 -11
  316. package/packages/list/index.js +21 -21
  317. package/packages/list/src/Item.jsx +11 -11
  318. package/packages/list/src/ItemMeta.jsx +11 -11
  319. package/packages/list/src/List.jsx +11 -11
  320. package/packages/locale-provider/index.js +12 -12
  321. package/packages/locale-provider/src/LocaleProvider.jsx +11 -11
  322. package/packages/map/index.js +9 -9
  323. package/packages/map/src/Map.vue +484 -484
  324. package/packages/map/src/popup-map.vue +53 -53
  325. package/packages/mentions/index.js +18 -18
  326. package/packages/mentions/src/Mentions.jsx +11 -11
  327. package/packages/mentions/src/Option.jsx +11 -11
  328. package/packages/menu/index.js +27 -27
  329. package/packages/menu/src/Divider.jsx +11 -11
  330. package/packages/menu/src/Item.jsx +11 -11
  331. package/packages/menu/src/ItemGroup.jsx +11 -11
  332. package/packages/menu/src/Menu.jsx +11 -11
  333. package/packages/menu/src/SubMenu.jsx +11 -11
  334. package/packages/message/index.js +8 -8
  335. package/packages/modal/index.js +10 -10
  336. package/packages/modal/src/Modal.js +7 -7
  337. package/packages/multi-chat/chat/addConference.vue +200 -200
  338. package/packages/multi-chat/chat/addMembers.vue +411 -411
  339. package/packages/multi-chat/chat/advancedFilter.vue +372 -372
  340. package/packages/multi-chat/chat/calling.vue +246 -246
  341. package/packages/multi-chat/chat/chatFooter.vue +1596 -1596
  342. package/packages/multi-chat/chat/chatHistory.vue +605 -605
  343. package/packages/multi-chat/chat/chatMain.vue +1486 -1486
  344. package/packages/multi-chat/chat/client/index.vue +149 -149
  345. package/packages/multi-chat/chat/delay.vue +177 -177
  346. package/packages/multi-chat/chat/evaluate.vue +343 -343
  347. package/packages/multi-chat/chat/messageRecord.vue +324 -324
  348. package/packages/multi-chat/chat/mixins/NoData.js +20 -20
  349. package/packages/multi-chat/chat/mixins/base.js +97 -97
  350. package/packages/multi-chat/chat/mixins/uniRTCAPI.js +80 -80
  351. package/packages/multi-chat/chat/mixins/viewerOptions.js +67 -67
  352. package/packages/multi-chat/chat/quickReply.vue +439 -439
  353. package/packages/multi-chat/chat/robot/index.vue +312 -312
  354. package/packages/multi-chat/chat/scrollList.vue +1238 -1238
  355. package/packages/multi-chat/chat/videoVoiceList.vue +348 -348
  356. package/packages/multi-chat/chat/voice.vue +431 -431
  357. package/packages/multi-chat/components/avatar.vue +113 -113
  358. package/packages/multi-chat/components/chat-tabs-header.vue +251 -251
  359. package/packages/multi-chat/components/classify-tabs.vue +185 -185
  360. package/packages/multi-chat/components/empty.vue +24 -24
  361. package/packages/multi-chat/components/modal-refuse-reason.vue +112 -112
  362. package/packages/multi-chat/components/modal-sip.vue +160 -160
  363. package/packages/multi-chat/components/modal-user-transfer.vue +98 -98
  364. package/packages/multi-chat/components/msg-describe.vue +138 -138
  365. package/packages/multi-chat/components/msg-picture.vue +68 -68
  366. package/packages/multi-chat/components/msg-prescription.vue +205 -205
  367. package/packages/multi-chat/components/read-record.vue +133 -133
  368. package/packages/multi-chat/components/read-status.vue +34 -34
  369. package/packages/multi-chat/components/user-status.vue +198 -198
  370. package/packages/multi-chat/index.js +7 -7
  371. package/packages/multi-chat/setting/authority/index.vue +156 -156
  372. package/packages/multi-chat/setting/authority/roleSetting.vue +204 -204
  373. package/packages/multi-chat/setting/baseInfo/index.vue +1316 -1316
  374. package/packages/multi-chat/setting/customerService/batchSelect.vue +403 -403
  375. package/packages/multi-chat/setting/customerService/index.vue +273 -273
  376. package/packages/multi-chat/setting/event/edit/condition.vue +128 -128
  377. package/packages/multi-chat/setting/event/edit/index.vue +437 -437
  378. package/packages/multi-chat/setting/event/edit/notice.vue +129 -129
  379. package/packages/multi-chat/setting/event/edit/strategy.vue +98 -98
  380. package/packages/multi-chat/setting/event/index.vue +249 -249
  381. package/packages/multi-chat/setting/index.vue +269 -269
  382. package/packages/multi-chat/setting/page.vue +14 -14
  383. package/packages/multi-chat/setting/sessionList/index.vue +412 -412
  384. package/packages/multi-chat/setting/sessionList/messageRecord.vue +372 -372
  385. package/packages/multi-chat/setting/userConfig/index.vue +124 -124
  386. package/packages/multi-chat/setting/worktime/index.vue +274 -274
  387. package/packages/multi-chat/store/actions.js +452 -452
  388. package/packages/multi-chat/store/getters.js +371 -371
  389. package/packages/multi-chat/store/helper.js +66 -66
  390. package/packages/multi-chat/store/index.js +50 -50
  391. package/packages/multi-chat/store/mutation.js +296 -296
  392. package/packages/multi-chat/store/state.js +117 -117
  393. package/packages/multi-chat/style/emoji.css +315 -315
  394. package/packages/multi-chat/style/message.mixin.less +38 -38
  395. package/packages/multi-chat/utils/chatSock.js +93 -93
  396. package/packages/multi-chat/utils/compressImage.js +115 -115
  397. package/packages/multi-chat/utils/emoji.json +68 -68
  398. package/packages/multi-chat/utils/index.js +259 -259
  399. package/packages/multi-chat/utils/observer-scroll.js +49 -49
  400. package/packages/multi-chat/utils/panelsetting.js +48 -48
  401. package/packages/multi-chat-client/index.js +7 -7
  402. package/packages/multi-chat-history/index.js +7 -7
  403. package/packages/multi-chat-record/index.js +7 -7
  404. package/packages/multi-chat-setting/index.js +7 -7
  405. package/packages/multi-chat-sip/index.js +6 -6
  406. package/packages/notification/index.js +8 -8
  407. package/packages/page-header/index.js +12 -12
  408. package/packages/page-header/src/PageHeader.jsx +11 -11
  409. package/packages/pagination/index.js +12 -12
  410. package/packages/pagination/src/Pagination.jsx +11 -11
  411. package/packages/popconfirm/index.js +12 -12
  412. package/packages/popconfirm/src/Popconfirm.jsx +11 -11
  413. package/packages/popover/index.js +12 -12
  414. package/packages/popover/src/Popover.jsx +11 -11
  415. package/packages/progress/index.js +12 -12
  416. package/packages/progress/src/Progress.jsx +11 -11
  417. package/packages/radio/index.js +33 -33
  418. package/packages/radio/src/Group.jsx +11 -11
  419. package/packages/radio/src/Radio.jsx +11 -11
  420. package/packages/radio/src/RadioButton.jsx +11 -11
  421. package/packages/radio/src/RadioImg/index.vue +124 -124
  422. package/packages/rate/index.js +12 -12
  423. package/packages/rate/src/Rate.jsx +11 -11
  424. package/packages/result/index.js +12 -12
  425. package/packages/result/src/Result.jsx +11 -11
  426. package/packages/row/index.js +12 -12
  427. package/packages/row/src/Row.jsx +11 -11
  428. package/packages/scale-container/index.js +8 -8
  429. package/packages/scale-container/src/ScaleContainer.vue +197 -197
  430. package/packages/scale-view/NoData.vue +81 -81
  431. package/packages/scale-view/answerParse.vue +133 -133
  432. package/packages/scale-view/customList.vue +801 -801
  433. package/packages/scale-view/data.js +80 -80
  434. package/packages/scale-view/evaluateCountdown.vue +155 -155
  435. package/packages/scale-view/evaluatePage.vue +202 -202
  436. package/packages/scale-view/formitem/data.js +3991 -3991
  437. package/packages/scale-view/formitem/index.js +6 -6
  438. package/packages/scale-view/formitem/r-address.vue +238 -238
  439. package/packages/scale-view/formitem/r-choice.vue +726 -726
  440. package/packages/scale-view/formitem/r-input.vue +92 -92
  441. package/packages/scale-view/formitem/r-prompt.vue +52 -52
  442. package/packages/scale-view/formitem/r-time.vue +285 -285
  443. package/packages/scale-view/formitem/r-upload-custom-list.vue +242 -242
  444. package/packages/scale-view/formitem/r-upload.vue +287 -287
  445. package/packages/scale-view/formitem/text-over-tooltip/TextOverTooltip.vue +98 -98
  446. package/packages/scale-view/index.js +17 -17
  447. package/packages/scale-view/mixin/NoData.js +38 -38
  448. package/packages/scale-view/mixin/evaluate.js +146 -146
  449. package/packages/scale-view/mixin/index.js +337 -337
  450. package/packages/scale-view/mixin/judgeTypes.js +267 -267
  451. package/packages/scale-view/scaleView.vue +2010 -2010
  452. package/packages/select/index.js +27 -27
  453. package/packages/select/src/CustomSelect/index.vue +130 -130
  454. package/packages/select/src/OptGroup.jsx +11 -11
  455. package/packages/select/src/Option.jsx +11 -11
  456. package/packages/select/src/Select/Select.vue +231 -231
  457. package/packages/select/src/Select/index.js +12 -12
  458. package/packages/select/src/TableSelect/index.vue +514 -514
  459. package/packages/select-label/index.js +14 -14
  460. package/packages/select-label/label-classify.vue +129 -129
  461. package/packages/select-label/labelFormContent.vue +787 -787
  462. package/packages/select-label/select-label.vue +581 -581
  463. package/packages/select-person/index.js +10 -10
  464. package/packages/select-person/search-tree.vue +373 -373
  465. package/packages/select-person/select-person.vue +1696 -1696
  466. package/packages/shortcut-setter/index.js +12 -12
  467. package/packages/shortcut-setter/src/ShortcutSetter.vue +55 -55
  468. package/packages/shortcut-setter/src/ShortcutSetterItem.vue +84 -84
  469. package/packages/shortcut-setter/src/utils/index.js +63 -63
  470. package/packages/skeleton/index.js +12 -12
  471. package/packages/skeleton/src/Skeleton.jsx +11 -11
  472. package/packages/slider/index.js +12 -12
  473. package/packages/slider/src/Slider.jsx +11 -11
  474. package/packages/space/index.js +12 -12
  475. package/packages/space/src/Space.jsx +11 -11
  476. package/packages/spin/index.js +12 -12
  477. package/packages/spin/src/Spin.jsx +11 -11
  478. package/packages/statistic/index.js +18 -18
  479. package/packages/statistic/src/Countdown.jsx +11 -11
  480. package/packages/statistic/src/Statistic.jsx +11 -11
  481. package/packages/steps/index.js +18 -18
  482. package/packages/steps/src/Step.jsx +11 -11
  483. package/packages/steps/src/Steps.jsx +11 -11
  484. package/packages/switch/index.js +12 -12
  485. package/packages/switch/src/Switch.jsx +11 -11
  486. package/packages/table-filter/index.js +27 -27
  487. package/packages/table-filter/src/base-search-com/BaseSearch.vue +2572 -2572
  488. package/packages/table-filter/src/classification/Classification-com.vue +1756 -1756
  489. package/packages/table-filter/src/classification/search-class-name.vue +266 -266
  490. package/packages/table-filter/src/classification/search-professional-model.vue +680 -680
  491. package/packages/table-filter/src/components/TextOverTooltip.vue +107 -107
  492. package/packages/table-filter/src/components/age-com/index.vue +205 -205
  493. package/packages/table-filter/src/components/button-group/ButtonGroup.vue +162 -162
  494. package/packages/table-filter/src/components/button-icon/button-icon.js +33 -33
  495. package/packages/table-filter/src/components/button-icon/getBtnIcon.js +34 -34
  496. package/packages/table-filter/src/components/c-tree-select/tree-select.vue +336 -336
  497. package/packages/table-filter/src/components/drop-button/drop-button.vue +224 -224
  498. package/packages/table-filter/src/components/drop-button/head-btn-icon.js +33 -33
  499. package/packages/table-filter/src/components/drop-view/drop-view.vue +89 -89
  500. package/packages/table-filter/src/components/multi-select/multi-select.vue +227 -227
  501. package/packages/table-filter/src/components/out-quick-search/out-quick-search.vue +340 -340
  502. package/packages/table-filter/src/components/range-age/index.vue +172 -172
  503. package/packages/table-filter/src/components/search-condition/SearchCondition.vue +1897 -1897
  504. package/packages/table-filter/src/components/search-condition/fieldTypeList.js +169 -169
  505. package/packages/table-filter/src/components/search-filter/SearchFilter.vue +278 -278
  506. package/packages/table-filter/src/components/search-modal/set-classification.vue +310 -310
  507. package/packages/table-filter/src/components/table-modal/TableModal.vue +473 -463
  508. package/packages/table-filter/src/const/dataOptions.js +43 -43
  509. package/packages/table-filter/src/const/index.js +1 -1
  510. package/packages/table-filter/src/index.vue +584 -584
  511. package/packages/table-filter/src/mixins/mixins.js +694 -694
  512. package/packages/table-filter/src/mixins/tableSearchCon.js +128 -128
  513. package/packages/table-filter/src/mixins/wordBookutils.js +102 -102
  514. package/packages/table-filter/src/quick-search/QuickSearch.vue +2125 -2125
  515. package/packages/tabs/index.js +18 -18
  516. package/packages/tabs/src/TabPane.jsx +11 -11
  517. package/packages/tabs/src/Tabs.jsx +11 -11
  518. package/packages/tag/index.js +21 -21
  519. package/packages/tag/src/CheckableTag.jsx +11 -11
  520. package/packages/tag/src/Tag.jsx +11 -11
  521. package/packages/tag/src/TagGroup.vue +621 -621
  522. package/packages/time-picker/index.js +12 -12
  523. package/packages/time-picker/src/TimePicker.jsx +11 -11
  524. package/packages/timeline/index.js +14 -14
  525. package/packages/timeline/src/Item.jsx +11 -11
  526. package/packages/timeline/src/Timeline.jsx +11 -11
  527. package/packages/tooltip/index.js +12 -12
  528. package/packages/tooltip/src/Tooltip.jsx +11 -11
  529. package/packages/transfer/index.js +12 -12
  530. package/packages/transfer/src/Transfer.jsx +11 -11
  531. package/packages/tree/index.js +18 -18
  532. package/packages/tree/src/Tree.jsx +11 -11
  533. package/packages/tree/src/TreeNode.jsx +11 -11
  534. package/packages/tree-select/index.js +18 -18
  535. package/packages/tree-select/src/TreeNode.jsx +11 -11
  536. package/packages/tree-select/src/TreeSelect.jsx +11 -11
  537. package/packages/upload/chunk-upload/chunk-upload-new.vue +1001 -1001
  538. package/packages/upload/chunk-upload/vod-chunk-upload.vue +749 -749
  539. package/packages/upload/chunk-upload/vod-upload-modal.vue +100 -100
  540. package/packages/upload/index.js +12 -12
  541. package/packages/upload/src/Upload.jsx +11 -11
  542. package/packages/verification-code/SlideVerify.vue +306 -306
  543. package/packages/verification-code/index.js +17 -17
  544. package/packages/verification-code/verification-code.vue +147 -147
  545. package/src/component/player-vod/index.vue +57 -57
  546. package/src/component/player-vod/player.vue +188 -188
  547. package/src/component/player-vod/video-list.vue +262 -262
  548. package/src/component/player-vod/video-modal.vue +128 -128
  549. package/src/component/select-options/index.vue +430 -430
  550. package/src/component/select-pages/index.vue +95 -95
  551. package/src/component/svg/index.vue +59 -59
  552. package/src/core/create.js +6 -6
  553. package/src/core/event.js +23 -23
  554. package/src/core/table-methods.js +444 -444
  555. package/src/directive/flexibleResize.js +151 -151
  556. package/src/directive/preventReClick.js +12 -12
  557. package/src/directive/scroll.js +230 -230
  558. package/src/global/variable.js +2 -2
  559. package/src/style/normalize.css +424 -424
  560. package/src/style/style.less +49 -49
  561. package/src/utils/UniRTCv2.js +626 -626
  562. package/src/utils/chatFetch.js +61 -61
  563. package/src/utils/clickoutside.js +75 -75
  564. package/src/utils/crypto.js +25 -25
  565. package/src/utils/index.js +81 -81
  566. package/src/utils/kty-sdk.js +582 -582
  567. package/src/utils/kty.min-1.0.0.js +14378 -14378
  568. package/src/utils/sip-device.js +79 -79
  569. package/src/utils/time-domain.js +193 -193
  570. package/src/utils/trtc.js +1 -1
  571. package/src/utils/utils-map.js +484 -484
  572. package/src/utils/vexutils.js +836 -836
@@ -1,1756 +1,1756 @@
1
- <template>
2
- <div :class="['classification', 'classificationIndex-' + classificationIndex, isPackUp ? 'upack-up-wrap' : '']" :style="dynamicStyle">
3
- <template v-if="classificationIndex === 0">
4
- <div
5
- class="tree-type classify-0"
6
- :style="{
7
- width: classificationWidth + 'px',
8
- paddingBottom: conditionType === 'keyword' ? '80px' : 0
9
- }"
10
- v-flexible-resize="{
11
- mode: 'VR',
12
- onMove: changeWidth,
13
- onEnd: saveWidth
14
- }"
15
- >
16
- <div class="header" v-if="hideConditionChangeBtn != 1 || hideConditionChangeSetting != 1">
17
- <span @click="handleModeChange" v-if="hideConditionChangeBtn != 1">
18
- <a-icon type="swap" />
19
- {{ '切换' }}
20
- </span>
21
- <span @click="handleSettingShow" v-if="hideConditionChangeSetting != 1">
22
- <a-icon type="setting" />
23
- {{ '设置' }}
24
- </span>
25
- </div>
26
- <ul class="tree">
27
- <template v-for="(item, index) in treeData">
28
- <li
29
- :key="index"
30
- class="tree-item"
31
- :class="{
32
- 'tree-header': index === 0 || !item.children || item.children.length === 0
33
- }"
34
- v-if="index === 0 || !item.children || item.children.length === 0 || (item.children && item.children.filter(i => i.isShow).length !== 0)"
35
- >
36
- <template v-if="index === 0 || !item.children || item.children.length === 0">
37
- <span class="child-item header-item" :class="{ selected: item.selected || conditionSid.indexOf('all_data') !== -1 }" @click="handleItemClick(item)"
38
- >{{ item.name }}
39
- <span class="digital-span" v-if="visibleDigital(item)"> ({{ item.digital || 0 }}) </span>
40
- </span>
41
- </template>
42
- <template v-else>
43
- <span class="parent" :class="{ open: item.open }" @click="handleFold(item)">
44
- <span>
45
- {{ item.name }}
46
- <span class="digital-span" v-if="visibleDigital(item)"> ({{ item.digital || 0 }}) </span>
47
- </span>
48
- <a-icon :type="item.open ? 'down' : 'right'" />
49
- </span>
50
- <template v-if="item.open">
51
- <div class="children" v-for="(child, cIndex) in item.children.filter(i => i.isShow)" :key="cIndex">
52
- <a-tooltip placement="right" v-if="child.isShow">
53
- <template slot="title">
54
- <span>{{ tooltipTilte(child) }}</span>
55
- </template>
56
- <span
57
- class="child-item"
58
- :class="{
59
- selected: child.selected,
60
- disabled: !child.digital && getCondiTionDigital
61
- }"
62
- @click="handleItemClick(child, cIndex, item, index)"
63
- >
64
- <span class="child-item-name">
65
- {{ child.name | fmtChildName(child.isPublic) }}
66
- </span>
67
- <span class="digital-span" v-if="visibleDigital(child)"> ({{ child.digital || 0 }}) </span>
68
- <a-icon type="check" v-if="child.selected" />
69
- </span>
70
- </a-tooltip>
71
- </div>
72
- </template>
73
- </template>
74
- </li>
75
- </template>
76
- </ul>
77
- <div class="tree-type-footer" v-if="conditionType === 'keyword' && hideClearConditionChange != 1">
78
- <div class="selected-num">已选择{{ conditionSid.filter(item => item !== 'all_data').length }}项</div>
79
- <div class="selected-item-del" @click="handleItemClick({ sid: 'all_data', name: '全部数据', digital: allObj.digital })">
80
- <svg-icon class-name="svg-icon-btn" icon-class="xitongtubiaoliebiaocaozuoanniushanchu" />
81
- 清空筛选
82
- </div>
83
- </div>
84
- </div>
85
- </template>
86
- <template v-if="classificationIndex === 1">
87
- <div
88
- class="tile-type classify-1"
89
- v-if="hideConditionChangeBtn != 1 || hideConditionChangeSetting != 1 || hideConditionChangeSetting != 1 || originConditionList.filter(item => item.isShow).length > 0"
90
- >
91
- <div class="header" v-if="hideConditionChangeBtn != 1 || hideConditionChangeSetting != 1">
92
- <span class="all-data" @click="handleItemClick({ sid: 'all_data', name: '全部数据', digital: allObj.digital })" :class="{ selected: conditionSid.indexOf('all_data') !== -1 }">
93
- 全部数据
94
- <template v-if="allObj.digital || allObj.digital === 0"> ({{ allObj.digital || 0 }}) </template>
95
- </span>
96
- <div class="right-setting">
97
- <span @click="handleModeChange" style="margin-right: 30px;" v-if="hideConditionChangeBtn != 1">
98
- <a-icon type="swap" />
99
- {{ '切换' }}
100
- </span>
101
- <span @click="handleSettingShow" v-if="hideConditionChangeSetting != 1">
102
- <a-icon type="setting" />
103
- {{ '设置' }}
104
- </span>
105
- </div>
106
- </div>
107
- <ul
108
- class="tile"
109
- :style="{
110
- borderBottom: conditionType === 'keyword' && hideClearConditionChange != 1 ? '1px solid #d5d5d5' : 0
111
- }"
112
- >
113
- <template v-for="(item, index) in treeData.slice(1)">
114
- <li class="tile-item" :key="index" v-if="item.children && item.children.length > 0">
115
- <template v-if="!item.children || item.children.length === 0">
116
- <span class="child-item" style="padding-left: 17px;" :class="{ selected: item.selected }" @click="handleItemClick(item)"
117
- >{{ item.name }}
118
- {{ item.digital }}
119
- <span class="digital-span" v-if="visibleDigital(item)"> ({{ item.digital || 0 }}) </span>
120
- </span>
121
- </template>
122
- <template v-else>
123
- <!-- <text-over-tooltip
124
- refName="digitalTitle"
125
- class="parent digitalTitle"
126
- :content="
127
- item.name +
128
- (countCondition == 1 && (item.digital || item.digital === 0)
129
- ? ' (' + (item.digital || 0) + ')'
130
- : '')
131
- "
132
- v-if="item.children.filter(i => i.isShow).length !== 0"
133
- ></text-over-tooltip> -->
134
- <span class="parent ellips">{{ item.name }}</span>
135
- <div class="children">
136
- <template v-for="(child, cIndex) in item.children">
137
- <span
138
- v-if="child.isShow"
139
- :key="cIndex"
140
- class="child-item"
141
- :class="{
142
- selected: child.selected,
143
- disabled: !child.digital && getCondiTionDigital
144
- }"
145
- @click="handleItemClick(child, cIndex, item, index)"
146
- >{{ child.name | fmtChildName(child.isPublic) }}
147
- <span class="digital-span" v-if="visibleDigital(child)"> ({{ child.digital || 0 }}) </span>
148
- </span>
149
- </template>
150
- </div>
151
- </template>
152
- </li>
153
- </template>
154
- </ul>
155
- <div class="selected-list" v-if="conditionType === 'keyword' && hideClearConditionChange != 1">
156
- <div class="selected-num">已选择{{ conditionSid.filter(item => item !== 'all_data').length }}项</div>
157
- <template v-for="(item, index) in treeData.slice(1)">
158
- <div class="selected-item" v-if="!item.children || item.children.length === 0" :key="item.sid">
159
- {{ item.name }}
160
- <span class="digital-span" v-if="visibleDigital(item)"> ({{ item.digital || 0 }}) </span>
161
- <a-icon type="close" @click="handleItemClick(item)" />
162
- </div>
163
- <template v-else>
164
- <template v-for="(child, cIndex) in item.children">
165
- <div class="selected-item" v-if="child.selected" :key="child.sid">
166
- {{ child.name }}
167
- <span class="digital-span" v-if="visibleDigital(child)"> ({{ child.digital || 0 }}) </span>
168
- <a-icon type="close" @click="handleItemClick(child, cIndex, item, index)" />
169
- </div>
170
- </template>
171
- </template>
172
- </template>
173
- <div class="selected-item-del" @click="handleItemClick({ sid: 'all_data', name: '全部数据', digital: allObj.digital })">
174
- <svg-icon class-name="svg-icon-btn" icon-class="xitongtubiaoliebiaocaozuoanniushanchu" />
175
- 清空筛选
176
- </div>
177
- </div>
178
- </div>
179
- </template>
180
- <template v-if="classificationIndex === 2">
181
- <div class="select-type classify-2" ref="selectType">
182
- <span class="title" @click="() => toggleSelect()">
183
- <a-tooltip placement="top">
184
- <template slot="title">
185
- <span>{{ titleName }}</span>
186
- </template>
187
- <span>{{ titleName }}</span>
188
- </a-tooltip>
189
- <a-icon :type="selectShow ? 'up' : 'down'" />
190
- </span>
191
- <div class="main-wrapper" v-if="selectShow">
192
- <ul class="tree" :style="{ padding: conditionType === 'keyword' ? '40px 0' : '40px 0 0' }">
193
- <template v-for="(item, index) in treeData">
194
- <li
195
- :key="index"
196
- class="tree-item"
197
- :class="{
198
- 'tree-header': index === 0 || !item.children || item.children.length === 0
199
- }"
200
- v-if="index === 0 || !item.children || item.children.length === 0 || (item.children && item.children.filter(i => i.isShow).length !== 0)"
201
- >
202
- <template v-if="index === 0 || !item.children || item.children.length === 0">
203
- <span class="child-item child-header header-item" :class="{ selected: item.selected || conditionSid.indexOf('all_data') !== -1 }" @click="handleItemClick(item)"
204
- >{{ item.name }}
205
- <span class="digital-span" v-if="visibleDigital(item)"> ({{ item.digital || 0 }}) </span>
206
- </span>
207
- <div class="footer">
208
- <span @click="handleModeChange" v-if="hideConditionChangeBtn != 1">
209
- <a-icon type="swap" />
210
- {{ '切换' }}
211
- </span>
212
- <span @click="handleSettingShow" v-if="hideConditionChangeSetting != 1">
213
- <a-icon type="setting" />
214
- {{ '设置' }}
215
- </span>
216
- </div>
217
- </template>
218
- <template v-else>
219
- <span class="parent" :class="{ open: item.open }" @click="handleFold(item)" v-if="item.children.filter(i => i.isShow).length !== 0">
220
- {{ item.name }}{{ item.digital || item.digital === 0 ? '(' + item.digital + ')' : '' }}
221
- <a-icon :type="item.open ? 'down' : 'right'" />
222
- </span>
223
- <template v-if="item.open">
224
- <div class="children" v-for="(child, cIndex) in item.children.filter(i => i.isShow)" :key="cIndex">
225
- <a-tooltip placement="right" v-if="child.isShow">
226
- <template slot="title">
227
- <span>{{ tooltipTilte(child) }}</span>
228
- </template>
229
- <span
230
- class="child-item"
231
- :class="{
232
- selected: child.selected,
233
- disabled: !child.digital && getCondiTionDigital
234
- }"
235
- @click="handleItemClick(child, cIndex, item, index)"
236
- >
237
- <span>
238
- {{ child.name | fmtChildName(child.isPublic) }}
239
- <span class="digital-span" v-if="visibleDigital(child)"> ({{ child.digital || 0 }}) </span>
240
- </span>
241
- <a-icon type="check" v-if="child.selected" />
242
- </span>
243
- </a-tooltip>
244
- </div>
245
- </template>
246
- </template>
247
- </li>
248
- </template>
249
- </ul>
250
- <div class="select-type-footer" v-if="conditionType === 'keyword' && hideClearConditionChange != 1">
251
- <div class="selected-num">已选择{{ conditionSid.filter(item => item !== 'all_data').length }}项</div>
252
- <div class="selected-item-del" @click="handleItemClick({ sid: 'all_data', name: '全部数据', digital: allObj.digital })">
253
- <svg-icon class-name="svg-icon-btn" icon-class="xitongtubiaoliebiaocaozuoanniushanchu" />
254
- 清空筛选
255
- </div>
256
- </div>
257
- </div>
258
- </div>
259
- </template>
260
- <template v-if="classificationIndex === 3">
261
- <div
262
- class="group-type classify-3"
263
- v-if="hideConditionChangeBtn != 1 || hideConditionChangeSetting != 1 || hideConditionChangeSetting != 1 || originConditionList.filter(item => item.isShow).length > 0"
264
- >
265
- <div class="header" v-if="hideConditionChangeBtn != 1 || hideConditionChangeSetting != 1">
266
- <span class="all-data" @click="handleItemClick({ sid: 'all_data', name: '全部数据', digital: allObj.digital })" :class="{ selected: conditionSid.indexOf('all_data') !== -1 }">
267
- 全部数据
268
- <template v-if="allObj.digital || allObj.digital === 0"> ({{ allObj.digital || 0 }}) </template>
269
- </span>
270
- <div class="right-setting">
271
- <span @click="handleModeChange" style="margin-right: 30px;" v-if="hideConditionChangeBtn != 1">
272
- <a-icon type="swap" />
273
- {{ '切换' }}
274
- </span>
275
- <span @click="handleSettingShow" v-if="hideConditionChangeSetting != 1">
276
- <a-icon type="setting" />
277
- {{ '设置' }}
278
- </span>
279
- </div>
280
- </div>
281
- <div
282
- class="group"
283
- :style="{
284
- borderBottom: conditionType === 'keyword' && hideClearConditionChange != 1 ? '1px solid #d5d5d5' : 0
285
- }"
286
- >
287
- <template v-for="(item, index) in treeData.slice(1)">
288
- <template v-if="!item.children || item.children.length === 0">
289
- <span :key="item.sid" class="child-item" style="padding-left: 17px;" :class="{ selected: item.selected }" @click="handleItemClick(item)"
290
- >{{ item.name }}
291
- {{ item.digital }}
292
- <span class="digital-span" v-if="visibleDigital(item)"> ({{ item.digital || 0 }}) </span>
293
- </span>
294
- </template>
295
- <template v-else>
296
- <a-select
297
- :key="item.sid"
298
- :placeholder="item.name + (countCondition == 1 && (item.digital || item.digital === 0) ? ' (' + (item.digital || 0) + ')' : '')"
299
- allowClear
300
- @change="(value, option) => handleChange(value, option, item, index)"
301
- :value="groupSelect(index)"
302
- option-label-prop="label"
303
- v-if="item.children.filter(i => i.isShow).length !== 0"
304
- >
305
- <a-select-option
306
- :value="0"
307
- :label="item.name + (countCondition == 1 && (item.digital || item.digital === 0) ? ' (' + (item.digital || 0) + ')' : '')"
308
- class="classiffication-select-hide"
309
- >
310
- {{ item.name }}
311
- <span class="digital-span" v-if="visibleDigital(item)"> ({{ item.digital || 0 }}) </span>
312
- </a-select-option>
313
- <a-select-option
314
- v-for="(child, cIndex) in item.children.filter(i => i.isShow)"
315
- :key="child.sid"
316
- :value="child.sid"
317
- :label="child.name + (countCondition == 1 && visibleDigital(child) ? ' (' + (child.digital || 0) + ')' : '')"
318
- :child="child"
319
- :cIndex="cIndex"
320
- :index="index"
321
- :item="item"
322
- :disabled="!child.digital && getCondiTionDigital"
323
- class="group-select-option"
324
- @click="(value, option) => conditionSid.indexOf(child.sid) !== -1 && handleItemClick(child, cIndex, item, index)"
325
- >
326
- <span>
327
- {{ child.name }}
328
- <span class="digital-span" v-if="visibleDigital(child)"> ({{ child.digital || 0 }}) </span>
329
- </span>
330
- <a-icon type="check" v-if="child.selected" />
331
- </a-select-option>
332
- </a-select>
333
- </template>
334
- </template>
335
- </div>
336
- <div class="selected-list" v-if="conditionType === 'keyword' && hideClearConditionChange != 1">
337
- <div class="selected-num">已选择{{ conditionSid.filter(item => item !== 'all_data').length }}项</div>
338
- <template v-for="(item, index) in treeData.slice(1)">
339
- <div class="selected-item" v-if="!item.children || item.children.length === 0" :key="item.sid">
340
- {{ item.name }}
341
- <span class="digital-span" v-if="visibleDigital(item)"> ({{ item.digital || 0 }}) </span>
342
- <a-icon type="close" @click="handleItemClick(item)" />
343
- </div>
344
- <template v-else>
345
- <template v-for="(child, cIndex) in item.children">
346
- <div class="selected-item" :key="child.sid" v-if="child.selected">
347
- {{ child.name }}
348
- <span class="digital-span" v-if="visibleDigital(child)"> ({{ child.digital || 0 }}) </span>
349
- <a-icon type="close" @click="handleItemClick(child, cIndex, item, index)" />
350
- </div>
351
- </template>
352
- </template>
353
- </template>
354
- <div class="selected-item-del" @click="handleItemClick({ sid: 'all_data', name: '全部数据', digital: allObj.digital })">
355
- <svg-icon class-name="svg-icon-btn" icon-class="xitongtubiaoliebiaocaozuoanniushanchu" />
356
- 清空筛选
357
- </div>
358
- </div>
359
- </div>
360
- </template>
361
-
362
- <template v-if="classificationIndex === 4">
363
- <div class="group-type classify-3 classify-4" v-if="showIconBtn || hasConditionList">
364
- <div class="header" v-if="showIconBtn">
365
- <!-- @click="handleItemClick({ sid: 'all_data', name: '全部数据', digital: allObj.digital })" -->
366
- <span class="all-data" :class="{ selected: conditionSid.indexOf('all_data') !== -1 }">
367
- {{ showTitleName }}
368
- <template v-if="allObj.digital || allObj.digital === 0"> ({{ allObj.digital || 0 }}) </template>
369
- </span>
370
- <div class="right-setting">
371
- <span style="margin-right: 30px;" class="upack-up-btn" @click="isPackUp = !isPackUp">
372
- {{ isPackUp ? '展开' : '收起' }}
373
- <a-icon style="color:#2d7aff" :type="isPackUp ? 'down' : 'up'" />
374
- </span>
375
- <span @click="handleModeChange" style="margin-right: 30px;" v-if="hideConditionChangeBtn != 1">
376
- <a-icon type="swap" />
377
- <!-- {{ $t("1.1.5.2") }} -->
378
- 切换
379
- </span>
380
- <span @click="handleSettingShow" v-if="hideConditionChangeSetting != 1">
381
- <a-icon type="setting" />
382
- <!-- {{ $t("1.1.5.3") }} -->
383
- 设置
384
- </span>
385
- </div>
386
- </div>
387
- </div>
388
- <div class="classify-4-container" :style="{ height: isPackUp ? 0 : 'auto' }">
389
- <search-professional-model
390
- ref="professional"
391
- v-bind="$attrs"
392
- v-on="$listeners"
393
- :originConditionList="originConditionList"
394
- :displayCategoryList="displayCategoryList"
395
- :treeData="treeData"
396
- :tableId="tableId"
397
- :searchFieldList="searchFieldList"
398
- @handleItemClick="handleItemClick"
399
- @changeShowName="changeShowName"
400
- />
401
- </div>
402
- </template>
403
- <!-- searchFieldList: props -->
404
- <!-- saveGetTableCondiTionList 新增,删除 -->
405
- <!-- CondiTionListInit 修改? -->
406
-
407
- <set-classification
408
- ref="search"
409
- v-bind="$attrs"
410
- v-on="$listeners"
411
- @changeSearch="changeSearch"
412
- @saveGetTableCondiTionList="saveGetTableCondiTionList"
413
- @CondiTionListInit="updateTableCondiTion"
414
- @setClassifyModal="setClassifyModal"
415
- :searchFieldList="searchFieldList"
416
- :conditionList="searchConditionList"
417
- :displayCategoryList="displayCategoryList"
418
- :settingId="settingId"
419
- :searchDefName="searchDefName"
420
- :tableId="tableId"
421
- :classifyModal="classifyModal"
422
- :filterApiConfig="filterApiConfig"
423
- />
424
- </div>
425
- </template>
426
-
427
- <script>
428
- import flexibleResize from '@/directive/flexibleResize';
429
- import setClassification from '../components/search-modal/set-classification';
430
- import { filterApiFn } from '~/table-filter/src/mixins/mixins';
431
- import { Icon, Tooltip, Select } from 'ant-design-vue';
432
- import svgIcon from '@/component/svg/index.vue';
433
- import searchProfessionalModel from './search-professional-model.vue';
434
- import create from '@/core/create';
435
- export default create({
436
- name: 'Classification',
437
- mixins: [filterApiFn],
438
- provide() {
439
- return {
440
- root_isShowResetButton: this.isShowResetButton
441
- };
442
- },
443
- components: {
444
- // Search,
445
- [Icon.name]: Icon,
446
- [Tooltip.name]: Tooltip,
447
- [Select.name]: Select,
448
- [Select.Option.name]: Select.Option,
449
- svgIcon,
450
- setClassification,
451
- searchProfessionalModel
452
- },
453
- data() {
454
- return {
455
- classificationWidth: 150,
456
- selectShow: false,
457
- treeData: [],
458
- conditionList: [],
459
- originConditionList: [],
460
- condiTionParams: {},
461
- classificationIndex: 2,
462
- curTableId: '',
463
- spinning: false,
464
- allObj: {
465
- name: '全部数据',
466
- sid: 'all_data'
467
- },
468
-
469
- searchConditionList: [],
470
- displayCategoryList: [],
471
- settingId: '',
472
- searchDefName: '', // no use ?
473
- classifyModal: false, // 筛选分类的弹窗
474
-
475
- showTitleName: '全部数据',
476
- isPackUp: false // 是否收起 目前只用于 classificationIndex = 4 (专业模式)
477
- };
478
- },
479
- props: {
480
- tableId: { type: String },
481
- conditionSid: { type: Array },
482
- localObj: { type: Object },
483
- curClassificationIndex: { type: Number },
484
- curClassificationWidth: { type: Number },
485
- curConditionList: { type: Array },
486
- tableName: { type: String },
487
- showRelatedTreeBtn: { type: Boolean }, // 平铺列表按钮
488
- conditionType: { type: String }, // 筛选策略,为keyword是关键字优先,否则筛选分类优先
489
- hideConditionChangeBtn: { type: Number }, // 是否隐藏切换按钮,1是
490
- hideConditionChangeSetting: { type: Number }, // 是否隐藏分类设置 ,1是
491
- hideClearConditionChange: { type: Number }, // 是否隐藏清空筛选分类,1是
492
- countCondition: { type: Number }, // 是否统计筛选分类,1统计筛选分类,0反之
493
- countTabCondition: { type: Number }, // 筛选页签是否进行数量统计,1统计筛选页签,0反之
494
- keyword: { type: String },
495
- isShowResetButton: { type: Boolean, default: true }, // 是否显示 恢复默认设置 按钮
496
- fieldKeys: {
497
- type: Array,
498
- default: () => []
499
- },
500
- tabConditionId: { type: String },
501
- conditionMap: {
502
- type: Object,
503
- default: () => {}
504
- },
505
- filterApiConfig: {
506
- type: Object,
507
- default: () => {}
508
- },
509
-
510
- searchFieldList: {
511
- type: Array,
512
- default: () => []
513
- }
514
- },
515
- computed: {
516
- dynamicStyle() {
517
- if (this.classificationIndex === 0) {
518
- return {
519
- marginRight: '8px'
520
- };
521
- } else if (this.classificationIndex === 2) {
522
- return {
523
- display: 'inline-block'
524
- };
525
- }
526
- return {};
527
- },
528
- titleName() {
529
- let condition = this.conditionList.filter(item => this.conditionSid.indexOf(item.sid) !== -1);
530
- if (this.conditionSid.indexOf('all_data') !== -1) {
531
- return '全部数据';
532
- } else {
533
- let titleArr = [];
534
- condition.map(item => {
535
- titleArr.push(item.name);
536
- });
537
- return titleArr.join(',');
538
- // return (
539
- // (condition?.displayCategory && condition?.displayCategory !== "未分类"
540
- // ? `${condition?.displayCategory}/`
541
- // : "") + condition?.name
542
- // );
543
- }
544
- },
545
- groupSelect() {
546
- return function(index) {
547
- let treeTemp = this.treeData.slice(1);
548
- if (treeTemp[index].children) {
549
- const cIndex = treeTemp[index].children.findIndex(item => item.selected);
550
- if (cIndex !== -1) {
551
- return treeTemp[index].children[cIndex].sid;
552
- } else {
553
- return 0;
554
- }
555
- } else {
556
- return 0;
557
- }
558
- };
559
- },
560
-
561
- tooltipTilte() {
562
- return function(item) {
563
- let digitalNum = item.digital === 0 ? `(0)` : item.digital ? `(${item.digital})` : '';
564
- const { name, isPublic } = item;
565
- const fmtChildName = this.$options.filters.fmtChildName;
566
- return fmtChildName(name, isPublic) + digitalNum;
567
- };
568
- },
569
- handleTileAllDataDigital() {
570
- if (!this.treeData || !this.treeData.length) return;
571
- let item = this.treeData[0];
572
- if (item.sid !== 'all_data') return;
573
- if (!('digital' in item)) return;
574
- return item.digital || 0;
575
- },
576
-
577
- // 这两个配置都要请求 筛选分类统计接口
578
- getCondiTionDigital() {
579
- return this.countCondition === 1 || this.countTabCondition === 1;
580
- },
581
-
582
- showIconBtn() {
583
- return this.hideConditionChangeBtn != 1 || this.hideConditionChangeSetting != 1;
584
- },
585
-
586
- hasConditionList() {
587
- return this.originConditionList.filter(item => item.isShow).length > 0;
588
- }
589
- },
590
- mounted() {
591
- document.addEventListener('click', e => {
592
- let path = e.composedPath && e.composedPath();
593
- if (path.includes(this.$refs.selectType)) {
594
- return;
595
- }
596
- this.toggleSelect(false);
597
- });
598
- },
599
- methods: {
600
- handleChange(value, option, pItem = {}, pIndex) {
601
- if (value) {
602
- const { child, cIndex, item, index } = option.data.attrs;
603
- this.handleItemClick(child, cIndex, item, index);
604
- } else {
605
- let cIndex = pItem.children.findIndex(item => this.conditionSid.indexOf(item.sid) !== -1);
606
- if (cIndex !== -1) {
607
- this.handleItemClick(pItem.children[cIndex], cIndex, pItem, pIndex);
608
- }
609
- // this.handleItemClick({ sid: "all_data", name: "全部数据" });
610
- }
611
- },
612
- handleFold(item) {
613
- if (item.open) {
614
- item.open = false;
615
- } else {
616
- this.$set(item, 'open', true);
617
- }
618
- },
619
- handleItemClick(child, i, p = {}, pi = undefined) {
620
- // if (!child.selected) {
621
- // this.clearActive(child.sid, p);
622
- // this.$set(child, "selected", true);
623
- // }
624
- this.showTitleName = child.name;
625
- if (!child.digital && this.countCondition === 1) {
626
- return false;
627
- }
628
- let conditionSidTemp = this.getConditionSid(child.sid, this.conditionSid, p);
629
- let selectList = this.initTree(conditionSidTemp);
630
- this.toggleSelect(false);
631
- // TODO: 选中筛选分类
632
- this.$emit('changeSearch', child.sid === 'all_data' ? 'all' : '', child, p, selectList);
633
- },
634
- clearActive(sid, p = {}) {
635
- let conditionSidTemp = this.getConditionSid(sid, this.conditionSid, p);
636
-
637
- this.treeData.forEach(item => {
638
- if (item.children) {
639
- item.children.forEach(child => {
640
- if (conditionSidTemp.indexOf(child.sid) !== -1) {
641
- this.$set(child, 'selected', true);
642
- } else {
643
- this.$set(child, 'selected', false);
644
- }
645
- });
646
- } else {
647
- if (conditionSidTemp.indexOf(item.sid) !== -1) {
648
- this.$set(item, 'selected', true);
649
- } else {
650
- this.$set(item, 'selected', false);
651
- }
652
- }
653
- });
654
- },
655
- // 搜索关键字时重置树结构
656
- initTree(conditionSidTemp) {
657
- let selectList = [];
658
- this.treeData.forEach(item => {
659
- if (item.children) {
660
- item.children.forEach(child => {
661
- if (conditionSidTemp.indexOf(child.sid) !== -1) {
662
- this.$set(child, 'selected', true);
663
- selectList.push(child);
664
- } else {
665
- this.$set(child, 'selected', false);
666
- }
667
- });
668
- } else {
669
- if (conditionSidTemp.indexOf(item.sid) !== -1) {
670
- this.$set(item, 'selected', true);
671
- selectList.push(item);
672
- } else {
673
- this.$set(item, 'selected', false);
674
- }
675
- }
676
- });
677
- return selectList;
678
- },
679
- // 获取已选择的sid
680
- getConditionSid(sid, conditionSid, p = {}) {
681
- let conditionSidTemp = JSON.parse(JSON.stringify(conditionSid));
682
- if (sid === 'all_data') {
683
- conditionSidTemp = ['all_data'];
684
- } else {
685
- if (this.conditionType === 'keyword') {
686
- // 关键字搜索多选
687
- let aIndex = conditionSidTemp.findIndex(subItem => subItem === 'all_data');
688
- if (aIndex !== -1) conditionSidTemp.splice(aIndex, 1); // 存在选中了全部数据,则先删除
689
- // 查询是否已经存在,存在则删除一个
690
- let cIndex = conditionSidTemp.findIndex(subItem => subItem === sid);
691
- if (cIndex !== -1) {
692
- conditionSidTemp.splice(cIndex, 1);
693
- if (conditionSidTemp.length === 0) conditionSidTemp = ['all_data'];
694
- } else {
695
- // 查询和已选择的元素是否在同一个父级
696
- if (p.children && p.children.length > 0) {
697
- cIndex = conditionSidTemp.findIndex(subItem => p.children.findIndex(pItem => pItem.sid === subItem) !== -1);
698
- }
699
- if (cIndex !== -1) {
700
- conditionSidTemp.splice(cIndex, 1);
701
- }
702
- conditionSidTemp.push(sid);
703
- }
704
- } else {
705
- // 非关键字搜索单选
706
- if (conditionSidTemp.indexOf(sid) !== -1) {
707
- conditionSidTemp = ['all_data'];
708
- } else {
709
- conditionSidTemp = [sid];
710
- }
711
- }
712
- }
713
-
714
- return conditionSidTemp;
715
- },
716
-
717
- /**
718
- * 改变展示方式
719
- */
720
- handleModeChange() {
721
- this.$emit('setCurTreeData', this.treeData);
722
- let res = '';
723
- if (this.classificationIndex === 4) {
724
- res = 0;
725
- } else {
726
- let index = this.classificationIndex;
727
- res = ++index;
728
- }
729
- this.classificationWidth = 150;
730
- this.saveListPersonaSetting(res);
731
- },
732
-
733
- // 保存
734
- async saveListPersonaSetting(classificationIndex, classificationWidth) {
735
- let params = {
736
- tableId: this.tableId,
737
- setting: JSON.stringify({
738
- classificationIndex,
739
- classificationWidth
740
- })
741
- };
742
-
743
- try {
744
- let res = await this.handleGetConfigApi(params, 'requestSaveListPersonaSetting');
745
- // TODO: 切换筛选分类
746
- res && this.$emit('setClassificationIndex', classificationIndex);
747
- } catch (error) {
748
- console.log(error);
749
- }
750
- },
751
-
752
- /**
753
- * 打开设置弹窗
754
- */
755
- handleSettingShow() {
756
- this.classifyModal = true;
757
- // this.$emit("setClassifyModal", true);
758
- this.toggleSelect(false);
759
- },
760
-
761
- setClassifyModal(val) {
762
- this.classifyModal = val;
763
- },
764
-
765
- toggleSelect(flag) {
766
- if (flag !== undefined) {
767
- this.selectShow = flag;
768
- return;
769
- }
770
- this.selectShow = !this.selectShow;
771
- },
772
-
773
- getTableCondiTionList(options) {
774
- // 删除当前
775
- if (options !== undefined && options.type === 'delete' && this.conditionSid.indexOf(options.item.sid) !== -1) {
776
- this.$emit('changeSearch', 'all', {
777
- name: '全部数据',
778
- sid: 'all_data'
779
- });
780
- }
781
- if (!this.tableId) return;
782
- if (Object.keys(this.conditionMap).length > 0) {
783
- this.treeData = [];
784
- let { displayCategoryList = [], conditionList = [] } = this.conditionMap;
785
- this.originConditionList = JSON.parse(JSON.stringify(conditionList));
786
- this.displayCategoryList = displayCategoryList || [];
787
- this.conditionList = JSON.parse(JSON.stringify(conditionList));
788
- this.conditionList.unshift({
789
- name: '全部数据',
790
- sid: 'all_data'
791
- });
792
- let treeData = [];
793
- if (displayCategoryList.length === 0) {
794
- displayCategoryList = ['未分类'];
795
- }
796
- displayCategoryList.forEach(item => {
797
- let map = { name: item, children: [] };
798
- conditionList.forEach(condition => {
799
- if (condition.displayCategory === item || (!condition.displayCategory && item === '未分类' && condition.sid !== 'all_data')) {
800
- if (this.conditionSid.indexOf(condition.sid) !== -1) {
801
- condition.selected = true;
802
- map.open = true;
803
- }
804
- if (condition.isShow) {
805
- map.children.push(condition);
806
- }
807
- }
808
- });
809
- if (map.children.length > 0) {
810
- treeData.push(map);
811
- }
812
- });
813
- treeData.unshift({
814
- name: '全部数据',
815
- sid: 'all_data'
816
- });
817
- this.$set(this, 'treeData', treeData);
818
- // 0 模式展开所有分类
819
- if (this.classificationIndex === 0) {
820
- this.setOpenStatus(true);
821
- }
822
- }
823
- },
824
- // 设置分类展开
825
- setOpenStatus(value) {
826
- this.treeData.forEach(item => {
827
- if (item.children && item.children.length) {
828
- this.$set(item, 'open', value);
829
- }
830
- });
831
- },
832
- async getTableCondiTionDigital(setConditionId = false, keyword = '', fieldKeys = [], tabConditionId = '', countTabCondition) {
833
- try {
834
- if (!this.countCondition && !this.countTabCondition) {
835
- this.$set(this.allObj, 'digital', '');
836
- return Promise.resolve();
837
- }
838
- if (!this.tableId) return Promise.resolve();
839
- let params = { tableId: this.tableId, countCondition: this.countCondition };
840
- // if (setConditionId && this.conditionSid) {
841
- // params.conditionId = this.conditionSid == "all_data" ? "ALL" : this.conditionSid;
842
- // }
843
- if (keyword) params.keyword = keyword;
844
- if (tabConditionId) params.tabConditionId = tabConditionId;
845
- if (countTabCondition) params.countTabCondition = countTabCondition;
846
- if (fieldKeys.length > 0) params.fieldKeys = JSON.stringify(fieldKeys);
847
- Object.assign(params, this.handleParams()); // 额外条件暂时隐藏,需要等后端确定是否需要该额外条件
848
- let res = await this.handleGetConfigApi(params, 'requestTableCondiTionDigital');
849
- this.handleConditionDiaital(res);
850
- return Promise.resolve(res);
851
- } catch (error) {
852
- console.log(error, 'getTableCondiTionDigital');
853
- }
854
- },
855
-
856
- /**
857
- * 处理检索分类的统计
858
- */
859
- handleConditionDiaital(map) {
860
- // TODO: 统计分类更新
861
- if (this.countTabCondition == 1) this.$emit('setTabConditionNumObj', map);
862
- if (!map || Object.keys(map).length === 0) return;
863
- // children
864
- let resList = [];
865
- this.handlePlatTree(this.treeData, resList);
866
- for (let key in map) {
867
- let useKey = key === 'ALL' ? 'all_data' : key;
868
- let matchItem = resList.find(v => v.sid == useKey);
869
- if (matchItem) {
870
- if (matchItem.sid == 'all_data' && this.countCondition == 1) {
871
- this.$set(this.allObj, 'digital', map[key] || 0);
872
- }
873
- this.$set(matchItem, 'digital', map[key] || 0);
874
- }
875
- }
876
- let conditionSid = this.conditionSid.indexOf('all_data') !== -1 ? ['ALL'] : this.conditionSid;
877
- let changeNum = 0;
878
- if (this.conditionType === 'keyword') {
879
- let num = 0;
880
- conditionSid.map(item => {
881
- return (num += parseInt(map[item]));
882
- });
883
- changeNum = num;
884
- } else {
885
- changeNum = map[conditionSid[0]];
886
- }
887
- return changeNum;
888
- },
889
-
890
- handlePlatTree(list, res) {
891
- if (list.length) {
892
- list.forEach(item => {
893
- if (item.children?.length) {
894
- item.children.forEach(v => {
895
- res.push(v);
896
- });
897
- } else {
898
- res.push(item);
899
- }
900
- });
901
- }
902
- },
903
- async tableCondiTionPromise(options) {
904
- try {
905
- await this.getTableCondiTionList(options);
906
- // 查count后台sql太慢,先注释
907
- if (this.countCondition === 1 || this.countTabCondition === 1) await this.getTableCondiTionDigital(false, this.keyword, this.fieldKeys, this.tabConditionId, this.countTabCondition); // 开启统计筛选分类
908
- } catch (err) {
909
- console.log(err);
910
- }
911
- },
912
- handleParams() {
913
- if (!this.localObj && Object.keys(this.localObj).length === 0) return {};
914
- let obj = {};
915
- if (Array.isArray(this.localObj.params)) {
916
- this.localObj.params.map(item => {
917
- obj[item.p_name] = item.p_value;
918
- });
919
- }
920
- if (Object.keys(this.localObj.extendParams || {}).length) {
921
- Object.assign(obj, this.localObj.extendParams);
922
- obj.extraParams = JSON.stringify(this.localObj.extendParams);
923
- }
924
- return obj;
925
- },
926
- changeWidth({ distance }) {
927
- const w = this.classificationWidth + distance;
928
- this.classificationWidth = Math.min(Math.max(w, 50), 650);
929
- },
930
- saveWidth() {
931
- const i = this.classificationIndex;
932
- const w = this.classificationWidth;
933
- this.saveListPersonaSetting(i, w);
934
- },
935
-
936
- // =======================
937
- async updateTableCondiTion() {
938
- await this.getTableCondiTionListNew(this.tableId);
939
- this.getTableCondiTionListRequest();
940
- },
941
-
942
- async saveGetTableCondiTionList(options) {
943
- await this.getTableCondiTionListNew(this.tableId);
944
- this.handleGetTableCondiTionList();
945
- // 删除,编辑筛选完成后 刷新数据
946
- this.$emit('getClassification', options);
947
- },
948
-
949
- changeSearch(key, item) {
950
- if (key == 'all') {
951
- this.searchDefName = '全部数据';
952
- } else {
953
- this.searchDefName = item.name;
954
- }
955
- this.$emit('changeSearch', key, item);
956
- },
957
-
958
- getTableCondiTionListRequest(first) {
959
- this.handleGetTableCondiTionList(first).then(checked => {
960
- this.reloadList(checked);
961
- });
962
- },
963
-
964
- reloadList(item) {
965
- // 新增筛选分类后刷新
966
- this.$emit('reloadList', item);
967
- },
968
-
969
- handleGetTableCondiTionList(first, conditionMap = {}) {
970
- let tableId = this.tableId;
971
- if (!tableId) return new Promise(resolve => resolve(false));
972
- let conditionMapTemp = Object.keys(conditionMap).length > 0 ? conditionMap : this.conditionMap;
973
- return new Promise((resolve, reject) => {
974
- if (Object.keys(conditionMapTemp).length > 0) {
975
- this.searchConditionList = conditionMapTemp.conditionList || [];
976
- this.displayCategoryList = conditionMapTemp.displayCategoryList || [];
977
- let obj = {
978
- conditionList: this.searchConditionList,
979
- displayCategoryList: this.displayCategoryList
980
- };
981
- this.$emit('getQuickSearchListObj', obj);
982
- this.settingId = conditionMapTemp.settingId;
983
- const checked = this.searchConditionList.find(item => item.isDefault) || {
984
- name: '全部数据',
985
- sid: 'all_data'
986
- };
987
- this.searchDefName = checked.name;
988
- // if (this.conditionType === "keyword") {
989
- this.tabConditionList = conditionMapTemp.tabConditionList || []; // 获取页签tab
990
- this.tabIndex = conditionMapTemp.tabConditionList && conditionMapTemp.tabConditionList.findIndex(item => item.isDefault); // 查询默认选中的标签
991
- // }
992
- // TODO:
993
- // this.getTableCondiTionList()
994
- if (this.$attrs.tableOptions?.filterCondition?.displayCategory && first) {
995
- resolve({
996
- name: this.$attrs.tableOptions?.filterCondition?.name,
997
- sid: this.$attrs.tableOptions?.filterCondition?.displayCategory
998
- });
999
- }
1000
- resolve(checked);
1001
- } else {
1002
- resolve({});
1003
- }
1004
- });
1005
- },
1006
-
1007
- async getTableCondiTionListNew(tableId) {
1008
- try {
1009
- if (!tableId) return new Promise(resolve => resolve(false));
1010
- let params = { tableId };
1011
- let res = await this.handleGetConfigApi(params, 'requestTableCondiTionList');
1012
- this.$emit('setConditionMap', res);
1013
- return Promise.resolve(res);
1014
- } catch (error) {
1015
- return Promise.resolve(false);
1016
- }
1017
- },
1018
- /* */
1019
- visibleDigital(item) {
1020
- if (this.countCondition !== 1) return false;
1021
- return item.digital || item.digital === 0;
1022
- },
1023
-
1024
- changeShowName(name) {
1025
- this.showTitleName = name;
1026
- },
1027
-
1028
- /**
1029
- * 清空专业模式设置的条件
1030
- */
1031
- handleClearClassConObj(...arg) {
1032
- let fn = this?.$refs?.professional?.handleClearConObj;
1033
- if (typeof fn === 'function') {
1034
- fn(...arg);
1035
- }
1036
- }
1037
- },
1038
- filters: {
1039
- fmtChildName(name, isPublic) {
1040
- return name && isPublic === '1' ? name.replace(/\(公共\)$/, '') : name;
1041
- }
1042
- },
1043
- activated() {
1044
- this.tableCondiTionPromise();
1045
- },
1046
- watch: {
1047
- tableId: {
1048
- immediate: true,
1049
- deep: true,
1050
- handler(val) {
1051
- if (!val) return;
1052
- this.getTableCondiTionListRequest(true);
1053
- if (this.curTableId === val) return;
1054
- this.curTableId = val;
1055
- // this.$nextTick(() => {
1056
- // console.log("---------watch----------tableCondiTionPromise")
1057
- // this.tableCondiTionPromise();
1058
- // });
1059
- }
1060
- },
1061
- curClassificationIndex: {
1062
- immediate: true,
1063
- deep: true,
1064
- handler(val) {
1065
- if (val === undefined) return;
1066
- this.classificationIndex = val;
1067
- }
1068
- },
1069
- curClassificationWidth: {
1070
- immediate: true,
1071
- handler(val) {
1072
- this.classificationWidth = Number(val) || 150;
1073
- }
1074
- },
1075
- curConditionList: {
1076
- immediate: true,
1077
- deep: true,
1078
- handler(val) {
1079
- if (!val || !val.length || this.treeData === val) return;
1080
- this.treeData = JSON.parse(JSON.stringify(val));
1081
- }
1082
- }
1083
- },
1084
- directives: {
1085
- flexibleResize
1086
- }
1087
- });
1088
- </script>
1089
- <style lang="less">
1090
- .classiffication-select-hide {
1091
- display: none !important;
1092
- }
1093
- .group-select-option {
1094
- display: flex !important;
1095
- align-items: center;
1096
- justify-content: space-between;
1097
- }
1098
- .group-select-option.ant-select-dropdown-menu-item-selected {
1099
- color: #2474ff !important;
1100
- }
1101
- .group-select-option.ant-select-dropdown-menu-item-active:not(.ant-select-dropdown-menu-item-disabled) {
1102
- color: #2474ff !important;
1103
- }
1104
-
1105
- .classificationIndex-4 {
1106
- margin-bottom: 10px;
1107
- border: 1px solid #d5d5d5;
1108
- border-radius: 4px;
1109
-
1110
- &.upack-up-wrap {
1111
- border-bottom: none;
1112
- }
1113
- }
1114
- </style>
1115
- <style lang="less" scoped>
1116
- .classification {
1117
- // margin-top: 4px;
1118
- cursor: pointer;
1119
- .tree-type {
1120
- height: 100%;
1121
- border: 1px solid #d5d5d5;
1122
- width: 150px;
1123
- margin-top: 8px;
1124
- border-radius: 4px;
1125
- line-height: 32px;
1126
- padding-bottom: 80px;
1127
- .tree {
1128
- height: calc(100% - 32px);
1129
- overflow: auto;
1130
- &::-webkit-scrollbar {
1131
- width: 5px;
1132
- }
1133
- }
1134
- .header {
1135
- display: flex;
1136
- justify-content: space-between;
1137
- padding: 0 10px;
1138
- font-size: 14px;
1139
- border-bottom: 1px solid #e6eaef;
1140
- }
1141
- .tree-item {
1142
- border-bottom: 1px solid #d5d5d5;
1143
- &.tree-header {
1144
- padding: 0 10px;
1145
- box-sizing: border-box;
1146
- }
1147
- cursor: pointer;
1148
- .parent {
1149
- display: flex;
1150
- justify-content: space-between;
1151
- align-items: center;
1152
- padding: 0 10px;
1153
- font-weight: 600;
1154
- &.open {
1155
- background-color: #f2f2f2;
1156
- border-bottom: 1px solid #d5d5d5;
1157
- }
1158
- }
1159
- .header-item {
1160
- color: rgba(0, 0, 0, 0.6);
1161
- box-sizing: border-box;
1162
- border-bottom: 1px solid transparent;
1163
- line-height: 1.4;
1164
- &.selected {
1165
- color: #2d7aff;
1166
- }
1167
- &:hover {
1168
- color: #2d7aff;
1169
- // border-color: #2d7aff;
1170
- }
1171
- &:active {
1172
- color: #000000;
1173
- border-color: transparent;
1174
- }
1175
- }
1176
- .children {
1177
- display: flex;
1178
- align-items: center;
1179
- padding-left: 23px;
1180
- padding-right: 10px;
1181
- height: 32px;
1182
- .child-item {
1183
- display: flex;
1184
- align-items: center;
1185
- // display: inline-block;
1186
- max-width: 100%;
1187
- color: #7c7c7c;
1188
- overflow: hidden;
1189
- text-overflow: ellipsis;
1190
- white-space: nowrap;
1191
- line-height: 1.5;
1192
- border-bottom: 1px solid transparent;
1193
-
1194
- &:hover {
1195
- color: #2d7aff;
1196
- // border-color: #2d7aff;
1197
- }
1198
- &.selected {
1199
- width: 100%;
1200
- display: flex;
1201
- align-items: center;
1202
- justify-content: space-between;
1203
- color: #2d7aff;
1204
- }
1205
- &:active {
1206
- color: #000000;
1207
- border-color: transparent;
1208
- }
1209
- &.disabled {
1210
- color: rgba(0, 0, 0, 0.2);
1211
- }
1212
- .child-item-content {
1213
- display: flex;
1214
- align-items: center;
1215
- }
1216
- .child-item-name {
1217
- overflow: hidden;
1218
- text-overflow: ellipsis;
1219
- white-space: nowrap;
1220
- }
1221
- .digital-span {
1222
- flex: 1;
1223
- margin-left: 5px;
1224
- text-align: left;
1225
- }
1226
- }
1227
- }
1228
- }
1229
- .tree-type-footer {
1230
- position: absolute;
1231
- bottom: 0;
1232
- width: 100%;
1233
- padding-left: 16px;
1234
- background: #fff;
1235
- .selected-num {
1236
- margin-bottom: 9px;
1237
- }
1238
- .selected-item-del {
1239
- margin-left: 0;
1240
- margin-bottom: 15px;
1241
- }
1242
- }
1243
- }
1244
- .tile-type {
1245
- border: 1px solid #d5d5d5;
1246
- border-radius: 4px;
1247
- margin-bottom: 8px;
1248
- padding: 0 17px;
1249
- .header {
1250
- width: 100%;
1251
- display: inline-flex;
1252
- justify-content: space-between;
1253
- align-items: center;
1254
- // padding: 0 14px;
1255
- line-height: 44px;
1256
- border-bottom: 1px solid #d5d5d5;
1257
- .all-data {
1258
- margin-right: auto;
1259
- border-bottom: 1px solid transparent;
1260
- line-height: 1.4;
1261
- color: #000;
1262
- font-size: 14px;
1263
- font-family: PingFangSC-Medium, PingFang SC;
1264
- font-weight: 500;
1265
- &:hover {
1266
- color: #2d7aff;
1267
- // border-color: #2d7aff;
1268
- }
1269
- &:active {
1270
- color: #000000;
1271
- border-color: transparent;
1272
- }
1273
- }
1274
- .selected {
1275
- color: #2d7aff;
1276
- }
1277
- .right-setting {
1278
- color: #000;
1279
- .anticon {
1280
- color: rgba(0, 0, 0, 0.6);
1281
- margin-right: 6px;
1282
- }
1283
- .upack-up-btn {
1284
- color: #2d7aff;
1285
- }
1286
- }
1287
- }
1288
- .tile {
1289
- border-bottom: 1px solid #d5d5d5;
1290
- padding: 9px 0;
1291
- }
1292
- .tile-item {
1293
- display: flex;
1294
- line-height: 38px;
1295
- cursor: pointer;
1296
- .parent {
1297
- width: 135px;
1298
- padding-right: 16px;
1299
- color: #000;
1300
- font-size: 14px;
1301
- font-weight: 600;
1302
- font-family: PingFangSC-Medium, PingFang SC;
1303
- // background: rgba(213, 213, 213, 0.12);
1304
- // border-right: 1px solid #d5d5d5;
1305
- max-width: 135px;
1306
- box-sizing: border-box;
1307
- }
1308
- .children {
1309
- // padding: 0 15px;
1310
- flex: 1;
1311
- .child-item {
1312
- margin: 0 5px;
1313
- padding: 1px 6px;
1314
- color: #7c7c7c;
1315
- font-size: 14px;
1316
- line-height: 1.5;
1317
- border-bottom: 1px solid transparent;
1318
- border-radius: 4px;
1319
- display: inline-block;
1320
- &:hover {
1321
- color: #2d7aff;
1322
- background-color: rgba(45, 122, 255, 0.1);
1323
- // border-color: #2d7aff;
1324
- }
1325
- &.selected {
1326
- color: #2d7aff;
1327
- background-color: rgba(45, 122, 255, 0.1);
1328
- }
1329
- &:active {
1330
- color: #000000;
1331
- border-color: transparent;
1332
- }
1333
- &.disabled {
1334
- color: rgba(0, 0, 0, 0.2);
1335
- }
1336
- }
1337
- }
1338
- .child-item {
1339
- &.selected {
1340
- color: #2d7aff;
1341
- }
1342
- }
1343
- }
1344
- .tile-item + .tile-item {
1345
- // border-top: 1px solid #d5d5d5;
1346
- }
1347
- }
1348
- .select-type {
1349
- position: relative;
1350
- width: 100px;
1351
- line-height: 32px;
1352
- height: 32px;
1353
- margin-right: 8px;
1354
- margin-bottom: 8px;
1355
- .title {
1356
- display: flex;
1357
- justify-content: space-between;
1358
- align-items: center;
1359
- width: 100%;
1360
- height: 100%;
1361
- padding: 0 8px;
1362
- border: 1px solid #d5d5d5;
1363
- border-radius: 4px;
1364
- color: #969696;
1365
- font-size: 12px;
1366
- box-sizing: border-box;
1367
- > span {
1368
- overflow: hidden;
1369
- text-overflow: ellipsis;
1370
- white-space: nowrap;
1371
- color: #212121;
1372
- font-size: 14px;
1373
- }
1374
- i {
1375
- font-size: 12px;
1376
- }
1377
- }
1378
- .main-wrapper {
1379
- position: absolute;
1380
- z-index: 3000;
1381
- width: 100%;
1382
- min-width: 270px;
1383
- // max-height: 300px;
1384
- // overflow-y: auto;
1385
- border: 1px solid #d5d5d5;
1386
- background-color: #fff;
1387
- border-radius: 4px;
1388
- // padding-top: 5px;
1389
- // padding-bottom: 10px;
1390
- top: 39px;
1391
- &::-webkit-scrollbar {
1392
- width: 5px;
1393
- }
1394
- .footer {
1395
- display: flex;
1396
- align-items: center;
1397
- // flex-direction: column;
1398
- // padding: 0 10px;
1399
- // border-top: 1px solid #d5d5d5;
1400
- span:first-child {
1401
- margin-right: 16px;
1402
- }
1403
- }
1404
- }
1405
- .tree {
1406
- padding: 32px 0;
1407
- /* position: relative; */
1408
- max-height: 300px;
1409
- overflow: auto;
1410
- }
1411
- .tree-item {
1412
- border-bottom: 1px solid #d5d5d5;
1413
- &.tree-header {
1414
- padding: 0 10px;
1415
- box-sizing: border-box;
1416
- display: flex;
1417
- align-items: center;
1418
- position: absolute;
1419
- width: 100%;
1420
- background-color: #fff;
1421
- top: 0;
1422
- height: 40px;
1423
- }
1424
- .child-header {
1425
- flex: 1;
1426
- }
1427
- cursor: pointer;
1428
- .parent {
1429
- display: flex;
1430
- justify-content: space-between;
1431
- align-items: center;
1432
- padding: 0 10px;
1433
- font-weight: 600;
1434
- &.open {
1435
- background-color: #f2f2f2;
1436
- border-bottom: 1px solid #d5d5d5;
1437
- }
1438
- }
1439
- .header-item {
1440
- color: rgba(0, 0, 0, 0.6);
1441
- border-bottom: 1px solid transparent;
1442
- &.selected {
1443
- color: #2d7aff;
1444
- }
1445
- &:hover {
1446
- color: #2d7aff;
1447
- // border-color: #2d7aff;
1448
- }
1449
- &:active {
1450
- color: #000000;
1451
- border-color: transparent;
1452
- }
1453
- }
1454
- .children {
1455
- display: flex;
1456
- align-items: center;
1457
- padding-left: 23px;
1458
- padding-right: 10px;
1459
- height: 32px;
1460
- line-height: 32px;
1461
- .child-item {
1462
- display: inline-block;
1463
- max-width: 100%;
1464
- color: #7c7c7c;
1465
- overflow: hidden;
1466
- text-overflow: ellipsis;
1467
- white-space: nowrap;
1468
- line-height: 1.5;
1469
- border-bottom: 1px solid transparent;
1470
- &.child-header {
1471
- padding: 0 10px;
1472
- }
1473
- &.header-item {
1474
- color: rgba(0, 0, 0, 0.6);
1475
- border-bottom: 1px solid transparent;
1476
- &.selected {
1477
- color: #2d7aff;
1478
- }
1479
- &:hover {
1480
- color: #2d7aff;
1481
- // border-color: #2d7aff;
1482
- }
1483
- &:active {
1484
- color: #000000;
1485
- border-color: transparent;
1486
- }
1487
- }
1488
- &:hover {
1489
- color: #2d7aff;
1490
- // border-color: #2d7aff;
1491
- }
1492
- &.selected {
1493
- width: 100%;
1494
- display: flex;
1495
- align-items: center;
1496
- justify-content: space-between;
1497
- color: #2d7aff;
1498
- }
1499
- &:active {
1500
- color: #000000;
1501
- border-color: transparent;
1502
- }
1503
- &.disabled {
1504
- color: rgba(0, 0, 0, 0.2);
1505
- }
1506
- }
1507
- }
1508
- &:last-child {
1509
- border-bottom: 0;
1510
- }
1511
- }
1512
- .select-type-footer {
1513
- position: absolute;
1514
- width: 100%;
1515
- bottom: 0;
1516
- display: flex;
1517
- align-items: center;
1518
- justify-content: space-between;
1519
- height: 40px;
1520
- padding: 0 12px;
1521
- background-color: #fff;
1522
- border-top: 1px solid #d5d5d5;
1523
- }
1524
- }
1525
- .group-type {
1526
- border: 1px solid #d5d5d5;
1527
- padding: 0 16px;
1528
- border-radius: 4px;
1529
- margin-bottom: 8px;
1530
- .header {
1531
- width: 100%;
1532
- display: inline-flex;
1533
- justify-content: space-between;
1534
- align-items: center;
1535
- // padding: 0 14px;
1536
- line-height: 44px;
1537
- // border-bottom: 1px solid #d5d5d5;
1538
- padding-left: 4px;
1539
- .all-data {
1540
- margin-right: auto;
1541
- color: rgba(0, 0, 0, 0.6);
1542
- border-bottom: 1px solid transparent;
1543
- // line-height: 1.4;
1544
- &:hover {
1545
- color: #2d7aff;
1546
- // border-color: #2d7aff;
1547
- }
1548
- &:active {
1549
- color: #000000;
1550
- border-color: transparent;
1551
- }
1552
- }
1553
- .selected {
1554
- color: #2d7aff;
1555
- }
1556
- .right-setting {
1557
- color: #000;
1558
- .anticon {
1559
- color: rgba(0, 0, 0, 0.6);
1560
- margin-right: 6px;
1561
- }
1562
- .upack-up-btn {
1563
- color: #2d7aff;
1564
- }
1565
- }
1566
- }
1567
- .group {
1568
- padding: 16px 0;
1569
- border-bottom: 1px solid #d5d5d5;
1570
- .child-item {
1571
- color: #7c7c7c;
1572
- overflow: hidden;
1573
- text-overflow: ellipsis;
1574
- white-space: nowrap;
1575
- border-bottom: 1px solid transparent;
1576
- margin-right: 8px;
1577
-
1578
- &:hover {
1579
- color: #2d7aff;
1580
- border-color: transparent;
1581
- }
1582
- &.selected {
1583
- color: #2d7aff;
1584
- }
1585
- &:active {
1586
- color: #000000;
1587
- border-color: transparent;
1588
- }
1589
- &.disabled {
1590
- color: rgba(0, 0, 0, 0.2);
1591
- }
1592
- }
1593
- /deep/ .ant-select {
1594
- width: 130px;
1595
- margin-right: 8px;
1596
- margin-bottom: 8px;
1597
- }
1598
- }
1599
- .select-type-footer {
1600
- position: absolute;
1601
- width: 100%;
1602
- bottom: 0;
1603
- display: flex;
1604
- align-items: center;
1605
- justify-content: space-between;
1606
- height: 32px;
1607
- padding: 0 12px;
1608
- background-color: #fff;
1609
- }
1610
- }
1611
- .group-type {
1612
- border: 1px solid #d5d5d5;
1613
- padding: 0 16px;
1614
- border-radius: 4px;
1615
- margin-bottom: 8px;
1616
- .header {
1617
- width: 100%;
1618
- display: inline-flex;
1619
- justify-content: space-between;
1620
- align-items: center;
1621
- // padding: 0 14px;
1622
- line-height: 44px;
1623
- border-bottom: 1px solid #d5d5d5;
1624
- padding-left: 4px;
1625
- .all-data {
1626
- margin-right: auto;
1627
- color: rgba(0, 0, 0, 0.6);
1628
- border-bottom: 1px solid transparent;
1629
- // line-height: 1.4;
1630
- &:hover {
1631
- color: #2d7aff;
1632
- // border-color: #2d7aff;
1633
- border-color: transparent;
1634
- }
1635
- &:active {
1636
- color: #2d7aff;
1637
- border-color: transparent;
1638
- }
1639
- }
1640
- .selected {
1641
- color: #2d7aff;
1642
- }
1643
- .right-setting {
1644
- color: #000;
1645
- .anticon {
1646
- color: rgba(0, 0, 0, 0.6);
1647
- margin-right: 6px;
1648
- }
1649
- }
1650
- }
1651
- .group {
1652
- padding: 16px 0;
1653
- border-bottom: 1px solid #d5d5d5;
1654
- /deep/ .ant-select {
1655
- width: 130px;
1656
- margin-right: 8px;
1657
- margin-bottom: 8px;
1658
- }
1659
- }
1660
- }
1661
- .selected-list {
1662
- padding: 11.5px 6px;
1663
- display: flex;
1664
- align-items: center;
1665
- .selected-item {
1666
- display: flex;
1667
- align-items: center;
1668
- color: #2d7aff;
1669
- padding: 1px 6.5px 1px 8px;
1670
- background-color: rgba(45, 122, 255, 0.1);
1671
- border-radius: 4px;
1672
- margin-left: 8px;
1673
- /deep/ .anticon-close {
1674
- margin-left: 13px;
1675
- font-size: 12px;
1676
- color: #2474ff;
1677
- }
1678
- }
1679
- }
1680
- .selected-num {
1681
- font-size: 14px;
1682
- color: rgba(0, 0, 0, 0.6);
1683
- line-height: 20px;
1684
- margin-right: 8px;
1685
- }
1686
- .selected-item-del {
1687
- display: flex;
1688
- align-items: center;
1689
- font-size: 14px;
1690
- color: #2474ff;
1691
- margin-left: 22px;
1692
- line-height: 20px;
1693
- .svg-icon-btn {
1694
- margin-right: 6px;
1695
- }
1696
- }
1697
- .selected-item-del:hover {
1698
- color: rgba(36, 116, 255, 0.8);
1699
- }
1700
- .selected-list {
1701
- padding: 11.5px 6px;
1702
- display: flex;
1703
- align-items: center;
1704
- .selected-item {
1705
- display: flex;
1706
- align-items: center;
1707
- color: #2d7aff;
1708
- padding: 1px 6.5px 1px 8px;
1709
- background-color: rgba(45, 122, 255, 0.1);
1710
- border-radius: 4px;
1711
- margin-left: 8px;
1712
- /deep/ .anticon-close {
1713
- margin-left: 13px;
1714
- font-size: 12px;
1715
- color: #2474ff;
1716
- }
1717
- }
1718
- }
1719
- .selected-num {
1720
- font-size: 14px;
1721
- color: rgba(0, 0, 0, 0.6);
1722
- line-height: 20px;
1723
- margin-right: 8px;
1724
- }
1725
- .selected-item-del {
1726
- display: flex;
1727
- align-items: center;
1728
- font-size: 14px;
1729
- color: #2474ff;
1730
- margin-left: 22px;
1731
- line-height: 20px;
1732
- .svg-icon-btn {
1733
- margin-right: 6px;
1734
- }
1735
- }
1736
- .selected-item-del:hover {
1737
- color: rgba(36, 116, 255, 0.8);
1738
- }
1739
- .disabled {
1740
- pointer-events: none;
1741
- }
1742
-
1743
- .classify-4-container {
1744
- overflow: hidden;
1745
- transition: height ease-in 0.2s;
1746
- }
1747
- div.classify-4 {
1748
- margin-bottom: 0px;
1749
- border: none;
1750
- border-bottom: 1px solid #d5d5d5;
1751
- .header {
1752
- border-bottom: none !important;
1753
- }
1754
- }
1755
- }
1756
- </style>
1
+ <template>
2
+ <div :class="['classification', 'classificationIndex-' + classificationIndex, isPackUp ? 'upack-up-wrap' : '']" :style="dynamicStyle">
3
+ <template v-if="classificationIndex === 0">
4
+ <div
5
+ class="tree-type classify-0"
6
+ :style="{
7
+ width: classificationWidth + 'px',
8
+ paddingBottom: conditionType === 'keyword' ? '80px' : 0
9
+ }"
10
+ v-flexible-resize="{
11
+ mode: 'VR',
12
+ onMove: changeWidth,
13
+ onEnd: saveWidth
14
+ }"
15
+ >
16
+ <div class="header" v-if="hideConditionChangeBtn != 1 || hideConditionChangeSetting != 1">
17
+ <span @click="handleModeChange" v-if="hideConditionChangeBtn != 1">
18
+ <a-icon type="swap" />
19
+ {{ '切换' }}
20
+ </span>
21
+ <span @click="handleSettingShow" v-if="hideConditionChangeSetting != 1">
22
+ <a-icon type="setting" />
23
+ {{ '设置' }}
24
+ </span>
25
+ </div>
26
+ <ul class="tree">
27
+ <template v-for="(item, index) in treeData">
28
+ <li
29
+ :key="index"
30
+ class="tree-item"
31
+ :class="{
32
+ 'tree-header': index === 0 || !item.children || item.children.length === 0
33
+ }"
34
+ v-if="index === 0 || !item.children || item.children.length === 0 || (item.children && item.children.filter(i => i.isShow).length !== 0)"
35
+ >
36
+ <template v-if="index === 0 || !item.children || item.children.length === 0">
37
+ <span class="child-item header-item" :class="{ selected: item.selected || conditionSid.indexOf('all_data') !== -1 }" @click="handleItemClick(item)"
38
+ >{{ item.name }}
39
+ <span class="digital-span" v-if="visibleDigital(item)"> ({{ item.digital || 0 }}) </span>
40
+ </span>
41
+ </template>
42
+ <template v-else>
43
+ <span class="parent" :class="{ open: item.open }" @click="handleFold(item)">
44
+ <span>
45
+ {{ item.name }}
46
+ <span class="digital-span" v-if="visibleDigital(item)"> ({{ item.digital || 0 }}) </span>
47
+ </span>
48
+ <a-icon :type="item.open ? 'down' : 'right'" />
49
+ </span>
50
+ <template v-if="item.open">
51
+ <div class="children" v-for="(child, cIndex) in item.children.filter(i => i.isShow)" :key="cIndex">
52
+ <a-tooltip placement="right" v-if="child.isShow">
53
+ <template slot="title">
54
+ <span>{{ tooltipTilte(child) }}</span>
55
+ </template>
56
+ <span
57
+ class="child-item"
58
+ :class="{
59
+ selected: child.selected,
60
+ disabled: !child.digital && getCondiTionDigital
61
+ }"
62
+ @click="handleItemClick(child, cIndex, item, index)"
63
+ >
64
+ <span class="child-item-name">
65
+ {{ child.name | fmtChildName(child.isPublic) }}
66
+ </span>
67
+ <span class="digital-span" v-if="visibleDigital(child)"> ({{ child.digital || 0 }}) </span>
68
+ <a-icon type="check" v-if="child.selected" />
69
+ </span>
70
+ </a-tooltip>
71
+ </div>
72
+ </template>
73
+ </template>
74
+ </li>
75
+ </template>
76
+ </ul>
77
+ <div class="tree-type-footer" v-if="conditionType === 'keyword' && hideClearConditionChange != 1">
78
+ <div class="selected-num">已选择{{ conditionSid.filter(item => item !== 'all_data').length }}项</div>
79
+ <div class="selected-item-del" @click="handleItemClick({ sid: 'all_data', name: '全部数据', digital: allObj.digital })">
80
+ <svg-icon class-name="svg-icon-btn" icon-class="xitongtubiaoliebiaocaozuoanniushanchu" />
81
+ 清空筛选
82
+ </div>
83
+ </div>
84
+ </div>
85
+ </template>
86
+ <template v-if="classificationIndex === 1">
87
+ <div
88
+ class="tile-type classify-1"
89
+ v-if="hideConditionChangeBtn != 1 || hideConditionChangeSetting != 1 || hideConditionChangeSetting != 1 || originConditionList.filter(item => item.isShow).length > 0"
90
+ >
91
+ <div class="header" v-if="hideConditionChangeBtn != 1 || hideConditionChangeSetting != 1">
92
+ <span class="all-data" @click="handleItemClick({ sid: 'all_data', name: '全部数据', digital: allObj.digital })" :class="{ selected: conditionSid.indexOf('all_data') !== -1 }">
93
+ 全部数据
94
+ <template v-if="allObj.digital || allObj.digital === 0"> ({{ allObj.digital || 0 }}) </template>
95
+ </span>
96
+ <div class="right-setting">
97
+ <span @click="handleModeChange" style="margin-right: 30px;" v-if="hideConditionChangeBtn != 1">
98
+ <a-icon type="swap" />
99
+ {{ '切换' }}
100
+ </span>
101
+ <span @click="handleSettingShow" v-if="hideConditionChangeSetting != 1">
102
+ <a-icon type="setting" />
103
+ {{ '设置' }}
104
+ </span>
105
+ </div>
106
+ </div>
107
+ <ul
108
+ class="tile"
109
+ :style="{
110
+ borderBottom: conditionType === 'keyword' && hideClearConditionChange != 1 ? '1px solid #d5d5d5' : 0
111
+ }"
112
+ >
113
+ <template v-for="(item, index) in treeData.slice(1)">
114
+ <li class="tile-item" :key="index" v-if="item.children && item.children.length > 0">
115
+ <template v-if="!item.children || item.children.length === 0">
116
+ <span class="child-item" style="padding-left: 17px;" :class="{ selected: item.selected }" @click="handleItemClick(item)"
117
+ >{{ item.name }}
118
+ {{ item.digital }}
119
+ <span class="digital-span" v-if="visibleDigital(item)"> ({{ item.digital || 0 }}) </span>
120
+ </span>
121
+ </template>
122
+ <template v-else>
123
+ <!-- <text-over-tooltip
124
+ refName="digitalTitle"
125
+ class="parent digitalTitle"
126
+ :content="
127
+ item.name +
128
+ (countCondition == 1 && (item.digital || item.digital === 0)
129
+ ? ' (' + (item.digital || 0) + ')'
130
+ : '')
131
+ "
132
+ v-if="item.children.filter(i => i.isShow).length !== 0"
133
+ ></text-over-tooltip> -->
134
+ <span class="parent ellips">{{ item.name }}</span>
135
+ <div class="children">
136
+ <template v-for="(child, cIndex) in item.children">
137
+ <span
138
+ v-if="child.isShow"
139
+ :key="cIndex"
140
+ class="child-item"
141
+ :class="{
142
+ selected: child.selected,
143
+ disabled: !child.digital && getCondiTionDigital
144
+ }"
145
+ @click="handleItemClick(child, cIndex, item, index)"
146
+ >{{ child.name | fmtChildName(child.isPublic) }}
147
+ <span class="digital-span" v-if="visibleDigital(child)"> ({{ child.digital || 0 }}) </span>
148
+ </span>
149
+ </template>
150
+ </div>
151
+ </template>
152
+ </li>
153
+ </template>
154
+ </ul>
155
+ <div class="selected-list" v-if="conditionType === 'keyword' && hideClearConditionChange != 1">
156
+ <div class="selected-num">已选择{{ conditionSid.filter(item => item !== 'all_data').length }}项</div>
157
+ <template v-for="(item, index) in treeData.slice(1)">
158
+ <div class="selected-item" v-if="!item.children || item.children.length === 0" :key="item.sid">
159
+ {{ item.name }}
160
+ <span class="digital-span" v-if="visibleDigital(item)"> ({{ item.digital || 0 }}) </span>
161
+ <a-icon type="close" @click="handleItemClick(item)" />
162
+ </div>
163
+ <template v-else>
164
+ <template v-for="(child, cIndex) in item.children">
165
+ <div class="selected-item" v-if="child.selected" :key="child.sid">
166
+ {{ child.name }}
167
+ <span class="digital-span" v-if="visibleDigital(child)"> ({{ child.digital || 0 }}) </span>
168
+ <a-icon type="close" @click="handleItemClick(child, cIndex, item, index)" />
169
+ </div>
170
+ </template>
171
+ </template>
172
+ </template>
173
+ <div class="selected-item-del" @click="handleItemClick({ sid: 'all_data', name: '全部数据', digital: allObj.digital })">
174
+ <svg-icon class-name="svg-icon-btn" icon-class="xitongtubiaoliebiaocaozuoanniushanchu" />
175
+ 清空筛选
176
+ </div>
177
+ </div>
178
+ </div>
179
+ </template>
180
+ <template v-if="classificationIndex === 2">
181
+ <div class="select-type classify-2" ref="selectType">
182
+ <span class="title" @click="() => toggleSelect()">
183
+ <a-tooltip placement="top">
184
+ <template slot="title">
185
+ <span>{{ titleName }}</span>
186
+ </template>
187
+ <span>{{ titleName }}</span>
188
+ </a-tooltip>
189
+ <a-icon :type="selectShow ? 'up' : 'down'" />
190
+ </span>
191
+ <div class="main-wrapper" v-if="selectShow">
192
+ <ul class="tree" :style="{ padding: conditionType === 'keyword' ? '40px 0' : '40px 0 0' }">
193
+ <template v-for="(item, index) in treeData">
194
+ <li
195
+ :key="index"
196
+ class="tree-item"
197
+ :class="{
198
+ 'tree-header': index === 0 || !item.children || item.children.length === 0
199
+ }"
200
+ v-if="index === 0 || !item.children || item.children.length === 0 || (item.children && item.children.filter(i => i.isShow).length !== 0)"
201
+ >
202
+ <template v-if="index === 0 || !item.children || item.children.length === 0">
203
+ <span class="child-item child-header header-item" :class="{ selected: item.selected || conditionSid.indexOf('all_data') !== -1 }" @click="handleItemClick(item)"
204
+ >{{ item.name }}
205
+ <span class="digital-span" v-if="visibleDigital(item)"> ({{ item.digital || 0 }}) </span>
206
+ </span>
207
+ <div class="footer">
208
+ <span @click="handleModeChange" v-if="hideConditionChangeBtn != 1">
209
+ <a-icon type="swap" />
210
+ {{ '切换' }}
211
+ </span>
212
+ <span @click="handleSettingShow" v-if="hideConditionChangeSetting != 1">
213
+ <a-icon type="setting" />
214
+ {{ '设置' }}
215
+ </span>
216
+ </div>
217
+ </template>
218
+ <template v-else>
219
+ <span class="parent" :class="{ open: item.open }" @click="handleFold(item)" v-if="item.children.filter(i => i.isShow).length !== 0">
220
+ {{ item.name }}{{ item.digital || item.digital === 0 ? '(' + item.digital + ')' : '' }}
221
+ <a-icon :type="item.open ? 'down' : 'right'" />
222
+ </span>
223
+ <template v-if="item.open">
224
+ <div class="children" v-for="(child, cIndex) in item.children.filter(i => i.isShow)" :key="cIndex">
225
+ <a-tooltip placement="right" v-if="child.isShow">
226
+ <template slot="title">
227
+ <span>{{ tooltipTilte(child) }}</span>
228
+ </template>
229
+ <span
230
+ class="child-item"
231
+ :class="{
232
+ selected: child.selected,
233
+ disabled: !child.digital && getCondiTionDigital
234
+ }"
235
+ @click="handleItemClick(child, cIndex, item, index)"
236
+ >
237
+ <span>
238
+ {{ child.name | fmtChildName(child.isPublic) }}
239
+ <span class="digital-span" v-if="visibleDigital(child)"> ({{ child.digital || 0 }}) </span>
240
+ </span>
241
+ <a-icon type="check" v-if="child.selected" />
242
+ </span>
243
+ </a-tooltip>
244
+ </div>
245
+ </template>
246
+ </template>
247
+ </li>
248
+ </template>
249
+ </ul>
250
+ <div class="select-type-footer" v-if="conditionType === 'keyword' && hideClearConditionChange != 1">
251
+ <div class="selected-num">已选择{{ conditionSid.filter(item => item !== 'all_data').length }}项</div>
252
+ <div class="selected-item-del" @click="handleItemClick({ sid: 'all_data', name: '全部数据', digital: allObj.digital })">
253
+ <svg-icon class-name="svg-icon-btn" icon-class="xitongtubiaoliebiaocaozuoanniushanchu" />
254
+ 清空筛选
255
+ </div>
256
+ </div>
257
+ </div>
258
+ </div>
259
+ </template>
260
+ <template v-if="classificationIndex === 3">
261
+ <div
262
+ class="group-type classify-3"
263
+ v-if="hideConditionChangeBtn != 1 || hideConditionChangeSetting != 1 || hideConditionChangeSetting != 1 || originConditionList.filter(item => item.isShow).length > 0"
264
+ >
265
+ <div class="header" v-if="hideConditionChangeBtn != 1 || hideConditionChangeSetting != 1">
266
+ <span class="all-data" @click="handleItemClick({ sid: 'all_data', name: '全部数据', digital: allObj.digital })" :class="{ selected: conditionSid.indexOf('all_data') !== -1 }">
267
+ 全部数据
268
+ <template v-if="allObj.digital || allObj.digital === 0"> ({{ allObj.digital || 0 }}) </template>
269
+ </span>
270
+ <div class="right-setting">
271
+ <span @click="handleModeChange" style="margin-right: 30px;" v-if="hideConditionChangeBtn != 1">
272
+ <a-icon type="swap" />
273
+ {{ '切换' }}
274
+ </span>
275
+ <span @click="handleSettingShow" v-if="hideConditionChangeSetting != 1">
276
+ <a-icon type="setting" />
277
+ {{ '设置' }}
278
+ </span>
279
+ </div>
280
+ </div>
281
+ <div
282
+ class="group"
283
+ :style="{
284
+ borderBottom: conditionType === 'keyword' && hideClearConditionChange != 1 ? '1px solid #d5d5d5' : 0
285
+ }"
286
+ >
287
+ <template v-for="(item, index) in treeData.slice(1)">
288
+ <template v-if="!item.children || item.children.length === 0">
289
+ <span :key="item.sid" class="child-item" style="padding-left: 17px;" :class="{ selected: item.selected }" @click="handleItemClick(item)"
290
+ >{{ item.name }}
291
+ {{ item.digital }}
292
+ <span class="digital-span" v-if="visibleDigital(item)"> ({{ item.digital || 0 }}) </span>
293
+ </span>
294
+ </template>
295
+ <template v-else>
296
+ <a-select
297
+ :key="item.sid"
298
+ :placeholder="item.name + (countCondition == 1 && (item.digital || item.digital === 0) ? ' (' + (item.digital || 0) + ')' : '')"
299
+ allowClear
300
+ @change="(value, option) => handleChange(value, option, item, index)"
301
+ :value="groupSelect(index)"
302
+ option-label-prop="label"
303
+ v-if="item.children.filter(i => i.isShow).length !== 0"
304
+ >
305
+ <a-select-option
306
+ :value="0"
307
+ :label="item.name + (countCondition == 1 && (item.digital || item.digital === 0) ? ' (' + (item.digital || 0) + ')' : '')"
308
+ class="classiffication-select-hide"
309
+ >
310
+ {{ item.name }}
311
+ <span class="digital-span" v-if="visibleDigital(item)"> ({{ item.digital || 0 }}) </span>
312
+ </a-select-option>
313
+ <a-select-option
314
+ v-for="(child, cIndex) in item.children.filter(i => i.isShow)"
315
+ :key="child.sid"
316
+ :value="child.sid"
317
+ :label="child.name + (countCondition == 1 && visibleDigital(child) ? ' (' + (child.digital || 0) + ')' : '')"
318
+ :child="child"
319
+ :cIndex="cIndex"
320
+ :index="index"
321
+ :item="item"
322
+ :disabled="!child.digital && getCondiTionDigital"
323
+ class="group-select-option"
324
+ @click="(value, option) => conditionSid.indexOf(child.sid) !== -1 && handleItemClick(child, cIndex, item, index)"
325
+ >
326
+ <span>
327
+ {{ child.name }}
328
+ <span class="digital-span" v-if="visibleDigital(child)"> ({{ child.digital || 0 }}) </span>
329
+ </span>
330
+ <a-icon type="check" v-if="child.selected" />
331
+ </a-select-option>
332
+ </a-select>
333
+ </template>
334
+ </template>
335
+ </div>
336
+ <div class="selected-list" v-if="conditionType === 'keyword' && hideClearConditionChange != 1">
337
+ <div class="selected-num">已选择{{ conditionSid.filter(item => item !== 'all_data').length }}项</div>
338
+ <template v-for="(item, index) in treeData.slice(1)">
339
+ <div class="selected-item" v-if="!item.children || item.children.length === 0" :key="item.sid">
340
+ {{ item.name }}
341
+ <span class="digital-span" v-if="visibleDigital(item)"> ({{ item.digital || 0 }}) </span>
342
+ <a-icon type="close" @click="handleItemClick(item)" />
343
+ </div>
344
+ <template v-else>
345
+ <template v-for="(child, cIndex) in item.children">
346
+ <div class="selected-item" :key="child.sid" v-if="child.selected">
347
+ {{ child.name }}
348
+ <span class="digital-span" v-if="visibleDigital(child)"> ({{ child.digital || 0 }}) </span>
349
+ <a-icon type="close" @click="handleItemClick(child, cIndex, item, index)" />
350
+ </div>
351
+ </template>
352
+ </template>
353
+ </template>
354
+ <div class="selected-item-del" @click="handleItemClick({ sid: 'all_data', name: '全部数据', digital: allObj.digital })">
355
+ <svg-icon class-name="svg-icon-btn" icon-class="xitongtubiaoliebiaocaozuoanniushanchu" />
356
+ 清空筛选
357
+ </div>
358
+ </div>
359
+ </div>
360
+ </template>
361
+
362
+ <template v-if="classificationIndex === 4">
363
+ <div class="group-type classify-3 classify-4" v-if="showIconBtn || hasConditionList">
364
+ <div class="header" v-if="showIconBtn">
365
+ <!-- @click="handleItemClick({ sid: 'all_data', name: '全部数据', digital: allObj.digital })" -->
366
+ <span class="all-data" :class="{ selected: conditionSid.indexOf('all_data') !== -1 }">
367
+ {{ showTitleName }}
368
+ <template v-if="allObj.digital || allObj.digital === 0"> ({{ allObj.digital || 0 }}) </template>
369
+ </span>
370
+ <div class="right-setting">
371
+ <span style="margin-right: 30px;" class="upack-up-btn" @click="isPackUp = !isPackUp">
372
+ {{ isPackUp ? '展开' : '收起' }}
373
+ <a-icon style="color:#2d7aff" :type="isPackUp ? 'down' : 'up'" />
374
+ </span>
375
+ <span @click="handleModeChange" style="margin-right: 30px;" v-if="hideConditionChangeBtn != 1">
376
+ <a-icon type="swap" />
377
+ <!-- {{ $t("1.1.5.2") }} -->
378
+ 切换
379
+ </span>
380
+ <span @click="handleSettingShow" v-if="hideConditionChangeSetting != 1">
381
+ <a-icon type="setting" />
382
+ <!-- {{ $t("1.1.5.3") }} -->
383
+ 设置
384
+ </span>
385
+ </div>
386
+ </div>
387
+ </div>
388
+ <div class="classify-4-container" :style="{ height: isPackUp ? 0 : 'auto' }">
389
+ <search-professional-model
390
+ ref="professional"
391
+ v-bind="$attrs"
392
+ v-on="$listeners"
393
+ :originConditionList="originConditionList"
394
+ :displayCategoryList="displayCategoryList"
395
+ :treeData="treeData"
396
+ :tableId="tableId"
397
+ :searchFieldList="searchFieldList"
398
+ @handleItemClick="handleItemClick"
399
+ @changeShowName="changeShowName"
400
+ />
401
+ </div>
402
+ </template>
403
+ <!-- searchFieldList: props -->
404
+ <!-- saveGetTableCondiTionList 新增,删除 -->
405
+ <!-- CondiTionListInit 修改? -->
406
+
407
+ <set-classification
408
+ ref="search"
409
+ v-bind="$attrs"
410
+ v-on="$listeners"
411
+ @changeSearch="changeSearch"
412
+ @saveGetTableCondiTionList="saveGetTableCondiTionList"
413
+ @CondiTionListInit="updateTableCondiTion"
414
+ @setClassifyModal="setClassifyModal"
415
+ :searchFieldList="searchFieldList"
416
+ :conditionList="searchConditionList"
417
+ :displayCategoryList="displayCategoryList"
418
+ :settingId="settingId"
419
+ :searchDefName="searchDefName"
420
+ :tableId="tableId"
421
+ :classifyModal="classifyModal"
422
+ :filterApiConfig="filterApiConfig"
423
+ />
424
+ </div>
425
+ </template>
426
+
427
+ <script>
428
+ import flexibleResize from '@/directive/flexibleResize';
429
+ import setClassification from '../components/search-modal/set-classification';
430
+ import { filterApiFn } from '~/table-filter/src/mixins/mixins';
431
+ import { Icon, Tooltip, Select } from 'ant-design-vue';
432
+ import svgIcon from '@/component/svg/index.vue';
433
+ import searchProfessionalModel from './search-professional-model.vue';
434
+ import create from '@/core/create';
435
+ export default create({
436
+ name: 'Classification',
437
+ mixins: [filterApiFn],
438
+ provide() {
439
+ return {
440
+ root_isShowResetButton: this.isShowResetButton
441
+ };
442
+ },
443
+ components: {
444
+ // Search,
445
+ [Icon.name]: Icon,
446
+ [Tooltip.name]: Tooltip,
447
+ [Select.name]: Select,
448
+ [Select.Option.name]: Select.Option,
449
+ svgIcon,
450
+ setClassification,
451
+ searchProfessionalModel
452
+ },
453
+ data() {
454
+ return {
455
+ classificationWidth: 150,
456
+ selectShow: false,
457
+ treeData: [],
458
+ conditionList: [],
459
+ originConditionList: [],
460
+ condiTionParams: {},
461
+ classificationIndex: 2,
462
+ curTableId: '',
463
+ spinning: false,
464
+ allObj: {
465
+ name: '全部数据',
466
+ sid: 'all_data'
467
+ },
468
+
469
+ searchConditionList: [],
470
+ displayCategoryList: [],
471
+ settingId: '',
472
+ searchDefName: '', // no use ?
473
+ classifyModal: false, // 筛选分类的弹窗
474
+
475
+ showTitleName: '全部数据',
476
+ isPackUp: false // 是否收起 目前只用于 classificationIndex = 4 (专业模式)
477
+ };
478
+ },
479
+ props: {
480
+ tableId: { type: String },
481
+ conditionSid: { type: Array },
482
+ localObj: { type: Object },
483
+ curClassificationIndex: { type: Number },
484
+ curClassificationWidth: { type: Number },
485
+ curConditionList: { type: Array },
486
+ tableName: { type: String },
487
+ showRelatedTreeBtn: { type: Boolean }, // 平铺列表按钮
488
+ conditionType: { type: String }, // 筛选策略,为keyword是关键字优先,否则筛选分类优先
489
+ hideConditionChangeBtn: { type: Number }, // 是否隐藏切换按钮,1是
490
+ hideConditionChangeSetting: { type: Number }, // 是否隐藏分类设置 ,1是
491
+ hideClearConditionChange: { type: Number }, // 是否隐藏清空筛选分类,1是
492
+ countCondition: { type: Number }, // 是否统计筛选分类,1统计筛选分类,0反之
493
+ countTabCondition: { type: Number }, // 筛选页签是否进行数量统计,1统计筛选页签,0反之
494
+ keyword: { type: String },
495
+ isShowResetButton: { type: Boolean, default: true }, // 是否显示 恢复默认设置 按钮
496
+ fieldKeys: {
497
+ type: Array,
498
+ default: () => []
499
+ },
500
+ tabConditionId: { type: String },
501
+ conditionMap: {
502
+ type: Object,
503
+ default: () => {}
504
+ },
505
+ filterApiConfig: {
506
+ type: Object,
507
+ default: () => {}
508
+ },
509
+
510
+ searchFieldList: {
511
+ type: Array,
512
+ default: () => []
513
+ }
514
+ },
515
+ computed: {
516
+ dynamicStyle() {
517
+ if (this.classificationIndex === 0) {
518
+ return {
519
+ marginRight: '8px'
520
+ };
521
+ } else if (this.classificationIndex === 2) {
522
+ return {
523
+ display: 'inline-block'
524
+ };
525
+ }
526
+ return {};
527
+ },
528
+ titleName() {
529
+ let condition = this.conditionList.filter(item => this.conditionSid.indexOf(item.sid) !== -1);
530
+ if (this.conditionSid.indexOf('all_data') !== -1) {
531
+ return '全部数据';
532
+ } else {
533
+ let titleArr = [];
534
+ condition.map(item => {
535
+ titleArr.push(item.name);
536
+ });
537
+ return titleArr.join(',');
538
+ // return (
539
+ // (condition?.displayCategory && condition?.displayCategory !== "未分类"
540
+ // ? `${condition?.displayCategory}/`
541
+ // : "") + condition?.name
542
+ // );
543
+ }
544
+ },
545
+ groupSelect() {
546
+ return function(index) {
547
+ let treeTemp = this.treeData.slice(1);
548
+ if (treeTemp[index].children) {
549
+ const cIndex = treeTemp[index].children.findIndex(item => item.selected);
550
+ if (cIndex !== -1) {
551
+ return treeTemp[index].children[cIndex].sid;
552
+ } else {
553
+ return 0;
554
+ }
555
+ } else {
556
+ return 0;
557
+ }
558
+ };
559
+ },
560
+
561
+ tooltipTilte() {
562
+ return function(item) {
563
+ let digitalNum = item.digital === 0 ? `(0)` : item.digital ? `(${item.digital})` : '';
564
+ const { name, isPublic } = item;
565
+ const fmtChildName = this.$options.filters.fmtChildName;
566
+ return fmtChildName(name, isPublic) + digitalNum;
567
+ };
568
+ },
569
+ handleTileAllDataDigital() {
570
+ if (!this.treeData || !this.treeData.length) return;
571
+ let item = this.treeData[0];
572
+ if (item.sid !== 'all_data') return;
573
+ if (!('digital' in item)) return;
574
+ return item.digital || 0;
575
+ },
576
+
577
+ // 这两个配置都要请求 筛选分类统计接口
578
+ getCondiTionDigital() {
579
+ return this.countCondition === 1 || this.countTabCondition === 1;
580
+ },
581
+
582
+ showIconBtn() {
583
+ return this.hideConditionChangeBtn != 1 || this.hideConditionChangeSetting != 1;
584
+ },
585
+
586
+ hasConditionList() {
587
+ return this.originConditionList.filter(item => item.isShow).length > 0;
588
+ }
589
+ },
590
+ mounted() {
591
+ document.addEventListener('click', e => {
592
+ let path = e.composedPath && e.composedPath();
593
+ if (path.includes(this.$refs.selectType)) {
594
+ return;
595
+ }
596
+ this.toggleSelect(false);
597
+ });
598
+ },
599
+ methods: {
600
+ handleChange(value, option, pItem = {}, pIndex) {
601
+ if (value) {
602
+ const { child, cIndex, item, index } = option.data.attrs;
603
+ this.handleItemClick(child, cIndex, item, index);
604
+ } else {
605
+ let cIndex = pItem.children.findIndex(item => this.conditionSid.indexOf(item.sid) !== -1);
606
+ if (cIndex !== -1) {
607
+ this.handleItemClick(pItem.children[cIndex], cIndex, pItem, pIndex);
608
+ }
609
+ // this.handleItemClick({ sid: "all_data", name: "全部数据" });
610
+ }
611
+ },
612
+ handleFold(item) {
613
+ if (item.open) {
614
+ item.open = false;
615
+ } else {
616
+ this.$set(item, 'open', true);
617
+ }
618
+ },
619
+ handleItemClick(child, i, p = {}, pi = undefined) {
620
+ // if (!child.selected) {
621
+ // this.clearActive(child.sid, p);
622
+ // this.$set(child, "selected", true);
623
+ // }
624
+ this.showTitleName = child.name;
625
+ if (!child.digital && this.countCondition === 1) {
626
+ return false;
627
+ }
628
+ let conditionSidTemp = this.getConditionSid(child.sid, this.conditionSid, p);
629
+ let selectList = this.initTree(conditionSidTemp);
630
+ this.toggleSelect(false);
631
+ // TODO: 选中筛选分类
632
+ this.$emit('changeSearch', child.sid === 'all_data' ? 'all' : '', child, p, selectList);
633
+ },
634
+ clearActive(sid, p = {}) {
635
+ let conditionSidTemp = this.getConditionSid(sid, this.conditionSid, p);
636
+
637
+ this.treeData.forEach(item => {
638
+ if (item.children) {
639
+ item.children.forEach(child => {
640
+ if (conditionSidTemp.indexOf(child.sid) !== -1) {
641
+ this.$set(child, 'selected', true);
642
+ } else {
643
+ this.$set(child, 'selected', false);
644
+ }
645
+ });
646
+ } else {
647
+ if (conditionSidTemp.indexOf(item.sid) !== -1) {
648
+ this.$set(item, 'selected', true);
649
+ } else {
650
+ this.$set(item, 'selected', false);
651
+ }
652
+ }
653
+ });
654
+ },
655
+ // 搜索关键字时重置树结构
656
+ initTree(conditionSidTemp) {
657
+ let selectList = [];
658
+ this.treeData.forEach(item => {
659
+ if (item.children) {
660
+ item.children.forEach(child => {
661
+ if (conditionSidTemp.indexOf(child.sid) !== -1) {
662
+ this.$set(child, 'selected', true);
663
+ selectList.push(child);
664
+ } else {
665
+ this.$set(child, 'selected', false);
666
+ }
667
+ });
668
+ } else {
669
+ if (conditionSidTemp.indexOf(item.sid) !== -1) {
670
+ this.$set(item, 'selected', true);
671
+ selectList.push(item);
672
+ } else {
673
+ this.$set(item, 'selected', false);
674
+ }
675
+ }
676
+ });
677
+ return selectList;
678
+ },
679
+ // 获取已选择的sid
680
+ getConditionSid(sid, conditionSid, p = {}) {
681
+ let conditionSidTemp = JSON.parse(JSON.stringify(conditionSid));
682
+ if (sid === 'all_data') {
683
+ conditionSidTemp = ['all_data'];
684
+ } else {
685
+ if (this.conditionType === 'keyword') {
686
+ // 关键字搜索多选
687
+ let aIndex = conditionSidTemp.findIndex(subItem => subItem === 'all_data');
688
+ if (aIndex !== -1) conditionSidTemp.splice(aIndex, 1); // 存在选中了全部数据,则先删除
689
+ // 查询是否已经存在,存在则删除一个
690
+ let cIndex = conditionSidTemp.findIndex(subItem => subItem === sid);
691
+ if (cIndex !== -1) {
692
+ conditionSidTemp.splice(cIndex, 1);
693
+ if (conditionSidTemp.length === 0) conditionSidTemp = ['all_data'];
694
+ } else {
695
+ // 查询和已选择的元素是否在同一个父级
696
+ if (p.children && p.children.length > 0) {
697
+ cIndex = conditionSidTemp.findIndex(subItem => p.children.findIndex(pItem => pItem.sid === subItem) !== -1);
698
+ }
699
+ if (cIndex !== -1) {
700
+ conditionSidTemp.splice(cIndex, 1);
701
+ }
702
+ conditionSidTemp.push(sid);
703
+ }
704
+ } else {
705
+ // 非关键字搜索单选
706
+ if (conditionSidTemp.indexOf(sid) !== -1) {
707
+ conditionSidTemp = ['all_data'];
708
+ } else {
709
+ conditionSidTemp = [sid];
710
+ }
711
+ }
712
+ }
713
+
714
+ return conditionSidTemp;
715
+ },
716
+
717
+ /**
718
+ * 改变展示方式
719
+ */
720
+ handleModeChange() {
721
+ this.$emit('setCurTreeData', this.treeData);
722
+ let res = '';
723
+ if (this.classificationIndex === 4) {
724
+ res = 0;
725
+ } else {
726
+ let index = this.classificationIndex;
727
+ res = ++index;
728
+ }
729
+ this.classificationWidth = 150;
730
+ this.saveListPersonaSetting(res);
731
+ },
732
+
733
+ // 保存
734
+ async saveListPersonaSetting(classificationIndex, classificationWidth) {
735
+ let params = {
736
+ tableId: this.tableId,
737
+ setting: JSON.stringify({
738
+ classificationIndex,
739
+ classificationWidth
740
+ })
741
+ };
742
+
743
+ try {
744
+ let res = await this.handleGetConfigApi(params, 'requestSaveListPersonaSetting');
745
+ // TODO: 切换筛选分类
746
+ res && this.$emit('setClassificationIndex', classificationIndex);
747
+ } catch (error) {
748
+ console.log(error);
749
+ }
750
+ },
751
+
752
+ /**
753
+ * 打开设置弹窗
754
+ */
755
+ handleSettingShow() {
756
+ this.classifyModal = true;
757
+ // this.$emit("setClassifyModal", true);
758
+ this.toggleSelect(false);
759
+ },
760
+
761
+ setClassifyModal(val) {
762
+ this.classifyModal = val;
763
+ },
764
+
765
+ toggleSelect(flag) {
766
+ if (flag !== undefined) {
767
+ this.selectShow = flag;
768
+ return;
769
+ }
770
+ this.selectShow = !this.selectShow;
771
+ },
772
+
773
+ getTableCondiTionList(options) {
774
+ // 删除当前
775
+ if (options !== undefined && options.type === 'delete' && this.conditionSid.indexOf(options.item.sid) !== -1) {
776
+ this.$emit('changeSearch', 'all', {
777
+ name: '全部数据',
778
+ sid: 'all_data'
779
+ });
780
+ }
781
+ if (!this.tableId) return;
782
+ if (Object.keys(this.conditionMap).length > 0) {
783
+ this.treeData = [];
784
+ let { displayCategoryList = [], conditionList = [] } = this.conditionMap;
785
+ this.originConditionList = JSON.parse(JSON.stringify(conditionList));
786
+ this.displayCategoryList = displayCategoryList || [];
787
+ this.conditionList = JSON.parse(JSON.stringify(conditionList));
788
+ this.conditionList.unshift({
789
+ name: '全部数据',
790
+ sid: 'all_data'
791
+ });
792
+ let treeData = [];
793
+ if (displayCategoryList.length === 0) {
794
+ displayCategoryList = ['未分类'];
795
+ }
796
+ displayCategoryList.forEach(item => {
797
+ let map = { name: item, children: [] };
798
+ conditionList.forEach(condition => {
799
+ if (condition.displayCategory === item || (!condition.displayCategory && item === '未分类' && condition.sid !== 'all_data')) {
800
+ if (this.conditionSid.indexOf(condition.sid) !== -1) {
801
+ condition.selected = true;
802
+ map.open = true;
803
+ }
804
+ if (condition.isShow) {
805
+ map.children.push(condition);
806
+ }
807
+ }
808
+ });
809
+ if (map.children.length > 0) {
810
+ treeData.push(map);
811
+ }
812
+ });
813
+ treeData.unshift({
814
+ name: '全部数据',
815
+ sid: 'all_data'
816
+ });
817
+ this.$set(this, 'treeData', treeData);
818
+ // 0 模式展开所有分类
819
+ if (this.classificationIndex === 0) {
820
+ this.setOpenStatus(true);
821
+ }
822
+ }
823
+ },
824
+ // 设置分类展开
825
+ setOpenStatus(value) {
826
+ this.treeData.forEach(item => {
827
+ if (item.children && item.children.length) {
828
+ this.$set(item, 'open', value);
829
+ }
830
+ });
831
+ },
832
+ async getTableCondiTionDigital(setConditionId = false, keyword = '', fieldKeys = [], tabConditionId = '', countTabCondition) {
833
+ try {
834
+ if (!this.countCondition && !this.countTabCondition) {
835
+ this.$set(this.allObj, 'digital', '');
836
+ return Promise.resolve();
837
+ }
838
+ if (!this.tableId) return Promise.resolve();
839
+ let params = { tableId: this.tableId, countCondition: this.countCondition };
840
+ // if (setConditionId && this.conditionSid) {
841
+ // params.conditionId = this.conditionSid == "all_data" ? "ALL" : this.conditionSid;
842
+ // }
843
+ if (keyword) params.keyword = keyword;
844
+ if (tabConditionId) params.tabConditionId = tabConditionId;
845
+ if (countTabCondition) params.countTabCondition = countTabCondition;
846
+ if (fieldKeys.length > 0) params.fieldKeys = JSON.stringify(fieldKeys);
847
+ Object.assign(params, this.handleParams()); // 额外条件暂时隐藏,需要等后端确定是否需要该额外条件
848
+ let res = await this.handleGetConfigApi(params, 'requestTableCondiTionDigital');
849
+ this.handleConditionDiaital(res);
850
+ return Promise.resolve(res);
851
+ } catch (error) {
852
+ console.log(error, 'getTableCondiTionDigital');
853
+ }
854
+ },
855
+
856
+ /**
857
+ * 处理检索分类的统计
858
+ */
859
+ handleConditionDiaital(map) {
860
+ // TODO: 统计分类更新
861
+ if (this.countTabCondition == 1) this.$emit('setTabConditionNumObj', map);
862
+ if (!map || Object.keys(map).length === 0) return;
863
+ // children
864
+ let resList = [];
865
+ this.handlePlatTree(this.treeData, resList);
866
+ for (let key in map) {
867
+ let useKey = key === 'ALL' ? 'all_data' : key;
868
+ let matchItem = resList.find(v => v.sid == useKey);
869
+ if (matchItem) {
870
+ if (matchItem.sid == 'all_data' && this.countCondition == 1) {
871
+ this.$set(this.allObj, 'digital', map[key] || 0);
872
+ }
873
+ this.$set(matchItem, 'digital', map[key] || 0);
874
+ }
875
+ }
876
+ let conditionSid = this.conditionSid.indexOf('all_data') !== -1 ? ['ALL'] : this.conditionSid;
877
+ let changeNum = 0;
878
+ if (this.conditionType === 'keyword') {
879
+ let num = 0;
880
+ conditionSid.map(item => {
881
+ return (num += parseInt(map[item]));
882
+ });
883
+ changeNum = num;
884
+ } else {
885
+ changeNum = map[conditionSid[0]];
886
+ }
887
+ return changeNum;
888
+ },
889
+
890
+ handlePlatTree(list, res) {
891
+ if (list.length) {
892
+ list.forEach(item => {
893
+ if (item.children?.length) {
894
+ item.children.forEach(v => {
895
+ res.push(v);
896
+ });
897
+ } else {
898
+ res.push(item);
899
+ }
900
+ });
901
+ }
902
+ },
903
+ async tableCondiTionPromise(options) {
904
+ try {
905
+ await this.getTableCondiTionList(options);
906
+ // 查count后台sql太慢,先注释
907
+ if (this.countCondition === 1 || this.countTabCondition === 1) await this.getTableCondiTionDigital(false, this.keyword, this.fieldKeys, this.tabConditionId, this.countTabCondition); // 开启统计筛选分类
908
+ } catch (err) {
909
+ console.log(err);
910
+ }
911
+ },
912
+ handleParams() {
913
+ if (!this.localObj && Object.keys(this.localObj).length === 0) return {};
914
+ let obj = {};
915
+ if (Array.isArray(this.localObj.params)) {
916
+ this.localObj.params.map(item => {
917
+ obj[item.p_name] = item.p_value;
918
+ });
919
+ }
920
+ if (Object.keys(this.localObj.extendParams || {}).length) {
921
+ Object.assign(obj, this.localObj.extendParams);
922
+ obj.extraParams = JSON.stringify(this.localObj.extendParams);
923
+ }
924
+ return obj;
925
+ },
926
+ changeWidth({ distance }) {
927
+ const w = this.classificationWidth + distance;
928
+ this.classificationWidth = Math.min(Math.max(w, 50), 650);
929
+ },
930
+ saveWidth() {
931
+ const i = this.classificationIndex;
932
+ const w = this.classificationWidth;
933
+ this.saveListPersonaSetting(i, w);
934
+ },
935
+
936
+ // =======================
937
+ async updateTableCondiTion() {
938
+ await this.getTableCondiTionListNew(this.tableId);
939
+ this.getTableCondiTionListRequest();
940
+ },
941
+
942
+ async saveGetTableCondiTionList(options) {
943
+ await this.getTableCondiTionListNew(this.tableId);
944
+ this.handleGetTableCondiTionList();
945
+ // 删除,编辑筛选完成后 刷新数据
946
+ this.$emit('getClassification', options);
947
+ },
948
+
949
+ changeSearch(key, item) {
950
+ if (key == 'all') {
951
+ this.searchDefName = '全部数据';
952
+ } else {
953
+ this.searchDefName = item.name;
954
+ }
955
+ this.$emit('changeSearch', key, item);
956
+ },
957
+
958
+ getTableCondiTionListRequest(first) {
959
+ this.handleGetTableCondiTionList(first).then(checked => {
960
+ this.reloadList(checked);
961
+ });
962
+ },
963
+
964
+ reloadList(item) {
965
+ // 新增筛选分类后刷新
966
+ this.$emit('reloadList', item);
967
+ },
968
+
969
+ handleGetTableCondiTionList(first, conditionMap = {}) {
970
+ let tableId = this.tableId;
971
+ if (!tableId) return new Promise(resolve => resolve(false));
972
+ let conditionMapTemp = Object.keys(conditionMap).length > 0 ? conditionMap : this.conditionMap;
973
+ return new Promise((resolve, reject) => {
974
+ if (Object.keys(conditionMapTemp).length > 0) {
975
+ this.searchConditionList = conditionMapTemp.conditionList || [];
976
+ this.displayCategoryList = conditionMapTemp.displayCategoryList || [];
977
+ let obj = {
978
+ conditionList: this.searchConditionList,
979
+ displayCategoryList: this.displayCategoryList
980
+ };
981
+ this.$emit('getQuickSearchListObj', obj);
982
+ this.settingId = conditionMapTemp.settingId;
983
+ const checked = this.searchConditionList.find(item => item.isDefault) || {
984
+ name: '全部数据',
985
+ sid: 'all_data'
986
+ };
987
+ this.searchDefName = checked.name;
988
+ // if (this.conditionType === "keyword") {
989
+ this.tabConditionList = conditionMapTemp.tabConditionList || []; // 获取页签tab
990
+ this.tabIndex = conditionMapTemp.tabConditionList && conditionMapTemp.tabConditionList.findIndex(item => item.isDefault); // 查询默认选中的标签
991
+ // }
992
+ // TODO:
993
+ // this.getTableCondiTionList()
994
+ if (this.$attrs.tableOptions?.filterCondition?.displayCategory && first) {
995
+ resolve({
996
+ name: this.$attrs.tableOptions?.filterCondition?.name,
997
+ sid: this.$attrs.tableOptions?.filterCondition?.displayCategory
998
+ });
999
+ }
1000
+ resolve(checked);
1001
+ } else {
1002
+ resolve({});
1003
+ }
1004
+ });
1005
+ },
1006
+
1007
+ async getTableCondiTionListNew(tableId) {
1008
+ try {
1009
+ if (!tableId) return new Promise(resolve => resolve(false));
1010
+ let params = { tableId };
1011
+ let res = await this.handleGetConfigApi(params, 'requestTableCondiTionList');
1012
+ this.$emit('setConditionMap', res);
1013
+ return Promise.resolve(res);
1014
+ } catch (error) {
1015
+ return Promise.resolve(false);
1016
+ }
1017
+ },
1018
+ /* */
1019
+ visibleDigital(item) {
1020
+ if (this.countCondition !== 1) return false;
1021
+ return item.digital || item.digital === 0;
1022
+ },
1023
+
1024
+ changeShowName(name) {
1025
+ this.showTitleName = name;
1026
+ },
1027
+
1028
+ /**
1029
+ * 清空专业模式设置的条件
1030
+ */
1031
+ handleClearClassConObj(...arg) {
1032
+ let fn = this?.$refs?.professional?.handleClearConObj;
1033
+ if (typeof fn === 'function') {
1034
+ fn(...arg);
1035
+ }
1036
+ }
1037
+ },
1038
+ filters: {
1039
+ fmtChildName(name, isPublic) {
1040
+ return name && isPublic === '1' ? name.replace(/\(公共\)$/, '') : name;
1041
+ }
1042
+ },
1043
+ activated() {
1044
+ this.tableCondiTionPromise();
1045
+ },
1046
+ watch: {
1047
+ tableId: {
1048
+ immediate: true,
1049
+ deep: true,
1050
+ handler(val) {
1051
+ if (!val) return;
1052
+ this.getTableCondiTionListRequest(true);
1053
+ if (this.curTableId === val) return;
1054
+ this.curTableId = val;
1055
+ // this.$nextTick(() => {
1056
+ // console.log("---------watch----------tableCondiTionPromise")
1057
+ // this.tableCondiTionPromise();
1058
+ // });
1059
+ }
1060
+ },
1061
+ curClassificationIndex: {
1062
+ immediate: true,
1063
+ deep: true,
1064
+ handler(val) {
1065
+ if (val === undefined) return;
1066
+ this.classificationIndex = val;
1067
+ }
1068
+ },
1069
+ curClassificationWidth: {
1070
+ immediate: true,
1071
+ handler(val) {
1072
+ this.classificationWidth = Number(val) || 150;
1073
+ }
1074
+ },
1075
+ curConditionList: {
1076
+ immediate: true,
1077
+ deep: true,
1078
+ handler(val) {
1079
+ if (!val || !val.length || this.treeData === val) return;
1080
+ this.treeData = JSON.parse(JSON.stringify(val));
1081
+ }
1082
+ }
1083
+ },
1084
+ directives: {
1085
+ flexibleResize
1086
+ }
1087
+ });
1088
+ </script>
1089
+ <style lang="less">
1090
+ .classiffication-select-hide {
1091
+ display: none !important;
1092
+ }
1093
+ .group-select-option {
1094
+ display: flex !important;
1095
+ align-items: center;
1096
+ justify-content: space-between;
1097
+ }
1098
+ .group-select-option.ant-select-dropdown-menu-item-selected {
1099
+ color: #2474ff !important;
1100
+ }
1101
+ .group-select-option.ant-select-dropdown-menu-item-active:not(.ant-select-dropdown-menu-item-disabled) {
1102
+ color: #2474ff !important;
1103
+ }
1104
+
1105
+ .classificationIndex-4 {
1106
+ margin-bottom: 10px;
1107
+ border: 1px solid #d5d5d5;
1108
+ border-radius: 4px;
1109
+
1110
+ &.upack-up-wrap {
1111
+ border-bottom: none;
1112
+ }
1113
+ }
1114
+ </style>
1115
+ <style lang="less" scoped>
1116
+ .classification {
1117
+ // margin-top: 4px;
1118
+ cursor: pointer;
1119
+ .tree-type {
1120
+ height: 100%;
1121
+ border: 1px solid #d5d5d5;
1122
+ width: 150px;
1123
+ margin-top: 8px;
1124
+ border-radius: 4px;
1125
+ line-height: 32px;
1126
+ padding-bottom: 80px;
1127
+ .tree {
1128
+ height: calc(100% - 32px);
1129
+ overflow: auto;
1130
+ &::-webkit-scrollbar {
1131
+ width: 5px;
1132
+ }
1133
+ }
1134
+ .header {
1135
+ display: flex;
1136
+ justify-content: space-between;
1137
+ padding: 0 10px;
1138
+ font-size: 14px;
1139
+ border-bottom: 1px solid #e6eaef;
1140
+ }
1141
+ .tree-item {
1142
+ border-bottom: 1px solid #d5d5d5;
1143
+ &.tree-header {
1144
+ padding: 0 10px;
1145
+ box-sizing: border-box;
1146
+ }
1147
+ cursor: pointer;
1148
+ .parent {
1149
+ display: flex;
1150
+ justify-content: space-between;
1151
+ align-items: center;
1152
+ padding: 0 10px;
1153
+ font-weight: 600;
1154
+ &.open {
1155
+ background-color: #f2f2f2;
1156
+ border-bottom: 1px solid #d5d5d5;
1157
+ }
1158
+ }
1159
+ .header-item {
1160
+ color: rgba(0, 0, 0, 0.6);
1161
+ box-sizing: border-box;
1162
+ border-bottom: 1px solid transparent;
1163
+ line-height: 1.4;
1164
+ &.selected {
1165
+ color: #2d7aff;
1166
+ }
1167
+ &:hover {
1168
+ color: #2d7aff;
1169
+ // border-color: #2d7aff;
1170
+ }
1171
+ &:active {
1172
+ color: #000000;
1173
+ border-color: transparent;
1174
+ }
1175
+ }
1176
+ .children {
1177
+ display: flex;
1178
+ align-items: center;
1179
+ padding-left: 23px;
1180
+ padding-right: 10px;
1181
+ height: 32px;
1182
+ .child-item {
1183
+ display: flex;
1184
+ align-items: center;
1185
+ // display: inline-block;
1186
+ max-width: 100%;
1187
+ color: #7c7c7c;
1188
+ overflow: hidden;
1189
+ text-overflow: ellipsis;
1190
+ white-space: nowrap;
1191
+ line-height: 1.5;
1192
+ border-bottom: 1px solid transparent;
1193
+
1194
+ &:hover {
1195
+ color: #2d7aff;
1196
+ // border-color: #2d7aff;
1197
+ }
1198
+ &.selected {
1199
+ width: 100%;
1200
+ display: flex;
1201
+ align-items: center;
1202
+ justify-content: space-between;
1203
+ color: #2d7aff;
1204
+ }
1205
+ &:active {
1206
+ color: #000000;
1207
+ border-color: transparent;
1208
+ }
1209
+ &.disabled {
1210
+ color: rgba(0, 0, 0, 0.2);
1211
+ }
1212
+ .child-item-content {
1213
+ display: flex;
1214
+ align-items: center;
1215
+ }
1216
+ .child-item-name {
1217
+ overflow: hidden;
1218
+ text-overflow: ellipsis;
1219
+ white-space: nowrap;
1220
+ }
1221
+ .digital-span {
1222
+ flex: 1;
1223
+ margin-left: 5px;
1224
+ text-align: left;
1225
+ }
1226
+ }
1227
+ }
1228
+ }
1229
+ .tree-type-footer {
1230
+ position: absolute;
1231
+ bottom: 0;
1232
+ width: 100%;
1233
+ padding-left: 16px;
1234
+ background: #fff;
1235
+ .selected-num {
1236
+ margin-bottom: 9px;
1237
+ }
1238
+ .selected-item-del {
1239
+ margin-left: 0;
1240
+ margin-bottom: 15px;
1241
+ }
1242
+ }
1243
+ }
1244
+ .tile-type {
1245
+ border: 1px solid #d5d5d5;
1246
+ border-radius: 4px;
1247
+ margin-bottom: 8px;
1248
+ padding: 0 17px;
1249
+ .header {
1250
+ width: 100%;
1251
+ display: inline-flex;
1252
+ justify-content: space-between;
1253
+ align-items: center;
1254
+ // padding: 0 14px;
1255
+ line-height: 44px;
1256
+ border-bottom: 1px solid #d5d5d5;
1257
+ .all-data {
1258
+ margin-right: auto;
1259
+ border-bottom: 1px solid transparent;
1260
+ line-height: 1.4;
1261
+ color: #000;
1262
+ font-size: 14px;
1263
+ font-family: PingFangSC-Medium, PingFang SC;
1264
+ font-weight: 500;
1265
+ &:hover {
1266
+ color: #2d7aff;
1267
+ // border-color: #2d7aff;
1268
+ }
1269
+ &:active {
1270
+ color: #000000;
1271
+ border-color: transparent;
1272
+ }
1273
+ }
1274
+ .selected {
1275
+ color: #2d7aff;
1276
+ }
1277
+ .right-setting {
1278
+ color: #000;
1279
+ .anticon {
1280
+ color: rgba(0, 0, 0, 0.6);
1281
+ margin-right: 6px;
1282
+ }
1283
+ .upack-up-btn {
1284
+ color: #2d7aff;
1285
+ }
1286
+ }
1287
+ }
1288
+ .tile {
1289
+ border-bottom: 1px solid #d5d5d5;
1290
+ padding: 9px 0;
1291
+ }
1292
+ .tile-item {
1293
+ display: flex;
1294
+ line-height: 38px;
1295
+ cursor: pointer;
1296
+ .parent {
1297
+ width: 135px;
1298
+ padding-right: 16px;
1299
+ color: #000;
1300
+ font-size: 14px;
1301
+ font-weight: 600;
1302
+ font-family: PingFangSC-Medium, PingFang SC;
1303
+ // background: rgba(213, 213, 213, 0.12);
1304
+ // border-right: 1px solid #d5d5d5;
1305
+ max-width: 135px;
1306
+ box-sizing: border-box;
1307
+ }
1308
+ .children {
1309
+ // padding: 0 15px;
1310
+ flex: 1;
1311
+ .child-item {
1312
+ margin: 0 5px;
1313
+ padding: 1px 6px;
1314
+ color: #7c7c7c;
1315
+ font-size: 14px;
1316
+ line-height: 1.5;
1317
+ border-bottom: 1px solid transparent;
1318
+ border-radius: 4px;
1319
+ display: inline-block;
1320
+ &:hover {
1321
+ color: #2d7aff;
1322
+ background-color: rgba(45, 122, 255, 0.1);
1323
+ // border-color: #2d7aff;
1324
+ }
1325
+ &.selected {
1326
+ color: #2d7aff;
1327
+ background-color: rgba(45, 122, 255, 0.1);
1328
+ }
1329
+ &:active {
1330
+ color: #000000;
1331
+ border-color: transparent;
1332
+ }
1333
+ &.disabled {
1334
+ color: rgba(0, 0, 0, 0.2);
1335
+ }
1336
+ }
1337
+ }
1338
+ .child-item {
1339
+ &.selected {
1340
+ color: #2d7aff;
1341
+ }
1342
+ }
1343
+ }
1344
+ .tile-item + .tile-item {
1345
+ // border-top: 1px solid #d5d5d5;
1346
+ }
1347
+ }
1348
+ .select-type {
1349
+ position: relative;
1350
+ width: 100px;
1351
+ line-height: 32px;
1352
+ height: 32px;
1353
+ margin-right: 8px;
1354
+ margin-bottom: 8px;
1355
+ .title {
1356
+ display: flex;
1357
+ justify-content: space-between;
1358
+ align-items: center;
1359
+ width: 100%;
1360
+ height: 100%;
1361
+ padding: 0 8px;
1362
+ border: 1px solid #d5d5d5;
1363
+ border-radius: 4px;
1364
+ color: #969696;
1365
+ font-size: 12px;
1366
+ box-sizing: border-box;
1367
+ > span {
1368
+ overflow: hidden;
1369
+ text-overflow: ellipsis;
1370
+ white-space: nowrap;
1371
+ color: #212121;
1372
+ font-size: 14px;
1373
+ }
1374
+ i {
1375
+ font-size: 12px;
1376
+ }
1377
+ }
1378
+ .main-wrapper {
1379
+ position: absolute;
1380
+ z-index: 3000;
1381
+ width: 100%;
1382
+ min-width: 270px;
1383
+ // max-height: 300px;
1384
+ // overflow-y: auto;
1385
+ border: 1px solid #d5d5d5;
1386
+ background-color: #fff;
1387
+ border-radius: 4px;
1388
+ // padding-top: 5px;
1389
+ // padding-bottom: 10px;
1390
+ top: 39px;
1391
+ &::-webkit-scrollbar {
1392
+ width: 5px;
1393
+ }
1394
+ .footer {
1395
+ display: flex;
1396
+ align-items: center;
1397
+ // flex-direction: column;
1398
+ // padding: 0 10px;
1399
+ // border-top: 1px solid #d5d5d5;
1400
+ span:first-child {
1401
+ margin-right: 16px;
1402
+ }
1403
+ }
1404
+ }
1405
+ .tree {
1406
+ padding: 32px 0;
1407
+ /* position: relative; */
1408
+ max-height: 300px;
1409
+ overflow: auto;
1410
+ }
1411
+ .tree-item {
1412
+ border-bottom: 1px solid #d5d5d5;
1413
+ &.tree-header {
1414
+ padding: 0 10px;
1415
+ box-sizing: border-box;
1416
+ display: flex;
1417
+ align-items: center;
1418
+ position: absolute;
1419
+ width: 100%;
1420
+ background-color: #fff;
1421
+ top: 0;
1422
+ height: 40px;
1423
+ }
1424
+ .child-header {
1425
+ flex: 1;
1426
+ }
1427
+ cursor: pointer;
1428
+ .parent {
1429
+ display: flex;
1430
+ justify-content: space-between;
1431
+ align-items: center;
1432
+ padding: 0 10px;
1433
+ font-weight: 600;
1434
+ &.open {
1435
+ background-color: #f2f2f2;
1436
+ border-bottom: 1px solid #d5d5d5;
1437
+ }
1438
+ }
1439
+ .header-item {
1440
+ color: rgba(0, 0, 0, 0.6);
1441
+ border-bottom: 1px solid transparent;
1442
+ &.selected {
1443
+ color: #2d7aff;
1444
+ }
1445
+ &:hover {
1446
+ color: #2d7aff;
1447
+ // border-color: #2d7aff;
1448
+ }
1449
+ &:active {
1450
+ color: #000000;
1451
+ border-color: transparent;
1452
+ }
1453
+ }
1454
+ .children {
1455
+ display: flex;
1456
+ align-items: center;
1457
+ padding-left: 23px;
1458
+ padding-right: 10px;
1459
+ height: 32px;
1460
+ line-height: 32px;
1461
+ .child-item {
1462
+ display: inline-block;
1463
+ max-width: 100%;
1464
+ color: #7c7c7c;
1465
+ overflow: hidden;
1466
+ text-overflow: ellipsis;
1467
+ white-space: nowrap;
1468
+ line-height: 1.5;
1469
+ border-bottom: 1px solid transparent;
1470
+ &.child-header {
1471
+ padding: 0 10px;
1472
+ }
1473
+ &.header-item {
1474
+ color: rgba(0, 0, 0, 0.6);
1475
+ border-bottom: 1px solid transparent;
1476
+ &.selected {
1477
+ color: #2d7aff;
1478
+ }
1479
+ &:hover {
1480
+ color: #2d7aff;
1481
+ // border-color: #2d7aff;
1482
+ }
1483
+ &:active {
1484
+ color: #000000;
1485
+ border-color: transparent;
1486
+ }
1487
+ }
1488
+ &:hover {
1489
+ color: #2d7aff;
1490
+ // border-color: #2d7aff;
1491
+ }
1492
+ &.selected {
1493
+ width: 100%;
1494
+ display: flex;
1495
+ align-items: center;
1496
+ justify-content: space-between;
1497
+ color: #2d7aff;
1498
+ }
1499
+ &:active {
1500
+ color: #000000;
1501
+ border-color: transparent;
1502
+ }
1503
+ &.disabled {
1504
+ color: rgba(0, 0, 0, 0.2);
1505
+ }
1506
+ }
1507
+ }
1508
+ &:last-child {
1509
+ border-bottom: 0;
1510
+ }
1511
+ }
1512
+ .select-type-footer {
1513
+ position: absolute;
1514
+ width: 100%;
1515
+ bottom: 0;
1516
+ display: flex;
1517
+ align-items: center;
1518
+ justify-content: space-between;
1519
+ height: 40px;
1520
+ padding: 0 12px;
1521
+ background-color: #fff;
1522
+ border-top: 1px solid #d5d5d5;
1523
+ }
1524
+ }
1525
+ .group-type {
1526
+ border: 1px solid #d5d5d5;
1527
+ padding: 0 16px;
1528
+ border-radius: 4px;
1529
+ margin-bottom: 8px;
1530
+ .header {
1531
+ width: 100%;
1532
+ display: inline-flex;
1533
+ justify-content: space-between;
1534
+ align-items: center;
1535
+ // padding: 0 14px;
1536
+ line-height: 44px;
1537
+ // border-bottom: 1px solid #d5d5d5;
1538
+ padding-left: 4px;
1539
+ .all-data {
1540
+ margin-right: auto;
1541
+ color: rgba(0, 0, 0, 0.6);
1542
+ border-bottom: 1px solid transparent;
1543
+ // line-height: 1.4;
1544
+ &:hover {
1545
+ color: #2d7aff;
1546
+ // border-color: #2d7aff;
1547
+ }
1548
+ &:active {
1549
+ color: #000000;
1550
+ border-color: transparent;
1551
+ }
1552
+ }
1553
+ .selected {
1554
+ color: #2d7aff;
1555
+ }
1556
+ .right-setting {
1557
+ color: #000;
1558
+ .anticon {
1559
+ color: rgba(0, 0, 0, 0.6);
1560
+ margin-right: 6px;
1561
+ }
1562
+ .upack-up-btn {
1563
+ color: #2d7aff;
1564
+ }
1565
+ }
1566
+ }
1567
+ .group {
1568
+ padding: 16px 0;
1569
+ border-bottom: 1px solid #d5d5d5;
1570
+ .child-item {
1571
+ color: #7c7c7c;
1572
+ overflow: hidden;
1573
+ text-overflow: ellipsis;
1574
+ white-space: nowrap;
1575
+ border-bottom: 1px solid transparent;
1576
+ margin-right: 8px;
1577
+
1578
+ &:hover {
1579
+ color: #2d7aff;
1580
+ border-color: transparent;
1581
+ }
1582
+ &.selected {
1583
+ color: #2d7aff;
1584
+ }
1585
+ &:active {
1586
+ color: #000000;
1587
+ border-color: transparent;
1588
+ }
1589
+ &.disabled {
1590
+ color: rgba(0, 0, 0, 0.2);
1591
+ }
1592
+ }
1593
+ /deep/ .ant-select {
1594
+ width: 130px;
1595
+ margin-right: 8px;
1596
+ margin-bottom: 8px;
1597
+ }
1598
+ }
1599
+ .select-type-footer {
1600
+ position: absolute;
1601
+ width: 100%;
1602
+ bottom: 0;
1603
+ display: flex;
1604
+ align-items: center;
1605
+ justify-content: space-between;
1606
+ height: 32px;
1607
+ padding: 0 12px;
1608
+ background-color: #fff;
1609
+ }
1610
+ }
1611
+ .group-type {
1612
+ border: 1px solid #d5d5d5;
1613
+ padding: 0 16px;
1614
+ border-radius: 4px;
1615
+ margin-bottom: 8px;
1616
+ .header {
1617
+ width: 100%;
1618
+ display: inline-flex;
1619
+ justify-content: space-between;
1620
+ align-items: center;
1621
+ // padding: 0 14px;
1622
+ line-height: 44px;
1623
+ border-bottom: 1px solid #d5d5d5;
1624
+ padding-left: 4px;
1625
+ .all-data {
1626
+ margin-right: auto;
1627
+ color: rgba(0, 0, 0, 0.6);
1628
+ border-bottom: 1px solid transparent;
1629
+ // line-height: 1.4;
1630
+ &:hover {
1631
+ color: #2d7aff;
1632
+ // border-color: #2d7aff;
1633
+ border-color: transparent;
1634
+ }
1635
+ &:active {
1636
+ color: #2d7aff;
1637
+ border-color: transparent;
1638
+ }
1639
+ }
1640
+ .selected {
1641
+ color: #2d7aff;
1642
+ }
1643
+ .right-setting {
1644
+ color: #000;
1645
+ .anticon {
1646
+ color: rgba(0, 0, 0, 0.6);
1647
+ margin-right: 6px;
1648
+ }
1649
+ }
1650
+ }
1651
+ .group {
1652
+ padding: 16px 0;
1653
+ border-bottom: 1px solid #d5d5d5;
1654
+ /deep/ .ant-select {
1655
+ width: 130px;
1656
+ margin-right: 8px;
1657
+ margin-bottom: 8px;
1658
+ }
1659
+ }
1660
+ }
1661
+ .selected-list {
1662
+ padding: 11.5px 6px;
1663
+ display: flex;
1664
+ align-items: center;
1665
+ .selected-item {
1666
+ display: flex;
1667
+ align-items: center;
1668
+ color: #2d7aff;
1669
+ padding: 1px 6.5px 1px 8px;
1670
+ background-color: rgba(45, 122, 255, 0.1);
1671
+ border-radius: 4px;
1672
+ margin-left: 8px;
1673
+ /deep/ .anticon-close {
1674
+ margin-left: 13px;
1675
+ font-size: 12px;
1676
+ color: #2474ff;
1677
+ }
1678
+ }
1679
+ }
1680
+ .selected-num {
1681
+ font-size: 14px;
1682
+ color: rgba(0, 0, 0, 0.6);
1683
+ line-height: 20px;
1684
+ margin-right: 8px;
1685
+ }
1686
+ .selected-item-del {
1687
+ display: flex;
1688
+ align-items: center;
1689
+ font-size: 14px;
1690
+ color: #2474ff;
1691
+ margin-left: 22px;
1692
+ line-height: 20px;
1693
+ .svg-icon-btn {
1694
+ margin-right: 6px;
1695
+ }
1696
+ }
1697
+ .selected-item-del:hover {
1698
+ color: rgba(36, 116, 255, 0.8);
1699
+ }
1700
+ .selected-list {
1701
+ padding: 11.5px 6px;
1702
+ display: flex;
1703
+ align-items: center;
1704
+ .selected-item {
1705
+ display: flex;
1706
+ align-items: center;
1707
+ color: #2d7aff;
1708
+ padding: 1px 6.5px 1px 8px;
1709
+ background-color: rgba(45, 122, 255, 0.1);
1710
+ border-radius: 4px;
1711
+ margin-left: 8px;
1712
+ /deep/ .anticon-close {
1713
+ margin-left: 13px;
1714
+ font-size: 12px;
1715
+ color: #2474ff;
1716
+ }
1717
+ }
1718
+ }
1719
+ .selected-num {
1720
+ font-size: 14px;
1721
+ color: rgba(0, 0, 0, 0.6);
1722
+ line-height: 20px;
1723
+ margin-right: 8px;
1724
+ }
1725
+ .selected-item-del {
1726
+ display: flex;
1727
+ align-items: center;
1728
+ font-size: 14px;
1729
+ color: #2474ff;
1730
+ margin-left: 22px;
1731
+ line-height: 20px;
1732
+ .svg-icon-btn {
1733
+ margin-right: 6px;
1734
+ }
1735
+ }
1736
+ .selected-item-del:hover {
1737
+ color: rgba(36, 116, 255, 0.8);
1738
+ }
1739
+ .disabled {
1740
+ pointer-events: none;
1741
+ }
1742
+
1743
+ .classify-4-container {
1744
+ overflow: hidden;
1745
+ transition: height ease-in 0.2s;
1746
+ }
1747
+ div.classify-4 {
1748
+ margin-bottom: 0px;
1749
+ border: none;
1750
+ border-bottom: 1px solid #d5d5d5;
1751
+ .header {
1752
+ border-bottom: none !important;
1753
+ }
1754
+ }
1755
+ }
1756
+ </style>