djc-new/app/Admin/Controllers/KeywordController.php

106 lines
4.3 KiB
PHP

<?php
namespace App\Admin\Controllers;
use Slowlyo\OwlAdmin\Renderers\Page;
use Slowlyo\OwlAdmin\Renderers\Form;
use Slowlyo\OwlAdmin\Renderers\TableColumn;
use Slowlyo\OwlAdmin\Renderers\TextControl;
use Slowlyo\OwlAdmin\Controllers\AdminController;
use App\Services\Admin\KeywordService;
use App\Models\Keyword;
use App\Admin\Components;
use Illuminate\Http\Request;
class KeywordController extends AdminController
{
protected string $serviceName = KeywordService::class;
public function list(): Page
{
//区分特殊管理和通用管理
$columnsArr = [];
$parentName = request()->get('parent_name', '');
if(!empty($parentName)){
$parentId = Keyword::where('key', $parentName)->value('id');
}
if($parentId > 0 && in_array($parentName, ['financial_cate', 'file_cate', 'department', 'area_cate', 'organized_body', 'housing_estate'])){
$columnsArr [] = TableColumn::make()->name('name')->label('名称');
if($parentName == 'department'){
$columnsArr [] = TableColumn::make()->name('value')->label('类型')->type('mapping')->map([
'1'=> '发文部门', '2'=>'收文部门',
]);
}
}else{
$columnsArr [] = TableColumn::make()->name('name')->label('名称');
$columnsArr [] = TableColumn::make()->name('key')->label('KEY')->copyable(true);
$columnsArr [] = TableColumn::make()->name('value')->label('值');
}
$crud = $this->baseCRUD()
//去掉分页-start
->loadDataOnce(true)
->footerToolbar([])
//去掉分页-end
->headerToolbar([
$this->createButton(true),
amis('reload')->align('right'),
amis('filter-toggler')->align('right'),
])
->filter($this->baseFilter()->body([
amis()->TextControl('name', __('admin.keyword'))
->size('md')
->placeholder(__('admin.keywords.search_name')),
// amis()->TextControl('parent_name', __('admin.keywords.parent_keyword'))
// ->size('md')
// ->placeholder(__('admin.keywords.search_name'))
]
))
->columns(array_merge($columnsArr, [
// TableColumn::make()->name('id')->label('ID')->sortable(true),
TableColumn::make()->name('sort')->label('排序'),
TableColumn::make()->name('created_at')->label('创建时间')->type('datetime')->sortable(true),
amisMake()->Operation()->label(__('admin.actions'))->buttons([
$this->rowEditButton(true),
$this->rowDeleteButton(),
]),
]));
return $this->baseList($crud);
}
public function form(): Form
{
//区分特殊管理和通用管理
$parentName = request()->get('parent_name', '');
$parentId = 0;
if(!empty($parentName)){
$parentId = Keyword::where('key', $parentName)->value('id');
}
$formBody = [
TextControl::make()->name('name')->label('名称')->required(true),
];
if($parentId > 0 && in_array($parentName, ['financial_cate', 'file_cate', 'department', 'area_cate', 'organized_body', 'housing_estate'])){
$formBody[] = Components::make()->sortControl('parent_id')->value($parentId)->hidden(true)->readOnly(true);
if($parentName == 'department'){
$formBody[] = amisMake()->RadiosControl('value', '类型')->options([
'1'=> '发文部门', '2'=>'收文部门',
])->required(true);
}
}else{
$formBody[] = Components::make()->parentControl(admin_url('api/keywords/tree-list'));
$formBody[] = TextControl::make()->name('key')->label('KEY')->required(true);
$formBody[] = TextControl::make()->name('value')->label('值');
}
$form = $this->baseForm()->body(array_merge($formBody, [
amisMake()->NumberControl()->name('sort')->value(0)->min()->label('排序'),
]));
return $form;
}
public function getTreeList(Request $request){
return $this->service->getTree();
}
}