当前位置: 代码网 > it编程>编程语言>Javascript > ElementUI 详细分析DatePicker 日期选择器实战

ElementUI 详细分析DatePicker 日期选择器实战

2024年09月08日 Javascript 我要评论
前言对于全栈玩家,各个组件都需相应了解才可做好前后端的crud以下为实战结合element官网的心得体会如图所示:1. 通用demo如果只想要一个选择日期,而不是范围,demo如下:<templ

前言

对于全栈玩家,各个组件都需相应了解才可做好前后端的crud

以下为实战结合element官网的心得体会

如图所示:

1. 通用demo

如果只想要一个选择日期,而不是范围,demo如下:

<template>
  <div class="block">
    <span class="demonstration">默认</span>
    <el-date-picker
      v-model="value1"
      type="date"
      placeholder="选择日期">
    </el-date-picker>
  </div>
  <div class="block">
    <span class="demonstration">带快捷选项</span>
    <el-date-picker
      v-model="value2"
      align="right"
      type="date"
      placeholder="选择日期"
      :picker-options="pickeroptions">
    </el-date-picker>
  </div>
</template>

截图如下:

如果需要时间选择,总体demo如下:

<template>
  <!-- 包含快捷选项的日期选择器 -->
  <div class="block">
    <!-- 演示快捷选项 -->
    <span class="demonstration">带快捷选项</span>
    <!-- 日期选择器组件 -->
    <el-date-picker
      v-model="value2"
      type="datetimerange"
      align="right"
      unlink-panels
      range-separator="至"
      start-placeholder="开始日期"
      end-placeholder="结束日期"
      :picker-options="pickeroptions">
    </el-date-picker>
  </div>
</template>
<script>
  export default {
    data() {
      return {
        // 日期选择器的选项
        pickeroptions: {
          // 快捷选项
          shortcuts: [
            // 最近一周
            {
              text: '最近一周',
              onclick(picker) {
                const end = new date();
                const start = new date();
                start.settime(start.gettime() - 3600 * 1000 * 24 * 7);
                picker.$emit('pick', [start, end]);
              }
            },
            // 最近一个月
            {
              text: '最近一个月',
              onclick(picker) {
                const end = new date();
                const start = new date();
                start.settime(start.gettime() - 3600 * 1000 * 24 * 30);
                picker.$emit('pick', [start, end]);
              }
            },
            // 最近三个月
            {
              text: '最近三个月',
              onclick(picker) {
                const end = new date();
                const start = new date();
                start.settime(start.gettime() - 3600 * 1000 * 24 * 90);
                picker.$emit('pick', [start, end]);
              }
            }
          ]
        },
        // 绑定的值1
        value1: '',
        // 绑定的值2
        value2: ''
      };
    }
  };
</script>

具体的参数解释如下:

  • unlink-panels解除左右面板的联动(各自独立切换当前月份),选择日期范围时,默认情况下左右面板会联动
  • type为daterange,则显示到日,若为datetimerange则显示到秒

如果是按照默认月份,具体如下:

<template>
  <div class="block">
    <span class="demonstration">带快捷选项</span>
    <el-date-picker
      v-model="value2"
      type="monthrange"
      align="right"
      unlink-panels
      range-separator="至"
      start-placeholder="开始月份"
      end-placeholder="结束月份"
      :picker-options="pickeroptions">
    </el-date-picker>
  </div>
</template>
<script>
  export default {
    data() {
      return {
        pickeroptions: {
          shortcuts: [{
            text: '本月',
            onclick(picker) {
              picker.$emit('pick', [new date(), new date()]);
            }
          }, {
            text: '今年至今',
            onclick(picker) {
              const end = new date();
              const start = new date(new date().getfullyear(), 0);
              picker.$emit('pick', [start, end]);
            }
          }, {
            text: '最近六个月',
            onclick(picker) {
              const end = new date();
              const start = new date();
              start.setmonth(start.getmonth() - 6);
              picker.$emit('pick', [start, end]);
            }
          }]
        },
        value1: '',
        value2: ''
      };
    }
  };
</script>

截图如下:

2. 快捷键

对于快捷键选项除了实现上述方案还可如下:

// 时间选择
pickeroptions: {
  shortcuts: [{
    text: '上周',
    onclick(picker) {
      const end = new date();
      const start = new date();
      // 设置起始日期为本周的第一天
      start.setdate(end.getdate() - end.getday() - 6);
      // 设置结束日期为本周的最后一天
      end.setdate(end.getdate() - end.getday() );
      picker.$emit('pick', [start, end]);
    }
  }, {
    text: '这周',
    onclick(picker) {
      const end = new date();
      const start = new date();
      // 设置起始日期为本周的第一天
      start.setdate(end.getdate() - end.getday() + 1);
      // 设置结束日期为本周的最后一天
      end.setdate(end.getdate() - end.getday() + 7);
      picker.$emit('pick', [start, end]);
    }
  }, {
    text: '下周',
    onclick(picker) {
      const end = new date();
      const start = new date();
      // 设置起始日期为下周的第一天
      start.setdate(end.getdate() - end.getday() + 8);
      // 设置结束日期为下周的最后一天
      end.setdate(end.getdate() - end.getday() + 14);
      picker.$emit('pick', [start, end]);
    }
  }]
},

截图如下:

pickeroptions: {
  disableddate(time) {
    return time.gettime() > date.now();
  },
  shortcuts: [{
    text: '今天',
    onclick(picker) {
      picker.$emit('pick', new date());
    }
  }, {
    text: '昨天',
    onclick(picker) {
      const date = new date();
      date.settime(date.gettime() - 3600 * 1000 * 24);
      picker.$emit('pick', date);
    }
  }, {
    text: '一周前',
    onclick(picker) {
      const date = new date();
      date.settime(date.gettime() - 3600 * 1000 * 24 * 7);
      picker.$emit('pick', date);
    }
  }]
},

截图如下:

3. 参数

更多的参数解释如下:

格式含义备注例子
yyyy 年2017
m不补01
mm01
w仅周选择器的 format 可用;不补01
ww仅周选择器的 format 可用01
d不补02
dd02
h小时24小时制;不补03
hh小时24小时制03
h小时12小时制,须和 a 或 a 使用;不补03
hh小时12小时制,须和 a 或 a 使用03
m分钟不补04
mm分钟04
s不补05
ss05
aam/pm仅 format 可用,大写am
aam/pm仅 format 可用,小写am
timestampjs时间戳仅 value-format 可用;组件绑定值为number类型1483326245000
[mm]不需要格式化字符使用方括号标识不需要格式化的字符 (如 [a] [mm])mm

对于日期选择的更多参数说明:

参数说明类型可选值默认值
value / v-model绑定值date(datepicker) / array(daterangepicker)
readonly完全只读booleanfalse
disabled禁用booleanfalse
editable文本框可输入booleantrue
clearable是否显示清除按钮booleantrue
size输入框尺寸stringlarge, small, mini
placeholder非范围选择时的占位内容string
start-placeholder范围选择时开始日期的占位内容string
end-placeholder范围选择时结束日期的占位内容string
type显示类型stringyear/month/date/dates/months/years week/datetime/datetimerange/ daterange/monthrangedate
format显示在输入框中的格式string见日期格式yyyy-mm-dd
align对齐方式stringleft, center, rightleft
popper-classdatepicker 下拉框的类名string
picker-options当前时间日期选择器特有的选项参考下表object{}
range-separator选择范围时的分隔符string‘-’
default-value可选,选择器打开时默认显示的时间date可被new date()解析
default-time范围选择时选中日期所使用的当日内具体时刻string[]数组,长度为 2,每项值为字符串,形如12:00:00,第一项指定开始日期的时刻,第二项指定结束日期的时刻,不指定会使用时刻 00:00:00
value-format可选,绑定值的格式。不指定则绑定值为 date 对象 string 见日期格式 —
unlink-panels在范围选择器里取消两个日期面板之间的联动 boolean — false
prefix-icon自定义头部图标的类名stringel-icon-date
clear-icon自定义清空图标的类名stringel-icon-circle-close
validate-event输入时是否触发表单的校验booleantrue
append-to-bodydetepicker 自身是否插入至 body 元素上。booleantrue

到此这篇关于elementui 详细分析datepicker 日期选择器的文章就介绍到这了,更多相关elementui datepicker 日期选择器内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com