Browse Source

$class处理和isCreating处理

master
李可松 4 years ago
parent
commit
9e8ce7bd11
  1. 20
      app/AdminAgent/Controllers/AgentProductController.php
  2. 23
      app/AdminAgent/Forms/LoadSupplierSpec.php
  3. 35
      resources/js/select-supplier-product-change.js

20
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);

23
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);
}

35
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<fields.length; i++) {
var field = fields[i];
row.find('input.field_' + field).val(data[key][field]);
}
forms.append(row);
}

Loading…
Cancel
Save