'总账录入', 'plan_performances' => '业绩指标', 'plan_hygienes' => '清洁卫生', ]; protected array $planableTypeLabelMap = [ 'plan_ledgers' => '总账录入', 'plan_performances' => '业绩指标', 'plan_hygienes' => '清洁卫生', ]; public function list(): Page { $crud = $this->baseCRUD() ->headerToolbar([ $this->createTypeButton('drawer', 'lg') ->visible(Admin::user()->can('admin.plan.plans.create')), ...$this->baseHeaderToolBar(), ]) ->bulkActions([]) ->filter($this->baseFilter()->body([ amis()->GroupControl()->mode('horizontal')->body([ amis()->TextControl() ->name('name') ->label(__('plan.plan.name')) ->placeholder('计划名称') ->clearable(), amis()->SelectControl() ->name('planable_type') ->label(__('plan.plan.type')) ->multiple() ->options($this->planableTypes) ->clearable(), amis()->SelectControl() ->name('plan_status') ->label(__('plan.plan.status')) ->multiple() ->options(PlanStatus::options()) ->clearable(), ]), ])) ->columns([ amis()->TableColumn('id', __('plan.plan.id')), amis()->TableColumn('name', __('plan.plan.name')), amis()->TableColumn('planable_type', __('plan.plan.type'))->type('mapping')->map($this->planableTypeLabelMap), amis()->TableColumn('plan_status', __('plan.plan.status'))->type('mapping')->map(PlanStatus::labelMap()), amis()->TableColumn('created_at', __('plan.plan.created_at')), $this->rowActions([ $this->rowEditTypeButton('drawer', 'lg') ->visible(Admin::user()->can('admin.plan.plans.update')) ->visibleOn('${plan_status == '.PlanStatus::Pending->value.'}'), $this->rowDeleteButton() ->visible(Admin::user()->can('admin.plan.plans.delete')) ->visibleOn('${plan_status == '.PlanStatus::Pending->value.'}'), $this->rowShowButton() ->visible(Admin::user()->can('admin.plan.plans.view')), ]), ]); return $this->baseList($crud); } public function form(): Form { return $this->baseForm()->title('')->body([ amis()->SelectControl() ->name('planable_type') ->label(__('plan.plan.type')) ->options(Arr::except($this->planableTypes, ['plan_ledgers'])) ->required() ->disabledOn('${planable_id > 0}'), amis()->TextControl() ->name('name') ->label(__('plan.plan.name')) ->placeholder(__('plan.plan.name')) ->required(), // 业绩指标 amis()->MonthControl() ->name('plan_performance[month]') ->label(__('plan.plan.month')) ->value('${planable.month}') ->required() ->valueFormat('YYYY-MM') ->visibleOn('${planable_type == "plan_performances"}'), amis()->TreeSelectControl() ->name('plan_performance[store_category_id]') ->label(__('plan.plan.store_category')) ->source(admin_url('api/keywords/tree-list?parent_key=store_category')) ->labelField('name') ->valueField('key') ->onlyLeaf(true) ->value('${planable.store_category_id}') ->required() ->visibleOn('${planable_type == "plan_performances"}'), amis()->SelectControl() ->name('plan_performance[store_level_id]') ->label(__('plan.plan.store_level')) ->source(admin_url('api/keywords/tree-list?parent_key=store_level')) ->labelField('name') ->valueField('key') ->value('${planable.store_level_id}') ->clearable() ->visibleOn('${planable_type == "plan_performances"}'), amis()->NumberControl() ->name('plan_performance[performance]') ->label(__('plan.plan.performance')) ->placeholder(__('plan.plan.performance')) ->value('${planable.performance}') ->precision(2) ->showSteps(false) ->required() ->visibleOn('${planable_type == "plan_performances"}'), // 清洁卫生 amis()->MonthControl() ->name('plan_hygiene[month]') ->label(__('plan.plan.month')) ->value('${planable.month}') ->required() ->valueFormat('YYYY-MM') ->visibleOn('${planable_type == "plan_hygienes"}'), amis()->SelectControl() ->name('plan_hygiene[store_ids]') ->label(__('plan.plan.store')) ->value('${planable.store_ids}') ->multiple() ->joinValues(false) ->extractValue(true) ->source(admin_url('api/stores?_all=1')) ->labelField('title') ->valueField('id') ->searchable() ->visibleOn('${planable_type == "plan_hygienes"}'), ]); } public function detail(): Form { return $this->baseDetail()->title('')->body([ amis()->Property()->items([ ['label' => __('plan.plan.name'), 'content' => '${name}'], ['label' => __('plan.plan.type'), 'content' => amis()->Mapping()->name('planable_type')->map($this->planableTypeLabelMap)], ['label' => __('plan.plan.status'), 'content' => amis()->Mapping()->name('plan_status')->map(PlanStatus::labelMap())], ]), amis()->Divider(), // 总账录入 amis()->CRUDTable() ->api(admin_url('api/tasks?plan_id=${id}')) ->columns([ amis()->TableColumn('id', __('plan.task.id')), amis()->TableColumn('name', __('plan.task.name')), amis()->TableColumn('taskable.date', __('plan.task_ledger.date')), amis()->TableColumn('taskable.store.title', __('plan.task_ledger.store')), amis()->TableColumn('taskable.store.master.name', __('plan.task_ledger.store_master')), amis()->TableColumn('task_status', __('plan.task.status'))->type('mapping')->map(TaskStatus::labelMap()), amis()->TableColumn('completed_at', __('plan.task.completed_at')), amis()->TableColumn('created_at', __('plan.task.created_at')), ]) ->visibleOn('${planable_type == "plan_ledgers"}'), ]); } }