el-date-picker,创建循环多条时间

<el-card>
      <div>
        <el-form ref="setForm" :model="setForm" :inline="true">
          <p class="setTitle">基础电信企业上报设置</p>
          <div class="navReporting">
            <p class="period">业务清单上报周期<span class="setError">{{ error1 }}</span></p>
            <div>
              <div v-for="(item, index) in setForm.formList" prop="formList" :key="index">
                <el-form-item class="sitem" label="" :rules="index == 0&&setForm.formList.length==1 ? noSetRules : setRules" :prop="'formList.'+index+'.time'">
                  <el-date-picker @change="(val)=>handleTime(val,index,'formList')" value-format="yyyy-MM-dd" v-model="item.time" type="daterange" range-separator="至" start-placeholder="开始年月日" end-placeholder="结束年月日">
                  </el-date-picker>
                </el-form-item>
                <el-button type="danger" size="medium" @click="deleteList(index)" v-if="index>0">删除</el-button>
              </div>
              <el-button size="medium" type="primary" @click="addList">增加一条</el-button>
            </div>
          </div>
        </el-form>
      </div>
      <div>
        <el-button class="btn" type="primary" @click="save()">保存</el-button>
        <el-button class="btn" type="info" @click="resetForm()">重置</el-button>
      </div>
    </el-card>
data() {
    return {
      error1: '',
      setForm: {
        formList: [
          {
            time: [],
            startTime: '',
            endTime: ''
          }
        ],
      },
      setRules: [{ required: true, trigger: 'change', message: '周期不能为空' }],
      noSetRules: []
    }
  },
getTime() {
      // 请求后端接口,数据回显到表格上
      getTime()
        .then(res => {
          if(res.data.formList&&res.data.formList.length>0) {
            this.setForm.formList = res.data.formList
            this.setForm.formList.map((item)=> {
              if(item.startTime) {
                item.time = []
                item.time.push(item.startTime)
                item.time.push(item.endTime)
                return item
              }
            })
          }
        })
        .catch(res => {
          this.$message.error(res.message);
        });
    },
    //判断几条时间是否有重复的时间
    checkIfRepeat(list) {
      if(this.setForm[list]&&this.setForm[list].length>1) {
        for(let i=0;i<this.setForm[list].length-1;i++) {
          for(let j =i+1; j<this.setForm[list].length;j++) {
            if(this.setForm[list][i].startTime <= this.setForm[list][j].endTime && this.setForm[list][i].endTime >= this.setForm[list][j].startTime){
              if(list == 'formList') {
                this.error1= '周期时间重复'
                return true
              }
            }
          }
        }
      }
    },
    //选择时间是给开始时间和结束时间赋值
    handleTime(val,index,list) {
      this.setForm[list][index].startTime = val[0];
      this.setForm[list][index].endTime = val[1];
    },
    save() {
      this.error1 = ''
      this.$refs.setForm.validate(valid => {
        if(valid) {
          if(!this.checkIfRepeat('formList')){
            updateTime(this.setForm).then(()=> {
              this.$message.success('保存成功');
            }).catch(res => {
              this.$message.error(res.message);
            })
          }
        }
      })
    },
    addList() {
      if(this.setForm.formList.length<20)
      this.setForm.formList.push({time: ''})
    },
    deleteList(index) {
      this.setForm.formList.splice(index,1)
    },
    resetForm() {
      this.setForm={formList: [
          {
            time: [],
            startTime: '',
            endTime: ''
          }
        ],
      }
      this.save();
    }

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值