add cms banners

This commit is contained in:
JaguarJack 2021-05-26 20:35:19 +08:00
parent 4b30123aa4
commit af8e6c3f5d
4 changed files with 150 additions and 0 deletions

View File

@ -13,8 +13,12 @@
namespace catchAdmin\cms\model; namespace catchAdmin\cms\model;
use catchAdmin\cms\model\events\BannersEvent;
class Banners extends BaseModel class Banners extends BaseModel
{ {
use BannersEvent;
// 表名 // 表名
public $name = 'cms_banners'; public $name = 'cms_banners';
// 数据库字段映射 // 数据库字段映射
@ -37,4 +41,14 @@ class Banners extends BaseModel
// 软删除 // 软删除
'deleted_at', 'deleted_at',
); );
public function getList()
{
return $this->catchSearch()
->field($this->aliasField('*'))
->catchJoin(Category::class, 'id', 'category_id', ['name as category'])
->catchOrder()
->creator()
->paginate();
}
} }

View File

@ -0,0 +1,49 @@
<?php
namespace catchAdmin\cms\model\events;
use catchAdmin\cms\model\Banners;
trait BannersEvent
{
/**
* 插入前
*
* @time 2021年05月21日
* @param Banners $model
* @return void
*/
public static function onBeforeInsert(Banners $model)
{
self::beforeChangeData($model);
}
/**
*
* @auth CatchAdmin
* @time 2021年05月22日
* @param Banners $model
* @return void
*/
public static function onBeforeUpdate(Banners $model)
{
self::beforeChangeData($model);
}
/**
* 插入前
*
* @auth CatchAdmin
* @time 2021年05月22日
* @param $model
* @return void
*/
protected static function beforeChangeData($model)
{
$data = $model->getData();
if (isset($data['category_id'])) {
$model->category_id = $model->category_id[count($model->category_id) - 1];
}
}
}

View File

@ -0,0 +1,49 @@
<?php
namespace catchAdmin\cms\tables;
use catcher\CatchTable;
use catchAdmin\cms\tables\forms\Factory;
use catcher\library\table\Actions;
use catcher\library\table\HeaderItem;
class Banners extends CatchTable
{
public function table()
{
// TODO: Implement table() method.
return $this->getTable('banners')
->header([
HeaderItem::label('编号')->prop('id')->width(50),
HeaderItem::label('分类')->prop('category'),
HeaderItem::label('标题')->prop('title'),
HeaderItem::label('图片')->prop('banner_img')->withPreviewComponent(),
HeaderItem::label('外链')->prop('link_to')->withUrlComponent(),
HeaderItem::label('创建者')->prop('creator'),
HeaderItem::label('创建时间')->prop('created_at'),
HeaderItem::label('操作')->actions([
Actions::update(),
Actions::delete()
])
])
->withActions([
Actions::create()
])
->withBind()
->withApiRoute('cms/banners')
->render();
}
protected function form()
{
// TODO: Implement form() method.
return Factory::create('banners');
}
}

View File

@ -0,0 +1,38 @@
<?php
namespace catchAdmin\cms\tables\forms;
use catchAdmin\cms\model\Category;
use catcher\library\form\Form;
class Banners extends Form
{
public function fields(): array
{
$categories = Category::field(['id', 'name', 'parent_id'])->select()->toTree();
// TODO: Implement fields() method.
return [
self::cascader('category_id', '选择分类', [])
->options($categories)
->clearable(true)
->filterable(true)
->showAllLevels(false)
->props([
'props' => [
'value' => 'id',
'label' => 'name',
'checkStrictly' => true
],
])->style(['width' => '100%'])
->required(),
self::input('title', '标题')->placeholder('请输入标题')->required(),
self::image('图片', 'banner_img'),
self::input('link_to', '外链')->appendValidate([
self::validateUrl()
])
];
}
}