diff --git a/app/Admin/Controllers/DealerOrderController.php b/app/Admin/Controllers/DealerOrderController.php index 7226f669..19f123e9 100644 --- a/app/Admin/Controllers/DealerOrderController.php +++ b/app/Admin/Controllers/DealerOrderController.php @@ -8,8 +8,10 @@ use App\Admin\Actions\Grid\DealerOrderPaid; use App\Admin\Actions\Grid\DealerOrderRefuse; use App\Admin\Actions\Grid\DealerOrderShipping; use App\Admin\Actions\Show\DealerOrderRemark; +use App\Admin\Renderable\Grid\Filter\DealerOrderPayWayIn; use App\Admin\Repositories\DealerOrder; use App\Enums\DealerOrderStatus; +use App\Enums\PayWay; use App\Models\DealerChannelSubsidyLog; use App\Models\DealerOrderProduct; use Dcat\Admin\Admin; @@ -54,7 +56,7 @@ class DealerOrderController extends AdminController return '  '.$v->getDealerOrderText(); } return ''; - }); + })->filter(DealerOrderPayWayIn::make(PayWay::dealerOrderTexts())); $grid->column('order_status')->display(function ($v) { return $this->order_status; diff --git a/app/Admin/Renderable/Grid/Filter/DealerOrderPayWayIn.php b/app/Admin/Renderable/Grid/Filter/DealerOrderPayWayIn.php new file mode 100644 index 00000000..f8e87f17 --- /dev/null +++ b/app/Admin/Renderable/Grid/Filter/DealerOrderPayWayIn.php @@ -0,0 +1,77 @@ +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 = [ + PayWay::Offline->value => '线下打款', + PayWay::Wallet->value => '余额支付', + PayWay::WxpayH5->value => '微信支付', + ''=>'Unknown', + ]; + + if (array_diff($all, $value)) {//无差别则直接跳过 + //判断查询的状态有哪些; + $model->where(function ($query) use ($value) { + foreach ($value as $payWay) { + switch ($payWay) { + case '': + $query->orWhereNull('pay_way'); + break; + default: + $query->orWhere('pay_way', $payWay); + } + } + }); + } + } + + /** + * Render this filter. + * + * @return string + */ + public function render() + { + return $this->renderCheckbox(); + } +} diff --git a/app/Enums/PayWay.php b/app/Enums/PayWay.php index 51ed79c9..538d0fe1 100644 --- a/app/Enums/PayWay.php +++ b/app/Enums/PayWay.php @@ -58,4 +58,17 @@ enum PayWay: string { default => 'Unknown', }; } + + /** + * @return string + */ + public static function dealerOrderTexts(): array + { + return [ + static::Offline->value => '线下打款', + static::Wallet->value => '余额支付', + static::WxpayH5->value => '微信支付', + ''=>'Unknown', + ]; + } }