diff --git a/app/Admin/Controllers/OrderController.php b/app/Admin/Controllers/OrderController.php index e1f902c7..9226e6c9 100644 --- a/app/Admin/Controllers/OrderController.php +++ b/app/Admin/Controllers/OrderController.php @@ -9,6 +9,7 @@ use App\Admin\Actions\Show\OrderCreatePackage; use App\Admin\Actions\Show\OrderPay; use App\Admin\Actions\Show\OrderReduce; use App\Admin\Actions\Show\OrderRemark; +use App\Admin\Renderable\Grid\Filter\OrderStatusIn; use App\Admin\Renderable\PackageProductSimpleTable; use App\Admin\Repositories\Order; use App\Models\Order as OrderModel; @@ -35,6 +36,7 @@ class OrderController extends AdminController protected function grid() { $builder = Order::with(['user', 'tags']); + return Grid::make($builder, function (Grid $grid) { $grid->column('id')->sortable(); $grid->column('sn'); @@ -65,7 +67,16 @@ class OrderController extends AdminController 3=>'success', 9=>'success', 10=>'#b3b9bf', - ]); + ])->filter( + OrderStatusIn::make([ + 0=>'待付款', + 1=>'待发货', + 2=>'发货中', + 3=>'已发货', + 9=>'已完成', + 10=>'已取消', + ]) + ); $grid->column('pay_way')->using([ 'wxpay'=>'微信支付', 'alipay'=>'支付宝', @@ -83,33 +94,6 @@ class OrderController extends AdminController // $grid->column('consignee_zone'); // $grid->column('consignee_address'); - // $grid->column('status')->using([ - // 0=>'待支付', - // 1=>'待收货', - // 9=>'已完成', - // 10=>'已取消', - // ])->dot([ - // 0=>'primary', - // 1=>'danger', - // 9=>'success', - // 10=>'#b3b9bf', - // ]); - // $grid->column('shipping_state')->display(function ($v) { - // if ($this->status <1) { - // return -1; - // } - // return $v; - // })->using([ - // -1=> '-', - // 0 => '待发货', - // 1 => '发货中', - // 2 => '已完成', - // ])->dot([ - // 0 => 'primary', - // 1 => 'danger', - // 2 => 'success', - // ]); - // $grid->column('completed_at'); $grid->column('created_at')->sortable(); $grid->model()->orderBy('created_at', 'desc'); diff --git a/app/Admin/Renderable/Grid/Filter/OrderStatusIn.php b/app/Admin/Renderable/Grid/Filter/OrderStatusIn.php new file mode 100644 index 00000000..c57e6d43 --- /dev/null +++ b/app/Admin/Renderable/Grid/Filter/OrderStatusIn.php @@ -0,0 +1,109 @@ +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 = [ + OrderStatus::UNKNOWN, // 未知 + OrderStatus::PENDING, // 待付款 + OrderStatus::WAIT_SHIPPING, // 待发货 + OrderStatus::SHIPPING, // 发货中 + OrderStatus::SHIPPED, // 已发货/待收货 + OrderStatus::COMPLETED, // 已完成 + OrderStatus::CANCELLED, // 已取消 + ]; + + if (array_diff($all, $value)) {//无差别则直接跳过 + //判断查询的状态有哪些; + $model->where(function ($query) use ($value) { + foreach ($value as $status) { + switch ($status) { + case OrderStatus::PENDING: + $query->orWhere('status', Order::STATUS_PENDING); + break; + case OrderStatus::WAIT_SHIPPING: + $query->orWhere(function ($q) { + $q->where([ + 'status'=> Order::STATUS_PAID, + 'shipping_state' => Order::SHIPPING_STATE_PENDING, + ]); + }); + break; + case OrderStatus::SHIPPING: + $query->orWhere(function ($q) { + $q->where([ + 'status'=> Order::STATUS_PAID, + 'shipping_state' => Order::SHIPPING_STATE_PROCESSING, + ]); + }); + break; + case OrderStatus::SHIPPED: + $query->orWhere(function ($q) { + $q->where([ + 'status'=> Order::STATUS_PAID, + 'shipping_state' => Order::SHIPPING_STATE_PROCESSED, + ]); + }); + break; + case OrderStatus::COMPLETED: + $query->orWhere('status', Order::STATUS_COMPLETED); + break; + case OrderStatus::CANCELLED: + $query->orWhere('status', Order::STATUS_CANCELLED); + break; + } + } + }); + } + } + + /** + * Render this filter. + * + * @return string + */ + public function render() + { + return $this->renderCheckbox(); + } +} diff --git a/database/migrations/2016_01_04_173148_create_admin_tables.php b/database/migrations/2016_01_04_173148_create_admin_tables.php index 0877845a..2c3353ac 100644 --- a/database/migrations/2016_01_04_173148_create_admin_tables.php +++ b/database/migrations/2016_01_04_173148_create_admin_tables.php @@ -57,7 +57,7 @@ class CreateAdminTables extends Migration $table->integer('order')->default(0); $table->string('title', 50); $table->string('icon', 50)->nullable(); - $table->string('uri', 50)->nullable(); + $table->string('uri', 150)->nullable(); $table->timestamps(); }); diff --git a/database/seeders/AdminMenuSeeder.php b/database/seeders/AdminMenuSeeder.php index cfcc5e44..91c2dcbd 100644 --- a/database/seeders/AdminMenuSeeder.php +++ b/database/seeders/AdminMenuSeeder.php @@ -75,16 +75,6 @@ class AdminMenuSeeder extends Seeder 'icon' => '', 'uri' => 'shipping-templates', ], - [ - 'title' => 'App版本管理', - 'icon' => '', - 'uri' => 'app-versions', - ], - [ - 'title' => '分享管理', - 'icon' => '', - 'uri' => 'share-bgs', - ], ], ], [ @@ -154,6 +144,16 @@ class AdminMenuSeeder extends Seeder 'icon' => '', 'uri' => 'messages', ], + [ + 'title' => '分享管理', + 'icon' => '', + 'uri' => 'share-bgs', + ], + [ + 'title' => 'App版本管理', + 'icon' => '', + 'uri' => 'app-versions', + ], ], ], [ @@ -166,6 +166,11 @@ class AdminMenuSeeder extends Seeder 'icon' => '', 'uri' => 'orders', ], + [ + 'title' => '待发货单', + 'icon' => '', + 'uri' => 'orders?filter-order_status[]=1&filter-order_status[]=2', + ], [ 'title' =>'订单标签', 'icon' => '', @@ -242,6 +247,7 @@ class AdminMenuSeeder extends Seeder DB::commit(); } catch (Throwable $th) { DB::rollBack(); + dd($th->getMessage()); report($th); } }