n20-common-lib 1.3.9 → 1.3.12

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 (287) hide show
  1. package/nstc-g6/assets/svg/404.svg +1 -0
  2. package/nstc-g6/assets/svg/addFile.svg +32 -0
  3. package/nstc-g6/assets/svg/bug.svg +1 -0
  4. package/nstc-g6/assets/svg/chart.svg +1 -0
  5. package/nstc-g6/assets/svg/clipboard.svg +1 -0
  6. package/nstc-g6/assets/svg/component.svg +1 -0
  7. package/nstc-g6/assets/svg/dashboard.svg +1 -0
  8. package/nstc-g6/assets/svg/deleteFile.svg +28 -0
  9. package/nstc-g6/assets/svg/documentation.svg +1 -0
  10. package/nstc-g6/assets/svg/drag.svg +1 -0
  11. package/nstc-g6/assets/svg/edit.svg +1 -0
  12. package/nstc-g6/assets/svg/education.svg +1 -0
  13. package/nstc-g6/assets/svg/email.svg +1 -0
  14. package/nstc-g6/assets/svg/example.svg +1 -0
  15. package/nstc-g6/assets/svg/excel.svg +1 -0
  16. package/nstc-g6/assets/svg/exit-fullscreen.svg +1 -0
  17. package/nstc-g6/assets/svg/eye-open.svg +1 -0
  18. package/nstc-g6/assets/svg/eye.svg +1 -0
  19. package/nstc-g6/assets/svg/favorite.svg +1 -0
  20. package/nstc-g6/assets/svg/favorite_active.svg +1 -0
  21. package/nstc-g6/assets/svg/favorite_x400.svg +1 -0
  22. package/nstc-g6/assets/svg/favorite_x400_active.svg +1 -0
  23. package/nstc-g6/assets/svg/favorite_x400_blank.svg +1 -0
  24. package/nstc-g6/assets/svg/filter.svg +16 -0
  25. package/nstc-g6/assets/svg/filter@2x.png +0 -0
  26. package/nstc-g6/assets/svg/filterActive.svg +16 -0
  27. package/nstc-g6/assets/svg/filterClose@2x.png +0 -0
  28. package/nstc-g6/assets/svg/form.svg +1 -0
  29. package/nstc-g6/assets/svg/fullscreen.svg +1 -0
  30. package/nstc-g6/assets/svg/guide.svg +1 -0
  31. package/nstc-g6/assets/svg/hourglass.svg +19 -0
  32. package/nstc-g6/assets/svg/icon.svg +1 -0
  33. package/nstc-g6/assets/svg/international.svg +1 -0
  34. package/nstc-g6/assets/svg/language.svg +1 -0
  35. package/nstc-g6/assets/svg/left-dis.svg +1 -0
  36. package/nstc-g6/assets/svg/left.svg +1 -0
  37. package/nstc-g6/assets/svg/link.svg +1 -0
  38. package/nstc-g6/assets/svg/list.svg +1 -0
  39. package/nstc-g6/assets/svg/lock.svg +1 -0
  40. package/nstc-g6/assets/svg/message-t.svg +1 -0
  41. package/nstc-g6/assets/svg/money.svg +1 -0
  42. package/nstc-g6/assets/svg/money3.svg +1 -0
  43. package/nstc-g6/assets/svg/money4.svg +1 -0
  44. package/nstc-g6/assets/svg/moneyTwo.svg +1 -0
  45. package/nstc-g6/assets/svg/msg_white.svg +1 -0
  46. package/nstc-g6/assets/svg/nested.svg +1 -0
  47. package/nstc-g6/assets/svg/newsearch.svg +19 -0
  48. package/nstc-g6/assets/svg/password.svg +1 -0
  49. package/nstc-g6/assets/svg/pdf.svg +1 -0
  50. package/nstc-g6/assets/svg/people.svg +1 -0
  51. package/nstc-g6/assets/svg/peoples.svg +1 -0
  52. package/nstc-g6/assets/svg/phone.svg +1 -0
  53. package/nstc-g6/assets/svg/phone_msg.svg +1 -0
  54. package/nstc-g6/assets/svg/qq.svg +1 -0
  55. package/nstc-g6/assets/svg/right-dis.svg +1 -0
  56. package/nstc-g6/assets/svg/right.svg +1 -0
  57. package/nstc-g6/assets/svg/search.svg +1 -0
  58. package/nstc-g6/assets/svg/searchActive.svg +19 -0
  59. package/nstc-g6/assets/svg/shopping.svg +1 -0
  60. package/nstc-g6/assets/svg/size.svg +1 -0
  61. package/nstc-g6/assets/svg/skill.svg +1 -0
  62. package/nstc-g6/assets/svg/star.svg +1 -0
  63. package/nstc-g6/assets/svg/steam.svg +1 -0
  64. package/nstc-g6/assets/svg/tab.svg +1 -0
  65. package/nstc-g6/assets/svg/table.svg +1 -0
  66. package/nstc-g6/assets/svg/theme.svg +1 -0
  67. package/nstc-g6/assets/svg/tree-table.svg +1 -0
  68. package/nstc-g6/assets/svg/tree.svg +1 -0
  69. package/nstc-g6/assets/svg/user.svg +1 -0
  70. package/nstc-g6/assets/svg/wechat.svg +1 -0
  71. package/nstc-g6/assets/svg/z-left-2-dis.svg +1 -0
  72. package/nstc-g6/assets/svg/z-left-2.svg +1 -0
  73. package/nstc-g6/assets/svg/z-right-2-dis.svg +1 -0
  74. package/nstc-g6/assets/svg/z-right-2.svg +1 -0
  75. package/nstc-g6/assets/svg/z-right.svg +1 -0
  76. package/nstc-g6/assets/svg/zip.svg +1 -0
  77. package/nstc-g6/components/Calendar/index.js +8 -0
  78. package/nstc-g6/components/Calendar/src/basic/month-table.vue +129 -0
  79. package/nstc-g6/components/Calendar/src/basic/year-table.vue +126 -0
  80. package/nstc-g6/components/Calendar/src/main.vue +442 -0
  81. package/nstc-g6/components/DialogForm/index.js +8 -0
  82. package/nstc-g6/components/DialogForm/src/demo/index.vue +56 -0
  83. package/nstc-g6/components/DialogForm/src/main.vue +189 -0
  84. package/nstc-g6/components/Form/A_DEMO/component/originalForm.vue +281 -0
  85. package/nstc-g6/components/Form/A_DEMO/config/config_3.js +1222 -0
  86. package/nstc-g6/components/Form/A_DEMO/index.vue +803 -0
  87. package/nstc-g6/components/Form/AutocompleteCustom/index.vue +72 -0
  88. package/nstc-g6/components/Form/BusinessSpecific/InputMultiple.vue +191 -0
  89. package/nstc-g6/components/Form/BusinessSpecific/InputWithUnit.vue +128 -0
  90. package/nstc-g6/components/Form/BusinessSpecific/SelectTreeDialog.vue +233 -0
  91. package/nstc-g6/components/Form/BusinessSpecific/readme.md +7 -0
  92. package/nstc-g6/components/Form/CascaderCustom/index.vue +101 -0
  93. package/nstc-g6/components/Form/CheckboxCustom/index.vue +84 -0
  94. package/nstc-g6/components/Form/Component.vue +661 -0
  95. package/nstc-g6/components/Form/ComponentSecond.vue +650 -0
  96. package/nstc-g6/components/Form/DatepickerCustom/index.vue +130 -0
  97. package/nstc-g6/components/Form/InputAndDialog/index.js +15 -0
  98. package/nstc-g6/components/Form/InputAndDialog/src/main.vue +395 -0
  99. package/nstc-g6/components/Form/InputCustom/demo/index.vue +65 -0
  100. package/nstc-g6/components/Form/InputCustom/index.vue +307 -0
  101. package/nstc-g6/components/Form/IntervalinputCustom/demo/index.vue +31 -0
  102. package/nstc-g6/components/Form/IntervalinputCustom/index.vue +118 -0
  103. package/nstc-g6/components/Form/Item.vue +330 -0
  104. package/nstc-g6/components/Form/ItemSecond.vue +269 -0
  105. package/nstc-g6/components/Form/List.vue +146 -0
  106. package/nstc-g6/components/Form/ListSecond.vue +130 -0
  107. package/nstc-g6/components/Form/RadioCustom/index.vue +73 -0
  108. package/nstc-g6/components/Form/SelectAccount/index.js +15 -0
  109. package/nstc-g6/components/Form/SelectAccount/src/demo/index.vue +58 -0
  110. package/nstc-g6/components/Form/SelectAccount/src/main.vue +283 -0
  111. package/nstc-g6/components/Form/SelectAndDialog/index.js +15 -0
  112. package/nstc-g6/components/Form/SelectAndDialog/src/main.vue +384 -0
  113. package/nstc-g6/components/Form/SelectCashFlow/index.js +15 -0
  114. package/nstc-g6/components/Form/SelectCashFlow/src/demo/index.vue +42 -0
  115. package/nstc-g6/components/Form/SelectCashFlow/src/main.vue +126 -0
  116. package/nstc-g6/components/Form/SelectCustom/demo/index.vue +82 -0
  117. package/nstc-g6/components/Form/SelectCustom/index.vue +488 -0
  118. package/nstc-g6/components/Form/SelectSubject/index.js +15 -0
  119. package/nstc-g6/components/Form/SelectSubject/src/demo/index.vue +85 -0
  120. package/nstc-g6/components/Form/SelectSubject/src/main.vue +182 -0
  121. package/nstc-g6/components/Form/SelectindialogCustom/demo/index.vue +188 -0
  122. package/nstc-g6/components/Form/SelectindialogCustom/index.vue +650 -0
  123. package/nstc-g6/components/Form/SelectindialogCustom/install.js +7 -0
  124. package/nstc-g6/components/Form/TableRadioCustom/demo/index.vue +53 -0
  125. package/nstc-g6/components/Form/TableRadioCustom/index.vue +183 -0
  126. package/nstc-g6/components/Form/TextCustom/index.vue +38 -0
  127. package/nstc-g6/components/Form/UploadCustom/demo/index.vue +31 -0
  128. package/nstc-g6/components/Form/UploadCustom/iconxitongshezhi-yichu.png +0 -0
  129. package/nstc-g6/components/Form/UploadCustom/index.vue +506 -0
  130. package/nstc-g6/components/Form/configs.js +191 -0
  131. package/nstc-g6/components/Form/configsSecond.js +161 -0
  132. package/nstc-g6/components/Form/index.js +8 -0
  133. package/nstc-g6/components/Form/index.scss +29 -0
  134. package/nstc-g6/components/Form/payeePersonSelect/index.js +15 -0
  135. package/nstc-g6/components/Form/payeePersonSelect/src/demo/index.vue +164 -0
  136. package/nstc-g6/components/Form/payeePersonSelect/src/main.vue +185 -0
  137. package/nstc-g6/components/Form/readme.txt +4 -0
  138. package/nstc-g6/components/FormGroup/index.js +8 -0
  139. package/nstc-g6/components/FormGroup/src/demo/config.js +23 -0
  140. package/nstc-g6/components/FormGroup/src/demo/index.vue +85 -0
  141. package/nstc-g6/components/FormGroup/src/main.vue +639 -0
  142. package/nstc-g6/components/FormGroup/src/validate.js +23 -0
  143. package/nstc-g6/components/InputTag/InputTag.vue +270 -0
  144. package/nstc-g6/components/NstcApprovel/NstcApprovel.vue +24 -0
  145. package/nstc-g6/components/NstcBackToTop/NstcBackToTop.vue +150 -0
  146. package/nstc-g6/components/NstcBranchLazyLoad/NstcBranchLazyLoad.vue +123 -0
  147. package/nstc-g6/components/NstcCharts/NstcCharts.vue +162 -0
  148. package/nstc-g6/components/NstcCharts/define.js +74 -0
  149. package/nstc-g6/components/NstcCharts/mixins/resize.js +56 -0
  150. package/nstc-g6/components/NstcConfirm/NstcConfirm.vue +152 -0
  151. package/nstc-g6/components/NstcConfirm/index.js +25 -0
  152. package/nstc-g6/components/NstcDialog/NstcDialog.vue +185 -0
  153. package/nstc-g6/components/NstcDialogForm/NstcDialogForm.vue +176 -0
  154. package/nstc-g6/components/NstcDialogTable/NstcDialogTable.vue +280 -0
  155. package/nstc-g6/components/NstcDropdown/NstcDropdown.vue +52 -0
  156. package/nstc-g6/components/NstcDropdownTree/NstcDropdownTree.vue +396 -0
  157. package/nstc-g6/components/NstcElectronicFile/NstcElectronicFile.vue +591 -0
  158. package/nstc-g6/components/NstcExcelCustomImport/NstcExcelCustomImport.vue +475 -0
  159. package/nstc-g6/components/NstcExcelCustomImport/img/upload@2x.png +0 -0
  160. package/nstc-g6/components/NstcExcelExport/NstcExcelExport.vue +145 -0
  161. package/nstc-g6/components/NstcExcelImport/NstcExcelImport.vue +1074 -0
  162. package/nstc-g6/components/NstcExcelImport/img/upload@2x.png +0 -0
  163. package/nstc-g6/components/NstcExcelImportN/NstcExcelImportN.vue +1166 -0
  164. package/nstc-g6/components/NstcExpandCollapse/NstcExpandCollapse.vue +130 -0
  165. package/nstc-g6/components/NstcExpandCollapse/index.scss +77 -0
  166. package/nstc-g6/components/NstcFileUpload/NstcFileUpload.vue +989 -0
  167. package/nstc-g6/components/NstcFileUpload/img/addFile.svg +32 -0
  168. package/nstc-g6/components/NstcFileUpload/img/delete.svg +24 -0
  169. package/nstc-g6/components/NstcFileUpload/img/deleteFile.svg +28 -0
  170. package/nstc-g6/components/NstcFileUpload/img/download.svg +24 -0
  171. package/nstc-g6/components/NstcFileUpload/img/inputUpload.svg +30 -0
  172. package/nstc-g6/components/NstcFileUpload/img/look-diabled.svg +24 -0
  173. package/nstc-g6/components/NstcFileUpload/img/look.svg +24 -0
  174. package/nstc-g6/components/NstcForm/A_DEMO/component/originalForm.vue +281 -0
  175. package/nstc-g6/components/NstcForm/A_DEMO/config/config_3.js +1222 -0
  176. package/nstc-g6/components/NstcForm/A_DEMO/index.vue +796 -0
  177. package/nstc-g6/components/NstcForm/AutocompleteCustom/index.vue +68 -0
  178. package/nstc-g6/components/NstcForm/BusinessSpecific/InputMultiple.vue +189 -0
  179. package/nstc-g6/components/NstcForm/BusinessSpecific/InputWithUnit.vue +128 -0
  180. package/nstc-g6/components/NstcForm/BusinessSpecific/SelectTreeDialog.vue +233 -0
  181. package/nstc-g6/components/NstcForm/BusinessSpecific/readme.md +7 -0
  182. package/nstc-g6/components/NstcForm/CascaderCustom/index.vue +101 -0
  183. package/nstc-g6/components/NstcForm/CheckboxCustom/index.vue +84 -0
  184. package/nstc-g6/components/NstcForm/Component.vue +684 -0
  185. package/nstc-g6/components/NstcForm/ComponentSecond.vue +650 -0
  186. package/nstc-g6/components/NstcForm/DatepickerCustom/index.vue +130 -0
  187. package/nstc-g6/components/NstcForm/InputAndDialog/NstcInputAndDialog.vue +389 -0
  188. package/nstc-g6/components/NstcForm/InputCustom/index.vue +314 -0
  189. package/nstc-g6/components/NstcForm/IntervalInputCustom/index.vue +116 -0
  190. package/nstc-g6/components/NstcForm/Item.vue +327 -0
  191. package/nstc-g6/components/NstcForm/ItemSecond.vue +269 -0
  192. package/nstc-g6/components/NstcForm/List.vue +146 -0
  193. package/nstc-g6/components/NstcForm/ListSecond.vue +130 -0
  194. package/nstc-g6/components/NstcForm/RadioCustom/index.vue +73 -0
  195. package/nstc-g6/components/NstcForm/SelectAccount/NstcSelectAccount.vue +334 -0
  196. package/nstc-g6/components/NstcForm/SelectAndDialog/NstcSelectAndDialog.vue +377 -0
  197. package/nstc-g6/components/NstcForm/SelectCashFlow/NstcSelectCashFlow.vue +123 -0
  198. package/nstc-g6/components/NstcForm/SelectCustom/index.vue +460 -0
  199. package/nstc-g6/components/NstcForm/SelectSubject/NstcSelectSubject.vue +185 -0
  200. package/nstc-g6/components/NstcForm/SelectindialogCustom/index.vue +648 -0
  201. package/nstc-g6/components/NstcForm/TableRadioCustom/index.vue +183 -0
  202. package/nstc-g6/components/NstcForm/TextCustom/index.vue +38 -0
  203. package/nstc-g6/components/NstcForm/UploadCustom/iconxitongshezhi-yichu.png +0 -0
  204. package/nstc-g6/components/NstcForm/UploadCustom/index.vue +500 -0
  205. package/nstc-g6/components/NstcForm/configs.js +191 -0
  206. package/nstc-g6/components/NstcForm/configsSecond.js +161 -0
  207. package/nstc-g6/components/NstcForm/index.js +8 -0
  208. package/nstc-g6/components/NstcForm/index.scss +29 -0
  209. package/nstc-g6/components/NstcForm/payeePersonSelect/NstcPayeePerson.vue +188 -0
  210. package/nstc-g6/components/NstcForm/readme.txt +4 -0
  211. package/nstc-g6/components/NstcPagination/NstcPagination.vue +428 -0
  212. package/nstc-g6/components/NstcPagination/setPageNum.png +0 -0
  213. package/nstc-g6/components/NstcPagination/setpagedefault.png +0 -0
  214. package/nstc-g6/components/NstcScreenFull/NstcScreenFull.vue +70 -0
  215. package/nstc-g6/components/NstcSelectTree/NstcSelectTree.vue +729 -0
  216. package/nstc-g6/components/NstcSelectTreeList/NstcSelectTreeList.vue +676 -0
  217. package/nstc-g6/components/NstcSticky/NstcSticky.vue +97 -0
  218. package/nstc-g6/components/NstcSvgIcon/NstcSvgIcon.vue +72 -0
  219. package/nstc-g6/components/NstcTab/NstcTab.vue +80 -0
  220. package/nstc-g6/components/NstcTabWithBadge/NstcTabWithBadge.vue +45 -0
  221. package/nstc-g6/components/NstcTabWithBadge/index.scss +31 -0
  222. package/nstc-g6/components/NstcTable/ElTableColumnCustom/index.vue +292 -0
  223. package/nstc-g6/components/NstcTable/NstcTable.vue +460 -0
  224. package/nstc-g6/components/NstcTableSet/NstcTableSet.vue +801 -0
  225. package/nstc-g6/components/NstcThemePicker/NstcThemePicker.vue +186 -0
  226. package/nstc-g6/components/NstcUploadCustomExcel/NstcUploadCustomExcel.vue +330 -0
  227. package/nstc-g6/components/NstcUploadExcel/NstcUploadExcel.vue +145 -0
  228. package/nstc-g6/components/NstcWorkBench/NstcWorkBench.vue +176 -0
  229. package/nstc-g6/components/Search/NstcSearch.vue +583 -0
  230. package/nstc-g6/components/Search/src/demo/index copy.vue +101 -0
  231. package/nstc-g6/components/Search/src/demo/index.vue +103 -0
  232. package/nstc-g6/components/Search/src/main copy.vue +607 -0
  233. package/nstc-g6/components/approvelTwo/main.vue +220 -0
  234. package/nstc-g6/components/approvelTwo/progress.vue +154 -0
  235. package/nstc-g6/directives/VCopy/index.js +60 -0
  236. package/nstc-g6/directives/VNstcNumber/index.js +14 -0
  237. package/nstc-g6/directives/VNstcNumber/temp.js +446 -0
  238. package/nstc-g6/index.js +193 -0
  239. package/nstc-g6/utils/auth.js +2 -0
  240. package/nstc-g6/utils/axios.js +2 -0
  241. package/nstc-g6/utils/dateAndValidator.js +649 -0
  242. package/nstc-g6/utils/debounce.js +40 -0
  243. package/nstc-g6/utils/parseTime.js +48 -0
  244. package/nstc-g6/utils/validate/index.js +7 -0
  245. package/nstc-g6/utils/vendor/Export2Excel.js +229 -0
  246. package/nstc-g6/utils/vendor/Export2Zip.js +24 -0
  247. package/nstc-g6/utils/vue-bus.js +5 -0
  248. package/package.json +9 -2
  249. package/src/assets/css/_coreLib.scss +9 -1
  250. package/src/assets/css/element-variables.scss +1 -1
  251. package/src/components/ChildRange/index.vue +2 -37
  252. package/src/components/ChildRange/style.scss +34 -0
  253. package/src/components/FileImport/index.vue +3 -1
  254. package/src/components/PageHeader/index.vue +2 -44
  255. package/src/components/PageHeader/style.scss +39 -0
  256. package/src/components/Search/index.vue +1 -97
  257. package/src/components/Search/style.scss +93 -0
  258. package/src/components/Table/ThSelectHeader.vue +2 -11
  259. package/src/components/Table/index.vue +4 -2
  260. package/src/directives/VTitle/index.js +14 -17
  261. package/style/css/normalize.scss +6 -6
  262. package/style/index.css +3 -3
  263. package/style/index.css.map +1 -1
  264. package/style/server-config.jsonc +527 -410
  265. package/treme/blue.css +3 -0
  266. package/treme/blue.umd.min.js +1 -0
  267. package/treme/css/normalize.scss +726 -0
  268. package/treme/fonts/element-icons.535877f5.woff +0 -0
  269. package/treme/fonts/element-icons.732389de.ttf +0 -0
  270. package/treme/fonts/iconfont.022f36c4.woff2 +0 -0
  271. package/treme/fonts/iconfont.4a1b2c93.woff +0 -0
  272. package/treme/fonts/iconfont.a9febaa2.ttf +0 -0
  273. package/treme/green.css +3 -0
  274. package/treme/green.umd.min.js +1 -0
  275. package/treme/lightBlue.css +3 -0
  276. package/treme/lightBlue.umd.min.js +1 -0
  277. package/treme/orange.css +3 -0
  278. package/treme/orange.umd.min.js +1 -0
  279. package/treme/pageDemo/demo-1.vue +131 -0
  280. package/treme/pageDemo/demo-2.vue +35 -0
  281. package/treme/pageDemo/demo-3.vue +22 -0
  282. package/treme/pageDemo/seeCode.js +20 -0
  283. package/treme/red.css +3 -0
  284. package/treme/red.umd.min.js +1 -0
  285. package/treme/server-config.jsonc +723 -0
  286. package/treme/yellow.css +3 -0
  287. package/treme/yellow.umd.min.js +1 -0
@@ -0,0 +1,649 @@
1
+ const quarter = {
2
+ 1: ['01-01', '03-31'],
3
+ 2: ['04-01', '06-30'],
4
+ 3: ['07-01', '09-30'],
5
+ 4: ['10-01', '12-31']
6
+ }
7
+
8
+ export const VALIDATE_ERROR = 'VALIDATE_ERROR'
9
+
10
+ const NOT_EMPTY = {
11
+ type: VALIDATE_ERROR,
12
+ msg: '选择时间不能为空 '
13
+ }
14
+ const MAX_DATE_MSG = (limit) => ({
15
+ type: VALIDATE_ERROR,
16
+ msg: `最长可查询${limit}个月的数据`
17
+ })
18
+
19
+ const MAX_WEEK_MSG = (limit) => ({
20
+ type: VALIDATE_ERROR,
21
+ msg: `最长可查询${limit}周的数据`
22
+ })
23
+
24
+ const MAX_MONTH_MSG = (limit) => ({
25
+ type: VALIDATE_ERROR,
26
+ msg: `最长可查询${limit}个月数据`
27
+ })
28
+ const MAX_QUARTER_MSG = (limit) => ({
29
+ type: VALIDATE_ERROR,
30
+ msg: `最长可查询${limit}个季度的数据`
31
+ })
32
+ const MAX_YEAR_MSG = (limit) => ({
33
+ type: VALIDATE_ERROR,
34
+ msg: `最长可查询${limit}年的数据`
35
+ })
36
+
37
+ export default {
38
+ generate: {
39
+ latestDateRange(limit = 6) {
40
+ const now = new Date()
41
+ const year = now.getFullYear()
42
+ const month = now.getMonth() + 1
43
+ const day = now.getDate()
44
+
45
+ let sixMonthBefore = {}
46
+
47
+ if (month >= limit) {
48
+ sixMonthBefore = {
49
+ year,
50
+ month: month - limit + 1,
51
+ day: '01'
52
+ }
53
+ } else {
54
+ sixMonthBefore = {
55
+ year: year - 1,
56
+ month: 12 - (limit - month) + 1,
57
+ day: '01'
58
+ }
59
+ }
60
+
61
+ return [
62
+ `${sixMonthBefore.year}-${formatDig(sixMonthBefore.month)}-01`,
63
+ `${year}-${formatDig(month)}-${formatDig(day)}`
64
+ ]
65
+ },
66
+
67
+ latestMonthDayRange(range = 6) {
68
+ const date = new Date()
69
+
70
+ const endYear = date.getFullYear()
71
+ const endMonth = date.getMonth() + 1
72
+ const endDay = date.getDate()
73
+
74
+ let startYear = endYear
75
+ let startMonth = endMonth - range
76
+ let startDay = endDay
77
+
78
+ if (startMonth === 0) {
79
+ startMonth = 1
80
+ } else if (startMonth <= 0) {
81
+ startMonth += 12
82
+ startYear--
83
+ }
84
+
85
+ if (startMonth === 2) {
86
+ if (isLeapYear(startYear)) {
87
+ if (startDay > 29) {
88
+ startDay = 29
89
+ } else if (startDay > 28) {
90
+ startDay = 28
91
+ }
92
+ }
93
+ }
94
+
95
+ return [
96
+ `${startYear}-${formatDig(startMonth)}-${formatDig(startDay)}`,
97
+ `${endYear}-${formatDig(endMonth)}-${formatDig(endDay)}`
98
+ ]
99
+ },
100
+
101
+ latestWeekRange(year = new Date().getFullYear(), limit = 6, forward = 0) {
102
+ const weeks = getWeeksUntilNow(year, forward)
103
+
104
+ let result = []
105
+ let prev = []
106
+
107
+ const len = weeks.length
108
+
109
+ if (len >= limit) {
110
+ result = weeks.splice(-limit)
111
+ } else {
112
+ // 当前年到今天 不够六周
113
+ const prevYearWeeks = getWeeksUntilNow(year - 1, forward)
114
+
115
+ result = weeks
116
+ prev = prevYearWeeks.splice(-(limit - len))
117
+ }
118
+
119
+ result = prev.concat(result)
120
+
121
+ return [result[0].range[0], result[limit - 1].range[1]]
122
+ },
123
+
124
+ latestMonthRange(limit = 6, forward = 0) {
125
+ const now = new Date()
126
+ let year = now.getFullYear()
127
+ let month = now.getMonth() + 1
128
+ const day = now.getDate()
129
+
130
+ month = (year * 12 + month - forward) % 12
131
+ year = parseInt((year * 12 + month - forward) / 12)
132
+ // year = month ? parseInt(year) : year - 1;
133
+ month = month || 12
134
+
135
+ let sixMonthBefore = {}
136
+
137
+ if (month >= limit) {
138
+ sixMonthBefore = {
139
+ year,
140
+ month: month - limit + 1,
141
+ day: '01'
142
+ }
143
+ } else {
144
+ sixMonthBefore = {
145
+ year: year - 1,
146
+ month: 12 - (limit - month) + 1,
147
+ day: '01'
148
+ }
149
+ }
150
+ // beforMonth === 2 && (day >= 28) ? new Date(year, beforMonth, 0).getDate() : day
151
+ return [
152
+ `${sixMonthBefore.year}-${formatDig(sixMonthBefore.month)}-01`,
153
+ `${year}-${formatDig(month)}-${formatDig(day)}`
154
+ ]
155
+ },
156
+
157
+ nextestMonthRange(limit = 6, startRange = 1) {
158
+ const now = new Date()
159
+ let year = now.getFullYear()
160
+ let month = now.getMonth() + 1 + startRange // 当前月 + 起始间隔月
161
+ const day = now.getDate()
162
+
163
+ let sixMonthLater = {}
164
+
165
+ const sixMonth = month + (limit % 12) - 1
166
+
167
+ if (sixMonth <= 12) {
168
+ sixMonthLater = {
169
+ year: year + Math.floor(limit / 12),
170
+ month: sixMonth,
171
+ day: '01'
172
+ }
173
+
174
+ if (month >= 13) {
175
+ month -= 12
176
+ year += 1
177
+ }
178
+ } else {
179
+ sixMonthLater = {
180
+ year: year + 1 + Math.floor(limit / 12),
181
+ month: sixMonth - 12,
182
+ day: '01'
183
+ }
184
+
185
+ if (month >= 13) {
186
+ month -= 12
187
+ year += 1
188
+ }
189
+ }
190
+
191
+ const nextDay = new Date(sixMonthLater.year, sixMonthLater.month, 0)
192
+
193
+ return [
194
+ `${year}-${formatDig(month)}-${formatDig(day)}`,
195
+ `${sixMonthLater.year}-${formatDig(sixMonthLater.month)}-${nextDay.getDate()}`
196
+ ]
197
+ },
198
+
199
+ /**
200
+ *
201
+ * @param limit
202
+ * @param forward
203
+ * @returns {string[]}
204
+ */
205
+ latestQuarterRange(limit = 6, forward = 0) {
206
+ console.log(limit)
207
+ const today = new Date()
208
+ let endYear = today.getFullYear()
209
+ const endMonth = today.getMonth() + 1
210
+
211
+ let rest = Math.ceil(endMonth / 3)
212
+
213
+ rest -= forward
214
+
215
+ if (rest <= 0) {
216
+ rest += 4
217
+ endYear -= Math.ceil(forward / 4)
218
+ }
219
+
220
+ let prevYear, prevQarter
221
+
222
+ if (rest === 1) {
223
+ prevYear = endYear - 2
224
+ prevQarter = 4
225
+ } else if (rest === 2) {
226
+ prevYear = endYear - 1
227
+ prevQarter = 1
228
+ } else if (rest === 3) {
229
+ prevYear = endYear - 1
230
+ prevQarter = 2
231
+ } else if (rest === 4) {
232
+ prevYear = endYear - 1
233
+ prevQarter = 3
234
+ }
235
+
236
+ return [`${prevYear}-${quarter[prevQarter][0]}`, `${endYear}-${quarter[rest][1]}`]
237
+ },
238
+
239
+ latestHalfYearRange(limit = 6, forward = 0) {
240
+ const date = new Date()
241
+
242
+ let endYear = date.getFullYear()
243
+ let endMonth = date.getMonth() + 1
244
+ let startMonth
245
+
246
+ // 当前时间是否是上半年
247
+ let isFirstHalfYear = endMonth <= 6
248
+
249
+ // 如果提前的值为一年的整数倍
250
+ if (!(forward % 2)) {
251
+ endYear -= forward / 2
252
+ } else {
253
+ // 因为提前了半年的奇数倍,所以结果值的半年的值要反转
254
+ isFirstHalfYear = !isFirstHalfYear
255
+
256
+ endYear -= Math.ceil(forward / 2)
257
+ }
258
+
259
+ const startYear = endYear - (Math.ceil(limit / 2) - 1)
260
+ endMonth = isFirstHalfYear ? 6 : 12
261
+
262
+ if (limit % 2) {
263
+ startMonth = endMonth
264
+ } else {
265
+ startMonth = endMonth === 6 ? 7 : 1
266
+ }
267
+
268
+ return [`${startYear}-${startMonth}-01`, `${endYear}-${endMonth}-${endMonth === 6 ? '30' : '31'}`]
269
+ },
270
+
271
+ latestYearRange(limit = 6, forward = 0) {
272
+ const currYear = new Date().getFullYear()
273
+
274
+ return [`${currYear - limit - forward + 1}-01-01`, `${currYear - forward}-12-31`]
275
+ },
276
+
277
+ /**
278
+ * 今天
279
+ */
280
+ today() {
281
+ const now = new Date()
282
+
283
+ return [formatDate2(now), formatDate2(now)]
284
+ },
285
+
286
+ /**
287
+ * 本周(从周一到周日)
288
+ */
289
+ curWeek() {
290
+ const now = new Date()
291
+ const year = now.getFullYear()
292
+ const month = now.getMonth()
293
+ const today = now.getDate()
294
+ const day = now.getDay()
295
+ const Monday = new Date(year, month, today - day + 1).getTime()
296
+ const Sunday = new Date(year, month, today + 7 - day).getTime()
297
+
298
+ return [formatDate2(Monday), formatDate2(Sunday)]
299
+ },
300
+
301
+ /**
302
+ * 本月
303
+ */
304
+ curMonth() {
305
+ const now = new Date()
306
+
307
+ const year = now.getFullYear()
308
+ const month = now.getMonth() + 1
309
+ let endDate = 30
310
+
311
+ const months = [1, 3, 5, 7, 8, 10, 12]
312
+
313
+ if (month === 2) {
314
+ endDate = isLeapYear(year) ? 29 : 28
315
+ } else if (months.includes(month)) {
316
+ endDate = 31
317
+ }
318
+
319
+ return [`${year}-${formatDig(month)}-01`, `${year}-${formatDig(month)}-${endDate}`]
320
+ },
321
+
322
+ /**
323
+ * 本季度
324
+ */
325
+ curQuarter() {
326
+ const now = new Date()
327
+ const year = now.getFullYear()
328
+ const month = now.getMonth() + 1
329
+
330
+ const quarters = [
331
+ [1, 2, 3],
332
+ [4, 5, 6],
333
+ [7, 8, 9],
334
+ [10, 11, 12]
335
+ ]
336
+ const quarter = quarters.find((item) => item.includes(month))
337
+
338
+ const months = [3, 12]
339
+ let endDate = 30
340
+
341
+ if (months.includes(quarter[2])) {
342
+ endDate = 31
343
+ }
344
+
345
+ return [`${year}-${formatDig(quarter[0])}-01`, `${year}-${formatDig(quarter[2])}-${endDate}`]
346
+ },
347
+
348
+ /**
349
+ * 本年
350
+ */
351
+ curYear() {
352
+ const now = new Date()
353
+ const year = now.getFullYear()
354
+
355
+ return [`${year}-01-01`, `${year}-12-31`]
356
+ }
357
+ },
358
+
359
+ validate: {
360
+ date({ date, limit = 36, msg }) {
361
+ return new Promise((resolve, reject) => {
362
+ if (!date || date.length === 0) {
363
+ reject(NOT_EMPTY)
364
+ }
365
+
366
+ const { startYear, startMonth, endYear, endMonth } = splitDateRange(date)
367
+
368
+ if (endMonth + (endYear - startYear - 1) * 12 + (12 - startMonth + 1) > limit) {
369
+ msg ? reject({ type: VALIDATE_ERROR, msg }) : reject(MAX_DATE_MSG(limit))
370
+ }
371
+
372
+ resolve()
373
+ })
374
+ },
375
+
376
+ week({ date, limit = 24, msg }) {
377
+ return new Promise((resolve, reject) => {
378
+ const { startYear, startMonth, startDay, endYear, endMonth, endDay } = splitDateRange(date)
379
+
380
+ const start = {
381
+ year: startYear,
382
+ month: startMonth - 1,
383
+ day: startDay
384
+ }
385
+
386
+ const end = {
387
+ year: endYear,
388
+ month: endMonth - 1,
389
+ day: endDay
390
+ }
391
+
392
+ if (createRangWeeks(start, end).length > limit) {
393
+ msg ? reject({ type: VALIDATE_ERROR, msg }) : reject(MAX_WEEK_MSG(limit))
394
+ }
395
+
396
+ resolve()
397
+ })
398
+ },
399
+
400
+ month({ date, limit = 36, msg }) {
401
+ return new Promise((resolve, reject) => {
402
+ if (!date || date.length === 0) {
403
+ reject(NOT_EMPTY)
404
+ }
405
+
406
+ const { startYear, startMonth, endYear, endMonth } = splitDateRange(date)
407
+
408
+ if (endMonth + (endYear - startYear - 1) * 12 + (12 - startMonth + 1) > limit) {
409
+ msg ? reject({ type: VALIDATE_ERROR, msg }) : reject(MAX_MONTH_MSG(limit))
410
+ }
411
+
412
+ resolve()
413
+ })
414
+ },
415
+
416
+ quarter({ date, limit = 12, msg }) {
417
+ return new Promise((resolve, reject) => {
418
+ if (!date || date.length === 0) {
419
+ reject(NOT_EMPTY)
420
+ }
421
+
422
+ const { startYear, startMonth, endYear, endMonth } = splitDateRange(date)
423
+
424
+ if (Math.ceil(endMonth / 3) + (endYear - startYear - 1) * 4 + (4 - Math.ceil(startMonth / 3) + 1) > limit) {
425
+ msg ? reject({ type: VALIDATE_ERROR, msg }) : reject(MAX_QUARTER_MSG(limit))
426
+ }
427
+
428
+ resolve()
429
+ })
430
+ },
431
+
432
+ year({ date, limit = 6, msg }) {
433
+ return new Promise((resolve, reject) => {
434
+ if (!date || date.length === 0) {
435
+ reject(NOT_EMPTY)
436
+ }
437
+
438
+ const { startYear, endYear } = splitDateRange(date)
439
+
440
+ if (endYear - startYear + 1 > limit) {
441
+ msg ? reject({ type: VALIDATE_ERROR, msg }) : reject(MAX_YEAR_MSG(limit))
442
+ }
443
+
444
+ resolve()
445
+ })
446
+ }
447
+ },
448
+
449
+ limit: {
450
+ now: function () {
451
+ const date = new Date()
452
+ let year = date.getFullYear()
453
+ let month = date.getMonth() + 1
454
+ const day = date.getDate()
455
+
456
+ if (month > 12) {
457
+ year += 1
458
+ month = 1
459
+ }
460
+ return [undefined, `${year}-${formatDig(month)}-${formatDig(day)}`]
461
+ },
462
+
463
+ range(yearRange = 3) {
464
+ const date = new Date()
465
+
466
+ const endYear = date.getFullYear()
467
+ const endMonth = date.getMonth() + 1
468
+ const endDay = date.getDate()
469
+
470
+ let startYear = endYear - yearRange
471
+ let startMonth = endMonth + 1
472
+ let startDay = endDay
473
+
474
+ if (startMonth === 0) {
475
+ startYear++
476
+ startMonth = 1
477
+ }
478
+
479
+ if (isLeapYear(startYear) && startMonth === 2) {
480
+ if (startDay > 29) {
481
+ startDay = 29
482
+ } else if (startDay > 28) {
483
+ startDay = 28
484
+ }
485
+ }
486
+
487
+ return [
488
+ `${startYear}-${formatDig(startMonth)}-${formatDig(startDay)}`,
489
+ `${endYear}-${formatDig(endMonth)}-${formatDig(endDay)}`
490
+ ]
491
+ },
492
+
493
+ before: function () {
494
+ const date = new Date()
495
+ let year = date.getFullYear()
496
+ let month = date.getMonth() + 2
497
+ const day = date.getDate()
498
+
499
+ if (month > 12) {
500
+ year += 1
501
+ month = 1
502
+ }
503
+
504
+ return [`${year}-${formatDig(month)}-${formatDig(day)}`]
505
+ },
506
+
507
+ start: function (start) {
508
+ let date = null
509
+
510
+ if (start) {
511
+ const tmp = new Date(start.toString()).getTime()
512
+
513
+ // 由于start可能只是年份,而new Date(year)出来的时间是早上8点,因此,这里要减8小时 + 1毫秒
514
+ date = new Date(tmp - 1000 * 60 * 60 * 8 - 1)
515
+ } else {
516
+ date = new Date()
517
+ }
518
+
519
+ let year = date.getFullYear()
520
+ let month = date.getMonth() + 2
521
+ const day = date.getDate()
522
+
523
+ if (month > 12) {
524
+ year += 1
525
+ month = 1
526
+ }
527
+
528
+ return [`${year}-${formatDig(month)}-${formatDig(day)}`]
529
+ },
530
+
531
+ /**
532
+ *
533
+ * @param start
534
+ * @param end
535
+ */
536
+ pickerOptions(start, end) {
537
+ return {
538
+ disabledDate(time) {
539
+ return (start && time.getTime() < new Date(start).getTime()) || (end && new Date(end).getTime() > end)
540
+ }
541
+ }
542
+ }
543
+ }
544
+ }
545
+
546
+ function splitDateRange(date) {
547
+ const start = date[0].split('-')
548
+ const end = date[1].split('-')
549
+
550
+ return {
551
+ startYear: +start[0],
552
+ startMonth: +start[1],
553
+ startDay: +start[2],
554
+ endYear: +end[0],
555
+ endMonth: +end[1],
556
+ endDay: +end[2]
557
+ }
558
+ }
559
+
560
+ function getWeeksUntilNow(year, forward = 0) {
561
+ let today = new Date().getTime()
562
+ today -= forward * 1000 * 60 * 60 * 24 * 7
563
+
564
+ const result = []
565
+ let index = 1
566
+ const weeksPerYear = createFullYearWeeks(year)
567
+
568
+ for (let i = 0; i < weeksPerYear.length; i++) {
569
+ const start = weeksPerYear[i][0]
570
+ const end = weeksPerYear[i][1]
571
+
572
+ if (start > today) {
573
+ return result
574
+ }
575
+
576
+ result.push({
577
+ label: `${year}年${index++}周`,
578
+ rangeLabel: `${formatDate(start)}-${formatDate(end)}`,
579
+ value: `${formatDate2(start)}-${formatDate2(end)}`,
580
+ range: [formatDate2(start), formatDate2(end)]
581
+ })
582
+ }
583
+
584
+ return result
585
+ }
586
+
587
+ function formatDig(num) {
588
+ return num > 9 ? '' + num : '0' + num
589
+ }
590
+ function formatDate2(mill) {
591
+ var y = new Date(mill)
592
+ return `${y.getFullYear()}-${formatDig(y.getMonth() + 1)}-${formatDig(y.getDate())}`
593
+ }
594
+
595
+ function formatDate(mill) {
596
+ var y = new Date(mill)
597
+ return `${y.getFullYear()}年${formatDig(y.getMonth() + 1)}月${formatDig(y.getDate())}日`
598
+ }
599
+
600
+ function createFullYearWeeks(year) {
601
+ const res = []
602
+
603
+ const ONE_DAY = 24 * 3600 * 1000
604
+ let start = new Date(year, 0, 1)
605
+ let end = new Date(year, 11, 31)
606
+ const firstDay = ((7 - start.getDay() + 1) % 7) + 1
607
+ const lastDay = (7 - end.getDay()) % 7
608
+
609
+ start = new Date(year, 0, firstDay)
610
+ if (lastDay) end = new Date(year + 1, 0, lastDay)
611
+
612
+ let startTime = +start
613
+ let endTime = startTime + 6 * ONE_DAY
614
+
615
+ while (endTime < end) {
616
+ res.push([startTime, endTime])
617
+ startTime = endTime + ONE_DAY
618
+ endTime = endTime + 7 * ONE_DAY
619
+ }
620
+
621
+ res.push([startTime, +end])
622
+ return res
623
+ }
624
+
625
+ function createRangWeeks(startDate, endDate) {
626
+ const res = []
627
+
628
+ const ONE_DAY = 24 * 3600 * 1000
629
+ const start = new Date(startDate.year, startDate.month, startDate.day)
630
+ const end = new Date(endDate.year, endDate.month, endDate.day)
631
+ const firstDay = start.getDay() || 7
632
+ let startTime = +start
633
+ let endTime = startTime + (7 - firstDay) * ONE_DAY
634
+
635
+ while (endTime < end) {
636
+ res.push([startTime, endTime])
637
+ startTime = endTime + ONE_DAY
638
+ endTime = endTime + 7 * ONE_DAY
639
+ }
640
+
641
+ res.push([startTime, +end])
642
+ return res
643
+ }
644
+
645
+ function isLeapYear(year) {
646
+ year = parseInt(year)
647
+
648
+ return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0)
649
+ }
@@ -0,0 +1,40 @@
1
+ /**
2
+ * @param {Function} func
3
+ * @param {number} wait
4
+ * @param {boolean} immediate
5
+ * @return {*}
6
+ */
7
+ export function debounce(func, wait, immediate) {
8
+ let timeout, args, context, timestamp, result
9
+
10
+ const later = function () {
11
+ // 据上一次触发时间间隔
12
+ const last = +new Date() - timestamp
13
+
14
+ // 上次被包装函数被调用时间间隔 last 小于设定时间间隔 wait
15
+ if (last < wait && last > 0) {
16
+ timeout = setTimeout(later, wait - last)
17
+ } else {
18
+ timeout = null
19
+ // 如果设定为immediate===true,因为开始边界已经调用过了此处无需调用
20
+ if (!immediate) {
21
+ result = func.apply(context, args)
22
+ if (!timeout) context = args = null
23
+ }
24
+ }
25
+ }
26
+
27
+ return function (...args) {
28
+ context = this
29
+ timestamp = +new Date()
30
+ const callNow = immediate && !timeout
31
+ // 如果延时不存在,重新设定延时
32
+ if (!timeout) timeout = setTimeout(later, wait)
33
+ if (callNow) {
34
+ result = func.apply(context, args)
35
+ context = args = null
36
+ }
37
+
38
+ return result
39
+ }
40
+ }