NoPosition 2021-06-01 09:59 采纳率: 60%
浏览 354
已采纳

求element表格(table)如何实现开始时间不能大于结束时间

<el-table-column label="预计开始时间" width="180" align="center">
   <template slot-scope="cope">
     <el-date-picker v-model="cope.row.StartDate" 
                     type="date"     
                     @change="startTimeStatus(cope.row)" 
                     :picker-options="pickerOptionsStart" 
                     value-format="yyyy/MM/dd" 
                     placeholder="选择开始时间">
     </el-date-picker>
   </template>
</el-table-column>

<el-table-column label="预计完成时间" width="180" align="center">
   <template slot-scope="cope">
     <el-date-picker v-model="cope.row.EndDate" 
                     type="date"     
                     @change="endTimeStatus(cope.row)" 
                     :picker-options="pickerOptionsEnd" 
                     value-format="yyyy/MM/dd" 
                     placeholder="选择完成时间">
      </el-date-picker>
   </template>
</el-table-column>

<script>
    export default {
       data(){
            return {
                pickerOptionsStart: {
                    disabledDate: (time) => {
                      let endDateVal = this.overDate;
                      if (endDateVal) {
                        return time.getTime() > new Date(endDateVal).getTime();
                      }
                    },
                 },
                pickerOptionsEnd: {
                    disabledDate: (time) => {
                      let beginDateVal = this.createDate;
                      if (beginDateVal) {
                            return time.getTime() < new Date(beginDateVal).getTime();
                      }
                    },
                  },
              overDate: "",
              createDate: "",
            } 
        },
       methods:{
            // 时间开始选择器
            startTimeStatus: function (row) {
              this.createDate = row.StartDate;
            },
            // 时间结束选择器
            endTimeStatus: function (row) {
              this.overDate = row.EndDate;
            },
        }
    }
</script>

我是这样写的,但只能实现一行的,第二行选择开始时间会被第一行结束时间所限制,该怎么改写?

  • 写回答

5条回答 默认 最新

  • NoPosition 2021-06-04 14:17
    关注

    解决了,加个focus跟踪当前行内容就行了

    <template>
        <el-table-column label="预计开始时间" width="180" align="center">
             <template slot-scope="cope">
                  <el-date-picker v-model="cope.row.StartDate" 
                                  type="date" 
                                  @change="startTimeStatus(cope.row)"             
                                  @focus="focusStartTime(cope.row)" 
                                  :picker-options="pickerOptionsStart"                                
                                  value-format="yyyy/MM/dd" 
                                  placeholder="选择开始时间">
                   </el-date-picker>
             </template>
        </el-table-column>
        <el-table-column label="预计完成时间" width="180" align="center">
             <template slot-scope="cope">
                   <el-date-picker v-model="cope.row.EndDate" 
                                   type="date" 
                                   @change="endTimeStatus(cope.row)" 
                                   @focus="focusEndTime(cope.row)" 
                                   :picker-options="pickerOptionsEnd" 
                                   value-format="yyyy/MM/dd" 
                                   placeholder="选择完成时间">
                   </el-date-picker>
             </template>
         </el-table-column>
    <template>
    
    export default {
        data{
            return {
                pickerOptionsStart: {
                    disabledDate: (time) => {
                      let endDateVal = this.overDate;
                      if (endDateVal) {
                        return time.getTime() > new Date(endDateVal).getTime();
                      }
                    },
                  },
                pickerOptionsEnd: {
                    disabledDate: (time) => {
                      let beginDateVal = this.createDate;
                      if (beginDateVal) {
                        return time.getTime() < new Date(beginDateVal).getTime();
                      }
                    },
                  },
                overDate: "",
                createDate: "",
            }    
        },
        methods:{
            // 时间开始选择器
                startTimeStatus(row){
                  this.overDate = row.EndDate;
                  this.createDate = row.StartDate;
                },
            //获取焦点后,开始/完成时间为当前行的开始/完成时间
                focusStartTime(row){
                  this.overDate = row.EndDate;
                  this.createDate = row.StartDate;
                },
            // 时间结束选择器
                endTimeStatus(row) {
                  this.createDate = row.StartDate;
                  this.overDate = row.EndDate;
                },
            //获取焦点后,开始/完成时间为当前行的开始/完成时间
                focusEndTime(row){
                  this.overDate = row.EndDate;
                  this.createDate = row.StartDate;
                },
            }
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥30 STM32 INMP441无法读取数据
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境