@10yun/cv-mobile-ui 0.3.26 → 0.4.2

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 (235) hide show
  1. package/build/parse-pages.js +2 -2
  2. package/package.json +1 -1
  3. package/ui-cv/README.md +3 -0
  4. package/ui-cv/cv-badge/cv-badge.vue +249 -0
  5. package/ui-cv/cv-banner/cv-banner.vue +1 -1
  6. package/ui-cv/cv-banner-card/cv-banner-card.vue +1 -1
  7. package/ui-cv/cv-block/cv-block.vue +1 -1
  8. package/ui-cv/cv-box/cv-box.vue +1 -1
  9. package/ui-cv/cv-calendar/calendar.js +963 -0
  10. package/ui-cv/cv-calendar/cv-calendar-item.vue +198 -0
  11. package/ui-cv/cv-calendar/cv-calendar.vue +508 -0
  12. package/{ui-uni/uni-calendar → ui-cv/cv-calendar}/util.js +0 -0
  13. package/ui-cv/cv-card/cv-card.vue +427 -0
  14. package/ui-cv/cv-cell/cv-cell.vue +1 -1
  15. package/ui-cv/cv-checkbox-group/cv-checkbox-group.vue +227 -0
  16. package/ui-cv/cv-checkbox-opt-base/cv-checkbox-opt-base.vue +57 -0
  17. package/ui-cv/cv-checkbox-opt-tag/cv-checkbox-opt-tag.vue +107 -0
  18. package/ui-cv/cv-code-sms/cv-code-sms.vue +23 -42
  19. package/ui-cv/cv-col/cv-col.vue +2965 -0
  20. package/ui-cv/cv-collapse/cv-collapse.vue +146 -0
  21. package/ui-cv/cv-collapse-item/cv-collapse-item.vue +395 -0
  22. package/ui-cv/cv-combox/cv-combox.vue +250 -0
  23. package/ui-cv/cv-countdown/cv-countdown.vue +245 -0
  24. package/ui-cv/cv-data-checkbox/cv-data-checkbox.vue +841 -0
  25. package/{ui-uni/uni-data-indexed-list → ui-cv/cv-data-indexed-list}/clientdb.js +0 -0
  26. package/ui-cv/cv-data-indexed-list/cv-data-indexed-list-item.vue +154 -0
  27. package/ui-cv/cv-data-indexed-list/cv-data-indexed-list.vue +376 -0
  28. package/ui-cv/cv-data-picker/cv-data-picker.vue +486 -0
  29. package/{ui-uni/uni-data-picker → ui-cv/cv-data-picker}/keypress.js +0 -0
  30. package/{ui-uni/uni-data-pickerview/uni-data-picker.js → ui-cv/cv-data-pickerview/cv-data-picker.js} +0 -0
  31. package/ui-cv/cv-data-pickerview/cv-data-pickerview.vue +304 -0
  32. package/ui-cv/cv-dateformat/cv-dateformat.vue +86 -0
  33. package/{ui-uni/uni-dateformat → ui-cv/cv-dateformat}/date-format.js +0 -0
  34. package/{ui-uni/uni-datetime-picker → ui-cv/cv-datetime-picker}/calendar-item.vue +0 -0
  35. package/{ui-uni/uni-datetime-picker → ui-cv/cv-datetime-picker}/calendar.js +0 -0
  36. package/ui-cv/cv-datetime-picker/calendar.vue +761 -0
  37. package/ui-cv/cv-datetime-picker/cv-datetime-picker.vue +958 -0
  38. package/{ui-uni/uni-datetime-picker → ui-cv/cv-datetime-picker}/keypress.js +0 -0
  39. package/ui-cv/cv-datetime-picker/time-picker.vue +907 -0
  40. package/{ui-uni/uni-datetime-picker → ui-cv/cv-datetime-picker}/util.js +0 -0
  41. package/ui-cv/cv-dialog-bottom/cv-dialog-bottom.vue +1 -1
  42. package/ui-cv/cv-dialog-full/cv-dialog-full.vue +1 -1
  43. package/ui-cv/cv-dialog-loading/cv-dialog-loading.vue +3 -3
  44. package/ui-cv/cv-drawer/cv-drawer.vue +185 -0
  45. package/{ui-uni/uni-drawer → ui-cv/cv-drawer}/keypress.js +14 -14
  46. package/{ui-uni/uni-easyinput → ui-cv/cv-easyinput}/common.js +0 -0
  47. package/ui-cv/cv-easyinput/cv-easyinput.vue +514 -0
  48. package/ui-cv/cv-editor-parse/readme.md +2 -3
  49. package/ui-cv/{cv-editor → cv-editor-quill}/compressImage.vue +0 -0
  50. package/ui-cv/{cv-editor/cv-editor.vue → cv-editor-quill/cv-editor-quill.vue} +3 -23
  51. package/ui-cv/{cv-editor → cv-editor-quill}/editor-icon.css +0 -0
  52. package/ui-cv/{cv-editor → cv-editor-quill}/editor-icon.ttf +0 -0
  53. package/ui-cv/{cv-editor → cv-editor-quill}/index.js +0 -0
  54. package/ui-cv/cv-fab/cv-fab.vue +465 -0
  55. package/{ui-uni/uni-fab/uni-fab.vue.bak → ui-cv/cv-fab/cv-fab.vue.bak} +2 -2
  56. package/ui-cv/cv-fav/cv-fav.vue +150 -0
  57. package/{ui-uni/uni-file-picker → ui-cv/cv-file-picker}/choose-and-upload-file.js +0 -0
  58. package/ui-cv/cv-file-picker/cv-file-picker.vue +619 -0
  59. package/{ui-uni/uni-file-picker → ui-cv/cv-file-picker}/upload-file.vue +0 -0
  60. package/{ui-uni/uni-file-picker → ui-cv/cv-file-picker}/upload-image.vue +0 -0
  61. package/{ui-uni/uni-file-picker → ui-cv/cv-file-picker}/utils.js +0 -0
  62. package/ui-cv/cv-form-base/cv-form-base.vue +470 -0
  63. package/ui-cv/cv-form-base/validate.js +477 -0
  64. package/ui-cv/cv-form-group/cv-form-group.vue +123 -80
  65. package/ui-cv/cv-form-group/cv-form-group2.vue +80 -0
  66. package/ui-cv/cv-form-item/cv-form-item.vue +482 -174
  67. package/ui-cv/cv-form-item/cv-form-item2.vue +215 -0
  68. package/ui-cv/cv-form-merge/cv-form-merge.vue +1 -1
  69. package/ui-cv/cv-geo-local/cv-geo-local.vue +14 -26
  70. package/{ui-uni/uni-goods-nav/uni-goods-nav.vue → ui-cv/cv-goods-nav/cv-goods-nav.vue} +1 -1
  71. package/ui-cv/cv-grid-group/cv-grid-group.vue +148 -0
  72. package/ui-cv/cv-grid-item/cv-grid-item.vue +132 -0
  73. package/ui-cv/cv-icon2/cv-icon2.vue +78 -0
  74. package/ui-cv/cv-icon2/icons.js +132 -0
  75. package/{ui-uni/uni-icons → ui-cv/cv-icon2}/uni.ttf +0 -0
  76. package/ui-cv/cv-icons/cv-icons.vue +1 -1
  77. package/ui-cv/cv-indexed-list/cv-indexed-list-item.vue +154 -0
  78. package/ui-cv/cv-indexed-list/cv-indexed-list.vue +371 -0
  79. package/ui-cv/cv-info/cv-info.vue +5 -20
  80. package/ui-cv/cv-input-btn/cv-input-btn.vue +25 -43
  81. package/ui-cv/cv-input-digit/cv-input-digit.vue +61 -28
  82. package/ui-cv/cv-input-idcard/cv-input-idcard.vue +47 -29
  83. package/ui-cv/cv-input-number/cv-input-number.vue +60 -28
  84. package/ui-cv/cv-input-password/cv-input-password.vue +80 -30
  85. package/ui-cv/cv-input-text/cv-input-text.vue +55 -37
  86. package/ui-cv/cv-link2/cv-link2.vue +130 -0
  87. package/ui-cv/cv-list/cv-list.vue +107 -0
  88. package/ui-cv/cv-list/cv-refresh.vue +65 -0
  89. package/{ui-uni/uni-list → ui-cv/cv-list}/uni-refresh.wxs +0 -0
  90. package/ui-cv/cv-list-ad/cv-list-ad.vue +113 -0
  91. package/{ui-uni/uni-list-chat/uni-list-chat.scss → ui-cv/cv-list-chat/cv-list-chat.scss} +0 -0
  92. package/{ui-uni/uni-list-chat/uni-list-chat.vue → ui-cv/cv-list-chat/cv-list-chat.vue} +0 -0
  93. package/ui-cv/cv-list-item/cv-list-item.vue +449 -0
  94. package/ui-cv/cv-load-more/config.json +9 -9
  95. package/ui-cv/cv-load-more/cv-load-more.vue +34 -5
  96. package/ui-cv/cv-message/cv-message.vue +1 -1
  97. package/ui-cv/cv-nav-bar/cv-nav-bar.vue +256 -0
  98. package/{ui-uni/uni-nav-bar/uni-status-bar.vue → ui-cv/cv-nav-bar/cv-status-bar.vue} +0 -0
  99. package/ui-cv/cv-nav-col/cv-nav-col.vue +1 -1
  100. package/ui-cv/cv-nav-row/cv-nav-row.vue +1 -1
  101. package/ui-cv/cv-notice-bar/cv-notice-bar.vue +453 -0
  102. package/ui-cv/cv-number-box/cv-number-box.vue +223 -0
  103. package/ui-cv/cv-pagination/cv-pagination.vue +397 -0
  104. package/ui-cv/cv-picker-date/cv-picker-date.vue +17 -27
  105. package/ui-cv/cv-picker-datetime/cv-picker-datetime.vue +31 -41
  106. package/ui-cv/cv-picker-datetime5/cv-picker-datetime5.vue +19 -29
  107. package/ui-cv/cv-picker-region/cv-picker-region.vue +23 -33
  108. package/ui-cv/cv-picker-time/cv-picker-time.vue +16 -26
  109. package/ui-cv/cv-picker1/cv-picker1.vue +16 -28
  110. package/ui-cv/cv-picker2/cv-picker2.vue +22 -32
  111. package/ui-cv/cv-picker3/cv-picker3.vue +34 -44
  112. package/ui-cv/cv-popup/cv-popup.vue +429 -0
  113. package/{ui-uni/uni-popup → ui-cv/cv-popup}/keypress.js +0 -0
  114. package/{ui-uni/uni-popup → ui-cv/cv-popup}/popup.js +0 -0
  115. package/{ui-uni/uni-popup-dialog/uni-popup-dialog.vue → ui-cv/cv-popup-dialog/cv-popup-dialog.vue} +0 -0
  116. package/{ui-uni/uni-popup-dialog → ui-cv/cv-popup-dialog}/keypress.js +0 -0
  117. package/ui-cv/cv-popup-message/cv-popup-message.vue +143 -0
  118. package/{ui-uni/uni-popup-share/uni-popup-share.vue → ui-cv/cv-popup-share/cv-popup-share.vue} +0 -0
  119. package/ui-cv/cv-radio-group/cv-radio-group.vue +185 -0
  120. package/ui-cv/cv-radio-opt-base/cv-radio-opt-base.vue +57 -0
  121. package/ui-cv/cv-radio-opt-tag/cv-radio-opt-tag.vue +107 -0
  122. package/ui-cv/cv-rate/cv-rate.vue +13 -17
  123. package/ui-cv/cv-rate/uni-rate.vue +358 -0
  124. package/ui-cv/cv-row/cv-row.vue +157 -0
  125. package/ui-cv/cv-search/cv-search.vue +4 -4
  126. package/ui-cv/cv-search-bar/cv-search-bar.vue +280 -0
  127. package/{ui-uni/uni-section/uni-section.vue → ui-cv/cv-section/cv-section.vue} +0 -0
  128. package/{ui-uni/uni-segmented-control/uni-segmented-control.vue → ui-cv/cv-segmented-control/cv-segmented-control.vue} +0 -0
  129. package/ui-cv/cv-skeleton/cv-skeleton2.vue +5 -5
  130. package/ui-cv/cv-specs/cv-specs.vue +1 -1
  131. package/{ui-uni/uni-status-bar/uni-status-bar.vue → ui-cv/cv-status-bar/cv-status-bar.vue} +0 -0
  132. package/ui-cv/cv-steps/cv-steps.vue +293 -0
  133. package/{ui-uni/uni-swipe-action/uni-swipe-action.vue → ui-cv/cv-swipe-action/cv-swipe-action.vue} +0 -0
  134. package/{ui-uni/uni-swipe-action-item → ui-cv/cv-swipe-action-item}/bindingx.js +0 -0
  135. package/{ui-uni/uni-swipe-action-item/uni-swipe-action-item.vue → ui-cv/cv-swipe-action-item/cv-swipe-action-item.vue} +0 -0
  136. package/{ui-uni/uni-swipe-action-item → ui-cv/cv-swipe-action-item}/index.wxs +0 -0
  137. package/{ui-uni/uni-swipe-action-item → ui-cv/cv-swipe-action-item}/isPC.js +0 -0
  138. package/{ui-uni/uni-swipe-action-item → ui-cv/cv-swipe-action-item}/mpalipay.js +0 -0
  139. package/{ui-uni/uni-swipe-action-item → ui-cv/cv-swipe-action-item}/mpother.js +0 -0
  140. package/{ui-uni/uni-swipe-action-item → ui-cv/cv-swipe-action-item}/mpwxs.js +0 -0
  141. package/ui-cv/cv-swiper-dot/cv-swiper-dot.vue +255 -0
  142. package/ui-cv/cv-switch/cv-switch.vue +5 -9
  143. package/ui-cv/cv-table/cv-table.vue +460 -0
  144. package/ui-cv/cv-tag/cv-tag.vue +276 -0
  145. package/ui-cv/cv-tbody/cv-tbody.vue +28 -0
  146. package/ui-cv/cv-td/cv-td.vue +93 -0
  147. package/{ui-uni/uni-test/uni-test.vue → ui-cv/cv-test/cv-test.vue} +0 -0
  148. package/ui-cv/cv-textarea/cv-textarea.vue +56 -41
  149. package/ui-cv/cv-th/cv-th.vue +270 -0
  150. package/{ui-uni/uni-th → ui-cv/cv-th}/filter-dropdown.vue +0 -0
  151. package/ui-cv/cv-thead/cv-thead.vue +114 -0
  152. package/ui-cv/cv-title/cv-title.vue +168 -0
  153. package/ui-cv/cv-tr/cv-tr.vue +166 -0
  154. package/{ui-uni/uni-tr → ui-cv/cv-tr}/table-checkbox.vue +0 -0
  155. package/{ui-uni/uni-transition → ui-cv/cv-transition}/createAnimation.js +0 -0
  156. package/ui-cv/cv-transition/cv-transition.vue +279 -0
  157. package/ui-cv/cv-upload-avatar/cv-upload-avatar.vue +24 -22
  158. package/ui-cv/cv-upload-img/cv-upload-img.vue +1 -1
  159. package/ui-cv/mixins/mixins-input.js +20 -29
  160. package/ui-cv/mixins/mixins-picker.js +1 -13
  161. package/ui-uni/amap-wx/js/util.js +158 -166
  162. package/ui-uni/product.vue +52 -52
  163. package/ui-uni/u-charts/u-charts.js +1092 -743
  164. package/ui-cv/cv-checkbox/cv-checkbox.vue +0 -140
  165. package/ui-cv/cv-checkbox-tag/cv-checkbox-tag.vue +0 -164
  166. package/ui-cv/cv-nav-group/cv-nav-group.vue +0 -33
  167. package/ui-cv/cv-radio/cv-radio.vue +0 -111
  168. package/ui-cv/cv-radio-sex/cv-radio-sex.vue +0 -80
  169. package/ui-cv/cv-radio-tag/cv-radio-tag.vue +0 -133
  170. package/ui-cv/mixins/mixins-checkbox.js +0 -71
  171. package/ui-cv/mixins/mixins-common.js +0 -53
  172. package/ui-cv/mixins/mixins-radio.js +0 -84
  173. package/ui-uni/page-foot/page-foot.vue +0 -38
  174. package/ui-uni/page-head/page-head.vue +0 -16
  175. package/ui-uni/u-link/u-link.vue +0 -59
  176. package/ui-uni/uni-badge/uni-badge.vue +0 -250
  177. package/ui-uni/uni-calendar/calendar.js +0 -546
  178. package/ui-uni/uni-calendar/uni-calendar-item.vue +0 -171
  179. package/ui-uni/uni-calendar/uni-calendar.vue +0 -504
  180. package/ui-uni/uni-card/uni-card.vue +0 -420
  181. package/ui-uni/uni-col/uni-col.vue +0 -2968
  182. package/ui-uni/uni-collapse/uni-collapse.vue +0 -146
  183. package/ui-uni/uni-collapse-item/uni-collapse-item.vue +0 -378
  184. package/ui-uni/uni-combox/uni-combox.vue +0 -237
  185. package/ui-uni/uni-countdown/uni-countdown.vue +0 -234
  186. package/ui-uni/uni-data-checkbox/uni-data-checkbox.vue +0 -792
  187. package/ui-uni/uni-data-indexed-list/uni-data-indexed-list-item.vue +0 -142
  188. package/ui-uni/uni-data-indexed-list/uni-data-indexed-list.vue +0 -364
  189. package/ui-uni/uni-data-picker/uni-data-picker.vue +0 -468
  190. package/ui-uni/uni-data-pickerview/uni-data-pickerview.vue +0 -298
  191. package/ui-uni/uni-dateformat/uni-dateformat.vue +0 -88
  192. package/ui-uni/uni-datetime-picker/calendar.vue +0 -747
  193. package/ui-uni/uni-datetime-picker/time-picker.vue +0 -899
  194. package/ui-uni/uni-datetime-picker/uni-datetime-picker.vue +0 -874
  195. package/ui-uni/uni-drawer/uni-drawer.vue +0 -178
  196. package/ui-uni/uni-easyinput/uni-easyinput.vue +0 -438
  197. package/ui-uni/uni-fab/uni-fab.vue +0 -443
  198. package/ui-uni/uni-fav/uni-fav.vue +0 -136
  199. package/ui-uni/uni-file-picker/uni-file-picker.vue +0 -614
  200. package/ui-uni/uni-forms/uni-forms.vue +0 -467
  201. package/ui-uni/uni-forms/validate.js +0 -486
  202. package/ui-uni/uni-forms-item/uni-forms-item.vue +0 -500
  203. package/ui-uni/uni-grid/uni-grid.vue +0 -141
  204. package/ui-uni/uni-grid-item/uni-grid-item.vue +0 -123
  205. package/ui-uni/uni-group/uni-group.vue +0 -123
  206. package/ui-uni/uni-icons/icons.js +0 -132
  207. package/ui-uni/uni-icons/uni-icons.vue +0 -72
  208. package/ui-uni/uni-indexed-list/uni-indexed-list-item.vue +0 -142
  209. package/ui-uni/uni-indexed-list/uni-indexed-list.vue +0 -357
  210. package/ui-uni/uni-link/uni-link.vue +0 -117
  211. package/ui-uni/uni-list/uni-list.vue +0 -107
  212. package/ui-uni/uni-list/uni-refresh.vue +0 -65
  213. package/ui-uni/uni-list-ad/uni-list-ad.vue +0 -106
  214. package/ui-uni/uni-list-item/uni-list-item.vue +0 -428
  215. package/ui-uni/uni-load-more/uni-load-more.vue +0 -366
  216. package/ui-uni/uni-nav-bar/uni-nav-bar.vue +0 -244
  217. package/ui-uni/uni-notice-bar/uni-notice-bar.vue +0 -394
  218. package/ui-uni/uni-number-box/uni-number-box.vue +0 -224
  219. package/ui-uni/uni-pagination/uni-pagination.vue +0 -376
  220. package/ui-uni/uni-popup/uni-popup.vue +0 -412
  221. package/ui-uni/uni-popup-message/uni-popup-message.vue +0 -143
  222. package/ui-uni/uni-rate/uni-rate.vue +0 -357
  223. package/ui-uni/uni-row/uni-row.vue +0 -155
  224. package/ui-uni/uni-search-bar/uni-search-bar.vue +0 -262
  225. package/ui-uni/uni-steps/uni-steps.vue +0 -250
  226. package/ui-uni/uni-swiper-dot/uni-swiper-dot.vue +0 -205
  227. package/ui-uni/uni-table/uni-table.vue +0 -455
  228. package/ui-uni/uni-tag/uni-tag.vue +0 -283
  229. package/ui-uni/uni-tbody/uni-tbody.vue +0 -30
  230. package/ui-uni/uni-td/uni-td.vue +0 -88
  231. package/ui-uni/uni-th/uni-th.vue +0 -259
  232. package/ui-uni/uni-thead/uni-thead.vue +0 -114
  233. package/ui-uni/uni-title/uni-title.vue +0 -171
  234. package/ui-uni/uni-tr/uni-tr.vue +0 -156
  235. package/ui-uni/uni-transition/uni-transition.vue +0 -287
@@ -1,747 +0,0 @@
1
- <template>
2
- <view class="uni-calendar" @mouseleave="leaveCale">
3
- <view v-if="!insert&&show" class="uni-calendar__mask" :class="{'uni-calendar--mask-show':aniMaskShow}" @click="clean"></view>
4
- <view v-if="insert || show" class="uni-calendar__content" :class="{'uni-calendar--fixed':!insert,'uni-calendar--ani-show':aniMaskShow}">
5
-
6
- <view class="uni-calendar__header">
7
- <view v-if="left" class="uni-calendar__header-btn-box" @click.stop="pre">
8
- <view class="uni-calendar__header-btn uni-calendar--left"></view>
9
- </view>
10
- <picker mode="date" :value="date" fields="month" @change="bindDateChange">
11
- <text class="uni-calendar__header-text">{{ (nowDate.year||'') +'年'+( nowDate.month||'') +'月'}}</text>
12
- </picker>
13
- <view v-if="right" class="uni-calendar__header-btn-box" @click.stop="next">
14
- <view class="uni-calendar__header-btn uni-calendar--right"></view>
15
- </view>
16
- <!-- <text class="uni-calendar__backtoday" @click="backtoday">回到今天</text> -->
17
-
18
- </view>
19
- <view class="uni-calendar__box">
20
- <view v-if="showMonth" class="uni-calendar__box-bg">
21
- <text class="uni-calendar__box-bg-text">{{nowDate.month}}</text>
22
- </view>
23
- <view class="uni-calendar__weeks">
24
- <view class="uni-calendar__weeks-day">
25
- <text class="uni-calendar__weeks-day-text">日</text>
26
- </view>
27
- <view class="uni-calendar__weeks-day">
28
- <text class="uni-calendar__weeks-day-text">一</text>
29
- </view>
30
- <view class="uni-calendar__weeks-day">
31
- <text class="uni-calendar__weeks-day-text">二</text>
32
- </view>
33
- <view class="uni-calendar__weeks-day">
34
- <text class="uni-calendar__weeks-day-text">三</text>
35
- </view>
36
- <view class="uni-calendar__weeks-day">
37
- <text class="uni-calendar__weeks-day-text">四</text>
38
- </view>
39
- <view class="uni-calendar__weeks-day">
40
- <text class="uni-calendar__weeks-day-text">五</text>
41
- </view>
42
- <view class="uni-calendar__weeks-day">
43
- <text class="uni-calendar__weeks-day-text">六</text>
44
- </view>
45
- </view>
46
- <view class="uni-calendar__weeks" v-for="(item,weekIndex) in weeks" :key="weekIndex">
47
- <view class="uni-calendar__weeks-item" v-for="(weeks,weeksIndex) in item" :key="weeksIndex">
48
- <calendar-item class="uni-calendar-item--hook" :weeks="weeks" :calendar="calendar" :selected="selected" :lunar="lunar" :checkHover="range" @change="choiceDate" @handleMouse="handleMouse">
49
- </calendar-item>
50
- </view>
51
- </view>
52
- </view>
53
- <view v-if="!insert && !range && typeHasTime" class="uni-date-changed uni-calendar--fixed-top" style="padding: 0 40px;">
54
- <text class="uni-date-changed--time-date">{{tempSingleDate ? tempSingleDate : '选择日期'}}</text>
55
- <time-picker type="time" :start="reactStartTime" :end="reactEndTime" v-model="time" :disabled="!tempSingleDate" :border="false" class="time-picker-style">
56
- </time-picker>
57
- </view>
58
-
59
- <view v-if="!insert && range && typeHasTime" class="uni-date-changed uni-calendar--fixed-top">
60
- <view class="uni-date-changed--time-start">
61
- <text class="uni-date-changed--time-date">{{tempRange.before ? tempRange.before : '开始日期'}}</text>
62
- <time-picker type="time" :start="reactStartTime" v-model="timeRange.startTime" :border="false" :disabled="!tempRange.before" class="time-picker-style">
63
- </time-picker>
64
- </view>
65
- <uni-icons type="arrowthinright" color="#999" style="line-height: 50px;"></uni-icons>
66
- <view class="uni-date-changed--time-end">
67
- <text class="uni-date-changed--time-date">{{tempRange.after ? tempRange.after : '结束日期'}}</text>
68
- <time-picker type="time" :end="reactEndTime" v-model="timeRange.endTime" :border="false" :disabled="!tempRange.after" class="time-picker-style">
69
- </time-picker>
70
- </view>
71
- </view>
72
-
73
- <view v-if="!insert" class="uni-date-changed uni-calendar__header" @click="confirm">
74
- <!-- <view class="uni-calendar__header-btn-box" @click="close">
75
- <text class="uni-calendar__header-text uni-calendar--fixed-width">取消</text>
76
- </view> -->
77
- <view class="uni-calendar__header-btn-box">
78
- <text class="uni-calendar__button-text uni-calendar--fixed-width">确定</text>
79
- </view>
80
- </view>
81
- </view>
82
- </view>
83
- </template>
84
-
85
- <script>
86
- import Calendar from './util.js';
87
- import calendarItem from './calendar-item.vue'
88
- import timePicker from './time-picker.vue'
89
- /**
90
- * Calendar 日历
91
- * @description 日历组件可以查看日期,选择任意范围内的日期,打点操作。常用场景如:酒店日期预订、火车机票选择购买日期、上下班打卡等
92
- * @tutorial https://ext.dcloud.net.cn/plugin?id=56
93
- * @property {String} date 自定义当前时间,默认为今天
94
- * @property {Boolean} lunar 显示农历
95
- * @property {String} startDate 日期选择范围-开始日期
96
- * @property {String} endDate 日期选择范围-结束日期
97
- * @property {Boolean} range 范围选择
98
- * @property {Boolean} insert = [true|false] 插入模式,默认为false
99
- * @value true 弹窗模式
100
- * @value false 插入模式
101
- * @property {Boolean} clearDate = [true|false] 弹窗模式是否清空上次选择内容
102
- * @property {Array} selected 打点,期待格式[{date: '2019-06-27', info: '签到', data: { custom: '自定义信息', name: '自定义消息头',xxx:xxx... }}]
103
- * @property {Boolean} showMonth 是否选择月份为背景
104
- * @event {Function} change 日期改变,`insert :ture` 时生效
105
- * @event {Function} confirm 确认选择`insert :false` 时生效
106
- * @event {Function} monthSwitch 切换月份时触发
107
- * @example <uni-calendar :insert="true":lunar="true" :start-date="'2019-3-2'":end-date="'2019-5-20'"@change="change" />
108
- */
109
- export default {
110
- components: {
111
- calendarItem,
112
- timePicker
113
- },
114
- props: {
115
- date: {
116
- type: String,
117
- default: ''
118
- },
119
- defTime: {
120
- type: [String, Object],
121
- default: ''
122
- },
123
- selectableTimes: {
124
- type: [Object],
125
- default () {
126
- return {}
127
- }
128
- },
129
- selected: {
130
- type: Array,
131
- default () {
132
- return []
133
- }
134
- },
135
- lunar: {
136
- type: Boolean,
137
- default: false
138
- },
139
- startDate: {
140
- type: String,
141
- default: ''
142
- },
143
- endDate: {
144
- type: String,
145
- default: ''
146
- },
147
- range: {
148
- type: Boolean,
149
- default: false
150
- },
151
- typeHasTime: {
152
- type: Boolean,
153
- default: false
154
- },
155
- insert: {
156
- type: Boolean,
157
- default: true
158
- },
159
- showMonth: {
160
- type: Boolean,
161
- default: true
162
- },
163
- clearDate: {
164
- type: Boolean,
165
- default: true
166
- },
167
- left: {
168
- type: Boolean,
169
- default: true
170
- },
171
- right: {
172
- type: Boolean,
173
- default: true
174
- },
175
- checkHover: {
176
- type: Boolean,
177
- default: true
178
- },
179
- pleStatus: {
180
- type: Object,
181
- default () {
182
- return {
183
- before: '',
184
- after: '',
185
- data: [],
186
- fulldate: ''
187
- }
188
- }
189
- }
190
- },
191
- data() {
192
- return {
193
- show: false,
194
- weeks: [],
195
- calendar: {},
196
- nowDate: '',
197
- aniMaskShow: false,
198
- firstEnter: true,
199
- time: this.defTime ? this.defTime : '',
200
- timeRange: {
201
- startTime: this.defTime.start ? this.defTime.start : '',
202
- endTime: this.defTime.end ? this.defTime.end : ''
203
- },
204
- tempSingleDate: this.date,
205
- tempRange: {
206
- before: '',
207
- after: ''
208
- }
209
- }
210
- },
211
- watch: {
212
- date: {
213
- immediate: true,
214
- handler(newVal, oldVal) {
215
- if (!this.range)
216
- setTimeout(() => {
217
- this.init(newVal)
218
- }, 100)
219
- }
220
- },
221
- startDate(val) {
222
- this.cale.resetSatrtDate(val)
223
- this.cale.setDate(this.nowDate.fullDate)
224
- this.weeks = this.cale.weeks
225
- },
226
- endDate(val) {
227
- this.cale.resetEndDate(val)
228
- this.cale.setDate(this.nowDate.fullDate)
229
- this.weeks = this.cale.weeks
230
- },
231
- selected(newVal) {
232
- this.cale.setSelectInfo(this.nowDate.fullDate, newVal)
233
- this.weeks = this.cale.weeks
234
- },
235
- pleStatus: {
236
- immediate: true,
237
- handler(newVal, oldVal) {
238
- const {
239
- before,
240
- after,
241
- fulldate,
242
- which
243
- } = newVal
244
- this.tempRange.before = before
245
- this.tempRange.after = after
246
- setTimeout(() => {
247
- if (fulldate) {
248
- this.cale.setHoverMultiple(fulldate)
249
- if (before && after) {
250
- this.cale.lastHover = true
251
- if (this.rangeWithinMonth(after, before)) return
252
- this.setDate(before)
253
- }
254
- if (!before && !after) {
255
- this.cale.setMultiple(fulldate)
256
- this.setDate(this.nowDate.fullDate)
257
- this.calendar.fullDate = ''
258
- this.cale.lastHover = false
259
- }
260
- } else {
261
- this.cale.setDefaultMultiple(before, after)
262
- if (which === 'left') {
263
- this.setDate(before)
264
- this.weeks = this.cale.weeks
265
- } else {
266
- this.setDate(after)
267
- this.weeks = this.cale.weeks
268
- }
269
- this.cale.lastHover = true
270
- }
271
- }, 16)
272
- }
273
- }
274
- },
275
- computed: {
276
- reactStartTime() {
277
- const activeDate = this.range ? this.tempRange.before : this.calendar.fullDate
278
- const res = activeDate === this.startDate ? this.selectableTimes.start : ''
279
- return res
280
- },
281
- reactEndTime() {
282
- const activeDate = this.range ? this.tempRange.after : this.calendar.fullDate
283
- const res = activeDate === this.endDate ? this.selectableTimes.end : ''
284
- return res
285
- }
286
- },
287
- created() {
288
- // 获取日历方法实例
289
- this.cale = new Calendar({
290
- // date: new Date(),
291
- selected: this.selected,
292
- startDate: this.startDate,
293
- endDate: this.endDate,
294
- range: this.range,
295
- // multipleStatus: this.pleStatus
296
- })
297
- // 选中某一天
298
- // this.cale.setDate(this.date)
299
-
300
- this.init(this.date)
301
- // this.setDay
302
- },
303
- methods: {
304
- leaveCale() {
305
- this.firstEnter = true
306
- },
307
- handleMouse(weeks) {
308
- if (weeks.disable) return
309
- if (this.cale.lastHover) return
310
- let {
311
- before,
312
- after
313
- } = this.cale.multipleStatus
314
- if (!before) return
315
- this.calendar = weeks
316
- // 设置范围选
317
- this.cale.setHoverMultiple(this.calendar.fullDate)
318
- this.weeks = this.cale.weeks
319
- // hover时,进入一个日历,更新另一个
320
- if (this.firstEnter) {
321
- this.$emit('firstEnterCale', this.cale.multipleStatus)
322
- this.firstEnter = false
323
- }
324
- },
325
- rangeWithinMonth(A, B) {
326
- const [yearA, monthA] = A.split('-')
327
- const [yearB, monthB] = B.split('-')
328
- return yearA === yearB && monthA === monthB
329
- },
330
-
331
- // 取消穿透
332
- clean() {
333
- this.close()
334
- },
335
-
336
- bindDateChange(e) {
337
- const value = e.detail.value + '-1'
338
- console.log(this.cale.getDate(value));
339
- this.init(value)
340
- },
341
- /**
342
- * 初始化日期显示
343
- * @param {Object} date
344
- */
345
- init(date) {
346
-
347
- this.cale.setDate(date)
348
- this.weeks = this.cale.weeks
349
- this.nowDate = this.calendar = this.cale.getInfo(date)
350
- },
351
- // choiceDate(weeks) {
352
- // if (weeks.disable) return
353
- // this.calendar = weeks
354
- // // 设置多选
355
- // this.cale.setMultiple(this.calendar.fullDate, true)
356
- // this.weeks = this.cale.weeks
357
- // this.tempSingleDate = this.calendar.fullDate
358
- // this.tempRange.before = this.cale.multipleStatus.before
359
- // this.tempRange.after = this.cale.multipleStatus.after
360
- // this.change()
361
- // },
362
- /**
363
- * 打开日历弹窗
364
- */
365
- open() {
366
- // 弹窗模式并且清理数据
367
- if (this.clearDate && !this.insert) {
368
- this.cale.cleanMultipleStatus()
369
- // this.cale.setDate(this.date)
370
- this.init(this.date)
371
- }
372
- this.show = true
373
- this.$nextTick(() => {
374
- setTimeout(() => {
375
- this.aniMaskShow = true
376
- }, 50)
377
- })
378
- },
379
- /**
380
- * 关闭日历弹窗
381
- */
382
- close() {
383
- this.aniMaskShow = false
384
- this.$nextTick(() => {
385
- setTimeout(() => {
386
- this.show = false
387
- this.$emit('close')
388
- }, 300)
389
- })
390
- },
391
- /**
392
- * 确认按钮
393
- */
394
- confirm() {
395
- this.setEmit('confirm')
396
- this.close()
397
- },
398
- /**
399
- * 变化触发
400
- */
401
- change() {
402
- if (!this.insert) return
403
- this.setEmit('change')
404
- },
405
- /**
406
- * 选择月份触发
407
- */
408
- monthSwitch() {
409
- let {
410
- year,
411
- month
412
- } = this.nowDate
413
- this.$emit('monthSwitch', {
414
- year,
415
- month: Number(month)
416
- })
417
- },
418
- /**
419
- * 派发事件
420
- * @param {Object} name
421
- */
422
- setEmit(name) {
423
- let {
424
- year,
425
- month,
426
- date,
427
- fullDate,
428
- lunar,
429
- extraInfo
430
- } = this.calendar
431
- this.$emit(name, {
432
- range: this.cale.multipleStatus,
433
- year,
434
- month,
435
- date,
436
- time: this.time,
437
- timeRange: this.timeRange,
438
- fulldate: fullDate,
439
- lunar,
440
- extraInfo: extraInfo || {}
441
- })
442
- },
443
- /**
444
- * 选择天触发
445
- * @param {Object} weeks
446
- */
447
- choiceDate(weeks) {
448
- if (weeks.disable) return
449
- this.calendar = weeks
450
- // 设置多选
451
- this.cale.setMultiple(this.calendar.fullDate, true)
452
- this.weeks = this.cale.weeks
453
- this.tempSingleDate = this.calendar.fullDate
454
- this.tempRange.before = this.cale.multipleStatus.before
455
- this.tempRange.after = this.cale.multipleStatus.after
456
- this.change()
457
- },
458
- /**
459
- * 回到今天
460
- */
461
- backtoday() {
462
- console.log(this.cale.getDate(new Date()).fullDate);
463
- let date = this.cale.getDate(new Date()).fullDate
464
- // this.cale.setDate(date)
465
- this.init(date)
466
- this.change()
467
- },
468
- /**
469
- * 比较时间大小
470
- */
471
- dateCompare(startDate, endDate) {
472
- // 计算截止时间
473
- startDate = new Date(startDate.replace('-', '/').replace('-', '/'))
474
- // 计算详细项的截止时间
475
- endDate = new Date(endDate.replace('-', '/').replace('-', '/'))
476
- if (startDate <= endDate) {
477
- return true
478
- } else {
479
- return false
480
- }
481
- },
482
- /**
483
- * 上个月
484
- */
485
- pre() {
486
- const preDate = this.cale.getDate(this.nowDate.fullDate, -1, 'month').fullDate
487
- this.setDate(preDate)
488
- this.monthSwitch()
489
-
490
- },
491
- /**
492
- * 下个月
493
- */
494
- next() {
495
- const nextDate = this.cale.getDate(this.nowDate.fullDate, +1, 'month').fullDate
496
- this.setDate(nextDate)
497
- this.monthSwitch()
498
- },
499
- /**
500
- * 设置日期
501
- * @param {Object} date
502
- */
503
- setDate(date) {
504
- this.cale.setDate(date)
505
- this.weeks = this.cale.weeks
506
- this.nowDate = this.cale.getInfo(date)
507
- }
508
- }
509
- }
510
- </script>
511
-
512
- <style scoped>
513
- .uni-calendar {
514
- /* #ifndef APP-NVUE */
515
- display: flex;
516
- /* #endif */
517
- flex-direction: column;
518
- }
519
-
520
- .uni-calendar__mask {
521
- position: fixed;
522
- bottom: 0;
523
- top: 0;
524
- left: 0;
525
- right: 0;
526
- background-color: rgba(0, 0, 0, 0.4);
527
- transition-property: opacity;
528
- transition-duration: 0.3s;
529
- opacity: 0;
530
- /* #ifndef APP-NVUE */
531
- z-index: 99;
532
- /* #endif */
533
- }
534
-
535
- .uni-calendar--mask-show {
536
- opacity: 1;
537
- }
538
-
539
- .uni-calendar--fixed {
540
- position: fixed;
541
- bottom: calc(var(--window-bottom));
542
- left: 0;
543
- right: 0;
544
- transition-property: transform;
545
- transition-duration: 0.3s;
546
- transform: translateY(460px);
547
- /* #ifndef APP-NVUE */
548
- z-index: 99;
549
- /* #endif */
550
- }
551
-
552
- .uni-calendar--ani-show {
553
- transform: translateY(0);
554
- }
555
-
556
- .uni-calendar__content {
557
- background-color: #fff;
558
- }
559
-
560
- .uni-calendar__header {
561
- position: relative;
562
- /* #ifndef APP-NVUE */
563
- display: flex;
564
- /* #endif */
565
- flex-direction: row;
566
- justify-content: center;
567
- align-items: center;
568
- height: 50px;
569
- }
570
-
571
- .uni-calendar--fixed-top {
572
- /* #ifndef APP-NVUE */
573
- display: flex;
574
- /* #endif */
575
- flex-direction: row;
576
- justify-content: space-between;
577
- border-top-color: #e5e5e5;
578
- border-top-style: solid;
579
- border-top-width: 1px;
580
- }
581
-
582
- .uni-calendar--fixed-width {
583
- width: 50px;
584
- }
585
-
586
- .uni-calendar__backtoday {
587
- position: absolute;
588
- right: 0;
589
- top: 25rpx;
590
- padding: 0 5px;
591
- padding-left: 10px;
592
- height: 25px;
593
- line-height: 25px;
594
- font-size: 12px;
595
- border-top-left-radius: 25px;
596
- border-bottom-left-radius: 25px;
597
- color: #333;
598
- background-color: #f1f1f1;
599
- }
600
-
601
- .uni-calendar__header-text {
602
- text-align: center;
603
- width: 100px;
604
- font-size: 14px;
605
- color: #333;
606
- }
607
-
608
- .uni-calendar__button-text {
609
- text-align: center;
610
- width: 100px;
611
- font-size: 14px;
612
- color: #007aff;
613
- /* #ifndef APP-NVUE */
614
- letter-spacing: 3px;
615
- /* #endif */
616
- }
617
-
618
- .uni-calendar__header-btn-box {
619
- /* #ifndef APP-NVUE */
620
- display: flex;
621
- /* #endif */
622
- flex-direction: row;
623
- align-items: center;
624
- justify-content: center;
625
- width: 50px;
626
- height: 50px;
627
- }
628
-
629
- .uni-calendar__header-btn {
630
- width: 10px;
631
- height: 10px;
632
- border-left-color: #808080;
633
- border-left-style: solid;
634
- border-left-width: 2px;
635
- border-top-color: #555555;
636
- border-top-style: solid;
637
- border-top-width: 2px;
638
- }
639
-
640
- .uni-calendar--left {
641
- transform: rotate(-45deg);
642
- }
643
-
644
- .uni-calendar--right {
645
- transform: rotate(135deg);
646
- }
647
-
648
- .uni-calendar__weeks {
649
- position: relative;
650
- /* #ifndef APP-NVUE */
651
- display: flex;
652
- /* #endif */
653
- flex-direction: row;
654
- }
655
-
656
- .uni-calendar__weeks-item {
657
- flex: 1;
658
- }
659
-
660
- .uni-calendar__weeks-day {
661
- flex: 1;
662
- /* #ifndef APP-NVUE */
663
- display: flex;
664
- /* #endif */
665
- flex-direction: column;
666
- justify-content: center;
667
- align-items: center;
668
- height: 45px;
669
- border-bottom-color: #F5F5F5;
670
- border-bottom-style: solid;
671
- border-bottom-width: 1px;
672
- }
673
-
674
- .uni-calendar__weeks-day-text {
675
- font-size: 14px;
676
- }
677
-
678
- .uni-calendar__box {
679
- position: relative;
680
- }
681
-
682
- .uni-calendar__box-bg {
683
- /* #ifndef APP-NVUE */
684
- display: flex;
685
- /* #endif */
686
- justify-content: center;
687
- align-items: center;
688
- position: absolute;
689
- top: 0;
690
- left: 0;
691
- right: 0;
692
- bottom: 0;
693
- }
694
-
695
- .uni-calendar__box-bg-text {
696
- font-size: 200px;
697
- font-weight: bold;
698
- color: #999;
699
- opacity: 0.1;
700
- text-align: center;
701
- /* #ifndef APP-NVUE */
702
- line-height: 1;
703
- /* #endif */
704
- }
705
-
706
- .uni-date-changed {
707
- padding: 0 10px;
708
- text-align: center;
709
- color: #333;
710
- border-top-color: #e5e5e5;
711
- border-top-style: solid;
712
- border-top-width: 1px;
713
- flex: 1;
714
- }
715
-
716
- .uni-date-changed--time-start {
717
- /* #ifndef APP-NVUE */
718
- display: flex;
719
- /* #endif */
720
- align-items: center;
721
- }
722
-
723
- .uni-date-changed--time-end {
724
- /* #ifndef APP-NVUE */
725
- display: flex;
726
- /* #endif */
727
- align-items: center;
728
- }
729
-
730
- .uni-date-changed--time-date {
731
- color: #999;
732
- line-height: 50px;
733
- }
734
-
735
- .time-picker-style {
736
- width: 62px;
737
- /* #ifndef APP-NVUE */
738
- display: flex;
739
- /* #endif */
740
- justify-content: center;
741
- align-items: center;
742
- }
743
-
744
- .mr-10 {
745
- margin-right: 10px;
746
- }
747
- </style>