111 lines
5.5 KiB
PHP
111 lines
5.5 KiB
PHP
<?php
|
|
|
|
namespace App\Admin\Controllers;
|
|
|
|
use Slowlyo\OwlAdmin\Admin;
|
|
use Slowlyo\OwlAdmin\Renderers\Page;
|
|
use Slowlyo\OwlAdmin\Renderers\Form;
|
|
use Slowlyo\OwlAdmin\Controllers\AdminController;
|
|
use App\Services\Admin\ProductService;
|
|
use App\Admin\Components;
|
|
use App\Models\Keyword;
|
|
|
|
class ProductController extends AdminController
|
|
{
|
|
protected string $serviceName = ProductService::class;
|
|
|
|
public function list():Page
|
|
{
|
|
$crud = $this->baseCRUD()->tableLayout('fixed')
|
|
->headerToolbar([
|
|
$this->createButton(),
|
|
...$this->baseHeaderToolBar(),
|
|
])
|
|
->filter($this->baseFilter()->body([
|
|
amis()->GroupControl()->mode('horizontal')->body([
|
|
amis()->TextControl('sku', __('admin.products.sku'))
|
|
->placeholder(__('admin.products.sku')),
|
|
amis()->TextControl('name', __('admin.products.name'))
|
|
->placeholder(__('admin.products.name')),
|
|
]),
|
|
]))
|
|
->columns([
|
|
amis()->TableColumn('name', __('admin.products.name'))->width('300px'),
|
|
amis()->TableColumn('sku', __('admin.sku'))->sortable(true),
|
|
amis()->TableColumn('category.name', __('admin.products.category')),
|
|
amis()->TableColumn('cover', __('admin.products.cover'))->type('image')->height('50px')->width('50px')->enlargeAble(true),
|
|
amis()->TableColumn('is_sale', __('admin.products.is_sale'))->type('switch'),
|
|
amis()->TableColumn('is_recommend', __('admin.products.is_recommend'))->type('switch'),
|
|
amis()->Operation()->label(__('admin.actions'))->buttons([
|
|
$this->rowEditButton(),
|
|
$this->rowDeleteButton(),
|
|
])
|
|
]);
|
|
|
|
return $this->baseList($crud);
|
|
}
|
|
|
|
public function form(): Form
|
|
{
|
|
return $this->baseForm()->panelClassName('px-0')->body([
|
|
amis()->Tabs()->tabsMode('line')->tabs([
|
|
//基础信息
|
|
amis()->Tab()->title(__('admin.products.tab1'))->body([
|
|
amis()->Grid()->columns([
|
|
amis()->Wrapper()->body([
|
|
amis()->TextControl('name', __('admin.products.name'))->required(true),
|
|
Components::make()->parentControl(admin_url('api/product_categories/tree-list'), 'category_id', __('admin.products.category')),
|
|
|
|
amis()->TextControl('spu', __('admin.products.spu'))->description('*未填写则自动生成唯一spu'),
|
|
amis()->TextareaControl('sub_title', __('admin.products.sub_title'))->minRows(5),
|
|
|
|
Components::make()->sortControl('virtual_sales', __('admin.products.virtual_sales')),
|
|
Components::make()->sortControl('stocks', __('admin.products.stocks'))->description('*已销售过的商品无法直接编辑库存,需前往商品库存中操作。'),
|
|
|
|
Components::make()->decimalControl('price', __('admin.products.price')),
|
|
|
|
amis()->SwitchControl('is_sale', __('admin.products.is_sale'))->value(false),
|
|
amis()->SwitchControl('is_show', __('admin.products.is_show'))->value(false),
|
|
|
|
])->md(4),
|
|
amis()->Wrapper()->body([
|
|
Components::make()->imageControl('photos', __('admin.products.photos'))->multiple(true)->draggable(true)->required(true),
|
|
Components::make()->cropImageControl('cover', __('admin.products.cover'))->description('*若不选择上传,则默认为相册第一张'),
|
|
|
|
Components::make()->sortControl('sort', __('admin.products.sort')),
|
|
|
|
amis()->SwitchControl('is_recommend', __('admin.products.is_recommend'))->value(false),
|
|
amis()->SwitchControl('is_hot', __('admin.products.is_hot'))->value(false),
|
|
amis()->SwitchControl('is_new', __('admin.products.is_new'))->value(false),
|
|
|
|
])->md(8)
|
|
]),
|
|
]),
|
|
//详情,信息
|
|
amis()->Tab()->title(__('admin.products.tab2'))->body([
|
|
//详情,基础信息,运费模板,属性标签,
|
|
amis()->Grid()->columns([
|
|
amis()->Wrapper()->body([
|
|
Components::make()->keywordsTagControl('t_ids', __('admin.products.tags'), 'product_tag'),
|
|
amis()->SelectControl('shipping_tmp_id', __('admin.products.shipping_tmp_id'))->required(true),
|
|
amis()->InputKV()->name('base_info')->label('参数信息')->keyPlaceholder('属性')->valuePlaceholder('值'),
|
|
])->md(4),
|
|
amis()->Wrapper()->body([
|
|
Components::make()->fuEditorControl('description', __('admin.products.description')),
|
|
])->md(8),
|
|
]),
|
|
]),
|
|
//多属性商品
|
|
amis()->Tab()->title(__('admin.products.tab3'))->body([
|
|
|
|
])
|
|
])
|
|
]);
|
|
}
|
|
|
|
public function detail(): Form
|
|
{
|
|
return $this->baseDetail()->body([]);
|
|
}
|
|
|
|
} |