起购数和限购数提升到商品规格级别
parent
ae419296d0
commit
234d207873
|
|
@ -59,6 +59,8 @@
|
|||
<th>{{:MyLang('common_service.goods.form_spec_thead_price_title')}}</th>
|
||||
<th>{{:MyLang('common_service.goods.form_spec_thead_original_price_title')}}</th>
|
||||
<th>{{:MyLang('common_service.goods.form_spec_thead_inventory_title')}}</th>
|
||||
<th>{{:MyLang('common_service.goods.form_spec_thead_buy_min_number_title')}}</th>
|
||||
<th>{{:MyLang('common_service.goods.form_spec_thead_buy_max_number_title')}}</th>
|
||||
<th>{{:MyLang('common_service.goods.form_spec_thead_weight_title')}}</th>
|
||||
<th>{{:MyLang('common_service.goods.form_spec_thead_volume_title')}}</th>
|
||||
<th>{{:MyLang('common_service.goods.form_spec_thead_coding_title')}}</th>
|
||||
|
|
@ -79,6 +81,10 @@
|
|||
<td class="am-text-middle">{{if isset($v['data']['price'])}}{{$v.data.price}}{{/if}}</td>
|
||||
<td class="am-text-middle">{{if isset($v['data']['original_price']) and $v['data']['original_price'] gt 0}}{{$v.data.original_price}}{{/if}}</td>
|
||||
<td class="am-text-middle">{{if isset($v['data']['inventory'])}}{{$v.data.inventory}}{{/if}}</td>
|
||||
<td class="am-text-middle">{{if isset($v['data']['buy_min_number']) and $v['data']['buy_min_number']
|
||||
gt 0}}{{$v.data.buy_min_number}}{{/if}}</td>
|
||||
<td class="am-text-middle">{{if isset($v['data']['buy_max_number']) and $v['data']['buy_max_number']
|
||||
gt 0}}{{$v.data.buy_max_number}}{{/if}}</td>
|
||||
<td class="am-text-middle">{{if isset($v['data']['weight']) and $v['data']['weight']
|
||||
gt 0}}{{$v.data.weight}}{{/if}}</td>
|
||||
<td class="am-text-middle">{{if isset($v['data']['volume']) and $v['data']['volume']
|
||||
|
|
|
|||
|
|
@ -135,21 +135,6 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="am-cf">
|
||||
<div class="am-u-sm-6 am-padding-horizontal-0">
|
||||
<div class="am-form-group">
|
||||
<label>{{:MyLang('common_service.goods.form_item_buy_min_number')}}<span class="am-form-group-label-tips-must">*</span></label>
|
||||
<input type="number" name="buy_min_number" placeholder="{{:MyLang('common_service.goods.form_item_buy_min_number_message')}}" min="1" max="100000000" data-validation-message="{{:MyLang('common_service.goods.form_item_buy_min_number_message')}}" class="am-radius" value="{{if empty($data) or empty($data['buy_min_number'])}}1{{else /}}{{$data.buy_min_number}}{{/if}}" required />
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-u-sm-6 am-padding-horizontal-0">
|
||||
<div class="am-form-group">
|
||||
<label>{{:MyLang('common_service.goods.form_item_buy_max_number')}}{{if is_array(MyLang('common_service.goods.form_item_buy_max_number_tips'))}}<a href="javascript:;" class="am-icon-question-circle am-text-warning am-margin-left-sm" data-am-popover="{content: '{{:implode('<br />', MyLang('common_service.goods.form_item_buy_max_number_tips'))}}', trigger: 'hover focus', theme: 'sm'}"></a>{{/if}}</label>
|
||||
<input type="number" name="buy_max_number" placeholder="{{:MyLang('common_service.goods.form_item_buy_max_number_message')}}" min="0" max="100000000" data-validation-message="{{:MyLang('common_service.goods.form_item_buy_max_number_message')}}" class="am-radius" {{if !empty($data['buy_max_number'])}} value="{{$data.buy_max_number}}"{{/if}} />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="am-cf">
|
||||
<div class="am-u-md-6 am-padding-horizontal-0">
|
||||
<div class="am-form-group">
|
||||
|
|
|
|||
|
|
@ -109,6 +109,14 @@
|
|||
<span>{{:MyLang('common_service.goods.form_spec_thead_original_price_title')}}</span>
|
||||
<i class="am-icon-edit"></i>
|
||||
</th>
|
||||
<th>
|
||||
<span>{{:MyLang('common_service.goods.form_spec_thead_buy_min_number_title')}}</span>
|
||||
<i class="am-icon-edit"></i>
|
||||
</th>
|
||||
<th>
|
||||
<span>{{:MyLang('common_service.goods.form_spec_thead_buy_max_number_title')}}</span>
|
||||
<i class="am-icon-edit"></i>
|
||||
</th>
|
||||
<th>
|
||||
<span>{{:MyLang('common_service.goods.form_spec_thead_weight_title')}}</span>
|
||||
<i class="am-icon-edit"></i>
|
||||
|
|
@ -133,25 +141,31 @@
|
|||
{{if empty($specifications['value'])}}
|
||||
<tr class="line-0" data-line-tag=".line-0">
|
||||
<td class="am-text-middle value-start">
|
||||
<input type="text" name="specifications_price[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_price_title')}}" class="am-radius" pattern="{{$default_price_regex}}" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_price_message')}}" required />
|
||||
<input type="text" name="specifications_price[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_price_title')}}" class="am-radius" pattern="{{$default_price_regex}}" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_price_message')}}" data-is-clearout="0" required />
|
||||
</td>
|
||||
<td class="am-text-middle">
|
||||
<input type="text" name="specifications_original_price[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_original_price_title')}}" class="am-radius" pattern="{{$default_price_regex}}" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_original_price_message')}}" />
|
||||
<input type="text" name="specifications_original_price[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_original_price_title')}}" class="am-radius" pattern="{{$default_price_regex}}" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_original_price_message')}}" data-is-clearout="0" />
|
||||
</td>
|
||||
<td class="am-text-middle">
|
||||
<input type="number" name="specifications_weight[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_weight_title')}}" class="am-radius" min="0.00" max="100000000.00" step="0.01" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_weight_message')}}" />
|
||||
<input type="number" name="specifications_buy_min_number[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_buy_min_number_title')}}" class="am-radius" min="0" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_buy_min_number_message')}}" data-is-clearout="0" />
|
||||
</td>
|
||||
<td class="am-text-middle">
|
||||
<input type="number" name="specifications_volume[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_volume_title')}}" class="am-radius" min="0.00" max="100000000.00" step="0.01" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_volume_message')}}" />
|
||||
<input type="number" name="specifications_buy_max_number[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_buy_max_number_title')}}" class="am-radius" min="0" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_buy_max_number_message')}}" data-is-clearout="0" />
|
||||
</td>
|
||||
<td class="am-text-middle">
|
||||
<input type="text" name="specifications_coding[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_coding_title')}}" class="am-radius" maxlength="60" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_coding_message')}}" />
|
||||
<input type="number" name="specifications_weight[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_weight_title')}}" class="am-radius" min="0.00" max="100000000.00" step="0.01" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_weight_message')}}" data-is-clearout="0" />
|
||||
</td>
|
||||
<td class="am-text-middle">
|
||||
<input type="text" name="specifications_barcode[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_barcode_title')}}" class="am-radius" maxlength="60" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_barcode_message')}}" />
|
||||
<input type="number" name="specifications_volume[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_volume_title')}}" class="am-radius" min="0.00" max="100000000.00" step="0.01" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_volume_message')}}" data-is-clearout="0" />
|
||||
</td>
|
||||
<td class="am-text-middle">
|
||||
<input type="hidden" name="specifications_extends[]" value="" class="line-extend-input" />
|
||||
<input type="text" name="specifications_coding[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_coding_title')}}" class="am-radius" maxlength="60" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_coding_message')}}" data-is-clearout="0" />
|
||||
</td>
|
||||
<td class="am-text-middle">
|
||||
<input type="text" name="specifications_barcode[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_barcode_title')}}" class="am-radius" maxlength="60" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_barcode_message')}}" data-is-clearout="0" />
|
||||
</td>
|
||||
<td class="am-text-middle">
|
||||
<input type="hidden" name="specifications_extends[]" class="line-extend-input" />
|
||||
<a href="javascript:;" class="am-text-xs am-text-secondary line-extend-btn">{{:MyLang('edit_title')}}</a>
|
||||
</td>
|
||||
<td class="am-text-middle">
|
||||
|
|
@ -171,28 +185,34 @@
|
|||
{{switch v.data_type}}
|
||||
{{case spec}}
|
||||
<td class="am-text-middle table-value table-value-{{$v.data.key}}">
|
||||
<input type="text" name="specifications_value_{{$v.data.key}}[]" placeholder="{{:MyLang('common_service.goods.form_spec_value_title')}}" value="{{$v.data.value}}" data-validation-message="{{:MyLang('common_service.goods.form_spec_value_message')}}" required />
|
||||
<input type="text" name="specifications_value_{{$v.data.key}}[]" placeholder="{{:MyLang('common_service.goods.form_spec_value_title')}}" value="{{$v.data.value}}" data-validation-message="{{:MyLang('common_service.goods.form_spec_value_message')}}" data-is-clearout="0" required />
|
||||
</td>
|
||||
{{/case}}
|
||||
|
||||
{{case base}}
|
||||
<td class="am-text-middle value-start">
|
||||
<input type="text" name="specifications_price[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_price_title')}}" class="am-radius" pattern="{{$default_price_regex}}" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_price_message')}}" value="{{if isset($v['data']['price'])}}{{$v.data.price}}{{/if}}" required />
|
||||
<input type="text" name="specifications_price[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_price_title')}}" class="am-radius" pattern="{{$default_price_regex}}" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_price_message')}}" value="{{if isset($v['data']['price'])}}{{$v.data.price}}{{/if}}" data-is-clearout="0" required />
|
||||
</td>
|
||||
<td class="am-text-middle">
|
||||
<input type="text" name="specifications_original_price[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_original_price_title')}}" class="am-radius" pattern="{{$default_price_regex}}" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_original_price_message')}}" value="{{if $v['data']['original_price'] gt 0}}{{$v.data.original_price}}{{/if}}" />
|
||||
<input type="text" name="specifications_original_price[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_original_price_title')}}" class="am-radius" pattern="{{$default_price_regex}}" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_original_price_message')}}" value="{{if $v['data']['original_price'] gt 0}}{{$v.data.original_price}}{{/if}}" data-is-clearout="0" />
|
||||
</td>
|
||||
<td class="am-text-middle">
|
||||
<input type="number" name="specifications_weight[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_weight_title')}}" class="am-radius" min="0.00" max="100000000.00" step="0.01" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_weight_message')}}" value="{{if isset($v['data']['weight']) and $v['data']['weight'] gt 0}}{{$v.data.weight}}{{/if}}" />
|
||||
<input type="number" name="specifications_buy_min_number[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_buy_min_number_title')}}" class="am-radius" min="0" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_buy_min_number_message')}}" value="{{if !empty($v['data']['buy_min_number'])}}{{$v.data.buy_min_number}}{{/if}}" data-is-clearout="0" />
|
||||
</td>
|
||||
<td class="am-text-middle">
|
||||
<input type="number" name="specifications_volume[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_volume_title')}}" class="am-radius" max="100000000" min="0.00" max="100000000.00" step="0.01" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_volume_message')}}" value="{{if isset($v['data']['volume']) and $v['data']['volume'] gt 0}}{{$v.data.volume}}{{/if}}" />
|
||||
<input type="number" name="specifications_buy_max_number[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_buy_max_number_title')}}" class="am-radius" min="0" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_buy_max_number_message')}}" value="{{if !empty($v['data']['buy_max_number'])}}{{$v.data.buy_max_number}}{{/if}}" data-is-clearout="0" />
|
||||
</td>
|
||||
<td class="am-text-middle">
|
||||
<input type="text" name="specifications_coding[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_coding_title')}}" class="am-radius" maxlength="60" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_coding_message')}}" value="{{if isset($v['data']['coding'])}}{{$v.data.coding}}{{/if}}" />
|
||||
<input type="number" name="specifications_weight[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_weight_title')}}" class="am-radius" min="0.00" max="100000000.00" step="0.01" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_weight_message')}}" value="{{if isset($v['data']['weight']) and $v['data']['weight'] gt 0}}{{$v.data.weight}}{{/if}}" data-is-clearout="0" />
|
||||
</td>
|
||||
<td class="am-text-middle">
|
||||
<input type="text" name="specifications_barcode[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_barcode_title')}}" class="am-radius" maxlength="60" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_barcode_message')}}" value="{{if isset($v['data']['barcode'])}}{{$v.data.barcode}}{{/if}}" />
|
||||
<input type="number" name="specifications_volume[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_volume_title')}}" class="am-radius" max="100000000" min="0.00" max="100000000.00" step="0.01" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_volume_message')}}" value="{{if isset($v['data']['volume']) and $v['data']['volume'] gt 0}}{{$v.data.volume}}{{/if}}" data-is-clearout="0" />
|
||||
</td>
|
||||
<td class="am-text-middle">
|
||||
<input type="text" name="specifications_coding[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_coding_title')}}" class="am-radius" maxlength="60" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_coding_message')}}" value="{{if isset($v['data']['coding'])}}{{$v.data.coding}}{{/if}}" data-is-clearout="0" />
|
||||
</td>
|
||||
<td class="am-text-middle">
|
||||
<input type="text" name="specifications_barcode[]" placeholder="{{:MyLang('common_service.goods.form_spec_thead_barcode_title')}}" class="am-radius" maxlength="60" data-validation-message="{{:MyLang('common_service.goods.form_spec_thead_barcode_message')}}" value="{{if isset($v['data']['barcode'])}}{{$v.data.barcode}}{{/if}}" data-is-clearout="0" />
|
||||
</td>
|
||||
<td class="am-text-middle">
|
||||
<input type="hidden" name="specifications_extends[]" value="{{$v.data.extends}}" class="line-extend-input" />
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ class Buy extends Common
|
|||
$buy_data = MySession('buy_post_data');
|
||||
if(empty($buy_data) || (empty($buy_data['goods_data']) && empty($buy_data['ids'])))
|
||||
{
|
||||
MyViewAssign('msg', MyLang('buy.gooods_data_no_data_tips'));
|
||||
MyViewAssign('msg', MyLang('goods_data_empty_tips'));
|
||||
return MyView('public/tips_error');
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -125,7 +125,6 @@ return [
|
|||
// 基础
|
||||
'browser_seo_title' => 'Order Confirm',
|
||||
'exhibition_not_allow_submit_tips' => 'Order submission is not allowed for display type',
|
||||
'gooods_data_no_data_tips' => 'Goods Info is empty',
|
||||
'buy_item_order_title' => 'Order Info',
|
||||
'buy_item_payment_title' => 'Choice Payment',
|
||||
'confirm_delivery_address_name' => 'Confirm delivery address',
|
||||
|
|
|
|||
|
|
@ -125,7 +125,6 @@ return [
|
|||
// 基础
|
||||
'browser_seo_title' => '订单确认',
|
||||
'exhibition_not_allow_submit_tips' => '展示型不允许提交订单',
|
||||
'gooods_data_no_data_tips' => '商品信息为空',
|
||||
'buy_item_order_title' => '订单信息',
|
||||
'buy_item_payment_title' => '选择支付',
|
||||
'confirm_delivery_address_name' => '确认收货地址',
|
||||
|
|
|
|||
|
|
@ -45,10 +45,10 @@
|
|||
<div class="spec-options am-margin-top-sm">
|
||||
<div class="am-input-group am-input-group-sm number-operate">
|
||||
<span class="am-input-group-label am-radius stock-submit" data-type="min">-</span>
|
||||
<input type="number" name="stock" class="am-form-field am-text-center" value="{{$goods.buy_min_number}}" min="{{$goods.buy_min_number}}" max="{{if empty($goods['buy_max_number'])}}{{$goods.inventory}}{{else /}}{{$goods.buy_max_number}}{{/if}}" data-original-max="{{if empty($goods['buy_max_number'])}}{{$goods.inventory}}{{else /}}{{$goods.buy_max_number}}{{/if}}" data-is-clearout="0" />
|
||||
<input type="number" name="stock" class="am-form-field am-text-center" value="{{$goods.buy_min_number}}" min="{{$goods.buy_min_number}}" max="{{if empty($goods['buy_max_number'])}}{{$goods.inventory}}{{else /}}{{$goods.buy_max_number}}{{/if}}" data-original-buy-min-number="{{$goods.buy_min_number}}" data-original-buy-max-number="{{$goods.buy_max_number}}" data-is-clearout="0" />
|
||||
<span class="am-input-group-label am-radius stock-submit" data-type="add">+</span>
|
||||
</div>
|
||||
<span class="am-margin-left-sm stock-tips">{{:MyLang('inventory_title')}}<span class="stock" data-original-stock="{{$goods.inventory}}" data-min-limit="{{$goods.buy_min_number}}" data-max-limit="{{$goods.buy_max_number}}" data-unit="{{$goods.inventory_unit}}">{{$goods.inventory}}</span>{{$goods.inventory_unit}}</span>
|
||||
<span class="am-margin-left-sm stock-tips">{{:MyLang('inventory_title')}}<span class="stock" data-original-max="{{if empty($goods['buy_max_number'])}}{{$goods.inventory}}{{else /}}{{$goods.buy_max_number}}{{/if}}" data-original-inventory="{{$goods.inventory}}" data-min-limit="{{$goods.buy_min_number}}" data-max-limit="{{$goods.buy_max_number}}" data-unit="{{$goods.inventory_unit}}">{{$goods.inventory}}</span>{{$goods.inventory_unit}}</span>
|
||||
</div>
|
||||
</div>
|
||||
{{else /}}
|
||||
|
|
|
|||
|
|
@ -378,10 +378,10 @@
|
|||
<dd>
|
||||
<div class="am-input-group am-input-group-sm number-tag">
|
||||
<button class="am-input-group-label am-radius" id="min" type="button">-</button>
|
||||
<input type="number" class="am-form-field" value="{{$goods.buy_min_number}}" id="text_box" min="{{$goods.buy_min_number}}" max="{{if empty($goods['buy_max_number'])}}{{$goods.inventory}}{{else /}}{{$goods.buy_max_number}}{{/if}}" data-original-max="{{$goods.inventory}}" data-ajax-url="{{:MyUrl('index/goods/stock')}}" />
|
||||
<input type="number" class="am-form-field" value="{{$goods.buy_min_number}}" id="text_box" min="{{$goods.buy_min_number}}" max="{{if empty($goods['buy_max_number'])}}{{$goods.inventory}}{{else /}}{{$goods.buy_max_number}}{{/if}}" data-original-buy-min-number="{{$goods.buy_min_number}}" data-original-buy-max-number="{{$goods.buy_max_number}}" data-is-clearout="0" />
|
||||
<button class="am-input-group-label am-radius" id="add" type="button">+</button>
|
||||
</div>
|
||||
<span class="tb-hidden stock-tips"><span>{{:MyLang('inventory_title')}}</span><span class="stock" data-original-stock="{{$goods.inventory}}" data-min-limit="{{$goods.buy_min_number}}" data-max-limit="{{$goods.buy_max_number}}" data-unit="{{$goods.inventory_unit}}">{{$goods.inventory}}</span><span>{{$goods.inventory_unit}}</span></span>
|
||||
<span class="tb-hidden stock-tips"><span>{{:MyLang('inventory_title')}}</span><span class="stock" data-original-max="{{if empty($goods['buy_max_number'])}}{{$goods.inventory}}{{else /}}{{$goods.buy_max_number}}{{/if}}" data-original-inventory="{{$goods.inventory}}" data-min-limit="{{$goods.buy_min_number}}" data-max-limit="{{$goods.buy_max_number}}" data-unit="{{$goods.inventory_unit}}">{{$goods.inventory}}</span><span>{{$goods.inventory_unit}}</span></span>
|
||||
</dd>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -111,6 +111,7 @@
|
|||
var __load_map_type__ = '{{$load_map_type}}';
|
||||
var __goods_spec_type_url__ = '{{:MyUrl("index/goods/spectype")}}';
|
||||
var __goods_spec_detail_url__ = '{{:MyUrl("index/goods/specdetail")}}';
|
||||
var __goods_stock_url__ = '{{:MyUrl("index/goods/stock")}}';
|
||||
var __goods_cart_save_url__ = '{{:MyUrl("index/cart/save")}}';
|
||||
var __goods_cart_info_url__ = '{{:MyUrl("index/goods/cartinfo")}}';
|
||||
// 语言定义(用于js调用、模板引擎直接使用$lang_data.xxx获取对应语言即可)
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@
|
|||
{{/if}}
|
||||
|
||||
<!-- 字段选择 -->
|
||||
{{if !empty($admin) and (!isset($form_table['base']['is_fields_sel']) or $form_table['base']['is_fields_sel'] eq 1)}}
|
||||
{{if !empty($user) and (!isset($form_table['base']['is_fields_sel']) or $form_table['base']['is_fields_sel'] eq 1)}}
|
||||
<div class="am-fr am-nbfc">
|
||||
<button type="button" class="am-btn am-btn-default am-radius am-btn-xs am-icon-cog" data-am-modal="{target: '#form-table-fields-popup'}"> {{:MyLang('setup_title')}}</button>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -456,6 +456,7 @@ return [
|
|||
'goods_category_title' => 'Goods Category',
|
||||
'goods_inventory_insufficient_min_number_tips' => 'Initial purchase quantity of insufficient inventory',
|
||||
'goods_more_total_tips' => '{:total} items in total',
|
||||
'goods_data_empty_tips' => 'Goods Info is empty',
|
||||
// 验证码相关
|
||||
'verify_type_error_tips' => 'Wrong verification type',
|
||||
'verify_code_empty_tips' => 'Verification code cannot be empty',
|
||||
|
|
@ -1403,13 +1404,6 @@ return [
|
|||
],
|
||||
'form_item_give_integral_placeholder' => 'Purchase free points',
|
||||
'form_item_give_integral_message' => 'Purchase a number with a percentage of 0 to 100 points',
|
||||
'form_item_buy_min_number' => 'Minimum purchase quantity',
|
||||
'form_item_buy_min_number_message' => 'The minimum purchase quantity ranges from 1 to 100000000',
|
||||
'form_item_buy_max_number' => 'Maximum quantity of single purchase',
|
||||
'form_item_buy_max_number_tips' => [
|
||||
'1. Single maximum value 100000000',
|
||||
'2. No limit if less than or equal to 0 or empty',
|
||||
],
|
||||
'form_item_buy_max_number_message' => 'The maximum number of single purchase ranges from 1 to 100000000',
|
||||
'form_item_site_type' => 'Goods Type',
|
||||
'form_item_site_type_tips' => [
|
||||
|
|
@ -1458,6 +1452,10 @@ return [
|
|||
'form_spec_thead_price_message' => 'Please fill in valid sales amount',
|
||||
'form_spec_thead_original_price_title' => 'Original price (yuan)',
|
||||
'form_spec_thead_original_price_message'=> 'Please fill in valid original price',
|
||||
'form_spec_thead_buy_min_number_title' => 'Min number',
|
||||
'form_spec_thead_buy_min_number_message'=> 'Please fill in the valid starting number',
|
||||
'form_spec_thead_buy_max_number_title' => 'Max number',
|
||||
'form_spec_thead_buy_max_number_message'=> 'Please fill in the valid purchase limit',
|
||||
'form_spec_thead_inventory_title' => 'Inventory',
|
||||
'form_spec_thead_weight_title' => 'Weight (kg)',
|
||||
'form_spec_thead_weight_message' => 'Specification and weight 0~100000000',
|
||||
|
|
@ -1521,6 +1519,7 @@ return [
|
|||
'delete_spec_type_fail_tips' => 'Specification type deletion failed',
|
||||
'delete_spec_value_fail_tips' => 'Specification value deletion failed',
|
||||
'delete_spec_base_fail_tips' => 'Failed to delete the specification base',
|
||||
'delete_goods_category_join_fail_tips' => 'Failed to delete the commodity association classification',
|
||||
'delete_goods_photo_fail_tips' => 'Photo album deletion failed',
|
||||
'delete_app_content_fail_tips' => 'Mobile content deletion failed',
|
||||
'delete_params_fail_tips' => 'Parameter deletion failed',
|
||||
|
|
|
|||
|
|
@ -457,6 +457,7 @@ return [
|
|||
'goods_category_title' => '商品分类',
|
||||
'goods_inventory_insufficient_min_number_tips' => '库存不足起购数',
|
||||
'goods_more_total_tips' => '共 {:total} 种商品',
|
||||
'goods_data_empty_tips' => '商品信息为空',
|
||||
// 验证码相关
|
||||
'verify_type_error_tips' => '验证类型有误',
|
||||
'verify_code_empty_tips' => '验证码不能为空',
|
||||
|
|
@ -1409,14 +1410,6 @@ return [
|
|||
],
|
||||
'form_item_give_integral_placeholder' => '购买赠送积分',
|
||||
'form_item_give_integral_message' => '购买赠送积分比例0~100的数字',
|
||||
'form_item_buy_min_number' => '最低起购数量',
|
||||
'form_item_buy_min_number_message' => '最低起购数量1~100000000范围',
|
||||
'form_item_buy_max_number' => '单次最大购买数量',
|
||||
'form_item_buy_max_number_tips' => [
|
||||
'1. 单次最大数值100000000',
|
||||
'2. 小于等于0或空则不限',
|
||||
],
|
||||
'form_item_buy_max_number_message' => '单次最大购买数量 1~100000000范围',
|
||||
'form_item_site_type' => '商品类型',
|
||||
'form_item_site_type_tips' => [
|
||||
'1. 当前系统配置的站点类型为( 站点类型 )',
|
||||
|
|
@ -1464,6 +1457,10 @@ return [
|
|||
'form_spec_thead_price_message' => '请填写有效的销售金额',
|
||||
'form_spec_thead_original_price_title' => '原价(元)',
|
||||
'form_spec_thead_original_price_message'=> '请填写有效的原价',
|
||||
'form_spec_thead_buy_min_number_title' => '起购数',
|
||||
'form_spec_thead_buy_min_number_message'=> '请填写有效的起购数',
|
||||
'form_spec_thead_buy_max_number_title' => '限购数',
|
||||
'form_spec_thead_buy_max_number_message'=> '请填写有效的限购数',
|
||||
'form_spec_thead_inventory_title' => '库存',
|
||||
'form_spec_thead_weight_title' => '重量(kg)',
|
||||
'form_spec_thead_weight_message' => '规格重量0~100000000',
|
||||
|
|
@ -1527,6 +1524,7 @@ return [
|
|||
'delete_spec_type_fail_tips' => '规格类型删除失败',
|
||||
'delete_spec_value_fail_tips' => '规格值删除失败',
|
||||
'delete_spec_base_fail_tips' => '规格基础删除失败',
|
||||
'delete_goods_category_join_fail_tips' => '商品关联分类删除失败',
|
||||
'delete_goods_photo_fail_tips' => '相册删除失败',
|
||||
'delete_app_content_fail_tips' => '手机端内容删除失败',
|
||||
'delete_params_fail_tips' => '参数删除失败',
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@
|
|||
data-config-images-tips="请先添加图片并配置"
|
||||
data-upload-video-tips="请上传视频"
|
||||
data-choice-goods-tips="请选择商品"
|
||||
data-goods-data-empty-tips="{{:MyLang('gooods_data_no_data_tips')}}"
|
||||
data-goods-data-empty-tips="{{:MyLang('goods_data_empty_tips')}}"
|
||||
data-choice-goods-category-tips="{{:MyLang('form_goods_category_message')}}"
|
||||
data-data-type-tips="数据类型有误"
|
||||
data-main-title-tips="请填写主标题"
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ class BuyService
|
|||
['is_delete_time', '=', 0],
|
||||
['is_shelves', '=', 1],
|
||||
],
|
||||
'field' => 'id,id AS goods_id, title, images, inventory_unit, buy_min_number, buy_max_number, model',
|
||||
'field' => 'id,id AS goods_id,title,images,inventory_unit,is_shelves,buy_min_number,buy_max_number,model,site_type',
|
||||
]);
|
||||
$ret = GoodsService::GoodsList($goods_params);
|
||||
if(empty($ret['data'][0]))
|
||||
|
|
@ -105,6 +105,9 @@ class BuyService
|
|||
$goods['inventory'] = $goods_base['data']['spec_base']['inventory'];
|
||||
$goods['price'] = (float) $goods_base['data']['spec_base']['price'];
|
||||
$goods['original_price'] = (float) $goods_base['data']['spec_base']['original_price'];
|
||||
$goods['spec_base_id'] = $goods_base['data']['spec_base']['id'];
|
||||
$goods['spec_buy_min_number'] = $goods_base['data']['spec_base']['buy_min_number'];
|
||||
$goods['spec_buy_max_number'] = $goods_base['data']['spec_base']['buy_max_number'];
|
||||
$goods['spec_weight'] = $goods_base['data']['spec_base']['weight'];
|
||||
$goods['spec_volume'] = $goods_base['data']['spec_base']['volume'];
|
||||
$goods['spec_coding'] = $goods_base['data']['spec_base']['coding'];
|
||||
|
|
@ -489,7 +492,7 @@ class BuyService
|
|||
[
|
||||
'checked_type' => 'empty',
|
||||
'key_name' => 'goods',
|
||||
'error_msg' => MyLang('gooods_data_no_data_tips'),
|
||||
'error_msg' => MyLang('goods_data_empty_tips'),
|
||||
],
|
||||
[
|
||||
'checked_type' => 'is_array',
|
||||
|
|
@ -503,72 +506,97 @@ class BuyService
|
|||
return DataReturn($ret, -1);
|
||||
}
|
||||
|
||||
// 商品总数
|
||||
$count = count($params['goods']);
|
||||
|
||||
// 是否需要校验商品类型、is_buy、1校验、默认0不校验
|
||||
// 商品小于等于1不校验
|
||||
$is_check_goods_site_type = (isset($params['is_buy']) && $params['is_buy'] == 1) ? 1 : 0;
|
||||
if($is_check_goods_site_type == 1 &&
|
||||
$count <= 1)
|
||||
count($params['goods']) <= 1)
|
||||
{
|
||||
$is_check_goods_site_type = 0;
|
||||
}
|
||||
|
||||
// 是否存在字段缺失
|
||||
$goods_data = [];
|
||||
if(!array_key_exists('is_shelves', $params['goods'][0]))
|
||||
{
|
||||
$goods_data = Db::name('Goods')->where(['id'=>array_column($params['goods'], 'goods_id')])->column('is_shelves,buy_min_number,buy_max_number,site_type', 'id');
|
||||
}
|
||||
|
||||
// 数据校验
|
||||
foreach($params['goods'] as $v)
|
||||
{
|
||||
// 获取商品信息
|
||||
$goods = Db::name('Goods')->field('id,title,price,is_shelves,inventory,buy_min_number,buy_max_number,site_type')->find($v['goods_id']);
|
||||
if(empty($goods))
|
||||
// 数据合并
|
||||
if(!empty($goods_data) && array_key_exists($v['goods_id'], $goods_data))
|
||||
{
|
||||
return DataReturn(MyLang('common_service.buy.goods_no_exist_tips').'['.$v['title'].']', -1);
|
||||
$v = array_merge($v, $goods_data[$v['goods_id']]);
|
||||
}
|
||||
|
||||
// 是否存在规格所属数据
|
||||
if(!array_key_exists('spec_buy_min_number', $v) || !array_key_exists('spec_buy_max_number', $v))
|
||||
{
|
||||
$goods_base = GoodsService::GoodsSpecDetail(array_merge($params, [
|
||||
'id' => $v['goods_id'],
|
||||
'spec' => isset($v['spec']) ? $v['spec'] : [],
|
||||
]));
|
||||
if($goods_base['code'] == 0)
|
||||
{
|
||||
$v['price'] = $goods_base['data']['spec_base']['price'];
|
||||
$v['inventory'] = $goods_base['data']['spec_base']['inventory'];
|
||||
$v['spec_buy_min_number'] = $goods_base['data']['spec_base']['buy_min_number'];
|
||||
$v['spec_buy_max_number'] = $goods_base['data']['spec_base']['buy_max_number'];
|
||||
} else {
|
||||
return $goods_base;
|
||||
}
|
||||
}
|
||||
|
||||
// 基础判断
|
||||
if($goods['is_shelves'] != 1)
|
||||
if($v['is_shelves'] != 1)
|
||||
{
|
||||
return DataReturn(MyLang('common_service.buy.goods_already_shelves_tips').'['.$goods['title'].']', -1);
|
||||
return DataReturn(MyLang('common_service.buy.goods_already_shelves_tips').'['.$v['title'].']', -1);
|
||||
}
|
||||
|
||||
// 限购
|
||||
if($goods['buy_min_number'] > 1 && $v['stock'] < $goods['buy_min_number'])
|
||||
// 先判断规格的起购数、则再判断商品的起购数
|
||||
if(isset($v['spec_buy_min_number']) && $v['spec_buy_min_number'] > 0)
|
||||
{
|
||||
return DataReturn(MyLang('common_service.buy.goods_buy_min_error_tips').'['.$goods['title'].']['.$v['stock'].'<'.$goods['buy_min_number'].']', -1);
|
||||
if($v['stock'] < $v['spec_buy_min_number'])
|
||||
{
|
||||
return DataReturn(MyLang('common_service.buy.goods_buy_min_error_tips').'['.$v['title'].']['.$v['stock'].'<'.$v['spec_buy_min_number'].']', -1);
|
||||
}
|
||||
} else {
|
||||
if(isset($v['buy_min_number']) && $v['buy_min_number'] > 1 && $v['stock'] < $v['buy_min_number'])
|
||||
{
|
||||
return DataReturn(MyLang('common_service.buy.goods_buy_min_error_tips').'['.$v['title'].']['.$v['stock'].'<'.$v['buy_min_number'].']', -1);
|
||||
}
|
||||
}
|
||||
if($goods['buy_max_number'] > 0 && $v['stock'] > $goods['buy_max_number'])
|
||||
|
||||
// 先判断规格的限购数、则再判断商品的限购数
|
||||
if(isset($v['spec_buy_max_number']) && $v['spec_buy_max_number'] > 0)
|
||||
{
|
||||
return DataReturn(MyLang('common_service.buy.goods_buy_max_error_tips').'['.$goods['title'].']['.$v['stock'].'>'.$goods['buy_max_number'].']', -1);
|
||||
if($v['stock'] > $v['spec_buy_max_number'])
|
||||
{
|
||||
return DataReturn(MyLang('common_service.buy.goods_buy_max_error_tips').'['.$v['title'].']['.$v['stock'].'>'.$v['spec_buy_max_number'].']', -1);
|
||||
}
|
||||
} else {
|
||||
if(isset($v['buy_max_number']) && $v['buy_max_number'] > 0 && $v['stock'] > $v['buy_max_number'])
|
||||
{
|
||||
return DataReturn(MyLang('common_service.buy.goods_buy_max_error_tips').'['.$v['title'].']['.$v['stock'].'>'.$v['buy_max_number'].']', -1);
|
||||
}
|
||||
}
|
||||
|
||||
// 是否支持购物车操作
|
||||
if($is_check_goods_site_type)
|
||||
{
|
||||
$ret = GoodsService::IsGoodsSiteTypeConsistent($goods['id'], $goods['site_type']);
|
||||
$ret = GoodsService::IsGoodsSiteTypeConsistent($v['goods_id'], $v['site_type']);
|
||||
if($ret['code'] != 0)
|
||||
{
|
||||
return DataReturn($ret['msg'].'['.$v['title'].']', $ret['code']);
|
||||
}
|
||||
}
|
||||
|
||||
// 规格
|
||||
$spec_params = array_merge($params, [
|
||||
'id' => $v['goods_id'],
|
||||
'spec' => isset($v['spec']) ? $v['spec'] : [],
|
||||
]);
|
||||
$goods_base = GoodsService::GoodsSpecDetail($spec_params);
|
||||
if($goods_base['code'] == 0)
|
||||
{
|
||||
$goods['price'] = $goods_base['data']['spec_base']['price'];
|
||||
$goods['inventory'] = $goods_base['data']['spec_base']['inventory'];
|
||||
} else {
|
||||
return $goods_base;
|
||||
}
|
||||
|
||||
// 库存
|
||||
if($v['stock'] > $goods['inventory'])
|
||||
if($v['stock'] > $v['inventory'])
|
||||
{
|
||||
return DataReturn(MyLang('common_service.buy.goods_buy_exceed_inventory_tips').'['.$goods['title'].']['.$v['stock'].'>'.$goods['inventory'].']', -1);
|
||||
return DataReturn(MyLang('common_service.buy.goods_buy_exceed_inventory_tips').'['.$v['title'].']['.$v['stock'].'>'.$v['inventory'].']', -1);
|
||||
}
|
||||
}
|
||||
return DataReturn(MyLang('check_success'), 0);
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ class GoodsCartService
|
|||
// 基础参数
|
||||
$where = (!empty($params['where']) && is_array($params['where'])) ? $params['where'] : [];
|
||||
$where[] = ['c.user_id', '=', $params['user']['id']];
|
||||
$field = 'c.*, g.inventory_unit, g.is_shelves, g.is_delete_time, g.buy_min_number, g.buy_max_number, g.model, g.site_type';
|
||||
$field = 'c.*,g.inventory_unit,g.is_shelves,g.is_delete_time,g.buy_min_number,g.buy_max_number,g.model,g.site_type';
|
||||
|
||||
// 购物车列表读取前钩子
|
||||
$hook_name = 'plugins_service_cart_goods_list_begin';
|
||||
|
|
@ -91,6 +91,9 @@ class GoodsCartService
|
|||
$v['inventory'] = $goods_base['data']['spec_base']['inventory'];
|
||||
$v['price'] = $goods_base['data']['spec_base']['price'];
|
||||
$v['original_price'] = $goods_base['data']['spec_base']['original_price'];
|
||||
$v['spec_base_id'] = $goods_base['data']['spec_base']['id'];
|
||||
$v['spec_buy_min_number'] = $goods_base['data']['spec_base']['buy_min_number'];
|
||||
$v['spec_buy_max_number'] = $goods_base['data']['spec_base']['buy_max_number'];
|
||||
$v['spec_weight'] = $goods_base['data']['spec_base']['weight'];
|
||||
$v['spec_volume'] = $goods_base['data']['spec_base']['volume'];
|
||||
$v['spec_coding'] = $goods_base['data']['spec_base']['coding'];
|
||||
|
|
@ -99,6 +102,9 @@ class GoodsCartService
|
|||
} else {
|
||||
$v['is_invalid'] = 1;
|
||||
$v['inventory'] = 0;
|
||||
$v['spec_base_id'] = 0;
|
||||
$v['spec_buy_min_number'] = 0;
|
||||
$v['spec_buy_max_number'] = 0;
|
||||
$v['spec_weight'] = 0;
|
||||
$v['spec_volume'] = 0;
|
||||
$v['spec_coding'] = '';
|
||||
|
|
@ -391,26 +397,29 @@ class GoodsCartService
|
|||
return $ret;
|
||||
}
|
||||
|
||||
// 条件
|
||||
$where = [
|
||||
'id' => intval($params['id']),
|
||||
'goods_id' => intval($params['goods_id']),
|
||||
'user_id' => intval($params['user']['id']),
|
||||
// 获取购物车商品
|
||||
$params['where'] = [
|
||||
['c.id', '=', intval($params['id'])],
|
||||
['c.goods_id', '=', intval($params['goods_id'])],
|
||||
];
|
||||
|
||||
// 数量
|
||||
$stock = intval($params['stock']);
|
||||
|
||||
// 获取购物车数据
|
||||
$data = Db::name('Cart')->where($where)->field('goods_id,title,price,stock,spec')->find();
|
||||
if(empty($data))
|
||||
$cart = self::GoodsCartList($params);
|
||||
if($cart['code'] != 0)
|
||||
{
|
||||
return $cart;
|
||||
}
|
||||
if(empty($cart['data']) || empty($cart['data'][0]))
|
||||
{
|
||||
return DataReturn(MyLang('common_service.goodscart.save_stock_update_data_empty_tips'), -1);
|
||||
}
|
||||
$data['stock'] = $stock;
|
||||
$data['spec'] = empty($data['spec']) ? null : json_decode($data['spec'], true);
|
||||
$data = $cart['data'][0];
|
||||
// 是否存在错误
|
||||
if($data['is_error'] == 1)
|
||||
{
|
||||
return DataReturn($data['error_msg'], -1);
|
||||
}
|
||||
|
||||
// 商品校验
|
||||
$data['stock'] = intval($params['stock']);
|
||||
$ret = BuyService::BuyGoodsCheck(['goods'=>[$data]]);
|
||||
if($ret['code'] != 0)
|
||||
{
|
||||
|
|
@ -419,25 +428,12 @@ class GoodsCartService
|
|||
|
||||
// 更新数据
|
||||
$upd_data = [
|
||||
'stock' => $stock,
|
||||
'stock' => $data['stock'],
|
||||
'upd_time' => time(),
|
||||
];
|
||||
if(Db::name('Cart')->where($where)->update($upd_data))
|
||||
if(Db::name('Cart')->where(['id'=>$data['id']])->update($upd_data))
|
||||
{
|
||||
// 获取商品基础信息、更新商品价格信息
|
||||
$spec_params = array_merge($params, [
|
||||
'id' => $data['goods_id'],
|
||||
'spec' => $data['spec'],
|
||||
'stock' => $data['stock'],
|
||||
]);
|
||||
$goods_base = GoodsService::GoodsSpecDetail($spec_params);
|
||||
if($goods_base['code'] == 0)
|
||||
{
|
||||
$data['price'] = $goods_base['data']['spec_base']['price'];
|
||||
$data['original_price'] = $goods_base['data']['spec_base']['original_price'];
|
||||
}
|
||||
|
||||
// 增加价格总计
|
||||
// 重新计算总价
|
||||
$data['total_price'] = PriceNumberFormat($data['stock']*$data['price']);
|
||||
|
||||
// 购物车更新成功钩子
|
||||
|
|
|
|||
|
|
@ -966,11 +966,6 @@ class GoodsService
|
|||
'checked_data' => '1,6',
|
||||
'error_msg' => MyLang('common_service.goods.form_item_inventory_unit_message'),
|
||||
],
|
||||
[
|
||||
'checked_type' => 'empty',
|
||||
'key_name' => 'buy_min_number',
|
||||
'error_msg' => MyLang('common_service.goods.form_item_buy_min_number_message'),
|
||||
],
|
||||
[
|
||||
'checked_type' => 'in',
|
||||
'key_name' => 'site_type',
|
||||
|
|
@ -1019,7 +1014,7 @@ class GoodsService
|
|||
{
|
||||
return $specifications;
|
||||
}
|
||||
|
||||
|
||||
// 相册
|
||||
$photo = self::GetFormGoodsPhotoParams($params);
|
||||
if($photo['code'] != 0)
|
||||
|
|
@ -1057,8 +1052,6 @@ class GoodsService
|
|||
'model' => empty($params['model']) ? '' : $params['model'],
|
||||
'place_origin' => isset($params['place_origin']) ? intval($params['place_origin']) : 0,
|
||||
'inventory_unit' => $params['inventory_unit'],
|
||||
'buy_min_number' => max(1, isset($params['buy_min_number']) ? intval($params['buy_min_number']) : 1),
|
||||
'buy_max_number' => isset($params['buy_max_number']) ? intval($params['buy_max_number']) : 0,
|
||||
'is_deduction_inventory' => isset($params['is_deduction_inventory']) ? intval($params['is_deduction_inventory']) : 0,
|
||||
'is_shelves' => isset($params['is_shelves']) ? intval($params['is_shelves']) : 0,
|
||||
'content_web' => $content_web,
|
||||
|
|
@ -1233,11 +1226,28 @@ class GoodsService
|
|||
*/
|
||||
public static function GoodsSaveBaseUpdate($goods_id, $params = [])
|
||||
{
|
||||
$data = Db::name('GoodsSpecBase')->field('min(price) AS min_price, max(price) AS max_price, sum(inventory) AS inventory, min(original_price) AS min_original_price, max(original_price) AS max_original_price')->where(['goods_id'=>$goods_id])->find();
|
||||
if(empty($data))
|
||||
// 商品基础数据
|
||||
$base = Db::name('GoodsSpecBase')->where(['goods_id'=>$goods_id])->select()->toArray();
|
||||
if(empty($base))
|
||||
{
|
||||
return DataReturn(MyLang('common_service.goods.save_goods_base_empty_tips'), -1);
|
||||
}
|
||||
// 汇总处理
|
||||
$data = [
|
||||
'min_price' => min(array_column($base, 'price')),
|
||||
'max_price' => max(array_column($base, 'price')),
|
||||
'min_original_price' => min(array_column($base, 'original_price')),
|
||||
'max_original_price' => max(array_column($base, 'original_price')),
|
||||
'inventory' => array_sum(array_column($base, 'inventory')),
|
||||
];
|
||||
// 起购数、限购数处理
|
||||
$data['buy_min_number'] = min(array_column($base, 'buy_min_number'));
|
||||
if($data['buy_min_number'] <= 0)
|
||||
{
|
||||
$data['buy_min_number'] = 1;
|
||||
}
|
||||
$buy_max_number = max(array_column($base, 'buy_max_number'));
|
||||
$data['buy_max_number'] = ($buy_max_number > 0 && min(array_column($base, 'buy_max_number')) > 0) ? $buy_max_number : 0;
|
||||
|
||||
// 销售价格 - 展示价格
|
||||
$data['price'] = (!empty($data['max_price']) && $data['min_price'] != $data['max_price']) ? $data['min_price'].'-'.$data['max_price'] : $data['min_price'];
|
||||
|
|
@ -1284,8 +1294,8 @@ class GoodsService
|
|||
$images = [];
|
||||
|
||||
// 基础字段数据字段长度
|
||||
// 销售价、原价、重量、体积、编码、条形码、扩展
|
||||
$base_count = 7;
|
||||
// 销售价、原价、起购数、限购数、重量、体积、编码、条形码、扩展
|
||||
$base_count = 9;
|
||||
|
||||
// 规格值
|
||||
foreach($params as $k=>$v)
|
||||
|
|
@ -1670,7 +1680,7 @@ class GoodsService
|
|||
{
|
||||
// 基础字段
|
||||
$count = count($data['data'][0]);
|
||||
$temp_key = ['price', 'original_price', 'weight', 'volume', 'coding', 'barcode', 'extends'];
|
||||
$temp_key = ['price', 'original_price', 'buy_min_number', 'buy_max_number', 'weight', 'volume', 'coding', 'barcode', 'extends'];
|
||||
$key_count = count($temp_key);
|
||||
|
||||
// 等于key总数则只有一列基础规格
|
||||
|
|
@ -1822,6 +1832,12 @@ class GoodsService
|
|||
throw new \Exception(MyLang('common_service.goods.delete_spec_base_fail_tips'));
|
||||
}
|
||||
|
||||
// 关联分类
|
||||
if(Db::name('GoodsCategoryJoin')->where(['goods_id'=>$goods_ids])->delete() === false)
|
||||
{
|
||||
throw new \Exception(MyLang('common_service.goods.delete_goods_category_fail_tips'));
|
||||
}
|
||||
|
||||
// 相册
|
||||
if(Db::name('GoodsPhoto')->where(['goods_id'=>$goods_ids])->delete() === false)
|
||||
{
|
||||
|
|
@ -2071,7 +2087,7 @@ class GoodsService
|
|||
{
|
||||
if(!is_array($params['spec']))
|
||||
{
|
||||
$spec = json_decode(htmlspecialchars_decode($params['spec']), true);
|
||||
$params['spec'] = json_decode(htmlspecialchars_decode($params['spec']), true);
|
||||
}
|
||||
$spec = array_column($params['spec'], 'value');
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,8 +24,7 @@ ul, li, ol {list-style: none;}
|
|||
|
||||
/*标题*/
|
||||
.items-nav-title{text-align: center;width: 100%;overflow: hidden;background:#eee;}
|
||||
.items-nav-title .floor-title {font-size: 14px;margin:20px 0px;line-height: 1px;border-left: 60px solid #d2364c;border-right: 60px solid #d2364c;
|
||||
text-align: center;float:none}
|
||||
.items-nav-title .floor-title {font-size: 14px;margin:20px 0px;line-height: 1px;border-left: 60px solid #d2364c;border-right: 60px solid #d2364c;text-align: center;float:none;font-weight: 600;}
|
||||
.items-nav-title .floor-desc,.items-nav-title .today-brands,.items-nav-title .more{display: none;}
|
||||
|
||||
/*楼层*/
|
||||
|
|
@ -71,7 +70,7 @@ text-align: center;float:none}
|
|||
.banner-news li{ font-size:12px; padding:0px 0px;height: 30px;float: right;width:30% ;}
|
||||
|
||||
/*标题*/
|
||||
.items-nav-title .floor-title {border: none;font-size:18px;line-height: 24px;margin:5px 0px ;font-weight: 600;}
|
||||
.items-nav-title .floor-title {border: none;font-size:18px;line-height: 24px;margin:5px 0px;}
|
||||
.items-nav-title .floor-desc {display:block;font-size: 14px;color: #999;line-height:18px;margin-bottom: 5px;}
|
||||
|
||||
/*楼层*/
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ function GoodsCartInfoSpecDetail()
|
|||
{
|
||||
spec.push({"type": $(this).data('type-value'), "value": $(this).data('value')})
|
||||
});
|
||||
// 数量
|
||||
var stock = $cart_info_goods_spec.find('.number-operate input[type="number"]').val() || 1;
|
||||
|
||||
// 开启进度条
|
||||
|
|
@ -35,42 +36,20 @@ function GoodsCartInfoSpecDetail()
|
|||
dataType: 'json',
|
||||
timeout: 10000,
|
||||
data: {"id": $('.goods-spec-content').data('id'), "spec": spec, "stock": stock},
|
||||
success: function(result)
|
||||
success: function(res)
|
||||
{
|
||||
$.AMUI.progress.done();
|
||||
if(result.code == 0)
|
||||
if(res.code == 0)
|
||||
{
|
||||
// 售价
|
||||
$cart_info_goods_spec.find('.price').text(__currency_symbol__+result.data.spec_base.price);
|
||||
// 限购数量是否已大于库存
|
||||
var max = parseInt(result.data.spec_base.inventory);
|
||||
var $stock = $cart_info_goods_spec.find('.stock-tips .stock');
|
||||
var limit_max = parseInt($stock.attr('data-max-limit') || 0);
|
||||
if(limit_max > 0)
|
||||
{
|
||||
max = (max < limit_max) ? max : limit_max;
|
||||
$stock.attr('data-max-limit', max);
|
||||
}
|
||||
$cart_info_goods_spec.find('.number-operate input[type="number"]').attr('max', max);
|
||||
|
||||
// 库存
|
||||
$stock.text(result.data.spec_base.inventory);
|
||||
if(result.data.spec_base.original_price > 0)
|
||||
{
|
||||
$cart_info_goods_spec.find('.original-price').attr('data-price', result.data.spec_base.original_price);
|
||||
$cart_info_goods_spec.find('.original-price').text(__currency_symbol__+result.data.spec_base.original_price);
|
||||
$cart_info_goods_spec.find('.original-price').show();
|
||||
} else {
|
||||
$('.original-price').hide();
|
||||
}
|
||||
GoodsCartInfoSpecDetailBackHandle(res.data);
|
||||
} else {
|
||||
Prompt(result.msg);
|
||||
Prompt(res.msg);
|
||||
}
|
||||
},
|
||||
error: function(xhr, type)
|
||||
{
|
||||
$.AMUI.progress.done();
|
||||
Prompt(HtmlToString(xhr.responseText) || '异常错误', null, 30);
|
||||
Prompt(HtmlToString(xhr.responseText) || (window['lang_error_text'] || '异常错误'), null, 30);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
@ -110,10 +89,10 @@ function GoodsCartInfoSpecType()
|
|||
dataType: 'json',
|
||||
timeout: 10000,
|
||||
data: {"id": $('.goods-spec-content').data('id'), "spec": spec},
|
||||
success: function(result)
|
||||
success: function(res)
|
||||
{
|
||||
$.AMUI.progress.done();
|
||||
if(result.code == 0)
|
||||
if(res.code == 0)
|
||||
{
|
||||
var spec_count = spec.length;
|
||||
var index = (spec_count > 0) ? spec_count : 0;
|
||||
|
|
@ -123,7 +102,7 @@ function GoodsCartInfoSpecType()
|
|||
{
|
||||
$(this).removeClass('sku-dont-choose');
|
||||
var value = $(this).data('value').toString();
|
||||
if(result.data.spec_type.indexOf(value) == -1)
|
||||
if(res.data.spec_type.indexOf(value) == -1)
|
||||
{
|
||||
$(this).addClass('sku-items-disabled');
|
||||
} else {
|
||||
|
|
@ -132,17 +111,152 @@ function GoodsCartInfoSpecType()
|
|||
});
|
||||
}
|
||||
} else {
|
||||
Prompt(result.msg);
|
||||
Prompt(res.msg);
|
||||
}
|
||||
},
|
||||
error: function(xhr, type)
|
||||
{
|
||||
$.AMUI.progress.done();
|
||||
Prompt(HtmlToString(xhr.responseText) || '异常错误', null, 30);
|
||||
Prompt(HtmlToString(xhr.responseText) || (window['lang_error_text'] || '异常错误'), null, 30);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 数量值改变
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2021-10-05
|
||||
* @desc description
|
||||
*/
|
||||
function GoodsNumberChange()
|
||||
{
|
||||
var stock = $cart_info_goods_spec.find('.number-operate input[type="number"]').val() || 1;
|
||||
var spec = [];
|
||||
var sku_count = $('.goods-spec-content .sku-items').length;
|
||||
if(sku_count > 0)
|
||||
{
|
||||
// 未完全选择规格则返回
|
||||
var spec_count = $('.sku-line.selected').length;
|
||||
if(spec_count < sku_count)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// 已选规格
|
||||
$('.goods-spec-content .sku-items li.selected').each(function(k, v)
|
||||
{
|
||||
spec.push({"type": $(this).data('type-value'), "value": $(this).data('value')})
|
||||
});
|
||||
}
|
||||
|
||||
// 开启进度条
|
||||
$.AMUI.progress.start();
|
||||
|
||||
// ajax请求
|
||||
$.ajax({
|
||||
url: RequestUrlHandle(__goods_stock_url__),
|
||||
type: 'post',
|
||||
dataType: "json",
|
||||
timeout: 10000,
|
||||
data: {
|
||||
"id": $('.goods-spec-content').data('id'),
|
||||
"stock": stock,
|
||||
"spec": spec
|
||||
},
|
||||
success: function(res)
|
||||
{
|
||||
$.AMUI.progress.done();
|
||||
if(res.code == 0)
|
||||
{
|
||||
GoodsCartInfoSpecDetailBackHandle(res.data);
|
||||
} else {
|
||||
Prompt(res.msg);
|
||||
}
|
||||
},
|
||||
error: function(xhr, type)
|
||||
{
|
||||
$.AMUI.progress.done();
|
||||
Prompt(HtmlToString(xhr.responseText) || (window['lang_error_text'] || '异常错误'), null, 30);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品规格详情返回数据处理
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2021-10-05
|
||||
* @desc description
|
||||
* @param {[object]} data [后端返回数据]
|
||||
*/
|
||||
function GoodsCartInfoSpecDetailBackHandle(data)
|
||||
{
|
||||
// 售价
|
||||
$cart_info_goods_spec.find('.price').text(__currency_symbol__+data.spec_base.price);
|
||||
// 数量处理
|
||||
var inventory = parseInt(data.spec_base.inventory);
|
||||
var $input = $cart_info_goods_spec.find('.number-operate input[type="number"]');
|
||||
var $stock = $cart_info_goods_spec.find('.stock-tips .stock');
|
||||
var $origina_price = $cart_info_goods_spec.find('.original-price');
|
||||
|
||||
// 起购数
|
||||
var min = parseInt($input.data('original-buy-min-number'));
|
||||
var buy_min_number = parseInt(data.spec_base.buy_min_number);
|
||||
if(buy_min_number > 0)
|
||||
{
|
||||
min = buy_min_number;
|
||||
}
|
||||
$input.attr('min', min);
|
||||
|
||||
// 限购数
|
||||
var max = inventory;
|
||||
var buy_max_number = parseInt(data.spec_base.buy_max_number);
|
||||
if(buy_max_number > 0 && buy_max_number < max)
|
||||
{
|
||||
max = buy_max_number;
|
||||
}
|
||||
$input.attr('max', max);
|
||||
$stock.text(inventory);
|
||||
|
||||
// 原价
|
||||
if(data.spec_base.original_price > 0)
|
||||
{
|
||||
$origina_price.text(__currency_symbol__+data.spec_base.original_price);
|
||||
$origina_price.parents('.items').show();
|
||||
} else {
|
||||
$origina_price.parents('.items').hide();
|
||||
}
|
||||
|
||||
// 已选数量校验、超出规格数量则以规格数量为准
|
||||
var stock = parseInt($input.val());
|
||||
if(min > 0 && stock < min)
|
||||
{
|
||||
stock = min;
|
||||
}
|
||||
if(max > 0 && stock > max)
|
||||
{
|
||||
stock = max;
|
||||
}
|
||||
if(stock > inventory)
|
||||
{
|
||||
stock = inventory;
|
||||
}
|
||||
$input.val(stock);
|
||||
|
||||
// 起购/限购
|
||||
if(min > 0)
|
||||
{
|
||||
$stock.attr('data-min-limit', min);
|
||||
}
|
||||
if(max > 0)
|
||||
{
|
||||
$stock.attr('data-max-limit', max);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品基础数据恢复
|
||||
* @author Devil
|
||||
|
|
@ -153,12 +267,19 @@ function GoodsCartInfoSpecType()
|
|||
*/
|
||||
function GoodsCartInfoBaseRestore()
|
||||
{
|
||||
$cart_info_goods_spec.find('.price').text(__currency_symbol__+$cart_info_goods_spec.find('.price').data('default-price'));
|
||||
$cart_info_goods_spec.find('.number-operate input[type="number"]').attr('max', $cart_info_goods_spec.find('.number-operate input[type="number"]').data('original-max'));
|
||||
$cart_info_goods_spec.find('.stock-tips .stock').text($cart_info_goods_spec.find('.stock-tips .stock').data('original-stock'));
|
||||
if($cart_info_goods_spec.find('.original-price').length > 0)
|
||||
var $input = $cart_info_goods_spec.find('.number-operate input[type="number"]');
|
||||
var $stock = $cart_info_goods_spec.find('.stock-tips .stock');
|
||||
var $price = $cart_info_goods_spec.find('.price');
|
||||
var $original_price = $cart_info_goods_spec.find('.original-price');
|
||||
$input.attr('min', $input.data('original-buy-min-number'));
|
||||
$input.attr('max', $stock.data('original-max'));
|
||||
$stock.text($stock.data('original-inventory'));
|
||||
$stock.attr('data-min-limit', $input.attr('data-original-buy-min-number'));
|
||||
$stock.attr('data-max-limit', $input.attr('data-original-buy-max-number'));
|
||||
$price.text(__currency_symbol__+$price.data('default-price'));
|
||||
if($original_price.length > 0)
|
||||
{
|
||||
$cart_info_goods_spec.find('.original-price').text(__currency_symbol__+$cart_info_goods_spec.find('.original-price').data('default-price'));
|
||||
$original_price.text(__currency_symbol__+$original_price.data('default-price'));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -176,8 +297,8 @@ function GoodsCartInfoBuyCartCheck()
|
|||
var $stock = $cart_info_goods_spec.find('.stock-tips .stock');
|
||||
var stock = parseInt($cart_info_goods_spec.find('.number-operate input').val() || 1);
|
||||
var inventory = parseInt($stock.text());
|
||||
var min = $stock.data('min-limit') || 1;
|
||||
var max = $stock.data('max-limit') || 0;
|
||||
var min = $stock.attr('data-min-limit') || 1;
|
||||
var max = $stock.attr('data-max-limit') || 0;
|
||||
var unit = $stock.data('unit') || '';
|
||||
if(stock < min)
|
||||
{
|
||||
|
|
@ -254,10 +375,7 @@ $(function()
|
|||
{
|
||||
// 商品规格选择
|
||||
$(document).on('click', '.spec-options ul>li', function()
|
||||
{
|
||||
// 切换规格购买数量清空
|
||||
$cart_info_goods_spec.find('.number-operate input').val($cart_info_goods_spec.find('.stock-tips .stock').data('min-limit') || 1);
|
||||
|
||||
{
|
||||
// 规格处理
|
||||
var length = $('.goods-spec-content .sku-items').length;
|
||||
var index = $(this).parents('.sku-items').index();
|
||||
|
|
@ -322,24 +440,52 @@ $(function()
|
|||
var stock = parseInt($input.val());
|
||||
var type = $(this).data('type');
|
||||
var temp_stock = (type == 'add') ? stock+1 : stock-1;
|
||||
var unit = $cart_info_goods_spec.find('.stock-tips .stock').data('unit') || '';
|
||||
if(temp_stock < min)
|
||||
{
|
||||
temp_stock = min;
|
||||
Prompt('不能小于最低限购('+min+')');
|
||||
$input.val(min);
|
||||
Prompt((window['lang_goods_stock_min_tips'] || '最低起购数量')+min+unit);
|
||||
return false;
|
||||
}
|
||||
if(temp_stock > max)
|
||||
{
|
||||
temp_stock = max;
|
||||
Prompt('超过最大限购('+max+')');
|
||||
$input.val(max);
|
||||
Prompt((window['lang_goods_stock_max_tips'] || '最大限购数量')+max+unit);
|
||||
return false;
|
||||
}
|
||||
$input.val(temp_stock).blur();
|
||||
$input.val(temp_stock);
|
||||
|
||||
// 数量更新事件
|
||||
GoodsNumberChange();
|
||||
});
|
||||
// 手动输入、失去焦点
|
||||
$(document).on('blur', '.goods-spec-content .number-operate input', function()
|
||||
{
|
||||
if(parseInt($(this).val() || 0) <= 0)
|
||||
var $stock_tips = $cart_info_goods_spec.find('.stock-tips .stock');
|
||||
var min = parseInt($stock_tips.attr('data-min-limit')) || 1;
|
||||
var max = parseInt($stock_tips.attr('data-max-limit')) || 0;
|
||||
var stock = parseInt($(this).val());
|
||||
var inventory = parseInt($stock_tips.text());
|
||||
if(isNaN(stock))
|
||||
{
|
||||
$(this).val($(this).attr('min'));
|
||||
stock = min;
|
||||
}
|
||||
if(max > 0 && stock > max)
|
||||
{
|
||||
stock = max;
|
||||
}
|
||||
if(stock < min)
|
||||
{
|
||||
stock = min;
|
||||
}
|
||||
if(stock > inventory)
|
||||
{
|
||||
stock = inventory;
|
||||
}
|
||||
$(this).val(stock);
|
||||
|
||||
// 数量更新事件
|
||||
GoodsNumberChange();
|
||||
});
|
||||
$(document).on('focus', '.goods-spec-content .number-operate input', function()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -106,8 +106,8 @@ function BuyCartCheck(e)
|
|||
// 参数
|
||||
var stock = parseInt($('#text_box').val()) || 1;
|
||||
var inventory = parseInt($('.stock-tips .stock').text());
|
||||
var min = $('.stock-tips .stock').data('min-limit') || 1;
|
||||
var max = $('.stock-tips .stock').data('max-limit') || 0;
|
||||
var min = $('.stock-tips .stock').attr('data-min-limit') || 1;
|
||||
var max = $('.stock-tips .stock').attr('data-max-limit') || 0;
|
||||
var unit = $('.stock-tips .stock').data('unit') || '';
|
||||
if(stock < min)
|
||||
{
|
||||
|
|
@ -216,24 +216,58 @@ function BuyCartHandle(e)
|
|||
*/
|
||||
function GoodsSpecDetailBackHandle(data)
|
||||
{
|
||||
// 售价
|
||||
$('.text-info .price-now').text(__currency_symbol__+data.spec_base.price);
|
||||
$('.goods-price').text(data.spec_base.price);
|
||||
$('.number-tag input[type="number"]').attr('max', data.spec_base.inventory);
|
||||
$('.stock-tips .stock').text(data.spec_base.inventory);
|
||||
// 数量处理
|
||||
var inventory = parseInt(data.spec_base.inventory);
|
||||
var $input = $('#text_box');
|
||||
var $stock = $('.stock-tips .stock');
|
||||
var $origina_price = $('.goods-original-price');
|
||||
|
||||
// 起购数
|
||||
var min = parseInt($input.data('original-buy-min-number'));
|
||||
var buy_min_number = parseInt(data.spec_base.buy_min_number);
|
||||
if(buy_min_number > 0)
|
||||
{
|
||||
min = buy_min_number;
|
||||
}
|
||||
$input.attr('min', min);
|
||||
|
||||
// 限购数
|
||||
var max = inventory;
|
||||
var buy_max_number = parseInt(data.spec_base.buy_max_number);
|
||||
if(buy_max_number > 0 && buy_max_number < max)
|
||||
{
|
||||
max = buy_max_number;
|
||||
}
|
||||
$input.attr('max', max);
|
||||
$stock.text(inventory);
|
||||
|
||||
// 原价
|
||||
if(data.spec_base.original_price > 0)
|
||||
{
|
||||
$('.goods-original-price').text(__currency_symbol__+data.spec_base.original_price);
|
||||
$('.goods-original-price').parents('.items').show();
|
||||
$origina_price.text(__currency_symbol__+data.spec_base.original_price);
|
||||
$origina_price.parents('.items').show();
|
||||
} else {
|
||||
$('.goods-original-price').parents('.items').hide();
|
||||
$origina_price.parents('.items').hide();
|
||||
}
|
||||
|
||||
// 已选数量校验、超出规格数量则以规格数量为准
|
||||
var stock = parseInt($('#text_box').val());
|
||||
if(stock > data.spec_base.inventory)
|
||||
var stock = parseInt($input.val());
|
||||
if(min > 0 && stock < min)
|
||||
{
|
||||
$('#text_box').val(data.spec_base.inventory);
|
||||
stock = min;
|
||||
}
|
||||
if(max > 0 && stock > max)
|
||||
{
|
||||
stock = max;
|
||||
}
|
||||
if(stock > inventory)
|
||||
{
|
||||
stock = inventory;
|
||||
}
|
||||
$input.val(stock);
|
||||
|
||||
// 扩展数据处理
|
||||
var extends_element = data.extends_element || [];
|
||||
|
|
@ -247,6 +281,16 @@ function GoodsSpecDetailBackHandle(data)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 起购/限购
|
||||
if(min > 0)
|
||||
{
|
||||
$stock.attr('data-min-limit', min);
|
||||
}
|
||||
if(max > 0)
|
||||
{
|
||||
$stock.attr('data-max-limit', max);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -396,15 +440,23 @@ function GoodsSpecType()
|
|||
*/
|
||||
function GoodsBaseRestore()
|
||||
{
|
||||
$('.text-info .price-now').text(__currency_symbol__+$('.text-info .price-now').data('original-price'));
|
||||
$('.goods-price').text($('.goods-price').data('original-price'));
|
||||
$('.number-tag input[type="number"]').attr('max', $('.number-tag input[type="number"]').data('original-max'));
|
||||
$('.stock-tips .stock').text($('.stock-tips .stock').data('original-stock'));
|
||||
var $input = $('#text_box');
|
||||
var $stock = $('.stock-tips .stock');
|
||||
var $price = $('.goods-price');
|
||||
var $price_now = $('.text-info .price-now');
|
||||
var $original_price_value = $('.tb-detail-price .original-price-value');
|
||||
$input.attr('min', $input.data('original-buy-min-number'));
|
||||
$input.attr('max', $stock.data('original-max'));
|
||||
$stock.text($stock.data('original-inventory'));
|
||||
$stock.attr('data-min-limit', $input.attr('data-original-buy-min-number'));
|
||||
$stock.attr('data-max-limit', $input.attr('data-original-buy-max-number'));
|
||||
|
||||
// 价格处理
|
||||
if($('.tb-detail-price .original-price-value').length > 0)
|
||||
$price_now.text(__currency_symbol__+$price_now.data('original-price'));
|
||||
$price.text($price.data('original-price'));
|
||||
if($original_price_value.length > 0)
|
||||
{
|
||||
$('.tb-detail-price .original-price-value').each(function(k, v)
|
||||
$original_price_value.each(function(k, v)
|
||||
{
|
||||
var price = $(this).data('original-price');
|
||||
if(price !== undefined)
|
||||
|
|
@ -446,7 +498,7 @@ function GoodsNumberChange()
|
|||
|
||||
// ajax请求
|
||||
$.ajax({
|
||||
url: RequestUrlHandle($('#text_box').data('ajax-url')),
|
||||
url: RequestUrlHandle(__goods_stock_url__),
|
||||
type: 'post',
|
||||
dataType: "json",
|
||||
timeout: 10000,
|
||||
|
|
@ -699,13 +751,13 @@ $(function() {
|
|||
//获得文本框对象
|
||||
var $input = $('#text_box');
|
||||
var $stock_tips = $('.stock-tips .stock');
|
||||
var min = parseInt($stock_tips.data('min-limit')) || 1;
|
||||
var max = parseInt($stock_tips.data('max-limit')) || 0;
|
||||
var unit = $stock_tips.data('unit') || '';
|
||||
|
||||
// 手动输入
|
||||
$input.on('blur', function()
|
||||
{
|
||||
var min = parseInt($stock_tips.attr('data-min-limit')) || 1;
|
||||
var max = parseInt($stock_tips.attr('data-max-limit')) || 0;
|
||||
var stock = parseInt($(this).val());
|
||||
var inventory = parseInt($stock_tips.text());
|
||||
if(isNaN(stock))
|
||||
|
|
@ -733,6 +785,7 @@ $(function() {
|
|||
//数量增加操作
|
||||
$('#add').on('click', function()
|
||||
{
|
||||
var max = parseInt($stock_tips.attr('data-max-limit')) || 0;
|
||||
var inventory = parseInt($stock_tips.text());
|
||||
var stock = parseInt($input.val())+1;
|
||||
if(max > 0 && stock > max)
|
||||
|
|
@ -743,7 +796,7 @@ $(function() {
|
|||
}
|
||||
if(stock > inventory)
|
||||
{
|
||||
$input.val(min);
|
||||
$input.val(inventory);
|
||||
Prompt((window['lang_goods_inventory_number_tips'] || '库存数量')+inventory+unit);
|
||||
return false;
|
||||
}
|
||||
|
|
@ -755,6 +808,7 @@ $(function() {
|
|||
//数量减少操作
|
||||
$('#min').on('click', function()
|
||||
{
|
||||
var min = parseInt($stock_tips.attr('data-min-limit')) || 1;
|
||||
var value = parseInt($input.val())-1;
|
||||
if(value < min)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue