no message
This commit is contained in:
parent
78f88db560
commit
0b4e1f3dee
@ -161,7 +161,16 @@ class ProjectController extends AbstractController
|
||||
"owner": 1, // 是否项目负责人
|
||||
"owner_userid": 1, // 项目负责人ID
|
||||
|
||||
"project_user": [], // 项目成员
|
||||
"project_user": [ // 项目成员
|
||||
{
|
||||
"id": 2,
|
||||
"project_id": 2,
|
||||
"userid": 1,
|
||||
"owner": 1,
|
||||
"created_at": "2022-01-02 00:55:32",
|
||||
"updated_at": "2022-01-02 00:55:32"
|
||||
}
|
||||
],
|
||||
|
||||
"task_num": 9,
|
||||
"task_complete": 0,
|
||||
@ -1022,7 +1031,7 @@ class ProjectController extends AbstractController
|
||||
}
|
||||
//
|
||||
$task = ProjectTask::userTask($file->task_id, [], true, $project);
|
||||
if (!$task->isOwnerParent() && !$project->owner) {
|
||||
if (!$task->isOwner() && !$project->owner) {
|
||||
return Base::retError('仅限项目或任务负责人操作');
|
||||
}
|
||||
//
|
||||
@ -1125,7 +1134,7 @@ class ProjectController extends AbstractController
|
||||
$name = Request::input('name');
|
||||
//
|
||||
$task = ProjectTask::userTask($task_id, [], true, $project);
|
||||
if (!$task->isOwnerParent() && !$project->owner) {
|
||||
if (!$task->isOwner() && !$project->owner) {
|
||||
return Base::retError('仅限项目或任务负责人添加');
|
||||
}
|
||||
//
|
||||
@ -1180,39 +1189,24 @@ class ProjectController extends AbstractController
|
||||
//
|
||||
$task = ProjectTask::userTask($task_id, [], true, $project);
|
||||
//
|
||||
if (count($task->taskUser->where('owner', 1)) > 0) {
|
||||
if ($task->hasOwner()) {
|
||||
// 任务有负责人后仅限项目或任务负责人修改
|
||||
if (!$task->isOwnerParent() && !$project->owner) {
|
||||
if (!$task->isOwner() && !$project->owner) {
|
||||
return Base::retError('仅限项目或任务负责人修改');
|
||||
}
|
||||
}
|
||||
//
|
||||
$updateComplete = false;
|
||||
// 更新任务
|
||||
$updateProject = false;
|
||||
$updateContent = false;
|
||||
$updateSubTask = false;
|
||||
if (Base::isDate($data['complete_at'])) {
|
||||
// 标记已完成
|
||||
if ($task->complete_at) {
|
||||
return Base::retError('任务已完成');
|
||||
}
|
||||
$task->completeTask(Carbon::now());
|
||||
$updateComplete = true;
|
||||
} elseif (Arr::exists($data, 'complete_at')) {
|
||||
// 标记未完成
|
||||
if (!$task->complete_at) {
|
||||
return Base::retError('未完成任务');
|
||||
}
|
||||
$task->completeTask(null);
|
||||
$updateComplete = true;
|
||||
} else {
|
||||
// 更新任务
|
||||
$task->updateTask($data, $updateContent, $updateSubTask);
|
||||
}
|
||||
$task->updateTask($data, $updateProject, $updateContent, $updateSubTask);
|
||||
//
|
||||
$data = ProjectTask::with(['taskUser', 'taskTag'])->find($task->id)->toArray();
|
||||
$data['is_update_complete'] = $updateComplete;
|
||||
$data['is_update_project'] = $updateProject;
|
||||
$data['is_update_content'] = $updateContent;
|
||||
$data['is_update_subtask'] = $updateSubTask;
|
||||
$task->pushMsg('update', $data);
|
||||
//
|
||||
return Base::retSuccess('修改成功', $data);
|
||||
}
|
||||
|
||||
@ -1240,7 +1234,7 @@ class ProjectController extends AbstractController
|
||||
$task_id = Base::getPostInt('task_id');
|
||||
//
|
||||
$task = ProjectTask::userTask($task_id, [], true, $project);
|
||||
if (!$task->isOwnerParent() && !$project->owner) {
|
||||
if (!$task->isOwner() && !$project->owner) {
|
||||
return Base::retError('仅限项目或任务负责人上传');
|
||||
}
|
||||
//
|
||||
@ -1357,7 +1351,7 @@ class ProjectController extends AbstractController
|
||||
$type = Request::input('type', 'add');
|
||||
//
|
||||
$task = ProjectTask::userTask($task_id, [], false, $project);
|
||||
if (!$task->isOwnerParent() && !$project->owner) {
|
||||
if (!$task->isOwner() && !$project->owner) {
|
||||
return Base::retError('仅限项目或任务负责人操作');
|
||||
}
|
||||
//
|
||||
@ -1394,7 +1388,7 @@ class ProjectController extends AbstractController
|
||||
$task_id = intval(Request::input('task_id'));
|
||||
//
|
||||
$task = ProjectTask::userTask($task_id, [], true, $project);
|
||||
if (!$task->isOwnerParent() && !$project->owner) {
|
||||
if (!$task->isOwner() && !$project->owner) {
|
||||
return Base::retError('仅限项目或任务负责人删除');
|
||||
}
|
||||
//
|
||||
|
@ -433,13 +433,32 @@ class ProjectTask extends AbstractModel
|
||||
/**
|
||||
* 修改任务
|
||||
* @param $data
|
||||
* @param $updateContent
|
||||
* @param $updateSubTask
|
||||
* @param bool $updateProject 是否更新项目数据(项目统计)
|
||||
* @param bool $updateContent 是否更新任务详情
|
||||
* @param bool $updateSubTask 是否更新子任务
|
||||
* @return bool
|
||||
*/
|
||||
public function updateTask($data, &$updateContent = false, &$updateSubTask = false)
|
||||
public function updateTask($data, &$updateProject = false, &$updateContent = false, &$updateSubTask = false)
|
||||
{
|
||||
AbstractModel::transaction(function () use ($data, &$updateContent, &$updateSubTask) {
|
||||
AbstractModel::transaction(function () use ($data, &$updateProject, &$updateContent, &$updateSubTask) {
|
||||
// 状态
|
||||
if (Arr::exists($data, 'complete_at')) {
|
||||
if (Base::isDate($data['complete_at'])) {
|
||||
// 标记已完成
|
||||
if ($this->complete_at) {
|
||||
throw new ApiException('任务已完成');
|
||||
}
|
||||
$this->completeTask(Carbon::now());
|
||||
} else {
|
||||
// 标记未完成
|
||||
if (!$this->complete_at) {
|
||||
throw new ApiException('未完成任务');
|
||||
}
|
||||
$this->completeTask(null);
|
||||
}
|
||||
$updateProject = true;
|
||||
return;
|
||||
}
|
||||
// 标题
|
||||
if (Arr::exists($data, 'name') && $this->name != $data['name']) {
|
||||
if (empty($data['name'])) {
|
||||
@ -486,6 +505,7 @@ class ProjectTask extends AbstractModel
|
||||
$row->delete();
|
||||
}
|
||||
}
|
||||
$updateProject = true;
|
||||
$this->syncDialogUser();
|
||||
}
|
||||
// 计划时间
|
||||
@ -677,12 +697,24 @@ class ProjectTask extends AbstractModel
|
||||
return $user->owner ? 2 : 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否有负责人
|
||||
* @return bool
|
||||
*/
|
||||
public function hasOwner()
|
||||
{
|
||||
if (!isset($this->appendattrs['has_owner'])) {
|
||||
$this->appendattrs['has_owner'] = ProjectTaskUser::whereTaskId($this->id)->whereOwner(1)->exists();
|
||||
}
|
||||
return $this->appendattrs['has_owner'];
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否负责人
|
||||
* @param bool $isParent 是父级任务的负责人也算
|
||||
* @return bool
|
||||
*/
|
||||
public function isOwnerParent($isParent = true) {
|
||||
public function isOwner($isParent = true) {
|
||||
if ($this->owner) {
|
||||
return true;
|
||||
}
|
||||
@ -714,7 +746,7 @@ class ProjectTask extends AbstractModel
|
||||
throw new ApiException('子任务未完成');
|
||||
}
|
||||
}
|
||||
if (count($this->taskUser->where('owner', 1)) == 0) {
|
||||
if (!$this->hasOwner()) {
|
||||
throw new ApiException('请先领取任务');
|
||||
}
|
||||
$this->complete_at = $complete_at;
|
||||
|
@ -571,9 +571,9 @@ export default {
|
||||
|
||||
columnList() {
|
||||
const {projectId, columns, tasks} = this;
|
||||
let list = $A.cloneJSON(columns.filter(({project_id}) => {
|
||||
const list = columns.filter(({project_id}) => {
|
||||
return project_id == projectId
|
||||
})).sort((a, b) => {
|
||||
}).sort((a, b) => {
|
||||
if (a.sort != b.sort) {
|
||||
return a.sort - b.sort;
|
||||
}
|
||||
@ -589,7 +589,7 @@ export default {
|
||||
return a.id - b.id;
|
||||
});
|
||||
})
|
||||
return Object.freeze(list);
|
||||
return list;
|
||||
},
|
||||
|
||||
myList() {
|
||||
@ -751,17 +751,42 @@ export default {
|
||||
}
|
||||
this.sortData = newSort;
|
||||
//
|
||||
const data = {
|
||||
project_id: this.projectId,
|
||||
sort: this.sortData,
|
||||
only_column: only_column === true ? 1 : 0
|
||||
};
|
||||
this.sortDisabled = true;
|
||||
this.$store.dispatch("call", {
|
||||
url: 'project/sort',
|
||||
data: {
|
||||
project_id: this.projectId,
|
||||
sort: this.sortData,
|
||||
only_column: only_column === true ? 1 : 0
|
||||
},
|
||||
data,
|
||||
}).then(({msg}) => {
|
||||
$A.messageSuccess(msg);
|
||||
this.sortDisabled = false;
|
||||
//
|
||||
if (!data.only_column) {
|
||||
let sort,
|
||||
upTask = [];
|
||||
data.sort.forEach((item) => {
|
||||
sort = -1;
|
||||
upTask.push(...item.task.map(id => {
|
||||
sort++;
|
||||
upTask.push(...this.tasks.filter(({parent_id}) => parent_id == id).map(({id}) => {
|
||||
return {
|
||||
id,
|
||||
sort,
|
||||
column_id: item.id,
|
||||
}
|
||||
}))
|
||||
return {
|
||||
id,
|
||||
sort,
|
||||
column_id: item.id,
|
||||
}
|
||||
}))
|
||||
})
|
||||
this.$store.dispatch("saveTask", upTask)
|
||||
}
|
||||
}).catch(({msg}) => {
|
||||
$A.modalError(msg);
|
||||
this.sortDisabled = false;
|
||||
|
4
resources/assets/js/store/actions.js
vendored
4
resources/assets/js/store/actions.js
vendored
@ -862,8 +862,8 @@ export default {
|
||||
if (data.parent_id > 0 && state.tasks.findIndex(({id}) => id == data.parent_id) === -1) {
|
||||
dispatch("getTaskOne", data.parent_id);
|
||||
}
|
||||
if (data.is_update_complete) {
|
||||
data.is_update_complete = false;
|
||||
if (data.is_update_project) {
|
||||
data.is_update_project = false;
|
||||
dispatch("getProjectOne", data.project_id);
|
||||
}
|
||||
if (data.is_update_content) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user