fulinqingjie/app/Admin/Controllers/CaseStudyController.php

91 lines
5.1 KiB
PHP

<?php
namespace App\Admin\Controllers;
use Slowlyo\OwlAdmin\Renderers\Page;
use Slowlyo\OwlAdmin\Renderers\Form;
use Slowlyo\OwlAdmin\Controllers\AdminController;
use App\Services\Admin\ProjectArticleService;
use App\Traits\CustomActionTrait;
use App\Admin\Components;
use App\Models\{ProjectCate,ProjectArticle,Keyword};
/**
* 服务案例
*
* @property ProjectArticleService $service
*/
class CaseStudyController extends AdminController
{
use CustomActionTrait;
protected string $serviceName = ProjectArticleService::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.project_articles.id'))->columnRatio(3)
// ->placeholder(__('admin.id')),
amis()->TextControl('title', __('admin.project_articles.title'))->columnRatio(3)
->placeholder(__('admin.project_articles.title')),
// amis()->selectControl('cate', __('admin.project_articles.cate'))->options(ProjectCate::get()->pluck('title', 'id'))->columnRatio(3)
// ->placeholder(__('admin.project_articles.cate')),
Components::make()->keywordsTagControl('t_ids', __('admin.articles.tags'), 'case_study_tag')->columnRatio(3),
]),
]))
->columns([
// amis()->TableColumn('id', __('admin.id'))->sortable(true)->width('50px'),
amis()->TableColumn('title', __('admin.project_articles.title'))->width('300px'),
// amis()->TableColumn('cate', __('admin.project_articles.cate'))->type('mapping')
// ->map(ProjectCate::get()->pluck('title', 'id')->toArray())
// ->itemSchema(amis()->Tag()->label('${item}')->color(Admin::setting()->get('system_theme_setting')['theme_color'] ?? '#1677ff')),
amis()->TableColumn('tags', __('admin.project_articles.tags'))->type('mapping')->map(Keyword::tagsMap('case_study_tag')),
amis()->TableColumn('cover_url', __('admin.project_articles.cover'))->type('image')->height('50px')->width('150px')->enlargeAble(true),
// amis()->TableColumn('published_at', __('admin.project_articles.published_at'))->remark(__('admin.project_articles.published_at_remark')),
amis()->TableColumn('is_enable', __('admin.project_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($isEdit = false): Form
{
return $this->baseForm()->panelClassName('px-0')->body([
amis()->Grid()->columns([
amis()->Wrapper()->body([
amis()->TextControl('title', __('admin.project_articles.title'))->required(true),
amis()->TextareaControl('description', __('admin.project_articles.description')),
// amis()->selectControl('cate', __('admin.project_articles.cate'))->options(ProjectCate::get()->pluck('title', 'id'))->required(true),
amis()->TextControl('type', __('admin.project_articles.type'))->value(ProjectArticle::TYPE_CASE_STUDY)->hidden(true),
Components::make()->keywordsTagControl('t_ids', __('admin.articles.tags'), 'case_study_tag')->required(true),
Components::make()->cropImageControl('cover', __('admin.project_articles.cover'), 0.775)->required(true),
Components::make()->sortControl('sort', __('admin.project_articles.sort')),
// amis()->DateTimeControl('published_at', __('admin.project_articles.published_at'))->format('YYYY-MM-DD HH:mm:ss')->description(__('admin.project_articles.published_at_remark')),
amis()->SwitchControl('is_enable', __('admin.project_articles.is_enable'))->value(false),
// amis()->SwitchControl('is_recommend', __('admin.project_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.project_articles.content'))->required(true),
])->md(8)
]),
]);
}
public function detail(): Form
{
return $this->baseDetail()->body([]);
}
}