189 lines
4.4 KiB
JavaScript
189 lines
4.4 KiB
JavaScript
// mycomponent/member/pickerView/datesfm.js
|
||
import dateUtil from "../../../../utils/dateutils.js";
|
||
const years = [];
|
||
const months = [];
|
||
const days = [];
|
||
const hours = [];
|
||
const minutes = [];
|
||
const seconds = [];
|
||
|
||
for (let i = 1970; i <= 2100; i++) {
|
||
years.push(i);
|
||
}
|
||
|
||
for (let i = 1; i <= 12; i++) {
|
||
months.push(i);
|
||
}
|
||
|
||
for (let i = 1; i <= 31; i++) {
|
||
days.push(i);
|
||
}
|
||
for (let i = 0; i < 24; i++) {
|
||
hours.push(i);
|
||
}
|
||
|
||
for (let i = 0; i < 60; i++) {
|
||
minutes.push(i);
|
||
}
|
||
for (let i = 0; i < 60; i++) {
|
||
seconds.push(i);
|
||
}
|
||
// const modes = ["YMDhms", "YMDhm", "YMD", "MD", "hm"];
|
||
|
||
let beforeYear;
|
||
let beforeMonth;
|
||
let resultValue;
|
||
|
||
Component({
|
||
/**
|
||
* 组件的属性列表
|
||
*/
|
||
properties: {
|
||
data: {
|
||
type: Object,
|
||
value: "",
|
||
},
|
||
date: {
|
||
type: Number,
|
||
value: new Date().getTime(),
|
||
},
|
||
mode: {
|
||
type: String,
|
||
value: "MD",
|
||
observer: function (newVal, oldVal, changedPath) {
|
||
this.setDateByMode();
|
||
},
|
||
},
|
||
isShowDatePicker: {
|
||
type: Boolean,
|
||
value: false,
|
||
},
|
||
},
|
||
|
||
/**
|
||
* 组件的初始数据
|
||
*/
|
||
data: {
|
||
cMode: "",
|
||
years: years,
|
||
months: months,
|
||
days: days,
|
||
hours: hours,
|
||
minutes: minutes,
|
||
seconds: seconds,
|
||
value: [],
|
||
|
||
isShowYear: false,
|
||
isShowMonth: false,
|
||
isShowDay: false,
|
||
isShowHour: false,
|
||
isShoMinutes: false,
|
||
isShowSeconds: false,
|
||
},
|
||
lifetimes: {
|
||
// 生命周期函数,可以为函数,或一个在methods段中定义的方法名
|
||
attached() {
|
||
this.setDateByMode();
|
||
},
|
||
moved() {},
|
||
detached() {},
|
||
},
|
||
|
||
// 生命周期函数,可以为函数,或一个在methods段中定义的方法名
|
||
attached() {}, // 此处attached的声明会被lifetimes字段中的声明覆盖
|
||
ready() {},
|
||
|
||
pageLifetimes: {
|
||
// 组件所在页面的生命周期函数
|
||
show() {},
|
||
hide() {},
|
||
resize() {},
|
||
},
|
||
|
||
/**
|
||
* 组件的方法列表
|
||
*/
|
||
methods: {
|
||
setDateByMode() {
|
||
let year = dateUtil.getYear(this.data.date);
|
||
let month = dateUtil.getMonth(this.data.date);
|
||
this.setDays(year, month);
|
||
let days = dateUtil.getDay(this.data.date);
|
||
let hours = dateUtil.getHour(this.data.date);
|
||
let minutes = dateUtil.getMinute(this.data.date);
|
||
let seconds = dateUtil.getSecond(this.data.date);
|
||
beforeYear = year;
|
||
beforeMonth = month;
|
||
|
||
this.setData({
|
||
value: [year - 1970, month - 1, days - 1, hours, minutes, seconds],
|
||
});
|
||
|
||
resultValue = this.data.value;
|
||
this.setColumns();
|
||
},
|
||
setColumns() {
|
||
let mode = this.data.mode;
|
||
|
||
this.setData({
|
||
isShowYear: mode == "YMDhms" || mode == "YMDhm" || mode == "YMD",
|
||
isShowMonth:
|
||
mode == "YMDhms" || mode == "YMDhm" || mode == "YMD" || mode == "MD",
|
||
isShowDay:
|
||
mode == "YMDhms" || mode == "YMDhm" || mode == "YMD" || mode == "MD",
|
||
isShowHour: mode == "YMDhms" || mode == "YMDhm" || mode == "hm",
|
||
isShoMinutes: mode == "YMDhms" || mode == "YMDhm" || mode == "hm",
|
||
isShowSeconds: mode == "YMDhms",
|
||
});
|
||
},
|
||
|
||
setDays(year, month) {
|
||
if (year != beforeYear || beforeMonth != month) {
|
||
beforeYear = year;
|
||
beforeMonth = month;
|
||
let dayCount = dateUtil.getDaysOfMonth(year, month);
|
||
|
||
let days = [];
|
||
|
||
for (let i = 1; i <= dayCount; i++) {
|
||
days.push(i);
|
||
}
|
||
|
||
this.setData({
|
||
days: days,
|
||
});
|
||
}
|
||
},
|
||
bindChange: function (e) {
|
||
const val = e.detail.value;
|
||
resultValue = val;
|
||
let year = this.data.years[val[0]];
|
||
let month = this.data.months[val[1]];
|
||
this.setDays(year, month);
|
||
},
|
||
onCancellClick() {
|
||
this.triggerEvent("datePickerCancellEvent");
|
||
},
|
||
onOkClick() {
|
||
const myEventDetail = {};
|
||
|
||
myEventDetail.data = this.data.data;
|
||
myEventDetail.date = this.getResultDate();
|
||
this.triggerEvent("datePickerOkEvent", myEventDetail);
|
||
},
|
||
|
||
getResultDate() {
|
||
let result = 0;
|
||
let year = this.data.years[resultValue[0]];
|
||
let month = this.data.months[resultValue[1]] - 1;
|
||
let day = this.data.days[resultValue[2]];
|
||
let hour = this.data.hours[resultValue[3]];
|
||
let minutes = this.data.minutes[resultValue[4]];
|
||
let seconds = this.data.seconds[resultValue[5]];
|
||
result = new Date(year, month, day, hour, minutes, seconds).getTime();
|
||
|
||
return result;
|
||
},
|
||
},
|
||
});
|