子任务时间大于主任务时主任务自动修改

This commit is contained in:
kuaifan 2022-01-09 18:56:30 +08:00
parent e4b9383e96
commit e851bd4d61
4 changed files with 75 additions and 119 deletions

View File

@ -609,27 +609,28 @@ class ProjectTask extends AbstractModel
$times = $data['times'];
list($start, $end) = is_string($times) ? explode(",", $times) : (is_array($times) ? $times : []);
if (Base::isDate($start) && Base::isDate($end) && $start != $end) {
$start_at = Carbon::parse($start);
$end_at = Carbon::parse($end);
if ($this->parent_id > 0 && $data['skipTimesCheck'] !== true) {
// 子任务时间判断
// 子任务时间处理
$mainTask = self::find($this->parent_id);
if (empty($mainTask->end_at)) {
// 如果主任务没有时间则自动设置
$mainTask->start_at = Carbon::parse($start);
$mainTask->end_at = Carbon::parse($end);
$mainTask->save();
$updateMarking['is_update_maintask'] = true;
} else {
// 限制不能超过主任务时间
if (Carbon::parse($start)->lt($mainTask->start_at)) {
throw new ApiException('子任务开始时间不能小于主任务开始时间');
if ($mainTask) {
// 超过主任务时间自动同步主任务
if (empty($mainTask->start_at) || $start_at->lt($mainTask->start_at)) {
$mainTask->start_at = $start_at;
$updateMarking['is_update_maintask'] = true;
}
if (Carbon::parse($end)->gt($mainTask->end_at)) {
throw new ApiException('子任务结束时间不能大于主任务结束时间');
if (empty($mainTask->end_at) || $end_at->gt($mainTask->end_at)) {
$mainTask->end_at = $end_at;
$updateMarking['is_update_maintask'] = true;
}
}
if ($updateMarking['is_update_maintask']) {
$mainTask->save();
}
}
$this->start_at = Carbon::parse($start);
$this->end_at = Carbon::parse($end);
$this->start_at = $start_at;
$this->end_at = $end_at;
}
if ($this->parent_id == 0) {
// 如果是主任务,则同步跟主任务相同时间的子任务

View File

@ -242,6 +242,60 @@
}
return $A.formatDate("Y-m-d", parseInt(time / 1000))
},
/**
* 获取日期选择器的 shortcuts 模板参数
* @returns {(*)[]|[{text, value(): [Date,*]},{text, value(): [Date,*]},{text, value(): [*,*]},{text, value(): [*,*]},{text, value(): [Date,*]},null,null]|(Date|*)[]}
*/
timeOptionShortcuts() {
const lastSecond = (e) => {
return $A.Date($A.formatDate("Y-m-d 23:59:29", Math.round(e / 1000)))
};
return [{
text: $A.L('今天'),
value() {
return [new Date(), lastSecond(new Date().getTime())];
}
}, {
text: $A.L('明天'),
value() {
let e = new Date();
e.setDate(e.getDate() + 1);
return [new Date(), lastSecond(e.getTime())];
}
}, {
text: $A.L('本周'),
value() {
return [$A.getData('今天', true), lastSecond($A.getData('本周结束2', true))];
}
}, {
text: $A.L('本月'),
value() {
return [$A.getData('今天', true), lastSecond($A.getData('本月结束', true))];
}
}, {
text: $A.L('3天'),
value() {
let e = new Date();
e.setDate(e.getDate() + 2);
return [new Date(), lastSecond(e.getTime())];
}
}, {
text: $A.L('5天'),
value() {
let e = new Date();
e.setDate(e.getDate() + 4);
return [new Date(), lastSecond(e.getTime())];
}
}, {
text: $A.L('7天'),
value() {
let e = new Date();
e.setDate(e.getDate() + 6);
return [new Date(), lastSecond(e.getTime())];
}
}];
}
});
/**

View File

@ -211,9 +211,7 @@ export default {
taskTimeOpen: false,
timeOptions: {
shortcuts: []
},
timeOptions: {shortcuts:$A.timeOptionShortcuts()},
loadIng: 0,
@ -272,55 +270,7 @@ export default {
},
methods: {
initLanguage() {
const lastSecond = (e) => {
return $A.Date($A.formatDate("Y-m-d 23:59:29", Math.round(e / 1000)))
};
this.timeOptions = {
shortcuts: [{
text: this.$L('今天'),
value() {
return [new Date(), lastSecond(new Date().getTime())];
}
}, {
text: this.$L('明天'),
value() {
let e = new Date();
e.setDate(e.getDate() + 1);
return [new Date(), lastSecond(e.getTime())];
}
}, {
text: this.$L('本周'),
value() {
return [$A.getData('今天', true), lastSecond($A.getData('本周结束2', true))];
}
}, {
text: this.$L('本月'),
value() {
return [$A.getData('今天', true), lastSecond($A.getData('本月结束', true))];
}
}, {
text: this.$L('3天'),
value() {
let e = new Date();
e.setDate(e.getDate() + 2);
return [new Date(), lastSecond(e.getTime())];
}
}, {
text: this.$L('5天'),
value() {
let e = new Date();
e.setDate(e.getDate() + 4);
return [new Date(), lastSecond(e.getTime())];
}
}, {
text: this.$L('7天'),
value() {
let e = new Date();
e.setDate(e.getDate() + 6);
return [new Date(), lastSecond(e.getTime())];
}
}]
};
},
initCascaderData() {

View File

@ -24,6 +24,7 @@
format="yyyy/MM/dd HH:mm"
type="datetimerange"
class="subtask-time"
placement="bottom-end"
@on-open-change="timeChange"
@on-clear="timeClear"
@on-ok="timeOk"
@ -421,9 +422,7 @@ export default {
timeForce: false,
timeOpen: false,
timeValue: [],
timeOptions: {
shortcuts: []
},
timeOptions: {shortcuts:$A.timeOptionShortcuts()},
nowTime: $A.Time(),
nowInterval: null,
@ -670,55 +669,7 @@ export default {
methods: {
initLanguage() {
const lastSecond = (e) => {
return $A.Date($A.formatDate("Y-m-d 23:59:29", Math.round(e / 1000)))
};
this.timeOptions = {
shortcuts: [{
text: this.$L('今天'),
value() {
return [new Date(), lastSecond(new Date().getTime())];
}
}, {
text: this.$L('明天'),
value() {
let e = new Date();
e.setDate(e.getDate() + 1);
return [new Date(), lastSecond(e.getTime())];
}
}, {
text: this.$L('本周'),
value() {
return [$A.getData('今天', true), lastSecond($A.getData('本周结束2', true))];
}
}, {
text: this.$L('本月'),
value() {
return [$A.getData('今天', true), lastSecond($A.getData('本月结束', true))];
}
}, {
text: this.$L('3天'),
value() {
let e = new Date();
e.setDate(e.getDate() + 2);
return [new Date(), lastSecond(e.getTime())];
}
}, {
text: this.$L('5天'),
value() {
let e = new Date();
e.setDate(e.getDate() + 4);
return [new Date(), lastSecond(e.getTime())];
}
}, {
text: this.$L('7天'),
value() {
let e = new Date();
e.setDate(e.getDate() + 6);
return [new Date(), lastSecond(e.getTime())];
}
}]
};
},
innerHeightListener() {