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