1
0
Fork 0
develop
panliang 2023-04-26 11:16:25 +08:00
commit 26a9d2458c
10 changed files with 100 additions and 24 deletions

View File

@ -15,8 +15,7 @@ class Components extends BaseRenderer {
->name($name)->label($label) ->name($name)->label($label)
->showIcon(false) ->showIcon(false)
->labelField($labelField) ->labelField($labelField)
->valueField($valueField) ->valueField($valueField)->source($apiUrl);
->value(0)->source($apiUrl);
} }
/** /**

View File

@ -10,6 +10,7 @@ use Slowlyo\OwlAdmin\Controllers\AdminController;
use Slowlyo\OwlAdmin\Renderers\Button; use Slowlyo\OwlAdmin\Renderers\Button;
use App\Services\Admin\RegionCategoryService; use App\Services\Admin\RegionCategoryService;
use App\Admin\Components; use App\Admin\Components;
use Illuminate\Http\Request;
class RegionCategoryController extends AdminController class RegionCategoryController extends AdminController
{ {
@ -19,6 +20,7 @@ class RegionCategoryController extends AdminController
public function list(): Page public function list(): Page
{ {
// dd(Components::make()->parentControl('region-categories/tree-list'));
$crud = $this->baseCRUD() $crud = $this->baseCRUD()
//关闭查询 //关闭查询
->filterTogglable(false) ->filterTogglable(false)
@ -34,7 +36,7 @@ class RegionCategoryController extends AdminController
->filter( ->filter(
$this->baseFilter()->body([ $this->baseFilter()->body([
amisMake()->TextControl()->make('name')->label('分类名称')->name('name'), amisMake()->TextControl()->make('name')->label('分类名称')->name('name'),
amisMake()->SelectControl()->make('parent_id')->label('父级')->name('parent_id'), Components::make()->parentControl(admin_url('api/region-categories/tree-list'))->size('sm'),
Button::make()->label(__('admin.reset'))->actionType('clear-and-submit'), Button::make()->label(__('admin.reset'))->actionType('clear-and-submit'),
amis('submit')->label(__('admin.search'))->level('primary'), amis('submit')->label(__('admin.search'))->level('primary'),
@ -65,7 +67,7 @@ class RegionCategoryController extends AdminController
amisMake()->TextControl()->name('name')->label('名称')->required(true), amisMake()->TextControl()->name('name')->label('名称')->required(true),
amisMake()->ImageControl()->name('icon')->label('封面图')->autoUpload(true), amisMake()->ImageControl()->name('icon')->label('封面图')->autoUpload(true),
amisMake()->TextControl()->name('description')->label('描述'), amisMake()->TextControl()->name('description')->label('描述'),
Components::make()->parentControl(), Components::make()->parentControl(admin_url('api/region-categories/tree-list')),
Components::make()->sortControl(), Components::make()->sortControl(),
amisMake()->SwitchControl()->name('is_enable')->label('状态'), amisMake()->SwitchControl()->name('is_enable')->label('状态'),
]); ]);
@ -81,4 +83,8 @@ class RegionCategoryController extends AdminController
TextControl::make()->static(true)->name('updated_at')->label('更新时间') TextControl::make()->static(true)->name('updated_at')->label('更新时间')
]); ]);
} }
public function getTreeList(Request $request){
return $this->service->getTree();
}
} }

View File

@ -8,6 +8,7 @@ use Slowlyo\OwlAdmin\Renderers\TableColumn;
use Slowlyo\OwlAdmin\Renderers\TextControl; use Slowlyo\OwlAdmin\Renderers\TextControl;
use Slowlyo\OwlAdmin\Controllers\AdminController; use Slowlyo\OwlAdmin\Controllers\AdminController;
use App\Services\Admin\RegionService; use App\Services\Admin\RegionService;
use Slowlyo\OwlAdmin\Renderers\Button;
use App\Admin\Components; use App\Admin\Components;
class RegionController extends AdminController class RegionController extends AdminController
@ -24,6 +25,15 @@ class RegionController extends AdminController
$this->createButton(true, 'lg'), $this->createButton(true, 'lg'),
...$this->baseHeaderToolBar(), ...$this->baseHeaderToolBar(),
]) ])
->filter(
$this->baseFilter()->body([
amisMake()->TextControl()->make('name')->label('名称')->name('name'),
Components::make()->parentControl(admin_url('api/region-categories/tree-list'), 'category_id', '分类')->size('sm'),
Button::make()->label(__('admin.reset'))->actionType('clear-and-submit'),
amis('submit')->label(__('admin.search'))->level('primary'),
])->actions([])
)
->columns([ ->columns([
TableColumn::make()->name('id')->label('ID')->sortable(true), TableColumn::make()->name('id')->label('ID')->sortable(true),
TableColumn::make()->name('name')->label('名称'), TableColumn::make()->name('name')->label('名称'),
@ -43,7 +53,7 @@ class RegionController extends AdminController
{ {
return $this->baseForm()->body([ return $this->baseForm()->body([
TextControl::make()->name('name')->label('名称')->required(true), TextControl::make()->name('name')->label('名称')->required(true),
Components::make()->parentControl('', 'category_id', '分类'), Components::make()->parentControl(admin_url('api/region-categories/tree-list'), 'category_id', '分类'),
Components::make()->fuEditorControl('description', '介绍'), Components::make()->fuEditorControl('description', '介绍'),
Components::make()->decimalControl('area', '面积m²'), Components::make()->decimalControl('area', '面积m²'),
Components::make()->sortControl(), Components::make()->sortControl(),

View File

@ -14,6 +14,7 @@ Route::group([
], function (Router $router) { ], function (Router $router) {
$router->get('keywords/tree-list', '\App\Admin\Controllers\KeywordController@getTreeList')->name('api.keywords.tree-list'); $router->get('keywords/tree-list', '\App\Admin\Controllers\KeywordController@getTreeList')->name('api.keywords.tree-list');
$router->get('article-categories/tree-list', [\App\Admin\Controllers\ArticleCategoryController::class, 'getTreeList'])->name('api.article-categories.tree-list'); $router->get('article-categories/tree-list', [\App\Admin\Controllers\ArticleCategoryController::class, 'getTreeList'])->name('api.article-categories.tree-list');
$router->get('region-categories/tree-list', '\App\Admin\Controllers\RegionCategoryController@getTreeList')->name('api.region-categories.tree-list');
}); });
$router->get('dashboard', '\App\Admin\Controllers\HomeController@index'); $router->get('dashboard', '\App\Admin\Controllers\HomeController@index');

View File

@ -0,0 +1,30 @@
<?php
namespace App\Filters\Admin;
use EloquentFilter\ModelFilter;
class RegionFilter extends ModelFilter
{
/**
* 名称
*/
public function name($name){
return $this->where('name', 'like', '%'.$name.'%');
}
/**
* 父级分类
*/
public function category($categoryId){
return $this->where('category_id', $categoryId);
}
/**
* 是否开启
*/
public function isEnable($isEnable){
return $this->where('is_enbale', $isEnable);
}
}

View File

@ -4,8 +4,15 @@ namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use EloquentFilter\Filterable;
class Region extends Model class Region extends Model
{ {
use HasFactory; use HasFactory;
use Filterable;
protected function serializeDate(\DateTimeInterface $date){
return $date->format('Y-m-d H:i:s');
}
} }

View File

@ -0,0 +1,34 @@
<?php
namespace App\Services\Admin;
use Slowlyo\OwlAdmin\Services\AdminService;
/**
* @method Region getModel()
* @method Region|\Illuminate\Database\Query\Builder query()
*/
class BaseService extends AdminService
{
public function getTree()
{
$list = $this->query()->orderByDesc('sort')->get()->toArray();
return array2tree($list);
}
public function getModelFilter()
{
return $this->modelFilterName;
}
public function listQuery()
{
$model = $this->getModel();
$filter = $this->getModelFilter();
return $this->query()
->filter(request()->input(), $filter)
->orderByDesc($model->getUpdatedAtColumn() ?? $model->getKeyName());
}
}

View File

@ -10,16 +10,10 @@ use Slowlyo\OwlAdmin\Services\AdminService;
* @method Keyword getModel() * @method Keyword getModel()
* @method Keyword|\Illuminate\Database\Query\Builder query() * @method Keyword|\Illuminate\Database\Query\Builder query()
*/ */
class KeywordService extends AdminService class KeywordService extends BaseService
{ {
protected string $modelName = Keyword::class; protected string $modelName = Keyword::class;
public function getTree()
{
$list = $this->query()->orderByDesc('sort')->get()->toArray();
return array2tree($list);
}
public function parentIsChild($id, $parent_id): bool public function parentIsChild($id, $parent_id): bool
{ {
$parent = $this->query()->find($parent_id); $parent = $this->query()->find($parent_id);

View File

@ -4,23 +4,15 @@ namespace App\Services\Admin;
use App\Models\RegionCategory; use App\Models\RegionCategory;
use App\Filters\Admin\RegionCategoryFilter; use App\Filters\Admin\RegionCategoryFilter;
use Slowlyo\OwlAdmin\Services\AdminService;
/** /**
* @method RegionCategory getModel() * @method RegionCategory getModel()
* @method RegionCategory|\Illuminate\Database\Query\Builder query() * @method RegionCategory|\Illuminate\Database\Query\Builder query()
*/ */
class RegionCategoryService extends AdminService class RegionCategoryService extends BaseService
{ {
protected string $modelName = RegionCategory::class; protected string $modelName = RegionCategory::class;
public function listQuery() protected string $modelFilterName = RegionCategoryFilter::class;
{
$model = $this->getModel();
return $this->query()
->with('parent')
->filter(request()->input(), RegionCategoryFilter::class)
->orderByDesc($model->getUpdatedAtColumn() ?? $model->getKeyName());
}
} }

View File

@ -3,13 +3,16 @@
namespace App\Services\Admin; namespace App\Services\Admin;
use App\Models\Region; use App\Models\Region;
use App\Filters\Admin\RegionFilter;
use Slowlyo\OwlAdmin\Services\AdminService; use Slowlyo\OwlAdmin\Services\AdminService;
/** /**
* @method Region getModel() * @method Region getModel()
* @method Region|\Illuminate\Database\Query\Builder query() * @method Region|\Illuminate\Database\Query\Builder query()
*/ */
class RegionService extends AdminService class RegionService extends BaseService
{ {
protected string $modelName = Region::class; protected string $modelName = Region::class;
protected string $modelFilterName = RegionFilter::class;
} }