4
0
Fork 0

goods create

master
panliang 2022-08-03 15:00:58 +08:00
parent 41eafd3cdd
commit f050bbf5b5
9 changed files with 131 additions and 34 deletions

View File

@ -9,8 +9,9 @@ return [
'fields' => [
'sn' => '货号',
'name' => '名称',
'price' => '',
'price' => '价',
'stock' => '库存',
'spec' => '规格',
'origin_price' => '原价',
]
];

View File

@ -4,7 +4,7 @@ return [
'labels' => [
'GoodsType' => '商品类别',
'goods' => '商品管理',
'brand' => '类别',
'type' => '商品类别',
],
'fields' => [
'name' => '名称',
@ -12,5 +12,6 @@ return [
'attr' => '属性',
'part' => '配件',
'values' => '可选值',
'group' => '分组',
]
];

View File

@ -4,6 +4,8 @@ return [
'labels' => [
'Goods' => '商品信息',
'goods' => '商品信息',
'create' => '创建',
'edit' => '修改',
],
'fields' => [
'category_id' => '分类',

View File

@ -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();

View File

@ -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
);
});
}
}

View File

@ -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) {

View File

@ -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) {

View File

@ -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' => [

View File

@ -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();
}