baseCRUD()->tableLayout('fixed') ->headerToolbar([ $this->createButton(), ...$this->baseHeaderToolBar(), ]) ->filter($this->baseFilter()->body()) ->columns([ amis()->TableColumn('id', __('admin.ads.id'))->width('50px')->sortable(), amis()->TableColumn('address', __('admin.ads.address'))->type('mapping') ->map(Keyword::allChildrenOfKey('banner_address')->pluck('name', 'key')->toArray()) ->itemSchema(amis()->Tag()->label('${item}')->color(Admin::setting()->get('system_theme_setting')['theme_color'] ?? '#1677ff')), amis()->TableColumn('sort', __('admin.ads.sort')), amis()->TableColumn('resource', __('admin.ads.resource'))->type('image')->height('50px')->width('150px')->enlargeAble(true), amis()->TableColumn('remark', __('admin.ads.remark')), amis()->TableColumn('published_at', __('admin.ads.published_at'))->remark(__('admin.ads.published_at_remark')), amis()->TableColumn('is_enable', __('admin.ads.is_enable'))->type('switch'), amis()->TableColumn('created_at', __('admin.created_at'))->type('datetime')->sortable(true), Operation::make()->label(__('admin.actions'))->buttons([ $this->rowEditButton(), $this->rowDeleteButton(), ]) ]); return $this->baseList($crud); } public function form($isEdit = false): Form { return $this->baseForm()->body([ Components::make()->parentControl(admin_url('api/keywords/tree-list?parent_name=banner_address&has_owner=0'), 'address', __('admin.ads.address'), 'name', 'key')->required(true), Components::make()->imageControl('resource', __('admin.ads.resource'))->required(true), amis()->TextControl('remark', __('admin.ads.remark')), Components::make()->sortControl('sort', __('admin.ads.sort')), amis()->DateTimeControl('published_at', __('admin.ads.published_at'))->format('YYYY-MM-DD HH:mm:ss')->description(__('admin.ads.published_at_remark')), amis()->SwitchControl('is_enable', __('admin.ads.is_enable'))->value(false), amis()->RadiosControl('jump_type', __('admin.ads.jump_type'))->selectFirst(true)->options(Ad::jumpTypeMap())->required(true), amis()->TextControl('jump_config.web_link', __('admin.ads.jump_config_arr.web_link'))->visibleOn('this.jump_type == '.Ad::TYPE_WEB)->required(true), amis()->TextControl('jump_config.app_link', __('admin.ads.jump_config_arr.app_link'))->visibleOn('this.jump_type == '.Ad::TYPE_APP)->required(true), amis()->GroupControl()->body([ amis()->TextControl('jump_config.mini_id', __('admin.ads.jump_config_arr.mini_id'))->visibleOn('this.jump_type == '.Ad::TYPE_MINI)->required(true), amis()->TextControl('jump_config.mini_link', __('admin.ads.jump_config_arr.mini_link'))->visibleOn('this.jump_type == '.Ad::TYPE_MINI)->required(true), ]), ]); } public function detail(): Form { return $this->baseDetail()->body([ amis()->TextControl('id', 'ID')->static(), amis()->TextControl('created_at', __('admin.created_at'))->static(), amis()->TextControl('updated_at', __('admin.updated_at'))->static() ]); } }