• vant DatetimePicker 时间选择年份


    由于vant组件自带没有只选择年的方法 所以需要我们自己写这个方法,网上大多数的方法都是通过改node_modules下的组件文件,这个方法不是很友好,下面的方法是我在网上找到一篇可以使用的方法,下附原文地址,原文包括了(年选、月选、周选、日选)方法,这里只用到了年选,因为原文写的年选方法有一点小问题,所以进行了微调改动

    原文参考地址:(15条消息) vant 日期选择器(年选、月选、周选、日选)_长夜将尽 来日可期的博客-CSDN博客_vant 日期选择器

    本文代码

    要点:Field 输入框+ActionSheet 动作面板+DatetimePicker 时间选择 组合使用

    我这里的需求是进入页面后默认最新时间所以加上了setTime()里面的方法 如果没有这个需求可以删除setTime()方法

    <van-field
            v-model="queryParams.taskYear"
            is-link
            readonly
            arrow-direction="down"
            label="年份"
            placeholder="请选择年份"
            @click="dateSelect"
          />
          <van-action-sheet v-model="yearShow">
            <van-picker
              title="请选择年份"
              show-toolbar
              :columns="yearColumns"
              :default-index="yearSelect"
              @confirm="yearConfirm"
              @cancel="cancel"
            />
    </van-action-sheet>
    export default {
        data() {
            return {
                // 查询参数
                queryParams: {
                    taskYear: null,
                },
                yearSelect: null,
                yearColumns: [],
                yearShow:false // 年份
            }
    }
    created() {
        this.setTime();
        this.yearData();
    },
    methods: {
          formatDates(date) {
            return `${date.getFullYear()}-${date.getMonth()+1}-${date.getDate()}`;
          },
          // 进入页面后默认最新时间
          setTime(){
            var nowTime = new Date();
            let year = nowTime.getFullYear();
            let month = nowTime.getMonth();
            let day = nowTime.getDate();
            var taskYear = '';
            taskYear = this.formatDates( new Date(year, month ,day));
            this.queryParams.taskYear = taskYear.slice(0,4);
          }
          // 监听年份打开
          dateSelect() {
            this.yearShow = true;
          },
          //年选择器
          yearConfirm(value) {
            this.queryParams.taskYear = value.toString();
            this.yearShow = false;
          },
          //年数据
          yearData() {
            // 获取默认显示的时间
            var nowTime = new Date(this.queryParams.taskYear);
            let year = nowTime.getFullYear();
            let month = nowTime.getMonth();
            let day = nowTime.getDate();
            // 循环数组 填写最小时间和最大时间范围 推进数组
            for (let i = 2000; i < 2099; i++) {
              this.yearColumns.push(i);
            }
            // 格式化时间并截取
            var years = this.formatDates( new Date(year, month ,day));
            var Year = years.slice(0,4);
            // 将截取的年份赋值给绑定值 用于点击弹出日期窗口后显示当前的时间
            this.yearSelect = this.yearColumns.indexOf(Number(Year));
          },
          // 点击取消按钮时触发的事件
          cancel() {
            this.yearShow = false;
          },
    }
  • 相关阅读:
    SVN更新的时候前面的子母的意思(A C D M G U R I)
    SQL总结(一)基本查询
    eclipse中如何打开工作空间里面已经有的项目
    java for循环的几种写法
    Eclipse自动生成作者、日期注释等功能设置
    linux任务计划及周期性任务计划
    进程管理工具使用
    Btrfs管理及应用
    LVM基本应用,扩展及缩减实现
    Linux-RAID
  • 原文地址:https://www.cnblogs.com/wlyj/p/16151270.html
Copyright © 2020-2023  润新知