6
0
Fork 0
jiqu-library-server/app/Admin/Renderable/ProductSkuTable.php

132 lines
5.6 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
namespace App\Admin\Renderable;
use App\Admin\Actions\Grid\ReleaseCancel;
use App\Admin\Actions\Grid\ReleaseDown;
use App\Admin\Actions\Grid\ReleaseUp;
use App\Admin\Actions\Grid\SkuGift;
use App\Admin\Actions\Grid\SkuSyncSpu;
use App\Admin\Extensions\Grid\Tools\Product\AddSku;
use App\Admin\Extensions\Grid\Tools\Product\BatchReleaseCancel;
use App\Admin\Extensions\Grid\Tools\Product\BatchReleaseDown;
use App\Admin\Extensions\Grid\Tools\Product\BatchReleaseUp;
use App\Admin\Extensions\Grid\Tools\Product\BatchSkuSyncSpu;
use App\Admin\Extensions\Grid\Tools\Product\InitSkuBySpecs;
use App\Admin\Extensions\Grid\Tools\Product\SettingSpecs;
use App\Models\ProductSku;
use App\Models\ProductSpu;
use Dcat\Admin\Admin;
use Dcat\Admin\Grid;
class ProductSkuTable extends Grid
{
public static function grid(int $spuId = null)
{
$builder = ProductSku::with('category');
$grid = parent::make($builder, function (Grid $grid) {
$grid->disableCreateButton();
$grid->setResource('product-skus');
$grid->showRowSelector();
$grid->batchActions(function ($batch) {
//批量下架
if (Admin::user()->can('dcat.admin.product_skus.batch_release_down')) {
$batch->add(new BatchReleaseDown());
}
//批量上架
if (Admin::user()->can('dcat.admin.product_skus.batch_release_up')) {
$batch->add(new BatchReleaseUp());
}
//批量取消审核
if (Admin::user()->can('dcat.admin.product_skus.batch_release_cancel')) {
$batch->add(new BatchReleaseCancel());
}
});
$grid->column('id')->sortable();
// $grid->column('spu_id');
$grid->column('name');
$grid->column('subtitle');
$grid->column('category.name');
$grid->column('specs')->label();
$grid->column('sell_price')->prepend('¥');
$grid->column('market_price')->prepend('¥');
$grid->column('cost_price')->prepend('¥');
$grid->column('vip_price')->prepend('¥');
$grid->column('weight');
$grid->column('stock');
$grid->column('sales');
$grid->column('verify_state')
->using([0=>'正常', 1=>'审核中', 2=>'审核失败'])
->dot([
0 => 'success',
1 => 'primary',
2 => 'danger',
]);
$grid->column('release_at');
$grid->model()->orderBy('created_at', 'desc');
$grid->model()->orderBy('release_at', 'desc');
$grid->actions(function (Grid\Displayers\Actions $actions) {
$actions->disableView();
if (is_null($actions->row->release_at) || $actions->row->verify_state == 1) {//未上架或者审核未通过
$actions->disableEdit(Admin::user()->cannot('dcat.admin.product_skus.edit'));
$actions->disableDelete(Admin::user()->cannot('dcat.admin.product_skus.destroy'));
if ($actions->row->verify_state == 0) {
if (Admin::user()->can('dcat.admin.product_skus.release_up')) {
$actions->append(new ReleaseUp());
}
if (Admin::user()->can('dcat.admin.product_skus.sku_sync_spu')) {
$actions->append(new SkuSyncSpu());
}
if (Admin::user()->can('dcat.admin.product_skus.sku_gift')) {
$actions->append(new SkuGift());
}
}
if ($actions->row->verify_state == 1) {
if (Admin::user()->can('dcat.admin.product_skus.release_cancel')) {
$actions->append(new ReleaseCancel());
}
}
}
if ($actions->row->release_at) {//已上架
if (Admin::user()->can('dcat.admin.product_skus.release_down')) {
$actions->append(new ReleaseDown());
}
}
});
$grid->filter(function (Grid\Filter $filter) {
$filter->panel();
$filter->equal('name')->width(3);
});
});
if ($spuId) {
$grid->model()->where('spu_id', $spuId);
$spu = ProductSpu::findOrFail($spuId);
$grid->batchActions(function ($batch) {
//批量同步主商品
if (Admin::user()->can('dcat.admin.product_skus.batch_sku_sync_spu')) {
$batch->add(new BatchSkuSyncSpu());
}
});
$grid->tools(function (Grid\Tools $tools) use ($spu) {
//设置规格
if (Admin::user()->can('dcat.admin.product_spus.setting_specs')) {
$tools->append(new SettingSpecs($spu->id));
}
if ($spu->hasSku()) { //下面有sku手动创建sku
if (Admin::user()->can('dcat.admin.product_spus.add_sku')) {
$tools->append(new AddSku($spu->id));
}
} else {//下面无sku根据规格自动生成sku
if (Admin::user()->can('dcat.admin.product_spus.init_sku_by_specs')) {
$tools->append(new InitSkuBySpecs($spu->id));
}
}
});
}
return $grid;
}
}