From 182bd8b06f801be6f42bc89189ef18e4b77332c0 Mon Sep 17 00:00:00 2001 From: panliang <1163816051@qq.com> Date: Mon, 8 Aug 2022 18:03:19 +0800 Subject: [PATCH] generate --- .../goods/resources/lang/zh_CN/goods-sku.php | 3 +- .../goods/resources/views/form/spec.blade.php | 272 ++++++++++++------ .../goods/resources/views/grid/attr.blade.php | 2 +- .../resources/views/grid/attrs.blade.php | 15 + .../resources/views/grid/parts.blade.php | 15 + .../goods/resources/views/grid/spec.blade.php | 6 +- .../resources/views/grid/specs.blade.php | 15 + packages/goods/src/Form/GoodsAttrForm.php | 13 +- packages/goods/src/Form/GoodsSpecForm.php | 30 +- packages/goods/src/Form/Spec.php | 53 +++- packages/goods/src/GoodsService.php | 47 ++- .../Controllers/Admin/GoodsController.php | 31 +- .../Controllers/Admin/GoodsSkuController.php | 132 ++++++--- packages/goods/updates/GoodsTableSeeder.php | 6 +- resources/views/form/checkbox.blade.php | 4 +- 15 files changed, 450 insertions(+), 194 deletions(-) create mode 100644 packages/goods/resources/views/grid/attrs.blade.php create mode 100644 packages/goods/resources/views/grid/parts.blade.php create mode 100644 packages/goods/resources/views/grid/specs.blade.php diff --git a/packages/goods/resources/lang/zh_CN/goods-sku.php b/packages/goods/resources/lang/zh_CN/goods-sku.php index 5c8f5bc..2373eb6 100644 --- a/packages/goods/resources/lang/zh_CN/goods-sku.php +++ b/packages/goods/resources/lang/zh_CN/goods-sku.php @@ -4,7 +4,8 @@ return [ 'labels' => [ 'GoodsSku' => '货品管理', 'goods' => '商品管理', - 'sku' => '商品管理', + 'sku' => '货品管理', + 'create' => '添加', ], 'fields' => [ 'sn' => '货号', diff --git a/packages/goods/resources/views/form/spec.blade.php b/packages/goods/resources/views/form/spec.blade.php index d58c7b7..94990cf 100644 --- a/packages/goods/resources/views/form/spec.blade.php +++ b/packages/goods/resources/views/form/spec.blade.php @@ -1,22 +1,29 @@
+ @foreach($headers as $item) @endforeach - + - @foreach($value as $item) + @foreach($formatValue as $item) - + @foreach($item['values'] as $subItem) - @foreach($subItem as $value) - + @foreach($keys as $key) + @endforeach @endforeach - @foreach($headers as $index => $subItem) - @if($index > 0) - - @endif + @foreach($keys as $index => $key) + @endforeach @@ -66,89 +71,170 @@ } diff --git a/packages/goods/resources/views/grid/attr.blade.php b/packages/goods/resources/views/grid/attr.blade.php index 643a91d..00d5af6 100644 --- a/packages/goods/resources/views/grid/attr.blade.php +++ b/packages/goods/resources/views/grid/attr.blade.php @@ -5,7 +5,7 @@ @foreach($value as $item)
{{ $item['name'] }} - {{ $item['value'] }} {{ isset($item['price']) ? '(+'.$item['price'].')' : '' }} + {{ $item['name'] }}({{ $item['value'] }})
@endforeach @endif diff --git a/packages/goods/resources/views/grid/attrs.blade.php b/packages/goods/resources/views/grid/attrs.blade.php new file mode 100644 index 0000000..4f137df --- /dev/null +++ b/packages/goods/resources/views/grid/attrs.blade.php @@ -0,0 +1,15 @@ + + + +@if($value) +@foreach($value as $item) +
+ {{ $item['name'] }} + @if($item['values']) + @foreach($item['values'] as $subItem) + {{ $subItem['name'] }}({{ $subItem['value'] }}) + @endforeach + @endif +
+@endforeach +@endif diff --git a/packages/goods/resources/views/grid/parts.blade.php b/packages/goods/resources/views/grid/parts.blade.php new file mode 100644 index 0000000..e5aa0a5 --- /dev/null +++ b/packages/goods/resources/views/grid/parts.blade.php @@ -0,0 +1,15 @@ + + + +@if($value) +@foreach($value as $item) +
+ {{ $item['name'] }} + @if($item['values']) + @foreach($item['values'] as $subItem) + {{ $subItem['value'] }}({{ $subItem['price'] }}) + @endforeach + @endif +
+@endforeach +@endif diff --git a/packages/goods/resources/views/grid/spec.blade.php b/packages/goods/resources/views/grid/spec.blade.php index e5aa0a5..f3a93ef 100644 --- a/packages/goods/resources/views/grid/spec.blade.php +++ b/packages/goods/resources/views/grid/spec.blade.php @@ -5,11 +5,7 @@ @foreach($value as $item)
{{ $item['name'] }} - @if($item['values']) - @foreach($item['values'] as $subItem) - {{ $subItem['value'] }}({{ $subItem['price'] }}) - @endforeach - @endif + {{ $item['value'] }}({{ $item['price'] }})
@endforeach @endif diff --git a/packages/goods/resources/views/grid/specs.blade.php b/packages/goods/resources/views/grid/specs.blade.php new file mode 100644 index 0000000..e5aa0a5 --- /dev/null +++ b/packages/goods/resources/views/grid/specs.blade.php @@ -0,0 +1,15 @@ + + + +@if($value) +@foreach($value as $item) +
+ {{ $item['name'] }} + @if($item['values']) + @foreach($item['values'] as $subItem) + {{ $subItem['value'] }}({{ $subItem['price'] }}) + @endforeach + @endif +
+@endforeach +@endif diff --git a/packages/goods/src/Form/GoodsAttrForm.php b/packages/goods/src/Form/GoodsAttrForm.php index 502fb0a..49a7613 100644 --- a/packages/goods/src/Form/GoodsAttrForm.php +++ b/packages/goods/src/Form/GoodsAttrForm.php @@ -5,7 +5,6 @@ namespace Peidikeji\Goods\Form; use Dcat\Admin\Contracts\LazyRenderable; use Dcat\Admin\Traits\LazyWidget; use Dcat\Admin\Widgets\Form; -use Illuminate\Support\Arr; use Peidikeji\Goods\Models\Goods; class GoodsAttrForm extends Form implements LazyRenderable @@ -14,20 +13,16 @@ class GoodsAttrForm extends Form implements LazyRenderable public function handle(array $input) { - dd($input); - $goods = Goods::findOrFail($input['goods_id']); - $goods->update(['attr' => $input['attr']]); + $goods = Goods::findOrFail($this->payload['goods_id']); + $goods->update(['attr' => json_decode($input['attr'])]); return $this->response()->success('保存成功'); } public function form() { - $this->fill(Arr::only($this->payload, ['type_id', 'goods_id', 'attr'])); - - $this->hidden('type_id'); - $this->hidden('goods_id'); - $this->spec('attr')->header(['分组', '名称', '属性值']); + $attr = $this->model()->type?->attr; + $this->spec('attr')->header(['分组', '名称', '属性值'])->keys(['name', 'value'])->type($attr); } protected function renderResetButton() diff --git a/packages/goods/src/Form/GoodsSpecForm.php b/packages/goods/src/Form/GoodsSpecForm.php index d8b4080..e1c4c6e 100644 --- a/packages/goods/src/Form/GoodsSpecForm.php +++ b/packages/goods/src/Form/GoodsSpecForm.php @@ -2,12 +2,9 @@ namespace Peidikeji\Goods\Form; -use Dcat\Admin\Admin; use Dcat\Admin\Contracts\LazyRenderable; -use Dcat\Admin\Form\NestedForm; use Dcat\Admin\Traits\LazyWidget; use Dcat\Admin\Widgets\Form; -use Illuminate\Support\Arr; use Peidikeji\Goods\Models\Goods; class GoodsSpecForm extends Form implements LazyRenderable @@ -16,28 +13,21 @@ class GoodsSpecForm extends Form implements LazyRenderable public function handle(array $input) { - $goods = Goods::findOrFail($input['goods_id']); - $goods->update(['spec' => $input['spec']]); - + $goods = Goods::findOrFail($this->payload['goods_id']); + $spec = json_decode($input['spec'], true); + foreach($spec as &$item) { + foreach($item['values'] as &$subItem) {} + $subItem['price'] = floatval($subItem['price']); + } + $goods->update(['spec' => $spec]); return $this->response()->success('保存成功'); } public function form() { - $this->spec('spec')->customFormat(function ($v) { - $list = []; - foreach($v as $item) { - $listItem = ['name' => $item['name'], 'values' => []]; - foreach($item['values'] as $subItem) { - array_push($listItem['values'], [ - 'name' => $subItem['value'], - 'value' => $subItem['price'] - ]); - } - array_push($list, $listItem); - } - return $list; - })->header(['名称', '可选值', '价格']); + $spec = $this->model()->type?->spec; + + $this->spec('spec')->header(['名称', '可选值', '价格'])->keys(['value', 'price'])->type($spec); } protected function renderResetButton() diff --git a/packages/goods/src/Form/Spec.php b/packages/goods/src/Form/Spec.php index 09de009..b2ce6c3 100644 --- a/packages/goods/src/Form/Spec.php +++ b/packages/goods/src/Form/Spec.php @@ -3,19 +3,68 @@ namespace Peidikeji\Goods\Form; use Dcat\Admin\Form\Field; +use Illuminate\Support\Arr; class Spec extends Field { protected $view = 'peidikeji.dcat-admin-extension-goods::form.spec'; protected $variables = [ - 'headers' => [] + 'headers' => [], + 'keys' => [], + 'type' => null, + 'formatValue' => [], ]; public function header(array $headers) { - $this->addVariables(['headers' => $headers]); + $this->addVariables([ + 'headers' => $headers, + ]); return $this; } + + public function keys($keys) + { + $this->addVariables([ + 'keys' => $keys, + ]); + + return $this; + } + + public function type($type) + { + $this->addVariables(['type' => $type]); + + return $this; + } + + public function render() + { + $value = $this->value; + $type = $this->variables['type']; + $newValue = []; + if ($type && !$value) { + foreach($type as $item) { + $itemValue = $value ? Arr::first($value, fn($i) => $i['name'] === $item['name']) : []; + $values = data_get($itemValue, 'values', []); + foreach($values as &$items) { + $subItem = Arr::first($item['values'], fn($i) => $i['name'] === $items['name']); + $items['options'] = data_get($subItem, 'values'); + } + array_push($newValue, [ + 'name' => $item['name'], + 'values' => $values + ]); + } + } else { + $newValue = $value ?: []; + } + $this->addVariables([ + 'formatValue' => $newValue + ]); + return parent::render(); + } } diff --git a/packages/goods/src/GoodsService.php b/packages/goods/src/GoodsService.php index 6bc81ec..a3b87c6 100644 --- a/packages/goods/src/GoodsService.php +++ b/packages/goods/src/GoodsService.php @@ -22,14 +22,22 @@ class GoodsService GoodsSku::where('goods_id', $goods->id)->delete(); } - public function generateSku(Goods $goods) + /** + * 根据规格生成SKU + * + * @param Goods $goods 商品 + * @param array $options {spec: 指定规格, price: 基础价格, name: 基础名称, stock: 默认库存, name_add: 是否在名称上面追加属性值, price_add: 是否在价格上面追加属性的加价, force: 是否覆盖原有的货品} + */ + public function generateSku(Goods $goods, $options = []) { - $this->clearSku($goods); - if ($goods->spec) { - $spec = $goods->spec; - $price = $goods->price; - $name = $goods->name; - + $spec = data_get($options, 'spec', $goods->spec); + $price = data_get($options, 'price', $goods->price); + $name = data_get($options, 'name', $goods->name); + $stock = data_get($options, 'stock', $goods->stock); + $nameAdd = !!data_get($options, 'name_add', false); + $priceAdd = !!data_get($options, 'price_add', false); + $force = !!data_get($options, 'force', false); + if ($spec) { $specList = []; foreach ($spec as $item) { $items = []; @@ -37,21 +45,30 @@ class GoodsService array_push($items, [ 'name' => $item['name'], 'value' => $value['value'], - 'price' => $value['price'], + 'price' => floatval($value['price']), ]); } array_push($specList, $items); } $cartesianList = $this->cartesianProduct($specList); foreach($cartesianList as $items) { - $specPrice = array_sum(array_column($items, 'price')); - $goods->skus()->create([ - 'sn' => $this->generateSn(), - 'name' => $name, - 'price' => $price + $specPrice, - 'stock' => $goods->stock, + $specPrice = $priceAdd ? $price + array_sum(array_column($items, 'price')) : $price; + $specName = $nameAdd ? $name . ' ' . implode(' ', array_column($items, 'value')) : $name; + $exists = $goods->skus()->jsonArray($items)->exists(); + $attributes = [ + 'name' => $specName, + 'price' => $specPrice, + 'stock' => $stock, 'spec' => $items, - ]); + ]; + if ($exists) { + if ($force) { + $goods->skus()->jsonArray($items)->update($attributes); + } + } else { + $attributes['sn'] = $this->generateSn(); + $goods->skus()->create($attributes); + } } } } diff --git a/packages/goods/src/Http/Controllers/Admin/GoodsController.php b/packages/goods/src/Http/Controllers/Admin/GoodsController.php index 6411674..0c96d33 100644 --- a/packages/goods/src/Http/Controllers/Admin/GoodsController.php +++ b/packages/goods/src/Http/Controllers/Admin/GoodsController.php @@ -10,11 +10,13 @@ use Dcat\Admin\Http\Controllers\AdminController; use Dcat\Admin\Layout\Content; use Dcat\Admin\Show; use Dcat\Admin\Widgets\Card; +use Illuminate\Validation\Rule; use Peidikeji\Goods\Form\GoodsAttrForm; use Peidikeji\Goods\Form\GoodsSpecForm; use Peidikeji\Goods\Models\Goods; use Peidikeji\Goods\Models\GoodsBrand; use Peidikeji\Goods\Models\GoodsCategory; +use Peidikeji\Goods\Models\GoodsSku; use Peidikeji\Goods\Models\GoodsType; class GoodsController extends AdminController @@ -25,8 +27,9 @@ class GoodsController extends AdminController { $goods = Goods::with(['type'])->findOrFail($goods); $form = GoodsAttrForm::make([ - 'type' => $goods->type - ])->payload(['attr' => $goods->attr, 'type_id' => $goods->type?->id, 'goods_id' => $goods->id])->appendHtmlAttribute('class', 'bg-white'); + 'type' => $goods->type, + 'attr' => $goods->attr + ])->payload(['type_id' => $goods->type?->id, 'goods_id' => $goods->id])->appendHtmlAttribute('class', 'bg-white'); return $content ->translation($this->translation()) ->title($goods->name) @@ -83,7 +86,7 @@ class GoodsController extends AdminController return ($this->cover_image ? ' ' : '') . ''.$this->name.''; }); $grid->column('price')->editable(); - $grid->column('spec')->view('peidikeji.dcat-admin-extension-goods::grid.spec'); + $grid->column('spec')->view('peidikeji.dcat-admin-extension-goods::grid.specs'); $grid->column('on_sale')->switch(); $grid->column('sold_count'); @@ -111,9 +114,9 @@ class GoodsController extends AdminController $show->field('cover_image')->image('', 100); $show->field('images')->image('', 100); $show->field('content')->image(''); - $show->field('spec')->view('peidikeji.dcat-admin-extension-goods::grid.spec'); - $show->field('attr')->view('peidikeji.dcat-admin-extension-goods::grid.attr'); - $show->field('part')->view('peidikeji.dcat-admin-extension-goods::grid.spec'); + $show->field('spec')->view('peidikeji.dcat-admin-extension-goods::grid.specs'); + $show->field('attr')->view('peidikeji.dcat-admin-extension-goods::grid.attrs'); + $show->field('part')->view('peidikeji.dcat-admin-extension-goods::grid.parts'); $show->field('on_sale')->bool(); $show->field('sold_count'); $show->field('created_at')->as(fn($v) => $this->created_at->format('Y-m-d H:i:s')); @@ -127,17 +130,21 @@ class GoodsController extends AdminController return Form::make(new Goods(), function (Form $form) { $model = $form->model(); $isCreating = $form->isCreating(); + $unique = Rule::unique('goods', 'goods_sn'); if ($isCreating) { $form->select('type_id')->options(GoodsType::pluck('name', 'id')); } else { - $type = $model->type_id ? GoodsType::find($form->model()->type_id) : null; - $form->display('type_id')->with(fn() => $type->name); + $type = $model->type_id ? GoodsType::find($model->type_id) : null; + $form->display('type_id')->with(fn() => $model->type_id ? $type->name : ''); + $unique->ignore($model->id); } $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->text('goods_sn')->required()->rules([$unique], [ + 'unique' => '商品编号已经存在' + ]); $form->image('cover_image') ->autoUpload() ->saveFullUrl() @@ -159,6 +166,12 @@ class GoodsController extends AdminController $form->disableCreatingCheck(); $form->disableViewCheck(); $form->disableEditingCheck(); + + $form->deleting(function (Form $form) { + $data = $form->model()->toArray(); + // 删除 SKU + GoodsSku::whereIn('goods_id', array_column($data, 'id'))->delete(); + }); }); } } diff --git a/packages/goods/src/Http/Controllers/Admin/GoodsSkuController.php b/packages/goods/src/Http/Controllers/Admin/GoodsSkuController.php index a901821..0d46b74 100644 --- a/packages/goods/src/Http/Controllers/Admin/GoodsSkuController.php +++ b/packages/goods/src/Http/Controllers/Admin/GoodsSkuController.php @@ -11,6 +11,7 @@ use Dcat\Admin\Show; use Illuminate\Routing\Controller; use Illuminate\Support\Arr; use Illuminate\Validation\Rule; +use Peidikeji\Goods\GoodsService; use Peidikeji\Goods\Models\Goods; use Peidikeji\Goods\Models\GoodsSku; @@ -26,14 +27,16 @@ class GoodsSkuController extends Controller $grid->selector(function (Selector $selector) use ($goods) { $specs = $goods->spec; - foreach($specs as $key => $item) { - $values = array_column($item['values'], 'value'); - $selector->selectOne('spec_' . $key, $item['name'], array_column($item['values'], 'value'), function ($q, $value) use ($values, $item) { - $selected = array_values(Arr::only($values, $value)); - if (count($selected) > 0) { - $q->jsonArray([['name' => $item['name'], 'value' => $selected[0]]]); - } - }); + if ($specs) { + foreach($specs as $key => $item) { + $values = array_column($item['values'], 'value'); + $selector->selectOne('spec_' . $key, $item['name'], array_column($item['values'], 'value'), function ($q, $value) use ($values, $item) { + $selected = array_values(Arr::only($values, $value)); + if (count($selected) > 0) { + $q->jsonArray([['name' => $item['name'], 'value' => $selected[0]]]); + } + }); + } } }); @@ -43,13 +46,15 @@ class GoodsSkuController extends Controller $grid->column('origin_price')->display(fn() => $goods->price); $grid->column('price'); $grid->column('stock'); - foreach($goods->spec as $key => $item) { - $grid->column('spec_' . $key, $item['name'])->display(function () use ($item) { - $filtered = current(array_filter($this->spec, fn($subItem) => $subItem['name'] === $item['name'])); - $value = data_get($filtered, 'value'); - $price = data_get($filtered, 'price'); - return ''.$value.''; - }); + if ($goods->spec) { + foreach($goods->spec as $key => $item) { + $grid->column('spec_' . $key, $item['name'])->display(function () use ($item) { + $filtered = current(array_filter($this->spec, fn($subItem) => $subItem['name'] === $item['name'])); + $value = data_get($filtered, 'value'); + $price = data_get($filtered, 'price'); + return ''.$value.''; + }); + } } // $grid->column('spec')->view('peidikeji.dcat-admin-extension-goods::grid.attr'); }); @@ -69,7 +74,7 @@ class GoodsSkuController extends Controller $show->field('name'); $show->field('price'); $show->field('stock'); - $show->field('spec')->view('peidikeji.dcat-admin-extension-goods::grid.attr'); + $show->field('spec')->view('peidikeji.dcat-admin-extension-goods::grid.spec'); // $goods = $show->model()->goods; // foreach($goods->spec as $key => $item) { // $show->field('spec_' . $key, $item['name'])->as(function () use ($item) { @@ -90,11 +95,8 @@ class GoodsSkuController extends Controller protected function form($goods) { return Form::make(new GoodsSku(), function (Form $form) use ($goods) { - $unqiue = Rule::unique('goods_sku', 'sn'); - if ($form->isEditing()) { - $unqiue->ignore($form->model()->id); - } - $form->text('sn')->rules([$unqiue])->required(); + $unqiue = Rule::unique('goods_sku', 'sn')->ignore($form->model()->id); + $form->text('sn')->rules([$unqiue], ['unique' => '货号已经存在'])->required(); $form->text('name')->default($goods->name); $form->number('price')->min(0)->default($goods->price); $form->number('stock')->min(0)->default($goods->stock); @@ -102,22 +104,26 @@ class GoodsSkuController extends Controller $form->hidden('goods_id')->default($goods->id); $spec = $form->model()->spec; - foreach($goods->spec as $key => $item) { - $values = array_column($item['values'], 'value', 'value'); - $value = null; - if ($spec) { - $filtered = current(array_filter($spec, fn($subItem) => $subItem['name'] === $item['name'])); - $value = array_search($filtered['value'], $values); + if ($goods->spec) { + foreach($goods->spec as $item) { + $values = array_column($item['values'], 'value', 'value'); + $value = null; + if ($spec) { + $filtered = current(array_filter($spec, fn($subItem) => $subItem['name'] === $item['name'])); + $value = array_search($filtered['value'], $values); + } + $form->radio($item['name'], $item['name'])->options($values)->value($value); } - $form->radio($item['name'], $item['name'])->options($values)->value($value); } $form->saving(function (Form $form) use ($goods) { $info = $form->model(); $spec = []; - foreach($goods->spec as $item) { - array_push($spec, ['name' => $item['name'], 'value' => $form->input($item['name'])]); - $form->deleteInput($item['name']); + if ($goods->spec) { + foreach($goods->spec as $item) { + array_push($spec, ['name' => $item['name'], 'value' => $form->input($item['name'])]); + $form->deleteInput($item['name']); + } } $form->input('spec', $spec); $query = GoodsSku::where('goods_id', $goods->id)->jsonArray($spec); @@ -148,11 +154,67 @@ class GoodsSkuController extends Controller public function create($goods, Content $content) { + $goods = Goods::findOrFail($goods); return $content ->translation($this->translation) - ->title(admin_trans_label()) - ->description(trans('admin.create')) - ->body($this->form(Goods::findOrFail($goods))); + ->title(__('peidikeji.dcat-admin-extension-goods::goods-sku.labels.sku')) + ->description(__('peidikeji.dcat-admin-extension-goods::goods-sku.labels.create')) + ->body($this->createForm($goods)); + } + + protected function createForm($goods) + { + return Form::make(new GoodsSku(), function (Form $form) use ($goods) { + $form->text('name')->default($goods->name); + if ($goods->spec) { + $form->checkbox('name_append', '')->options([1 => '是否在名称上面追加属性值']); + } + $form->number('price')->min(0)->default($goods->price); + if ($goods->spec) { + $form->checkbox('price_append', '')->options([1 => '是否在价格上面追加属性的加价'])->default([1]); + } + + if ($goods->spec) { + foreach($goods->spec as $item) { + $values = array_column($item['values'], 'value', 'value'); + $form->checkbox($item['name'], $item['name'])->options($values); + } + + $form->checkbox('force', '')->options([1 => '覆盖已经存在的货品'])->default(1); + } + + + $form->disableCreatingCheck(); + $form->disableEditingCheck(); + $form->disableViewCheck(); + $form->disableResetButton(); + + $form->saving(function (Form $form) use ($goods) { + $price = $form->price; + $name = $form->name; + $spec = []; + if ($goods->spec) { + foreach($goods->spec as $index => $item) { + $values = $form->input($item['name']); + $values = array_filter($values, fn($v) => $v); + if (count($values) === 0) { + return $form->response()->error('请勾选 ' . $item['name']); + } + array_push($spec, ['name' => $item['name'], 'values' => array_filter($item['values'], fn($v) => in_array($v['value'], $values))]); + $form->deleteInput($item['name']); + } + } + GoodsService::make()->generateSku($goods, [ + 'spec' => $spec, + 'price' => $price, + 'name' => $name, + 'name_add' => !!data_get($form->name_append, 0), + 'price_add' => !!data_get($form->price_append, 0), + 'force' => !!$form->force + ]); + return $form->response()->success('添加成功')->redirect(admin_route('goods_sku.index', ['goods' => $goods->id])); + }); + }); } public function update($goods, $id) @@ -162,7 +224,7 @@ class GoodsSkuController extends Controller public function store($goods) { - return $this->form(Goods::findOrFail($goods))->store(); + return $this->createForm(Goods::findOrFail($goods))->store(); } public function destroy($goods, $id) diff --git a/packages/goods/updates/GoodsTableSeeder.php b/packages/goods/updates/GoodsTableSeeder.php index f0539da..fec700d 100644 --- a/packages/goods/updates/GoodsTableSeeder.php +++ b/packages/goods/updates/GoodsTableSeeder.php @@ -53,8 +53,10 @@ class GoodsTableSeeder extends Seeder [ 'name' => '笔记本电脑', 'attr' => [ - ['group' => '显示器', 'name' => '屏幕类型', 'values' => ['LED 背光显示屏']], - ['group' => '显示器','name' => '物理分辨率', 'values' => ['3072 x 1920 (226 ppi)']], + ['name' => '显示器', 'values' => [ + ['name' => '屏幕类型', 'values' => ['LED 背光显示屏']], + ['name' => '物理分辨率', 'values' => ['3072 x 1920 (226 ppi)']] + ]], ], 'spec' => [ ['name' => '颜色', 'values' => ['白色', '灰色']], diff --git a/resources/views/form/checkbox.blade.php b/resources/views/form/checkbox.blade.php index 3ea145e..08d4ca4 100755 --- a/resources/views/form/checkbox.blade.php +++ b/resources/views/form/checkbox.blade.php @@ -1,6 +1,6 @@
- +
@@ -55,4 +55,4 @@ }); $(selector+':checked').trigger('change') -@endif \ No newline at end of file +@endif
{{ $item }} + @if($type) + + @endif +
{{ $item['name'] }}{{ $item['name'] }}
{{ $value }}{{ data_get($subItem, $key) }}
- - + + -