子任务时间大于主任务时主任务自动修改
This commit is contained in:
parent
e4b9383e96
commit
e851bd4d61
@ -609,27 +609,28 @@ class ProjectTask extends AbstractModel
|
|||||||
$times = $data['times'];
|
$times = $data['times'];
|
||||||
list($start, $end) = is_string($times) ? explode(",", $times) : (is_array($times) ? $times : []);
|
list($start, $end) = is_string($times) ? explode(",", $times) : (is_array($times) ? $times : []);
|
||||||
if (Base::isDate($start) && Base::isDate($end) && $start != $end) {
|
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) {
|
if ($this->parent_id > 0 && $data['skipTimesCheck'] !== true) {
|
||||||
// 子任务时间判断
|
// 子任务时间处理
|
||||||
$mainTask = self::find($this->parent_id);
|
$mainTask = self::find($this->parent_id);
|
||||||
if (empty($mainTask->end_at)) {
|
if ($mainTask) {
|
||||||
// 如果主任务没有时间则自动设置
|
// 超过主任务时间自动同步主任务
|
||||||
$mainTask->start_at = Carbon::parse($start);
|
if (empty($mainTask->start_at) || $start_at->lt($mainTask->start_at)) {
|
||||||
$mainTask->end_at = Carbon::parse($end);
|
$mainTask->start_at = $start_at;
|
||||||
$mainTask->save();
|
$updateMarking['is_update_maintask'] = true;
|
||||||
$updateMarking['is_update_maintask'] = true;
|
|
||||||
} else {
|
|
||||||
// 限制不能超过主任务时间
|
|
||||||
if (Carbon::parse($start)->lt($mainTask->start_at)) {
|
|
||||||
throw new ApiException('子任务开始时间不能小于主任务开始时间');
|
|
||||||
}
|
}
|
||||||
if (Carbon::parse($end)->gt($mainTask->end_at)) {
|
if (empty($mainTask->end_at) || $end_at->gt($mainTask->end_at)) {
|
||||||
throw new ApiException('子任务结束时间不能大于主任务结束时间');
|
$mainTask->end_at = $end_at;
|
||||||
|
$updateMarking['is_update_maintask'] = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if ($updateMarking['is_update_maintask']) {
|
||||||
|
$mainTask->save();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
$this->start_at = Carbon::parse($start);
|
$this->start_at = $start_at;
|
||||||
$this->end_at = Carbon::parse($end);
|
$this->end_at = $end_at;
|
||||||
}
|
}
|
||||||
if ($this->parent_id == 0) {
|
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))
|
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,
|
taskTimeOpen: false,
|
||||||
|
|
||||||
timeOptions: {
|
timeOptions: {shortcuts:$A.timeOptionShortcuts()},
|
||||||
shortcuts: []
|
|
||||||
},
|
|
||||||
|
|
||||||
loadIng: 0,
|
loadIng: 0,
|
||||||
|
|
||||||
@ -272,55 +270,7 @@ export default {
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
initLanguage() {
|
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() {
|
initCascaderData() {
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
format="yyyy/MM/dd HH:mm"
|
format="yyyy/MM/dd HH:mm"
|
||||||
type="datetimerange"
|
type="datetimerange"
|
||||||
class="subtask-time"
|
class="subtask-time"
|
||||||
|
placement="bottom-end"
|
||||||
@on-open-change="timeChange"
|
@on-open-change="timeChange"
|
||||||
@on-clear="timeClear"
|
@on-clear="timeClear"
|
||||||
@on-ok="timeOk"
|
@on-ok="timeOk"
|
||||||
@ -421,9 +422,7 @@ export default {
|
|||||||
timeForce: false,
|
timeForce: false,
|
||||||
timeOpen: false,
|
timeOpen: false,
|
||||||
timeValue: [],
|
timeValue: [],
|
||||||
timeOptions: {
|
timeOptions: {shortcuts:$A.timeOptionShortcuts()},
|
||||||
shortcuts: []
|
|
||||||
},
|
|
||||||
|
|
||||||
nowTime: $A.Time(),
|
nowTime: $A.Time(),
|
||||||
nowInterval: null,
|
nowInterval: null,
|
||||||
@ -670,55 +669,7 @@ export default {
|
|||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
initLanguage() {
|
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() {
|
innerHeightListener() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user