generated from liutk/owl-admin-base
98 lines
5.1 KiB
PHP
98 lines
5.1 KiB
PHP
<?php
|
|
|
|
namespace App\Admin\Controllers;
|
|
|
|
use App\Admin\Components;
|
|
use App\Admin\Services\AdService;
|
|
use App\Models\Ad;
|
|
use App\Models\Keyword;
|
|
use Slowlyo\OwlAdmin\Admin;
|
|
use Slowlyo\OwlAdmin\Controllers\AdminController;
|
|
use Slowlyo\OwlAdmin\Renderers\Form;
|
|
use Slowlyo\OwlAdmin\Renderers\Operation;
|
|
use Slowlyo\OwlAdmin\Renderers\Page;
|
|
|
|
/**
|
|
* 广告管理
|
|
*
|
|
* @property AdService $service
|
|
*/
|
|
class AdController extends AdminController
|
|
{
|
|
protected string $serviceName = AdService::class;
|
|
|
|
public function list(): Page
|
|
{
|
|
$crud = $this->baseCRUD()->tableLayout('fixed')
|
|
->headerToolbar([
|
|
$this->createButton(),
|
|
...$this->baseHeaderToolBar(),
|
|
])
|
|
->filter($this->baseFilter()->labelWidth('80px')->body([
|
|
amis()->GroupControl()->mode('horizontal')->body([
|
|
amis()->TextControl('id', __('admin.ads.id'))
|
|
->placeholder(__('admin.id')),
|
|
amis()->TextControl('remark', __('admin.ads.remark'))
|
|
->placeholder(__('admin.ads.remark')),
|
|
Components::make()->parentControl(admin_url('api/keywords/tree-list?parent_name=banner_address&has_owner=0'), 'address', __('admin.ads.address'), 'name', 'key'),
|
|
amis()->SelectControl('enable', __('admin.ads.is_enable'))
|
|
->options([
|
|
1=>'开启',0=>'关闭'
|
|
]),
|
|
]),
|
|
amis()->GroupControl()->mode('horizontal')->body([
|
|
amis()->InputDatetimeRange()->label(__('admin.ads.published_at'))->name('published_at'),
|
|
amis()->InputDatetimeRange()->label(__('admin.created_at'))->name('created_at'),
|
|
]),
|
|
]))
|
|
->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'))->quickEdit(
|
|
amis()->NumberControl()->min(0)->saveImmediately(true)
|
|
),
|
|
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()
|
|
]);
|
|
}
|
|
}
|