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