cnhis-design-vue 2.1.78 → 2.1.79

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