|
|
// components/date_select.js
|
|
|
const weekStr = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']
|
|
|
const app = getApp()
|
|
|
Component({
|
|
|
/**
|
|
|
* 组件的属性列表
|
|
|
*/
|
|
|
properties: {
|
|
|
},
|
|
|
|
|
|
/**
|
|
|
* 组件的初始数据
|
|
|
*/
|
|
|
data: {
|
|
|
start_date: '',
|
|
|
end_date: '',
|
|
|
select_date: '',
|
|
|
date_range: []
|
|
|
},
|
|
|
lifetimes: {
|
|
|
// 生命周期函数,可以为函数,或一个在methods段中定义的方法名
|
|
|
attached: function () {
|
|
|
|
|
|
},
|
|
|
},
|
|
|
/**
|
|
|
* 组件的方法列表
|
|
|
*/
|
|
|
methods: {
|
|
|
setDateRange: function(start_date, end_date){
|
|
|
let select_date_ok = false
|
|
|
start_date = new Date(start_date)
|
|
|
if (isNaN(start_date)) {
|
|
|
start_date = app.nowDate()
|
|
|
}
|
|
|
end_date = new Date(end_date)
|
|
|
if (isNaN(end_date)) {
|
|
|
end_date = this.addDay(start_date, 19)
|
|
|
}
|
|
|
start_date = new Date(this.dateId(start_date))
|
|
|
end_date = new Date(this.dateId(end_date))
|
|
|
let date_range = []
|
|
|
let current_date = start_date
|
|
|
while (current_date <= end_date) {
|
|
|
select_date_ok = select_date_ok || this.data.select_date == this.dateId(current_date)
|
|
|
date_range.push({
|
|
|
id: this.dateId(current_date),
|
|
|
show: this.dateShow(current_date),
|
|
|
desc: this.dateDesc(current_date),
|
|
|
})
|
|
|
current_date = this.addDay(current_date, 1)
|
|
|
}
|
|
|
let set_data = { date_range: date_range, start_date: this.dateId(start_date), end_date: this.dateId(end_date)}
|
|
|
if (!select_date_ok) {
|
|
|
set_data.select_date = this.dateId(start_date)
|
|
|
}
|
|
|
this.setData(set_data)
|
|
|
},
|
|
|
change: function(){
|
|
|
this.triggerEvent('change', { select_date: this.data.select_date }, { })
|
|
|
},
|
|
|
tap: function(e){
|
|
|
this.setData({select_date: e.currentTarget.id})
|
|
|
this.change()
|
|
|
},
|
|
|
addDay: function(date, day){
|
|
|
return new Date(Date.parse(date) + 86400000 * day)
|
|
|
},
|
|
|
formatNumber: function(n) {
|
|
|
n = n.toString()
|
|
|
return n[1] ? n : '0' + n
|
|
|
},
|
|
|
dateId: function(date){
|
|
|
const year = date.getFullYear()
|
|
|
const month = date.getMonth() + 1
|
|
|
const day = date.getDate()
|
|
|
return [year, month, day].map(this.formatNumber).join('-')
|
|
|
},
|
|
|
dateShow: function (date) {
|
|
|
const month = date.getMonth() + 1
|
|
|
const day = date.getDate()
|
|
|
return [month, day].map(this.formatNumber).join('/')
|
|
|
},
|
|
|
dateDesc: function (date) {
|
|
|
const now = app.nowDate()
|
|
|
if(this.dateId(now) == this.dateId(date)){
|
|
|
return "今天"
|
|
|
}
|
|
|
return weekStr[date.getDay()]
|
|
|
}
|
|
|
}
|
|
|
})
|