线下订单品类
parent
c5c4032fc7
commit
c164580e25
|
|
@ -9,6 +9,7 @@ use App\Enums\OfflineOrderStatus;
|
||||||
use App\Enums\PayWay;
|
use App\Enums\PayWay;
|
||||||
use App\Models\OfflineOrder;
|
use App\Models\OfflineOrder;
|
||||||
use App\Models\OfflineOrderItem;
|
use App\Models\OfflineOrderItem;
|
||||||
|
use App\Models\OfflineProductCategory;
|
||||||
use App\Models\Store\Store;
|
use App\Models\Store\Store;
|
||||||
use Dcat\Admin\Admin;
|
use Dcat\Admin\Admin;
|
||||||
use Dcat\Admin\Grid;
|
use Dcat\Admin\Grid;
|
||||||
|
|
@ -31,7 +32,7 @@ class OfflineOrderController extends AdminController
|
||||||
CSS
|
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');
|
$grid->model()->orderBy('id', 'desc');
|
||||||
|
|
||||||
|
|
@ -68,6 +69,19 @@ class OfflineOrderController extends AdminController
|
||||||
<span class="label bg-success">{$phone}</span>
|
<span class="label bg-success">{$phone}</span>
|
||||||
HTML;
|
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('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('discount_reduction_amount')->display(fn($v) => bcdiv($v, 100, 2))->prepend('¥');
|
||||||
$grid->column('points_deduction_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('payment_sn')->width(3);
|
||||||
$filter->like('out_trade_no')->width(3);
|
$filter->like('out_trade_no')->width(3);
|
||||||
$filter->equal('store_id')->select(Store::pluck('title', 'id'))->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) {
|
$filter->where('staff_id', function ($q) {
|
||||||
$q->where(function ($q) {
|
$q->where(function ($q) {
|
||||||
$q->whereHas('staff', fn($q) => $q->where('phone', 'like', '%'.$this->input.'%'))
|
$q->whereHas('staff', fn($q) => $q->where('phone', 'like', '%'.$this->input.'%'))
|
||||||
|
|
|
||||||
|
|
@ -75,6 +75,11 @@ class OfflineOrder extends Model
|
||||||
return $this->morphMany(PayLog::class, 'payable');
|
return $this->morphMany(PayLog::class, 'payable');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function items()
|
||||||
|
{
|
||||||
|
return $this->hasMany(OfflineOrderItem::class, 'order_id');
|
||||||
|
}
|
||||||
|
|
||||||
public function isPending(): bool
|
public function isPending(): bool
|
||||||
{
|
{
|
||||||
return $this->status === OfflineOrderStatus::Pending;
|
return $this->status === OfflineOrderStatus::Pending;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue