diff --git a/app/Http/Controllers/Api/ProjectController.php b/app/Http/Controllers/Api/ProjectController.php index a853f780..90faabcd 100755 --- a/app/Http/Controllers/Api/ProjectController.php +++ b/app/Http/Controllers/Api/ProjectController.php @@ -392,6 +392,7 @@ class ProjectController extends AbstractController // $data = $column->find($column->id); $data->project_task = []; + $data->pushMsg("add", $data->toArray()); return Base::retSuccess('添加成功', $data); } @@ -461,7 +462,9 @@ class ProjectController extends AbstractController } // if ($column->deleteColumn()) { - return Base::retSuccess('删除成功'); + $data = ['id' => $column->id]; + $column->pushMsg("delete", $data); + return Base::retSuccess('删除成功', $data); } return Base::retError('删除失败'); } diff --git a/app/Models/ProjectColumn.php b/app/Models/ProjectColumn.php index 3b8de557..4cb196aa 100644 --- a/app/Models/ProjectColumn.php +++ b/app/Models/ProjectColumn.php @@ -3,6 +3,8 @@ namespace App\Models; use App\Module\Base; +use App\Tasks\PushTask; +use Hhxsv5\LaravelS\Swoole\Task\Task; use Illuminate\Database\Eloquent\SoftDeletes; /** @@ -17,6 +19,7 @@ use Illuminate\Database\Eloquent\SoftDeletes; * @property \Illuminate\Support\Carbon|null $created_at * @property \Illuminate\Support\Carbon|null $updated_at * @property \Illuminate\Support\Carbon|null $deleted_at + * @property-read \App\Models\Project|null $project * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\ProjectTask[] $projectTask * @property-read int|null $project_task_count * @method static \Illuminate\Database\Eloquent\Builder|ProjectColumn newModelQuery() @@ -39,6 +42,14 @@ class ProjectColumn extends AbstractModel { use SoftDeletes; + /** + * @return \Illuminate\Database\Eloquent\Relations\HasOne + */ + public function project(): \Illuminate\Database\Eloquent\Relations\HasOne + { + return $this->hasOne(Project::class, 'id', 'project_id'); + } + /** * @return \Illuminate\Database\Eloquent\Relations\HasMany */ @@ -86,4 +97,26 @@ class ProjectColumn extends AbstractModel $log->save(); return $log; } + + /** + * 推送消息 + * @param string $action + * @param array $data + */ + public function pushMsg($action, $data) + { + if (!$this->project) { + return; + } + $lists = [ + 'userid' => $this->project->relationUserids(), + 'msg' => [ + 'type' => 'projectColumn', + 'action' => $action, + 'data' => $data, + ] + ]; + $task = new PushTask($lists, false); + Task::deliver($task); + } } diff --git a/resources/assets/js/pages/manage/components/ProjectList.vue b/resources/assets/js/pages/manage/components/ProjectList.vue index b7f1b4ca..95ba3afb 100644 --- a/resources/assets/js/pages/manage/components/ProjectList.vue +++ b/resources/assets/js/pages/manage/components/ProjectList.vue @@ -76,9 +76,10 @@ - +
{{$L('修改')}} @@ -701,7 +702,7 @@ export default { }).then(({data, msg}) => { $A.messageSuccess(msg); this.addColumnName = ''; - this.projectDetail.project_column.push(data) + this.$store.commit("columnAddSuccess", data); }).catch(({msg}) => { $A.modalError(msg); }); @@ -777,15 +778,11 @@ export default { data: { column_id: column.id, }, - }).then(({msg}) => { + }).then(({data, msg}) => { $A.messageSuccess(msg); this.$set(column, 'loading', false); this.$Modal.remove(); - let index = this.projectDetail.project_column.findIndex(({id}) => id === column.id); - if (index > -1) { - this.projectDetail.project_column.splice(index, 1); - } - this.$store.dispatch("getProjectBasic", column.project_id); + this.$store.commit("columnRemoveSuccess", data); }).catch(({msg}) => { $A.modalError(msg, 301); this.$set(column, 'loading', false); diff --git a/resources/assets/js/store/actions.js b/resources/assets/js/store/actions.js index f7aad0b1..d1ed6e19 100644 --- a/resources/assets/js/store/actions.js +++ b/resources/assets/js/store/actions.js @@ -1064,7 +1064,7 @@ export default { }); switch (type) { /** - * 会话消息 + * 聊天会话消息 */ case "dialog": // 更新会话 (function (msg) { @@ -1110,6 +1110,23 @@ export default { })(msgDetail); break; + /** + * 任务列表消息 + */ + case "projectColumn": + (function (msg) { + const {action, data} = msg; + switch (action) { + case 'add': + commit("columnAddSuccess", data) + break; + case 'delete': + commit("columnRemoveSuccess", data) + break; + } + })(msgDetail); + break; + /** * 任务消息 */ diff --git a/resources/assets/js/store/mutations.js b/resources/assets/js/store/mutations.js index c37efb84..b3e537d6 100644 --- a/resources/assets/js/store/mutations.js +++ b/resources/assets/js/store/mutations.js @@ -1,4 +1,31 @@ export default { + /** + * 添加列表成功 + * @param state + * @param data + */ + columnAddSuccess(state, data) { + if (state.projectDetail.id == data.project_id) { + let index = state.projectDetail.project_column.findIndex(({id}) => id === data.id); + if (index === -1) { + state.projectDetail.project_column.push(data); + } + } + }, + + /** + * 删除列表成功 + * @param state + * @param data + */ + columnRemoveSuccess(state, data) { + let index = state.projectDetail.project_column.findIndex(({id}) => id === data.id); + if (index > -1) { + state.projectDetail.project_column.splice(index, 1); + } + this.dispatch("getProjectBasic", data.project_id); + }, + /** * 添加任务成功 * @param state diff --git a/resources/assets/sass/pages/components/project-list.scss b/resources/assets/sass/pages/components/project-list.scss index 31bd192d..e8f4b274 100644 --- a/resources/assets/sass/pages/components/project-list.scss +++ b/resources/assets/sass/pages/components/project-list.scss @@ -757,9 +757,4 @@ } } } - &.column-more { - > li { - min-width: 130px; - } - } }