@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,662 @@
1
+ <template>
2
+ <div class="ks-employee-list-box">
3
+ <div class="ks-employee-list-content" :style="{ height: multiple ? 'calc(100% - 50px)' : '100%' }">
4
+ <div class="history" v-if="historyList.length">
5
+ <div class="title">
6
+ <span>搜索历史</span>
7
+ <img @click="clearAll" src="https://erphostjs.kye-erp.com/kuasheng-h5/assets/ks-employee/delete.png" />
8
+ </div>
9
+ <div class="list-row">
10
+ <div class="row" v-for="(item, index) in historyList" :key="index">
11
+ <div :class="{'row-context': true, 'history-item-disabled': item._disabledItem || historySelected(item)}" @click="selectHistory(item)">
12
+ <slot name="historyListInfo" :item="item">
13
+ <div class="context-left">
14
+ <img class="avatar" :src="item.headUrl + imgSize" />
15
+ <span class="name">{{ item.employeeName }}-{{ item.position }}</span>
16
+ </div>
17
+ <div class="work-context" v-if="item.workingContent">
18
+ <img :src="item.workingIconUrl" />
19
+ {{ item.workingContent }}
20
+ </div>
21
+ <div class="work-status half-pixel-border" v-if="item.workType" :style="workStatusStyle(item)">
22
+ <span class="border-block" :style="workStatusStyle(item)"></span>
23
+ {{ getWorkText(item.workType) }}
24
+ </div>
25
+ </slot>
26
+ <div class="close" @click.stop="deleteRecord(item)">
27
+ <img src="https://erphostjs.kye-erp.com/kuasheng-h5/assets/ks-employee/close.png" />
28
+ </div>
29
+ </div>
30
+ </div>
31
+ </div>
32
+ </div>
33
+ <div class="list" v-else>
34
+ <div class="lis-loading" v-if="loadding">
35
+ <ks-loading size="16px">加载中...</ks-loading>
36
+ </div>
37
+ <div class="cell-box" v-if="searchList.length > 0 && !loadding">
38
+ <div class="cell" v-for="(item, index) in searchList" :key="index" @click="handleSelect(item)">
39
+ <div class="cell-checked" v-if="multiple">
40
+ <img v-if="item._disabledItem" class="radio-icon" src="https://erphostjs.kye-erp.com/kuasheng-h5/assets/ks-employee/disabled-user.png" />
41
+ <img v-else-if="item._isChecked" class="radio-icon" src="https://erphostjs.kye-erp.com/kuasheng-h5/pe/radio-sel.png" />
42
+ <img v-else class="radio-icon" src="https://erphostjs.kye-erp.com/kuasheng-h5/assets/ks-employee/radio.png" />
43
+ </div>
44
+ <img :class="{'employee-img': true, 'employee-img-disabled': item._disabledItem}" :src="item.headUrl + imgSize" alt="" />
45
+ <slot name="employeeListInfo" :item="item">
46
+ <div class="info">
47
+ <div class="info-top">
48
+ <div :class="{'info-name': true, 'info-name-disabled': item._disabledItem}" v-if="item.$name" v-html="item.$name"></div>
49
+ <div class="info-name" v-else>{{ item.employeeName }}</div>
50
+ <div class="info-tag">
51
+ <div class="work-context" v-if="item.workingContent">
52
+ <img :src="item.workingIconUrl" />
53
+ {{ item.workingContent }}
54
+ </div>
55
+ <div class="work-status half-pixel-border" v-if="item.workType" :style="workStatusStyle(item)">
56
+ <span class="border-block" :style="workStatusStyle(item)"></span>
57
+ {{ getWorkText(item.workType) }}
58
+ </div>
59
+ </div>
60
+ </div>
61
+ <div :class="{'info-deparetment': true, 'info-deparetment-disabled': item._disabledItem}" >{{ item.departmentName }}</div>
62
+ </div>
63
+ </slot>
64
+ </div>
65
+ </div>
66
+ <div v-else-if="!searchList.length && isNoData && !loadding" class="no-data-container">
67
+ <img class="no-data" src="https://erphostjs.kye-erp.com/kuasheng-h5/pe/empty-image/NoContent.png" />
68
+ <div>没有找到“<span class="no-data-text-color">{{ inputSearchVal }}</span>”相关结果</div>
69
+ </div>
70
+ </div>
71
+ </div>
72
+ <div class="ks-employee-list-footer" v-if="multiple">
73
+ <div class="select-text" @click="openSelected">
74
+ 已选:
75
+ <div :class="{'select-num':true, 'select-color': selectValue.length > 0}">
76
+ {{ selectValue.length }}
77
+ <span v-if="limit">/{{ limit }}</span>
78
+ </div>
79
+
80
+ </div>
81
+ <van-button type="primary" @click="confirm">完成</van-button>
82
+ </div>
83
+ </div>
84
+ </template>
85
+ <script>
86
+ const Dialog = window.vant && window.vant.Dialog
87
+ export default {
88
+ name: 'ks-employee-list',
89
+ props: {
90
+ showHistory: {
91
+ type: Boolean,
92
+ default: true
93
+ },
94
+ value: {
95
+ type: Array,
96
+ default: () => {
97
+ return []
98
+ }
99
+ },
100
+ // 最大选择数
101
+ limit: Number,
102
+ limitTips: {
103
+ type:String,
104
+ default: '超过最大勾选人数'
105
+ },
106
+ // 菜单id
107
+ menuId: {
108
+ type: String,
109
+ default: ''
110
+ },
111
+ // 是否多选
112
+ multiple: {
113
+ type: Boolean,
114
+ default: false
115
+ },
116
+ // 多选重复添加的提示文案
117
+ repeatText: {
118
+ type: String,
119
+ default: '请勿重复添加'
120
+ },
121
+ selected: {
122
+ type: Function
123
+ },
124
+ historyListHandler: {
125
+ type: Function
126
+ },
127
+ searchListHandler: {
128
+ type: Function
129
+ },
130
+ disabledItemClick: {
131
+ type: Function
132
+ },
133
+ searchParams: {
134
+ type: Object,
135
+ default: () => {},
136
+ }
137
+ },
138
+ data() {
139
+ return {
140
+ imgSize: '?imageView2/1/w/132/h/132/q/90',
141
+ selectValue: this.value,
142
+ historyList: [],
143
+ searchList: [],
144
+ inputSearchVal: '',
145
+ isNoData: false,
146
+ loadding: false,
147
+ workStatusList: []
148
+ }
149
+ },
150
+ watch: {
151
+ value(val) {
152
+ this.selectValue = val
153
+ }
154
+ },
155
+ async mounted() {
156
+ await this.getWorkConfigData()
157
+ await this.getHistory()
158
+ },
159
+ methods: {
160
+ getWorkText(type) {
161
+ const workItem = this.workStatusList && this.workStatusList.find(status => status.workType === type)
162
+ return (workItem && workItem.workTypeWord) || ''
163
+ },
164
+ async getWorkConfigData() {
165
+ const res = await this.$http('kuasheng.ksWorkType.getWorkTypeList', 10184, {})
166
+ this.workStatusList = res
167
+ },
168
+ // ARGB => RGBA
169
+ ArgbtoRgba(color) {
170
+ const parseColorString = function(color) {
171
+ let hex = color.slice(1)
172
+ let a = 1
173
+ if (hex.length === 8) {
174
+ a = parseInt(hex.slice(6), 16) / 255
175
+ hex = hex.slice(0, 6)
176
+ }
177
+ const bigint = parseInt(hex, 16);
178
+ return {
179
+ r: (bigint >> 16) & 255,
180
+ g: (bigint >> 8) & 255,
181
+ b: bigint & 255,
182
+ a,
183
+ }
184
+ }
185
+ const toRgbaString = function (colorObj, n = 10) {
186
+ const { r, g, b, a = 1 } = colorObj
187
+ return `rgba(${r},${g},${b},${Math.floor(a * n ) / n})`
188
+ }
189
+ const rgbaColor = `#${color.slice(3, 9)}${color.slice(1, 3)}`
190
+ const colorObj = parseColorString(rgbaColor)
191
+ return toRgbaString(colorObj)
192
+ },
193
+ workStatusStyle(item) {
194
+ const workStatus = this.workStatusList && this.workStatusList.find(status => status.workType === item.workType)
195
+ return {
196
+ color: workStatus && this.ArgbtoRgba(workStatus.foreColor),
197
+ 'background-color': workStatus && this.ArgbtoRgba(workStatus.bgColor),
198
+ 'border-color': workStatus && this.ArgbtoRgba(workStatus.borderColor)
199
+ }
200
+ },
201
+ async getHistory() {
202
+ if (!this.showHistory) {
203
+ return
204
+ }
205
+ try {
206
+ const list = await this.$http('kuasheng.search.appSearchRecord.list', 10184, {
207
+ menuId: this.menuId
208
+ })
209
+ this.historyList = list
210
+ if (list && list.length) {
211
+ const ids = list.map(item => item.employeeNumber)
212
+ const workList = await this.getWorkData(ids)
213
+ const newList = list.map(item => {
214
+ const workItem = workList.find(work => work.employeeNumber === item.employeeNumber)
215
+ if (workItem) {
216
+ item = { ...item, ...workItem }
217
+ }
218
+ return item
219
+ })
220
+ if (this.historyListHandler && typeof this.historyListHandler === 'function' ) {
221
+ this.historyList = this.historyListHandler(newList)
222
+ } else {
223
+ this.historyList = newList
224
+ }
225
+ }
226
+ this.searchList = []
227
+ } catch (error) {
228
+ console.log(error)
229
+ }
230
+ },
231
+ async getWorkData(ids) {
232
+ if (ids && ids.length) {
233
+ const workDataList = await this.$http('kuasheng.nimTeam.workingContent', 10184, {
234
+ employeeNumbers: ids
235
+ })
236
+ return workDataList
237
+ }
238
+ },
239
+ deleteSelect(item) {
240
+ const hasItem = this.searchList.find(cell => cell.employeeNumber === item.employeeNumber)
241
+ if (hasItem) {
242
+ hasItem._isChecked = false
243
+ }
244
+ },
245
+ async getSearch(val) {
246
+ if (val === '') {
247
+ this.isNoData = false
248
+ this.getHistory()
249
+ return
250
+ }
251
+ try {
252
+ this.inputSearchVal = val
253
+ this.loadding = true
254
+ this.historyList = []
255
+ let res = await this.$http('kuasheng.ksBookVersion.contactSearch', 10184, {
256
+ keywords: val,
257
+ ...this.searchParams,
258
+ })
259
+ this.loadding = false
260
+ const selectNumberArry = this.selectValue.map(v => v.employeeNumber)
261
+ const reg = new RegExp(val, 'gi')
262
+ let listItem =
263
+ res &&
264
+ res.map(item => {
265
+ if (selectNumberArry.includes(item.employeeNumber)) {
266
+ item._isChecked = true
267
+ } else {
268
+ item._isChecked = false
269
+ }
270
+ let $name = item.employeeName && item.employeeName.replace(reg, value => `<span style="color: #165DFF;">${value}</span>`)
271
+ item.$name = $name
272
+ return item
273
+ })
274
+ if (this.searchListHandler && typeof this.searchListHandler === 'function' ) {
275
+ this.searchList = await this.searchListHandler(listItem)
276
+ } else {
277
+ this.searchList = listItem
278
+ }
279
+ const ids = res.map(item => item.employeeNumber)
280
+ if (!this.searchList.length) {
281
+ this.isNoData = true
282
+ }
283
+ const workList = await this.getWorkData(ids)
284
+ if (workList && workList.length) {
285
+ this.searchList =
286
+ this.searchList &&
287
+ this.searchList.map(item => {
288
+ const workItem = workList.find(work => work.employeeNumber === item.employeeNumber)
289
+ if (workItem) {
290
+ item = { ...item, ...workItem }
291
+ }
292
+ return item
293
+ })
294
+ }
295
+ } catch (error) {
296
+ this.loadding = false
297
+ console.log(error)
298
+ }
299
+ },
300
+ selectHistory(item) {
301
+ const selectItem = {
302
+ ...item,
303
+ employeeName: item.position ? `${item.employeeName}-${item.position}` : item.employeeName
304
+ }
305
+ this.handleSelect(selectItem)
306
+ },
307
+ historySelected(item) {
308
+ return this.selectValue.find(i => i.id === item.id)
309
+ },
310
+ async handleSelect(item, type) {
311
+ try {
312
+ console.log(this.$props)
313
+ if (item._disabledItem) {
314
+ this.disabledItemClick && this.disabledItemClick(item)
315
+ return
316
+ }
317
+ const selectCb = this.selected
318
+ if (selectCb && typeof selectCb === 'function') {
319
+ const _selected = await selectCb(item)
320
+ if (_selected === true) {
321
+ return Promise.resolve(false)
322
+ }
323
+ }
324
+ this.$emit('selectItem', item, type)
325
+ if (this.multiple) {
326
+ // 多选
327
+ if (item._isChecked) {
328
+ const itemIndex = this.selectValue.findIndex(cell => cell.employeeNumber === item.employeeNumber)
329
+ item._isChecked = !item._isChecked
330
+ this.selectValue.splice(itemIndex, 1)
331
+ } else {
332
+ const hasItem = this.selectValue.find(cell => cell.employeeNumber === item.employeeNumber)
333
+ if(this.limit && this.selectValue.length >= this.limit){
334
+ window.vant.Toast(this.limitTips)
335
+ return
336
+ }
337
+ if (hasItem) {
338
+ window.vant.Toast(this.repeatText)
339
+ return
340
+ }
341
+ item._isChecked = !item._isChecked
342
+ this.selectValue.push(item)
343
+ this.$emit('input', this.selectValue)
344
+ this.$nextTick(() => {
345
+ // 数组插入后,头像平移到最右边
346
+ this.$emit('_moveHeadRight')
347
+ })
348
+ }
349
+ } else {
350
+ // 单选
351
+ this.selectValue = [item]
352
+ this.confirm()
353
+ }
354
+ } catch (error) {
355
+ console.log(error)
356
+ }
357
+ },
358
+ // 删除记录
359
+ async deleteRecord(item) {
360
+ await this.addHistoryRecord([item], 0)
361
+ await this.getHistory()
362
+ window.vant.Toast('删除成功!')
363
+ },
364
+ async addHistoryRecord(list, type) {
365
+ try {
366
+ if (!list.length) {
367
+ return
368
+ }
369
+ const recordList = list.map(item => {
370
+ return {
371
+ employeeNumber: item.employeeNumber,
372
+ state: type
373
+ }
374
+ })
375
+ await this.$http('kuasheng.search.appSearchRecord.change', 10184, {
376
+ menuId: this.menuId,
377
+ changeDataList: recordList
378
+ })
379
+ } catch (error) {
380
+ console.log(error)
381
+ }
382
+ },
383
+ openSelected() {
384
+ if (this.selectValue.length > 0) {
385
+ this.$emit('openSelect')
386
+ }
387
+ },
388
+ confirm() {
389
+ this.addHistoryRecord(this.selectValue, 1)
390
+ this.getHistory()
391
+ this.$emit('input', this.selectValue)
392
+ this.$emit('confirm', this.selectValue)
393
+ this.$emit('clearInput')
394
+ },
395
+ async clearAll() {
396
+ try {
397
+ Dialog.confirm({
398
+ title:"清空搜索历史",
399
+ message: "确认清空全部搜索历史?"
400
+ }).then(async () => {
401
+ await this.$http('kuasheng.search.appSearchRecord.deleteAll', 10184, {
402
+ menuId: this.menuId
403
+ })
404
+ this.getHistory()
405
+ window.vant.Toast('删除成功!')
406
+ })
407
+ } catch (error) {
408
+ console.log(error)
409
+ }
410
+ }
411
+ }
412
+ }
413
+ </script>
414
+ <style lang="less" scoped>
415
+ .ks-employee-list-box {
416
+ width: 100%;
417
+ height: 100%;
418
+ overflow: hidden;
419
+ box-sizing: border-box;
420
+ }
421
+ .ks-employee-list-content {
422
+ background-color: #f4f6fa;
423
+ overflow: hidden;
424
+ box-sizing: border-box;
425
+ .history {
426
+ height: 100%;
427
+ box-sizing: border-box;
428
+ padding: 10px 16px 6px 16px;
429
+ background-color: #fff;
430
+ .title {
431
+ height: 32px;
432
+ display: flex;
433
+ align-items: center;
434
+ justify-content: space-between;
435
+ color: #1b2240;
436
+ font-weight: 500;
437
+ font-size: 14px;
438
+ img {
439
+ width: 16px;
440
+ height: 16px;
441
+ }
442
+ }
443
+ .list-row {
444
+ max-height: calc(100% - 32px);
445
+ overflow-y: auto;
446
+ -webkit-overflow-scrolling: touch;
447
+ .row {
448
+ height: 34px;
449
+ width: 100%;
450
+ display: flex;
451
+ align-items: center;
452
+ margin-top: 10px;
453
+ &:last-child {
454
+ margin-bottom: 30px;
455
+ }
456
+ .row-context {
457
+ width: 100%;
458
+ display: flex;
459
+ justify-content: space-between;
460
+ align-items: center;
461
+ color: #03050D;
462
+ .context-left {
463
+ display: flex;
464
+ align-items: center;
465
+ flex: 1;
466
+ width: 0;
467
+ .name {
468
+ overflow: hidden;
469
+ text-overflow: ellipsis;
470
+ white-space: nowrap;
471
+ }
472
+ }
473
+ .avatar {
474
+ width: 24px;
475
+ height: 24px;
476
+ border-radius: 4px;
477
+ margin-right: 8px;
478
+ display: inline-block;
479
+ vertical-align: middle;
480
+ }
481
+ .close {
482
+ width: 18px;
483
+ height: 18px;
484
+ border-radius: 50%;
485
+ background-color: #f0f0f5;
486
+ display: flex;
487
+ align-items: center;
488
+ justify-content: center;
489
+ margin-left: 8px;
490
+ img {
491
+ width: 14px;
492
+ height: 14px;
493
+ }
494
+ }
495
+ }
496
+ .history-item-disabled {
497
+ color: #B0B3BF;
498
+ .avatar {
499
+ opacity: 0.6;
500
+ }
501
+ }
502
+ span {
503
+ font-size: 14px;
504
+ vertical-align: middle;
505
+ }
506
+ }
507
+ }
508
+ }
509
+ .list {
510
+ height: 100%;
511
+ font-size: 16px;
512
+ background: #fff;
513
+ overflow-y: auto;
514
+ -webkit-overflow-scrolling: touch;
515
+ .lis-loading {
516
+ text-align: center;
517
+ margin-top: 20px;
518
+ }
519
+ .cell {
520
+ display: flex;
521
+ align-items: center;
522
+ padding: 10px 16px 10px 14px;
523
+ // border-bottom: 1px solid #ebedf5;
524
+ &-checked {
525
+ margin-right: 10px;
526
+ .radio-icon {
527
+ width: 20px;
528
+ height: 20px;
529
+ }
530
+ }
531
+ .employee-img {
532
+ width: 36px;
533
+ height: 36px;
534
+ border-radius: 6px;
535
+ margin-right: 10px;
536
+ }
537
+ .employee-img-disabled {
538
+ opacity: 0.6;
539
+ }
540
+ .info {
541
+ display: flex;
542
+ flex: 1;
543
+ width: 0;
544
+ flex-direction: column;
545
+ justify-content: space-around;
546
+ .info-top {
547
+ display: flex;
548
+ flex: 1;
549
+ flex-direction: row;
550
+ justify-content: space-between;
551
+ .info-tag {
552
+ display: flex;
553
+ flex-direction: row;
554
+ align-items: center;
555
+ flex: none;
556
+ }
557
+ }
558
+ &-name {
559
+ flex: 1;
560
+ color: #03050D;
561
+ font-size: 14px;
562
+ overflow: hidden;
563
+ text-overflow: ellipsis;
564
+ white-space: nowrap;
565
+ }
566
+ &-name-disabled {
567
+ opacity: 0.4;
568
+ }
569
+ &-deparetment {
570
+ font-size: 12px;
571
+ color: #858793;
572
+ }
573
+ &-deparetment-disabled {
574
+ opacity: 0.4;
575
+ }
576
+ }
577
+ }
578
+ .cell:active {
579
+ background-color:#F8f8f8;
580
+ }
581
+ }
582
+ .no-data-container {
583
+ display: flex;
584
+ align-items: center;
585
+ justify-content: center;
586
+ color: #b0b3bf;
587
+ flex-direction: column;
588
+ width: 100%;
589
+ }
590
+ .no-data {
591
+ width: 120px;
592
+ height: 120px;
593
+ &-text-color {
594
+ color: #165DFF;
595
+ }
596
+ }
597
+ .work-status {
598
+ border-radius: 2px;
599
+ font-size: 10px;
600
+ text-align: center;
601
+ line-height: 12px;
602
+ margin-left: 4px;
603
+ //border: 0.5px solid rgba(154, 156, 176, 0.25);
604
+ padding: 2px;
605
+ flex: none;
606
+ }
607
+ .half-pixel-border{
608
+ position: relative;
609
+ .border-block{
610
+ position: absolute;
611
+ width: calc(200% + 1px);
612
+ height: calc(200% + 1px);
613
+ top: -1px;
614
+ left: -1px;
615
+ right: 0;
616
+ bottom: 0;
617
+ border: 1px solid rgba(154, 156, 176, 0.25);
618
+ transform: scale(0.5);
619
+ transform-origin: 0 0;
620
+ border-radius: 4px;
621
+ pointer-events: none; /* 防止覆盖按钮的交互区域 */
622
+ }
623
+ }
624
+ .work-context {
625
+ border-radius: 2px;
626
+ font-size: 10px;
627
+ margin-left: 4px;
628
+ background: rgba(177, 188, 207, 0.1);
629
+ box-shadow: 0 0 0 1px rgba(154, 156, 176, 0.2);
630
+ color: #6e6d72;
631
+ line-height: 12px;
632
+ padding: 2px;
633
+ display: flex;
634
+ flex: none;
635
+ img {
636
+ width: 12px;
637
+ height: 12px;
638
+ margin-right: 2px;
639
+ }
640
+ }
641
+ }
642
+ .ks-employee-list-footer {
643
+ background: #ffffff;
644
+ border-top: 1px solid #e8edf5;
645
+ height: 50px;
646
+ display: flex;
647
+ box-sizing: border-box;
648
+ justify-content: space-between;
649
+ align-items: center;
650
+ padding: 0 16px;
651
+ .select-text {
652
+ display: flex;
653
+ line-height: 18px;
654
+ .select-num {
655
+ font-size: 14px;
656
+ }
657
+ .select-color {
658
+ color: #165DFF;
659
+ }
660
+ }
661
+ }
662
+ </style>