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

求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条)

报告相同问题?

悬赏问题

  • ¥20 matlab计算中误差
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊