diff --git a/catch/cms/model/Banners.php b/catch/cms/model/Banners.php index 9c9b07d..2ffd9e0 100644 --- a/catch/cms/model/Banners.php +++ b/catch/cms/model/Banners.php @@ -13,8 +13,12 @@ namespace catchAdmin\cms\model; +use catchAdmin\cms\model\events\BannersEvent; + class Banners extends BaseModel { + use BannersEvent; + // 表名 public $name = 'cms_banners'; // 数据库字段映射 @@ -37,4 +41,14 @@ class Banners extends BaseModel // 软删除 'deleted_at', ); + + public function getList() + { + return $this->catchSearch() + ->field($this->aliasField('*')) + ->catchJoin(Category::class, 'id', 'category_id', ['name as category']) + ->catchOrder() + ->creator() + ->paginate(); + } } \ No newline at end of file diff --git a/catch/cms/model/events/BannersEvent.php b/catch/cms/model/events/BannersEvent.php new file mode 100644 index 0000000..61d5458 --- /dev/null +++ b/catch/cms/model/events/BannersEvent.php @@ -0,0 +1,49 @@ +getData(); + + if (isset($data['category_id'])) { + $model->category_id = $model->category_id[count($model->category_id) - 1]; + } + } +} \ No newline at end of file diff --git a/catch/cms/tables/Banners.php b/catch/cms/tables/Banners.php new file mode 100644 index 0000000..2ab6b36 --- /dev/null +++ b/catch/cms/tables/Banners.php @@ -0,0 +1,49 @@ +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'); + } + +} \ No newline at end of file diff --git a/catch/cms/tables/forms/Banners.php b/catch/cms/tables/forms/Banners.php new file mode 100644 index 0000000..8447806 --- /dev/null +++ b/catch/cms/tables/forms/Banners.php @@ -0,0 +1,38 @@ +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() + ]) + ]; + } +} \ No newline at end of file