4 changed files with 138 additions and 5 deletions
			
			
		- 
					73app/Admin/Controllers/DemandProductController.php
 - 
					57app/Admin/Extensions/Grid/AuditDemandProduct.php
 - 
					1app/Admin/routes.php
 - 
					12resources/lang/zh_CN/demand-product.php
 
@ -0,0 +1,73 @@ | 
			
		|||||
 | 
				<?php | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				namespace App\Admin\Controllers; | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				use App\Admin\Extensions\Grid\AuditDemandProduct; | 
			
		||||
 | 
				use App\Admin\Repositories\Product; | 
			
		||||
 | 
				use App\Common\ProductStatus; | 
			
		||||
 | 
				use App\Common\UserStatus; | 
			
		||||
 | 
				use App\Models\Category; | 
			
		||||
 | 
				use App\Models\DemandProduct; | 
			
		||||
 | 
				use App\Models\Supplier; | 
			
		||||
 | 
				use Dcat\Admin\Form; | 
			
		||||
 | 
				use Dcat\Admin\Grid; | 
			
		||||
 | 
				use Dcat\Admin\Show; | 
			
		||||
 | 
				use Dcat\Admin\Http\Controllers\AdminController; | 
			
		||||
 | 
				use Illuminate\Support\Facades\Route; | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				class DemandProductController extends AdminController | 
			
		||||
 | 
				{ | 
			
		||||
 | 
				    /** | 
			
		||||
 | 
				     * Make a grid builder. | 
			
		||||
 | 
				     * | 
			
		||||
 | 
				     * @return Grid | 
			
		||||
 | 
				     */ | 
			
		||||
 | 
				    protected function grid() | 
			
		||||
 | 
				    { | 
			
		||||
 | 
				        return Grid::make(new DemandProduct(['supplier:id,name', 'category:id,name']), function (Grid $grid) { | 
			
		||||
 | 
							$grid->disableCreateButton(); | 
			
		||||
 | 
							//如果是审核页面,多加where条件判断
 | 
			
		||||
 | 
							if (strpos(Route::current()->uri, 'audit')) { | 
			
		||||
 | 
								$grid->model()->where('status', ProductStatus::UNAUDITED); | 
			
		||||
 | 
							} | 
			
		||||
 | 
				
 | 
			
		||||
 | 
							$grid->column('id')->sortable(); | 
			
		||||
 | 
							$grid->column('category.name', '分类'); | 
			
		||||
 | 
				            $grid->column('picture')->image('', 60, 60); | 
			
		||||
 | 
							$grid->column('title'); | 
			
		||||
 | 
							$grid->column('original_price'); | 
			
		||||
 | 
				            $grid->column('price'); | 
			
		||||
 | 
				            $grid->column('sale'); | 
			
		||||
 | 
				            $grid->column('stock'); | 
			
		||||
 | 
							$grid->column('supplier.name', '供应商'); | 
			
		||||
 | 
							$grid->column('status') | 
			
		||||
 | 
								->if(fn() => $this->status == ProductStatus::UNAUDITED) | 
			
		||||
 | 
								->display('') | 
			
		||||
 | 
								->then(function ($column) { | 
			
		||||
 | 
									$column->append((new AuditDemandProduct(null, 1))->setKey($this->id))->append(' '); | 
			
		||||
 | 
									$column->append((new AuditDemandProduct(null, 2))->setKey($this->id)); | 
			
		||||
 | 
								}) | 
			
		||||
 | 
								->else() | 
			
		||||
 | 
								->using(ProductStatus::array()) | 
			
		||||
 | 
								->dot([ | 
			
		||||
 | 
									ProductStatus::ON_SALE => 'success', | 
			
		||||
 | 
									ProductStatus::UNAUDITED => '', | 
			
		||||
 | 
									ProductStatus::REFUSE => 'danger', | 
			
		||||
 | 
									ProductStatus::SOLD_OUT => 'warning', | 
			
		||||
 | 
								], 'primary'); | 
			
		||||
 | 
				            $grid->column('created_at'); | 
			
		||||
 | 
				            $grid->column('updated_at'); | 
			
		||||
 | 
							$grid->disableDeleteButton(); | 
			
		||||
 | 
							$grid->disableEditButton(); | 
			
		||||
 | 
							$grid->disableQuickEditButton(); | 
			
		||||
 | 
							$grid->disableViewButton(); | 
			
		||||
 | 
				            $grid->filter(function (Grid\Filter $filter) { | 
			
		||||
 | 
								$filter->panel(); | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				                $filter->equal('id')->width(2); | 
			
		||||
 | 
								$filter->like('title')->width(3); | 
			
		||||
 | 
								$filter->equal('status')->select(ProductStatus::array())->width(2); | 
			
		||||
 | 
				            }); | 
			
		||||
 | 
				        }); | 
			
		||||
 | 
				    } | 
			
		||||
 | 
				} | 
			
		||||
@ -0,0 +1,57 @@ | 
			
		|||||
 | 
				<?php | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				namespace App\Admin\Extensions\Grid; | 
			
		||||
 | 
				use App\Common\ProductStatus; | 
			
		||||
 | 
				use App\Models\DemandProduct; | 
			
		||||
 | 
				use App\Models\Product; | 
			
		||||
 | 
				use Dcat\Admin\Grid\RowAction; | 
			
		||||
 | 
				use Illuminate\Http\Request; | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				/** | 
			
		||||
 | 
				 * 供应商审核 | 
			
		||||
 | 
				 * Class AuditSupplier | 
			
		||||
 | 
				 * @package App\Admin\Extensions\Grid | 
			
		||||
 | 
				 */ | 
			
		||||
 | 
				class AuditDemandProduct extends RowAction | 
			
		||||
 | 
				{ | 
			
		||||
 | 
					private $action; | 
			
		||||
 | 
				
 | 
			
		||||
 | 
					public function __construct($title = null, $action = 1) | 
			
		||||
 | 
					{ | 
			
		||||
 | 
						parent::__construct($title); | 
			
		||||
 | 
						$this->action = $action; //$action:1=通过;2=拒绝
 | 
			
		||||
 | 
						$this->title = $action == 1 ? '通过' : '拒绝'; | 
			
		||||
 | 
					} | 
			
		||||
 | 
				
 | 
			
		||||
 | 
					protected function html() | 
			
		||||
 | 
					{ | 
			
		||||
 | 
						$class = $this->action == 1 ? 'btn btn-sm btn-success' : 'btn btn-sm btn-danger'; | 
			
		||||
 | 
						$this->appendHtmlAttribute('class', $class); | 
			
		||||
 | 
						$this->defaultHtmlAttribute('href', 'javascript:;'); | 
			
		||||
 | 
				
 | 
			
		||||
 | 
						return "<a {$this->formatHtmlAttributes()}>{$this->title}</a>"; | 
			
		||||
 | 
					} | 
			
		||||
 | 
				
 | 
			
		||||
 | 
					public function handle(Request $request) | 
			
		||||
 | 
					{ | 
			
		||||
 | 
						try { | 
			
		||||
 | 
							$product = DemandProduct::find($this->getKey()); | 
			
		||||
 | 
							$product->status = $request->action == 1 ? ProductStatus::ON_SALE : ProductStatus::REFUSE; | 
			
		||||
 | 
							$product->save(); | 
			
		||||
 | 
				
 | 
			
		||||
 | 
							return $this->response()->success("审核成功")->refresh(); | 
			
		||||
 | 
						} catch (\Exception $e) { | 
			
		||||
 | 
							return $this->response()->error($e->getMessage()); | 
			
		||||
 | 
						} | 
			
		||||
 | 
					} | 
			
		||||
 | 
				
 | 
			
		||||
 | 
					public function confirm() | 
			
		||||
 | 
					{ | 
			
		||||
 | 
						return ['确定要'.$this->title.'该产品吗?', '']; | 
			
		||||
 | 
					} | 
			
		||||
 | 
				
 | 
			
		||||
 | 
					public function parameters() | 
			
		||||
 | 
					{ | 
			
		||||
 | 
						return ['action' => $this->action]; | 
			
		||||
 | 
					} | 
			
		||||
 | 
				} | 
			
		||||
						Write
						Preview
					
					
					Loading…
					
					Cancel
						Save
					
		Reference in new issue