Skip to content

Commit d4ad497

Browse files
committed
fix: - 修复 范围选择不能动态赋值的 bug
- 修复 范围选择的初始时间在一个月内时,造成无法选择的bug
1 parent e57edac commit d4ad497

File tree

5 files changed

+45
-28
lines changed

5 files changed

+45
-28
lines changed

pages/nvue/datetime-picker/datetime-picker.nvue

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,7 @@
3131
</view>
3232
<uni-section :title="'日期范围用法:' + '[' + range + ']'" type="line"></uni-section>
3333
<view class="example-body">
34-
<uni-datetime-picker v-model="range" type="daterange" start="2021-3-20" end="2021-5-20"
35-
rangeSeparator="至" />
34+
<uni-datetime-picker v-model="range" type="daterange" rangeSeparator="至" />
3635
</view>
3736
<uni-section :title="'日期时间范围用法:' + '[' + datetimerange + ']' " type="line"></uni-section>
3837
<view class="example-body">
@@ -47,8 +46,8 @@
4746
return {
4847
single: '2021-04-3',
4948
datetimesingle: '2021-04-3',
50-
range: ['2021-03-8', '2021-4-20'],
51-
datetimerange: ['2021-03-20 20:10:10', '2021-05-10 10:10:10'],
49+
range: ['2021-02-1', '2021-2-28'],
50+
datetimerange: [],
5251
}
5352
},
5453

@@ -67,6 +66,7 @@
6766
setTimeout(() => {
6867
this.datetimesingle = '2021-5-1'
6968
this.single = '2021-5-1'
69+
this.datetimerange = ["2021-07-08 0:00:00", "2021-08-08 23:59:59"]
7070
},1000)
7171
},
7272

pages/vue/datetime-picker/datetime-picker.vue

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,7 @@
3131
</view>
3232
<uni-section :title="'日期范围用法:' + '[' + range + ']'" type="line"></uni-section>
3333
<view class="example-body">
34-
<uni-datetime-picker v-model="range" type="daterange" start="2021-3-20" end="2021-5-20"
35-
rangeSeparator="" />
34+
<uni-datetime-picker v-model="range" type="daterange" rangeSeparator="" />
3635
</view>
3736
<uni-section :title="'日期时间范围用法:' + '[' + datetimerange + ']' " type="line"></uni-section>
3837
<view class="example-body">
@@ -47,8 +46,8 @@
4746
return {
4847
single: '2021-04-3',
4948
datetimesingle: '2021-04-3',
50-
range: ['2021-03-8', '2021-4-20'],
51-
datetimerange: ['2021-03-20 20:10:10', '2021-05-10 10:10:10'],
49+
range: ['2021-02-1', '2021-2-28'],
50+
datetimerange: [],
5251
}
5352
},
5453
@@ -67,6 +66,7 @@
6766
setTimeout(() => {
6867
this.datetimesingle = '2021-5-1'
6968
this.single = '2021-5-1'
69+
this.datetimerange = ["2021-07-08 0:00:00", "2021-08-08 23:59:59"]
7070
},1000)
7171
},
7272

uni_modules/uni-datetime-picker/changelog.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 2.0.13(2021-07-08)
2+
- 修复 范围选择不能动态赋值的 bug
3+
## 2.0.12(2021-07-08)
4+
- 修复 范围选择的初始时间在一个月内时,造成无法选择的bug
15
## 2.0.11(2021-07-08)
26
- 优化 弹出层在超出视窗边缘定位不准确的问题
37
## 2.0.10(2021-07-08)

uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue

Lines changed: 32 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -247,13 +247,26 @@
247247
this.time = defTime
248248
}
249249
} else {
250-
if (oldVal) return // 只初始默认值
250+
// if (oldVal) return // 只初始默认值
251251
const [before, after] = newVal
252252
if (!before && !after) return
253253
const defBefore = this.parseDate(before)
254-
const defAfter = this.parseDate(after)
255-
this.range.startDate = this.tempRange.startDate = defBefore.defDate
256-
this.range.endDate = this.tempRange.endDate = defAfter.defDate
254+
const defAfter = this.parseDate(after)
255+
const startDate = defBefore.defDate
256+
const endDate = defAfter.defDate
257+
this.range.startDate = this.tempRange.startDate = startDate
258+
this.range.endDate = this.tempRange.endDate = endDate
259+
260+
setTimeout(() => {
261+
if(startDate && endDate){
262+
if (this.diffDate(startDate, endDate) < 30){
263+
this.$refs.right.next()
264+
}
265+
} else {
266+
this.$refs.right.next()
267+
this.$refs.right.cale.lastHover = false
268+
}
269+
}, 100)
257270
258271
if (this.hasTime) {
259272
this.range.startDate = defBefore.defDate + ' ' + defBefore.defTime
@@ -332,18 +345,8 @@
332345
// todo
333346
return this.isRange ? 653 : 301
334347
}
335-
},
336-
mounted() {
337-
if (this.isRange) {
338-
if (!Array.isArray(this.value)) return
339-
const [before, after] = this.value
340-
if (before && after) return
341-
setTimeout(() => {
342-
this.$refs.right.next()
343-
this.$refs.right.cale.lastHover = false
344-
}, 20)
345-
}
346-
},
348+
},
349+
347350
methods: {
348351
updateLeftCale(e) {
349352
// console.log('----updateStartCale:', e);
@@ -359,9 +362,7 @@
359362
right.cale.setHoverMultiple(e.after)
360363
right.setDate(this.$refs.right.nowDate.fullDate)
361364
},
362-
getRef() {
363-
this.$refs.left.pre()
364-
},
365+
365366
show(event) {
366367
if (this.disabled) {
367368
return
@@ -546,6 +547,18 @@
546547
} else {
547548
return false
548549
}
550+
},
551+
552+
/**
553+
* 比较时间差
554+
*/
555+
diffDate(startDate, endDate) {
556+
// 计算截止时间
557+
startDate = new Date(startDate.replace('-', '/').replace('-', '/'))
558+
// 计算详细项的截止时间
559+
endDate = new Date(endDate.replace('-', '/').replace('-', '/'))
560+
const diff = (endDate - startDate) / (24 * 60 * 60 * 1000)
561+
return Math.abs(diff)
549562
},
550563
551564
clear() {

uni_modules/uni-datetime-picker/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"id": "uni-datetime-picker",
33
"displayName": "uni-datetime-picker 日期选择器",
4-
"version": "2.0.11",
4+
"version": "2.0.13",
55
"description": "uni-datetime-picker 日期时间选择器,支持日历,支持范围选择",
66
"keywords": [
77
"uni-datetime-picker",

0 commit comments

Comments
 (0)