diff --git a/app/AdminAgent/Controllers/AgentProductController.php b/app/AdminAgent/Controllers/AgentProductController.php index daa680d..174066f 100644 --- a/app/AdminAgent/Controllers/AgentProductController.php +++ b/app/AdminAgent/Controllers/AgentProductController.php @@ -84,7 +84,13 @@ class AgentProductController extends AdminController ->using([ProductStatus::SOLD_OUT => 0, ProductStatus::ON_SALE => 1]) ->switch() ->else() - ->using(ProductStatus::array()); + ->using(ProductStatus::array()) + ->dot([ + ProductStatus::ON_SALE => 'success', + ProductStatus::UNAUDITED => '', + ProductStatus::REFUSE => 'danger', + ProductStatus::SOLD_OUT => 'warning', + ], 'primary'); if (Admin::user()->type != AgentType::CLUSTER) { $grid->column('is_rec')->switch()->help('推荐后将在“我的”页面下方显示'); } @@ -196,8 +202,8 @@ class AgentProductController extends AdminController $form->editor('know'); $form->editor('content'); } else { + $form->hidden('type')->value(0); if ($form->isCreating()) { - $form->hidden('type')->value(0); $js = file_get_contents(resource_path('js/select-supplier-product-change.js')); $class = str_replace('\\', '\\\\', LoadSupplierSpec::class); $js = str_replace( @@ -225,9 +231,11 @@ class AgentProductController extends AdminController $form->date('supplier_date', '日期')->disable()->customFormat(fn() => $this->product_spec['date'] ?? '供应商已删除规格'); $form->text('supplier_stock', '供应商库存')->disable()->customFormat(fn() => $this->product_spec['stock'] ?? 0); $form->text('supplier_price', '供应商价')->disable()->customFormat(fn() => $this->product_spec['price'] ?? 0); - $form->text('stock', '您的库存')->customFormat(fn() => isset($this->product_spec['stock'], $this->stock) && $this->stock > $this->product_spec['stock'] ? $this->product_spec['stock'] : $this->stock); - $form->text('original_price', '您的原价'); - $form->text('price', '您的售价'); + $form->text('stock', '您的库存')->required() + //如果库存大于供应商库存,则取供应商库存 + ->customFormat(fn() => isset($this->product_spec['stock'], $this->stock) && $this->stock > $this->product_spec['stock'] ? $this->product_spec['stock'] : $this->stock); + $form->text('original_price', '您的原价')->required(); + $form->text('price', '您的售价')->required(); Admin::style('.has-many-spec .add.btn{display:none;} .has-many-spec .field_date{width:100px!important;} .has-many-spec .col-md-12{padding:0;} @@ -238,8 +246,8 @@ class AgentProductController extends AdminController $js = file_get_contents(resource_path('js/agent-spec-edit.js')); $class = str_replace('\\', '\\\\', LoadSupplierSpec::class); $js = str_replace( - ['`{{url}}`', '`{{class}}`'], - [route(admin_api_route_name('form')), $class], + ['`{{url}}`', '`{{class}}`', '`{{product_id}}`', '`{{agent_product_id}}`'], + [route(admin_api_route_name('form')), $class, $form->model()->product_id, $form->model()->id], $js ); Admin::script($js); @@ -373,12 +381,11 @@ class AgentProductController extends AdminController if ($form->stock !== null || $form->status !== null) { $ids = explode(',', $form->model()->product_ids); - $count = Product::where([ - ['status', '=', ProductStatus::ON_SALE], - ['stock', '>=', $form->stock ?? $form->model()->stock], - ])->whereIn('id', $ids)->count(); - if (count($ids) != $count) { - return $form->response()->error('供应商产品已下架或库存小于你设置的库存' . $form->stock)->refresh(); + $exists = Product::where([ + ['status', '<>', ProductStatus::ON_SALE], + ])->whereIn('id', $ids)->exists(); + if ($exists) { + return $form->response()->error('供应商产品已下架')->refresh(); } //修改库存 @@ -439,7 +446,7 @@ class AgentProductController extends AdminController //将供应商产品写入title,pictures,know,content $product = Product::find($form->product_id); if ($product->status != ProductStatus::ON_SALE) { - return $form->response()->error('产品ID '. $form->product_id .' 已下架'); + return $form->response()->error('供应商产品 '. $product->title .' 已下架'); /*} else if ($product->stock < $form->stock) { return $form->response()->error("供应商当前库存为{$product->stock},你设置的库存不能超过该数值");*/ } else if ($form->price < $product->price) { diff --git a/app/AdminSupplier/Controllers/ProductController.php b/app/AdminSupplier/Controllers/ProductController.php index 7b12f4b..4ffb58e 100644 --- a/app/AdminSupplier/Controllers/ProductController.php +++ b/app/AdminSupplier/Controllers/ProductController.php @@ -38,12 +38,18 @@ class ProductController extends AdminController $grid->column('original_price'); $grid->column('stock'); $grid->column('sale'); - $grid->column('status') - /*->if(fn() => in_array($this->status, [ProductStatus::SOLD_OUT, ProductStatus::ON_SALE])) + $grid->column('status')->help('切换开关可改变上下架状态') + ->if(fn() => in_array($this->status, [ProductStatus::SOLD_OUT, ProductStatus::ON_SALE])) ->using([ProductStatus::SOLD_OUT => 0, ProductStatus::ON_SALE => 1]) ->switch() - ->else()*/ - ->using(ProductStatus::array()); + ->else() + ->using(ProductStatus::array()) + ->dot([ + ProductStatus::ON_SALE => 'success', + ProductStatus::UNAUDITED => '', + ProductStatus::REFUSE => 'danger', + ProductStatus::SOLD_OUT => 'warning', + ], 'primary'); $grid->column('verify_mobile','核销员手机'); $grid->column('created_at'); $grid->column('updated_at'); @@ -110,10 +116,20 @@ class ProductController extends AdminController $options = Category::selectOptions(fn($query) => $query->where('agent_id', 0)); $form->select('category_id')->options(array_slice($options, 1, null, true))->required(); + + //信息收集表单 + $options = DiyForm::where('supplier_id', Admin::user()->id)->pluck('name', 'id'); + if ($options->isEmpty()) { + $form->select('diy_form_id', '信息收集表单') + ->help('提示:信息收集表单为空,请前往“信息收集表单”处新增') + ->options($options)->required(); + } else { + $form->select('diy_form_id', '信息收集表单')->options($options)->required(); + } + $form->text('title')->required(); // $form->currency('price')->symbol('¥')->required(); // $form->currency('original_price')->symbol('¥')->required(); - $form->number('service_persons')->min(1)->required(); // $form->number('stock')->required(); $form->hasMany('spec', function (NestedForm $form) { $form->hidden('id'); @@ -130,6 +146,7 @@ class ProductController extends AdminController .has-many-spec .input-group>.form-control:not(:first-child){border-radius:.25rem;}'); Admin::script(file_get_contents(resource_path('js/supplier-batch-add-spec.js'))); })->useTable()->required(); + $form->number('service_persons')->min(1)->required(); if ($form->isEditing() && in_array($form->model()->status, [ProductStatus::SOLD_OUT, ProductStatus::ON_SALE])) { $form->radio('status')->options([1 => '上架', -2 => '下架'])->default(1); } @@ -138,10 +155,6 @@ class ProductController extends AdminController $form->editor('content')->required(); $form->mobile('verify_mobile')->required(); - //信息收集表单 - $options = DiyForm::where('supplier_id', Admin::user()->id)->pluck('name', 'id'); - $form->select('diy_form_id', '信息收集表单')->options($options)->required(); - //扩展字段 $publish_type = array_intersect_key( admin_trans('product.options.publish_type'), @@ -249,6 +262,15 @@ class ProductController extends AdminController //用户可编辑的状态 $user_status = [ProductStatus::SOLD_OUT, ProductStatus::ON_SALE]; + //列表切换上下架按钮 + if ($form->isEditing() && !is_null($form->status) && is_null($form->title)) { + if (in_array($form->model()->status, $user_status)) { + $form->status = $form->status == 1 ? ProductStatus::ON_SALE : ProductStatus::SOLD_OUT; + $form->model()->update(['status' => $form->status]); + return $form->response()->success('更新成功')->refresh(); + } + } + //规格处理 if (!$form->spec || !$spec = array_filter($form->spec, fn($v) => !$v['_remove_'])) { return $form->response()->error('请输入产品规格'); diff --git a/resources/js/agent-spec-edit.js b/resources/js/agent-spec-edit.js index 5c1cf02..b193c56 100644 --- a/resources/js/agent-spec-edit.js +++ b/resources/js/agent-spec-edit.js @@ -1,57 +1,57 @@ $(function () { $('.has-many-spec .add.btn') - .after('