From 275b80a1f9d040a67f1f6af21374da5d7696ef85 Mon Sep 17 00:00:00 2001 From: panliang <1163816051@qq.com> Date: Wed, 21 Sep 2022 13:31:12 +0800 Subject: [PATCH] goods --- src/Form/Attr.php | 5 ++ src/Form/GoodsType/AttrForm.php | 2 +- src/Http/Admin/GoodsTypeController.php | 69 +++++++++++++++----------- views/form/attr.blade.php | 8 +-- 4 files changed, 50 insertions(+), 34 deletions(-) diff --git a/src/Form/Attr.php b/src/Form/Attr.php index fd3084d..3c7fe1d 100644 --- a/src/Form/Attr.php +++ b/src/Form/Attr.php @@ -38,4 +38,9 @@ class Attr extends Field return $this; } + + // protected function prepareInputValue($value) + // { + // return $value; + // } } diff --git a/src/Form/GoodsType/AttrForm.php b/src/Form/GoodsType/AttrForm.php index a54417f..c6547df 100644 --- a/src/Form/GoodsType/AttrForm.php +++ b/src/Form/GoodsType/AttrForm.php @@ -21,7 +21,7 @@ class AttrForm extends Form implements LazyRenderable public function form() { - $this->fill(['attr' => $this->payload['attr']]); + $this->fill(['attr' => data_get($this->payload, 'attr')]); $this->attr('attr')->header(['分组', '名称'])->keys(['name']); diff --git a/src/Http/Admin/GoodsTypeController.php b/src/Http/Admin/GoodsTypeController.php index ab4d0ee..4012b7e 100644 --- a/src/Http/Admin/GoodsTypeController.php +++ b/src/Http/Admin/GoodsTypeController.php @@ -5,11 +5,8 @@ namespace Peidikeji\Goods\Http\Admin; use Dcat\Admin\Admin; use Dcat\Admin\Form; use Dcat\Admin\Grid; -use Dcat\Admin\Grid\Displayers\Modal; use Dcat\Admin\Http\Controllers\AdminController; -use Peidikeji\Goods\Form\GoodsType\AttrForm; -use Peidikeji\Goods\Form\GoodsType\PartForm; -use Peidikeji\Goods\Form\GoodsType\SpecForm; +use Dcat\Admin\Show; use Peidikeji\Goods\Models\Goods; use Peidikeji\Goods\Models\GoodsType; @@ -28,50 +25,62 @@ class GoodsTypeController extends AdminController { return Grid::make(new GoodsType(), function (Grid $grid) { $grid->disableRowSelector(); - $grid->disableViewButton(); - $grid->disableEditButton(); $grid->column('name')->editable(); - $grid->column('attr')->display(fn () => view('dcat-admin-goods::goods-type.grid-attr', ['value' => $this->attr]))->modal(__('dcat-admin-goods::goods-type.fields.attr'), function (Modal $modal) { - $modal->icon(''); + $grid->column('attr')->display(fn () => view('dcat-admin-goods::goods-type.grid-attr', ['value' => $this->attr])); + $grid->column('spec')->display(fn () => view('dcat-admin-goods::goods-type.grid-attr', ['value' => $this->spec])); + $grid->column('part')->display(fn () => view('dcat-admin-goods::goods-type.grid-attr', ['value' => $this->part])); + }); + } - return AttrForm::make()->payload(['type_id' => $this->id, 'reset' => false, 'attr' => $this->attr]); - }); - $grid->column('spec')->display(fn () => view('dcat-admin-goods::goods-type.grid-attr', ['value' => $this->spec]))->modal(__('dcat-admin-goods::goods-type.fields.spec'), function (Modal $modal) { - $modal->icon(''); + protected function detail($id) + { + return Show::make($id, new GoodsType(), function (Show $show) { + $show->field('name'); + $show->field('attr')->view('dcat-admin-goods::goods-type.grid-attr'); + $show->field('spec')->view('dcat-admin-goods::goods-type.grid-attr'); + $show->field('part')->view('dcat-admin-goods::goods-type.grid-attr'); - return SpecForm::make()->payload(['type_id' => $this->id, 'reset' => false, 'spec' => $this->spec]); - }); - $grid->column('part')->display(fn () => view('dcat-admin-goods::goods-type.grid-attr', ['value' => $this->part]))->modal(__('dcat-admin-goods::goods-type.fields.part'), function (Modal $modal) { - $modal->icon(''); - - return PartForm::make()->payload(['type_id' => $this->id, 'reset' => false, 'part' => $this->part]); - }); + $show->disableDeleteButton(); + $show->disableEditButton(); }); } protected function form() { return Form::make(new GoodsType(), function (Form $form) { - $form->text('name'); + $form->block(12, function (Form\BlockForm $form) { + $form->title('基本设置'); + $form->text('name')->required(); + $form->showFooter(); + $form->backButton(); + $form->disableResetButton(); + }); - // $form->textarea('attr'); - // $form->textarea('spec'); - // $form->textarea('part'); + $form->block(12, function (Form\BlockForm $form) { + $form->title('属性'); + $form->attr('attr')->header(['分组', '名称'])->keys(['name']); + }); + + $form->block(12, function (Form\BlockForm $form) { + $form->title('规格'); + $form->attr('spec')->header(['名称', '可选值'])->keys(['name']); + }); + $form->block(12, function (Form\BlockForm $form) { + $form->title('配件'); + $form->attr('part')->header(['名称', '可选值'])->keys(['name']); + }); - $form->disableResetButton(); $form->disableCreatingCheck(); $form->disableViewCheck(); $form->disableEditingCheck(); $form->deleting(function (Form $form) { $data = $form->model()->toArray(); - foreach ($data as $item) { - $id = data_get($item, 'id'); - // 下面包含商品, 阻止删除 - if (Goods::where('type_id', $id)->exists()) { - return $form->response()->error('请先删除关联的商品'); - } + $ids = array_column($data, 'id'); + // 下面包含商品, 阻止删除 + if (Goods::whereIn('type_id', $ids)->exists()) { + return $form->response()->error('请先删除关联的商品'); } }); }); diff --git a/views/form/attr.blade.php b/views/form/attr.blade.php index b2f3482..cef8df4 100644 --- a/views/form/attr.blade.php +++ b/views/form/attr.blade.php @@ -1,5 +1,5 @@
- + @@ -10,6 +10,7 @@ + @if($value) @foreach($value as $index => $item) @@ -35,6 +36,7 @@ @endforeach + @endif ` - html += `` + html += `` html += '' html += `` for (let i = 1; i < headers.length; i++) {
{{ $item['name'] }}
@@ -70,7 +72,7 @@ element.on('click', '.add-attr-button', function () { var value = $('.add-attr-input').val() if (!value) { - return Dcat.swal.warning(`请填写 ${headers.name}`) + return Dcat.swal.warning(`请填写 ${headers[0]}`) } addGroup(value) @@ -170,7 +172,7 @@ function addGroup(id) { var tr = element.find('.add-attr-button').parents('tr') var html = `
${id}${id}