goods create
parent
41eafd3cdd
commit
f050bbf5b5
|
|
@ -9,8 +9,9 @@ return [
|
|||
'fields' => [
|
||||
'sn' => '货号',
|
||||
'name' => '名称',
|
||||
'price' => '价格',
|
||||
'price' => '售价',
|
||||
'stock' => '库存',
|
||||
'spec' => '规格',
|
||||
'origin_price' => '原价',
|
||||
]
|
||||
];
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ return [
|
|||
'labels' => [
|
||||
'GoodsType' => '商品类别',
|
||||
'goods' => '商品管理',
|
||||
'brand' => '类别',
|
||||
'type' => '商品类别',
|
||||
],
|
||||
'fields' => [
|
||||
'name' => '名称',
|
||||
|
|
@ -12,5 +12,6 @@ return [
|
|||
'attr' => '属性',
|
||||
'part' => '配件',
|
||||
'values' => '可选值',
|
||||
'group' => '分组',
|
||||
]
|
||||
];
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@ return [
|
|||
'labels' => [
|
||||
'Goods' => '商品信息',
|
||||
'goods' => '商品信息',
|
||||
'create' => '创建',
|
||||
'edit' => '修改',
|
||||
],
|
||||
'fields' => [
|
||||
'category_id' => '分类',
|
||||
|
|
|
|||
|
|
@ -32,7 +32,12 @@ class GoodsBrandController extends AdminController
|
|||
->autoUpload()
|
||||
->saveFullUrl()
|
||||
->move('goods/brand');
|
||||
// $form->oss('file')->dir('mv');
|
||||
$form->oss('file')->config([
|
||||
'accessId' => 'LTAI5tFMaynxgZ9aDMNLxpU9',
|
||||
'accessKey' => 'pecJA3LX2sQyWxWDMUUb5NhsMe4Czu',
|
||||
'host' => 'https://zcs-test.oss-cn-chengdu.aliyuncs.com',
|
||||
'dir' => 'mv',
|
||||
]);
|
||||
|
||||
$form->disableResetButton();
|
||||
$form->disableCreatingCheck();
|
||||
|
|
|
|||
|
|
@ -2,7 +2,11 @@
|
|||
|
||||
namespace Peidikeji\Goods\Http\Controllers\Admin;
|
||||
|
||||
use Dcat\Admin\Admin;
|
||||
use Dcat\Admin\Form;
|
||||
use Dcat\Admin\Form\BlockForm;
|
||||
use Dcat\Admin\Form\NestedForm;
|
||||
use Dcat\Admin\Form\Row;
|
||||
use Dcat\Admin\Grid;
|
||||
use Dcat\Admin\Grid\Displayers\Actions;
|
||||
use Dcat\Admin\Grid\Tools\Selector;
|
||||
|
|
@ -91,32 +95,113 @@ class GoodsController extends AdminController
|
|||
protected function form()
|
||||
{
|
||||
return Form::make(new Goods(), function (Form $form) {
|
||||
$form->select('category_id')->options(GoodsCategory::selectOptions(null, false))->required();
|
||||
$form->select('brand_id')->options(GoodsBrand::pluck('name', 'id'));
|
||||
$form->select('type_id')->options(GoodsType::pluck('name', 'id'));
|
||||
$form->text('name')->required();
|
||||
$form->text('goods_sn');
|
||||
$form->image('cover_image')
|
||||
->autoUpload()
|
||||
->saveFullUrl()
|
||||
->move('goods/goods')
|
||||
->required();
|
||||
$form->multipleImage('images')
|
||||
->autoUpload()
|
||||
->saveFullUrl()
|
||||
->move('goods/goods');
|
||||
$form->multipleImage('content')
|
||||
->autoUpload()
|
||||
->saveFullUrl()
|
||||
->move('goods/goods');
|
||||
$model = $form->model();
|
||||
$isCreating = $form->isCreating();
|
||||
$type = null;
|
||||
|
||||
$form->number('price')->min(0)->attribute('step', 0.01);
|
||||
$form->switch('on_sale');
|
||||
if (request('type_id') && $isCreating) {
|
||||
$typeId = request('type_id');
|
||||
$type = GoodsType::find($typeId);
|
||||
if ($type) {
|
||||
$attrbutes = [
|
||||
'type_id' => $type->id,
|
||||
'attr' => $type->attr,
|
||||
'spec' => $type->spec,
|
||||
'part' => $type->part,
|
||||
];
|
||||
$form->model($attrbutes);
|
||||
}
|
||||
}
|
||||
$model = $form->model();
|
||||
if (!$type) {
|
||||
$type = $model && $model->type_id ? GoodsType::find($form->model()->type_id) : null;
|
||||
}
|
||||
|
||||
$form->disableHeader();
|
||||
$form->tab('基本设置', function (Form $form) use ($isCreating, $type) {
|
||||
if ($isCreating) {
|
||||
$form->select('type_id')->options(GoodsType::pluck('name', 'id'));
|
||||
} else {
|
||||
$form->display('type_id')->with(fn() => $type->name);
|
||||
}
|
||||
$form->select('category_id')->options(GoodsCategory::selectOptions(null, false))->required();
|
||||
$form->select('brand_id')->options(GoodsBrand::pluck('name', 'id'));
|
||||
$form->text('name')->required();
|
||||
$form->text('goods_sn');
|
||||
$form->image('cover_image')
|
||||
->autoUpload()
|
||||
->saveFullUrl()
|
||||
->move('goods/goods')
|
||||
->required();
|
||||
$form->multipleImage('images')
|
||||
->autoUpload()
|
||||
->saveFullUrl()
|
||||
->move('goods/goods');
|
||||
$form->multipleImage('content')
|
||||
->autoUpload()
|
||||
->saveFullUrl()
|
||||
->move('goods/goods');
|
||||
|
||||
$form->number('price')->min(0)->attribute('step', 0.01);
|
||||
$form->switch('on_sale');
|
||||
});
|
||||
|
||||
$form->tab('属性', function (Form $form) use ($type) {
|
||||
$form->array('attr', null, function (NestedForm $table) use ($type) {
|
||||
$values = data_get($type, 'attr.' . $table->getKey() . '.values') ?: [];
|
||||
$table->text('group', '分组');
|
||||
$table->text('name', '属性名')->required();
|
||||
$table->autocomplete('value', '属性值')->options($values)->configs(['minChars' => 0]);
|
||||
});
|
||||
});
|
||||
$form->tab('规格', function (Form $form) use ($type) {
|
||||
$form->array('spec', null, function (NestedForm $table) use ($type) {
|
||||
$table->text('name', '名称')->required();
|
||||
$values = data_get($type, 'spec.' . $table->getKey() . '.values') ?: [];
|
||||
$table->array('values', null, function (NestedForm $table) use ($values) {
|
||||
$index = $table->getKey();
|
||||
$table->autocomplete('value', '可选值')
|
||||
->default($index === null ? '' : data_get($values, $index, ''))
|
||||
->options($values)
|
||||
->configs(['minChars' => 0]);
|
||||
$table->number('price', '加价')->min(0)->default();
|
||||
});
|
||||
});
|
||||
});
|
||||
$form->tab('配件', function (Form $form) use ($type) {
|
||||
$form->array('part', null, function (NestedForm $table) use ($type) {
|
||||
$table->text('name', '名称')->required();
|
||||
$values = data_get($type, 'part.' . $table->getKey() . '.values') ?: [];
|
||||
$table->array('values', null, function (NestedForm $table) use ($values) {
|
||||
$index = $table->getKey();
|
||||
$table->autocomplete('value', '可选值')
|
||||
->default($index === null ? '' : data_get($values, $index, ''))
|
||||
->options($values)
|
||||
->configs(['minChars' => 0]);
|
||||
$table->number('price', '加价')->min(0)->default();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
$form->disableResetButton();
|
||||
$form->disableCreatingCheck();
|
||||
$form->disableViewCheck();
|
||||
$form->disableEditingCheck();
|
||||
|
||||
$admin_url = request()->url();
|
||||
Admin::script(
|
||||
<<<JS
|
||||
var url = "{$admin_url}"
|
||||
var isCreating = "${isCreating}"
|
||||
console.log(isCreating)
|
||||
console.log(url)
|
||||
$('[name="type_id"]').change(function (e) {
|
||||
if (isCreating) {
|
||||
Dcat.reload(url + '?type_id=' + e.target.value);
|
||||
}
|
||||
})
|
||||
JS
|
||||
);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@ class GoodsSkuController extends Controller
|
|||
$grid->column('id');
|
||||
$grid->column('sn');
|
||||
$grid->column('name');
|
||||
$grid->column('origin_price')->display(fn() => $goods->price);
|
||||
$grid->column('price');
|
||||
$grid->column('stock');
|
||||
foreach($goods->spec as $key => $item) {
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ class GoodsTypeController extends AdminController
|
|||
|
||||
$form->array('attr', function (NestedForm $table) {
|
||||
$table->text('name')->required();
|
||||
$table->text('group');
|
||||
$table->list('values');
|
||||
});
|
||||
$form->array('spec', function (NestedForm $table) {
|
||||
|
|
|
|||
|
|
@ -36,9 +36,9 @@ class GoodsTableSeeder extends Seeder
|
|||
[
|
||||
'name' => '手机',
|
||||
'attr' => [
|
||||
['name' => '入网型号', 'values' => ['5G', '4G']],
|
||||
['name' => '上市年份', 'values' => null],
|
||||
['name' => '品牌', 'values' => null]
|
||||
['group' => '主体', 'name' => '入网型号', 'values' => ['5G', '4G']],
|
||||
['group' => '主体', 'name' => '上市年份', 'values' => null],
|
||||
['group' => '主体', 'name' => '品牌', 'values' => null]
|
||||
],
|
||||
'spec' => [
|
||||
['name' => '颜色', 'values' => ['白色', '红色', '黑色']],
|
||||
|
|
@ -51,8 +51,8 @@ class GoodsTableSeeder extends Seeder
|
|||
[
|
||||
'name' => '笔记本电脑',
|
||||
'attr' => [
|
||||
['name' => '屏幕类型', 'values' => ['LED 背光显示屏']],
|
||||
['name' => '物理分辨率', 'values' => ['3072 x 1920 (226 ppi)']],
|
||||
['group' => '显示器', 'name' => '屏幕类型', 'values' => ['LED 背光显示屏']],
|
||||
['group' => '显示器','name' => '物理分辨率', 'values' => ['3072 x 1920 (226 ppi)']],
|
||||
],
|
||||
'spec' => [
|
||||
['name' => '颜色', 'values' => ['白色', '灰色']],
|
||||
|
|
@ -92,9 +92,9 @@ class GoodsTableSeeder extends Seeder
|
|||
'stock' => 100,
|
||||
'price' => 6499.00,
|
||||
'attr' => [
|
||||
['name' => '入网型号', 'value' => '5G'],
|
||||
['name' => '品牌', 'value' => '三星Galaxy'],
|
||||
['name' => '上市年份', 'value' => '2020'],
|
||||
['group' => '主体', 'name' => '入网型号', 'value' => '5G'],
|
||||
['group' => '主体', 'name' => '品牌', 'value' => '三星Galaxy'],
|
||||
['group' => '主体', 'name' => '上市年份', 'value' => '2020'],
|
||||
],
|
||||
'spec' => [
|
||||
['name' => '颜色', 'values' => [
|
||||
|
|
@ -133,8 +133,8 @@ class GoodsTableSeeder extends Seeder
|
|||
'stock' => 150,
|
||||
'price' => 17999.00,
|
||||
'attr' => [
|
||||
['name' => '屏幕类型', 'value' => 'LED 背光显示屏'],
|
||||
['name' => '物理分辨率', 'value' => '3072 x 1920 (226 ppi)'],
|
||||
['group' => '显示器','name' => '屏幕类型', 'value' => 'LED 背光显示屏'],
|
||||
['group' => '显示器','name' => '物理分辨率', 'value' => '3072 x 1920 (226 ppi)'],
|
||||
],
|
||||
'spec' => [
|
||||
['name' => '颜色', 'values' => [
|
||||
|
|
|
|||
|
|
@ -1183,13 +1183,14 @@ class Form implements Renderable
|
|||
{
|
||||
$this->build();
|
||||
|
||||
$this->fillFields($this->model()->toArray());
|
||||
|
||||
if ($this->isCreating()) {
|
||||
$this->callCreating();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$this->fillFields($this->model()->toArray());
|
||||
$this->callEditing();
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue