From 9e8ce7bd117c2d3d9d832ce52dfaf08cdaa0ddc5 Mon Sep 17 00:00:00 2001 From: liapples Date: Wed, 29 Sep 2021 12:49:25 +0800 Subject: [PATCH] =?UTF-8?q?$class=E5=A4=84=E7=90=86=E5=92=8CisCreating?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/AgentProductController.php | 20 ++++++----- app/AdminAgent/Forms/LoadSupplierSpec.php | 23 +++++++++++- .../js/select-supplier-product-change.js | 35 +++++++------------ 3 files changed, 45 insertions(+), 33 deletions(-) diff --git a/app/AdminAgent/Controllers/AgentProductController.php b/app/AdminAgent/Controllers/AgentProductController.php index e11fb81..daa680d 100644 --- a/app/AdminAgent/Controllers/AgentProductController.php +++ b/app/AdminAgent/Controllers/AgentProductController.php @@ -196,14 +196,15 @@ class AgentProductController extends AdminController $form->editor('know'); $form->editor('content'); } else { - $form->hidden('type')->value(0)->default(0); - $js = file_get_contents(resource_path('js/select-supplier-product-change.js')); - $js = str_replace( - ['`{{url}}`', '`{{class}}`', '`{{profit}}`', '\\'], - [route(admin_api_route_name('form')), LoadSupplierSpec::class, AgentSetting::val(Admin::user()->id, 'profit'), '\\\\'], - $js - ); 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( + ['`{{url}}`', '`{{class}}`'], + [route(admin_api_route_name('form')), $class], + $js + ); $form->selectTable('product_id', '供应商产品') ->required() ->help('产品列表显示的是该产品的标题和图片') @@ -235,9 +236,10 @@ class AgentProductController extends AdminController .has-many-spec .input-group-prepend{display:none;} .has-many-spec .input-group>.form-control:not(:first-child){border-radius:.25rem;}'); $js = file_get_contents(resource_path('js/agent-spec-edit.js')); + $class = str_replace('\\', '\\\\', LoadSupplierSpec::class); $js = str_replace( - ['`{{url}}`', '`{{class}}`', '`{{profit}}`', '\\'], - [route(admin_api_route_name('form')), LoadSupplierSpec::class, AgentSetting::val(Admin::user()->id, 'profit'), '\\\\'], + ['`{{url}}`', '`{{class}}`'], + [route(admin_api_route_name('form')), $class], $js ); Admin::script($js); diff --git a/app/AdminAgent/Forms/LoadSupplierSpec.php b/app/AdminAgent/Forms/LoadSupplierSpec.php index 811977c..3f3ce19 100644 --- a/app/AdminAgent/Forms/LoadSupplierSpec.php +++ b/app/AdminAgent/Forms/LoadSupplierSpec.php @@ -2,6 +2,7 @@ namespace App\AdminAgent\Forms; +use App\Models\AgentProductSpec; use App\Models\ProductSpec; use Dcat\Admin\Widgets\Form; use Dcat\Admin\Traits\LazyWidget; @@ -15,7 +16,27 @@ class LoadSupplierSpec extends Form implements LazyRenderable public function handle(array $input) { $id = $input['product_id']; - $spec = ProductSpec::where('product_id', $id)->get()->toArray(); + if (!empty($input['agent_product_id'])) { + $agent_spec = AgentProductSpec::where('agent_product_id', $input['agent_product_id']) + ->pluck('product_spec_id')->toArray(); + $spec = ProductSpec::where('product_id', $id) + ->whereNotIn('id', $agent_spec ?? [0]) + ->get([ + 'id AS product_spec_id', + 'name AS supplier_name', + 'date AS supplier_date', + 'price AS supplier_price', + 'stock AS supplier_stock', + ])->toArray(); + } else { + $spec = ProductSpec::where('product_id', $id)->get([ + 'id AS product_spec_id', + 'name AS supplier_name', + 'date AS supplier_date', + 'price AS supplier_price', + 'stock AS supplier_stock', + ])->toArray(); + } return $this->response()->data($spec); } diff --git a/resources/js/select-supplier-product-change.js b/resources/js/select-supplier-product-change.js index 521bf1c..1dac925 100644 --- a/resources/js/select-supplier-product-change.js +++ b/resources/js/select-supplier-product-change.js @@ -1,25 +1,21 @@ $(function () { var template = $('template.spec-tpl').html(); + + //新增产品时,选择供应商产品载入规格 $('input[name="product_id"]').change(function () { $.ajax({ - url: '`{{url}`}', + url: '`{{url}}`', method: 'POST', - data: {product_id: $(this).val(), _form_: '`{{class}}`'}, + data: { + product_id: $(this).val(), + _form_: '`{{class}}`', + }, success: function (res) { - var fields = { - supplier_name: 'name', - supplier_date: 'date', - supplier_price: 'price', - supplier_stock: 'stock', - price: 'price', - stock: 'stock', - original_price: 'original_price', - product_spec_id: 'id' - }; + var fields = ['supplier_name', 'supplier_date', 'supplier_price', 'supplier_stock', 'product_spec_id']; var data = res.data; var forms = $('.has-many-spec-forms'); - //如果是原来数据库已经保存有id,调用click,提交的时候会同时删除数据库,否则直接remove掉,减小HTML体积 + //如果是已经保存有记录(.field_id不为空),调用click,提交的时候会同时删除数据库里的记录,否则直接remove掉,减小HTML体积 forms.children().each(function () { if ($(this).find('.field_id').val()) { $(this).find('.remove.btn').click(); @@ -30,16 +26,9 @@ $(function () { for (var key in data) { var row = $(template.replace(/new___LA_KEY__/g, key)); - for(var key2 in fields) { - var value = fields[key2], insert_value; - if (key2 === 'original_price') { - insert_value = (data[key][value] * 2).toFixed(2); - } else if (key2 === 'price') { - insert_value = (data[key][value] * (1 + `{{profit}}`)).toFixed(2); - } else { - insert_value = data[key][value]; - } - row.find('input.field_' + key2).val(insert_value); + for (var i=0; i