@kyfe/ks-query-table 0.0.21 → 0.0.22

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 (310) hide show
  1. package/.bitmap +38 -0
  2. package/.editorconfig +5 -0
  3. package/.env.dev +2 -0
  4. package/.env.gray +2 -0
  5. package/.env.prod +2 -0
  6. package/.env.stg +3 -0
  7. package/.env.uat +2 -0
  8. package/.eslintignore +1 -0
  9. package/.eslintrc.js +25 -0
  10. package/.gitmodules +4 -0
  11. package/.prettierrc +11 -0
  12. package/README.md +15 -0
  13. package/babel.config.js +10 -0
  14. package/build-apm.sh +9 -0
  15. package/build.sh +16 -0
  16. package/config/index.js +20 -0
  17. package/jsconfig.json +7 -0
  18. package/kuasheng-sdk/index.js +80 -0
  19. package/kuasheng-sdk/lib/assets.js +304 -0
  20. package/kuasheng-sdk/lib/context.js +199 -0
  21. package/kuasheng-sdk/lib/layout.js +346 -0
  22. package/kuasheng-sdk/lib/location.js +46 -0
  23. package/kuasheng-sdk/lib/media.js +342 -0
  24. package/kuasheng-sdk/lib/navigation.js +30 -0
  25. package/kuasheng-sdk/lib/request.js +76 -0
  26. package/kuasheng-sdk/lib/system.js +190 -0
  27. package/kuasheng-sdk/lib/userinfo.js +98 -0
  28. package/kuasheng-sdk/util/check.js +102 -0
  29. package/kuasheng-sdk/util/config.js +47 -0
  30. package/kuasheng-sdk/util/device.js +25 -0
  31. package/kuasheng-sdk/util/error.js +19 -0
  32. package/kuasheng-sdk/util/funtional.js +153 -0
  33. package/kuasheng-sdk/util/mixin.js +36 -0
  34. package/kuasheng-sdk/util/requestUtil.js +41 -0
  35. package/kuasheng-sdk/util/response.js +33 -0
  36. package/kuasheng-sdk/util/warn.js +35 -0
  37. package/kuasheng-ui/CHANGELOG.md +9 -0
  38. package/kuasheng-ui/components/card.vue +57 -0
  39. package/kuasheng-ui/components/ks-area-select/README.md +43 -0
  40. package/kuasheng-ui/components/ks-area-select/area-picker.vue +554 -0
  41. package/kuasheng-ui/components/ks-area-select/area-search.vue +363 -0
  42. package/kuasheng-ui/components/ks-area-select/areas-pop.vue +56 -0
  43. package/kuasheng-ui/components/ks-area-select/common.js +183 -0
  44. package/kuasheng-ui/components/ks-area-select/index.vue +355 -0
  45. package/kuasheng-ui/components/ks-area-select/mixins.js +216 -0
  46. package/kuasheng-ui/components/ks-area-single-select/README.md +50 -0
  47. package/kuasheng-ui/components/ks-area-single-select/hot-city.js +45 -0
  48. package/kuasheng-ui/components/ks-area-single-select/index.vue +324 -0
  49. package/kuasheng-ui/components/ks-calendar/index.vue +269 -0
  50. package/kuasheng-ui/components/ks-call-phone/call-tips.vue +70 -0
  51. package/kuasheng-ui/components/ks-call-phone/call.vue +178 -0
  52. package/kuasheng-ui/components/ks-call-phone/index.js +48 -0
  53. package/kuasheng-ui/components/ks-call-phone/index.vue +131 -0
  54. package/kuasheng-ui/components/ks-call-phone//345/221/274/345/217/253/347/273/204/344/273/266.md +0 -0
  55. package/kuasheng-ui/components/ks-date-picker/README.md +23 -0
  56. package/kuasheng-ui/components/ks-date-picker/date-picker-bottom.vue +123 -0
  57. package/kuasheng-ui/components/ks-date-picker/date-picker-dropdown.vue +80 -0
  58. package/kuasheng-ui/components/ks-date-picker/date-picker-right.vue +87 -0
  59. package/kuasheng-ui/components/ks-date-picker/date-picker-top.vue +88 -0
  60. package/kuasheng-ui/components/ks-date-picker/date-picker.js +15 -0
  61. package/kuasheng-ui/components/ks-date-picker/date-range-select.vue +92 -0
  62. package/kuasheng-ui/components/ks-date-picker/date-select.vue +65 -0
  63. package/kuasheng-ui/components/ks-date-picker/date-week-month.vue +131 -0
  64. package/kuasheng-ui/components/ks-date-picker/index.js +12 -0
  65. package/kuasheng-ui/components/ks-date-picker/mixin.js +92 -0
  66. package/kuasheng-ui/components/ks-date-picker/month-range-select.vue +129 -0
  67. package/kuasheng-ui/components/ks-date-picker/month-select.vue +85 -0
  68. package/kuasheng-ui/components/ks-date-picker/quarter-select.vue +94 -0
  69. package/kuasheng-ui/components/ks-date-picker/style.less +121 -0
  70. package/kuasheng-ui/components/ks-date-picker/utils.js +109 -0
  71. package/kuasheng-ui/components/ks-date-picker/week-select.vue +99 -0
  72. package/kuasheng-ui/components/ks-decrypt/index.vue +159 -0
  73. package/kuasheng-ui/components/ks-employee/README.md +78 -0
  74. package/kuasheng-ui/components/ks-employee/employee-input.vue +173 -0
  75. package/kuasheng-ui/components/ks-employee/employee-list.vue +662 -0
  76. package/kuasheng-ui/components/ks-employee/employee-popup.vue +197 -0
  77. package/kuasheng-ui/components/ks-employee/employee-search.vue +250 -0
  78. package/kuasheng-ui/components/ks-employee/employee-selected.vue +173 -0
  79. package/kuasheng-ui/components/ks-employee/index.js +17 -0
  80. package/kuasheng-ui/components/ks-employee/package-lock.json +5 -0
  81. package/kuasheng-ui/components/ks-employee/package.json +15 -0
  82. package/kuasheng-ui/components/ks-employee/yarn.lock +4 -0
  83. package/kuasheng-ui/components/ks-field-money/index.js +8 -0
  84. package/kuasheng-ui/components/ks-field-money/index.vue +212 -0
  85. package/kuasheng-ui/components/ks-field-money/package.json +11 -0
  86. package/kuasheng-ui/components/ks-field-money/utils.js +65 -0
  87. package/kuasheng-ui/components/ks-field-money//351/207/221/351/242/235/350/275/254/346/215/242/345/231/250.md +0 -0
  88. package/kuasheng-ui/components/ks-history-search/history-input.vue +131 -0
  89. package/kuasheng-ui/components/ks-history-search/history-list.vue +188 -0
  90. package/kuasheng-ui/components/ks-history-search/img/delete.png +0 -0
  91. package/kuasheng-ui/components/ks-history-search/index.js +9 -0
  92. package/kuasheng-ui/components/ks-history-search/index.vue +125 -0
  93. package/kuasheng-ui/components/ks-history-search/package-lock.json +5 -0
  94. package/kuasheng-ui/components/ks-history-search/package.json +15 -0
  95. package/kuasheng-ui/components/ks-history-search/utils.js +35 -0
  96. package/kuasheng-ui/components/ks-input-search/index.vue +106 -0
  97. package/kuasheng-ui/components/ks-list/index.vue +75 -0
  98. package/kuasheng-ui/components/ks-loading/index.js +16 -0
  99. package/kuasheng-ui/components/ks-month/index.vue +47 -0
  100. package/kuasheng-ui/components/ks-month/package.json +3 -0
  101. package/kuasheng-ui/components/ks-month/range.vue +172 -0
  102. package/kuasheng-ui/components/ks-month/single.vue +136 -0
  103. package/kuasheng-ui/components/ks-month/style.less +125 -0
  104. package/kuasheng-ui/components/ks-month/utils.js +35 -0
  105. package/kuasheng-ui/components/ks-nav/index.vue +264 -0
  106. package/kuasheng-ui/components/ks-nav-bar.js +35 -0
  107. package/kuasheng-ui/components/ks-org/ks-org-tree.vue +247 -0
  108. package/kuasheng-ui/components/ks-org/ks-popup-tree.vue +154 -0
  109. package/kuasheng-ui/components/ks-org/ks-tree-input.vue +240 -0
  110. package/kuasheng-ui/components/ks-org/ks-tree-node.vue +94 -0
  111. package/kuasheng-ui/components/ks-org/ks-tree.vue +229 -0
  112. package/kuasheng-ui/components/ks-org/utils.js +54 -0
  113. package/kuasheng-ui/components/ks-popover/index.vue +457 -0
  114. package/kuasheng-ui/components/ks-popover/mixin.js +28 -0
  115. package/kuasheng-ui/components/ks-popover/utils.js +60 -0
  116. package/kuasheng-ui/components/ks-pull-refresh/index.vue +43 -0
  117. package/kuasheng-ui/components/ks-quarter/index.vue +256 -0
  118. package/kuasheng-ui/components/ks-table/README.md +103 -0
  119. package/kuasheng-ui/components/ks-table/cell.vue +31 -0
  120. package/kuasheng-ui/components/ks-table/index.js +8 -0
  121. package/kuasheng-ui/components/ks-table/index.less +486 -0
  122. package/kuasheng-ui/components/ks-table/index.vue +1088 -0
  123. package/kuasheng-ui/components/ks-table/package.json +12 -0
  124. package/kuasheng-ui/components/ks-table/release.md +7 -0
  125. package/kuasheng-ui/components/ks-toast.js +35 -0
  126. package/kuasheng-ui/components/ks-upload/index.vue +174 -0
  127. package/kuasheng-ui/components/ks-user-access.vue +229 -0
  128. package/kuasheng-ui/components/no-data/README.md +45 -0
  129. package/kuasheng-ui/components/no-data/image.js +1 -0
  130. package/kuasheng-ui/components/no-data/index.vue +83 -0
  131. package/kuasheng-ui/components/notice-bar.vue +16 -0
  132. package/kuasheng-ui/components/steps.js +11 -0
  133. package/kuasheng-ui/components/tabs.vue +40 -0
  134. package/kuasheng-ui/index.js +239 -0
  135. package/kuasheng-ui/patch/datetime-picker/datetimePicker.md +0 -0
  136. package/kuasheng-ui/patch/datetime-picker/index.js +46 -0
  137. package/kuasheng-ui/patch/datetime-picker/utils.js +78 -0
  138. package/kuasheng-ui/patch/field/field.md +1 -0
  139. package/kuasheng-ui/patch/field/index.js +122 -0
  140. package/kuasheng-ui/patch/field/utils.js +36 -0
  141. package/kuasheng-ui/patch/form/form.md +7 -0
  142. package/kuasheng-ui/patch/form/index.js +106 -0
  143. package/kuasheng-ui/patch/index.js +12 -0
  144. package/kuasheng-ui/patch/pagination/index.js +78 -0
  145. package/kuasheng-ui/style/animation-ui.less +31 -0
  146. package/kuasheng-ui/style/font/number/font-number1.otf +0 -0
  147. package/kuasheng-ui/style/font/number/font-number2.ttf +0 -0
  148. package/kuasheng-ui/style/images/checked.svg +1 -0
  149. package/kuasheng-ui/style/images/success.svg +1 -0
  150. package/kuasheng-ui/style/index.less +6 -0
  151. package/kuasheng-ui/style/kuasheng-ui.less +207 -0
  152. package/kuasheng-ui/style/reset-vant.less +307 -0
  153. package/kuasheng-ui/style/vant-var.less +138 -0
  154. package/kuasheng-ui/utils/apis.js +17 -0
  155. package/kuasheng-ui/utils/axios-adapter.js +47 -0
  156. package/kuasheng-ui/utils/bem.js +39 -0
  157. package/kuasheng-ui/utils/bus.js +97 -0
  158. package/kuasheng-ui/utils/common.js +88 -0
  159. package/kuasheng-ui/utils/decrypt/config.js +12 -0
  160. package/kuasheng-ui/utils/decrypt/decrypt-api.js +139 -0
  161. package/kuasheng-ui/utils/decrypt/index.js +6 -0
  162. package/kuasheng-ui/utils/decrypt/mask.js +36 -0
  163. package/kuasheng-ui/utils/decrypt/virtual.js +44 -0
  164. package/kuasheng-ui/utils/directive.js +57 -0
  165. package/kuasheng-ui/utils/directive.md +23 -0
  166. package/kuasheng-ui/utils/drcheck-plugin.js +219 -0
  167. package/kuasheng-ui/utils/error-plugin.js +88 -0
  168. package/kuasheng-ui/utils/filter.js +149 -0
  169. package/kuasheng-ui/utils/http-interceptors.js +18 -0
  170. package/kuasheng-ui/utils/http.js +140 -0
  171. package/kuasheng-ui/utils/index.js +5 -0
  172. package/kuasheng-ui/utils/init-event.js +20 -0
  173. package/kuasheng-ui/utils/log.js +309 -0
  174. package/kuasheng-ui/utils/token.js +9 -0
  175. package/kuasheng-ui/utils/type.js +45 -0
  176. package/kuasheng-ui/utils/validate.js +20 -0
  177. package/kuasheng-ui/utils/watermark.js +67 -0
  178. package/kuasheng-ui/version.js +1 -0
  179. package/ky-apm/client.js +37 -0
  180. package/ky-apm/customHttp.js +38 -0
  181. package/ky-apm/index.js +68 -0
  182. package/ky-apm/plugins/performance.js +84 -0
  183. package/ky-apm/plugins/self-error.js +26 -0
  184. package/ky-apm/warn-log.js +3 -0
  185. package/package.json +81 -10
  186. package/plugin/ks-chii-webpack-html/index.js +53 -0
  187. package/plugin/ks-chii-webpack-html/package.json +16 -0
  188. package/postcss.config.js +15 -0
  189. package/public/capsule-positon.js +50 -0
  190. package/public/fonts/DingTalkJinBuTi.ttf +0 -0
  191. package/public/framework/axios@0.19.0.min.js +9 -0
  192. package/public/framework/fastclick@1.0.6.min.js +1 -0
  193. package/public/framework/iconfont/iconfont.css +91 -0
  194. package/public/framework/iconfont/iconfont.js +1 -0
  195. package/public/framework/iconfont/iconfont.json +142 -0
  196. package/public/framework/iconfont/iconfont.ttf +0 -0
  197. package/public/framework/iconfont/iconfont.woff +0 -0
  198. package/public/framework/iconfont/iconfont.woff2 +0 -0
  199. package/public/framework/vant@2.5.6.min.js +7 -0
  200. package/public/framework/vue-router@3.1.3.min.js +6 -0
  201. package/public/framework/vue@2.6.10.runtime.min.js +6 -0
  202. package/public/framework/vuex@3.1.1.min.js +6 -0
  203. package/public/index.html +260 -0
  204. package/public/ks@3.0.8.umd.min.js +1 -0
  205. package/public/ksui@4.0.27.umd.min.js +10 -0
  206. package/public/status-bar-preset.js +39 -0
  207. package/{index.js → qt-npm/index.js} +3 -3
  208. package/qt-npm/package.json +13 -0
  209. package/src/App.vue +204 -0
  210. package/src/README.md +15 -0
  211. package/src/common/README.md +94 -0
  212. package/src/common/http/axios-adapter.js +47 -0
  213. package/src/common/http/common.js +88 -0
  214. package/src/common/http/http-interceptors.js +18 -0
  215. package/src/common/http/http-lock.js +45 -0
  216. package/src/common/http/index.js +163 -0
  217. package/src/common/http/token.js +9 -0
  218. package/src/common/styles/font/AlibabaSans102Ver2-Md.ttf +0 -0
  219. package/src/common/styles/font.less +12 -0
  220. package/src/common/styles/variables.less +43 -0
  221. package/src/common/utils/index.js +1 -0
  222. package/src/common/utils/platform/README.md +1 -0
  223. package/src/common/utils/platform/android/.gitkeep +0 -0
  224. package/src/common/utils/platform/core/index.js +24 -0
  225. package/src/common/utils/platform/index.js +164 -0
  226. package/src/common/utils/platform/ios/.gitkeep +0 -0
  227. package/src/common/utils/platform/subscribe/helper.js +38 -0
  228. package/src/common/utils/platform/subscribe/index.js +204 -0
  229. package/src/common/utils/platform/subscribe/table-animation.js +75 -0
  230. package/src/config/index.js +31 -0
  231. package/src/config.js +1 -0
  232. package/src/main.js +73 -0
  233. package/src/router.js +52 -0
  234. package/src/view/home/config.js +101 -0
  235. package/src/view/home/demo1.vue +223 -0
  236. package/src/view/home/demo2.vue +124 -0
  237. package/src/view/home/demo3.vue +51 -0
  238. package/src/view/home/demo4.vue +140 -0
  239. package/src/view/home/index.vue +97 -0
  240. package/src/view/home/query-table/README.md +45 -0
  241. package/src/view/home/query-table/api/index.js +12 -0
  242. package/src/view/home/query-table/assets/horizontal-back.svg +1 -0
  243. package/src/view/home/query-table/components/pe-table/cell.js +181 -0
  244. package/src/view/home/query-table/components/pe-table/collapse.js +334 -0
  245. package/src/view/home/query-table/components/pe-table/empty.vue +48 -0
  246. package/src/view/home/query-table/components/pe-table/header.js +328 -0
  247. package/src/view/home/query-table/components/pe-table/images/abnormal.png +0 -0
  248. package/src/view/home/query-table/components/pe-table/images/empty.png +0 -0
  249. package/src/view/home/query-table/components/pe-table/images/fold.svg +1 -0
  250. package/src/view/home/query-table/components/pe-table/images/sort.svg +1 -0
  251. package/src/view/home/query-table/components/pe-table/images/sorting.svg +1 -0
  252. package/src/view/home/query-table/components/pe-table/images/unfold.svg +1 -0
  253. package/src/view/home/query-table/components/pe-table/index.vue +847 -0
  254. package/src/view/home/query-table/components/pe-table/load-more.js +46 -0
  255. package/src/view/home/query-table/components/pe-table/props/index.js +193 -0
  256. package/src/view/home/query-table/components/pe-table/row.vue +118 -0
  257. package/src/view/home/query-table/components/pe-table/scrollbar.js +424 -0
  258. package/src/view/home/query-table/components/pe-table/stretch-damping.js +112 -0
  259. package/src/view/home/query-table/components/pe-table/style/cell.less +89 -0
  260. package/src/view/home/query-table/components/pe-table/style/empty.less +48 -0
  261. package/src/view/home/query-table/components/pe-table/style/header.less +141 -0
  262. package/src/view/home/query-table/components/pe-table/style/index.less +88 -0
  263. package/src/view/home/query-table/components/pe-table/style/load-more.less +61 -0
  264. package/src/view/home/query-table/components/pe-table/style/row.less +6 -0
  265. package/src/view/home/query-table/components/pe-table/table-loading.vue +120 -0
  266. package/src/view/home/query-table/components/pe-table/table-total.vue +57 -0
  267. package/src/view/home/query-table/components/pe-table/utils/animate.js +80 -0
  268. package/src/view/home/query-table/components/pe-table/utils/columns.js +290 -0
  269. package/src/view/home/query-table/components/pe-table/utils/data.js +12 -0
  270. package/src/view/home/query-table/components/pe-table/utils/fixed.js +69 -0
  271. package/src/view/home/query-table/components/pe-table/utils/formatter.js +327 -0
  272. package/src/view/home/query-table/components/pe-table/utils/render-cells.js +424 -0
  273. package/src/view/home/query-table/components/pe-table/utils/slot.js +28 -0
  274. package/src/view/home/query-table/components/pe-table/utils/tools.js +84 -0
  275. package/src/view/home/query-table/components/pe-table/utils/touch-scroll.js +417 -0
  276. package/src/view/home/query-table/components/query-table/index.vue +497 -0
  277. package/src/view/home/query-table/components/query-table/mixins/column-mixin.js +102 -0
  278. package/src/view/home/query-table/components/query-table/mixins/column-setting.js +143 -0
  279. package/src/view/home/query-table/components/query-table/mixins/data-mixin.js +519 -0
  280. package/src/view/home/query-table/components/query-table/mixins/pagination-mixin.js +26 -0
  281. package/src/view/home/query-table/components/query-table/mixins/table-fixed.js +130 -0
  282. package/src/view/home/query-table/components/query-table/mixins/table-horizontal.js +119 -0
  283. package/src/view/home/query-table/components/table-horizontal.vue +99 -0
  284. package/src/view/home/query-table/components/table-pagination.vue +32 -0
  285. package/src/view/home/query-table/components/table-settings/assets/arrpw-up.svg +1 -0
  286. package/src/view/home/query-table/components/table-settings/assets/disabled-down.svg +1 -0
  287. package/src/view/home/query-table/components/table-settings/assets/disabled-up.svg +1 -0
  288. package/src/view/home/query-table/components/table-settings/assets/down.svg +1 -0
  289. package/src/view/home/query-table/components/table-settings/assets/up.svg +1 -0
  290. package/src/view/home/query-table/components/table-settings/index.less +294 -0
  291. package/src/view/home/query-table/components/table-settings/index.vue +260 -0
  292. package/src/view/home/query-table/components/table-settings/settings.vue +479 -0
  293. package/src/view/home/query-table/components/table-settings/test.js +626 -0
  294. package/src/view/home/query-table/components/table-settings//344/270/252/346/200/247/350/256/276/347/275/256.md +0 -0
  295. package/src/view/home/query-table/components/tooltip.js +124 -0
  296. package/src/view/home/query-table/hooks/use-cache-promise.js +27 -0
  297. package/src/view/home/query-table/hooks/use-column-config.js +190 -0
  298. package/src/view/home/query-table/hooks/use-encryption.js +0 -0
  299. package/src/view/home/query-table/hooks/use-generic-search.js +95 -0
  300. package/src/view/home/query-table/index.js +7 -0
  301. package/src/view/home/query-table/store/column-store.js +0 -0
  302. package/src/view/home/query-table/styles/table.less +24 -0
  303. package/src/view/home/query-table/utils/column.js +36 -0
  304. package/src/view/home/query-table/utils/config.js +12 -0
  305. package/src/view/home/query-table/utils/encryption.js +32 -0
  306. package/src/view/home/query-table/utils/http.js +1 -0
  307. package/src/view/home/query-table/utils/localStorage.js +35 -0
  308. package/src/view/home//351/246/226/351/241/265.md +0 -0
  309. package/src/web.js +99 -0
  310. package/vue.config.js +131 -0
@@ -0,0 +1,497 @@
1
+ <script>
2
+ import 'tippy.js/dist/tippy.css'
3
+ import { initGenericSearch } from '../../hooks/use-generic-search'
4
+ import PeTable from '../pe-table/index.vue'
5
+ import { PE_TABLE_PROPS } from '../pe-table/props/index.js'
6
+ import { tableDecrypt } from '../../utils/encryption.js'
7
+ import { handleShowPopover } from '../tooltip'
8
+ import { getLocalStorageItem, setLocalStorageItem } from '../../utils/localStorage'
9
+
10
+ import columnMixin from './mixins/column-mixin.js' // 表头列配置
11
+ import columnSettingMixin from './mixins/column-setting.js' // 表头列的变更
12
+ import tableHorizontalMixin from './mixins/table-horizontal.js' // 表格横屏
13
+ import tableFixedMixin from './mixins/table-fixed' // 吸顶
14
+ import tableDataMixin from './mixins/data-mixin'
15
+ import TablePagination from '../table-pagination.vue'
16
+ import PaginationMixin from './mixins/pagination-mixin'
17
+
18
+ import '../../styles/table.less'
19
+
20
+ let TABLE_ID = 1
21
+
22
+ export default {
23
+ mixins: [PaginationMixin, columnMixin, columnSettingMixin, tableFixedMixin, tableHorizontalMixin, tableDataMixin],
24
+ name: 'KsQueryTable',
25
+ props: {
26
+ ...PE_TABLE_PROPS,
27
+
28
+ searchCode: String,
29
+ config: {
30
+ type: Object,
31
+ default: () => {
32
+ return {}
33
+ },
34
+ },
35
+
36
+ isSorbentColumm: {
37
+ type: Boolean,
38
+ default: false,
39
+ },
40
+ showSettingDialog: {
41
+ type: Boolean,
42
+ default: true,
43
+ },
44
+ // total: {
45
+ // type: [Number, String],
46
+ // default: 0,
47
+ // },
48
+ // hideColumms: {
49
+ // type: Array,
50
+ // default: () => [],
51
+ // },
52
+ innerTabVisible: {
53
+ type: Boolean,
54
+ default: true,
55
+ },
56
+ marginWidth: {
57
+ type: Number,
58
+ default: 0,
59
+ },
60
+ // 是否需要解密功能,需要配合render渲染***
61
+ decrypt: {
62
+ type: Boolean,
63
+ default: false,
64
+ },
65
+ tableTag: {
66
+ type: String,
67
+ default: '',
68
+ },
69
+ },
70
+ data() {
71
+ return {
72
+ currentPage: 1,
73
+ totalPages: 5,
74
+ total: 0,
75
+
76
+ tableData: null,
77
+ // 是否隐藏底部bar
78
+ isHideBar: true,
79
+ isShowTotal: false,
80
+ onlineColumns: [],
81
+ resizeColumnMap: {},
82
+ tableWidth: this.width,
83
+ tableHeight: this.height,
84
+ // 竖屏-宽
85
+ spTableWidth: 0,
86
+ // 竖屏-高
87
+ spTableHeight: 0,
88
+ // 状态栏高度
89
+ statusHeight: window.__statusBarHeight__ || 0,
90
+ isCurTableEmit: false,
91
+ curTableId: TABLE_ID++,
92
+ tableColunms: [],
93
+ tableIsAbnormal: false,
94
+ isLoading: false,
95
+ loadMoreFinish: false,
96
+ // showPopover: true,
97
+ // containerPopover: '',
98
+ // popRowIndex: 0,
99
+ }
100
+ },
101
+ watch: {
102
+ width: {
103
+ handler(val) {
104
+ if (val) {
105
+ this.tableWidth = val
106
+ }
107
+ },
108
+ },
109
+ height: {
110
+ handler(val) {
111
+ if (val) {
112
+ this.tableHeight = val
113
+ }
114
+ },
115
+ },
116
+ columns: {
117
+ handler(val) {
118
+ if (val) {
119
+ this.setOnlineColumns(val)
120
+ }
121
+ },
122
+ },
123
+ resizeColumnMap: {
124
+ handler() {
125
+ this.onlineColumns.forEach(col => this.mergeColumn(col))
126
+ },
127
+ },
128
+ // 下掉没用
129
+ // 使用function
130
+ // 用refs调进来,不要watch
131
+ // hideColumms: {
132
+ // async handler(val) {
133
+ // if (val) {
134
+ // // TODO 存xy, 重置回去?不使用
135
+ // this.isUpdateOffset = false
136
+ // await this.$nextTick()
137
+ // this.isUpdateOffset = true
138
+ // setTimeout(() => {
139
+ // this.$refs.peTable.updateRender()
140
+ // }, 0)
141
+ // }
142
+ // },
143
+ // },
144
+ // data: {
145
+ // handler() {
146
+ // // TODO 一定要干掉
147
+ // if (!this.onlineColumns || !this.onlineColumns.length) {
148
+ // this.getColumns()
149
+ // }
150
+ // },
151
+ // },
152
+ },
153
+ render() {
154
+ const slot = this.$slots.default ? this.$slots.default[0] : this.$scopedSlots
155
+ const $props = this.$props
156
+
157
+ // 表格
158
+ const createPeTable = () => {
159
+ const peTableAttrs = {
160
+ props: {
161
+ total: this.total,
162
+ columns: this.onlineColumns,
163
+ data: this.tableData || $props.data,
164
+ rowHeight: $props.rowHeight,
165
+ headerRowHeight: $props.headerRowHeight,
166
+ rowKey: $props.rowKey,
167
+ cellClassName: $props.cellClassName,
168
+ headerCellClassName: $props.headerCellClassName,
169
+ showIndex: $props.showIndex,
170
+ beforeSort: $props.beforeSort,
171
+ emptyText: $props.emptyText,
172
+ scrollY: $props.scrollY && this.fixedScrollY,
173
+ scrollX: $props.scrollX,
174
+ autoResetScrollTop: $props.autoResetScrollTop,
175
+ width: this.tableWidth,
176
+ height: this.tableHeight,
177
+ maxHeight: $props.maxHeight,
178
+ isShowHorizontal: this.isShowHorizontal,
179
+ isLoading: this.isLoading,
180
+ isAbnormal: this.tableIsAbnormal,
181
+ // isLoadFinished: $props.isLoadFinished, // TODO 外部转内部
182
+ isLoadFinished: this.loadMoreFinish,
183
+ enableLoadMore: $props.enableLoadMore,
184
+ defaultSort: $props.defaultSort,
185
+ delayLoading: $props.delayLoading || this.innterDelayLoading,
186
+ isOpenTwoHeaderBg: $props.isOpenTwoHeaderBg,
187
+ isSorbentColumm: $props.isSorbentColumm,
188
+ isUpdateOffset: this.isUpdateOffset,
189
+ indexFormat: $props.indexFormat,
190
+ noOneScreenNoShowMore: $props.noOneScreenNoShowMore,
191
+ isScrollShowTotal: $props.isScrollShowTotal,
192
+ overflow: $props.overflow,
193
+ pageForIndex: this.currentPage,
194
+ showPage: $props.showPage,
195
+ isLoadingMore: this.isLoadingMore,
196
+ totalOffset: $props.totalOffset,
197
+ },
198
+ on: {
199
+ 'cell-click': this.cellClick,
200
+ 'header-cell-click': this.headerCellClick,
201
+ 'cell-resize': this.cellResize,
202
+ 'sort-change': this.sortChange,
203
+ collapsed: this.collapedChange,
204
+ scroll: this.scroll,
205
+ scrollTouchend: this.handlerTouchend,
206
+ scrollTouchstar: this.handlerTouchstar,
207
+ 'table-mounted': this.tableMounted,
208
+ abnormal: this.abnormal,
209
+ 'cell-long': this.handleCellLong,
210
+ loadMore: this.loadMore,
211
+ },
212
+ ref: 'peTable',
213
+ scopedSlots: {
214
+ empty: slot['empty'],
215
+ },
216
+ }
217
+ return <PeTable {...peTableAttrs}></PeTable>
218
+ }
219
+
220
+ const createPagination = () => {
221
+ return this.showPage && !this.config.scrollLoad ? (
222
+ <TablePagination
223
+ total-pages={this.totalPages}
224
+ current-page={this.currentPage}
225
+ on={{
226
+ pageChanged: this.onPageChanged,
227
+ }}
228
+ />
229
+ ) : null
230
+ }
231
+ return (
232
+ <div ref="peTableWrappper" class="pe-table-wrappper">
233
+ {this.createTableSetting()}
234
+ {
235
+ <div ref="tableBoxRef" class="table-box">
236
+ {slot.topUnfixed && <div class="top-unfixed">{slot.topUnfixed()}</div>}
237
+ <div class="fixed-box">
238
+ {slot.topFixed && <div class="top-fixed">{slot.topFixed()}</div>}
239
+ <div class="table">
240
+ <div ref="mesosphereWrap" style="height: 100%; width: 100%">
241
+ {createPeTable()}
242
+ </div>
243
+ </div>
244
+ {createPagination()}
245
+ </div>
246
+ </div>
247
+ }
248
+ {this.createHorizontal()}
249
+ </div>
250
+ )
251
+ },
252
+ methods: {
253
+ loadMore() {
254
+ this.loadMoreData()
255
+ },
256
+ // 单元格点击
257
+ async cellClick(...args) {
258
+ let cellClickNext = true
259
+ if (this.decrypt) {
260
+ // 解密
261
+ cellClickNext = await tableDecrypt(...args)
262
+ }
263
+ if (!cellClickNext) return
264
+ // 气泡
265
+ const { show } = await handleShowPopover(...args, this)
266
+ if (show) return
267
+ this.$emit('cell-click', ...args)
268
+ },
269
+ // 调整列宽
270
+ cellResize({ column, width }) {
271
+ this.resizeColumnMap[column.key] = width
272
+ this.saveResizeColumnMap(this.resizeColumnMap)
273
+ },
274
+ // 表头点击
275
+ headerCellClick(...args) {
276
+ this.$emit('header-cell-click', ...args)
277
+ },
278
+ // 单元格长按
279
+ handleCellLong(...args) {
280
+ this.$emit('cell-long', ...args)
281
+ },
282
+ // 自定义列初始化完成
283
+ initColumns(...args) {
284
+ this.$emit('init-columns', ...args)
285
+ },
286
+ // 排序
287
+ sortChange(...args) {
288
+ this.$emit('sort-change', ...args)
289
+ this.loadData(...args)
290
+ },
291
+ // 伸缩列
292
+ collapedChange(...args) {
293
+ this.$emit('collapsed', ...args)
294
+ },
295
+ // 滚动
296
+ scroll(...args) {
297
+ this.fixedTableScroll(...args)
298
+ this.$emit('scroll', ...args)
299
+ },
300
+ // 触摸结束
301
+ handlerTouchend(...args) {
302
+ this.tableScrollPullData(...args)
303
+ this.$emit('scrollTouchend', ...args)
304
+ },
305
+ // 触摸开始
306
+ handlerTouchstar(...args) {
307
+ this.$emit('scrollTouchstar', ...args)
308
+ },
309
+ // 表格加载完成
310
+ tableMounted() {
311
+ this.$emit('table-mounted')
312
+ },
313
+ // 点击重新加载
314
+ abnormal() {
315
+ this.loadData()
316
+ this.$emit('abnormal')
317
+ },
318
+ // 横向滚动到指定列
319
+ scrollToColumn(...args) {
320
+ this.$refs.peTable.scrollToColumn(...args)
321
+ },
322
+ // 滚动到指定行
323
+ scrollToRow(...args) {
324
+ this.$refs.peTable.scrollToRow(...args)
325
+ },
326
+ // Y轴滚动
327
+ scrollToTop(scrollTop) {
328
+ this.$refs.peTable.scrollToTop(scrollTop)
329
+ },
330
+ // X轴滚动
331
+ scrollToLeft(scrollLeft) {
332
+ this.$refs.peTable.scrollToLeft(scrollLeft)
333
+ },
334
+ // 重新渲染视口列
335
+ renderViewportCellsColumns() {
336
+ return this.$refs.peTable.renderViewportCellsColumns()
337
+ },
338
+ // todo 没用下掉
339
+ // delay(ms) {
340
+ // return new Promise(resolve => setTimeout(resolve, ms))
341
+ // },
342
+ // todo 没用下掉
343
+ // 设置HTML文档字体 rem据此设置生效
344
+ // setHtmlFontSize() {
345
+ // // 提前设置,所以用height
346
+ // var clientWidth = document.documentElement.clientHeight
347
+ // if (clientWidth) {
348
+ // let px = clientWidth / 10
349
+ // document.documentElement.style.fontSize = px + 'px'
350
+ // }
351
+ // },
352
+ // 手动调用排序
353
+ sortChangeHand(column, order) {
354
+ this.$refs.peTable.sortChange(column, order)
355
+ },
356
+ // 清除排序状态
357
+ clearSortMap() {
358
+ this.$refs.peTable.clearSortMap()
359
+ },
360
+ resizeTable(params) {
361
+ const { width = 0, state = null } = params || {}
362
+ setTimeout(() => {
363
+ let clientWidth = width || this.$parent.$el.clientWidth
364
+ // 增加兜底,存在获取到的 clientWidth 为 0 的情况
365
+ console.log(width, clientWidth, 'clientWidth------------')
366
+ if (!clientWidth) {
367
+ clientWidth = this.$root.$el.clientWidth || window.webAppW
368
+ }
369
+ this.tableWidth = clientWidth
370
+ // state === 0 折叠
371
+ // state !== 0 展开
372
+ if (state === 2) {
373
+ requestAnimationFrame(() => this.$refs.peTable.scrollToLeft(this.$refs.peTable.offsetX || 0))
374
+ }
375
+ }, 0)
376
+ },
377
+ // 折叠屏状态变更
378
+ onFoldStateChanged(state) {
379
+ // 折叠屏不会触发横屏
380
+ if (window.PE_tableHorizontal) {
381
+ return
382
+ }
383
+ const isMutiScreen = state !== 0
384
+ console.log('onFoldStateChanged', isMutiScreen, this.isShowHorizontal, this.getCurrenWidth(Number(this.isShowHorizontal)))
385
+ if (this.isShowHorizontal && isMutiScreen) {
386
+ this.closeHorizontal()
387
+ }
388
+ this.resizeTable({
389
+ width: this.getCurrenWidth(Number(this.isShowHorizontal)),
390
+ state,
391
+ })
392
+ },
393
+ getCurrenWidth(status) {
394
+ // int 0竖屏(默认)、1横屏
395
+ const { innerWidth, innerHeight } = window
396
+ let width = innerWidth
397
+ if (status === 1) {
398
+ width = Math.max(innerWidth, innerHeight) - this.statusHeight
399
+ } else {
400
+ width = Math.min(innerWidth, innerHeight) - this.marginWidth
401
+ }
402
+ return width
403
+ },
404
+ screenChange(status) {
405
+ if (this.isCurTableEmit) {
406
+ this.isCurTableEmit = false
407
+ return
408
+ }
409
+ this.resizeTable({
410
+ width: this.getCurrenWidth(status),
411
+ status,
412
+ })
413
+ },
414
+ // todo下掉
415
+ // updateColumn(col) {
416
+ // this.onlineColumns.some(v => {
417
+ // if (v.key === col.key) {
418
+ // Object.assign(v, col)
419
+ // return true
420
+ // } else {
421
+ // return false
422
+ // }
423
+ // })
424
+ // },
425
+ // 更新自定义列
426
+ updateColumns(cols) {
427
+ cols.forEach(c => {
428
+ this.onlineColumns.some(v => {
429
+ if (c.key === v.key) {
430
+ Object.assign(v, c)
431
+ return true
432
+ } else {
433
+ return false
434
+ }
435
+ })
436
+ })
437
+ },
438
+
439
+ // 获取本地存储的列宽数据
440
+ async getResizeColumnMap(searchCode = this.searchCode) {
441
+ if (!searchCode) return {}
442
+ const res = await getLocalStorageItem(`pe_table_cell_resize-${ksui.menu.id}-${searchCode}`)
443
+ return res ? JSON.parse(res) : {}
444
+ },
445
+ // 保存列宽数据到本地(App 或 LocalStorage)
446
+ saveResizeColumnMap(columnMap = {}) {
447
+ if (!this.searchCode) return {}
448
+ setLocalStorageItem(`pe_table_cell_resize-${ksui.menu.id}-${this.searchCode}`, JSON.stringify(columnMap))
449
+ return columnMap
450
+ },
451
+ // 清空本地缓存的列宽数据
452
+ clearResizeColumnMap() {
453
+ return this.saveResizeColumnMap()
454
+ },
455
+ checkMenuId() {
456
+ if (!ksui?.menu?.id) {
457
+ console.log('%c[query-table-error] 组件内部未获取到menuId,请检查 ksui.menu.id', 'font-size: 15px; color: red;')
458
+ }
459
+ },
460
+ },
461
+ created() {
462
+ this.checkMenuId()
463
+ // 获取当前菜单下所有自定义列的配置
464
+ initGenericSearch()
465
+ this.getResizeColumnMap().then(map => {
466
+ this.resizeColumnMap = map
467
+ })
468
+ },
469
+ mounted() {
470
+ // this.autoResizeHeight()
471
+ // this.containerPopover = this.$refs.peTableWrappper
472
+ // 下掉 ref调用
473
+ // this.$bus.$on('onFoldStateChanged', this.onFoldStateChanged)
474
+ // this.$bus.$on('screenChange', this.screenChange)
475
+ },
476
+ // todo? 研究下 下掉
477
+ // activated() {
478
+ // setTimeout(() => {
479
+ // console.log('activated--this.$parent.$el.clientWidth', this.$parent.$el.clientWidth)
480
+ // this.resizeTable()
481
+ // }, 100)
482
+ // },
483
+ beforeDestroy() {
484
+ // this._resizeObserver = null
485
+ // this.$bus.$off('onFoldStateChanged', this.onFoldStateChanged)
486
+ // this.$bus.$off('screenChange', this.screenChange)
487
+ },
488
+ }
489
+ </script>
490
+
491
+ <style lang="less" scoped>
492
+ .pe-table-wrappper {
493
+ position: relative;
494
+ height: 100%;
495
+ width: 100%;
496
+ }
497
+ </style>
@@ -0,0 +1,102 @@
1
+ // finish
2
+ import { addColumnParams } from '../../../utils/column.js'
3
+ import { ColUtils, getGeneric } from '../../../hooks/use-column-config.js'
4
+ export default {
5
+ props: {
6
+ needCache: {
7
+ type: Boolean
8
+ },
9
+ // 自定义渲染单元格配置
10
+ rowCellRenderOptions: {
11
+ type: Object,
12
+ default: () => {
13
+ return {
14
+ // one2: (h, { rowData }) => {
15
+ // return <span style={{ 'color': 'red' }}>{rowData.one2}</span>
16
+ // }
17
+ }
18
+ }
19
+ },
20
+ // 自定义渲染表头配置
21
+ headerCellRenderOptions: {
22
+ type: Object,
23
+ default: () => {
24
+ return {
25
+ // one2: (h, { rowData }) => {
26
+ // return <span style={{ 'color': 'red' }}>{rowData.one2}</span>
27
+ // }
28
+ }
29
+ }
30
+ },
31
+ // 强制保存到线上
32
+ forceSaveSettings: {
33
+ type: Boolean,
34
+ default: false
35
+ }
36
+ },
37
+ data() {
38
+ return {
39
+ genericId: ''
40
+ }
41
+ },
42
+ beforeDestroy() {
43
+ this.colUtils = null
44
+ },
45
+ created() {
46
+ this.colUtils = new ColUtils({ mergeColumn: this.mergeColumn })
47
+ if (this.columns && this.columns.length) {
48
+ this.setOnlineColumns(this.columns)
49
+ } else {
50
+ this.getColumns();
51
+ }
52
+ },
53
+ methods: {
54
+ setOnlineColumns(val) {
55
+ this.onlineColumns = addColumnParams(val)
56
+ },
57
+ setColumnsOk(res) {
58
+ if (res) {
59
+ this.setColsToStorage(res)
60
+ this.onlineColumns = res
61
+ this.$emit('init-columns', this.onlineColumns)
62
+ }
63
+ },
64
+ // 获取线上配置
65
+ async getColumns() {
66
+ this.setColumnsOk(await this.colUtils.run(this.searchCode, false))
67
+ },
68
+ mergeColumn(v) {
69
+ if (this.rowCellRenderOptions && this.rowCellRenderOptions[v.key]) {
70
+ v.rowCellRender = this.rowCellRenderOptions[v.key]
71
+ }
72
+ if (this.headerCellRenderOptions && this.headerCellRenderOptions[v.key]) {
73
+ v.headerCellRender = this.headerCellRenderOptions[v.key]
74
+ }
75
+ // 二级表头Formatter
76
+ if (v.children && Array.isArray(v.children)) {
77
+ v.children.forEach(child => {
78
+ if (this.rowCellRenderOptions && this.rowCellRenderOptions[child.key]) {
79
+ child.rowCellRender = this.rowCellRenderOptions[child.key]
80
+ }
81
+ if (this.headerCellRenderOptions && this.headerCellRenderOptions[child.key]) {
82
+ child.headerCellRender = this.headerCellRenderOptions[child.key]
83
+ }
84
+ // 二级头需根据一级头显示/隐藏
85
+ const show = v.show ? !!child.show : false
86
+ this.$set(child, 'show', show)
87
+ })
88
+ }
89
+
90
+ // 如果调整过单元格宽度,则读取本地存储的调整后的值
91
+ const width = this.resizeColumnMap[v.key]
92
+ if (width) {
93
+ v.width = width
94
+ }
95
+ },
96
+ async getGenericId() {
97
+ // 当前菜单的通用查询配置
98
+ let userData = await getGeneric(this.searchCode)
99
+ return userData && userData.id
100
+ },
101
+ },
102
+ }