mirror of
https://github.com/kuaifan/dootask.git
synced 2025-12-10 18:02:55 +00:00
fix:1.优化字段is_all_visible,2.更新okr版本,3.修复删除任务列报错
This commit is contained in:
parent
e7fbe8bb49
commit
a38ddf83f2
@ -983,7 +983,7 @@ class ProjectController extends AbstractController
|
||||
$query->on('project_p_task_users.task_pid', '=', 'project_tasks.parent_id');
|
||||
});
|
||||
$builder->where(function ($query) use ($userid) {
|
||||
$query->where("project_tasks.is_all_visible", 1);
|
||||
$query->where("project_tasks.visibility", 1);
|
||||
$query->orWhere("project_users.userid", $userid);
|
||||
$query->orWhere("project_task_users.userid", $userid);
|
||||
$query->orWhere("project_p_task_users.userid", $userid);
|
||||
@ -1470,7 +1470,7 @@ class ProjectController extends AbstractController
|
||||
$task = ProjectTask::userTask($task_id, $isArchived, true, false, ['taskUser', 'taskTag']);
|
||||
// 项目可见性
|
||||
$project_userid = ProjectUser::whereProjectId($task->project_id)->whereOwner(1)->value('userid'); // 项目负责人
|
||||
if ($task->is_all_visible != 1 && $user->userid != $project_userid) {
|
||||
if ($task->visibility != 1 && $user->userid != $project_userid) {
|
||||
$visibleUserids = ProjectTaskUser::whereTaskId($task_id)->pluck('userid')->toArray(); // 是否任务负责人、协助人、可见人
|
||||
$subVisibleUserids = ProjectTaskUser::whereTaskPid($task_id)->pluck('userid')->toArray(); // 是否子任务负责人、协助人
|
||||
if (!in_array($user->userid, $visibleUserids) && !in_array($user->userid, $subVisibleUserids)) {
|
||||
@ -1481,7 +1481,7 @@ class ProjectController extends AbstractController
|
||||
$data = $task->toArray();
|
||||
$data['project_name'] = $task->project?->name;
|
||||
$data['column_name'] = $task->projectColumn?->name;
|
||||
$data['visibility_appointor'] = $task->is_all_visible == 1 ? [0] : ProjectTaskUser::whereTaskId($task_id)->whereOwner(2)->pluck('userid');
|
||||
$data['visibility_appointor'] = $task->visibility == 1 ? [0] : ProjectTaskUser::whereTaskId($task_id)->whereOwner(2)->pluck('userid');
|
||||
return Base::retSuccess('success', $data);
|
||||
}
|
||||
|
||||
@ -1732,7 +1732,7 @@ class ProjectController extends AbstractController
|
||||
}
|
||||
|
||||
|
||||
if ($data['is_all_visible'] == 1) {
|
||||
if ($data['visibility'] == 1) {
|
||||
$data['is_visible'] = 1;
|
||||
} else {
|
||||
$projectOwner = ProjectUser::whereProjectId($task->project_id)->whereOwner(1)->pluck('userid')->toArray(); // 项目负责人
|
||||
@ -1780,7 +1780,7 @@ class ProjectController extends AbstractController
|
||||
'column_id' => $task->column_id,
|
||||
'times' => [$task->start_at, $task->end_at],
|
||||
'owner' => [User::userid()],
|
||||
'is_all_visible' => $task->is_all_visible,
|
||||
'visibility' => $task->visibility,
|
||||
]);
|
||||
$data = ProjectTask::oneTask($task->id);
|
||||
$pushUserIds = ProjectTaskUser::whereTaskId($task->id)->pluck('userid')->toArray();
|
||||
@ -1838,13 +1838,13 @@ class ProjectController extends AbstractController
|
||||
//
|
||||
$data = ProjectTask::oneTask($task->id)->toArray();
|
||||
$data['update_marking'] = $updateMarking ?: json_decode('{}');
|
||||
$data['visibility_appointor'] = $data['is_all_visible'] == 1 ? [] : ProjectTaskUser::whereTaskId($task->id)->whereOwner(2)->pluck('userid');
|
||||
$data['visibility_appointor'] = $data['visibility'] == 1 ? [] : ProjectTaskUser::whereTaskId($task->id)->whereOwner(2)->pluck('userid');
|
||||
$task->pushMsg('update', $data);
|
||||
// 可见性推送
|
||||
if ($task->parent_id == 0) {
|
||||
$subUserids = ProjectTaskUser::whereTaskPid($data['id'])->pluck('userid')->toArray();
|
||||
if (Arr::exists($param, 'is_all_visible') || Arr::exists($param, 'visibility_appointor')) {
|
||||
if ($data['is_all_visible'] == 1) {
|
||||
if (Arr::exists($param, 'visibility') || Arr::exists($param, 'visibility_appointor')) {
|
||||
if ($data['visibility'] == 1) {
|
||||
$task->pushMsgVisibleAdd($data);
|
||||
}
|
||||
if ($param['visibility_appointor']) {
|
||||
@ -1854,17 +1854,17 @@ class ProjectController extends AbstractController
|
||||
$addUserIds = array_diff($newVisibleUserIds, $oldVisibleUserIds);
|
||||
$task->pushMsgVisibleUpdate($data, $deleteUserIds, $addUserIds);
|
||||
}
|
||||
if ($data['is_all_visible'] != 1 && empty($param['visibility_appointor'])) {
|
||||
if ($data['visibility'] != 1 && empty($param['visibility_appointor'])) {
|
||||
$task->pushMsgVisibleRemove();
|
||||
}
|
||||
}
|
||||
if (Arr::exists($param, 'owner') && $data['is_all_visible'] != 1) {
|
||||
if (Arr::exists($param, 'owner') && $data['visibility'] != 1) {
|
||||
$diff = array_diff($owners, $subUserids);
|
||||
if ($diff) {
|
||||
$task->pushMsgVisibleRemove($diff);
|
||||
}
|
||||
}
|
||||
if (Arr::exists($param, 'assist') && $data['is_all_visible'] != 1) {
|
||||
if (Arr::exists($param, 'assist') && $data['visibility'] != 1) {
|
||||
$diff = array_diff($assists, $subUserids);
|
||||
if ($diff) {
|
||||
$task->pushMsgVisibleRemove($diff);
|
||||
@ -1878,7 +1878,7 @@ class ProjectController extends AbstractController
|
||||
}
|
||||
$parentTask = ProjectTask::whereId($task->parent_id)->first();
|
||||
$subUserids = ProjectTaskUser::whereTaskPid($task->parent_id)->pluck('userid')->toArray();
|
||||
if ($parentTask && $parentTask->is_all_visible != 1 && empty($subUserids)) {
|
||||
if ($parentTask && $parentTask->visibility != 1 && empty($subUserids)) {
|
||||
$diff = array_diff($owners, $param['owner'] ?: [], $subUserids);
|
||||
if ($diff) {
|
||||
$parentTask->pushMsgVisibleRemove($diff);
|
||||
|
||||
@ -81,11 +81,13 @@ class Deleted extends AbstractModel
|
||||
{
|
||||
$array = is_array($userid) ? $userid : [$userid];
|
||||
foreach ($array as $value) {
|
||||
self::updateInsert([
|
||||
'type' => $type,
|
||||
'did' => $id,
|
||||
'userid' => $value,
|
||||
]);
|
||||
if (!self::where('type', $type)->where('did', $id)->where('userid', $value)->exists()) {
|
||||
self::updateInsert([
|
||||
'type' => $type,
|
||||
'did' => $id,
|
||||
'userid' => $value,
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -371,7 +371,7 @@ class ProjectTask extends AbstractModel
|
||||
$p_color = $data['p_color'];
|
||||
$top = intval($data['top']);
|
||||
$userid = User::userid();
|
||||
$is_all_visible = isset($data['visibility_appoint']) ? $data['visibility_appoint'] : $data['is_all_visible'];
|
||||
$visibility = isset($data['visibility_appoint']) ? $data['visibility_appoint'] : $data['visibility'];
|
||||
$visibility_userids = $data['visibility_appointor'] ?: [];
|
||||
//
|
||||
if (ProjectTask::whereProjectId($project_id)
|
||||
@ -401,7 +401,7 @@ class ProjectTask extends AbstractModel
|
||||
'p_level' => $p_level,
|
||||
'p_name' => $p_name,
|
||||
'p_color' => $p_color,
|
||||
'is_all_visible' => $is_all_visible ?: 1
|
||||
'visibility' => $visibility ?: 1
|
||||
]);
|
||||
if ($content) {
|
||||
$task->desc = Base::getHtml($content, 100);
|
||||
@ -722,10 +722,10 @@ class ProjectTask extends AbstractModel
|
||||
$this->syncDialogUser();
|
||||
}
|
||||
// 可见性
|
||||
if (Arr::exists($data, 'is_all_visible') || Arr::exists($data, 'visibility_appointor')) {
|
||||
if (Arr::exists($data, 'is_all_visible')) {
|
||||
ProjectTask::whereId($data['task_id'])->update(['is_all_visible' => $data["is_all_visible"]]);
|
||||
ProjectTask::whereParentId($data['task_id'])->update(['is_all_visible' => $data["is_all_visible"]]);
|
||||
if (Arr::exists($data, 'visibility') || Arr::exists($data, 'visibility_appointor')) {
|
||||
if (Arr::exists($data, 'visibility')) {
|
||||
ProjectTask::whereId($data['task_id'])->update(['visibility' => $data["visibility"]]);
|
||||
ProjectTask::whereParentId($data['task_id'])->update(['visibility' => $data["visibility"]]);
|
||||
}
|
||||
ProjectTaskUser::whereTaskId($data['task_id'])->whereOwner(2)->delete();
|
||||
if (Arr::exists($data, 'visibility_appointor')) {
|
||||
@ -1453,7 +1453,7 @@ class ProjectTask extends AbstractModel
|
||||
];
|
||||
}
|
||||
// 项目成员(其他人)
|
||||
if ($data['is_all_visible'] == 1) {
|
||||
if ($data['visibility'] == 1) {
|
||||
// 全部可见
|
||||
$userids = array_diff($userids, $owners, $assists);
|
||||
} else {
|
||||
@ -1511,7 +1511,7 @@ class ProjectTask extends AbstractModel
|
||||
$array = [];
|
||||
if ($pushUserIds) {
|
||||
$userids = $pushUserIds;
|
||||
} elseif ($this->is_all_visible != 1) {
|
||||
} elseif ($this->visibility != 1) {
|
||||
$userids = ProjectTaskUser::select(['userid', 'owner'])->whereTaskId($this->id)->orWhere('task_pid', '=', $this->id)->pluck('userid')->toArray();
|
||||
} else {
|
||||
$userids = ProjectUser::whereProjectId($this->project_id)->pluck('userid')->toArray(); // 项目成员
|
||||
|
||||
@ -30,7 +30,7 @@ class AddProjectTasksIsAllVisible extends Migration
|
||||
{
|
||||
//
|
||||
Schema::table('project_tasks', function (Blueprint $table) {
|
||||
$table->dropColumn("avatar");
|
||||
$table->dropColumn("is_all_visible");
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class RenameProjectTasksIsAllVisible extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('project_tasks', function (Blueprint $table) {
|
||||
if (Schema::hasColumn('project_tasks', 'is_all_visible')) {
|
||||
$pre = DB::connection()->getTablePrefix();
|
||||
DB::statement("ALTER TABLE `{$pre}project_tasks` MODIFY COLUMN is_all_visible TINYINT(1) DEFAULT 1 COMMENT '任务可见性:1-项目人员 2-任务人员 3-指定成员'");
|
||||
$table->renameColumn('is_all_visible', 'visibility');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
@ -177,7 +177,7 @@ services:
|
||||
|
||||
okr:
|
||||
container_name: "dootask-okr-${APP_ID}"
|
||||
image: "kuaifan/doookr:0.0.19"
|
||||
image: "kuaifan/doookr:0.0.21"
|
||||
environment:
|
||||
TZ: "${TIMEZONE:-PRC}"
|
||||
DOO_TASK_URL: "http://${APP_IPPR}.3"
|
||||
|
||||
@ -197,7 +197,7 @@
|
||||
:add-icon="false"
|
||||
:before-submit="onAssist"/>
|
||||
</FormItem>
|
||||
<FormItem v-if="taskDetail.is_all_visible > 1 || visibleForce || visibleKeep">
|
||||
<FormItem v-if="taskDetail.visibility > 1 || visibleForce || visibleKeep">
|
||||
<div class="item-label" slot="label">
|
||||
<i class="taskfont"></i>
|
||||
<EDropdown ref="eDropdownRef" trigger="click" placement="bottom" @command="dropVisible">
|
||||
@ -207,21 +207,21 @@
|
||||
<EDropdownMenu slot="dropdown">
|
||||
<EDropdownItem :command="1">
|
||||
<div class="task-menu-icon" >
|
||||
<Icon v-if="taskDetail.is_all_visible == 1" class="completed" :type="'md-checkmark-circle'"/>
|
||||
<Icon v-if="taskDetail.visibility == 1" class="completed" :type="'md-checkmark-circle'"/>
|
||||
<Icon v-else class="uncomplete" :type="'md-radio-button-off'"/>
|
||||
{{$L('项目人员')}}
|
||||
</div>
|
||||
</EDropdownItem>
|
||||
<EDropdownItem :command="2">
|
||||
<div class="task-menu-icon" >
|
||||
<Icon v-if="taskDetail.is_all_visible == 2" class="completed" :type="'md-checkmark-circle'"/>
|
||||
<Icon v-if="taskDetail.visibility == 2" class="completed" :type="'md-checkmark-circle'"/>
|
||||
<Icon v-else class="uncomplete" :type="'md-radio-button-off'"/>
|
||||
{{$L('任务人员')}}
|
||||
</div>
|
||||
</EDropdownItem>
|
||||
<EDropdownItem :command="3">
|
||||
<div class="task-menu-icon" >
|
||||
<Icon v-if="taskDetail.is_all_visible == 3" class="completed" :type="'md-checkmark-circle'"/>
|
||||
<Icon v-if="taskDetail.visibility == 3" class="completed" :type="'md-checkmark-circle'"/>
|
||||
<Icon v-else class="uncomplete" :type="'md-radio-button-off'"/>
|
||||
{{$L('指定成员')}}
|
||||
</div>
|
||||
@ -230,8 +230,8 @@
|
||||
</EDropdown>
|
||||
</div>
|
||||
<div class="item-content user">
|
||||
<span @click="showCisibleDropdown" v-if="taskDetail.is_all_visible == 1" class="visibility-text">{{$L('项目人员可见')}}</span>
|
||||
<span @click="showCisibleDropdown" v-else-if="taskDetail.is_all_visible == 2" class="visibility-text">{{$L('任务人员可见')}}</span>
|
||||
<span @click="showCisibleDropdown" v-if="taskDetail.visibility == 1" class="visibility-text">{{$L('项目人员可见')}}</span>
|
||||
<span @click="showCisibleDropdown" v-else-if="taskDetail.visibility == 2" class="visibility-text">{{$L('任务人员可见')}}</span>
|
||||
<UserSelect
|
||||
v-else
|
||||
ref="visibleUserSelectRef"
|
||||
@ -745,7 +745,7 @@ export default {
|
||||
name: '协助人员',
|
||||
});
|
||||
}
|
||||
if (taskDetail.is_all_visible <= 1 && !this.visibleKeep) {
|
||||
if (taskDetail.visibility <= 1 && !this.visibleKeep) {
|
||||
list.push({
|
||||
command: 'visible',
|
||||
icon: '',
|
||||
@ -857,7 +857,7 @@ export default {
|
||||
"taskDetail.visibility_appointor": {
|
||||
handler(arr) {
|
||||
if(arr?.length > 0 && arr[0]) {
|
||||
this.taskDetail.is_all_visible = 3
|
||||
this.taskDetail.visibility = 3
|
||||
this.updateVisible()
|
||||
}
|
||||
},
|
||||
@ -1582,9 +1582,9 @@ export default {
|
||||
|
||||
visibleUserSelectShowChange(isShow){
|
||||
if(!isShow && (this.taskDetail.visibility_appointor.length == 0 || !this.taskDetail.visibility_appointor[0])){
|
||||
let old = this.taskDetail.old_is_all_visible;
|
||||
this.taskDetail.is_all_visible = old > 2 ? 1 : (old || 1);
|
||||
if(this.taskDetail.is_all_visible < 3 ){
|
||||
let old = this.taskDetail.old_visibility;
|
||||
this.taskDetail.visibility = old > 2 ? 1 : (old || 1);
|
||||
if(this.taskDetail.visibility < 3 ){
|
||||
this.updateVisible();
|
||||
}
|
||||
}
|
||||
@ -1594,12 +1594,12 @@ export default {
|
||||
switch (command) {
|
||||
case 1:
|
||||
case 2:
|
||||
this.taskDetail.is_all_visible = command
|
||||
this.taskDetail.visibility = command
|
||||
this.updateVisible();
|
||||
break;
|
||||
case 3:
|
||||
this.taskDetail.old_is_all_visible = this.taskDetail.is_all_visible
|
||||
this.taskDetail.is_all_visible = command
|
||||
this.taskDetail.old_visibility = this.taskDetail.visibility
|
||||
this.taskDetail.visibility = command
|
||||
this.$nextTick(() => {
|
||||
this.$refs.visibleUserSelectRef.onSelection()
|
||||
});
|
||||
@ -1608,7 +1608,7 @@ export default {
|
||||
},
|
||||
|
||||
updateVisible() {
|
||||
this.updateData(['is_all_visible', 'visibility_appointor'])
|
||||
this.updateData(['visibility', 'visibility_appointor'])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user