fulinqingjie/app/Admin/Controllers/HonorController.php

95 lines
4.4 KiB
PHP

<?php
namespace App\Admin\Controllers;
use App\Casts\Storage;
use Slowlyo\OwlAdmin\Admin;
use Slowlyo\OwlAdmin\Renderers\Page;
use Slowlyo\OwlAdmin\Renderers\Form;
use Slowlyo\OwlAdmin\Controllers\AdminController;
use App\Services\Admin\HonorService;
use App\Admin\Components;
use App\Models\Keyword;
use App\Traits\CustomActionTrait;
class HonorController extends AdminController
{
use CustomActionTrait;
protected string $serviceName = HonorService::class;
public function list():Page
{
$crud = $this->baseCRUD()->tableLayout('fixed')
->headerToolbar([
$this->createTypeButton('drawer', 'md'),
...$this->baseHeaderToolBar(),
])
->filter($this->baseFilter()->body([
amis()->GroupControl()->mode('horizontal')->body([
amis()->TextControl('title', __('admin.honors.title'))
->placeholder(__('admin.honors.title')),
amis()->selectControl('cate', __('admin.honors.category'))->options(Keyword::allChildrenOfKey('honors')->pluck('name', 'id'))
->placeholder(__('admin.honors.category')),
amis()->SelectControl('enable', __('admin.honors.is_enable'))
->columnRatio(3)
->options([
1=>'开启',0=>'关闭'
]),
amis()->SelectControl('recommend', __('admin.honors.is_recommend'))
->columnRatio(3)
->options([
1=>'开启',0=>'关闭'
]),
]),
]))
->itemBadge([//行角标
'text' => __('admin.honors.is_recommend'),
'mode' => 'ribbon',
'position' => 'top-left',
'badgeLevel' => 'danger',
'visibleOn' => '${is_recommend > 0}',
'size' => 15
])
->columns([
amis()->TableColumn('id', __('admin.id'))->sortable(true),
amis()->TableColumn('title', __('admin.honors.title'))->width('300px'),
amis()->TableColumn('category', __('admin.honors.category'))->type('mapping')
->map(Keyword::allChildrenOfKey('honors')->pluck('name', 'id')->toArray())
->itemSchema(amis()->Tag()->label('${item}')->color(Admin::setting()->get('system_theme_setting')['theme_color'] ?? '#1677ff')),
amis()->TableColumn('cover_url', __('admin.articles.cover'))->type('image')->height('50px')->width('50px')->enlargeAble(true),
amis()->TableColumn('awarded_date', __('admin.honors.awarded_date')),
amis()->TableColumn('is_enable', __('admin.honors.is_enable'))->type('switch'),
amis()->TableColumn('is_recommend', __('admin.honors.is_recommend'))->type('switch'),
amis()->TableColumn('created_at', __('admin.created_at'))->type('datetime')->sortable(true),
amis()->Operation()->label(__('admin.actions'))->buttons([
$this->rowEditTypeButton('drawer', 'md'),
$this->rowDeleteButton(),
])
]);
return $this->baseList($crud);
}
public function form(): Form
{
return $this->baseForm()->panelClassName('px-0')->body([
amis()->Grid()->columns([
amis()->Wrapper()->body([
amis()->TextControl('title', __('admin.honors.title'))->required(true),
amis()->selectControl('category', __('admin.honors.category'))->options(Keyword::allChildrenOfKey('honors')->pluck('name', 'id'))->required(true),
Components::make()->cropImageControl('cover', __('admin.honors.cover'))->required(true),
amis()->DateControl('awarded_date', __('admin.honors.awarded_date'))->format('YYYY-MM-DD')->required(true),
Components::make()->sortControl('sort', __('admin.honors.sort')),
amis()->SwitchControl('is_enable', __('admin.honors.is_enable'))->value(false),
amis()->SwitchControl('is_recommend', __('admin.honors.is_recommend'))->value(false),
]),
]),
]);
}
public function detail(): Form
{
return $this->baseDetail()->body([]);
}
}