年之年的选择,组装版

javascript 复制代码
组件:
javascript 复制代码
<!--
 * @Author: liuyu liuyu@xizhengtech.com
 * @Date: 2023-02-01 16:57:27
 * @LastEditors: wangping wangping@xizhengtech.com
 * @LastEditTime: 2023-06-30 17:25:14
 * @Description: 时间选择年 - 年
-->
<template>
  <div class="year-range-picker">
    <el-date-picker v-model="dateList[0]" :clearable="false" type="year" placeholder="开始年" class="year-picker" format="yyyy" value-format="yyyy" :picker-options="startDatePicker" @change="getTime">
    </el-date-picker>
    <span class="range-word"> 至 </span>
    <el-date-picker v-model="dateList[1]" prefix-icon='0' type="year" placeholder="结束年" class="year-picker" value-format="yyyy" :picker-options="endDatePicker" @change="getTime">
    </el-date-picker>
  </div>
</template>

<script>
export default {
  data() {
    return {
      dateList: [],
      startDatePicker: this.beginDate(),
      endDatePicker: this.processDate(),
      // 开始年度和结束年度 添加限制
      // startDatePicker: {
      //   disabledDate: (time) => {
      //     if (this.startDatePicker) {
      //       return (
      //         time.getTime() > this.startDatePicker ||
      //         time.getTime() > Date.now()
      //       );
      //     }
      //   },
      // },
      // endDatePicker: {
      //   disabledDate: (time) => {
      //     return (
      //       time.getTime() < this.endDatePicker ||
      //       time.getTime() > Date.now()
      //     );
      //   },
      // },
    };
  },
  created() {},
  watch: {
    // dateList(v) {
    //   this.$emit("input", v);
    // },
  },

  methods: {
    getTime(val) {
      console.log("但:", this.dateList);
      if (val == null) {
        this.dateList = [];
      }
      this.$emit("getTime", this.dateList);
    },
    // 选择年份范围选择时开始时间不能大于结束时间,结束时间不能小于开始时间
    // 提出开始时间必须小于提出结束时间
    beginDate() {
      let self = this;
      return {
        disabledDate(time) {
          if (self.dateList[1] !== "" && self.dateList[1] !== null) {
            let fixedTime = new Date(time);
            return fixedTime.getFullYear() > self.dateList[1];
          } else {
            return;
          }
        },
      };
    },
    // 提出结束时间必须大于提出开始时间
    processDate() {
      let self = this;
      return {
        disabledDate(time) {
          // let fixedTime = new Date(self.oldTime).getTime()
          // return time.getTime() < fixedTime
          let fixedTime = new Date(time);
          return fixedTime.getFullYear() < self.dateList[0];
        },
      };
    },
  },
};
</script>
<style lang="scss" scoped>
.year-range-picker {
  width: 260px;
  border: 1px solid #dcdfe6;
  border-radius: 4px;
  display: flex;
  align-items: center;
  ::v-deep.el-date-editor {
    // .el-input__icon {
    //   display: none;
    // }
    .el-input__inner {
      border: none;
      text-align: center;
    }
  }
}
</style>
javascript 复制代码
使用:
javascript 复制代码
<YearYear @getTime="getTime"></YearYear>

 // 获取传过来的时间
getTime(val) {},
相关推荐
智能直播4 小时前
RK3518:1.5G 内存 + 8G 存储,如何跑起硬件编解码、Web、AI 识别、绿幕特效
前端·人工智能·5g
掘金酱5 小时前
【10.24 特别活动】AI 时代,程序员的新饭碗在哪里?
前端·人工智能·后端
excel5 小时前
多进程环境下使用 PM2 部署 Socket.IO:需要注意什么
前端
IT_陈寒5 小时前
Redis的原子性竟然失效了?记一次分布式锁翻车实录
前端·人工智能·后端
_菜鸟果果7 小时前
高德地图 JS API 2.0 在国产 Linux/ARM 电脑上渲染失败 的排查与解决
linux·开发语言·javascript
时间的情敌7 小时前
《回顾 2018 前端:Vue2 成熟期,Webpack4 发布,PWA 大火》
前端
Java后端的Ai之路7 小时前
前端技术Vue-09-webpack-vuejs-实战
前端·vue.js·webpack
LMT流氓兔7 小时前
第五单元——第4课:给工具参数加校验
java·前端·算法·ai·langchain
涛涛ing7 小时前
React Compiler正式“Rust化”:你项目里的Babel插件,正在被编译进打包器
前端