baseCRUD() ->filterTogglable(false) ->columnsTogglable(false) ->headerToolbar([ $this->createButton(true), ]) ->quickSaveItemApi(admin_url('quick-edit/banner/$id')) ->filter($this->baseFilter()->actions()->body([ amisMake()->SelectControl()->name('place_id')->label(__('banner.place_id'))->options($this->getPlaceOptions())->size('md')->clearable(), amisMake()->TextControl()->name('title')->label(__('banner.title'))->size('md')->clearable(), amisMake()->Component()->setType('submit')->label(__('admin.search'))->level('primary'), ])) ->columns([ amisMake()->TableColumn()->name('id')->label(__('banner.id')), amisMake()->TableColumn()->name('place.name')->label(__('banner.place_id')), amisMake()->TableColumn()->name('title')->label(__('banner.title')), amisMake()->Image()->name('picture')->label(__('banner.picture'))->width(30), amisMake() ->TableColumn() ->name('sort') ->label(__('banner.sort')) ->align('center') ->quickEdit(Components::make()->sortControl('sort', __('banner.sort'))->saveImmediately(true)), Components::make()->switchControl('table')->name('is_enable')->label(__('article.is_enable')), $this->rowActions(true), ]); return $this->baseList($crud); } public function form(): Form { return $this->baseForm()->title('')->body([ amisMake()->SelectControl()->name('place_id')->label(__('banner.place_id'))->options($this->getPlaceOptions())->required(true), amisMake()->TextControl()->name('title')->label(__('banner.title'))->required(true), amisMake()->ImageControl()->name('picture')->label(__('banner.picture'))->autoUpload(true), // {target_type: app/h5, target_url: ''} amisMake() ->ComboControl() ->scaffold(['target_type' => TargetType::App, 'target_url' => '']) ->subFormMode('horizontal') ->multiLine() ->name('link_config') ->label(__('banner.link_config')) ->items([ amisMake()->SelectControl()->name('target_type')->label(__('banner.target_type'))->options(TargetType::map()), amisMake()->TextControl()->name('target_url')->label(__('banner.target_url')), ]), Components::make()->sortControl('sort', __('banner.sort')), amisMake()->TextareaControl()->name('description')->label(__('banner.description')), amisMake()->DateTimeControl()->name('published_at')->label(__('banner.published_at'))->value(now())->format('YYYY-MM-DD HH:mm:ss')->description('*默认当前时间'), Components::make()->switchControl('form')->name('is_enable')->label(__('banner.is_enable'))->value(true), ]); } public function detail(): Form { return $this->baseDetail()->title('')->body([ amisMake()->TextControl()->name('place.name')->label(__('banner.place_id'))->static(), amisMake()->TextControl()->name('title')->label(__('banner.title'))->static(), amisMake()->TextControl()->name('picture')->label(__('banner.picture'))->static()->staticSchema(amisMake()->image()), amisMake() ->ComboControl() ->subFormMode('horizontal') ->multiLine() ->static(true) ->name('link_config') ->label(__('banner.link_config')) ->items([ amisMake()->SelectControl()->name('target_type')->label(__('banner.target_type'))->options(TargetType::map())->static(true), amisMake()->TextControl()->name('target_url')->label(__('banner.target_url'))->static(true), ]), amisMake()->TextControl()->name('sort')->label(__('banner.sort'))->static(true), amisMake()->TextControl()->name('description')->label(__('banner.description'))->static(true), amisMake()->TextControl()->name('published_at')->label(__('banner.published_at'))->static(true), Components::make()->switchControl('show')->name('is_enable')->label(__('banner.is_enable')), amisMake()->TextControl()->name('created_at')->label(__('banner.created_at'))->static(true), ]); } public function getPlaceOptions() { if (!$this->placeOptions) { $this->placeOptions = Banner::getPlaceList()->map(fn($item) => ['value' => $item->id, 'label' => $item->name]); } return $this->placeOptions; } }