gxd-uni-library-editx 1.0.0

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 (215) hide show
  1. package/.editorconfig +14 -0
  2. package/README.md +447 -0
  3. package/index.js +3 -0
  4. package/package.json +104 -0
  5. package/postcss.config.js +22 -0
  6. package/settings.js.tpl +68 -0
  7. package/src/XdAppClass.1.0.js +257 -0
  8. package/src/XdAppClass.js +150 -0
  9. package/src/components/XdAddress/XdAddress.vue +579 -0
  10. package/src/components/XdAddressSelect/XdAddressSelect.vue +243 -0
  11. package/src/components/XdBaiduMap/XdBaiduMap.vue +204 -0
  12. package/src/components/XdBaiduOverlay/XdBaiduOverlay.vue +345 -0
  13. package/src/components/XdBaiduSearch/XdBaiduSearch.vue +354 -0
  14. package/src/components/XdBar/XdBar.vue +339 -0
  15. package/src/components/XdButton/XdButton.vue +288 -0
  16. package/src/components/XdCartList/XdCartList.vue +791 -0
  17. package/src/components/XdCartNoStoreList/XdCartNoStoreList.vue +747 -0
  18. package/src/components/XdCity/XdCity.vue +620 -0
  19. package/src/components/XdCity/city.js +93 -0
  20. package/src/components/XdCity/testData.js +124 -0
  21. package/src/components/XdCityLocation/XdCityLocation.vue +314 -0
  22. package/src/components/XdCityLocation/jweixin.js +72 -0
  23. package/src/components/XdCityShow/XdCityShow.vue +354 -0
  24. package/src/components/XdClipImage/XdClipImage.vue +879 -0
  25. package/src/components/XdCoins/XdCoins.vue +66 -0
  26. package/src/components/XdConfirm/XdConfirm.vue +240 -0
  27. package/src/components/XdContentXss/XdContentXss.vue +71 -0
  28. package/src/components/XdDailog/XdDailog.vue +258 -0
  29. package/src/components/XdDate/XdDataItemOne.vue +236 -0
  30. package/src/components/XdDate/XdDate.vue +1081 -0
  31. package/src/components/XdDate/XdDateItem.vue +316 -0
  32. package/src/components/XdDate/XdDateTime.vue +929 -0
  33. package/src/components/XdDate/i18n/en.json +19 -0
  34. package/src/components/XdDate/i18n/index.js +8 -0
  35. package/src/components/XdDate/i18n/zh-Hans.json +19 -0
  36. package/src/components/XdDate/i18n/zh-Hant.json +19 -0
  37. package/src/components/XdDate/keypress.js +45 -0
  38. package/src/components/XdDate/util.js +418 -0
  39. package/src/components/XdDownDrawer/XdDownDrawer.vue +176 -0
  40. package/src/components/XdEditPwd/XdEditPwd.vue +305 -0
  41. package/src/components/XdEnterOrderList/XdEnterOrderList.vue +413 -0
  42. package/src/components/XdExpressTimeLine/XdExpressTimeLine.vue +280 -0
  43. package/src/components/XdFilter/XdFilter.vue +541 -0
  44. package/src/components/XdFontIcon/XdFontIcon.vue +165 -0
  45. package/src/components/XdFontIcon/css/icon.less +498 -0
  46. package/src/components/XdFooterBar/XdFooterBar.vue +291 -0
  47. package/src/components/XdFooterTabbar/XdFooterTabbar.vue +284 -0
  48. package/src/components/XdForm/XdForm.vue +481 -0
  49. package/src/components/XdForm/validate.js +486 -0
  50. package/src/components/XdFormCheckbox/XdFormCheckbox.vue +858 -0
  51. package/src/components/XdFormDate.vue +187 -0
  52. package/src/components/XdFormInput/XdFormInput.vue +535 -0
  53. package/src/components/XdFormInput/common.js +56 -0
  54. package/src/components/XdFormItem/XdFormItem.vue +583 -0
  55. package/src/components/XdFormSelect/XdFormSelect.vue +119 -0
  56. package/src/components/XdImage/XdImage.vue +113 -0
  57. package/src/components/XdItemCardUser/XdItemCardUser.vue +232 -0
  58. package/src/components/XdItemFilmImage/XdItemFilmImage.vue +146 -0
  59. package/src/components/XdItemFilmText/XdItemFilmText.vue +83 -0
  60. package/src/components/XdItemPhysical/XdItemPhysical.vue +410 -0
  61. package/src/components/XdItemPhysicalPack/XdItemPhysicalPack.vue +240 -0
  62. package/src/components/XdItemStore/XdItemStore.vue +236 -0
  63. package/src/components/XdItemUserInfo/XdItemUserInfo.vue +175 -0
  64. package/src/components/XdJson/XdJson.vue +398 -0
  65. package/src/components/XdKeyValue/XdKeyValue.vue +150 -0
  66. package/src/components/XdLabelNew/XdLabelNew.vue +193 -0
  67. package/src/components/XdLayout/XdLayout.vue +634 -0
  68. package/src/components/XdLoading/XdLoading.vue +165 -0
  69. package/src/components/XdMore/XdMore.vue +66 -0
  70. package/src/components/XdMpHtml/XdMpHtml.vue +458 -0
  71. package/src/components/XdMpHtml/node/node.vue +536 -0
  72. package/src/components/XdMpHtml/parser.js +1260 -0
  73. package/src/components/XdMpHtml/static/js/handler.js +1 -0
  74. package/src/components/XdMpHtml/static/js/uni.webview.min.js +1 -0
  75. package/src/components/XdMpHtml/static/local.html +1 -0
  76. package/src/components/XdMy/XdMy.vue +294 -0
  77. package/src/components/XdMySuccess/XdMySuccess.vue +603 -0
  78. package/src/components/XdNavTab/XdNavTab.vue +147 -0
  79. package/src/components/XdNoData/XdNoData.vue +87 -0
  80. package/src/components/XdNoticeBar/XdNoticeBar.vue +501 -0
  81. package/src/components/XdNumber/XdNumber.vue +210 -0
  82. package/src/components/XdNumberUni/XdNumberUni.vue +270 -0
  83. package/src/components/XdNumberUni/readme.md +42 -0
  84. package/src/components/XdOnlineConfirm/XdOnlineConfirm.vue +385 -0
  85. package/src/components/XdOnlineDetail/XdOnlineDetail.vue +332 -0
  86. package/src/components/XdOnlinePay/XdOnlinePay.vue +349 -0
  87. package/src/components/XdOnlineSchedule/XdOnlineSchedule.vue +453 -0
  88. package/src/components/XdOnlineSeat/XdOnlineSeat.vue +796 -0
  89. package/src/components/XdOnlineSeatMove/XdOnlineSeatMove.vue +1012 -0
  90. package/src/components/XdPayCombo/XdPayCombo.vue +118 -0
  91. package/src/components/XdPreviewImage/XdPreviewImage.vue +372 -0
  92. package/src/components/XdPwPay/XdPwPay.vue +214 -0
  93. package/src/components/XdRadio/XdRadio.vue +151 -0
  94. package/src/components/XdRangeSlider/XdRangeSlider.vue +355 -0
  95. package/src/components/XdRedName/XdRedName.vue +35 -0
  96. package/src/components/XdSearchBar/XdSearchBar.vue +286 -0
  97. package/src/components/XdSelect/XdSelect.vue +382 -0
  98. package/src/components/XdSelectCity/XdSelectCity.vue +270 -0
  99. package/src/components/XdSelectTime/XdSelectTime.vue +342 -0
  100. package/src/components/XdStar/XdStar.vue +261 -0
  101. package/src/components/XdStoreCashier/XdStoreCashier.vue +526 -0
  102. package/src/components/XdStoreItem/XdStoreItem.vue +400 -0
  103. package/src/components/XdStoreOrderDetail/XdStoreOrderDetail.vue +1571 -0
  104. package/src/components/XdStoreOrderList/XdStoreOrderList.vue +450 -0
  105. package/src/components/XdStoreProductInfo/XdStoreProductInfo.vue +940 -0
  106. package/src/components/XdStoreProductType/XdStoreProductType.vue +307 -0
  107. package/src/components/XdSuccess/XdSuccess.vue +527 -0
  108. package/src/components/XdSwipeSelect/XdSwipeSelect.vue +99 -0
  109. package/src/components/XdSwiper/XdSwiper.vue +124 -0
  110. package/src/components/XdSwitch/XdSwitch.vue +204 -0
  111. package/src/components/XdTab/XdTab.vue +220 -0
  112. package/src/components/XdTabScroll/XdTabScroll.vue +212 -0
  113. package/src/components/XdTag/XdTag.vue +423 -0
  114. package/src/components/XdTimeLine/XdTimeLine.vue +121 -0
  115. package/src/components/XdTips/XdTips.vue +212 -0
  116. package/src/components/XdTipsBlock/XdTipsBlock.vue +141 -0
  117. package/src/components/XdTitleSection/XdTitleSection.vue +152 -0
  118. package/src/components/XdTitleTab/XdTitleTab.vue +227 -0
  119. package/src/components/XdUnit/XdUnit.vue +206 -0
  120. package/src/components/XdUpload/XdUpload.vue +197 -0
  121. package/src/components/XdUploadImage/XdUploadImage.vue +145 -0
  122. package/src/components/Xdlogs/XdLogs.vue +144 -0
  123. package/src/components/autoload.js +211 -0
  124. package/src/components/swipeAction/UniSwipeAction.vue +43 -0
  125. package/src/components/swipeActionItem/UniSwipeActionItem.vue +386 -0
  126. package/src/components/swipeActionItem/bindingx.js +298 -0
  127. package/src/components/swipeActionItem/index.wxs +321 -0
  128. package/src/components/swipeActionItem/isPC.js +18 -0
  129. package/src/components/swipeActionItem/mpalipay.js +210 -0
  130. package/src/components/swipeActionItem/mpother.js +252 -0
  131. package/src/components/swipeActionItem/mpwxs.js +140 -0
  132. package/src/dome/dome/address.vue +415 -0
  133. package/src/dome/dome/auth/login.vue +166 -0
  134. package/src/dome/dome/baidu_show.vue +20 -0
  135. package/src/dome/dome/cake.vue +186 -0
  136. package/src/dome/dome/cart.vue +205 -0
  137. package/src/dome/dome/cart_store.vue +149 -0
  138. package/src/dome/dome/cashier/cashier.vue +73 -0
  139. package/src/dome/dome/cashier/check_cashier.vue +469 -0
  140. package/src/dome/dome/cashier/success.vue +127 -0
  141. package/src/dome/dome/city.vue +148 -0
  142. package/src/dome/dome/cityData.js +9 -0
  143. package/src/dome/dome/clip.vue +82 -0
  144. package/src/dome/dome/date/date.vue +273 -0
  145. package/src/dome/dome/date/selected.js +315 -0
  146. package/src/dome/dome/dcom/app1.vue +13 -0
  147. package/src/dome/dome/dcom/app2.vue +13 -0
  148. package/src/dome/dome/dcom/app3.vue +13 -0
  149. package/src/dome/dome/dcom/app4.vue +13 -0
  150. package/src/dome/dome/dcom/app5.vue +13 -0
  151. package/src/dome/dome/dcom/index.vue +1 -0
  152. package/src/dome/dome/debug/debug.vue +95 -0
  153. package/src/dome/dome/docache/docache.vue +88 -0
  154. package/src/dome/dome/express.vue +269 -0
  155. package/src/dome/dome/form.vue +312 -0
  156. package/src/dome/dome/icon.js +125 -0
  157. package/src/dome/dome/icon.vue +93 -0
  158. package/src/dome/dome/index.vue +725 -0
  159. package/src/dome/dome/item.vue +236 -0
  160. package/src/dome/dome/json/json.vue +88 -0
  161. package/src/dome/dome/layout.vue +105 -0
  162. package/src/dome/dome/line.vue +113 -0
  163. package/src/dome/dome/map/search.vue +70 -0
  164. package/src/dome/dome/my.vue +171 -0
  165. package/src/dome/dome/notice.vue +93 -0
  166. package/src/dome/dome/online/confirm.vue +92 -0
  167. package/src/dome/dome/online/detail.vue +80 -0
  168. package/src/dome/dome/online/pay.vue +78 -0
  169. package/src/dome/dome/online/schedule.vue +73 -0
  170. package/src/dome/dome/online/seat.vue +98 -0
  171. package/src/dome/dome/order/detail.vue +166 -0
  172. package/src/dome/dome/order/enter_order.vue +294 -0
  173. package/src/dome/dome/order/list.vue +219 -0
  174. package/src/dome/dome/order/order.js +18 -0
  175. package/src/dome/dome/order/success.vue +68 -0
  176. package/src/dome/dome/product.vue +179 -0
  177. package/src/dome/dome/store_cashier.vue +67 -0
  178. package/src/dome/dome/swiper.vue +32 -0
  179. package/src/dome/dome/webview.vue +61 -0
  180. package/src/install.js +183 -0
  181. package/src/main/address/address.vue +251 -0
  182. package/src/main/cart/cart.vue +149 -0
  183. package/src/main/cashier/cashier.vue +72 -0
  184. package/src/main/cashier/check_cashier.vue +483 -0
  185. package/src/main/city/city.vue +149 -0
  186. package/src/main/date/date.vue +260 -0
  187. package/src/main/order/order.js +19 -0
  188. package/src/main/order/order.vue +222 -0
  189. package/src/main/product/detail.vue +121 -0
  190. package/src/main/product/type.vue +108 -0
  191. package/src/main/search/search.vue +501 -0
  192. package/src/pages.json +337 -0
  193. package/src/plugins/CreatedComponentsPlugin.js +19 -0
  194. package/src/plugins/JsonRename.js +72 -0
  195. package/src/plugins/SetAppParams.js +171 -0
  196. package/src/project.js +18 -0
  197. package/src/utils/Cookie.js +68 -0
  198. package/src/utils/Runtime.js +105 -0
  199. package/src/utils/Storage.js +104 -0
  200. package/src/utils/XdNetwork.js +133 -0
  201. package/src/utils/helper.js +1321 -0
  202. package/src/utils/nourl.js +95 -0
  203. package/src/utils/project.js +17 -0
  204. package/src/utils/xd.auth.js +61 -0
  205. package/src/utils/xd.base.js +474 -0
  206. package/src/utils/xd.common.js +240 -0
  207. package/src/utils/xd.event.js +99 -0
  208. package/src/utils/xd.frame.js +96 -0
  209. package/src/utils/xd.path.js +96 -0
  210. package/src/utils/xdAppLog.js +170 -0
  211. package/src/utils/xdWxLog.js +302 -0
  212. package/src/utils/xdh5log.js +307 -0
  213. package/src/websetting.js +64 -0
  214. package/tsconfig.json +9 -0
  215. package/xd.less +180 -0
@@ -0,0 +1,19 @@
1
+ {
2
+ "uni-datetime-picker.selectDate": "select date",
3
+ "uni-datetime-picker.selectTime": "select time",
4
+ "uni-datetime-picker.selectDateTime": "select datetime",
5
+ "uni-datetime-picker.startDate": "start date",
6
+ "uni-datetime-picker.endDate": "end date",
7
+ "uni-datetime-picker.startTime": "start time",
8
+ "uni-datetime-picker.endTime": "end time",
9
+ "uni-datetime-picker.ok": "ok",
10
+ "uni-datetime-picker.clear": "clear",
11
+ "uni-datetime-picker.cancel": "cancel",
12
+ "uni-calender.MON": "MON",
13
+ "uni-calender.TUE": "TUE",
14
+ "uni-calender.WED": "WED",
15
+ "uni-calender.THU": "THU",
16
+ "uni-calender.FRI": "FRI",
17
+ "uni-calender.SAT": "SAT",
18
+ "uni-calender.SUN": "SUN"
19
+ }
@@ -0,0 +1,8 @@
1
+ import en from './en.json'
2
+ import zhHans from './zh-Hans.json'
3
+ import zhHant from './zh-Hant.json'
4
+ export default {
5
+ en,
6
+ 'zh-Hans': zhHans,
7
+ 'zh-Hant': zhHant
8
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "uni-datetime-picker.selectDate": "选择日期",
3
+ "uni-datetime-picker.selectTime": "选择时间",
4
+ "uni-datetime-picker.selectDateTime": "选择日期时间",
5
+ "uni-datetime-picker.startDate": "开始日期",
6
+ "uni-datetime-picker.endDate": "结束日期",
7
+ "uni-datetime-picker.startTime": "开始时间",
8
+ "uni-datetime-picker.endTime": "结束时间",
9
+ "uni-datetime-picker.ok": "确定",
10
+ "uni-datetime-picker.clear": "清除",
11
+ "uni-datetime-picker.cancel": "取消",
12
+ "uni-calender.SUN": "日",
13
+ "uni-calender.MON": "一",
14
+ "uni-calender.TUE": "二",
15
+ "uni-calender.WED": "三",
16
+ "uni-calender.THU": "四",
17
+ "uni-calender.FRI": "五",
18
+ "uni-calender.SAT": "六"
19
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "uni-datetime-picker.selectDate": "選擇日期",
3
+ "uni-datetime-picker.selectTime": "選擇時間",
4
+ "uni-datetime-picker.selectDateTime": "選擇日期時間",
5
+ "uni-datetime-picker.startDate": "開始日期",
6
+ "uni-datetime-picker.endDate": "結束日期",
7
+ "uni-datetime-picker.startTime": "開始时间",
8
+ "uni-datetime-picker.endTime": "結束时间",
9
+ "uni-datetime-picker.ok": "確定",
10
+ "uni-datetime-picker.clear": "清除",
11
+ "uni-datetime-picker.cancel": "取消",
12
+ "uni-calender.SUN": "日",
13
+ "uni-calender.MON": "一",
14
+ "uni-calender.TUE": "二",
15
+ "uni-calender.WED": "三",
16
+ "uni-calender.THU": "四",
17
+ "uni-calender.FRI": "五",
18
+ "uni-calender.SAT": "六"
19
+ }
@@ -0,0 +1,45 @@
1
+ // #ifdef H5
2
+ export default {
3
+ name: 'Keypress',
4
+ props: {
5
+ disable: {
6
+ type: Boolean,
7
+ default: false
8
+ }
9
+ },
10
+ mounted () {
11
+ const keyNames = {
12
+ esc: ['Esc', 'Escape'],
13
+ tab: 'Tab',
14
+ enter: 'Enter',
15
+ space: [' ', 'Spacebar'],
16
+ up: ['Up', 'ArrowUp'],
17
+ left: ['Left', 'ArrowLeft'],
18
+ right: ['Right', 'ArrowRight'],
19
+ down: ['Down', 'ArrowDown'],
20
+ delete: ['Backspace', 'Delete', 'Del']
21
+ }
22
+ const listener = ($event) => {
23
+ if (this.disable) {
24
+ return
25
+ }
26
+ const keyName = Object.keys(keyNames).find(key => {
27
+ const keyName = $event.key
28
+ const value = keyNames[key]
29
+ return value === keyName || (Array.isArray(value) && value.includes(keyName))
30
+ })
31
+ if (keyName) {
32
+ // 避免和其他按键事件冲突
33
+ setTimeout(() => {
34
+ this.$emit(keyName, {})
35
+ }, 0)
36
+ }
37
+ }
38
+ document.addEventListener('keyup', listener)
39
+ this.$once('hook:beforeDestroy', () => {
40
+ document.removeEventListener('keyup', listener)
41
+ })
42
+ },
43
+ render: () => {}
44
+ }
45
+ // #endif
@@ -0,0 +1,418 @@
1
+ class Calendar {
2
+ constructor({
3
+ date,
4
+ selected,
5
+ startDate,
6
+ endDate,
7
+ range,
8
+ // multipleStatus
9
+ } = {}) {
10
+ // 当前日期
11
+ this.date = this.getDate(new Date()) // 当前初入日期
12
+ // 打点信息
13
+ this.selected = selected || [];
14
+ // 范围开始
15
+ this.startDate = startDate
16
+ // 范围结束
17
+ this.endDate = endDate
18
+ this.range = range
19
+ // 多选状态
20
+ this.cleanMultipleStatus()
21
+ // 每周日期
22
+ this.weeks = {}
23
+ // this._getWeek(this.date.fullDate)
24
+ // this.multipleStatus = multipleStatus
25
+ this.lastHover = false
26
+ }
27
+ /**
28
+ * 设置日期
29
+ * @param {Object} date
30
+ */
31
+ setDate(date) {
32
+ this.selectDate = this.getDate(date)
33
+ this._getWeek(this.selectDate.fullDate)
34
+ }
35
+
36
+ /**
37
+ * 设置打点
38
+ */
39
+ setSelectInfo(data, value) {
40
+ this.selected = value;
41
+ this._getWeek(data, value)
42
+ }
43
+
44
+ /**
45
+ * 清理多选状态
46
+ */
47
+ cleanMultipleStatus() {
48
+ this.multipleStatus = {
49
+ before: '',
50
+ after: '',
51
+ data: []
52
+ }
53
+ }
54
+
55
+ /**
56
+ * 重置开始日期
57
+ */
58
+ resetSatrtDate(startDate) {
59
+ // 范围开始
60
+ this.startDate = startDate
61
+
62
+ }
63
+
64
+ /**
65
+ * 重置结束日期
66
+ */
67
+ resetEndDate(endDate) {
68
+ // 范围结束
69
+ this.endDate = endDate
70
+ }
71
+
72
+ /**
73
+ * 获取任意时间
74
+ */
75
+ getDate(date, AddDayCount = 0, str = 'day') {
76
+ if (!date) {
77
+ date = new Date()
78
+ }
79
+ if (typeof date !== 'object') {
80
+ date = date.replace(/-/g, '/')
81
+ }
82
+ const dd = new Date(date)
83
+ switch (str) {
84
+ case 'day':
85
+ dd.setDate(dd.getDate() + AddDayCount) // 获取AddDayCount天后的日期
86
+ break
87
+ case 'month':
88
+ if (dd.getDate() === 31) {
89
+ dd.setDate(dd.getDate() + AddDayCount)
90
+ } else {
91
+ dd.setMonth(dd.getMonth() + AddDayCount) // 获取AddDayCount天后的日期
92
+ }
93
+ break
94
+ case 'year':
95
+ dd.setFullYear(dd.getFullYear() + AddDayCount) // 获取AddDayCount天后的日期
96
+ break
97
+ }
98
+ const y = dd.getFullYear()
99
+ const m = dd.getMonth() + 1 < 10 ? '0' + (dd.getMonth() + 1) : dd.getMonth() + 1 // 获取当前月份的日期,不足10补0
100
+ const d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate() // 获取当前几号,不足10补0
101
+ return {
102
+ fullDate: y + '-' + m + '-' + d,
103
+ year: y,
104
+ month: m,
105
+ date: d,
106
+ day: dd.getDay()
107
+ }
108
+ }
109
+
110
+
111
+ /**
112
+ * 获取上月剩余天数
113
+ */
114
+ _getLastMonthDays(firstDay, full) {
115
+ let dateArr = []
116
+ for (let i = firstDay; i > 0; i--) {
117
+ const beforeDate = new Date(full.year, full.month - 1, -i + 1).getDate()
118
+ dateArr.push({
119
+ date: beforeDate,
120
+ month: full.month - 1,
121
+ disable: true
122
+ })
123
+ }
124
+ return dateArr
125
+ }
126
+ /**
127
+ * 获取本月天数
128
+ */
129
+ _currentMonthDys(dateData, full) {
130
+ let dateArr = []
131
+ let fullDate = this.date.fullDate
132
+ for (let i = 1; i <= dateData; i++) {
133
+ let isinfo = false
134
+ let nowDate = full.year + '-' + (full.month < 10 ?
135
+ full.month : full.month) + '-' + (i < 10 ?
136
+ '0' + i : i)
137
+ // 是否今天
138
+ let isDay = fullDate === nowDate
139
+ // 获取打点信息
140
+ let info = this.selected && this.selected.find((item) => {
141
+ if (this.dateEqual(nowDate, item.date)) {
142
+ return item
143
+ }
144
+ });
145
+
146
+ // 日期禁用
147
+ let disableBefore = true
148
+ let disableAfter = true
149
+ if (this.startDate) {
150
+ // let dateCompBefore = this.dateCompare(this.startDate, fullDate)
151
+ // disableBefore = this.dateCompare(dateCompBefore ? this.startDate : fullDate, nowDate)
152
+ disableBefore = this.dateCompare(this.startDate, nowDate)
153
+ }
154
+
155
+ if (this.endDate) {
156
+ // let dateCompAfter = this.dateCompare(fullDate, this.endDate)
157
+ // disableAfter = this.dateCompare(nowDate, dateCompAfter ? this.endDate : fullDate)
158
+ disableAfter = this.dateCompare(nowDate, this.endDate)
159
+ }
160
+ let multiples = this.multipleStatus.data
161
+ let checked = false
162
+ let multiplesStatus = -1
163
+ if (this.range) {
164
+ if (multiples) {
165
+ multiplesStatus = multiples.findIndex((item) => {
166
+ return this.dateEqual(item, nowDate)
167
+ })
168
+ }
169
+ if (multiplesStatus !== -1) {
170
+ checked = true
171
+ }
172
+ }
173
+ let data = {
174
+ fullDate: nowDate,
175
+ year: full.year,
176
+ date: i,
177
+ multiple: this.range ? checked : false,
178
+ beforeMultiple: this.isLogicBefore(nowDate, this.multipleStatus.before, this.multipleStatus.after),
179
+ afterMultiple: this.isLogicAfter(nowDate, this.multipleStatus.before, this.multipleStatus.after),
180
+ month: full.month,
181
+ disable: !(disableBefore && disableAfter),
182
+ isDay,
183
+ userChecked: false
184
+ }
185
+ if (info) {
186
+ data.extraInfo = info
187
+ }
188
+
189
+ dateArr.push(data)
190
+ }
191
+ return dateArr
192
+ }
193
+ /**
194
+ * 获取下月天数
195
+ */
196
+ _getNextMonthDays(surplus, full) {
197
+ let dateArr = []
198
+ for (let i = 1; i < surplus + 1; i++) {
199
+ dateArr.push({
200
+ date: i,
201
+ month: Number(full.month) + 1,
202
+ disable: true
203
+ })
204
+ }
205
+ return dateArr
206
+ }
207
+
208
+ /**
209
+ * 获取当前日期详情
210
+ * @param {Object} date
211
+ */
212
+ getInfo(date) {
213
+ if (!date) {
214
+ date = new Date()
215
+ }
216
+ const dateInfo = this.canlender.find(item => item.fullDate === this.getDate(date).fullDate)
217
+ return dateInfo
218
+ }
219
+
220
+ /**
221
+ * 比较时间大小
222
+ */
223
+ dateCompare(startDate, endDate) {
224
+ // 计算截止时间
225
+ startDate = new Date(startDate.replace('-', '/').replace('-', '/'))
226
+ // 计算详细项的截止时间
227
+ endDate = new Date(endDate.replace('-', '/').replace('-', '/'))
228
+ if (startDate <= endDate) {
229
+ return true
230
+ } else {
231
+ return false
232
+ }
233
+ }
234
+
235
+ /**
236
+ * 比较时间是否相等
237
+ */
238
+ dateEqual(before, after) {
239
+ // 计算截止时间
240
+ before = new Date(before.replace('-', '/').replace('-', '/'))
241
+ // 计算详细项的截止时间
242
+ after = new Date(after.replace('-', '/').replace('-', '/'))
243
+ if (before.getTime() - after.getTime() === 0) {
244
+ return true
245
+ } else {
246
+ return false
247
+ }
248
+ }
249
+
250
+ /**
251
+ * 比较真实起始日期
252
+ */
253
+
254
+ isLogicBefore(currentDay, before, after) {
255
+ let logicBefore = before
256
+ if (before && after) {
257
+ logicBefore = this.dateCompare(before, after) ? before : after
258
+ }
259
+ return this.dateEqual(logicBefore, currentDay)
260
+ }
261
+
262
+ isLogicAfter(currentDay, before, after) {
263
+ let logicAfter = after
264
+ if (before && after) {
265
+ logicAfter = this.dateCompare(before, after) ? after : before
266
+ }
267
+ return this.dateEqual(logicAfter, currentDay)
268
+ }
269
+
270
+ /**
271
+ * 获取日期范围内所有日期
272
+ * @param {Object} begin
273
+ * @param {Object} end
274
+ */
275
+ geDateAll(begin, end) {
276
+ var arr = []
277
+ var ab = begin.split('-')
278
+ var ae = end.split('-')
279
+ var db = new Date()
280
+ db.setFullYear(ab[0], ab[1] - 1, ab[2])
281
+ var de = new Date()
282
+ de.setFullYear(ae[0], ae[1] - 1, ae[2])
283
+ var unixDb = db.getTime() - 24 * 60 * 60 * 1000
284
+ var unixDe = de.getTime() - 24 * 60 * 60 * 1000
285
+ for (var k = unixDb; k <= unixDe;) {
286
+ k = k + 24 * 60 * 60 * 1000
287
+ arr.push(this.getDate(new Date(parseInt(k))).fullDate)
288
+ }
289
+ return arr
290
+ }
291
+
292
+ /**
293
+ * 获取多选状态
294
+ */
295
+ setMultiple(fullDate) {
296
+ let {
297
+ before,
298
+ after
299
+ } = this.multipleStatus
300
+ if (!this.range) return
301
+ if (before && after) {
302
+ if (!this.lastHover) {
303
+ this.lastHover = true
304
+ return
305
+ }
306
+ this.multipleStatus.before = fullDate
307
+ this.multipleStatus.after = ''
308
+ this.multipleStatus.data = []
309
+ this.multipleStatus.fulldate = ''
310
+ this.lastHover = false
311
+ } else {
312
+ this.lastHover = false
313
+ if (!before) {
314
+ this.multipleStatus.before = fullDate
315
+ } else {
316
+ this.multipleStatus.after = fullDate
317
+ if (this.dateCompare(this.multipleStatus.before, this.multipleStatus.after)) {
318
+ this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus
319
+ .after);
320
+ } else {
321
+ this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus
322
+ .before);
323
+ }
324
+ }
325
+ }
326
+ this._getWeek(fullDate)
327
+ }
328
+
329
+ /**
330
+ * 鼠标 hover 更新多选状态
331
+ */
332
+ setHoverMultiple(fullDate) {
333
+ let {
334
+ before,
335
+ after
336
+ } = this.multipleStatus
337
+
338
+ if (!this.range) return
339
+ if (this.lastHover) return
340
+
341
+ if (!before) {
342
+ this.multipleStatus.before = fullDate
343
+ } else {
344
+ this.multipleStatus.after = fullDate
345
+ if (this.dateCompare(this.multipleStatus.before, this.multipleStatus.after)) {
346
+ this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus.after);
347
+ } else {
348
+ this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus.before);
349
+ }
350
+ }
351
+ this._getWeek(fullDate)
352
+ }
353
+
354
+ /**
355
+ * 更新默认值多选状态
356
+ */
357
+ setDefaultMultiple(before, after) {
358
+ this.multipleStatus.before = before
359
+ this.multipleStatus.after = after
360
+ if (before && after) {
361
+ if (this.dateCompare(before, after)) {
362
+ this.multipleStatus.data = this.geDateAll(before, after);
363
+ this._getWeek(after)
364
+ } else {
365
+ this.multipleStatus.data = this.geDateAll(after, before);
366
+ this._getWeek(before)
367
+ }
368
+ }
369
+ }
370
+
371
+ /**
372
+ * 获取每周数据
373
+ * @param {Object} dateData
374
+ * @param {}
375
+ */
376
+ _getWeek(dateData, extraInfo) {
377
+ const {
378
+ fullDate,
379
+ year,
380
+ month,
381
+ date,
382
+ day
383
+ } = this.getDate(dateData)
384
+ let firstDay = new Date(year, month - 1, 1).getDay()
385
+ let currentDay = new Date(year, month, 0).getDate()
386
+ let dates = {
387
+ lastMonthDays: this._getLastMonthDays(firstDay, this.getDate(dateData)), // 上个月末尾几天
388
+ currentMonthDys: this._currentMonthDys(currentDay, this.getDate(dateData)), // 本月天数
389
+ nextMonthDays: [], // 下个月开始几天
390
+ weeks: []
391
+ }
392
+ let canlender = []
393
+ const surplus = 42 - (dates.lastMonthDays.length + dates.currentMonthDys.length)
394
+ dates.nextMonthDays = this._getNextMonthDays(surplus, this.getDate(dateData))
395
+ canlender = canlender.concat(dates.lastMonthDays, dates.currentMonthDys, dates.nextMonthDays)
396
+ let weeks = {}
397
+ // 拼接数组 上个月开始几天 + 本月天数+ 下个月开始几天
398
+ for (let i = 0; i < canlender.length; i++) {
399
+ if (i % 7 === 0) {
400
+ weeks[parseInt(i / 7)] = new Array(7)
401
+ }
402
+ weeks[parseInt(i / 7)][i % 7] = canlender[i]
403
+ }
404
+ this.canlender = canlender
405
+ this.weeks = weeks
406
+ }
407
+
408
+ //静态方法
409
+ // static init(date) {
410
+ // if (!this.instance) {
411
+ // this.instance = new Calendar(date);
412
+ // }
413
+ // return this.instance;
414
+ // }
415
+ }
416
+
417
+
418
+ export default Calendar
@@ -0,0 +1,176 @@
1
+ <template>
2
+ <view class="xd-up-drawer" :style="getStyle" @click="bodyClose">
3
+ <view class="xd-up-drawer__warper" :style="{minHeight: height}" @click.stop>
4
+ <view class="xd-up-drawer__close" v-if="isClose" @click="close">
5
+ <xd-font-icon
6
+ size="36"
7
+ icon="icondanchuangguanbi_xian"
8
+ color="#999"
9
+ :width="40"
10
+ :height="40"
11
+ ></xd-font-icon>
12
+ </view>
13
+ <view class="xd-up-drawer__content" :style="{minHeight: height}">
14
+ <slot></slot>
15
+ </view>
16
+ </view>
17
+ </view>
18
+ </template>
19
+
20
+ <script>
21
+ /**
22
+ * XdDowncDrawer 抽屉UI
23
+ * @description 从下往上抽屉插件
24
+ * @tutorial
25
+ * @property {boolean} isBodyClose 点击body区域是否关闭
26
+ * @property {number} zIndex 插件层级显示 默认: 2000
27
+ * @property {babel} show 插件是否显示 默认:false=>不显示
28
+ * @property {number} margin 插件左右下边距 默认: 0rpx(设计稿750px)
29
+ * @property {String} radius 插件圆角数字 默认:20rpx(设计稿750px)
30
+ * @property {Boolean} isClose 是否显示关闭按钮
31
+ *
32
+ * @event {Function} close 点击关闭ICON事件 e
33
+ */
34
+
35
+ import XdFontIcon from "@/components/XdFontIcon/XdFontIcon";
36
+
37
+ export default {
38
+ name: "XdDownDrawer",
39
+ components: {
40
+ XdFontIcon
41
+ },
42
+ props:{
43
+ zIndex: {
44
+ type: Number,
45
+ default: 1000
46
+ },
47
+
48
+ isBodyClose:{
49
+ type: Boolean,
50
+ default: true,
51
+ },
52
+
53
+ show: {
54
+ type: Boolean,
55
+ default: false,
56
+ },
57
+
58
+ isClose: {
59
+ type: Boolean,
60
+ default: true,
61
+ },
62
+
63
+ height: {
64
+ type: String,
65
+ default: '50vh'
66
+ },
67
+
68
+ /**
69
+ * @description 是否启动全屏遮罩
70
+ */
71
+ fullscreen: {
72
+ type: Boolean,
73
+ default: true,
74
+ }
75
+ },
76
+ computed:{
77
+ getStyle(){
78
+ let style = `z-index: ${this.uizIndex}`;
79
+ if(this.isShow) {
80
+ style = `${style};top:0; bottom: ${this.bottomTabberHeight}px;`;
81
+ }
82
+ else {
83
+ style = `${style};top:120vh; bottom:-9999px;`;
84
+ }
85
+ return style
86
+ },
87
+
88
+ },
89
+ data() {
90
+ return {
91
+ isShow: true,
92
+ bottomTabberHeight: 0, //
93
+ uizIndex: 1000,
94
+ };
95
+ },
96
+ watch:{
97
+ show(val){
98
+ this.isShow = val;
99
+ }
100
+ },
101
+ created(){
102
+ //是否有底部导航
103
+ if(this.$xdUniOptions && this.$xdUniOptions['list'] && this.$xdUniOptions['list'].length > 0) {
104
+ this.bottomTabberHeight = 100 * this.$rpxNum;
105
+ }
106
+
107
+ //全屏遮罩
108
+ if(this.fullscreen) {
109
+ this.bottomTabberHeight = 0;
110
+ this.uizIndex = 2000;
111
+ }
112
+
113
+ if(this.zIndex!==1000) {
114
+ this.uizIndex = this.zIndex;
115
+ }
116
+ this.isShow = this.show;
117
+
118
+ },
119
+ methods: {
120
+
121
+ bodyClose(e){
122
+ console.log('bodyClose')
123
+ if(this.isBodyClose) {
124
+ this.close(e)
125
+ }
126
+ },
127
+
128
+ close(e){
129
+ console.log('close')
130
+ this.isShow = false;
131
+ this.$emit('update:show', this.isShow);
132
+ this.$emit('close', e);
133
+ },
134
+ },
135
+
136
+ }
137
+ </script>
138
+
139
+ <style scoped lang="less">
140
+ .xd-up-drawer {
141
+ position: fixed;
142
+ background: rgba(0,0,0,.2);
143
+ top:100vh;
144
+ left: 0;
145
+ right: 0;
146
+ box-shadow: 0 0 5px rgba(0,0,0,.2);
147
+ transition: bottom 0.2s;
148
+ bottom: unit(8000, rpx);
149
+
150
+ &__close {
151
+ width: unit(80,rpx);
152
+ height: unit(80,rpx);
153
+ position: absolute;
154
+ top: unit(10,rpx);
155
+ right: unit(10,rpx);
156
+ z-index: 2;
157
+ display: flex;
158
+ justify-content: center;
159
+ align-items: center;
160
+
161
+ }
162
+
163
+ &__warper {
164
+ width: 100%;
165
+ background: #fff;
166
+ border-radius: unit(10,rpx) unit(10, rpx) 0 0;
167
+ position: absolute;
168
+ bottom:0;
169
+ left: 0;
170
+ right: 0;
171
+ .safe-area()
172
+ }
173
+
174
+ }
175
+
176
+ </style>