Ant Design of Vue DatePicker 日期选择框只选择年份

需求

  • 只改变年份

问题

  • Ant Design of Vue DatePicker 日期选择框通过mode = "year"控制,弹出面板以年份显示,但是无法选择,也无法关闭面板

解决方案

  • 将控制面板打开/关闭的yearShow,需要在得到后台数据时将它添加到每条数据中,如果放在data中表格每行的日期面板将同时开/闭.
<template>
  <div>
    <table class="table">
      <thead>
        <tr>
          <th>编码</th>
          <th>名字</th>
          <th>年份</th>
        </tr>
      </thead>
      <tbody>
        <tr v-for="(item, index) in tableList" :key="index">
          <td>{{ item.id }}</td>
          <td>{{ item.name }}</td>
          <td>
            <a-date-picker
              v-model="item.year"
              style="width: 240px"
              mode="year"
              :open="item.yearShow"
              format="YYYY"
              @openChange="openChangeOne($event, index)"
              @panelChange="panelChangeOne($event, index)"
            />
          </td>
        </tr>
      </tbody>
    </table>
  </div>
</template>

<script>
export default {
  data () {
    return {
      // yearShow: false,
      tableList: []
    }
  },
  created () {
    // 模拟后台传回的数据
    this.tableList = [
      { id: '01', name: 'aaa', year: '2019' },
      { id: '02', name: 'bbb', year: '2020' },
      { id: '03', name: 'ccc', year: '2021' }
    ]
    this.tableList = this.tableList.map(item => {
      item.yearShow = false
      return item
    })
  },
  methods: {
    // 弹出日历和关闭日历的回调
    openChangeOne (status, index) {
      console.log('status', status)
      if (status) {
        this.yearShow = true
        window.console.log(index)
        // this.tableList[index].yearShow = true
        this.$set(this.tableList[index], 'yearShow', true)
      }
    },
    // 得到年份选择器的值
    panelChangeOne (value, index) {
      let time = this.$moment(value).format('YYYY')
      this.tableList[index].year = time
      this.tableList[index].yearShow = false
      this.yearShow = false
      console.log(this.tableList)
    }
  }
}
</script>

<style scoped>
div {
  text-align: center;
}
.table {
  margin: 100px auto;
  width: 800px;
}
tr {
  border: 1px solid #ccc;
}
td,
th {
  border: 1px solid #ccc;
}
</style>

在这里插入图片描述

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用Ant Design VueDatePicker组件来实现开始和结束时间的日期限制。下面是一种常见的方法: 首先,你需要在Vue组件中导入DatePicker组件: ```javascript import { DatePicker } from 'ant-design-vue'; ``` 然后,你可以在模板中使用DatePicker组件,并为其添加`range`属性来启用日期范围选择: ```html <template> <div> <a-date-picker v-model="dateRange" range></a-date-picker> </div> </template> ``` 接下来,在Vue组件的`data`选项中定义一个`dateRange`变量来存储选定的日期范围: ```javascript data() { return { dateRange: null, }; }, ``` 现在,你可以使用`disabledDate`属性来设置开始和结束时间的日期限制。在这个属性中,你可以定义一个函数来检查每个日期是否可选。例如,你可以禁用今天之前的日期: ```html <template> <div> <a-date-picker v-model="dateRange" range :disabledDate="disabledDate"></a-date-picker> </div> </template> ``` ```javascript methods: { disabledDate(current) { return current && current.valueOf() < Date.now() - 24 * 60 * 60 * 1000; }, }, ``` 在上述示例中,我们使用了`valueOf()`方法来将日期对象转换为毫秒数,然后进行比较。通过返回`true`或`false`来禁用或启用相应的日期。 你还可以根据需要在`disabledDate`函数中添加其他逻辑,例如限制最大日期或最小日期。 希望这个例子能够帮助你实现Ant Design VueDatePicker组件的开始和结束时间日期限制!如果有任何疑问,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值