mirror of
https://github.com/kuaifan/dootask.git
synced 2025-12-12 11:19:56 +00:00
perf: 任务日志显示子任务关联
This commit is contained in:
parent
2edbe4fb3f
commit
7a457e4364
@ -769,6 +769,7 @@ class ProjectTask extends AbstractModel
|
|||||||
if (Arr::exists($data, 'times')) {
|
if (Arr::exists($data, 'times')) {
|
||||||
$oldAt = [Carbon::parse($this->start_at), Carbon::parse($this->end_at)];
|
$oldAt = [Carbon::parse($this->start_at), Carbon::parse($this->end_at)];
|
||||||
$oldStringAt = $this->start_at ? ($oldAt[0]->toDateTimeString() . '~' . $oldAt[1]->toDateTimeString()) : '';
|
$oldStringAt = $this->start_at ? ($oldAt[0]->toDateTimeString() . '~' . $oldAt[1]->toDateTimeString()) : '';
|
||||||
|
$clearSubTaskTime = false;
|
||||||
$this->start_at = null;
|
$this->start_at = null;
|
||||||
$this->end_at = null;
|
$this->end_at = null;
|
||||||
$times = $data['times'];
|
$times = $data['times'];
|
||||||
@ -802,6 +803,7 @@ class ProjectTask extends AbstractModel
|
|||||||
// 清空子任务时间(子任务时间等于主任务时间)
|
// 清空子任务时间(子任务时间等于主任务时间)
|
||||||
$this->start_at = $mainTask->start_at;
|
$this->start_at = $mainTask->start_at;
|
||||||
$this->end_at = $mainTask->end_at;
|
$this->end_at = $mainTask->end_at;
|
||||||
|
$clearSubTaskTime = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($this->parent_id == 0) {
|
if ($this->parent_id == 0) {
|
||||||
@ -832,7 +834,7 @@ class ProjectTask extends AbstractModel
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
$newStringAt = $this->start_at ? ($this->start_at->toDateTimeString() . '~' . $this->end_at->toDateTimeString()) : '';
|
$newStringAt = $this->start_at && !$clearSubTaskTime ? ($this->start_at->toDateTimeString() . '~' . $this->end_at->toDateTimeString()) : '';
|
||||||
$newDesc = $desc ? "(备注:{$desc})" : "";
|
$newDesc = $desc ? "(备注:{$desc})" : "";
|
||||||
$this->addLog("修改{任务}时间" . $newDesc, [
|
$this->addLog("修改{任务}时间" . $newDesc, [
|
||||||
'change' => [$oldStringAt, $newStringAt]
|
'change' => [$oldStringAt, $newStringAt]
|
||||||
@ -1426,7 +1428,11 @@ class ProjectTask extends AbstractModel
|
|||||||
'detail' => $detail,
|
'detail' => $detail,
|
||||||
];
|
];
|
||||||
if ($this->parent_id) {
|
if ($this->parent_id) {
|
||||||
$record['subtitle'] = $this->name;
|
$record['subtask'] = [
|
||||||
|
'id' => $this->id,
|
||||||
|
'parent_id' => $this->parent_id,
|
||||||
|
'name' => $this->name,
|
||||||
|
];
|
||||||
}
|
}
|
||||||
if ($record) {
|
if ($record) {
|
||||||
$array['record'] = $record;
|
$array['record'] = $record;
|
||||||
|
|||||||
@ -25,6 +25,10 @@
|
|||||||
<div v-if="log.project_task" class="log-task">
|
<div v-if="log.project_task" class="log-task">
|
||||||
<em @click="openTask(log.project_task)">{{$L('关联任务')}}: {{log.project_task.name}}</em>
|
<em @click="openTask(log.project_task)">{{$L('关联任务')}}: {{log.project_task.name}}</em>
|
||||||
</div>
|
</div>
|
||||||
|
<div v-if="hasRecordSubtask(log.record)" class="log-task">
|
||||||
|
<em @click="posSubTask(log.record.subtask)">{{$L('关联子任务')}}: {{log.record.subtask.name}}</em>
|
||||||
|
</div>
|
||||||
|
<div class="log-bottom"></div>
|
||||||
</template>
|
</template>
|
||||||
</TimelineItem>
|
</TimelineItem>
|
||||||
</Timeline>
|
</Timeline>
|
||||||
@ -159,6 +163,15 @@ export default {
|
|||||||
this.getLists();
|
this.getLists();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否有子任务
|
||||||
|
* @param record
|
||||||
|
* @returns {boolean}
|
||||||
|
*/
|
||||||
|
hasRecordSubtask(record) {
|
||||||
|
return $A.isJson(record) && $A.isJson(record.subtask)
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 日志详情
|
* 日志详情
|
||||||
* @param h
|
* @param h
|
||||||
@ -305,6 +318,28 @@ export default {
|
|||||||
|
|
||||||
openTask(task) {
|
openTask(task) {
|
||||||
this.$store.dispatch("openTask", task)
|
this.$store.dispatch("openTask", task)
|
||||||
|
},
|
||||||
|
|
||||||
|
posSubTask(subtask) {
|
||||||
|
const el = this.$parent.$refs[`subTask_${subtask.id}`]
|
||||||
|
if (el && el[0]) {
|
||||||
|
const $e = el[0].$el
|
||||||
|
if ($e.classList.contains("common-shake")) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
$A.scrollIntoViewIfNeeded($e)
|
||||||
|
requestAnimationFrame(_ => {
|
||||||
|
$e.classList.add("common-shake")
|
||||||
|
setTimeout(_ => {
|
||||||
|
$e.classList.remove("common-shake")
|
||||||
|
}, 600)
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
if (subtask.parent_id == this.taskId) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.$store.dispatch("openTask", subtask)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -126,6 +126,11 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.subtitle-value {
|
||||||
|
padding-left: 12px;
|
||||||
|
color: rgba(0, 0, 0, .36);
|
||||||
|
}
|
||||||
|
|
||||||
.detail-user {
|
.detail-user {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
@ -157,16 +162,9 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.log-task {
|
.log-task {
|
||||||
|
display: flex;
|
||||||
margin-left: 12px;
|
margin-left: 12px;
|
||||||
margin-bottom: 6px;
|
padding-bottom: 4px;
|
||||||
opacity: 0.6;
|
|
||||||
cursor: pointer;
|
|
||||||
&:hover {
|
|
||||||
opacity: 1;
|
|
||||||
> em {
|
|
||||||
color: $primary-color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
> em {
|
> em {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
@ -179,8 +177,18 @@
|
|||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
|
cursor: pointer;
|
||||||
|
opacity: 0.6;
|
||||||
|
&:hover {
|
||||||
|
opacity: 1;
|
||||||
|
color: $primary-color;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.log-bottom {
|
||||||
|
width: 100%;
|
||||||
|
height: 6px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user