owl-admin-base/app/Admin/Controllers/ProductController.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([]);
}
}