swordpass-ui 1.0.0

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 (330) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +37 -0
  3. package/lib/demo.html +10 -0
  4. package/lib/img/icon_found_img.c785c1b7.png +0 -0
  5. package/lib/sword-vue-ui.common.js +61402 -0
  6. package/lib/sword-vue-ui.css +1 -0
  7. package/lib/sword-vue-ui.umd.js +61412 -0
  8. package/lib/sword-vue-ui.umd.min.js +6 -0
  9. package/package.json +109 -0
  10. package/packages/AddQueryStrategy/index.js +7 -0
  11. package/packages/AddQueryStrategy/src/main.vue +236 -0
  12. package/packages/Autocomplete/index.js +7 -0
  13. package/packages/Autocomplete/src/main.vue +192 -0
  14. package/packages/Button/index.js +7 -0
  15. package/packages/Button/src/main.vue +90 -0
  16. package/packages/Cascader/index.js +7 -0
  17. package/packages/Cascader/src/main.vue +210 -0
  18. package/packages/Chart/index.js +7 -0
  19. package/packages/Chart/src/Chart.vue +831 -0
  20. package/packages/Checkbox/index.js +7 -0
  21. package/packages/Checkbox/src/main.vue +200 -0
  22. package/packages/Collapse/index.js +7 -0
  23. package/packages/Collapse/src/ClCollapse.vue +67 -0
  24. package/packages/Collapse/src/ClCollapseItem.vue +21 -0
  25. package/packages/CollapseItem/index.js +7 -0
  26. package/packages/CustomDialog/index.js +7 -0
  27. package/packages/CustomDialog/src/customDialog.js +99 -0
  28. package/packages/CustomDialog/src/main.vue +1944 -0
  29. package/packages/DataView/index.js +7 -0
  30. package/packages/DataView/src/DataView.vue +45 -0
  31. package/packages/Date/index.js +7 -0
  32. package/packages/Date/src/main.vue +180 -0
  33. package/packages/DatePicker/index.js +7 -0
  34. package/packages/DatePicker/src/main.vue +155 -0
  35. package/packages/Demension/index.js +7 -0
  36. package/packages/Demension/src/main.vue +379 -0
  37. package/packages/Dialog/index.js +7 -0
  38. package/packages/Dialog/src/main.vue +160 -0
  39. package/packages/Dictionary/index.js +7 -0
  40. package/packages/Dictionary/src/main.vue +204 -0
  41. package/packages/DimensionSelector/index.js +7 -0
  42. package/packages/DimensionSelector/src/main.vue +359 -0
  43. package/packages/DimensionSelectorInput/index.js +7 -0
  44. package/packages/DimensionSelectorInput/src/main.vue +79 -0
  45. package/packages/Divider/index.js +7 -0
  46. package/packages/Divider/src/main.vue +38 -0
  47. package/packages/Duration/index.js +7 -0
  48. package/packages/Duration/src/main.vue +172 -0
  49. package/packages/Editor/index.js +7 -0
  50. package/packages/Editor/src/main.vue +280 -0
  51. package/packages/Explain/index.js +7 -0
  52. package/packages/Explain/src/main.vue +55 -0
  53. package/packages/FieldTail/index.js +7 -0
  54. package/packages/FieldTail/src/main.vue +163 -0
  55. package/packages/File/index.js +7 -0
  56. package/packages/File/src/FileCard.vue +169 -0
  57. package/packages/File/src/FileList.vue +180 -0
  58. package/packages/File/src/FileTable.vue +223 -0
  59. package/packages/File/src/main.vue +467 -0
  60. package/packages/FileUpload/index.js +7 -0
  61. package/packages/FileUpload/src/main.vue +222 -0
  62. package/packages/FlowChart/index.js +7 -0
  63. package/packages/FlowChart/src/main.vue +386 -0
  64. package/packages/FormItem/index.js +7 -0
  65. package/packages/FormItem/src/main.vue +167 -0
  66. package/packages/Global/index.js +12 -0
  67. package/packages/Global/src/GlobalQuery.vue +200 -0
  68. package/packages/Global/src/GlobalValidate.vue +69 -0
  69. package/packages/Icon/index.js +7 -0
  70. package/packages/Icon/src/icons/ad.js +14 -0
  71. package/packages/Icon/src/icons/address-book.js +14 -0
  72. package/packages/Icon/src/icons/arrow.js +14 -0
  73. package/packages/Icon/src/icons/attachment.js +18 -0
  74. package/packages/Icon/src/icons/balance.js +14 -0
  75. package/packages/Icon/src/icons/ban.js +14 -0
  76. package/packages/Icon/src/icons/bell.js +14 -0
  77. package/packages/Icon/src/icons/block.js +26 -0
  78. package/packages/Icon/src/icons/book.js +14 -0
  79. package/packages/Icon/src/icons/bookmark.js +14 -0
  80. package/packages/Icon/src/icons/bug.js +22 -0
  81. package/packages/Icon/src/icons/bullhorn.js +14 -0
  82. package/packages/Icon/src/icons/calc.js +14 -0
  83. package/packages/Icon/src/icons/checkbox.js +14 -0
  84. package/packages/Icon/src/icons/circle.js +14 -0
  85. package/packages/Icon/src/icons/close.js +14 -0
  86. package/packages/Icon/src/icons/cloud-sun.js +14 -0
  87. package/packages/Icon/src/icons/coffee.js +14 -0
  88. package/packages/Icon/src/icons/component.js +14 -0
  89. package/packages/Icon/src/icons/compress.js +14 -0
  90. package/packages/Icon/src/icons/copyright.js +14 -0
  91. package/packages/Icon/src/icons/dialog.js +14 -0
  92. package/packages/Icon/src/icons/download.js +14 -0
  93. package/packages/Icon/src/icons/duration.js +14 -0
  94. package/packages/Icon/src/icons/excel.js +18 -0
  95. package/packages/Icon/src/icons/expand.js +14 -0
  96. package/packages/Icon/src/icons/export.js +21 -0
  97. package/packages/Icon/src/icons/eye-slash.js +14 -0
  98. package/packages/Icon/src/icons/eye.js +14 -0
  99. package/packages/Icon/src/icons/file.js +18 -0
  100. package/packages/Icon/src/icons/form.js +14 -0
  101. package/packages/Icon/src/icons/ganged.js +14 -0
  102. package/packages/Icon/src/icons/gaode.js +27 -0
  103. package/packages/Icon/src/icons/gift.js +14 -0
  104. package/packages/Icon/src/icons/home.js +14 -0
  105. package/packages/Icon/src/icons/image.js +14 -0
  106. package/packages/Icon/src/icons/import.js +18 -0
  107. package/packages/Icon/src/icons/index.js +67 -0
  108. package/packages/Icon/src/icons/info.js +21 -0
  109. package/packages/Icon/src/icons/laptop.js +14 -0
  110. package/packages/Icon/src/icons/line.js +34 -0
  111. package/packages/Icon/src/icons/lock.js +14 -0
  112. package/packages/Icon/src/icons/map.js +18 -0
  113. package/packages/Icon/src/icons/more.js +19 -0
  114. package/packages/Icon/src/icons/move.js +14 -0
  115. package/packages/Icon/src/icons/org.js +18 -0
  116. package/packages/Icon/src/icons/palette.js +14 -0
  117. package/packages/Icon/src/icons/plan.js +17 -0
  118. package/packages/Icon/src/icons/ppt.js +18 -0
  119. package/packages/Icon/src/icons/question.js +18 -0
  120. package/packages/Icon/src/icons/radio.js +14 -0
  121. package/packages/Icon/src/icons/refresh.js +14 -0
  122. package/packages/Icon/src/icons/search.js +14 -0
  123. package/packages/Icon/src/icons/select.js +14 -0
  124. package/packages/Icon/src/icons/setting.js +18 -0
  125. package/packages/Icon/src/icons/simple-collapse.js +18 -0
  126. package/packages/Icon/src/icons/simple-expand.js +14 -0
  127. package/packages/Icon/src/icons/sort.js +22 -0
  128. package/packages/Icon/src/icons/sword.js +26 -0
  129. package/packages/Icon/src/icons/table.js +14 -0
  130. package/packages/Icon/src/icons/time.js +14 -0
  131. package/packages/Icon/src/icons/tree.js +14 -0
  132. package/packages/Icon/src/icons/typography.js +18 -0
  133. package/packages/Icon/src/icons/upload.js +18 -0
  134. package/packages/Icon/src/icons/user.js +14 -0
  135. package/packages/Icon/src/icons/users.js +30 -0
  136. package/packages/Icon/src/icons/video.js +14 -0
  137. package/packages/Icon/src/icons/word.js +18 -0
  138. package/packages/Icon/src/main.vue +432 -0
  139. package/packages/Image/index.js +7 -0
  140. package/packages/Image/src/main.vue +66 -0
  141. package/packages/Input/index.js +7 -0
  142. package/packages/Input/src/main.vue +552 -0
  143. package/packages/JobSelector/index.js +7 -0
  144. package/packages/JobSelector/src/main.vue +339 -0
  145. package/packages/JobSelectorInput/index.js +7 -0
  146. package/packages/JobSelectorInput/src/main.vue +87 -0
  147. package/packages/Map/index.js +7 -0
  148. package/packages/Map/src/Map.vue +427 -0
  149. package/packages/Milepost/index.js +7 -0
  150. package/packages/Milepost/src/main.vue +45 -0
  151. package/packages/OnlineForm/index.js +7 -0
  152. package/packages/OnlineForm/src/Form.vue +359 -0
  153. package/packages/OrgPostDialog/index.js +7 -0
  154. package/packages/OrgPostDialog/src/main.vue +244 -0
  155. package/packages/OrgSelector/index.js +7 -0
  156. package/packages/OrgSelector/src/main.vue +493 -0
  157. package/packages/OrgSelectorInput/index.js +7 -0
  158. package/packages/OrgSelectorInput/src/OrgSelectorInput.vue +216 -0
  159. package/packages/PostSelector/index.js +7 -0
  160. package/packages/PostSelector/src/main.vue +463 -0
  161. package/packages/PostSelectorInput/index.js +7 -0
  162. package/packages/PostSelectorInput/src/PostSelectorInput.vue +200 -0
  163. package/packages/Preview/index.js +7 -0
  164. package/packages/Preview/src/FillPage.vue +311 -0
  165. package/packages/Preview/src/FrameViewer.vue +135 -0
  166. package/packages/Preview/src/Loading.vue +126 -0
  167. package/packages/Preview/src/PdfViewer.vue +125 -0
  168. package/packages/Preview/src/TextViewer.vue +99 -0
  169. package/packages/Preview/src/main.vue +242 -0
  170. package/packages/Preview/src/watermark.js +124 -0
  171. package/packages/ProcessRecord/index.js +7 -0
  172. package/packages/ProcessRecord/src/main.vue +392 -0
  173. package/packages/Qrcode/index.js +7 -0
  174. package/packages/Qrcode/src/Qrcode.vue +105 -0
  175. package/packages/QuerySqlPreview/index.js +7 -0
  176. package/packages/QuerySqlPreview/src/QuerySqlPreview.vue +163 -0
  177. package/packages/Radio/index.js +7 -0
  178. package/packages/Radio/src/main.vue +172 -0
  179. package/packages/Rate/index.js +7 -0
  180. package/packages/Rate/src/main.vue +89 -0
  181. package/packages/ReadonlyInput/index.js +7 -0
  182. package/packages/ReadonlyInput/src/main.vue +92 -0
  183. package/packages/RelevantFlow/index.js +7 -0
  184. package/packages/RelevantFlow/src/main.vue +547 -0
  185. package/packages/RelevantFlow/src/relevantFlow.js +28 -0
  186. package/packages/RoleSelector/index.js +7 -0
  187. package/packages/RoleSelector/src/main.vue +358 -0
  188. package/packages/RoleSelectorInput/index.js +7 -0
  189. package/packages/RoleSelectorInput/src/main.vue +84 -0
  190. package/packages/SaveButton/index.js +7 -0
  191. package/packages/SaveButton/src/main.vue +73 -0
  192. package/packages/Select/index.js +7 -0
  193. package/packages/Select/src/main.vue +330 -0
  194. package/packages/SelectTree/index.js +7 -0
  195. package/packages/SelectTree/src/SelectTree.vue +352 -0
  196. package/packages/Selector/index.js +7 -0
  197. package/packages/Selector/src/main.vue +617 -0
  198. package/packages/SidebarDialog/index.js +7 -0
  199. package/packages/SidebarDialog/src/main.vue +156 -0
  200. package/packages/Slider/index.js +7 -0
  201. package/packages/Slider/src/main.vue +84 -0
  202. package/packages/Step/index.js +7 -0
  203. package/packages/StepLayout/index.js +7 -0
  204. package/packages/Steps/index.js +7 -0
  205. package/packages/Steps/src/Step.vue +122 -0
  206. package/packages/Steps/src/StepLayout.vue +35 -0
  207. package/packages/Steps/src/Steps.vue +65 -0
  208. package/packages/Subtable/index.js +33 -0
  209. package/packages/Subtable/src/SubDialog.vue +1926 -0
  210. package/packages/Subtable/src/SubExportDialog.vue +115 -0
  211. package/packages/Subtable/src/SubImportDialog.vue +316 -0
  212. package/packages/Subtable/src/SubPagination.vue +112 -0
  213. package/packages/Subtable/src/SubtableBackfill.vue +83 -0
  214. package/packages/Subtable/src/dialog.js +42 -0
  215. package/packages/Switch/index.js +7 -0
  216. package/packages/Switch/src/main.vue +83 -0
  217. package/packages/Table/index.js +7 -0
  218. package/packages/Table/src/CustomColumn.vue +351 -0
  219. package/packages/Table/src/Table.vue +979 -0
  220. package/packages/TableColumn/index.js +7 -0
  221. package/packages/TableColumn/src/main.vue +177 -0
  222. package/packages/TableSearchField/index.js +7 -0
  223. package/packages/TableSearchField/src/main.vue +334 -0
  224. package/packages/TableSearchPanel/index.js +7 -0
  225. package/packages/TableSearchPanel/src/main.vue +149 -0
  226. package/packages/Tabs/index.js +7 -0
  227. package/packages/Tabs/src/Tabs.vue +140 -0
  228. package/packages/Tag/index.js +7 -0
  229. package/packages/Tag/src/main.vue +264 -0
  230. package/packages/TemplateBatchUpdate/index.js +7 -0
  231. package/packages/TemplateBatchUpdate/src/TemplateBatchUpdateDialog.vue +174 -0
  232. package/packages/TemplateForm/index.js +7 -0
  233. package/packages/TemplateForm/src/main.vue +645 -0
  234. package/packages/TemplateFormDialog/index.js +7 -0
  235. package/packages/TemplateFormDialog/src/main.vue +61 -0
  236. package/packages/TemplateImportResult/index.js +7 -0
  237. package/packages/TemplateImportResult/src/main.vue +158 -0
  238. package/packages/TemplatePreview/index.js +19 -0
  239. package/packages/TemplatePreview/src/TemplatePreview.vue +169 -0
  240. package/packages/TemplatePreview/src/TemplatePreviewFile.vue +171 -0
  241. package/packages/TemplatePreview/src/TemplatePreviewImage.vue +83 -0
  242. package/packages/TemplateTaskCirculate/index.js +7 -0
  243. package/packages/TemplateTaskCirculate/src/main.vue +238 -0
  244. package/packages/Text/index.js +7 -0
  245. package/packages/Text/src/main.vue +57 -0
  246. package/packages/TimePicker/index.js +7 -0
  247. package/packages/TimePicker/src/main.vue +139 -0
  248. package/packages/TimeSelect/index.js +7 -0
  249. package/packages/TimeSelect/src/main.vue +96 -0
  250. package/packages/Tree/index.js +7 -0
  251. package/packages/Tree/src/main.vue +439 -0
  252. package/packages/TreeDialog/index.js +7 -0
  253. package/packages/TreeDialog/src/main.vue +293 -0
  254. package/packages/TreeListDialog/index.js +7 -0
  255. package/packages/TreeListDialog/src/main.vue +219 -0
  256. package/packages/Typography/index.js +8 -0
  257. package/packages/Typography/src/create-header.js +72 -0
  258. package/packages/UserDialog/index.js +7 -0
  259. package/packages/UserDialog/src/main.vue +250 -0
  260. package/packages/UserSelector/index.js +7 -0
  261. package/packages/UserSelector/src/main.vue +746 -0
  262. package/packages/UserSelectorInput/index.js +7 -0
  263. package/packages/UserSelectorInput/src/main.vue +319 -0
  264. package/packages/picture/index.js +7 -0
  265. package/packages/picture/src/main.vue +530 -0
  266. package/packages/plugins/Echarts.js +30 -0
  267. package/packages/plugins/Map.js +29 -0
  268. package/packages/plugins/Preview.js +49 -0
  269. package/packages/plugins/Qrcode.js +7 -0
  270. package/packages/plugins/XLSX.js +7 -0
  271. package/packages/plugins/wangeditor.js +19 -0
  272. package/src/assets/icon_found_img.png +0 -0
  273. package/src/assets/table-no-data.png +0 -0
  274. package/src/directive/badge.js +53 -0
  275. package/src/directive/copy.js +47 -0
  276. package/src/directive/ellipsis.js +6 -0
  277. package/src/directive/expandClick.js +23 -0
  278. package/src/directive/express.js +86 -0
  279. package/src/directive/form.js +122 -0
  280. package/src/directive/format.js +24 -0
  281. package/src/directive/formulas.js +708 -0
  282. package/src/directive/index.js +42 -0
  283. package/src/directive/permissionLine.js +59 -0
  284. package/src/directive/permissionLineLable.js +56 -0
  285. package/src/directive/permit.js +23 -0
  286. package/src/directive/popconfirm.js +86 -0
  287. package/src/directive/relatedQuery.js +61 -0
  288. package/src/directive/resize.js +18 -0
  289. package/src/directive/subSort.js +18 -0
  290. package/src/directive/tableDrag.js +25 -0
  291. package/src/directive/tooltip.js +37 -0
  292. package/src/filter/computerSize.js +23 -0
  293. package/src/filter/dateFormat.js +10 -0
  294. package/src/filter/index.js +10 -0
  295. package/src/index.js +267 -0
  296. package/src/locale/format.js +44 -0
  297. package/src/locale/index.js +48 -0
  298. package/src/locale/lang/en.js +59 -0
  299. package/src/locale/lang/zh-CN.js +58 -0
  300. package/src/locale/lang/zh-TW.js +57 -0
  301. package/src/locale/validate/dict.js +223 -0
  302. package/src/math.js +270 -0
  303. package/src/mixins/emitter.js +33 -0
  304. package/src/mixins/form.js +25 -0
  305. package/src/mixins/formDataUpdate.js +32 -0
  306. package/src/mixins/ganged.js +126 -0
  307. package/src/mixins/inputName.js +30 -0
  308. package/src/mixins/linkage.js +403 -0
  309. package/src/mixins/locale.js +9 -0
  310. package/src/mixins/mobileMode.js +27 -0
  311. package/src/mixins/onlineHottable.js +105 -0
  312. package/src/mixins/onlineSubtable.js +468 -0
  313. package/src/mixins/permission.js +84 -0
  314. package/src/mixins/querySqlPreview.js +747 -0
  315. package/src/mixins/regionValidator.js +70 -0
  316. package/src/mixins/script.js +35 -0
  317. package/src/mixins/templatePreview.js +3673 -0
  318. package/src/service.js +336 -0
  319. package/src/services/CustomQuery.js +199 -0
  320. package/src/services/SubPagination.js +132 -0
  321. package/src/styles/index.scss +7 -0
  322. package/src/styles/selector.scss +127 -0
  323. package/src/styles/variables.scss +71 -0
  324. package/src/util/base64.js +21 -0
  325. package/src/util/brower.js +15 -0
  326. package/src/util/clone.js +61 -0
  327. package/src/util/path.js +4 -0
  328. package/src/util/request.js +14 -0
  329. package/src/utils.js +1205 -0
  330. package/src/validate.js +184 -0
@@ -0,0 +1,979 @@
1
+ <template>
2
+ <el-main ref="tablePanel" class="cl-table-panel">
3
+ <div
4
+ v-if="!noHeader && !justShowSearch"
5
+ ref="toolbarPanel"
6
+ class="toolbar-panel"
7
+ >
8
+ <div
9
+ v-if="!justShowSearch"
10
+ class="toolbar-panel__search"
11
+ :class="{ 'cl-quick__search': !hideTableSearch }"
12
+ >
13
+ <cl-input
14
+ v-if="quickSearchConfig && quickSearchConfig.length > 0"
15
+ ref="quickSearch"
16
+ v-model.lazy="quickSearchWord"
17
+ class="quick-search"
18
+ :style="quickSearchWidthStyle"
19
+ :placeholder="quickSearchPlaceholder"
20
+ :autofocus="true"
21
+ :disabled="loading || showAdvancedSearch"
22
+ :debounce="2000"
23
+ suffix-icon="el-icon-search"
24
+ style="margin-right: 20px"
25
+ @keydown.enter.native="doQuickSearch"
26
+ @click.native="clickQuickSearch"
27
+ ></cl-input>
28
+ <div class="common-tools">
29
+ <el-button
30
+ v-if="hasSearchPanel && !justShowSearch"
31
+ class="advance-search__button"
32
+ @click="showAdvancedSearch = !showAdvancedSearch"
33
+ >
34
+ {{ showAdvancedSearch ? '基础搜索' : '高级搜索' }}
35
+ <i
36
+ :class="
37
+ showAdvancedSearch ? 'el-icon-arrow-up' : 'el-icon-arrow-down'
38
+ "
39
+ ></i>
40
+ </el-button>
41
+ <el-tooltip v-if="showExport" content="导出数据" placement="top">
42
+ <el-button @click="$emit('export')">
43
+ <cl-icon name="arrow" />
44
+ </el-button>
45
+ </el-tooltip>
46
+ <el-tooltip content="刷新数据" placement="top">
47
+ <el-button
48
+ icon="el-icon-refresh"
49
+ class="refresh-btn-icon"
50
+ @click="load(true)"
51
+ >
52
+ <!-- <cl-icon name="refresh" /> -->
53
+ </el-button>
54
+ </el-tooltip>
55
+ <el-tooltip
56
+ v-if="showCustomColumn && !isCardView"
57
+ content="自定义列"
58
+ placement="top"
59
+ >
60
+ <el-button @click="customColumnDialogVisible = true">
61
+ <cl-icon name="setting" />
62
+ </el-button>
63
+ </el-tooltip>
64
+ <el-button-group v-if="multiViewSwitch" class="multiview-switcher">
65
+ <el-tooltip content="卡片视图" placement="top">
66
+ <el-button
67
+ :type="isCardView ? 'primary' : 'default'"
68
+ @click="isCardView = true"
69
+ >
70
+ <cl-icon name="block" />
71
+ </el-button>
72
+ </el-tooltip>
73
+ <el-tooltip content="表格视图" placement="top">
74
+ <el-button
75
+ :type="isCardView ? 'default' : 'primary'"
76
+ @click="isCardView = false"
77
+ >
78
+ <cl-icon name="line" />
79
+ </el-button>
80
+ </el-tooltip>
81
+ </el-button-group>
82
+ </div>
83
+ </div>
84
+ </div>
85
+ <el-collapse-transition>
86
+ <div
87
+ v-show="showAdvancedSearch || justShowSearch"
88
+ ref="searchPanel"
89
+ class="search-panel"
90
+ >
91
+ <slot name="search"></slot>
92
+ </div>
93
+ </el-collapse-transition>
94
+ <div v-if="hasToolBar" ref="toolbarContainer" class="toolbar-container">
95
+ <slot name="toolbar"></slot>
96
+ </div>
97
+ <el-table
98
+ v-if="!isCardView"
99
+ ref="clTable"
100
+ v-loading="loading"
101
+ stripe
102
+ border
103
+ class="cl-table"
104
+ :class="{ 'no-data-table': data.length < 1 }"
105
+ :data="data"
106
+ :size="size"
107
+ :empty-text="emptyText"
108
+ :show-header="showHeader"
109
+ :max-height="tableMaxHeight"
110
+ :tooltip-effect="tooltipEffect"
111
+ :default-querys="defaultQuerys"
112
+ :header-row-class-name="headerRowClassName"
113
+ :header-cell-class-name="headerCellClassName"
114
+ :highlight-current-row="highlightCurrentRow"
115
+ :row-class-name="rowClassName"
116
+ :cell-class-name="cellClassName"
117
+ :style="{ height: `${tableMaxHeight}` + 'px' }"
118
+ @row-click="handleRowClick"
119
+ @select="handleTableSelect"
120
+ @select-all="handleTableSelect"
121
+ @sort-change="handleSortChange"
122
+ @filter-change="handleFilterChange"
123
+ @selection-change="(selection) => $emit('selection-change', selection)"
124
+ >
125
+ <el-table-column
126
+ v-if="selectable"
127
+ type="selection"
128
+ align="center"
129
+ width="45"
130
+ />
131
+ <slot></slot>
132
+ <template slot="empty">
133
+ <el-image :src="tableNoDataImg"></el-image>
134
+ <p class="no-data-text">{{ emptyText || t('el.table.emptyText') }}</p>
135
+ </template>
136
+ </el-table>
137
+ <div
138
+ v-else
139
+ v-loading="loading"
140
+ class="cl-card"
141
+ :style="{ height: `${tableMaxHeight}` + 'px' }"
142
+ >
143
+ <template v-if="loading || (data && data.length > 0)">
144
+ <div v-if="cardItemMode" class="cl-card__container">
145
+ <el-card
146
+ v-for="(item, index) in data"
147
+ :key="index"
148
+ shadow="hover"
149
+ @click.native="$emit('card-click', item)"
150
+ >
151
+ <slot name="card" :item="item"></slot>
152
+ </el-card>
153
+ </div>
154
+ <div v-else>
155
+ <slot name="card" :data="data"></slot>
156
+ </div>
157
+ </template>
158
+ <div v-else class="el-table__empty-block">
159
+ <template v-if="data.length < 1 && !emptyText">
160
+ <slot name="empty-card"></slot>
161
+ </template>
162
+ <span v-else-if="emptyText" class="el-table__empty-text">
163
+ {{ emptyText || t('el.table.emptyText') }}
164
+ </span>
165
+ </div>
166
+ </div>
167
+ <div v-if="!nopagination" ref="paginationPanel" class="pagination-panel">
168
+ <el-row type="flex" :justify="paginationJustify">
169
+ <el-pagination
170
+ small
171
+ :class="{ 'page-sizes__hidden': hidePageSizes }"
172
+ :disabled="loading"
173
+ :current-page="pagination.page"
174
+ :page-sizes="pageSizes"
175
+ :page-size="pagination.pageSize"
176
+ :pager-count="pagerCount"
177
+ :background="$paginationBackground"
178
+ layout="total, sizes, prev, pager, next, jumper"
179
+ :total="pagination.total"
180
+ @size-change="handleSizeChange"
181
+ @current-change="handleCurrentChange"
182
+ ></el-pagination>
183
+ </el-row>
184
+ </div>
185
+ <custom-column
186
+ :custom-columns="customColumns"
187
+ :visible.sync="customColumnDialogVisible"
188
+ @apply-custom-column="handleApplyCustomColumn"
189
+ ></custom-column>
190
+ </el-main>
191
+ </template>
192
+ <script>
193
+ import Locale from '@/mixins/locale'
194
+ import Emitter from '@/mixins/emitter'
195
+ import utils from '@/utils.js'
196
+ import CustomColumn from './CustomColumn.vue'
197
+ import elementResizeDetectorMaker from 'element-resize-detector'
198
+ export default {
199
+ name: 'ClTable',
200
+ components: { CustomColumn },
201
+ mixins: [Locale, Emitter],
202
+ props: {
203
+ size: {
204
+ type: String,
205
+ default: 'mini',
206
+ },
207
+ tooltipEffect: {
208
+ type: String,
209
+ default: 'dark',
210
+ },
211
+ justShowSearch: {
212
+ //为true时只显示高级搜索中的查询条件
213
+ type: Boolean,
214
+ default: false,
215
+ },
216
+ paginationJustify: {
217
+ type: String,
218
+ default: 'start',
219
+ validator: function(value) {
220
+ return ['start', 'end', 'center'].indexOf(value) !== -1
221
+ },
222
+ },
223
+ data: Array,
224
+ showHeader: {
225
+ type: Boolean,
226
+ default: true,
227
+ },
228
+ pageResult: {
229
+ type: Object,
230
+ default: () => {
231
+ return { page: 1, pageSize: 50, total: 0 }
232
+ },
233
+ },
234
+ pageSizes: {
235
+ type: Array,
236
+ default: () => {
237
+ return [10, 20, 50, 100, 200, 300, 500]
238
+ },
239
+ },
240
+ pagerCount: {
241
+ type: Number,
242
+ default: 11,
243
+ },
244
+ nopagination: {
245
+ type: Boolean,
246
+ default: false,
247
+ },
248
+ highlightCurrentRow: {
249
+ type: Boolean,
250
+ default: false,
251
+ },
252
+ selectable: {
253
+ type: Boolean,
254
+ default: true,
255
+ },
256
+ quickSearchProps: [String, Array],
257
+ headerRowClassName: [String, Function],
258
+ headerCellClassName: [String, Function],
259
+ rowClassName: [String, Function],
260
+ cellClassName: [String, Function],
261
+ showExport: {
262
+ type: Boolean,
263
+ default: false,
264
+ },
265
+ showCustomColumn: {
266
+ type: Boolean,
267
+ default: true,
268
+ },
269
+ defaultQuerys: {
270
+ type: Array,
271
+ default() {
272
+ return []
273
+ },
274
+ },
275
+ defaultSorter: {
276
+ type: Array,
277
+ default() {
278
+ return []
279
+ },
280
+ },
281
+ isLoadTable: {
282
+ //是否默认在mounted函数中请求table数据
283
+ type: Boolean,
284
+ default: true,
285
+ },
286
+ quickSearchWidth: {
287
+ type: Number,
288
+ default: 400,
289
+ },
290
+ customTableHeight: {
291
+ type: [String, Number], //自定义传入固定高度
292
+ validator: (val) => {
293
+ if (typeof val == 'number') {
294
+ return val > 0
295
+ } else if (typeof val == 'string') {
296
+ const numVal = Number(val)
297
+ return !isNaN(numVal) && numVal > 0
298
+ } else {
299
+ return false
300
+ }
301
+ },
302
+ },
303
+ multiViewSwitch: {
304
+ // 是否支持多视图切换
305
+ type: Boolean,
306
+ default: false,
307
+ },
308
+ cardView: {
309
+ // 是否卡片视图
310
+ type: Boolean,
311
+ default: false,
312
+ },
313
+ cardItemMode: {
314
+ // 是否单个卡片模式
315
+ type: Boolean,
316
+ default: true,
317
+ },
318
+ noHeader: {
319
+ // 不显示整个工具栏
320
+ type: Boolean,
321
+ default: false,
322
+ },
323
+ emptyText: String,
324
+ rowClickSelect: {
325
+ // 单击行时是否选中该行数据
326
+ type: Boolean,
327
+ default: true,
328
+ },
329
+ autoFix: {
330
+ //是否在表头高度改变时,触发doLayout操作
331
+ type: Boolean,
332
+ default: false,
333
+ },
334
+ hidePageSizes: {
335
+ type: Boolean,
336
+ default: false,
337
+ },
338
+ tableNoDataImg: {
339
+ type: String,
340
+ default: require('@/assets/table-no-data.png'),
341
+ },
342
+ },
343
+ data() {
344
+ return {
345
+ querys: [],
346
+ sorter: null,
347
+ quickSearchWord: null,
348
+ quickSearchPlaceholder: '请输入搜索内容',
349
+ quickSearchConfig: null,
350
+ hasSearchPanel: false,
351
+ filters: {},
352
+ pagination: { ...this.pageResult },
353
+ tableMaxHeight: 400,
354
+ showAdvancedSearch: false,
355
+ loading: false,
356
+ columns: [],
357
+ customColumns: [],
358
+ customColumnDialogVisible: false,
359
+ selection: [],
360
+ tablePanelHeight: 0,
361
+ isCardView: this.cardView,
362
+ }
363
+ },
364
+ computed: {
365
+ calDefaultQuerys: function() {
366
+ let calQuerys = []
367
+ let query = {
368
+ group: 'defaultQueryGroup',
369
+ operation: 'EQUAL',
370
+ relation: 'AND',
371
+ }
372
+ this.defaultQuerys.forEach((c) => {
373
+ calQuerys.push({ ...query, ...c })
374
+ })
375
+ return calQuerys
376
+ },
377
+ hasToolBar() {
378
+ return this.$slots.toolbar && this.$slots.toolbar.length > 0
379
+ },
380
+ hideTableSearch() {
381
+ const hasQuickSearch =
382
+ this.quickSearchConfig && this.quickSearchConfig.length > 0
383
+ return !this.showAdvancedSearch && !this.hasToolBar && !hasQuickSearch
384
+ },
385
+ customTableHeightNum() {
386
+ return typeof this.customTableHeight == 'number'
387
+ ? this.customTableHeight
388
+ : Number(this.customTableHeight)
389
+ },
390
+ quickSearchWidthStyle() {
391
+ return { width: `${this.quickSearchWidth}` + 'px' }
392
+ },
393
+ },
394
+ watch: {
395
+ justShowSearch: {
396
+ handler(val) {
397
+ if (val) {
398
+ this.showAdvancedSearch = true
399
+ }
400
+ },
401
+ immediate: true,
402
+ },
403
+ isCardView: function(newVal, oldVal) {
404
+ if (newVal !== oldVal) {
405
+ this.selection = []
406
+ this.$emit('view-change', newVal)
407
+ }
408
+ },
409
+ },
410
+ created() {
411
+ this.initCustomColumns()
412
+ this.$on('advance-search', (data) => this.advanceSearch(data))
413
+ setTimeout(() => {
414
+ this.quickSearchProps && this.generateQuickSearchConfig()
415
+ }, 100)
416
+ },
417
+ activated() {
418
+ this.doLayout()
419
+ },
420
+ mounted() {
421
+ // 判断是否有高级搜索面板
422
+ this.hasSearchPanel = !!this.$scopedSlots.search
423
+ if (this.isLoadTable) {
424
+ this.load()
425
+ }
426
+ this.calcTableHeight()
427
+ this.$watch('showAdvancedSearch', (n, o) => {
428
+ if (n !== o) {
429
+ if (n) {
430
+ this.quickSearchWord = null
431
+ }
432
+ // 显示或收起搜索面板时,重新计算表格高度
433
+ this.calcTableHeight(300)
434
+ }
435
+ })
436
+ this.$watch('pageResult', (n, o) => {
437
+ if (n !== o) {
438
+ this.pagination = { ...n }
439
+ }
440
+ })
441
+ this.$root.$on('resize', () => {
442
+ this.tablePanelHeight = 0
443
+ this.calcTableHeight(300)
444
+ })
445
+ if (this.autoFix) {
446
+ this.addResizeListener()
447
+ }
448
+ },
449
+ methods: {
450
+ initCustomColumns() {
451
+ const me = this
452
+ const ary = []
453
+ setTimeout(() => {
454
+ if (
455
+ !me.$slots ||
456
+ !me.$slots.default ||
457
+ me.$slots.default.length == 0
458
+ ) {
459
+ return
460
+ }
461
+ const count = me.$slots.default.length
462
+ // 从插槽中获取到当前表格的所有列
463
+ me.$slots.default &&
464
+ me.$slots.default.forEach((n, index) => {
465
+ if (n && n.componentOptions) {
466
+ const pd = n.componentOptions.propsData
467
+ // 将当前表格的列放入一个数组
468
+ me.columns.push(pd)
469
+ // 将当前有有prop和label的列放入自定义列表项的数组中
470
+ if (pd.label) {
471
+ ary.push({
472
+ key: pd.prop || pd.label,
473
+ value: pd.label,
474
+ checked:
475
+ !(pd.hidden === true || pd.hidden === '') ||
476
+ pd.required === true ||
477
+ pd.required === '' ||
478
+ index == count - 1,
479
+ required:
480
+ pd.required === true ||
481
+ pd.required === '' ||
482
+ index == count - 1,
483
+ width: pd.width || 'auto',
484
+ })
485
+ }
486
+ }
487
+ })
488
+ me.customColumns = ary
489
+ }, 0)
490
+ },
491
+ handleApplyCustomColumn(columns) {
492
+ this.broadcast('ClTableColumn', 'customColumn', columns)
493
+ },
494
+ doQuickSearch() {
495
+ // 先删除快速查询的查询条件
496
+ this.clearQueryByGroupName('quick')
497
+ this.clearQueryByGroupName('advance')
498
+ this.quickSearchWord &&
499
+ this.quickSearchConfig.forEach((c) => {
500
+ let query = {
501
+ property: c.prop,
502
+ value: this.quickSearchWord.trim(),
503
+ group: 'quick',
504
+ relation: 'OR',
505
+ operation: 'LIKE',
506
+ }
507
+ this.querys.push(query)
508
+ })
509
+ this.load()
510
+ },
511
+ clickQuickSearch($event) {
512
+ if (
513
+ !(this.loading || this.showAdvancedSearch) &&
514
+ $event &&
515
+ $event.target &&
516
+ $event.target.tagName == 'I'
517
+ ) {
518
+ this.$nextTick(() => {
519
+ this.doQuickSearch()
520
+ })
521
+ }
522
+ },
523
+ advanceSearch(data) {
524
+ if (this.loading || !this.showAdvancedSearch) {
525
+ return
526
+ }
527
+ this.clearQueryByGroupName('quick')
528
+ this.clearQueryByGroupName('advance')
529
+ data &&
530
+ data.forEach((d) => {
531
+ const shouldPush =
532
+ d.value != null && d.value != undefined && d.value != ''
533
+ // 高级搜索中支持一个搜索框中关联多个属性进行搜索
534
+ if (d.prop.indexOf(',') > 0) {
535
+ const propAry = utils.stringSplit(d.prop, ',')
536
+ if (propAry && propAry.length > 0) {
537
+ const groupName = `group_${propAry[0]}`
538
+ this.clearQueryByGroupName(groupName)
539
+ shouldPush &&
540
+ propAry.forEach((p) => {
541
+ this.querys.push({
542
+ property: p,
543
+ value: d.value,
544
+ group: groupName,
545
+ relation: 'OR',
546
+ operation: d.operation,
547
+ })
548
+ })
549
+ }
550
+ } else {
551
+ shouldPush &&
552
+ this.querys.push({
553
+ property: d.prop,
554
+ value: d.value,
555
+ group: 'advance',
556
+ relation: d.relation,
557
+ operation: d.operation,
558
+ })
559
+ }
560
+ })
561
+ this.load()
562
+ },
563
+ // 加载数据
564
+ load(doNotResetPage) {
565
+ this.loading = true
566
+ // 默认重置页码为第一页
567
+ if (!doNotResetPage) {
568
+ this.pagination.page = 1
569
+ }
570
+ let param = {
571
+ pageBean: this.pagination,
572
+ sorter: [],
573
+ }
574
+
575
+ if (this.sorter && this.sorter.length > 0) {
576
+ param.sorter = this.sorter
577
+ }
578
+ // 处理默认排序字段。只有当用户没有选择排序字段才使用默认排序
579
+ if (this.defaultSorter.length > 0 && param.sorter.length == 0) {
580
+ param.sorter = [...this.defaultSorter]
581
+ }
582
+ // 处理过滤条件
583
+ this.handleFilters()
584
+
585
+ if (this.querys && this.querys.length > 0) {
586
+ param.querys = this.querys
587
+ }
588
+
589
+ // 处理查询条件
590
+ if (this.calDefaultQuerys.length > 0) {
591
+ if (!param.querys) {
592
+ param.querys = []
593
+ }
594
+ this.calDefaultQuerys.forEach((item) => {
595
+ param.querys.remove(item)
596
+ })
597
+ param.querys = param.querys.concat(this.calDefaultQuerys)
598
+ }
599
+
600
+ const me = this
601
+ // 防止外部没有回调,设置10秒后自动取消加载中的状态
602
+ const finalTickCB = setTimeout(function() {
603
+ me.loading = false
604
+ this.selection = []
605
+ }, 10000)
606
+
607
+ if (this.nopagination) {
608
+ param.pageBean = {}
609
+ }
610
+ const loadedHandler = () => {
611
+ // 外部已经回调的情况下,取消倒计时
612
+ clearTimeout(finalTickCB)
613
+ me.loading = false
614
+ this.selection = []
615
+ setTimeout(() => {
616
+ me.$refs.quickSearch &&
617
+ me.$refs.quickSearch.$children[0].$el.children[0].focus()
618
+ })
619
+ }
620
+
621
+ this.$emit('load', { ...param }, loadedHandler)
622
+ this.$emit('loading', { ...param }, loadedHandler)
623
+ },
624
+ // 通过列属性获取列标签
625
+ getColumnLabelByProp(prop) {
626
+ let label = null
627
+ if (!prop) {
628
+ return label
629
+ }
630
+ this.columns.forEach((c) => {
631
+ if (c.prop && c.prop === prop) {
632
+ label = c.label
633
+ }
634
+ })
635
+ return label
636
+ },
637
+ // 构建快速搜索配置项
638
+ generateQuickSearchConfig() {
639
+ let labelAry = []
640
+ if (typeof this.quickSearchProps == 'string') {
641
+ const props = utils.stringSplit(this.quickSearchProps, ',')
642
+ this.quickSearchConfig = []
643
+ props.forEach((prop) => {
644
+ const label = this.getColumnLabelByProp(prop)
645
+ if (label) {
646
+ labelAry.push(label)
647
+ this.quickSearchConfig.push({ prop, label })
648
+ }
649
+ })
650
+ }
651
+ if (typeof this.quickSearchProps == 'object') {
652
+ this.quickSearchProps.forEach((prop) => {
653
+ if (prop && prop.label) {
654
+ labelAry.push(prop.label)
655
+ }
656
+ })
657
+ this.quickSearchConfig = [...this.quickSearchProps]
658
+ }
659
+ this.quickSearchPlaceholder = `${this.t(
660
+ 'cl.common.enter'
661
+ )}${labelAry.join(',')}${this.t('cl.common.toSearch')}`
662
+ },
663
+ // 通过分组名称清除对应查询条件
664
+ clearQueryByGroupName(groupName) {
665
+ // 待删除的查询条件
666
+ let toDelete = []
667
+ this.querys &&
668
+ this.querys.forEach((query) => {
669
+ if (query.group == groupName) {
670
+ toDelete.push(query)
671
+ }
672
+ })
673
+ toDelete.forEach((d) => {
674
+ this.querys.remove(d)
675
+ })
676
+ },
677
+ handleFilters() {
678
+ this.clearQueryByGroupName('filter')
679
+ // 将过滤条件添加查询参数数组中
680
+ if (this.filters && Object.keys(this.filters).length > 0) {
681
+ Object.keys(this.filters).forEach((k) => {
682
+ const filter = this.filters[k]
683
+ let query = {
684
+ property: k,
685
+ value: filter[0],
686
+ group: 'filter',
687
+ relation: 'AND',
688
+ }
689
+ if (filter.length == 1) {
690
+ query.operation = 'EQUAL'
691
+ this.querys.push(query)
692
+ } else if (filter.length > 1) {
693
+ query.operation = 'IN'
694
+ query.value = filter
695
+ this.querys.push(query)
696
+ }
697
+ })
698
+ }
699
+ },
700
+ handleSizeChange(pageSize) {
701
+ this.pagination = { ...this.pagination, pageSize }
702
+ this.$emit('size-change', pageSize)
703
+ this.load()
704
+ },
705
+ handleCurrentChange(page) {
706
+ this.pagination = { ...this.pagination, page }
707
+ // 翻页时不重置页码
708
+ this.$emit('current-change', page)
709
+ this.load(true)
710
+ },
711
+ handleRowClick(row, column, event) {
712
+ if (this.rowClickSelect) {
713
+ if (this.selection.some((s) => s === row)) {
714
+ this.selection.remove(row)
715
+ } else {
716
+ this.selection.push(row)
717
+ }
718
+ this.$refs.clTable.toggleRowSelection(row)
719
+ }
720
+ this.$emit('row-click', row, column, event)
721
+ },
722
+ handleTableSelect(selection, row) {
723
+ this.selection = selection
724
+ if (row) {
725
+ this.$emit('select', selection, row)
726
+ } else {
727
+ this.$emit('select-all', selection)
728
+ }
729
+ },
730
+ handleSortChange(column) {
731
+ if (!column.order) {
732
+ this.sorter = null
733
+ } else {
734
+ this.sorter = [
735
+ {
736
+ property: column.prop,
737
+ direction: column.order == 'ascending' ? 'ASC' : 'DESC',
738
+ },
739
+ ]
740
+ }
741
+ this.load()
742
+ this.$emit('sort-change', column)
743
+ },
744
+ handleFilterChange(m) {
745
+ this.filters = { ...this.filters, ...m }
746
+ Object.keys(this.filters).forEach((k) => {
747
+ if (!this.filters[k] || this.filters[k].length == 0) {
748
+ delete this.filters[k]
749
+ }
750
+ })
751
+ this.load()
752
+ this.$emit('filter-change', m)
753
+ },
754
+ doLayout() {
755
+ this.$nextTick(() => {
756
+ this.$refs.clTable && this.$refs.clTable.doLayout()
757
+ })
758
+ },
759
+ initTablePanelHeight() {
760
+ this.tablePanelHeight = this.$refs.tablePanel.$el.clientHeight
761
+ },
762
+ calcTableHeight(delay) {
763
+ // 动态计算表格的高度,自适应当前容器
764
+ setTimeout(() => {
765
+ const toolbarPanelHeight =
766
+ (this.$refs.toolbarPanel && this.$refs.toolbarPanel.clientHeight) ||
767
+ 0
768
+
769
+ const searchPanelHeight =
770
+ (this.$refs.searchPanel && this.$refs.searchPanel.clientHeight) || 0
771
+
772
+ const toolbarContainerHeight =
773
+ (this.$refs.toolbarContainer &&
774
+ this.$refs.toolbarContainer.clientHeight) ||
775
+ 0
776
+
777
+ const paginationPanelHeight =
778
+ (this.$refs.paginationPanel &&
779
+ this.$refs.paginationPanel.clientHeight) ||
780
+ 0
781
+ // 下外边距
782
+ const searchPanelBottom = searchPanelHeight > 0 ? 18 : 0
783
+ const toolbarPanelBottom = toolbarPanelHeight > 0 ? 18 : 0
784
+ const toolbarContainerBottom = toolbarContainerHeight > 0 ? 18 : 0
785
+
786
+ // 表格之外的高度
787
+ const tableOuterHeight =
788
+ toolbarPanelHeight +
789
+ toolbarPanelBottom +
790
+ searchPanelHeight +
791
+ searchPanelBottom +
792
+ toolbarContainerHeight +
793
+ toolbarContainerBottom +
794
+ paginationPanelHeight
795
+ if (this.customTableHeightNum) {
796
+ this.tableMaxHeight = this.customTableHeightNum - tableOuterHeight
797
+ } else {
798
+ if (!this.$refs.tablePanel) {
799
+ return
800
+ }
801
+ if (this.tablePanelHeight == 0) {
802
+ this.initTablePanelHeight()
803
+ }
804
+ const tableHeight = this.tablePanelHeight - tableOuterHeight
805
+ this.tableMaxHeight = tableHeight
806
+ }
807
+ }, delay || 0)
808
+ },
809
+ addResizeListener() {
810
+ //监听表头高度变化,如果
811
+ this.$nextTick(() => {
812
+ let erd = elementResizeDetectorMaker()
813
+ erd.listenTo(
814
+ this.$refs.clTable.$refs.headerWrapper.getElementsByTagName(
815
+ 'tr'
816
+ )[0],
817
+ this.doLayout
818
+ )
819
+ })
820
+ },
821
+ },
822
+ }
823
+ </script>
824
+ <style lang="scss" scoped>
825
+ .cl-table-panel {
826
+ padding: 0px;
827
+ height: 100%;
828
+ overflow: hidden;
829
+
830
+ .toolbar-panel,
831
+ .toolbar-container {
832
+ margin-bottom: 16px;
833
+ box-sizing: border-box;
834
+ }
835
+
836
+ .search-panel {
837
+ background-color: #f9f9f9;
838
+ padding: 16px 16px 10px 16px;
839
+ margin-bottom: 16px;
840
+ box-sizing: border-box;
841
+ }
842
+ }
843
+
844
+ .cl-table {
845
+ width: 100%;
846
+ }
847
+ .no-data-table {
848
+ ::v-deep .el-table__body-wrapper {
849
+ height: 100%;
850
+ .el-table__empty-text {
851
+ line-height: unset;
852
+ }
853
+ .no-data-text {
854
+ margin: 8px 0;
855
+ line-height: 20px;
856
+ font-size: 14px;
857
+ }
858
+ }
859
+ }
860
+ .cl-card {
861
+ .el-table__empty-block {
862
+ height: 100%;
863
+ }
864
+ }
865
+ .toolbar-panel__search {
866
+ display: flex;
867
+ justify-content: space-between;
868
+ }
869
+
870
+ .search-container__col {
871
+ display: -webkit-box;
872
+ display: -ms-flexbox;
873
+ display: flex;
874
+ -webkit-box-align: center;
875
+ -ms-flex-align: center;
876
+ flex-direction: row;
877
+ align-items: center;
878
+ }
879
+
880
+ .cl-quick__search {
881
+ margin-bottom: 15px;
882
+ max-height: 32px;
883
+ }
884
+
885
+ .quick-search {
886
+ margin-right: 20px;
887
+ }
888
+
889
+ .quick-search + .el-divider {
890
+ margin-right: 20px;
891
+ }
892
+
893
+ ::v-deep .el-input__inner,
894
+ ::v-deep .el-input-group__append {
895
+ border-radius: 0;
896
+ }
897
+
898
+ .common-tools {
899
+ display: flex;
900
+ justify-content: flex-end;
901
+
902
+ .el-button-group {
903
+ margin: 0 0 0 16px;
904
+ }
905
+
906
+ .el-button {
907
+ padding: 6px;
908
+ border-radius: 0;
909
+ }
910
+ ::v-deep.el-button.refresh-btn-icon {
911
+ i {
912
+ font-size: 16px;
913
+ }
914
+ }
915
+ .advance-search__button {
916
+ padding: 6px 12px;
917
+ }
918
+ }
919
+
920
+ ::v-deep .cl-table .sort-caret.descending {
921
+ bottom: 0px;
922
+ }
923
+
924
+ ::v-deep .cl-table .sort-caret.ascending {
925
+ top: -2px;
926
+ }
927
+
928
+ ::v-deep .cl-table .caret-wrapper {
929
+ height: 20px;
930
+ }
931
+
932
+ ::v-deep .cl-table .el-table__column-filter-trigger {
933
+ line-height: 20px;
934
+ }
935
+
936
+ .pagination-panel {
937
+ padding: 10px 0;
938
+ }
939
+
940
+ .pagination-panel ::v-deep .el-input__inner {
941
+ height: 23px !important;
942
+ line-height: 23px !important;
943
+ }
944
+
945
+ .multiview-switcher {
946
+ width: 59px;
947
+ height: 32px;
948
+ overflow: hidden;
949
+ }
950
+
951
+ .cl-card {
952
+ @include base-scrollbar;
953
+ overflow: auto;
954
+
955
+ .cl-card__container {
956
+ &::after {
957
+ content: '';
958
+ display: block;
959
+ clear: both;
960
+ }
961
+
962
+ .el-card {
963
+ cursor: pointer;
964
+ float: left;
965
+ margin: 8px;
966
+
967
+ ::v-deep .el-card__body {
968
+ padding: 16px;
969
+ }
970
+ }
971
+ }
972
+ }
973
+
974
+ .page-sizes__hidden {
975
+ ::v-deep .el-pagination__sizes {
976
+ display: none;
977
+ }
978
+ }
979
+ </style>