|
|
@ -2,7 +2,11 @@ |
|
|
|
|
|
|
|
|
namespace App\AdminAgent\Controllers; |
|
|
namespace App\AdminAgent\Controllers; |
|
|
|
|
|
|
|
|
|
|
|
use App\AdminAgent\Renderable\SelectAgentProduct; |
|
|
|
|
|
use App\AdminAgent\Renderable\SelectProduct; |
|
|
use App\AdminAgent\Repositories\Slide; |
|
|
use App\AdminAgent\Repositories\Slide; |
|
|
|
|
|
use App\Models\AgentProduct; |
|
|
|
|
|
use App\Models\Product; |
|
|
use Dcat\Admin\Admin; |
|
|
use Dcat\Admin\Admin; |
|
|
use Dcat\Admin\Form; |
|
|
use Dcat\Admin\Form; |
|
|
use Dcat\Admin\Grid; |
|
|
use Dcat\Admin\Grid; |
|
|
@ -18,12 +22,17 @@ class SlideController extends AdminController |
|
|
*/ |
|
|
*/ |
|
|
protected function grid() |
|
|
protected function grid() |
|
|
{ |
|
|
{ |
|
|
return Grid::make(new Slide(), function (Grid $grid) { |
|
|
|
|
|
|
|
|
return Grid::make(new Slide(['agentProduct.product:id,title,pictures']), function (Grid $grid) { |
|
|
$grid->model()->where('agent_id', Admin::user()->id)->orderBy('sort'); |
|
|
$grid->model()->where('agent_id', Admin::user()->id)->orderBy('sort'); |
|
|
|
|
|
|
|
|
$grid->column('id')->sortable(); |
|
|
$grid->column('id')->sortable(); |
|
|
$grid->column('title'); |
|
|
$grid->column('title'); |
|
|
$grid->column('url')->image('', 60, 60); |
|
|
|
|
|
|
|
|
$grid->column('picture')->image('', 60, 60); |
|
|
|
|
|
$grid->column('type')->using(['链接产品', '链接网址']); |
|
|
|
|
|
$grid->column('url') |
|
|
|
|
|
->if(fn($column) => $this->type == 0) |
|
|
|
|
|
->then(fn($column) => $column->display($this->agentProduct->product->title ?? '')) |
|
|
|
|
|
->else(fn($column) => $column->display($this->url ?? '')); |
|
|
$grid->column('status')->switch(); |
|
|
$grid->column('status')->switch(); |
|
|
$grid->column('sort')->editable()->sortable()->width(120); |
|
|
$grid->column('sort')->editable()->sortable()->width(120); |
|
|
|
|
|
|
|
|
@ -43,10 +52,18 @@ class SlideController extends AdminController |
|
|
*/ |
|
|
*/ |
|
|
protected function detail($id) |
|
|
protected function detail($id) |
|
|
{ |
|
|
{ |
|
|
return Show::make($id, new Slide(), function (Show $show) { |
|
|
|
|
|
|
|
|
return Show::make($id, new Slide(['agentProduct.product:id,title,pictures']), function (Show $show) { |
|
|
$show->field('id'); |
|
|
$show->field('id'); |
|
|
$show->field('title'); |
|
|
$show->field('title'); |
|
|
$show->field('url')->image('', 80, 80); |
|
|
|
|
|
|
|
|
$show->field('picture')->image('', 80, 80); |
|
|
|
|
|
$show->field('type')->using(['链接到产品详情', '链接到网址']); |
|
|
|
|
|
$show->field('url') |
|
|
|
|
|
->as(function ($v) { |
|
|
|
|
|
if($this->type == 0) { |
|
|
|
|
|
return $this->agentProduct->product->title; |
|
|
|
|
|
} |
|
|
|
|
|
return $v; |
|
|
|
|
|
}); |
|
|
$show->field('status')->using(['禁用', '启用']); |
|
|
$show->field('status')->using(['禁用', '启用']); |
|
|
$show->field('sort'); |
|
|
$show->field('sort'); |
|
|
$show->field('created_at'); |
|
|
$show->field('created_at'); |
|
|
@ -63,15 +80,53 @@ class SlideController extends AdminController |
|
|
{ |
|
|
{ |
|
|
return Form::make(new Slide(), function (Form $form) { |
|
|
return Form::make(new Slide(), function (Form $form) { |
|
|
$form->display('id'); |
|
|
$form->display('id'); |
|
|
$form->text('title'); |
|
|
|
|
|
$form->image('url')->required()->removable(false); |
|
|
|
|
|
$form->switch('status')->required(); |
|
|
|
|
|
$form->text('sort')->required(); |
|
|
|
|
|
|
|
|
$form->text('title') |
|
|
|
|
|
->help('主要用于后台显示,方便管理'); |
|
|
|
|
|
$form->image('picture') |
|
|
|
|
|
->required()->removable(false)->uniqueName() |
|
|
|
|
|
->help('图片大小:750*360'); |
|
|
|
|
|
$form->select('status')->options(['禁用', '启用'])->default(1)->required(); |
|
|
|
|
|
$form->radio('type', '链接类型') |
|
|
|
|
|
->options(['链接到产品详情', '链接到网址']) |
|
|
|
|
|
->value(0)->default(0) |
|
|
|
|
|
->when(0, function (Form $form) { |
|
|
|
|
|
$form->selectTable('url-0', '链接到产品') |
|
|
|
|
|
->help('请选择要链接到的产品') |
|
|
|
|
|
->title('选择在售产品') |
|
|
|
|
|
->dialogWidth('80%;min-width:825px;') |
|
|
|
|
|
->from(SelectAgentProduct::make(['id' => $form->url])) |
|
|
|
|
|
->options(function ($v) { |
|
|
|
|
|
if (!$v) return []; |
|
|
|
|
|
$agent_product = AgentProduct::with('product:id,title') |
|
|
|
|
|
->select(['id', 'product_id']) |
|
|
|
|
|
->firstWhere(['id' => $v]); |
|
|
|
|
|
return [$agent_product->id => $agent_product->product->title]; |
|
|
|
|
|
}) |
|
|
|
|
|
->pluck('product.title') |
|
|
|
|
|
->value($form->model()->url); |
|
|
|
|
|
}) |
|
|
|
|
|
->when(1, function (Form $form) { |
|
|
|
|
|
$form->url('url-1', '链接到网址') |
|
|
|
|
|
->placeholder('如:https://www.baidu.com/') |
|
|
|
|
|
->customFormat(fn() => $this->type == 1 ? $this->url : ''); |
|
|
|
|
|
}); |
|
|
|
|
|
$form->text('sort')->default(255)->required(); |
|
|
})->saving(function (Form $form) { |
|
|
})->saving(function (Form $form) { |
|
|
|
|
|
//不允许编辑的字段
|
|
|
|
|
|
$form->ignore(['id']); |
|
|
|
|
|
|
|
|
|
|
|
foreach ($form->input() as $k => $v) { |
|
|
|
|
|
if (is_null($v)) { |
|
|
|
|
|
$form->$k = ''; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
//处理特殊字段
|
|
|
//处理特殊字段
|
|
|
$form->hidden(['agent_id']); |
|
|
|
|
|
|
|
|
$form->hidden(['agent_id', 'url']); |
|
|
$form->agent_id = Admin::user()->id; |
|
|
$form->agent_id = Admin::user()->id; |
|
|
$form->status = $form->status ? 1 : 0; |
|
|
$form->status = $form->status ? 1 : 0; |
|
|
|
|
|
$form->url = $form->{'url-' . $form->type}; |
|
|
|
|
|
$form->deleteInput(['url-0', 'url-1']); |
|
|
}); |
|
|
}); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |