| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244 |
- import {
- formatTime
- } from "../../utils/getTime.js"
- Component({
- options: {
- addGlobalClass: true
- },
- properties: {
- dateTypes: {
- type: Array,
- value: ["全部", "本年", "本季", "本月"]
- },
- dateType: {
- type: String,
- value: "本年"
- },
- onChange: {
- type: Function,
- },
- grading: {
- type: String,
- value: "year-month"
- }
- },
- lifetimes: {
- attached: function () {
- getApp().globalData.Language.getLanguagePackage(this)
- this.setData({
- actions: this.data.dateTypes.map(item => {
- return {
- name: getApp().globalData.Language.getMapText(item),
- value: item,
- color: item == this.data.dateType ? "#3874F6" : ""
- }
- }),
- "whereType.begdate": formatTime(new Date(), "-").split(' ')[0].slice(0, this.data.grading === "year-month" ? 7 : 10),
- })
- this.setRange();
- }
- },
- data: {
- actionShow: false,
- whereType: {
- value: "begdate",
- enddate: "",
- begTimestamp: new Date().getTime(),
- endTimestamp: "",
- },
- begdate: "",
- enddate: "",
- showTimePicker: false,
- },
- methods: {
- openActionSheet() {
- this.setData({
- actionShow: true
- })
- },
- confirmTimePicker() {
- let whereType = this.data.whereType,
- begdate = whereType.begdate,
- enddate = whereType.enddate;
- if (whereType.enddate == "") {
- whereType.value = "enddate";
- this.setData({
- whereType
- })
- wx.showToast({
- title: getApp().globalData.Language.getMapText("请选择结束时间"),
- icon: "none"
- })
- } else {
- this.setData({
- showTimePicker: false,
- begdate,
- enddate,
- actions: this.data.actions.map(item => {
- item.color = ""
- return item
- })
- })
- this.triggerEvent("onChange", {
- dateType: '',
- isAll: 99,
- begdate,
- enddate
- })
- }
- },
- openTimePicker() {
- this.setData({
- showTimePicker: true
- })
- },
- cancelWhereType() {
- this.setData({
- showTimePicker: false
- })
- },
- /* 日期选择器 */
- datetimeOnInput(event) {
- let type = event.currentTarget.dataset.name,
- whereType = this.data.whereType,
- grading = this.data.grading || "year-month"; // 获取粒度,默认值为 "year-month"
- if (type == "begdate") {
- whereType.begTimestamp = event.detail;
- whereType.begdate = formatTime(new Date(event.detail), "-").split(' ')[0].slice(0, grading === "year-month" ? 7 : 10);
- if (whereType.begTimestamp > whereType.endTimestamp) {
- whereType.endTimestamp = whereType.begTimestamp;
- whereType.enddate = '';
- }
- } else {
- whereType.endTimestamp = event.detail;
- whereType.enddate = formatTime(new Date(event.detail), "-").split(' ')[0].slice(0, grading === "year-month" ? 7 : 10);
- }
- this.setData({
- whereType
- });
- },
- //切换日期类型
- changeDateType(e) {
- const {
- name
- } = e.target.dataset;
- this.setData({
- "whereType.value": name
- })
- },
- /* 周期选择器 */
- onSelect(event) {
- const {
- value
- } = event.detail;
- if (this.data.dateType == value) return this.onCancel();
- this.setData({
- dateType: value,
- actions: this.data.actions.map(item => {
- item.color = item.value == value ? "#3874F6" : "";
- item.loading = item.value == value ? true : false;
- return item
- })
- })
- this.setRange();
- this.triggerEvent("onChange", {
- dateType: value,
- isAll: this.data.dateType == "全部" ? 1 : 0,
- begdate: "",
- enddate: ""
- })
- },
- onCancel() {
- this.setData({
- actionShow: false,
- actions: this.data.actions.map(item => {
- item.loading = false;
- return item
- })
- })
- },
- setRange() {
- let dateType = this.data.dateType,
- grading = this.data.grading, // 获取粒度
- whereType = {
- value: "begdate",
- begdate: formatTime(new Date(), "-").split(' ')[0].slice(0, grading === "year-month" ? 7 : 10),
- enddate: "",
- begTimestamp: new Date().getTime(),
- endTimestamp: "",
- },
- begdate = "",
- enddate = "";
- const currentMonth = new Date().getMonth() + 1;
- switch (dateType) {
- case '本年':
- begdate = formatTime(new Date(), "-").split(' ')[0].slice(0, 4) + (grading === "year-month" ? "-01" : "-01-01");
- enddate = formatTime(new Date(), "-").split(' ')[0].slice(0, 4) + (grading === "year-month" ? "-12" : "-12-31");
- whereType.begdate = begdate;
- whereType.enddate = enddate;
- break;
- case '本月':
- begdate = formatTime(new Date(), "-").split(' ')[0].slice(0, grading === "year-month" ? 7 : 10);
- enddate = formatTime(new Date(), "-").split(' ')[0].slice(0, grading === "year-month" ? 7 : 10);
- whereType.begdate = begdate;
- whereType.enddate = enddate;
- break;
- case '本季':
- begdate = formatTime(new Date(), "-").split(' ')[0].slice(0, 4) + "-" + (Math.floor((new Date().getMonth() + 1) / 3) * 3 - 2) + (grading === "year-month" ? "" : "-01");
- enddate = formatTime(new Date(), "-").split(' ')[0].slice(0, 4) + "-" + (Math.floor((new Date().getMonth() + 1) / 3) * 3) + (grading === "year-month" ? "" : "-30");
- whereType.begdate = begdate;
- whereType.enddate = enddate;
- break;
- case '去年':
- begdate = (new Date().getFullYear() - 1) + (grading === "year-month" ? "-01" : "-01-01");
- enddate = (new Date().getFullYear() - 1) + (grading === "year-month" ? "-12" : "-12-31");
- whereType.begdate = begdate;
- whereType.enddate = enddate;
- break;
- case '上月':
- const lastMonth = new Date();
- lastMonth.setMonth(lastMonth.getMonth() - 1);
- begdate = formatTime(lastMonth, "-").split(' ')[0].slice(0, grading === "year-month" ? 7 : 10);
- enddate = formatTime(lastMonth, "-").split(' ')[0].slice(0, grading === "year-month" ? 7 : 10);
- whereType.begdate = begdate;
- whereType.enddate = enddate;
- break;
- case '近一年':
- begdate = formatTime(new Date(new Date().setFullYear(new Date().getFullYear() - 1)), "-").split(' ')[0].slice(0, grading === "year-month" ? 7 : 10);
- enddate = formatTime(new Date(), "-").split(' ')[0].slice(0, grading === "year-month" ? 7 : 10);
- whereType.begdate = begdate;
- whereType.enddate = enddate;
- break;
- case '近三个月':
- begdate = formatTime(new Date(new Date().setMonth(new Date().getMonth() - 3)), "-").split(' ')[0].slice(0, grading === "year-month" ? 7 : 10);
- enddate = formatTime(new Date(), "-").split(' ')[0].slice(0, grading === "year-month" ? 7 : 10);
- whereType.begdate = begdate;
- whereType.enddate = enddate;
- break;
- case '近九个月':
- begdate = formatTime(new Date(new Date().setMonth(new Date().getMonth() - 9)), "-").split(' ')[0].slice(0, grading === "year-month" ? 7 : 10);
- enddate = formatTime(new Date(), "-").split(' ')[0].slice(0, grading === "year-month" ? 7 : 10);
- whereType.begdate = begdate;
- whereType.enddate = enddate;
- break;
- case '近六个月':
- begdate = formatTime(new Date(new Date().setMonth(new Date().getMonth() - 6)), "-").split(' ')[0].slice(0, grading === "year-month" ? 7 : 10);
- enddate = formatTime(new Date(), "-").split(' ')[0].slice(0, grading === "year-month" ? 7 : 10);
- whereType.begdate = begdate;
- whereType.enddate = enddate;
- break;
- default:
- break;
- }
- if (dateType != "全部") {
- whereType.begTimestamp = new Date(begdate + (grading === "year-month" ? '-01' : '')).getTime();
- whereType.endTimestamp = new Date(enddate + (grading === "year-month" ? '-30' : '')).getTime();
- }
- this.setData({
- whereType,
- begdate,
- enddate
- });
- }
- }
- })
|