77 lines
1.5 KiB
JavaScript
77 lines
1.5 KiB
JavaScript
// components/timePicker/index.js
|
|
|
|
const dayjs = require("../../utils/dayjs");
|
|
|
|
function generateYearArray(startYear) {
|
|
const currentYear = new Date().getFullYear();
|
|
const years = [];
|
|
for (let i = startYear; i <= currentYear; i++) {
|
|
years.push(i);
|
|
}
|
|
return years;
|
|
}
|
|
|
|
Component({
|
|
|
|
/**
|
|
* 组件的属性列表
|
|
*/
|
|
properties: {
|
|
type: String,
|
|
value: Number,
|
|
show: Boolean,
|
|
year: String,
|
|
month: Number,
|
|
day: Number,
|
|
},
|
|
/**
|
|
* 组件的初始数据
|
|
*/
|
|
data: {
|
|
minDate: new Date(2024,0,1).getTime(),
|
|
maxDate: new Date().getTime(),
|
|
formatter(type, value) {
|
|
if (type === 'year') {
|
|
return `${value}年`;
|
|
}
|
|
if (type === 'month') {
|
|
return `${value}月`;
|
|
}
|
|
if (type === 'day') {
|
|
return `${value}日`;
|
|
}
|
|
return value;
|
|
},
|
|
years: generateYearArray(2024)
|
|
},
|
|
/**
|
|
* 组件的方法列表
|
|
*/
|
|
methods: {
|
|
onInput(e) {
|
|
|
|
},
|
|
onClose() {
|
|
this.triggerEvent("close")
|
|
},
|
|
onCancel() {
|
|
this.triggerEvent("cancel")
|
|
},
|
|
onConfirm(e) {
|
|
const { type } = this.data;
|
|
let time;
|
|
switch(type) {
|
|
case "day":
|
|
time = dayjs(new Date(e.detail)).format('YYYY-MM-DD');
|
|
break;
|
|
case 'month':
|
|
time = dayjs(new Date(e.detail)).format('YYYY-MM');
|
|
break;
|
|
case 'year':
|
|
time = dayjs(new Date(e.detail.value, 0, 1)).format('YYYY');
|
|
break;
|
|
}
|
|
this.triggerEvent("confirm", { type, time })
|
|
}
|
|
}
|
|
}) |