| 
						 | 
						<?php
namespace App\Admin\Controllers;
use App\Admin\Extensions\Grid\AuditAgentProduct;use App\Admin\Repositories\AgentProduct;use App\Common\ProductStatus;use Dcat\Admin\Form;use Dcat\Admin\Grid;use Dcat\Admin\Show;use Dcat\Admin\Http\Controllers\AdminController;use Illuminate\Support\Facades\Route;
class AgentProductController extends AdminController{    /**     * Make a grid builder.     *     * @return Grid     */    protected function grid()    {        return Grid::make(new AgentProduct(['agent:id,name', 'guide:id,name']), function (Grid $grid) {			$grid->disableCreateButton();			$grid->disableRowSelector();			$grid->disableEditButton();			//如果是审核页面,多加where条件判断
			if (strpos(Route::current()->uri, 'audit')) {				$grid->model()->where('status', ProductStatus::UNAUDITED);			}
			$grid->model()->where('type', 1);
            $grid->column('id')->sortable();            $grid->column('agent.name');            $grid->column('title')->limit(15);            $grid->column('picture')->image('', 60, 60);            $grid->column('price');            $grid->column('original_price');            $grid->column('sale');            $grid->column('stock');            $grid->column('guide.name');			$grid->column('status')				->if(fn() => $this->status == ProductStatus::UNAUDITED)				->display('')				->then(function ($column) {					$column->append((new AuditAgentProduct(null, 1))->setKey($this->id))->append(' ');					$column->append((new AuditAgentProduct(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->filter(function (Grid\Filter $filter) {				$filter->panel();
                $filter->equal('id')->width(2);				$filter->like('title')->width(3);				$filter->equal('status')->width(2)->select(ProductStatus::array());            });        });    }
    /**     * Make a show builder.     *     * @param mixed $id     *     * @return Show     */    protected function detail($id)    {        return Show::make($id, new AgentProduct(['agent:id,name', 'guide:id,name']), function (Show $show) {			$show->disableEditButton();
            $show->field('id');            $show->field('agent.name');            $show->field('title');            $show->field('pictures')->image('', 80, 80);            $show->field('price');            $show->field('original_price');            $show->field('sale');            $show->field('stock');            $show->field('guide.name');            $show->field('status')->using(ProductStatus::array());			$show->field('deposit');			$show->field('deposit_timeout');			$show->field('earnest');			$show->field('earnest_timeout');			$show->field('know')->unescape()->as(fn($v) => preg_replace('/<script.*?>.*?<\/script>/is', '', $v));			$show->field('content')->unescape()->as(fn($v) => preg_replace('/<script.*?>.*?<\/script>/is', '', $v));            $show->field('created_at');            $show->field('updated_at');        });    }
    /**     * Make a form builder.     *     * @return Form     */    protected function form()    {        return Form::make(new AgentProduct(), function (Form $form) {			$form->disableFooter();
            $form->display('id');            $form->display('agent_id');            $form->display('title');            $form->multipleImage('pictures');            $form->display('price');            $form->display('original_price');            $form->display('sale');            $form->display('stock');            $form->display('guide_id');            $form->display('status');            $form->display('know');            $form->display('content');            $form->display('deposit');            $form->display('deposit_timeout');            $form->display('earnest');            $form->display('earnest_timeout');
            $form->display('created_at');            $form->display('updated_at');        })->saving(function (Form $form) {        	if ($form->isEditing() && $form->status !== null && array_key_exists($form->status, ProductStatus::array())) {				$form->model()->update(['status' => $form->status]);				return $form->response()->success('审核成功!')->refresh();			}			return $form->response()->error('操作禁止');		});    }}
  |