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

报告相同问题?

悬赏问题

  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图