no message

This commit is contained in:
kuaifan 2021-06-21 14:08:28 +08:00
parent eee1a6cb96
commit bf106f67e3
6 changed files with 61 additions and 57 deletions

View File

@ -288,7 +288,6 @@ class Project extends AbstractModel
public function deleteProject() public function deleteProject()
{ {
AbstractModel::transaction(function () { AbstractModel::transaction(function () {
WebSocketDialog::whereId($this->dialog_id)->delete();
$columns = ProjectColumn::whereProjectId($this->id)->get(); $columns = ProjectColumn::whereProjectId($this->id)->get();
foreach ($columns as $column) { foreach ($columns as $column) {
$column->deleteColumn(false); $column->deleteColumn(false);

View File

@ -609,9 +609,6 @@ class ProjectTask extends AbstractModel
public function deleteTask($pushMsg = true) public function deleteTask($pushMsg = true)
{ {
AbstractModel::transaction(function () { AbstractModel::transaction(function () {
if ($this->dialog_id) {
WebSocketDialog::whereId($this->dialog_id)->delete();
}
$this->delete(); $this->delete();
$this->addLog("删除{任务}" . $this->name); $this->addLog("删除{任务}" . $this->name);
}); });

View File

@ -262,7 +262,7 @@ class User extends AbstractModel
if (!$user) { if (!$user) {
$authorization = Base::getToken(); $authorization = Base::getToken();
if ($authorization) { if ($authorization) {
throw new ApiException('身份已失效,请重新登录', $user, -1); throw new ApiException('身份已失效,请重新登录', [], -1);
} else { } else {
throw new ApiException('请登录后继续...', [], -1); throw new ApiException('请登录后继续...', [], -1);
} }

View File

@ -3,7 +3,7 @@
namespace App\Models; namespace App\Models;
use App\Exceptions\ApiException; use App\Exceptions\ApiException;
use App\Module\Base; use Illuminate\Database\Eloquent\SoftDeletes;
/** /**
* Class WebSocketDialog * Class WebSocketDialog
@ -21,6 +21,7 @@ use App\Module\Base;
* @property-read int|null $dialog_user_count * @property-read int|null $dialog_user_count
* @method static \Illuminate\Database\Eloquent\Builder|WebSocketDialog newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|WebSocketDialog newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|WebSocketDialog newQuery() * @method static \Illuminate\Database\Eloquent\Builder|WebSocketDialog newQuery()
* @method static \Illuminate\Database\Query\Builder|WebSocketDialog onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|WebSocketDialog query() * @method static \Illuminate\Database\Eloquent\Builder|WebSocketDialog query()
* @method static \Illuminate\Database\Eloquent\Builder|WebSocketDialog whereCreatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|WebSocketDialog whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|WebSocketDialog whereDeletedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|WebSocketDialog whereDeletedAt($value)
@ -30,10 +31,14 @@ use App\Module\Base;
* @method static \Illuminate\Database\Eloquent\Builder|WebSocketDialog whereName($value) * @method static \Illuminate\Database\Eloquent\Builder|WebSocketDialog whereName($value)
* @method static \Illuminate\Database\Eloquent\Builder|WebSocketDialog whereType($value) * @method static \Illuminate\Database\Eloquent\Builder|WebSocketDialog whereType($value)
* @method static \Illuminate\Database\Eloquent\Builder|WebSocketDialog whereUpdatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|WebSocketDialog whereUpdatedAt($value)
* @method static \Illuminate\Database\Query\Builder|WebSocketDialog withTrashed()
* @method static \Illuminate\Database\Query\Builder|WebSocketDialog withoutTrashed()
* @mixin \Eloquent * @mixin \Eloquent
*/ */
class WebSocketDialog extends AbstractModel class WebSocketDialog extends AbstractModel
{ {
use SoftDeletes;
/** /**
* @return \Illuminate\Database\Eloquent\Relations\HasMany * @return \Illuminate\Database\Eloquent\Relations\HasMany
*/ */
@ -100,10 +105,10 @@ class WebSocketDialog extends AbstractModel
break; break;
case "group": case "group":
if ($dialog->group_type === 'project') { if ($dialog->group_type === 'project') {
$dialog->group_info = Project::select(['id', 'name'])->whereDialogId($dialog->id)->first(); $dialog->group_info = Project::withTrashed()->select(['id', 'name'])->whereDialogId($dialog->id)->first();
$dialog->name = $dialog->group_info ? $dialog->group_info->name : ''; $dialog->name = $dialog->group_info ? $dialog->group_info->name : '';
} elseif ($dialog->group_type === 'task') { } elseif ($dialog->group_type === 'task') {
$dialog->group_info = ProjectTask::select(['id', 'name'])->whereDialogId($dialog->id)->first(); $dialog->group_info = ProjectTask::withTrashed()->select(['id', 'name'])->whereDialogId($dialog->id)->first();
$dialog->name = $dialog->group_info ? $dialog->group_info->name : ''; $dialog->name = $dialog->group_info ? $dialog->group_info->name : '';
} }
break; break;

View File

@ -8,14 +8,14 @@
<li @click="dashboard='today'"> <li @click="dashboard='today'">
<div class="block-title">{{$L('今日待完成')}}</div> <div class="block-title">{{$L('今日待完成')}}</div>
<div class="block-data"> <div class="block-data">
<div class="block-num">{{projectStatistics.today || '...'}}</div> <div class="block-num">{{projectStatistics.today || 0}}</div>
<i class="iconfont">&#xe6f4;</i> <i class="iconfont">&#xe6f4;</i>
</div> </div>
</li> </li>
<li @click="dashboard='overdue'"> <li @click="dashboard='overdue'">
<div class="block-title">{{$L('超期未完成')}}</div> <div class="block-title">{{$L('超期未完成')}}</div>
<div class="block-data"> <div class="block-data">
<div class="block-num">{{projectStatistics.overdue || '...'}}</div> <div class="block-num">{{projectStatistics.overdue || 0}}</div>
<i class="iconfont">&#xe603;</i> <i class="iconfont">&#xe603;</i>
</div> </div>
</li> </li>
@ -27,55 +27,57 @@
</div> </div>
</li> </li>
</ul> </ul>
<div class="dashboard-title">{{title}}</div> <template v-if="list.length > 0">
<ul class="dashboard-list overlay-y"> <div class="dashboard-title">{{title}}</div>
<li v-for="item in list" :key="item.id" :style="item.color ? {backgroundColor: item.color} : {}"> <ul class="dashboard-list overlay-y">
<EDropdown <li v-for="item in list" :key="item.id" :style="item.color ? {backgroundColor: item.color} : {}">
trigger="click" <EDropdown
size="small" trigger="click"
placement="bottom" size="small"
@command="dropTask(item, $event)"> placement="bottom"
<div class="drop-icon"> @command="dropTask(item, $event)">
<i class="iconfont">&#xe625;</i> <div class="drop-icon">
</div> <i class="iconfont">&#xe625;</i>
<EDropdownMenu slot="dropdown" class="project-list-more-dropdown-menu"> </div>
<EDropdownItem v-if="item.complete_at" command="uncomplete"> <EDropdownMenu slot="dropdown" class="project-list-more-dropdown-menu">
<div class="item red"> <EDropdownItem v-if="item.complete_at" command="uncomplete">
<Icon type="md-checkmark-circle-outline" />{{$L('标记未完成')}} <div class="item red">
</div> <Icon type="md-checkmark-circle-outline" />{{$L('标记未完成')}}
</EDropdownItem>
<EDropdownItem v-else command="complete">
<div class="item">
<Icon type="md-radio-button-off" />{{$L('完成')}}
</div>
</EDropdownItem>
<EDropdownItem v-if="item.parent_id === 0" command="archived">
<div class="item">
<Icon type="ios-filing" />{{$L('归档')}}
</div>
</EDropdownItem>
<EDropdownItem command="remove">
<div class="item">
<Icon type="md-trash" />{{$L('删除')}}
</div>
</EDropdownItem>
<template v-if="item.parent_id === 0">
<EDropdownItem v-if="item.parent_id === 0" divided disabled>{{$L('背景色')}}</EDropdownItem>
<EDropdownItem v-for="(c, k) in $store.state.taskColorList" :key="k" :command="c">
<div class="item">
<i class="iconfont" :style="{color:c.color||'#f9f9f9'}" v-html="c.color == item.color ? '&#xe61d;' : '&#xe61c;'"></i>{{$L(c.name)}}
</div> </div>
</EDropdownItem> </EDropdownItem>
</template> <EDropdownItem v-else command="complete">
</EDropdownMenu> <div class="item">
</EDropdown> <Icon type="md-radio-button-off" />{{$L('完成')}}
<div class="item-title" @click="$store.dispatch('openTask', item.id)">{{item.name}}</div> </div>
<div :class="['item-time', item.today ? 'today' : '', item.overdue ? 'overdue' : '']"> </EDropdownItem>
<Icon type="ios-time-outline"/> <EDropdownItem v-if="item.parent_id === 0" command="archived">
{{expiresFormat(item.end_at)}} <div class="item">
</div> <Icon type="ios-filing" />{{$L('归档')}}
</li> </div>
</ul> </EDropdownItem>
<EDropdownItem command="remove">
<div class="item">
<Icon type="md-trash" />{{$L('删除')}}
</div>
</EDropdownItem>
<template v-if="item.parent_id === 0">
<EDropdownItem v-if="item.parent_id === 0" divided disabled>{{$L('背景色')}}</EDropdownItem>
<EDropdownItem v-for="(c, k) in $store.state.taskColorList" :key="k" :command="c">
<div class="item">
<i class="iconfont" :style="{color:c.color||'#f9f9f9'}" v-html="c.color == item.color ? '&#xe61d;' : '&#xe61c;'"></i>{{$L(c.name)}}
</div>
</EDropdownItem>
</template>
</EDropdownMenu>
</EDropdown>
<div class="item-title" @click="$store.dispatch('openTask', item.id)">{{item.name}}</div>
<div :class="['item-time', item.today ? 'today' : '', item.overdue ? 'overdue' : '']">
<Icon type="ios-time-outline"/>
{{expiresFormat(item.end_at)}}
</div>
</li>
</ul>
</template>
</div> </div>
</div> </div>
</template> </template>

View File

@ -9,6 +9,7 @@
width: 664px; width: 664px;
max-width: 80%; max-width: 80%;
max-height: 80%; max-height: 80%;
margin-bottom: 2%;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
.dashboard-hello { .dashboard-hello {