main
Jing Li 2024-04-24 20:39:56 +08:00
parent d023d07127
commit 9b9d3813f6
2 changed files with 46 additions and 13 deletions

View File

@ -209,7 +209,7 @@ class PlanController extends AdminController
amis()->TableColumn('completed_at', __('plan.task.completed_at')),
amis()->TableColumn('created_at', __('plan.task.created_at')),
])
->visibleOn('${plan_status == '.PlanStatus::Published->value.' and planable_type == "'.$planableTypeLedger.'"}'),
->visibleOn('${plan_status == '.PlanStatus::Published->value.' && planable_type == "'.$planableTypeLedger.'"}'),
// 业绩指标
amis()->CRUDTable()
@ -236,7 +236,7 @@ class PlanController extends AdminController
->visible(Admin::user()->can('admin.plan.plans.task_delete')),
]),
])
->visibleOn('${plan_status == '.PlanStatus::Published->value.' and planable_type == "'.$planableTypePerformance.'"}'),
->visibleOn('${plan_status == '.PlanStatus::Published->value.' && planable_type == "'.$planableTypePerformance.'"}'),
// 清洁卫生
amis()->CRUDTable()
@ -261,7 +261,7 @@ class PlanController extends AdminController
->visible(Admin::user()->can('admin.plan.plans.task_delete')),
]),
])
->visibleOn('${plan_status == '.PlanStatus::Published->value.' and planable_type == "'.$planableTypeHygiene.'"}'),
->visibleOn('${plan_status == '.PlanStatus::Published->value.' && planable_type == "'.$planableTypeHygiene.'"}'),
]);
}

View File

@ -2,17 +2,21 @@
namespace App\Http\Controllers\Api;
use Illuminate\Http\{Request, Response};
use Illuminate\Database\Eloquent\Relations\Relation;
use App\Http\Resources\WorkflowLogResource;
use App\Enums\CheckStatus;
use App\Models\WorkflowCheck;
use Illuminate\Support\Facades\DB;
use Illuminate\Validation\Rule;
use App\Admin\Services\WorkFlowService;
use App\Enums\CheckStatus;
use App\Exceptions\RuntimeException;
use App\Http\Resources\TaskResource;
use App\Http\Resources\WorkflowLogResource;
use App\Models\Task;
use App\Models\TaskHygiene;
use App\Models\TaskLedger;
use App\Models\WorkflowCheck;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Relations\MorphTo;
use Illuminate\Database\Eloquent\Relations\Relation;
use Illuminate\Http\{Request, Response};
use Illuminate\Support\Facades\DB;
use Illuminate\Validation\Rule;
class WorkflowController extends Controller
{
@ -34,7 +38,7 @@ class WorkflowController extends Controller
}
$query = $model::query()->with($include)
->whereHas('workflow', fn($q) => $q->where('check_status', CheckStatus::Processing))
// ->whereHas('workflow', fn($q) => $q->where('check_status', CheckStatus::Processing))
->whereHas('workflow.logs', fn($q) => $q->own($user))
->orderBy('created_at', 'desc');
@ -57,6 +61,9 @@ class WorkflowController extends Controller
$request->validate([
'subject_type' => 'required',
]);
$user = $request->user();
$subjectType = $request->input('subject_type');
$model = Relation::getMorphedModel($subjectType);
$resource = $this->mapResource($model);
@ -66,11 +73,37 @@ class WorkflowController extends Controller
$explodes = explode(',', $request->input('include'));
$include = array_merge($include, $explodes);
}
$info = $model::query()->with($include)->findOrFail($id);
switch ($model) {
case TaskHygiene::class:
$info = tap($info->task)->setRelation('taskable', $info->unsetRelation('task'));
$info = Task::with([
'taskable' => function (MorphTo $morphTo) {
$morphTo->morphWith([
TaskHygiene::class => ['workflow', 'store'],
TaskLedger::class => ['store'],
]);
},
])->whereHasMorph(
'taskable',
[TaskHygiene::class, TaskLedger::class],
function (Builder $query, string $type) use ($user) {
switch ($type) {
case TaskLedger::class:
case TaskHygiene::class:
if ($user->isStoreMaster()) {
$query->where('store_id', $user->store_id);
} else {
$query->whereRaw('1!=1');
}
break;
}
}
)->findOrFail($id);
$info->taskable->setRelation('task', $info->withoutRelations());
break;
default:
$info = $model::query()->with($include)->findOrFail($id);
break;
}