子任务时间大于主任务时主任务自动修改
This commit is contained in:
parent
e4b9383e96
commit
e851bd4d61
@ -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) {
|
||||
// 如果是主任务,则同步跟主任务相同时间的子任务
|
||||
|
54
resources/assets/js/functions/web.js
vendored
54
resources/assets/js/functions/web.js
vendored
@ -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())];
|
||||
}
|
||||
}];
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
|
@ -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() {
|
||||
|
@ -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() {
|
||||
|
Loading…
x
Reference in New Issue
Block a user