要件の説明
「追加」ボタンをクリックして、新しい回転ステージを追加します。これは、通常の配列プッシュとページのレンダリングです。問題はありません。主な理由は、回転終了時間が最初の回転ステージに入力されている場合、回転開始時間が入力されていないためです。新しく追加された回転ステージの回転終了時刻は自動的に入力される必要があります (2 番目の回転開始時刻は最初の回転ステージの終了時刻の 1 日後、2 番目の回転ステージの終了時刻は 1 か月後です) 2 番目の開始時間など)
問題分析
主な理由は、新しいステージの開始時刻が前のステージの終了時刻に対応しているため、まず特定の時刻を取得した翌日を把握する必要があるためです。ここに私の JS コードを貼り付けてください。
// 获取某一时间的前一天 后一天 一周 或者是几个小时
getDay (td, day, hours) { // td 相当于指定的某个时间 在我的需求里相当于是上一阶段的结束时间 这里根据自己的需求可自行变化
var today = new Date(td)
var targetday = today.getTime() + 1000 * 60 * 60 * 24 * day + hours
today.setTime(targetday)
var tYear = today.getFullYear()
var tMonth = today.getMonth()
var tDate = today.getDate()
// var getHours = today.getHours()
tMonth = this.doHandleMonth(tMonth + 1)
tDate = this.doHandleMonth(tDate)
return tYear + '-' + tMonth + '-' + tDate
},
doHandleMonth (month) {
var m = month
if (month.toString().length === 1) {
m = '0' + month
}
return m
},
移行
mounted () {
console.log('昨天:', this.getDay('2022-9-15', -1, 7200000))
console.log('今天:', this.getDay('2022-9-15', 0, 3600000))
console.log('明天:', this.getDay('2022-9-15', 1, 3600000))
console.log('一周后:', this.getDay('2022-9-15', 7, 7200000))
}
効果
実装
時間がカプセル化された後、配列に追加された各項目を自動的に埋める必要があるため、このメソッドが呼び出されます。最初のステージを埋める時間がない場合は、後から追加されたステージのローテーション時間がかかります。自動的に入力する必要はありません。
// 添加轮转阶段
handlePlus () {
console.log(this.form)
this.form.push({
departValue: '', // 轮转科室
tpStartTime: '', // 轮转开始时间
tpEndTime: '', // 轮转结束时间
bookItem: '', // 轮转教材
intoTestNumber: 10, // 入科考试
centerTestNumber: 10, // 中期考试
outTestNumber: 10, // 出科考试
makeupTestNumber: 10 // 补考考试
})
if (this.form[0].tpEndTime === '') {
return
}
for (var i = 0; i < this.form.length; i++) {
console.log(this.getDay(this.form[i].tpEndTime, 1, 3600000), '----')
this.form[this.form.length - 1].tpStartTime = this.getDay(this.form[this.form.length - 2].tpEndTime, 1, 7200000) // 第二阶段的开始时间是第一阶段的结束时间后一天
this.form[this.form.length - 1].tpEndTime = this.getDay(this.form[this.form.length - 1].tpStartTime, 30, 7200000) // 第二阶段的结束时间是第二阶段的开始时间后一个月
}
},
添付参考資料:
Vue は現在時刻の前日、翌日、現在時刻の週または時間を取得します。