找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 63|回复: 0

Element UI日期组件---选择月份具体到当月最后一天

[复制链接]

2万

主题

128

回帖

10万

积分

管理员

积分
104849
发表于 2023-11-9 10:38:16 | 显示全部楼层 |阅读模式 IP:山东省临沂市沂水县 联通

登录后更精彩...O(∩_∩)O...

您需要 登录 才可以下载或查看,没有账号?立即注册

×
Element UI日期组件---选择月份具体到当月最后一天

0.png



Element已有的月份选择组件,选择月份范围的时候,只能展示开始月份的1号到结束月份的1号(例如:开始月份为3月,结束月份为3月,input框内只能展示2023-03-01至2023-03-01),但是我们的需求想要展示的是2023-03-01至2023-03-31这样的日期范围。


既然组件配置不支持这样展示,没办法了,那就拿时间戳转换吧:

[JavaScript] 纯文本查看 复制代码
<template>
    <div>
      <el-row class="JNPF-common-search-box" :gutter="16">
        <el-form @submit.native.prevent>
          <el-col :span="6">
            <el-form-item label="开始时间">
              <el-date-picker
                v-model="query.timeRange"
                type="monthrange"
                size="small"
                value-format="timestamp"
                format="yyyy-MM-dd"
                align="right"
                unlink-panels
                range-separator="至"
                start-placeholder="开始日期"
                end-placeholder="结束日期"
                :picker-options="pickerOptions"
                @change="(value) => changeMonth(value, 'search')"
              >
              </el-date-picker>
            </el-form-item>
          </el-col>
        </el-form>
      </el-row>
    </div>
</template>

<script>
export default {
  data() {
    return {
      pickerOptions: {
        disabledDate: (time) => {
        // 选择的日期小于等于当前日期(不包含今天)
          return time.getTime() > Date.now()
        },
          shortcuts: [{
            text: '本月',
            onClick(picker) {
              const end = new Date();
              const start = new Date();
              start.setDate(1);
              picker.$emit('pick', [start, end]);
            }
          }, {
            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]);
            }
          }]
        },
    };
  },
  methods: {
    changeMonth(value, str){
      //查询当前月份月初到月末
      let myDate = new Date(value[1]);
      let month = myDate.getMonth() + 1;
      let yearEnd = myDate.getFullYear();
      month = month < 10 ? "0" + month : month;   //格式化月份,补0
      let dayEnd = new Date(myDate.getFullYear(), month, 0).getDate(); //获取当月一共有多少天
      let currentDate = new Date();
      let currentYear = new Date().getFullYear();
      let currentMonth = new Date().getMonth()+1;
      if(month===currentMonth&&yearEnd===currentYear){
        this.query.timeRange = [value[0], currentDate]
      }else{
        this.query.timeRange = [value[0], value[1] + (dayEnd - 1) * 86400000]
      }
    },
  },
};



from:https://blog.csdn.net/weixin_42157001/article/details/129801685





回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|IOTsec-Zone|在线工具|CTF WiKi|CTF平台汇总|CTF show|ctfhub|棱角安全|rutracker|攻防世界|php手册|peiqi文库|CyberChef|猫捉鱼铃|手机版|小黑屋|cn-sec|分享屋 ( 鲁ICP备2021028754号 )

GMT+8, 2024-5-1 16:35

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表