Element 根据日期选择器计算选中天数

页面部分

<template>
  <el-form>
    <el-form-item
      label="实际维修开始时间"
      prop="acturalStartTime"
      label-width="140px"
      :rules="[
        {
          required: true,
          message: '请选择实际维修开始时间',
          trigger: 'blur',
        },
      ]"
    >
      <el-date-picker
        v-model="statuForm.acturalStartTime"
        type="date"
        value-format="yyyy-MM-dd"
        placeholder="请选择实际维修开始时间"
        style="width: 100%"
        @change="calculateDuration"
      >
      </el-date-picker>
    </el-form-item>
    <el-form-item
      label="实际维修结束时间"
      prop="acturalEndTime"
      label-width="140px"
      :rules="[
        {
          required: true,
          message: '请选择实际维修结束时间',
          trigger: 'blur',
        },
      ]"
    >
      <el-date-picker
        v-model="statuForm.acturalEndTime"
        type="date"
        value-format="yyyy-MM-dd"
        placeholder="请选择实际维修结束时间"
        style="width: 100%"
        @change="calculateDuration"
      >
      </el-date-picker>
    </el-form-item>
    <el-form-item
      label="实际修理天数"
      prop="acturaDuration"
      label-width="140px"
    >
      <el-input
        v-model="statuForm.acturaDuration"
        type="number"
        placeholder="请输入实际修理天数"
        :readonly="isDisabled"
      >
        <template slot="append">天</template>
      </el-input>
    </el-form-item>
  </el-form>
</template>
<script>
export default {
  data() {
    return {
      statuForm: {
        acturalStartTime: null,
        acturalEndTime: null,
        acturaDuration: null,
      },
      isDisabled: true, // 控制 `acturaDuration` 是否可编辑
    };
  },
  methods: {
    calculateDuration() {
      const { acturalStartTime, acturalEndTime } = this.statuForm;

      if (acturalStartTime && acturalEndTime) {
        const start = new Date(acturalStartTime);
        const end = new Date(acturalEndTime);

        // 判断开始日期是否晚于结束日期
        if (start > end) {
          this.$message.error('开始日期不能晚于结束日期');
          this.statuForm.acturalStartTime = null;
          this.statuForm.acturalEndTime = null;
          this.statuForm.acturaDuration = null;
          return;
        }

        // 计算天数差
        const duration = (end - start) / (1000 * 60 * 60 * 24);
        this.statuForm.acturaDuration = duration;
      } else {
        // 如果其中一个日期为空,清空天数
        this.statuForm.acturaDuration = null;
      }
    },
  },
};
</script>

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值