78 lines
2.8 KiB
PHP
78 lines
2.8 KiB
PHP
<?php
|
|
|
|
namespace App\Admin\Controllers\Store;
|
|
|
|
use Dcat\Admin\{Form, Grid};
|
|
use Dcat\Admin\Http\Controllers\AdminController;
|
|
use Dcat\Admin\Models\Administrator;
|
|
use App\Models\{ProductCategory, ProductSku};
|
|
use App\Models\Store\{Store, ProductSku as StoreProductSku};
|
|
|
|
class ProductController extends AdminController
|
|
{
|
|
protected $translation = 'store-product';
|
|
|
|
public function listByStore()
|
|
{
|
|
$list = StoreProductSku::with(['productSku'])->where('store_id', request('q'))->get();
|
|
$data = [];
|
|
foreach($list as $item) {
|
|
array_push($data, ['id' => $item->productSku->id, 'text' => $item->productSku->name]);
|
|
}
|
|
return $data;
|
|
}
|
|
|
|
protected function grid()
|
|
{
|
|
$grid = new Grid(StoreProductSku::with(['store', 'productSku.category']));
|
|
$grid->model()->orderBy('id', 'desc');
|
|
|
|
$grid->column('id', 'ID');
|
|
$grid->column('store.title', '店铺');
|
|
$grid->column('productSku.category.name', '分类');
|
|
$grid->column('productSku.name', '名称');
|
|
$grid->column('productSku.cost_price', '成本价')->display(function ($value) {
|
|
return bcdiv($value, 100, 2);;
|
|
});
|
|
$grid->column('productSku.sell_price', '销售价')->display(function ($value) {
|
|
return bcdiv($value, 100, 2);;
|
|
});
|
|
$grid->column('amount', '库存')->sortable();
|
|
$grid->column('productSku.specs', '规格')->label();
|
|
$grid->column('status', '状态')->switch();
|
|
$grid->paginate(10);
|
|
|
|
$grid->showCreateButton();
|
|
$grid->enableDialogCreate();
|
|
|
|
$grid->showDeleteButton();
|
|
// $grid->showRowSelector();
|
|
|
|
$grid->filter(function (Grid\Filter $filter) {
|
|
$filter->panel();
|
|
$filter->equal('store_id')->select(Store::pluck('title', 'id'))->width(3);
|
|
$filter->equal('productSku.category_id', '分类')->select(ProductCategory::withDepth()->having('depth', '=', 2)->pluck('name', 'id'))->width(3);
|
|
$filter->like('productSku.name', '名称')->width(3);
|
|
});
|
|
return $grid;
|
|
}
|
|
|
|
protected function form()
|
|
{
|
|
$form = Form::make(StoreProductSku::with(['productSku']));
|
|
$form->select('store_id')->options(Store::pluck('title', 'id'));
|
|
$form->select('product_sku_id')->options(ProductSku::class)->ajax('api/product-skus');
|
|
$form->switch('status')->default(1);
|
|
$form->saving(function (Form $form) {
|
|
if ($form->isCreating()) {
|
|
$store_id = $form->input('store_id');
|
|
$product_sku_id = $form->input('product_sku_id');
|
|
if (StoreProductSku::where(compact('store_id', 'product_sku_id'))->exists()) {
|
|
return $form->response()->error('该商品已经存在');
|
|
}
|
|
}
|
|
});
|
|
return $form;
|
|
}
|
|
}
|