generated from liutk/owl-admin-base
111 lines
5.9 KiB
PHP
111 lines
5.9 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\ArticleService;
|
|
use App\Admin\Components;
|
|
use App\Models\Keyword;
|
|
use App\Traits\CustomActionTrait;
|
|
|
|
class ArticleController extends AdminController
|
|
{
|
|
use CustomActionTrait;
|
|
|
|
protected string $serviceName = ArticleService::class;
|
|
|
|
public function list():Page
|
|
{
|
|
$crud = $this->baseCRUD()->tableLayout('fixed')
|
|
->headerToolbar([
|
|
$this->createTypeButton('drawer', 'xl'),
|
|
...$this->baseHeaderToolBar(),
|
|
])
|
|
->filter($this->baseFilter()->body([
|
|
amis()->GroupControl()->mode('horizontal')->body([
|
|
amis()->TextControl('id', __('admin.articles.id'))->columnRatio(3)
|
|
->placeholder(__('admin.id')),
|
|
amis()->TextControl('title', __('admin.articles.title'))->columnRatio(3)
|
|
->placeholder(__('admin.articles.title')),
|
|
Components::make()->parentControl(admin_url('api/keywords/tree-list?parent_name=article_category&has_owner=0'), 'category', __('admin.articles.category'), 'name', 'key')->columnRatio(3),
|
|
// Components::make()->keywordsTagControl('t_ids', __('admin.articles.tags'), 'article_tag'),
|
|
]),
|
|
amis()->GroupControl()->mode('horizontal')->body([
|
|
amis()->SelectControl('enable', __('admin.articles.is_enable'))
|
|
->columnRatio(3)
|
|
->options([
|
|
1=>'开启',0=>'关闭'
|
|
]),
|
|
amis()->SelectControl('recommend', __('admin.articles.is_recommend'))
|
|
->columnRatio(3)
|
|
->options([
|
|
1=>'开启',0=>'关闭'
|
|
]),
|
|
// amis()->InputDatetimeRange()->label(__('admin.articles.published_at'))->name('published_at'),
|
|
]),
|
|
// amis()->GroupControl()->mode('horizontal')->body([
|
|
// amis()->InputDatetimeRange()->label(__('admin.created_at'))->name('created_at')->columnRatio(6),
|
|
// ]),
|
|
]))->filterDefaultVisible(true)
|
|
->itemBadge([//行角标
|
|
'text' => __('admin.articles.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.articles.title'))->width('300px'),
|
|
amis()->TableColumn('category', __('admin.articles.category'))->type('mapping')
|
|
->map(Keyword::allChildrenOfKey('article_category')->pluck('name', 'key')->toArray())
|
|
->itemSchema(amis()->Tag()->label('${item}')->color(Admin::setting()->get('system_theme_setting')['theme_color'] ?? '#1677ff')),
|
|
// amis()->TableColumn('tags', __('admin.articles.tags'))->type('mapping')->map(Keyword::tagsMap('article_tag')),
|
|
// amis()->TableColumn('cover', __('admin.articles.cover'))->type('image')->height('50px')->width('50px')->enlargeAble(true),
|
|
amis()->TableColumn('published_at', __('admin.articles.published_at'))->remark(__('admin.articles.published_at_remark')),
|
|
amis()->TableColumn('is_enable', __('admin.articles.is_enable'))->type('switch'),
|
|
amis()->TableColumn('is_recommend', __('admin.articles.is_recommend'))->type('switch'),
|
|
amis()->TableColumn('created_at', __('admin.created_at'))->type('datetime')->sortable(true),
|
|
amis()->Operation()->label(__('admin.actions'))->buttons([
|
|
$this->rowEditTypeButton('drawer', 'xl'),
|
|
$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.articles.title'))->required(true),
|
|
Components::make()->parentControl(admin_url('api/keywords/tree-list?parent_name=article_category&has_owner=0'), 'category', __('admin.articles.category'), 'name', 'key'),
|
|
// Components::make()->keywordsTagControl('t_ids', __('admin.articles.tags'), 'article_tag'),
|
|
Components::make()->cropImageControl('cover', __('admin.articles.cover')),
|
|
amis()->TextControl('source', __('admin.articles.source')),
|
|
Components::make()->sortControl('sort', __('admin.articles.sort')),
|
|
amis()->DateTimeControl('published_at', __('admin.articles.published_at'))->format('YYYY-MM-DD HH:mm:ss')->description(__('admin.articles.published_at_remark')),
|
|
amis()->SwitchControl('is_enable', __('admin.articles.is_enable'))->value(false),
|
|
amis()->SwitchControl('is_recommend', __('admin.articles.is_recommend'))->value(false),
|
|
// Components::make()->fileControl('appendixes', __('admin.articles.appendixes'), '.xsl,.xlsx,.txt,.doc,.docx,.pdf,.pptx'),
|
|
])->md(4),
|
|
amis()->Wrapper()->body([
|
|
Components::make()->fuEditorControl('content', __('admin.articles.content')),
|
|
])->md(8)
|
|
]),
|
|
]);
|
|
}
|
|
|
|
public function detail(): Form
|
|
{
|
|
return $this->baseDetail()->body([]);
|
|
}
|
|
|
|
} |