6
0
Fork 0

线下订单品类

base
Jing Li 2023-11-12 15:55:29 +08:00
parent c5c4032fc7
commit c164580e25
2 changed files with 25 additions and 1 deletions

View File

@ -9,6 +9,7 @@ use App\Enums\OfflineOrderStatus;
use App\Enums\PayWay;
use App\Models\OfflineOrder;
use App\Models\OfflineOrderItem;
use App\Models\OfflineProductCategory;
use App\Models\Store\Store;
use Dcat\Admin\Admin;
use Dcat\Admin\Grid;
@ -31,7 +32,7 @@ class OfflineOrderController extends AdminController
CSS
);
$grid = new Grid(OfflineOrderRepository::with(['user', 'userInfo', 'store', 'staff', 'staffInfo']));
$grid = new Grid(OfflineOrderRepository::with(['user', 'userInfo', 'store', 'staff', 'staffInfo', 'items.productCategory']));
$grid->model()->orderBy('id', 'desc');
@ -68,6 +69,19 @@ class OfflineOrderController extends AdminController
<span class="label bg-success">{$phone}</span>
HTML;
});
$grid->column('items', '品类')->display(function () {
return $this->items->map(function ($item) {
$category = $item->productCategory?->name;
if ($item->discount_reduction_amount > 0) {
$discount = round(bcdiv($item->discount_reduction_amount*10, $item->products_total_amount, 3), 2);
$category .= " {$discount}";
}
return '<span class="label bg-primary d-inline-block mb-25 mr-25">'.$category.'</span>';
})->join('');
});
$grid->column('products_total_amount')->display(fn($v) => bcdiv($v, 100, 2))->prepend('¥');
$grid->column('discount_reduction_amount')->display(fn($v) => bcdiv($v, 100, 2))->prepend('¥');
$grid->column('points_deduction_amount')->display(fn($v) => bcdiv($v, 100, 2))->prepend('¥');
@ -89,6 +103,11 @@ class OfflineOrderController extends AdminController
$filter->like('payment_sn')->width(3);
$filter->like('out_trade_no')->width(3);
$filter->equal('store_id')->select(Store::pluck('title', 'id'))->width(3);
$filter->where('product_category_id', function ($q) {
$q->where(function ($q) {
$q->whereHas('items', fn($q) => $q->where('product_category_id', $this->input));
});
}, '品类')->select(OfflineProductCategory::pluck('name', 'id'))->width(3);
$filter->where('staff_id', function ($q) {
$q->where(function ($q) {
$q->whereHas('staff', fn($q) => $q->where('phone', 'like', '%'.$this->input.'%'))

View File

@ -75,6 +75,11 @@ class OfflineOrder extends Model
return $this->morphMany(PayLog::class, 'payable');
}
public function items()
{
return $this->hasMany(OfflineOrderItem::class, 'order_id');
}
public function isPending(): bool
{
return $this->status === OfflineOrderStatus::Pending;