vue element 多个日期组件选择禁止重叠

bash 复制代码
<template>
  <div>
    <div v-for="(item, index) in timeList" :key="index">
      <el-date-picker
        v-model="item.time"
        type="daterange"
        :picker-options="pickerOption(index)"
        range-separator="-"
        start-placeholder="开始日期"
        end-placeholder="结束日期"
      />
      <el-button
        type="text"
        @click="delTime(index)"
      >删除</el-button>
    </div>
    <el-button
      type="text"
      @click="addTime"
    >+添加时间</el-button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      // 用于存储所有日期选择器的选中值
      timeList: []
    }
  },
  methods: {
    addTime() {
      const ele = {
        time: []
      }
      this.timeList.push(ele)
      console.log('--', this.timeList)
    },
    delTime(index) {
      this.timeList.splice(index, 1)
    },
    pickerOption(index) {
      const option = {
        disabledDate: (time) => {
          // 过滤当前日期
          const times = this.timeList.map(it => it.time).filter((it, i) => it && i !== index)
          let timeScope = null
          times.forEach((item, indexs) => {
            if (indexs === 0) {
              // -1 解决开始日之前一天不可选中的问题
              timeScope = (time.getTime() > new Date(item[0]).getTime() - 60 * 60 * 24 * 1000 &&
                time.getTime() < new Date(item[1]).getTime() + 1)
            } else {
              timeScope = timeScope || (time.getTime() > new Date(item[0]).getTime() - 60 * 60 * 24 * 1000 &&
                time.getTime() < new Date(item[1]).getTime() + 1)
            }
          })
          return timeScope || (time.getTime() > new Date('2023-12-30').getTime() - 60 * 60 * 24 * 1000 || time.getTime() < new Date('2023-12-01').getTime())
        }
      }
      return option
    }
  }
}
</script>
相关推荐
踢足球的,程序猿6 分钟前
WebAssembly的本质与核心价值
前端·javascript·前端框架·wasm·webassembly
摸鱼仙人~13 分钟前
如何设计一个既提供绘图Tools又提供example_data的MCP服务器:
android·服务器·javascript
3Katrina23 分钟前
深入理解 JavaScript 中的柯里化
前端·javascript
BillKu25 分钟前
Vue3 axios 请求设置 signal 信号属性,以便 abort 取消请求
前端·javascript·vue.js
摸鱼仙人~1 小时前
React forwardRef 与 useImperativeHandle 深度解析
前端·javascript·react.js
JohnYan2 小时前
Bun技术评估 - 10 Testing
javascript·后端·bun
onebyte8bits3 小时前
打造丝滑滚动体验:Scroll-driven Animations 正式上线!
前端·javascript·css·html·html5
三脚猫的喵3 小时前
微信小程序使用图片实现红包雨功能
javascript·微信小程序
软件技术NINI3 小时前
html css js网页制作成品——HTML+CSS+js力学光学天文网页设计(4页)附源码
javascript·css·html
独立开阀者_FwtCoder3 小时前
《独立开发工具 • 半月刊》 第 012 期
前端·javascript·github