From 57af955c9edb5a87cf3cc1ef207963c8865ff68e Mon Sep 17 00:00:00 2001 From: liangyuyan <1103300295@qq.com> Date: Thu, 3 Sep 2020 20:58:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=86=E7=B1=BB=E4=BF=AE=E6=94=B9=EF=BC=8Cba?= =?UTF-8?q?nner=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Admin/Controllers/BannerController.php | 52 ++++++++++-------- app/Admin/Controllers/CategoryController.php | 45 ++++++++++++++-- app/Models/Banner.php | 29 ++++++++++ app/Models/Category.php | 57 ++++++++++++++++++-- resources/lang/zh-CN/banner.php | 3 +- resources/lang/zh-CN/category.php | 17 ++++++ 6 files changed, 173 insertions(+), 30 deletions(-) create mode 100644 resources/lang/zh-CN/category.php diff --git a/app/Admin/Controllers/BannerController.php b/app/Admin/Controllers/BannerController.php index 5fcfa95..d020705 100644 --- a/app/Admin/Controllers/BannerController.php +++ b/app/Admin/Controllers/BannerController.php @@ -8,6 +8,7 @@ use Dcat\Admin\Grid; use Dcat\Admin\Show; use Dcat\Admin\Controllers\AdminController; use App\Models\ImsCjdcMarket as MarketModel; +use App\Models\Banner as BannerModel; class BannerController extends AdminController { @@ -20,19 +21,25 @@ class BannerController extends AdminController { return Grid::make(new Banner(), function (Grid $grid) { $grid->column('id')->sortable(); - $grid->column('market_id'); + $grid->column('market_id')->display(function($markerId){ + $market = MarketModel::getMarketInfo($markerId,'name'); + return empty($market) ? '' : $market['name']; + }); $grid->column('title'); - $grid->column('sub_title'); - $grid->column('cover')->image(50); - $grid->column('cover_type'); + $grid->column('cover_url')->image(50); + $grid->column('cover_type')->display(function($coverType){ + return isset(BannerModel::$_coverType[$coverType]) ? BannerModel::$_coverType[$coverType] : ''; + }); $grid->column('path'); - $grid->column('path_type'); - $grid->column('sort'); - $grid->column('status'); - $grid->column('type'); - $grid->column('created_at'); - $grid->column('updated_at')->sortable(); - + $grid->column('path_type')->display(function($pathType){ + return isset(BannerModel::$_pathType[$pathType]) ? BannerModel::$_pathType[$pathType] : ''; + }); + $grid->column('type')->display(function($type){ + return isset(BannerModel::$_type[$type]) ? BannerModel::$_type[$type] : ''; + }); + $grid->column('sort')->sortable(); + $grid->column('status')->using(BannerModel::$_status)->label(['default' => 'primary',1 => 'primary', 0 => 'danger']); + $grid->filter(function (Grid\Filter $filter) { $filter->equal('id'); @@ -74,21 +81,24 @@ class BannerController extends AdminController protected function form() { return Form::make(new Banner(), function (Form $form) { - $form->display('id'); + $form->hidden('id'); // 市场 $marketList = MarketModel::getMarket(); $form->select('market_id')->width(4)->options($marketList); - $form->text('title'); + $form->select('type')->options(BannerModel::$_type)->required(); + $form->text('title')->required(); $form->text('sub_title'); - $form->image('cover')->width(2); - $form->select('cover_type')->options([1=>'图片', 2=>'视频']); - $form->text('path'); - $form->select('path_type')->options(['page'=>'page','webview'=>'webview','applet'=>'applet']); + $form->image('cover')->width(2)->required(); + $form->select('cover_type')->options(BannerModel::$_coverType)->required(); + $form->text('path')->default(''); + $form->select('path_type')->options(BannerModel::$_pathType)->default(''); $form->text('sort'); - $form->select('type')->options([1=>'首页banner']); - - $form->display('created_at'); - $form->display('updated_at'); + + + $form->disableResetButton(); + $form->disableViewCheck(); + $form->disableEditingCheck(); + $form->disableCreatingCheck(); }); } } diff --git a/app/Admin/Controllers/CategoryController.php b/app/Admin/Controllers/CategoryController.php index 36621e3..67b2537 100644 --- a/app/Admin/Controllers/CategoryController.php +++ b/app/Admin/Controllers/CategoryController.php @@ -8,15 +8,23 @@ use Dcat\Admin\Layout\Row; use Dcat\Admin\Layout\Content; use Dcat\Admin\Tree; use Dcat\Admin\Controllers\AdminController; +use Dcat\Admin\Show; class CategoryController extends AdminController { public function index(Content $content) { - return $content->header('树状模型') + return $content->header('分类') ->body(function (Row $row) { $tree = new Tree(new Category); + $tree->branch(function ($branch) { + $src = $branch['cover_img_url']; + $logo = ""; + + return "{$branch['id']} - {$branch['title']} $logo"; + }); + $row->column(12, $tree); }); } @@ -24,11 +32,40 @@ class CategoryController extends AdminController public function form() { return Form::make(new Category(),function (Form $form){ - $form->text('title'); - $form->number('sort'); + // 只查一级 - $form->select('parent_id')->default(51); + $parentList = Category::getCategoryArray([['parent_id','=',0]],[0=>'顶级']); + + $form->select('parent_id')->default(0)->options($parentList); + $form->text('title'); $form->image('cover_img'); + + $form->number('sort'); + + $form->disableResetButton(); + $form->disableViewCheck(); + $form->disableEditingCheck(); + $form->disableCreatingCheck(); + }); + } + + + /** + * Make a show builder. + * + * @param mixed $id + * + * @return Show + */ + protected function detail($id) + { + return Show::make($id, new Category(), function (Show $show) { + + $show->field('parent_id'); + $show->field('title'); + $show->field('cover_img')->image(); + $show->field('sort'); + $show->field('status'); }); } } diff --git a/app/Models/Banner.php b/app/Models/Banner.php index 3df3341..d2f64ae 100644 --- a/app/Models/Banner.php +++ b/app/Models/Banner.php @@ -13,4 +13,33 @@ class Banner extends Model protected $table = 'lanzu_banners'; protected $dateFormat = 'U'; + + protected $appends = [ + 'cover_url', + ]; + + public static $_coverType = [1=>'图片', 2=>'视频']; + public static $_pathType = ['page'=>'page','webview'=>'webview','applet'=>'applet']; + public static $_type = [1=>'首页']; + public static $_status = ['禁用', '正常']; + + public function getCoverUrlAttribute($value) + { + $value = $value ? $value : $this->cover; + return $this->imageUrl($value); + } + + /** + * 处理旧图片 + * @param $value + * @return string + */ + public function imageUrl($value) + { + if(strripos($value,"http") === false){ + return env('OSS_IMG_HOST').'/'.$value; + }else{ + return $value; + } + } } diff --git a/app/Models/Category.php b/app/Models/Category.php index 6abb599..fbb3aba 100644 --- a/app/Models/Category.php +++ b/app/Models/Category.php @@ -2,22 +2,71 @@ namespace App\Models; +use Illuminate\Database\Eloquent\SoftDeletes; use Dcat\Admin\Traits\ModelTree; use Illuminate\Database\Eloquent\Model; class Category extends Model { use ModelTree; + use SoftDeletes; protected $table = 'lanzu_category'; protected $dateFormat = 'U'; - // 父级ID字段名称,默认值为 parent_id + // 父级ID字段名称,默认值为 parent_id // protected $parentColumn = 'pid'; - // 排序字段名称,默认值为 order - protected $orderColumn = 'sort'; + // 排序字段名称,默认值为 order + protected $orderColumn = 'sort'; - // 标题字段名称,默认值为 title + // 标题字段名称,默认值为 title // protected $titleColumn = 'name'; + + protected $appends = [ + 'cover_img_url', + ]; + public function getCoverImgUrlAttribute($value) + { + $value = $value ? $value : $this->cover_img; + return $this->imageUrl($value); + } + /** + * 获取二级分类数组 + * id为键,name为值 + * @return array + */ + public static function getCategoryArray($where = [],$options = []) + { + $model = self::select('id','title') + ->where('status',1) + ->whereNull('deleted_at'); + + if(count($where) > 0){ + $model->where($where); + } + $list = $model->get(); + $array = empty($options) ? [] : $options; + if(count($list) > 0){ + foreach ($list as $value) { + $array[$value->id] = $value->title; + } + } + + return $array; + } + + /** + * 处理旧图片 + * @param $value + * @return string + */ + public function imageUrl($value) + { + if(strripos($value,"http") === false){ + return env('OSS_IMG_HOST').'/'.$value; + }else{ + return $value; + } + } } diff --git a/resources/lang/zh-CN/banner.php b/resources/lang/zh-CN/banner.php index c2cc3f7..5f696a0 100644 --- a/resources/lang/zh-CN/banner.php +++ b/resources/lang/zh-CN/banner.php @@ -8,7 +8,8 @@ return [ 'market_id' => '市场', 'title' => '标题', 'sub_title' => '副标题', - 'cover' => '封面', + 'cover' => '封面图', + 'cover_url' => '封面图', 'cover_type' => '封面类型', 'path' => '链接', 'path_type' => '链接类型', diff --git a/resources/lang/zh-CN/category.php b/resources/lang/zh-CN/category.php new file mode 100644 index 0000000..7923dc9 --- /dev/null +++ b/resources/lang/zh-CN/category.php @@ -0,0 +1,17 @@ + [ + 'Category' => '分类', + 'category' => '分类', + ], + 'fields' => [ + 'parent_id' => '父级', + 'title' => '标题', + 'cover_img' => '图标', + 'cover_img_url' => '图标', + 'sort' => '排序', + 'status' => '状态', + ], + 'options' => [ + ], +];