6
0
Fork 0
jiqu-library-server/app/Admin/Controllers/Store/ProductController.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;
}
}