diff --git a/app/Admin/Controllers/ArticleCategoryController.php b/app/Admin/Controllers/ArticleCategoryController.php index eb0d6bc1..dbb5288f 100644 --- a/app/Admin/Controllers/ArticleCategoryController.php +++ b/app/Admin/Controllers/ArticleCategoryController.php @@ -111,16 +111,6 @@ class ArticleCategoryController extends AdminController $form->switch('is_recommend'); $form->number('sort')->default(0); - $form->saving(function (Form $form) { - if ($form->isEditing()) { - if (!is_null($form->is_show) && (bool) $form->is_show !== $form->model()->is_show) {//如果改变显示隐藏 - //影响下级分类; - $form->model()->descendants()->update(['is_show' => $form->is_show]); - //影响上级分类;能力有限无法实现 - } - } - }); - $form->display('created_at'); $form->display('updated_at'); }); diff --git a/app/Admin/Controllers/ProductSpuController.php b/app/Admin/Controllers/ProductSpuController.php index 4aee7e30..661a547d 100644 --- a/app/Admin/Controllers/ProductSpuController.php +++ b/app/Admin/Controllers/ProductSpuController.php @@ -94,7 +94,6 @@ class ProductSpuController extends AdminController return Form::make(new ProductSpu(), function (Form $form) { $form->display('id'); - if ($form->isCreating()) { $form->select('one_category')->options(admin_route('api.product_categories'))->load('two_category', admin_route('api.product_categories')); $form->select('two_category')->load('category_id', admin_route('api.product_categories')); @@ -121,6 +120,9 @@ class ProductSpuController extends AdminController $form->currency('vip_price')->symbol('¥'); $form->select('attr_group')->options(ProductGroup::all()->pluck('name', 'id')); $form->selectAttr('attrs')->listen('attr_group'); + if ($form->isCreating()) { + $form->selectSpec('specs')->listen('attr_group'); + } $form->ignore(['one_category', 'two_category', 'attr_group']); $form->display('created_at'); diff --git a/app/Admin/Extensions/Form/Product/SelectSpec.php b/app/Admin/Extensions/Form/Product/SelectSpec.php index 82bab361..d8e7f288 100644 --- a/app/Admin/Extensions/Form/Product/SelectSpec.php +++ b/app/Admin/Extensions/Form/Product/SelectSpec.php @@ -35,7 +35,23 @@ class SelectSpec extends Field */ protected function prepareInputValue($value) { - return $value; + $specs = $value; + if ($specs) { + $specs =json_decode($specs, true); + foreach ($specs as $key=> &$item) { + $item['items'] = array_filter(array_map(function ($value) { + if (!empty($value['value'])) { + return $value; + } + }, $item['specs'])); + unset($item['specs']); + //如果该组无值,则删除该组 + if (count($item['items']) < 1) { + unset($specs[$key]); + } + } + } + return $specs; } /** diff --git a/app/Models/ArticleCategory.php b/app/Models/ArticleCategory.php index 7b5d1a9c..b4ae547c 100644 --- a/app/Models/ArticleCategory.php +++ b/app/Models/ArticleCategory.php @@ -30,4 +30,18 @@ class ArticleCategory extends Model { return $this->parent_id; } + + /** + * {@inheritdoc} + */ + protected static function booted() + { + parent::updated(function ($articleCategory) { + if ($articleCategory->wasChanged('is_show')) {//如果改变显示隐藏 + //影响下级分类; + $articleCategory->descendants()->update(['is_show' => $articleCategory->is_show]); + //影响上级分类;能力有限无法实现 + } + }); + } } diff --git a/app/Models/ProductSpu.php b/app/Models/ProductSpu.php index 37435fc2..c590faef 100644 --- a/app/Models/ProductSpu.php +++ b/app/Models/ProductSpu.php @@ -41,4 +41,9 @@ class ProductSpu extends Model 'sales', 'release_at', ]; + + public function specs() + { + return $this->hasMany(ProductSpuSpec::class, 'product_spu_id'); + } } diff --git a/app/Models/ProductSpuSpec.php b/app/Models/ProductSpuSpec.php new file mode 100644 index 00000000..61056a44 --- /dev/null +++ b/app/Models/ProductSpuSpec.php @@ -0,0 +1,22 @@ + JsonArray::class, + ]; + + protected $fillable = [ + 'product_spu_id', + 'name', + 'items', + ]; +} diff --git a/resources/views/admin/form/product-select-attr.blade.php b/resources/views/admin/form/product-select-attr.blade.php index d655e634..df5a4a55 100644 --- a/resources/views/admin/form/product-select-attr.blade.php +++ b/resources/views/admin/form/product-select-attr.blade.php @@ -16,7 +16,7 @@
|
-
+
-
-
+
+
|
-
+
-
|
+
+
+
+
+ |
|
|
+
+ 新增
+
+
+ |
+ |||