@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,324 @@
1
+ <template>
2
+ <van-action-sheet v-model="show" title="请选择省市区街道" get-container="body" class="ks-area-action-select">
3
+ <div class="ks-area-select">
4
+ <h4>热门城市</h4>
5
+ <div class="hot-city">
6
+ <div class="hot-city__item" v-for="city of cities" :key="city.id">
7
+ <div>
8
+ <van-button @click="handleSelectHot(city)" :class="{ active: selectHotCity === city.id }">
9
+ {{ city.title }}
10
+ </van-button>
11
+ </div>
12
+ </div>
13
+ </div>
14
+ <!-- <h4>省市区街道选择</h4> -->
15
+ <div class="city-select">
16
+ <div class="select-tab">
17
+ <van-grid :border="false">
18
+ <van-grid-item v-for="(item, index) of titles" :key="index" @click="handleChangeTab(index)">
19
+ <div class="select-tab-item__title" :style="{ color: item === '请选择' ? '#165DFF' : '#333', width: `${tabItemWidth}px` }">
20
+ {{ item }}
21
+ <div v-show="item === '请选择'" class="select-tab-item__line"></div>
22
+ </div>
23
+ </van-grid-item>
24
+ </van-grid>
25
+ </div>
26
+ <div class="select-gray"></div>
27
+ <div class="select-list" ref="list">
28
+ <ks-loading class="select-list-loading" v-show="loading" size="24px" vertical></ks-loading>
29
+ <ul v-show="!loading">
30
+ <li v-for="(item, index) of list" :key="item.districtID">
31
+ <div :class="{ active: selectedArea[currentLevel] && item.districtID === selectedArea[currentLevel].id }" @click="handleSelect(item, index)">
32
+ {{ item.districtName || (currentLevel === 1 ? '其他市县' : '') }}
33
+ </div>
34
+ </li>
35
+ </ul>
36
+ </div>
37
+ </div>
38
+ </div>
39
+ </van-action-sheet>
40
+ </template>
41
+
42
+ <script>
43
+ import { hotCity, createTitles } from './hot-city'
44
+
45
+ const levels = ['province', 'city', 'zone', 'street', 'village']
46
+ const debounce = (fn, wait) => {
47
+ let timeout = null
48
+ return function () {
49
+ const t = this
50
+ const args = arguments
51
+ if (timeout) {
52
+ clearTimeout(timeout)
53
+ }
54
+ timeout = setTimeout(() => fn.apply(t, args), wait)
55
+ }
56
+ }
57
+ export default {
58
+ name: 'area-select',
59
+ props: {
60
+ level: {
61
+ type: Number,
62
+ default: 4
63
+ },
64
+ showGAT: {
65
+ type: Boolean,
66
+ default: false
67
+ }
68
+ },
69
+ data() {
70
+ return {
71
+ cities: hotCity(),
72
+ show: false,
73
+ titles: createTitles(this.level),
74
+ list: [],
75
+ selectHotCity: null,
76
+ selectedArea: [],
77
+ currentLevel: 0,
78
+ loading: false
79
+ }
80
+ },
81
+ computed: {
82
+ tabItemWidth() {
83
+ return document.body.clientWidth / this.level - 16
84
+ },
85
+ method() {
86
+ if (this.showGAT) {
87
+ // 支持港澳台数据
88
+ return 'address.regionInfo.getMultiLevelSubListGat'
89
+ }
90
+ return 'system.address.addressBgTerritory.getMultiLevelSubList'
91
+ }
92
+ },
93
+ methods: {
94
+ open(area) {
95
+ this.list = []
96
+ this.selectHotCity = null
97
+ if (area && area.length) {
98
+ this.getAreaList(area.length - 1, area[area.length - 2].id)
99
+ area.forEach((item, index) => {
100
+ if (index === this.titles.length - 1) {
101
+ this.titles[index] = '请选择'
102
+ } else {
103
+ this.titles[index] = item.name
104
+ }
105
+ })
106
+ this.selectedArea = area
107
+ this.currentLevel = 3
108
+ } else {
109
+ this.selectedArea = []
110
+ this.currentLevel = 0
111
+ this.getAreaList(0)
112
+ }
113
+ this.show = true
114
+ },
115
+ getAreaList(level, id) {
116
+ try {
117
+ if (level === 0 && this.province) {
118
+ this.list = this.province
119
+ } else {
120
+ this.loading = true
121
+ const params = {
122
+ districtLevel: levels[level],
123
+ special:'1'
124
+ }
125
+ if (level !== 0) {
126
+ params.commonDistrID = id
127
+ }
128
+ const data = {
129
+ method: this.method,
130
+ id: Math.random()
131
+ .toString()
132
+ .substring(4),
133
+ jsonrpc: '2.0',
134
+ params
135
+ }
136
+ this.$http(this.method, 10124, data).then(res => {
137
+ if (level === 0) {
138
+ this.province = res.districtList
139
+ }
140
+ this.list = res.districtList
141
+ this.$refs.list.scrollTop = 0
142
+ this.loading = false
143
+ })
144
+ }
145
+ } catch (e) {
146
+ console.error(e)
147
+ this.loading = false
148
+ }
149
+ },
150
+ handleChangeTab(index) {
151
+ if (index === 0) {
152
+ this.getAreaList(0)
153
+ this.selectedArea = []
154
+ } else {
155
+ this.getAreaList(index, this.selectedArea[index - 1].id)
156
+ this.selectedArea = this.selectedArea.slice(0, index)
157
+ }
158
+ for (let i = this.titles.length; i--; ) {
159
+ if (i > index) {
160
+ this.titles[i] = ''
161
+ } else if (i === index) {
162
+ this.titles[i] = '请选择'
163
+ }
164
+ }
165
+ this.currentLevel = index
166
+ },
167
+ handleSelect: debounce(function (area) {
168
+ // 优化兼容东莞、中山没有区的数据,选到街道即可完成
169
+ const isStreet = area.districtID.startsWith('XZ4')
170
+ if (this.currentLevel + 1 === this.level || isStreet) {
171
+ if (this.selectedArea.length === this.level) {
172
+ this.selectedArea[this.currentLevel] = {
173
+ id: area.districtID,
174
+ name: area.districtName,
175
+ level: levels[this.currentLevel]
176
+ }
177
+ } else {
178
+ this.selectedArea.push({
179
+ id: area.districtID,
180
+ name: area.districtName,
181
+ level: levels[this.currentLevel]
182
+ })
183
+ }
184
+ this.$emit('select', this.selectedArea)
185
+ this.show = false
186
+ } else if (this.currentLevel + 1 < this.level) {
187
+ let currentLevel = this.currentLevel + 1
188
+ this.getAreaList(currentLevel, area.districtID)
189
+ this.selectedArea.push({
190
+ id: area.districtID,
191
+ name: area.districtName,
192
+ level: levels[this.currentLevel]
193
+ })
194
+ this.titles[this.currentLevel] = area.districtName || '其他市县'
195
+ this.titles[currentLevel] = '请选择'
196
+ this.currentLevel = currentLevel
197
+ }
198
+ }, 300),
199
+ handleSelectHot(city) {
200
+ this.getAreaList(1, city.id)
201
+ this.selectHotCity = city.id
202
+ this.selectedArea = city.value
203
+ this.currentLevel = 2
204
+ for (let i = this.titles.length; i--; ) {
205
+ if (i > 2) {
206
+ this.titles[i] = ''
207
+ } else if (i === 2) {
208
+ this.titles[i] = '请选择'
209
+ } else {
210
+ this.titles[i] = city.value[i].name
211
+ }
212
+ }
213
+ }
214
+ }
215
+ }
216
+ </script>
217
+
218
+ <style lang="less">
219
+ .ks-area-action-select {
220
+ overflow: hidden;
221
+ max-height: 464px;
222
+ .van-action-sheet__header {
223
+ border-bottom: 1px solid #ebedf5;
224
+ background-color: #ffffff;
225
+ }
226
+ }
227
+ .ks-area-select {
228
+ height: 420px;
229
+ overflow: hidden;
230
+ h4 {
231
+ font-size: 12px;
232
+ color: #9f9f9f;
233
+ line-height: 20px;
234
+ padding: 0 0 0 20px;
235
+ margin: 16px 0 0 0;
236
+ }
237
+ .hot-city {
238
+ height: 76px;
239
+ padding: 10px;
240
+ display: flex;
241
+ flex-wrap: wrap;
242
+ &__item {
243
+ width: 25%;
244
+ > div {
245
+ padding: 0 10px;
246
+ height: 42px;
247
+ }
248
+ .van-button {
249
+ top: -14px;
250
+ border-width: 0;
251
+ width: 100%;
252
+ height: 30px;
253
+ border-radius: 4px;
254
+ line-height: 28px;
255
+ // background-color: #f3f4f6;
256
+ background-color: #f7f8fa;
257
+ &.active {
258
+ .van-button__text {
259
+ color: #fff;
260
+ }
261
+ background-color: #165DFF;
262
+ }
263
+ }
264
+ .van-button--normal {
265
+ padding: 0 !important;
266
+ }
267
+ .van-button__text {
268
+ font-size: 14px;
269
+ color: #232323;
270
+ }
271
+ }
272
+ }
273
+ background-color: #fff;
274
+ .select-tab {
275
+ // height: 40px;
276
+ .van-grid-item__content {
277
+ padding: 8px 8px 2px;
278
+ }
279
+ &-item {
280
+ &__title {
281
+ // color: #b0b3bf;
282
+ font-size: 14px;
283
+ font-weight: bold;
284
+ white-space: nowrap;
285
+ overflow: hidden;
286
+ text-overflow: ellipsis;
287
+ text-align: center;
288
+ }
289
+ &__line {
290
+ margin: 0 auto;
291
+ width: 20px;
292
+ height: 2px;
293
+ background-color: #165DFF;
294
+ border-radius: 2px;
295
+ }
296
+ }
297
+ }
298
+ .select-gray {
299
+ width: 100%;
300
+ height: 4px;
301
+ background: #f3f4f6;
302
+ }
303
+ .select-list {
304
+ height: 235px;
305
+ -webkit-overflow-scrolling: touch;
306
+ overflow-y: scroll;
307
+ &-loading {
308
+ height: 100%;
309
+ justify-content: center;
310
+ }
311
+ li {
312
+ font-size: 14px;
313
+ line-height: 40px;
314
+ > div {
315
+ padding-left: 24px;
316
+ &.active {
317
+ color: #165DFF;
318
+ background-color: #f1f0fe;
319
+ }
320
+ }
321
+ }
322
+ }
323
+ }
324
+ </style>
@@ -0,0 +1,269 @@
1
+ <template>
2
+ <van-popup
3
+ :value="value"
4
+ position="bottom"
5
+ get-container="body"
6
+ round
7
+ close-icon-position="top-left"
8
+ close-icon="arrow-left"
9
+ class="ks-calendar-popup"
10
+ :closeable="true"
11
+ @input="handleClosePopup"
12
+ >
13
+ <van-calendar
14
+ :poppable="false"
15
+ :default-date="currentDate"
16
+ :min-date="currentMinDate"
17
+ :class="['ks-calendar', { 'ks-calendar-horizontal': horizontal }]"
18
+ :type="type"
19
+ v-bind="$attrs"
20
+ v-on="$listeners"
21
+ :allow-same-day="true"
22
+ @select="handleSelect"
23
+ >
24
+ <template #title>
25
+ <div class="ks-calendar-header">
26
+ <span class="ks-calendar-header__title">{{ type === 'range' ? '选择范围' : '选择日期' }}</span>
27
+ <span class="ks-calendar-header__daterange">
28
+ {{ dateRangeStr }}
29
+ </span>
30
+ </div>
31
+ </template>
32
+ </van-calendar>
33
+ </van-popup>
34
+ </template>
35
+
36
+ <script>
37
+ const formatDate = date => {
38
+ if (!date) {
39
+ return ''
40
+ }
41
+ let _date = new Date(date)
42
+ let y = _date.getFullYear()
43
+ let m = _date.getMonth() + 1
44
+ m = m < 10 ? '0' + m : m
45
+ let d = _date.getDate()
46
+ d = d < 10 ? '0' + d : d
47
+ return `${y}/${m}/${d}`
48
+ }
49
+
50
+ export default {
51
+ name: 'ks-calendar-range',
52
+ props: {
53
+ value: Boolean,
54
+ minDate: [Object, Date],
55
+ defaultDate: [Array, Date],
56
+ type: {
57
+ type: String,
58
+ default: 'range'
59
+ },
60
+ horizontal: {
61
+ type: Boolean,
62
+ default: false
63
+ }
64
+ },
65
+ data() {
66
+ return {
67
+ currentDate: this.defaultDate
68
+ }
69
+ },
70
+ watch: {
71
+ defaultDate: function() {
72
+ this.currentDate = this.defaultDate
73
+ }
74
+ },
75
+ computed: {
76
+ dateRangeStr() {
77
+ let defaultDate = this.currentDate
78
+ if (this.type === 'range' && Array.isArray(defaultDate) && defaultDate.length === 2) {
79
+ if (defaultDate[1]) {
80
+ return `${formatDate(defaultDate[0])} - ${formatDate(defaultDate[1])}`
81
+ } else {
82
+ return `${formatDate(defaultDate[0])}`
83
+ }
84
+ } else if (this.type === 'single' && defaultDate) {
85
+ return `${formatDate(defaultDate)}`
86
+ }
87
+ return ''
88
+ },
89
+ currentMinDate() {
90
+ if (!this.minDate) {
91
+ let d = new Date()
92
+ let m = d.getMonth() + 1
93
+ let y = d.getFullYear()
94
+ if (m - 6 < 1) {
95
+ return new Date(`${y - 1}/${12 + m - 6}/01`)
96
+ } else {
97
+ return new Date(`${y}/${m - 6}/01`)
98
+ }
99
+ }
100
+ return this.minDate
101
+ }
102
+ },
103
+ methods: {
104
+ handleClosePopup(e) {
105
+ this.$emit('input', e)
106
+ },
107
+ handleSelect(e) {
108
+ this.currentDate = e
109
+ this.$emit('select', e)
110
+ }
111
+ }
112
+ }
113
+ </script>
114
+
115
+ <style lang="less">
116
+ .ks-calendar .van-calendar__day--start::after {
117
+ position: absolute;
118
+ left: 50%;
119
+ top: 0;
120
+ bottom: 0;
121
+ width: 0.71333333rem;
122
+ content: ' ';
123
+ background-color: rgba(0, 108, 219, 0.1);
124
+ }
125
+
126
+ .ks-calendar .van-calendar__day--end::after {
127
+ position: absolute;
128
+ right: 50%;
129
+ top: 0;
130
+ bottom: 0;
131
+ width: 0.71333333rem;
132
+ content: ' ';
133
+ background-color: rgba(0, 108, 219, 0.1);
134
+ }
135
+
136
+ .ks-calendar .van-calendar__day {
137
+ margin-bottom: 6px;
138
+ font-size: 14px;
139
+ }
140
+
141
+ .ks-calendar .van-calendar__selected-day {
142
+ color: #fff;
143
+ background-color: #165DFF;
144
+ border-radius: 50%;
145
+ width: 48px;
146
+ height: 48px;
147
+ // height: calc(100vw / 7);
148
+ margin-bottom: 6px;
149
+ }
150
+
151
+ .ios .ks-calendar-header {
152
+ padding-top: 20px;
153
+ }
154
+
155
+ .ios .ks-calendar-popup .van-calendar__header-title {
156
+ box-sizing: content-box !important;
157
+ padding-bottom: 20px;
158
+ }
159
+
160
+ .ipx .ks-calendar-header {
161
+ padding-top: 44px;
162
+ }
163
+
164
+ .ipx .ks-calendar-popup .van-calendar__header-title {
165
+ box-sizing: content-box !important;
166
+ padding-bottom: 44px;
167
+ }
168
+
169
+ .afc .ks-calendar-header {
170
+ padding-top: var(--status-bar-height, 0px);
171
+ }
172
+
173
+ .afc .ks-calendar-popup .van-calendar__header-title {
174
+ box-sizing: content-box !important;
175
+ padding-bottom: var(--status-bar-height, 0px);
176
+ }
177
+
178
+ .ks-calendar-popup {
179
+ height: 100%;
180
+ .van-popup__close-icon--top-left {
181
+ top: 12px;
182
+ }
183
+ }
184
+
185
+ .ios .ks-calendar-popup .van-popup__close-icon--top-left {
186
+ top: 32px;
187
+ }
188
+
189
+ .ipx .ks-calendar-popup .van-popup__close-icon--top-left {
190
+ top: 56px;
191
+ }
192
+
193
+ .afc .ks-calendar-popup .van-popup__close-icon--top-left {
194
+ top: calc(12px + var(--status-bar-height, 0px));
195
+ }
196
+
197
+ .ks-calendar {
198
+ &-header {
199
+ padding-left: 44px;
200
+ text-align: left;
201
+ &__daterange {
202
+ margin-left: 20px;
203
+ color: #165DFF;
204
+ font-size: 14px;
205
+ }
206
+ }
207
+ .van-calendar {
208
+ &__confirm {
209
+ border-radius: 8px;
210
+ background-color: #165DFF;
211
+ border: 1px solid #165DFF;
212
+ }
213
+ &__day {
214
+ height: calc(100vw / 7);
215
+ &--start,
216
+ &--end {
217
+ border-radius: 50%;
218
+ }
219
+ &--start-end {
220
+ border-radius: 6px;
221
+ }
222
+ }
223
+ &__bottom-info {
224
+ line-height: 10px;
225
+ }
226
+ }
227
+ }
228
+ .ks-calendar-horizontal {
229
+ .van-calendar__day {
230
+ height: 46px;
231
+ }
232
+ .ks-calendar .van-calendar__selected-day {
233
+ height: 46px;
234
+ }
235
+ .van-calendar__selected-day {
236
+ border-radius: 50%;
237
+ height: 46px;
238
+ width: 46px;
239
+ }
240
+ .van-calendar__bottom-info {
241
+ bottom: 4px;
242
+ }
243
+ .van-calendar__header-subtitle {
244
+ height: 20px;
245
+ line-height: 20px;
246
+ margin-top: -16px;
247
+ }
248
+ .van-calendar__weekday {
249
+ line-height: 20px;
250
+ }
251
+ .van-calendar__day {
252
+ margin-bottom: 2px;
253
+ }
254
+ .van-calendar__day--start,
255
+ .van-calendar__day--end {
256
+ background-color: transparent;
257
+ background-size: 46px 46px;
258
+ background-repeat: no-repeat;
259
+ background-image: radial-gradient(closest-side, #165DFF 100%, transparent 100%);
260
+ background-position: 50%;
261
+ }
262
+ }
263
+ .ios .ks-calendar-horizontal {
264
+ .van-calendar__day--start,
265
+ .van-calendar__day--end {
266
+ background-image: -webkit-gradient(radial, 50% 50%, 22, 23 23, 23, from(#165DFF), to(transparent));
267
+ }
268
+ }
269
+ </style>
@@ -0,0 +1,70 @@
1
+ <template>
2
+ <div class="ks-call-tips">
3
+ <div class="ks-call-tips_title">提示</div>
4
+ <div class="ks-call-tips_content">对方目前<span class="ks-call-tips_status"> {{ statusText }} </span>可先留言,如有紧急事项可点击“继续联系”拨打电话</div>
5
+ <div class="ks-call-tips_btn">
6
+ <ks-button type="primary" plain @click="confirmCall">继续联系</ks-button>
7
+ <ks-button type="primary" @click="cancel">取消</ks-button>
8
+ </div>
9
+ </div>
10
+ </template>
11
+ <script>
12
+ export default {
13
+ name: 'KsCallTips',
14
+ props: {
15
+ statusText: {
16
+ type: String,
17
+ default: ''
18
+ }
19
+ },
20
+ data() {
21
+ return {
22
+ }
23
+ },
24
+ methods: {
25
+ cancel () {
26
+ this.$emit('cancel')
27
+ },
28
+ confirmCall() {
29
+ this.$emit('changeCall')
30
+ }
31
+ },
32
+ }
33
+ </script>
34
+ <style lang="less">
35
+ .ks-call-tips {
36
+ padding: 0 18px;
37
+ display: flex;
38
+ justify-items: center;
39
+ align-items: center;
40
+ flex-direction: column;
41
+ font-size: 16px;
42
+ &_title {
43
+ font-size: 18px;
44
+ margin-top: 30px;
45
+ color: #181818;
46
+ font-weight: 500;
47
+ }
48
+ &_status {
49
+ color: #165DFF;
50
+ }
51
+ &_content {
52
+ margin-top: 28px;
53
+ line-height: 28px;
54
+ color: #03050d;
55
+ }
56
+ &_btn {
57
+ width: 100%;
58
+ display: flex;
59
+ flex-direction: row;
60
+ justify-content: space-between;
61
+ margin-top: 26px;
62
+ margin-bottom: 30px;
63
+ .van-button {
64
+ width: 44%;
65
+ height: 40px;
66
+ border-radius: 8px;
67
+ }
68
+ }
69
+ }
70
+ </style>