4 changed files with 138 additions and 5 deletions
			
			
		- 
					73app/Admin/Controllers/DemandProductController.php
 - 
					57app/Admin/Extensions/Grid/AuditDemandProduct.php
 - 
					1app/Admin/routes.php
 - 
					10resources/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