日期切换

javascript 复制代码
组件:
javascript 复制代码
<template>
  <div class="time-picker">
    <el-radio-group size="small" v-model="timeType" @change="changePickerType">
      <el-radio-button label="hour" v-if="isShow">时</el-radio-button>
      <el-radio-button label="day">日</el-radio-button>
      <el-radio-button label="month">月</el-radio-button>
      <el-radio-button label="quarter">季</el-radio-button>
      <el-radio-button label="year">年</el-radio-button>
    </el-radio-group>
    <el-date-picker v-if="timeType != 'year' && timeType != 'quarter'" v-model="timeList" :type="pickerType[timeType].type" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" size="small" style="width: 300px" value-format="timestamp" :clearable="false" :format="pickerType[timeType].format" @change="changeDatePicker" class="select-time" popper-class="time-popper" :default-time="['00:00:00', '23:00:00']">
    </el-date-picker>
    <YearYear1 v-if="timeType == 'year'" style="width:300px" :initYear="dateValue2" @updateTimeRange="updateStatisticYear" />
    <QuarterTime v-if="timeType == 'quarter'" @getQuarter="getQuarter"></QuarterTime>
  </div>
</template>

<script>
import YearYear1 from "@/components/YearYear1";
import QuarterTime from "@/components/QuarterTime";
export default {
  model: {
    prop: "times",
    event: "updatetimes",
  },
  props: {
    times: {
      type: Array,
    },
    isShow: {
      type: Boolean,
      default: true,
    },
  },
  components: {
    YearYear1,
    QuarterTime,
  },
  data() {
    return {
      timeType: "hour",
      timeList: [],
      yearTime: [],
      dateValue2: [],
      pickerType: {
        hour: {
          type: "datetimerange",
          format: "yyyy-MM-dd HH时",
        },
        day: {
          type: "daterange",
        },
        month: {
          type: "monthrange",
        },
        quarter: {
          type: "quarter",
        },
        year: {
          type: "year",
        },
      },
    };
  },
  methods: {
    changePickerType(type) {
      let dayType = {
        month: {
          type: "years",
          count: 1,
        },
        day: {
          type: "days",
          count: 3,
        },
        hour: {
          type: "days",
          count: 3,
        },
        quarter: {
          type: "quarter",
          count: 1,
        },
        year: {
          type: "years",
          count: 2,
        },
      };
      //   var moment = require("moment");
      //   const startDay = moment()
      //     .subtract(dayType[type].count, dayType[type].type)
      //     .format("YYYY-MM-DD HH:00:00");
      //   const endDay = moment().format("YYYY-MM-DD HH:00:00");
      //   this.timeList = [
      //     new Date(startDay).getTime(),
      //     new Date(endDay).getTime(),
      //   ];
      this.timeList = [];
      this.yearTime = this.timeList;
      //   this.$emit("updatetimes", this.timeList);
    },
    isNull(value) {
      if (value) {
        return false;
      }
      return true;
    },
    //获取季度子组件传回的数据
    getQuarter(val) {
      console.log("季节:", val);
    },
    // 选择年
    updateStatisticYear(val) {
      console.log("年", val);
    },
    changeDatePicker(e) {
      console.log("选择:", e);
      this.$emit("updatetimes", e);
    },
  },
};
</script>

<style lang="scss" scoped>
.time-picker {
  display: flex;
}

.time-popper {
  .el-time-spinner {
    display: flex;
    justify-content: center;

    & > :nth-child(2) {
      display: none;
    }
  }

  .el-picker-panel__footer {
    & > :first-child {
      display: none;
    }
  }
}
.el-radio-group {
  margin-right: 10px;
}
.year-picker {
  line-height: 28px;
}
::v-deep .el-radio-button--small .el-radio-button__inner {
  height: 36px;
  line-height: 18px;
}
::v-deep .el-range-editor--small.el-input__inner {
  height: 36px;
  line-height: 18px;
}
::v-deep .el-range-editor--small .el-range__icon {
  line-height: 30px;
}
</style>
javascript 复制代码
里面的年(YearYear1)和季度(QuarterTime)组件是前面分享的文章:
标题:年至年的选择仿elementui的样式、仿真elementUI的时间选择的季度选择
引入即可
javascript 复制代码
使用:
javascript 复制代码
<SelectTimePicker :isShow="false" @updatetimes="updatetimes"></SelectTimePicker>

import SelectTimePicker from "@/components/SelectTimePicker/index.vue";
components: { SelectTimePicker },

updatetimes(val) {
 console.log("点击:", val);
},
相关推荐
吃口巧乐兹13 分钟前
异步异常处理:AggregateException 的拆解与最佳实践
javascript
柒和远方18 分钟前
每日一学V017:用 Prompt 做 NLP:解构赋值与 AI 全栈的第一次实战
javascript·架构·代码规范
鹿青25 分钟前
给设计稿做体检:我搓了个 Skill,专治 Figma 转代码出垃圾
前端·claude·视觉设计
刘海不能乱1627 分钟前
Java JUC源码分析系列笔记-Synchronized
vue.js
陈_杨28 分钟前
鸿蒙APP开发:足球战术App怎么做拖拽交互?球员拖动与路线绘制
前端
陈_杨32 分钟前
鸿蒙APP开发:如果你想在鸿蒙App里做属性动画,@ohos.animator怎么用
前端
陈_杨32 分钟前
鸿蒙APP开发:篮球App怎么画球场?鸿蒙Canvas绘图实战
前端
colofullove33 分钟前
前端工程搭建与用户访问流程设计
前端
广州华水科技42 分钟前
如何利用单北斗GNSS系统实现大坝的变形监测?
前端
砍材农夫44 分钟前
物联网实战:Spring Boot MQTT | 模拟器Paho客户端拆解高性能
java·javascript·spring boot·后端·物联网·struts