| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -2,7 +2,11 @@ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					namespace App\AdminAgent\Controllers; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					use App\AdminAgent\Renderable\SelectAgentProduct; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					use App\AdminAgent\Renderable\SelectProduct; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					use App\AdminAgent\Repositories\Slide; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					use App\Models\AgentProduct; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					use App\Models\Product; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					use Dcat\Admin\Admin; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					use Dcat\Admin\Form; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					use Dcat\Admin\Grid; | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -18,12 +22,17 @@ class SlideController extends AdminController | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					     */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    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->column('id')->sortable(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            $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('sort')->editable()->sortable()->width(120); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -43,10 +52,18 @@ class SlideController extends AdminController | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					     */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    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('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('sort'); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            $show->field('created_at'); | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -63,15 +80,53 @@ class SlideController extends AdminController | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        return Form::make(new Slide(), function (Form $form) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            $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) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        	//不允许编辑的字段
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								$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->status = $form->status ? 1 : 0; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								$form->url = $form->{'url-' . $form->type}; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								$form->deleteInput(['url-0', 'url-1']); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							}); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} |