直接贴代码:
<template>
<div>
<el-form :model="form" :inline="true">
<el-form-item label="起始时间">
<el-date-picker type="date" v-model="form.startDate"></el-date-picker>
</el-form-item>
<el-form-item label="加月数">
<el-select v-model="form.month" @change="calaEndDate">
<el-option v-for="item in months"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="结束时间">
<el-date-picker type="date" v-model="form.endDate"></el-date-picker>
</el-form-item>
</el-form>
</div>
</template>
<script>
export default {
name: `calaDate`,
data () {
return {
form: {
startDate: null,
endDate: null,
month: ''
},
months: [
{ label: '3', value: 3 },
{ label: '6', value: 6 },
{ label: '9', value: 9 }
]
}
},
methods: {
calaEndDate () {
let months = parseInt(this.form.month)
let enDate = new Date(this.form.startDate)
let origYear = enDate.getFullYear()
let origMonth = enDate.getMonth() + 1
let origDays = enDate.getDate()
let counter = 0
let beginMonth = new Date(origYear, origMonth, 0) // 当月
if (beginMonth.getDate() >= origDays) {
counter += beginMonth.getDate() - origDays
}
let endMonth = new Date(origYear, origMonth + months, 0) // 最后一个月
if (endMonth.getDate() > origDays) {
counter += origDays
} else {
counter += endMonth.getDate()
}
for (let i = months - 1; i > 0; i--) { // 循环中间月
let d = new Date(origYear, origMonth + i, 0)
counter += d.getDate()
}
let enEnd = enDate
enEnd = enEnd.setDate(enEnd.getDate() + counter) // 试用结束日
console.log(enEnd)
this.$set(this.form, 'endDate', enEnd)
}
}
}
</script>