no message

This commit is contained in:
kuaifan 2021-06-24 14:06:05 +08:00
parent a9b2b041ce
commit 64458c34a2
6 changed files with 93 additions and 33 deletions

View File

@ -164,7 +164,7 @@ class ProjectController extends AbstractController
// //
$data = Project::find($project->id); $data = Project::find($project->id);
$data->addLog("创建项目"); $data->addLog("创建项目");
$data->pushMsg('add', $data->toArray()); $data->pushMsg('add', $data);
return Base::retSuccess('添加成功', $data); return Base::retSuccess('添加成功', $data);
} }
@ -205,7 +205,7 @@ class ProjectController extends AbstractController
$project->addLog("修改项目介绍"); $project->addLog("修改项目介绍");
} }
$project->save(); $project->save();
$project->pushMsg('update', $project->toArray()); $project->pushMsg('update', $project);
// //
return Base::retSuccess('修改成功', $project); return Base::retSuccess('修改成功', $project);
} }
@ -469,7 +469,7 @@ class ProjectController extends AbstractController
// //
$data = ProjectColumn::find($column->id); $data = ProjectColumn::find($column->id);
$data->project_task = []; $data->project_task = [];
$data->pushMsg("add", $data->toArray()); $data->pushMsg("add", $data);
return Base::retSuccess('添加成功', $data); return Base::retSuccess('添加成功', $data);
} }
@ -509,7 +509,7 @@ class ProjectController extends AbstractController
$column->color = $data['color']; $column->color = $data['color'];
} }
$column->save(); $column->save();
$column->pushMsg("update", $column->toArray()); $column->pushMsg("update", $column);
return Base::retSuccess('修改成功', $column); return Base::retSuccess('修改成功', $column);
} }
@ -724,7 +724,7 @@ class ProjectController extends AbstractController
])); ]));
$data = [ $data = [
'new_column' => $newColumn, 'new_column' => $newColumn,
'task' => ProjectTask::with(['taskUser', 'taskTag'])->find($task->id)->toArray(), 'task' => ProjectTask::with(['taskUser', 'taskTag'])->find($task->id),
]; ];
$task->pushMsg('add', $data); $task->pushMsg('add', $data);
return Base::retSuccess('添加成功', $data); return Base::retSuccess('添加成功', $data);
@ -753,7 +753,7 @@ class ProjectController extends AbstractController
]); ]);
$data = [ $data = [
'new_column' => null, 'new_column' => null,
'task' => ProjectTask::with(['taskUser', 'taskTag'])->find($task->id)->toArray(), 'task' => ProjectTask::with(['taskUser', 'taskTag'])->find($task->id),
]; ];
$task->pushMsg('add', $data); $task->pushMsg('add', $data);
return Base::retSuccess('添加成功', $data); return Base::retSuccess('添加成功', $data);
@ -805,10 +805,9 @@ class ProjectController extends AbstractController
// 更新任务 // 更新任务
$task->updateTask($data, $updateContent); $task->updateTask($data, $updateContent);
} }
$data = $task->toArray(); $data = ProjectTask::with(['taskUser', 'taskTag'])->find($task->id);
$data['is_subtask'] = $task->parent_id > 0; $data->is_update_complete = $task->parent_id == 0 && $updateComplete;
$data['is_update_complete'] = $task->parent_id == 0 && $updateComplete; $data->is_update_content = $updateContent;
$data['is_update_content'] = $updateContent;
$task->pushMsg('update', $data); $task->pushMsg('update', $data);
return Base::retSuccess('修改成功', $data); return Base::retSuccess('修改成功', $data);
} }
@ -865,7 +864,7 @@ class ProjectController extends AbstractController
// //
$file = ProjectTaskFile::find($file->id); $file = ProjectTaskFile::find($file->id);
$task->addLog("上传文件:" . $file->name); $task->addLog("上传文件:" . $file->name);
$task->pushMsg('upload', $file->toArray()); $task->pushMsg('upload', $file);
return Base::retSuccess("上传成功", $file); return Base::retSuccess("上传成功", $file);
} }
} }

View File

@ -298,7 +298,7 @@ class Project extends AbstractModel
// 取消归档 // 取消归档
$this->archived_at = null; $this->archived_at = null;
$this->addLog("项目取消归档"); $this->addLog("项目取消归档");
$this->pushMsg('add', $this->toArray()); $this->pushMsg('add', $this);
} else { } else {
// 归档任务 // 归档任务
$this->archived_at = $archived_at; $this->archived_at = $archived_at;

View File

@ -398,7 +398,7 @@ class ProjectTask extends AbstractModel
} }
// 负责人 // 负责人
if (Arr::exists($data, 'owner')) { if (Arr::exists($data, 'owner')) {
$count = $this->task_user_count; $count = $this->taskUser->count();
$array = []; $array = [];
$owner = is_array($data['owner']) ? $data['owner'] : [$data['owner']]; $owner = is_array($data['owner']) ? $data['owner'] : [$data['owner']];
foreach ($owner as $uid) { foreach ($owner as $uid) {
@ -418,17 +418,21 @@ class ProjectTask extends AbstractModel
break; // 子任务只能是一个负责人 break; // 子任务只能是一个负责人
} }
} }
ProjectTaskUser::whereTaskId($this->id)->whereOwner(1)->whereNotIn('userid', $array)->delete(); if ($array) {
$this->syncDialogUser(); if ($count == 0 && count($array) == 1 && $array[0] == User::userid()) {
if (count($array) == 0) {
$this->addLog("删除{任务}负责人");
} else {
if ($count == 0) {
$this->addLog("认领{任务}"); $this->addLog("认领{任务}");
} else { } else {
$this->addLog("修改{任务}负责人"); $this->addLog("修改{任务}负责人:" . implode(",", $array));
} }
} }
$rows = ProjectTaskUser::whereTaskId($this->id)->whereOwner(1)->whereNotIn('userid', $array)->get();
if ($rows->isNotEmpty()) {
$this->addLog("删除{任务}负责人:" . $rows->implode('userid', ','));
foreach ($rows as $row) {
$row->delete();
}
}
$this->syncDialogUser();
} }
// 计划时间 // 计划时间
if (Arr::exists($data, 'times')) { if (Arr::exists($data, 'times')) {
@ -464,13 +468,17 @@ class ProjectTask extends AbstractModel
]); ]);
$array[] = $uid; $array[] = $uid;
} }
ProjectTaskUser::whereTaskId($this->id)->whereOwner(0)->whereNotIn('userid', $array)->delete(); if ($array) {
$this->syncDialogUser(); $this->addLog("修改{任务}协助人员:" . implode(",", $array));
if (count($array) == 0) {
$this->addLog("删除{任务}协助人员");
} else {
$this->addLog("修改{任务}协助人员");
} }
$rows = ProjectTaskUser::whereTaskId($this->id)->whereOwner(0)->whereNotIn('userid', $array)->get();
if ($rows->isNotEmpty()) {
$this->addLog("删除{任务}协助人员:" . $rows->implode('userid', ','));
foreach ($rows as $row) {
$row->delete();
}
}
$this->syncDialogUser();
} }
// 背景色 // 背景色
if (Arr::exists($data, 'color') && $this->color != $data['color']) { if (Arr::exists($data, 'color') && $this->color != $data['color']) {
@ -624,7 +632,7 @@ class ProjectTask extends AbstractModel
$this->addLog("任务取消归档:" . $this->name); $this->addLog("任务取消归档:" . $this->name);
$this->pushMsg('add', [ $this->pushMsg('add', [
'new_column' => null, 'new_column' => null,
'task' => ProjectTask::with(['taskUser', 'taskTag'])->find($this->id)->toArray(), 'task' => ProjectTask::with(['taskUser', 'taskTag'])->find($this->id),
]); ]);
} else { } else {
// 归档任务 // 归档任务

View File

@ -45,7 +45,6 @@ class ProjectUser extends AbstractModel
$tasks = ProjectTask::whereProjectId($this->project_id)->authData($this->userid)->get(); $tasks = ProjectTask::whereProjectId($this->project_id)->authData($this->userid)->get();
foreach ($tasks as $task) { foreach ($tasks as $task) {
if (ProjectTaskUser::whereTaskId($task->id)->whereUserid($this->userid)->delete()) { if (ProjectTaskUser::whereTaskId($task->id)->whereUserid($this->userid)->delete()) {
$task->pushMsg('update');
$task->syncDialogUser(); $task->syncDialogUser();
} }
} }

View File

@ -328,7 +328,17 @@
</Form> </Form>
<div slot="footer"> <div slot="footer">
<Button type="default" @click="userShow=false">{{$L('取消')}}</Button> <Button type="default" @click="userShow=false">{{$L('取消')}}</Button>
<Button type="primary" :loading="userLoad > 0" @click="onUser">{{$L('保存')}}</Button> <Poptip
confirm
placement="bottom"
@on-ok="onUser"
transfer>
<div slot="title">
<p><strong>{{$L('移除成员负责的任务将变成无负责人,')}}</strong></p>
<p>{{$L('注意此操作不可逆!')}}</p>
</div>
<Button type="primary" :loading="userLoad > 0" style="margin-left:8px">{{$L('保存')}}</Button>
</Poptip>
</div> </div>
</Modal> </Modal>
@ -843,6 +853,7 @@ export default {
this.userLoad--; this.userLoad--;
this.userShow = false; this.userShow = false;
this.$store.dispatch("getProjectOne", this.projectId); this.$store.dispatch("getProjectOne", this.projectId);
this.$store.dispatch("getTasks", {project_id: this.projectId})
}).catch(({msg}) => { }).catch(({msg}) => {
$A.modalError(msg); $A.modalError(msg);
this.userLoad--; this.userLoad--;
@ -862,6 +873,7 @@ export default {
this.transferLoad--; this.transferLoad--;
this.transferShow = false; this.transferShow = false;
this.$store.dispatch("getProjectOne", this.projectId); this.$store.dispatch("getProjectOne", this.projectId);
this.$store.dispatch("getTasks", {project_id: this.projectId})
}).catch(({msg}) => { }).catch(({msg}) => {
$A.modalError(msg); $A.modalError(msg);
this.transferLoad--; this.transferLoad--;

View File

@ -354,8 +354,12 @@ export default {
* @returns {Promise<unknown>} * @returns {Promise<unknown>}
*/ */
getProjectOne({state, dispatch}, project_id) { getProjectOne({state, dispatch}, project_id) {
state.projectLoad++;
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
if (state.method.runNum(project_id) === 0) {
reject({msg: 'Parameter error'});
return;
}
state.projectLoad++;
dispatch("call", { dispatch("call", {
url: 'project/one', url: 'project/one',
data: { data: {
@ -380,6 +384,10 @@ export default {
*/ */
archivedProject({dispatch}, project_id) { archivedProject({dispatch}, project_id) {
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
if (state.method.runNum(project_id) === 0) {
reject({msg: 'Parameter error'});
return;
}
dispatch("call", { dispatch("call", {
url: 'project/archived', url: 'project/archived',
data: { data: {
@ -403,6 +411,10 @@ export default {
*/ */
removeProject({dispatch}, project_id) { removeProject({dispatch}, project_id) {
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
if (state.method.runNum(project_id) === 0) {
reject({msg: 'Parameter error'});
return;
}
dispatch("call", { dispatch("call", {
url: 'project/remove', url: 'project/remove',
data: { data: {
@ -426,6 +438,10 @@ export default {
*/ */
exitProject({dispatch}, project_id) { exitProject({dispatch}, project_id) {
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
if (state.method.runNum(project_id) === 0) {
reject({msg: 'Parameter error'});
return;
}
dispatch("call", { dispatch("call", {
url: 'project/exit', url: 'project/exit',
data: { data: {
@ -541,6 +557,10 @@ export default {
*/ */
removeColumn({dispatch}, column_id) { removeColumn({dispatch}, column_id) {
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
if (state.method.runNum(column_id) === 0) {
reject({msg: 'Parameter error'});
return;
}
dispatch("call", { dispatch("call", {
url: 'project/column/remove', url: 'project/column/remove',
data: { data: {
@ -580,7 +600,7 @@ export default {
state[key].push(data); state[key].push(data);
} }
// //
if (data.is_subtask) { if (data.parent_id) {
dispatch("getTaskOne", data.parent_id); dispatch("getTaskOne", data.parent_id);
} }
if (data.is_update_complete) { if (data.is_update_complete) {
@ -712,6 +732,7 @@ export default {
getTaskOne({state, dispatch}, task_id) { getTaskOne({state, dispatch}, task_id) {
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
if (state.method.runNum(task_id) === 0) { if (state.method.runNum(task_id) === 0) {
reject({msg: 'Parameter error'});
return; return;
} }
dispatch("call", { dispatch("call", {
@ -737,6 +758,10 @@ export default {
*/ */
removeTask({dispatch}, task_id) { removeTask({dispatch}, task_id) {
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
if (state.method.runNum(task_id) === 0) {
reject({msg: 'Parameter error'});
return;
}
dispatch("call", { dispatch("call", {
url: 'project/task/remove', url: 'project/task/remove',
data: { data: {
@ -761,6 +786,10 @@ export default {
*/ */
archivedTask({dispatch}, task_id) { archivedTask({dispatch}, task_id) {
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
if (state.method.runNum(task_id) === 0) {
reject({msg: 'Parameter error'});
return;
}
dispatch("call", { dispatch("call", {
url: 'project/task/archived', url: 'project/task/archived',
data: { data: {
@ -786,6 +815,10 @@ export default {
*/ */
getTaskContent({state, dispatch}, task_id) { getTaskContent({state, dispatch}, task_id) {
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
if (state.method.runNum(task_id) === 0) {
reject({msg: 'Parameter error'});
return;
}
dispatch("call", { dispatch("call", {
url: 'project/task/content', url: 'project/task/content',
data: { data: {
@ -815,6 +848,10 @@ export default {
*/ */
getTaskFiles({state, dispatch}, task_id) { getTaskFiles({state, dispatch}, task_id) {
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
if (state.method.runNum(task_id) === 0) {
reject({msg: 'Parameter error'});
return;
}
dispatch("call", { dispatch("call", {
url: 'project/task/files', url: 'project/task/files',
data: { data: {
@ -1064,6 +1101,7 @@ export default {
openDialogUserid({state, dispatch}, userid) { openDialogUserid({state, dispatch}, userid) {
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
if (userid === state.userId) { if (userid === state.userId) {
reject({msg: 'Parameter error'});
return; return;
} }
dispatch("call", { dispatch("call", {
@ -1175,12 +1213,15 @@ export default {
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
const dialog = state.dialogs.find(({id}) => id == dialog_id); const dialog = state.dialogs.find(({id}) => id == dialog_id);
if (!dialog) { if (!dialog) {
reject({msg: 'Parameter error'});
return; return;
} }
if (!dialog.hasMorePages) { if (!dialog.hasMorePages) {
reject({msg: 'No more page'});
return; return;
} }
if (dialog.loading) { if (dialog.loading) {
reject({msg: 'Loading'});
return; return;
} }
dialog.loading = true; dialog.loading = true;
@ -1353,7 +1394,8 @@ export default {
dispatch("saveProject", data) dispatch("saveProject", data)
break; break;
case 'detail': case 'detail':
dispatch("getProjectOne", data); dispatch("getProjectOne", data.id);
dispatch("getTasks", {project_id: data.id})
break; break;
case 'archived': case 'archived':
case 'delete': case 'delete':
@ -1399,7 +1441,7 @@ export default {
dispatch("saveTask", data) dispatch("saveTask", data)
break; break;
case 'upload': case 'upload':
dispatch("getTaskFiles", data.id) dispatch("getTaskFiles", data.task_id)
break; break;
case 'archived': case 'archived':
case 'delete': case 'delete':