diff --git a/app/Admin/Controllers/BargainOrderController.php b/app/Admin/Controllers/BargainOrderController.php index b567c93b..addc6771 100644 --- a/app/Admin/Controllers/BargainOrderController.php +++ b/app/Admin/Controllers/BargainOrderController.php @@ -2,6 +2,7 @@ namespace App\Admin\Controllers; +use App\Admin\Renderable\Grid\Filter\BargainOrderSnIn; use App\Admin\Repositories\BargainOrder; use App\Models\BargainOrder as BargainOrderModel; use App\Models\BargainOrderLog; @@ -35,9 +36,20 @@ class BargainOrderController extends AdminController $grid->column('bargain_price')->display(function ($v) { return bcdiv($v, 100, 2); })->prepend('¥'); - $grid->column('status'); + $grid->column('status')->using([ + 0=>'未开始', + 1=>'砍价中', + 2=>'已砍完', + ])->dot([ + 0=>'primary', + 1=>'warning', + 2=>'success', + ]); $grid->column('expire_at'); - $grid->column('mallOrder.sn'); + $grid->column('mallOrder.sn')->filter(BargainOrderSnIn::make([ + 0 => '未下单', + 1 => '已下单', + ])); $grid->column('remark'); $grid->column('created_at'); $grid->column('updated_at')->sortable(); diff --git a/app/Admin/Renderable/Grid/Filter/BargainOrderSnIn.php b/app/Admin/Renderable/Grid/Filter/BargainOrderSnIn.php new file mode 100644 index 00000000..96f4fa6e --- /dev/null +++ b/app/Admin/Renderable/Grid/Filter/BargainOrderSnIn.php @@ -0,0 +1,74 @@ +options = $options; + + $this->class = [ + 'all' => uniqid('column-filter-all-'), + 'item' => uniqid('column-filter-item-'), + ]; + } + + /** + * Add a binding to the query. + * + * @param array $value + * @param Model $model + */ + public function addBinding($value, Model $model) + { + if (empty($value)) { + return; + } + $all = [0, 1]; + + if (array_diff($all, $value)) {//无差别则直接跳过 + //判断查询的状态有哪些; + $model->where(function ($query) use ($value) { + foreach ($value as $status) { + switch ($status) { + case 0: + $query->orWhere(function ($q) { + return $q->whereNull('order_id')->orWhere('order_id', 0); + }); + break; + case 1: + $query->orWhereNotNull('order_id'); + break; + } + } + }); + } + } + + /** + * Render this filter. + * + * @return string + */ + public function render() + { + return $this->renderCheckbox(); + } +}