mirror of
https://gitee.com/zongzhige/shopxo.git
synced 2026-06-06 03:56:57 +08:00
地址新增编号快速搜索选择
This commit is contained in:
@ -92,7 +92,20 @@ class Region extends Base
|
||||
['pid', '=', $pid],
|
||||
],
|
||||
];
|
||||
return ApiService::ApiDataReturn(DataReturn('获取成功', 0, RegionService::RegionNode($params)));
|
||||
return ApiService::ApiDataReturn(DataReturn('success', 0, RegionService::RegionNode($params)));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取地区编号数据
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2018-09-21
|
||||
* @desc description
|
||||
*/
|
||||
public function CodeData()
|
||||
{
|
||||
return ApiService::ApiDataReturn(RegionService::RegionCodeData($this->data_post));
|
||||
}
|
||||
}
|
||||
?>
|
||||
@ -50,12 +50,12 @@
|
||||
</div>
|
||||
|
||||
<div class="am-form-group">
|
||||
<label class="block">是否已回复</label>
|
||||
<label class="am-block">是否已回复</label>
|
||||
<input name="is_reply" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if isset($data['is_reply']) and $data['is_reply'] eq 1}}checked="true"{{/if}} />
|
||||
</div>
|
||||
|
||||
<div class="am-form-group">
|
||||
<label class="block">是否显示</label>
|
||||
<label class="am-block">是否显示</label>
|
||||
<input name="is_show" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if isset($data['is_show']) and $data['is_show'] eq 1}}checked="true"{{/if}} />
|
||||
</div>
|
||||
|
||||
|
||||
@ -45,7 +45,7 @@
|
||||
</div>
|
||||
|
||||
<div class="am-form-group am-form-file">
|
||||
<label class="block">导航图标<span class="am-form-group-label-tips-must">*</span></label>
|
||||
<label class="am-block">导航图标<span class="am-form-group-label-tips-must">*</span></label>
|
||||
<ul class="plug-file-upload-view slide-images_url-images-view" data-form-name="images_url" data-max-number="1" data-delete="0" data-dialog-type="images">
|
||||
<li>
|
||||
<input type="text" name="images_url" value="{{if !empty($data['images_url'])}}{{$data.images_url}}{{/if}}" data-validation-message="请上传图片" required />
|
||||
@ -60,7 +60,7 @@
|
||||
</div>
|
||||
|
||||
<div class="am-form-group">
|
||||
<label class="block">是否启用</label>
|
||||
<label class="am-block">是否启用</label>
|
||||
<input name="is_enable" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if !empty($data) and $data['is_enable'] eq 1}} checked="true"{{/if}} />
|
||||
</div>
|
||||
<div class="am-form-group am-form-group-refreshing am-margin-top-lg am-padding-left-0">
|
||||
|
||||
@ -40,7 +40,7 @@
|
||||
</div>
|
||||
|
||||
<div class="am-form-group am-form-file">
|
||||
<label class="block">导航图标<span class="am-form-group-label-tips-must">*</span></label>
|
||||
<label class="am-block">导航图标<span class="am-form-group-label-tips-must">*</span></label>
|
||||
<ul class="plug-file-upload-view slide-images_url-images-view" data-form-name="images_url" data-max-number="1" data-delete="0" data-dialog-type="images">
|
||||
<li>
|
||||
<input type="text" name="images_url" value="{{if !empty($data['images_url'])}}{{$data.images_url}}{{/if}}" data-validation-message="请上传图片" required />
|
||||
@ -61,11 +61,11 @@
|
||||
<input type="number" placeholder="顺序" name="sort" min="0" max="255" data-validation-message="顺序 0~255 之间的数值" class="am-radius" value="{{if isset($data['sort'])}}{{$data.sort}}{{else /}}0{{/if}}" required />
|
||||
</div>
|
||||
<div class="am-form-group">
|
||||
<label class="block">是否启用</label>
|
||||
<label class="am-block">是否启用</label>
|
||||
<input name="is_enable" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if !empty($data) and $data['is_enable'] eq 1}} checked="true"{{/if}} />
|
||||
</div>
|
||||
<div class="am-form-group">
|
||||
<label class="block">是否需要登录</label>
|
||||
<label class="am-block">是否需要登录</label>
|
||||
<input name="is_need_login" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if !empty($data) and $data['is_need_login'] eq 1}} checked="true"{{/if}} />
|
||||
</div>
|
||||
<div class="am-form-group am-form-group-refreshing am-margin-top-lg am-padding-left-0">
|
||||
|
||||
@ -48,13 +48,13 @@
|
||||
<div class="am-cf">
|
||||
<div class="am-u-sm-6 am-padding-horizontal-0">
|
||||
<div class="am-form-group">
|
||||
<label class="block">是否启用</label>
|
||||
<label class="am-block">是否启用</label>
|
||||
<input name="is_enable" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if !empty($data) and $data['is_enable'] eq 1}}checked="true"{{/if}} />
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-u-sm-6 am-padding-horizontal-0">
|
||||
<div class="am-form-group">
|
||||
<label class="block">首页推荐</label>
|
||||
<label class="am-block">首页推荐</label>
|
||||
<input name="is_home_recommended" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if !empty($data) and $data['is_home_recommended'] eq 1}}checked="true"{{/if}} />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -46,7 +46,7 @@
|
||||
<div class="am-cf">
|
||||
<div class="am-u-sm-6 am-padding-horizontal-0">
|
||||
<div class="am-form-group am-form-file">
|
||||
<label class="block">LOGO<span class="am-form-group-label-tips">建议150*50px</span></label>
|
||||
<label class="am-block">LOGO<span class="am-form-group-label-tips">建议150*50px</span></label>
|
||||
<ul class="plug-file-upload-view brand-logo-images-view" data-form-name="logo" data-max-number="1" data-dialog-type="images">
|
||||
{{if !empty($data['logo'])}}
|
||||
<li>
|
||||
@ -69,7 +69,7 @@
|
||||
</div>
|
||||
<div class="am-u-md-6 am-padding-horizontal-0">
|
||||
<div class="am-form-group">
|
||||
<label class="block">是否启用</label>
|
||||
<label class="am-block">是否启用</label>
|
||||
<input name="is_enable" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if (isset($data['is_enable']) and $data['is_enable'] eq 1) or !isset($data['is_enable'])}}checked="true"{{/if}} />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -19,7 +19,7 @@
|
||||
<input type="text" name="{{$data.common_customer_store_address.only_tag}}" placeholder="{{$data.common_customer_store_address.name}}" data-validation-message="{{$data.common_customer_store_address.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_customer_store_address.value}}"{{/if}} />
|
||||
</div>
|
||||
<div class="am-form-group">
|
||||
<label class="block">{{$data.common_customer_store_qrcode.name}}<span class="am-form-group-label-tips">{{$data.common_customer_store_qrcode.describe}}</span></label>
|
||||
<label class="am-block">{{$data.common_customer_store_qrcode.name}}<span class="am-form-group-label-tips">{{$data.common_customer_store_qrcode.describe}}</span></label>
|
||||
<ul class="plug-file-upload-view common_customer_store_qrcode-images-view" data-form-name="common_customer_store_qrcode" data-max-number="1" data-dialog-type="images">
|
||||
{{if !empty($data['common_customer_store_qrcode']['value'])}}
|
||||
<li>
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
</div>
|
||||
<div class="am-panel-bd am-padding-vertical-xs">
|
||||
<div class="am-form-group am-form-file">
|
||||
<label class="block">logo<span class="am-form-group-label-tips">选传</span><span class="am-form-group-label-tips">建议大小300*300px</span></label>
|
||||
<label class="am-block">logo<span class="am-form-group-label-tips">选传</span><span class="am-form-group-label-tips">建议大小300*300px</span></label>
|
||||
<ul class="plug-file-upload-view shop-logo-images-view" data-form-name="logo" data-max-number="1" data-dialog-type="images">
|
||||
{{if !empty($data['logo'])}}
|
||||
<li>
|
||||
@ -30,16 +30,16 @@
|
||||
</div>
|
||||
|
||||
<div class="am-form-group">
|
||||
<label class="block">是否启用<span class="am-form-group-label-tips">可选、默认是</span></label>
|
||||
<label class="am-block">是否启用<span class="am-form-group-label-tips">可选、默认是</span></label>
|
||||
<input name="is_enable" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if (isset($data['is_enable']) and $data['is_enable'] eq 1) or !isset($data['is_enable'])}}checked="true"{{/if}} />
|
||||
</div>
|
||||
<div class="am-form-group">
|
||||
<label class="block">是否含头部<span class="am-form-group-label-tips">可选、默认是</span></label>
|
||||
<label class="am-block">是否含头部<span class="am-form-group-label-tips">可选、默认是</span></label>
|
||||
<input name="is_header" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if (isset($data['is_header']) and $data['is_header'] eq 1) or !isset($data['is_header'])}}checked="true"{{/if}} />
|
||||
</div>
|
||||
|
||||
<div class="am-form-group">
|
||||
<label class="block">是否含尾部<span class="am-form-group-label-tips">可选、默认是</span></label>
|
||||
<label class="am-block">是否含尾部<span class="am-form-group-label-tips">可选、默认是</span></label>
|
||||
<input name="is_footer" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if (isset($data['is_footer']) and $data['is_footer'] eq 1) or !isset($data['is_footer'])}}checked="true"{{/if}} />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
<!-- form start -->
|
||||
<form class="am-form form-validation am-form-popup-fixed" action="{{:MyUrl('admin/express/save')}}" method="POST" request-type="ajax-fun" request-value="TreeFormSaveBack">
|
||||
<div class="am-form-group am-form-file">
|
||||
<label class="block">icon图标</label>
|
||||
<label class="am-block">icon图标</label>
|
||||
<ul class="plug-file-upload-view express-icon-images-view" data-form-name="icon" data-max-number="1" data-dialog-type="images">
|
||||
<li>
|
||||
<input type="hidden" name="icon" value="" />
|
||||
|
||||
@ -195,7 +195,7 @@
|
||||
<div class="am-cf">
|
||||
<div class="am-u-sm-6 am-padding-horizontal-0">
|
||||
<div class="am-form-group am-form-file">
|
||||
<label class="block">封面图片<a href="javascript:;" class="am-icon-question-circle am-text-warning am-margin-left-sm" data-am-popover="{content: '留空则取相册第一张图、建议800*800px', trigger: 'hover focus', theme: 'sm'}"></a></label>
|
||||
<label class="am-block">封面图片<a href="javascript:;" class="am-icon-question-circle am-text-warning am-margin-left-sm" data-am-popover="{content: '留空则取相册第一张图、建议800*800px', trigger: 'hover focus', theme: 'sm'}"></a></label>
|
||||
<ul class="plug-file-upload-view goods-recommended-images-view" data-form-name="images" data-max-number="1" data-dialog-type="images">
|
||||
{{if !empty($data['images'])}}
|
||||
<li>
|
||||
@ -210,11 +210,11 @@
|
||||
</div>
|
||||
<div class="am-u-sm-6 am-padding-horizontal-0">
|
||||
<div class="am-form-group">
|
||||
<label class="block">扣减库存<a href="javascript:;" class="am-icon-question-circle am-text-warning am-margin-left-sm" data-am-popover="{content: '扣除规则根据后台配置->扣除库存规则而定', trigger: 'hover focus', theme: 'sm'}"></a></label>
|
||||
<label class="am-block">扣减库存<a href="javascript:;" class="am-icon-question-circle am-text-warning am-margin-left-sm" data-am-popover="{content: '扣除规则根据后台配置->扣除库存规则而定', trigger: 'hover focus', theme: 'sm'}"></a></label>
|
||||
<input name="is_deduction_inventory" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if (isset($data['is_deduction_inventory']) and $data['is_deduction_inventory'] eq 1) or empty($data)}}checked="true"{{/if}} />
|
||||
</div>
|
||||
<div class="am-form-group">
|
||||
<label class="block">上下架<a href="javascript:;" class="am-icon-question-circle am-text-warning am-margin-left-sm" data-am-popover="{content: '下架后用户不可见', trigger: 'hover focus', theme: 'sm'}"></a></label>
|
||||
<label class="am-block">上下架<a href="javascript:;" class="am-icon-question-circle am-text-warning am-margin-left-sm" data-am-popover="{content: '下架后用户不可见', trigger: 'hover focus', theme: 'sm'}"></a></label>
|
||||
<input name="is_shelves" value="1" type="checkbox" data-off-text="下架" data-on-text="上架" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if (isset($data['is_shelves']) and $data['is_shelves'] eq 1) or empty($data)}}checked="true"{{/if}} />
|
||||
</div>
|
||||
</div>
|
||||
@ -361,7 +361,7 @@
|
||||
<li>
|
||||
<div>
|
||||
<div class="content-app-left">
|
||||
<label class="block">图片</label>
|
||||
<label class="am-block">图片</label>
|
||||
<ul class="plug-file-upload-view goods-content-app-images-view-{{$v.id}}" data-form-name="content_app_images_{{$v.id}}" data-max-number="1" data-dialog-type="images">
|
||||
{{if !empty($v['images'])}}
|
||||
<li>
|
||||
|
||||
@ -259,27 +259,27 @@
|
||||
<div class="am-popup-bd">
|
||||
<div class="am-alert am-alert-secondary spec-title-container"></div>
|
||||
<div class="am-form-group">
|
||||
<label class="block">销售价(元)</label>
|
||||
<label class="am-block">销售价(元)</label>
|
||||
<input type="text" placeholder="价格" class="am-radius popup_all_price" pattern="{{$default_price_regex}}" data-validation-message="请填写有效的销售金额" />
|
||||
</div>
|
||||
<div class="am-form-group">
|
||||
<label class="block">原价(元)</label>
|
||||
<label class="am-block">原价(元)</label>
|
||||
<input type="text" placeholder="原价" class="am-radius popup_all_original_price" pattern="{{$default_price_regex}}" data-validation-message="请填写有效的原价" />
|
||||
</div>
|
||||
<div class="am-form-group">
|
||||
<label class="block">重量(kg)</label>
|
||||
<label class="am-block">重量(kg)</label>
|
||||
<input type="number" placeholder="重量" class="am-radius popup_all_weight" maxlength="80" min="0.00" max="100000000.00" step="0.01" data-validation-message="规格重量 0.00~100000000.00" />
|
||||
</div>
|
||||
<div class="am-form-group">
|
||||
<label class="block">体积(m³)</label>
|
||||
<label class="am-block">体积(m³)</label>
|
||||
<input type="number" placeholder="体积" class="am-radius popup_all_volume" maxlength="80" min="0.00" max="100000000.00" step="0.01" data-validation-message="规格体积 0.00~100000000.00" />
|
||||
</div>
|
||||
<div class="am-form-group">
|
||||
<label class="block">编码</label>
|
||||
<label class="am-block">编码</label>
|
||||
<input type="text" placeholder="编码" class="am-radius popup_all_coding" maxlength="80" data-validation-message="规格编码最多80个字符" />
|
||||
</div>
|
||||
<div class="am-form-group">
|
||||
<label class="block">条形码</label>
|
||||
<label class="am-block">条形码</label>
|
||||
<input type="text" placeholder="条形码" class="am-radius popup_all_barcode" maxlength="80" data-validation-message="条形码最多80个字符" />
|
||||
</div>
|
||||
<div class="am-form-group am-form-group-refreshing am-text-center">
|
||||
|
||||
@ -24,7 +24,7 @@
|
||||
{{if !empty($element['name'])}}
|
||||
<div class="am-form-group">
|
||||
{{if !empty($element['title']) or !empty($element['desc'])}}
|
||||
<label class="block">
|
||||
<label class="am-block">
|
||||
{{if !empty($element['title'])}}
|
||||
{{$element.title}}
|
||||
{{/if}}
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
<div class="am-cf">
|
||||
<div class="am-u-sm-6 am-padding-horizontal-0">
|
||||
<div class="am-form-group am-form-file">
|
||||
<label class="block">icon图标<span class="am-form-group-label-tips">建议100*100px</span></label>
|
||||
<label class="am-block">icon图标<span class="am-form-group-label-tips">建议100*100px</span></label>
|
||||
<ul class="plug-file-upload-view goods-category-icon-images-view" data-form-name="icon" data-max-number="1" data-dialog-type="images">
|
||||
<li>
|
||||
<input type="hidden" name="icon" value="" />
|
||||
@ -35,7 +35,7 @@
|
||||
</div>
|
||||
<div class="am-u-sm-6 am-padding-horizontal-0">
|
||||
<div class="am-form-group am-form-file">
|
||||
<label class="block">大图片<span class="am-form-group-label-tips">建议360*360px</span></label>
|
||||
<label class="am-block">大图片<span class="am-form-group-label-tips">建议360*360px</span></label>
|
||||
<ul class="plug-file-upload-view goods-category-big_images-images-view" data-form-name="big_images" data-max-number="1" data-dialog-type="images">
|
||||
<li>
|
||||
<input type="hidden" name="big_images" value="" />
|
||||
|
||||
@ -95,7 +95,7 @@
|
||||
</div>
|
||||
<div class="am-u-sm-6 am-padding-horizontal-0">
|
||||
<div class="am-form-group">
|
||||
<label class="block">是否已回复</label>
|
||||
<label class="am-block">是否已回复</label>
|
||||
<input name="is_reply" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if isset($data['is_reply']) and $data['is_reply'] eq 1}}checked="true"{{/if}} />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -28,7 +28,7 @@
|
||||
</div>
|
||||
|
||||
<div class="business-form-group">
|
||||
<label class="block">参数配置<span class="am-form-group-label-tips-must">*</span></label>
|
||||
<label class="am-block">参数配置<span class="am-form-group-label-tips-must">*</span></label>
|
||||
{{include file="public/goodsparamstemplate/tips" /}}
|
||||
<!-- 通过配置生成商品参数 -->
|
||||
<div class="am-dropdown" id="parameters-quick-container" data-am-dropdown>
|
||||
@ -55,7 +55,7 @@
|
||||
{{include file="public/goodsparamstemplate/table" /}}
|
||||
</div>
|
||||
<div class="am-form-group">
|
||||
<label class="block">是否启用</label>
|
||||
<label class="am-block">是否启用</label>
|
||||
<input name="is_enable" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if (isset($data['is_enable']) and $data['is_enable'] eq 1) or !isset($data['is_enable'])}}checked="true"{{/if}} />
|
||||
</div>
|
||||
|
||||
|
||||
@ -32,7 +32,7 @@
|
||||
<input type="text" name="content" placeholder="规格值(输入回车可实现多个)" minlength="1" maxlength="1000" data-validation-message="规格值格式1~1000个字符" class="am-radius" {{if !empty($data['content'])}} value="{{$data.content}}"{{/if}} required data-am-tagsinput />
|
||||
</div>
|
||||
<div class="am-form-group">
|
||||
<label class="block">是否启用</label>
|
||||
<label class="am-block">是否启用</label>
|
||||
<input name="is_enable" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if (isset($data['is_enable']) and $data['is_enable'] eq 1) or !isset($data['is_enable'])}}checked="true"{{/if}} />
|
||||
</div>
|
||||
|
||||
|
||||
@ -1,5 +1,14 @@
|
||||
<div class="am-form-group region-linkage" data-url="{{:MyUrl('admin/region/node')}}">
|
||||
<label class="block">省市区{{if isset($is_force_region_choice) and $is_force_region_choice eq 1}}<span class="am-form-group-label-tips-must">*</span>{{/if}}</label>
|
||||
<div class="am-form-group region-linkage" data-url="{{:MyUrl('admin/region/node')}}" data-code-url="{{:MyUrl('admin/region/codedata')}}">
|
||||
<label class="am-block">
|
||||
<span>省市区</span>
|
||||
{{if isset($is_force_region_choice) and $is_force_region_choice eq 1}}<span class="am-form-group-label-tips-must">*</span>{{/if}}
|
||||
<div class="am-input-group am-input-group-sm am-fr region-linkage-code">
|
||||
<input type="text" class="am-form-field am-radius" placeholder="地区编号" />
|
||||
<span class="am-input-group-btn">
|
||||
<button type="button" class="am-btn am-btn-default am-btn-xs am-radius">搜索</button>
|
||||
</span>
|
||||
</div>
|
||||
</label>
|
||||
<select name="province" data-next="city" class="am-radius chosen-select" data-placeholder="省份" data-validation-message="请选择省份" data-value="{{if isset($data['province'])}}{{$data.province}}{{else /}}0{{/if}}" {{if isset($is_force_region_choice) and $is_force_region_choice eq 1}}required{{/if}}>
|
||||
<option value="">省份</option>
|
||||
</select>
|
||||
|
||||
@ -28,7 +28,7 @@
|
||||
</div>
|
||||
|
||||
<div class="am-form-group am-form-file">
|
||||
<label class="block">LOGO</label>
|
||||
<label class="am-block">LOGO</label>
|
||||
<ul class="plug-file-upload-view logo-images-view" data-form-name="logo" data-max-number="1" data-dialog-type="images">
|
||||
{{if !empty($data['logo'])}}
|
||||
<li>
|
||||
@ -48,7 +48,7 @@
|
||||
{{foreach $data.element as $element}}
|
||||
<div class="am-form-group">
|
||||
{{if !empty($element['title'])}}
|
||||
<label class="block">{{$element.title}}{{if !empty($element['desc'])}}<span class="am-form-group-label-tips">{{$element.desc}}</span>{{/if}}</label>
|
||||
<label class="am-block">{{$element.title}}{{if !empty($element['desc'])}}<span class="am-form-group-label-tips">{{$element.desc}}</span>{{/if}}</label>
|
||||
{{/if}}
|
||||
{{switch element.element}}
|
||||
{{case input}}
|
||||
@ -154,12 +154,12 @@
|
||||
</div>
|
||||
|
||||
<div class="am-form-group">
|
||||
<label class="block">用户开放</label>
|
||||
<label class="am-block">用户开放</label>
|
||||
<input name="is_open_user" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if (isset($data['is_open_user']) and $data['is_open_user'] eq 1) or !isset($data['is_open_user'])}}checked="true"{{/if}} />
|
||||
</div>
|
||||
|
||||
<div class="am-form-group">
|
||||
<label class="block">是否启用</label>
|
||||
<label class="am-block">是否启用</label>
|
||||
<input name="is_enable" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if (isset($data['is_enable']) and $data['is_enable'] eq 1) or !isset($data['is_enable'])}}checked="true"{{/if}} />
|
||||
</div>
|
||||
<div class="am-form-group am-form-group-refreshing am-margin-top-lg am-padding-left-0">
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
</div>
|
||||
|
||||
<div class="am-form-group am-form-file">
|
||||
<label class="block">LOGO<span class="am-form-group-label-tips">建议600x600px</span></label>
|
||||
<label class="am-block">LOGO<span class="am-form-group-label-tips">建议600x600px</span></label>
|
||||
<ul class="plug-file-upload-view plugins-logo-view" data-form-name="logo" data-max-number="1" data-delete="0" data-dialog-type="images">
|
||||
<li>
|
||||
<input type="text" name="logo" value="{{if !empty($data['logo_old'])}}{{$data.logo_old}}{{/if}}" data-validation-message="请上传图片" required />
|
||||
@ -47,7 +47,7 @@
|
||||
</div>
|
||||
|
||||
<div class="am-form-group am-form-file">
|
||||
<label class="block">描述</label>
|
||||
<label class="am-block">描述</label>
|
||||
<textarea rows="3" name="desc" class="am-radius am-field-valid" placeholder="描述" minlength="2" maxlength="60" data-validation-message="描述内容格式 2~60 个字符">{{if !empty($data['desc'])}}{{$data.desc}}{{/if}}</textarea>
|
||||
</div>
|
||||
|
||||
@ -70,7 +70,7 @@
|
||||
</div>
|
||||
|
||||
<div class="am-form-group">
|
||||
<label class="block">是否有前端入口<span class="am-form-group-label-tips">前端独立页面入口</span></label>
|
||||
<label class="am-block">是否有前端入口<span class="am-form-group-label-tips">前端独立页面入口</span></label>
|
||||
<input name="is_home" value="1" type="checkbox" data-off-text="没有" data-on-text="有" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if isset($data['is_home']) and $data['is_home'] eq 1}}checked="true"{{/if}} />
|
||||
</div>
|
||||
|
||||
|
||||
@ -40,7 +40,7 @@
|
||||
</div>
|
||||
|
||||
<div class="am-form-group am-form-file">
|
||||
<label class="block">导航图标<span class="am-form-group-label-tips-must">*</span></label>
|
||||
<label class="am-block">导航图标<span class="am-form-group-label-tips-must">*</span></label>
|
||||
<ul class="plug-file-upload-view slide-images_url-images-view" data-form-name="images_url" data-max-number="1" data-delete="0" data-dialog-type="images">
|
||||
<li>
|
||||
<input type="text" name="images_url" value="{{if !empty($data['images_url'])}}{{$data.images_url}}{{/if}}" data-validation-message="请上传图片" required />
|
||||
@ -61,7 +61,7 @@
|
||||
<input type="number" placeholder="顺序" name="sort" min="0" max="255" data-validation-message="顺序 0~255 之间的数值" class="am-radius" value="{{if isset($data['sort'])}}{{$data.sort}}{{else /}}0{{/if}}" required />
|
||||
</div>
|
||||
<div class="am-form-group">
|
||||
<label class="block">是否启用</label>
|
||||
<label class="am-block">是否启用</label>
|
||||
<input name="is_enable" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if !empty($data) and $data['is_enable'] eq 1}} checked="true"{{/if}} />
|
||||
</div>
|
||||
<div class="am-form-group am-form-group-refreshing am-margin-top-lg am-padding-left-0">
|
||||
|
||||
@ -18,18 +18,52 @@
|
||||
</div>
|
||||
<div class="am-popup-bd">
|
||||
<!-- form start -->
|
||||
<form class="am-form form-validation am-form-popup-fixed" action="{{:MyUrl('admin/region/save')}}" method="POST" request-type="ajax-fun" request-value="TreeFormSaveBack">
|
||||
<div class="am-form-group">
|
||||
<label>名称<span class="am-form-group-label-tips-must">*</span></label>
|
||||
<input type="text" placeholder="名称" name="name" minlength="2" maxlength="16" data-validation-message="名称格式 2~16 个字符" class="am-radius" required />
|
||||
<form class="am-form form-validation am-form-pure am-form-full-screen am-form-popup-fixed" action="{{:MyUrl('admin/region/save')}}" method="POST" request-type="ajax-fun" request-value="TreeFormSaveBack">
|
||||
<div class="am-cf">
|
||||
<div class="am-u-sm-6 am-padding-horizontal-0">
|
||||
<div class="am-form-group">
|
||||
<label>唯一编号<a href="javascript:;" class="am-icon-question-circle am-text-warning am-margin-left-sm" data-am-popover="{content: '1. 留空则系统自动生成<br />3. 不要随意修改、避免数据错乱', trigger: 'hover focus', theme: 'sm'}"></a></label>
|
||||
<input type="text" placeholder="唯一编号" name="id" maxlength="16" data-validation-message="请输入唯一编号" class="am-radius" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-u-sm-6 am-padding-horizontal-0">
|
||||
<div class="am-form-group">
|
||||
<label>名称<span class="am-form-group-label-tips-must">*</span></label>
|
||||
<input type="text" placeholder="名称" name="name" minlength="2" maxlength="16" data-validation-message="名称格式 2~16 个字符" class="am-radius" required />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-form-group">
|
||||
<label>顺序</label>
|
||||
<input type="number" placeholder="顺序" name="sort" min="0" max="255" data-validation-message="顺序 0~255 之间的数值" class="am-radius" value="0" required />
|
||||
<div class="am-cf">
|
||||
<div class="am-u-sm-6 am-padding-horizontal-0">
|
||||
<div class="am-form-group">
|
||||
<label>经度</label>
|
||||
<input type="number" placeholder="经度" name="lng" step="0.01" data-validation-message="请输入经度" class="am-radius" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-u-sm-6 am-padding-horizontal-0">
|
||||
<div class="am-form-group">
|
||||
<label>纬度</label>
|
||||
<input type="number" placeholder="纬度" name="lat" step="0.01" data-validation-message="请输入纬度" class="am-radius" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-cf">
|
||||
<div class="am-u-sm-6 am-padding-horizontal-0">
|
||||
<div class="am-form-group">
|
||||
<label>首字母</label>
|
||||
<input type="text" placeholder="首字母" name="letters" data-validation-message="请填写首字母" class="am-radius" value="" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-u-sm-6 am-padding-horizontal-0">
|
||||
<div class="am-form-group">
|
||||
<label>顺序</label>
|
||||
<input type="number" placeholder="顺序" name="sort" min="0" max="255" data-validation-message="顺序 0~255 之间的数值" class="am-radius" value="0" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{include file="lib/enable" /}}
|
||||
<div class="am-form-popup-submit">
|
||||
<input type="hidden" name="id" />
|
||||
<input type="hidden" name="pid" value="0" />
|
||||
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm am-btn-block" data-am-loading="{loadingText:'处理中...'}">保存</button>
|
||||
</div>
|
||||
|
||||
@ -69,7 +69,7 @@
|
||||
</div>
|
||||
|
||||
<div class="am-form-group">
|
||||
<label class="block">是否启用</label>
|
||||
<label class="am-block">是否启用</label>
|
||||
<input name="is_enable" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if (isset($data['is_enable']) and $data['is_enable'] eq 1) or !isset($data['is_enable'])}}checked="true"{{/if}} />
|
||||
</div>
|
||||
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
<input type="text" name="{{$data.home_site_name.only_tag}}" minlength="1" placeholder="{{$data.home_site_name.name}}" data-validation-message="{{$data.home_site_name.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.home_site_name.value}}"{{/if}} required />
|
||||
</div>
|
||||
<div class="am-form-group">
|
||||
<label class="block">{{$data.home_site_logo.name}}<span class="am-form-group-label-tips">{{$data.home_site_logo.describe}}</span></label>
|
||||
<label class="am-block">{{$data.home_site_logo.name}}<span class="am-form-group-label-tips">{{$data.home_site_logo.describe}}</span></label>
|
||||
<ul class="plug-file-upload-view home_site_logo-images-view" data-form-name="home_site_logo" data-max-number="1" data-delete="0" data-dialog-type="images">
|
||||
{{if !empty($data['home_site_logo']['value'])}}
|
||||
<li>
|
||||
@ -33,7 +33,7 @@
|
||||
</div>
|
||||
|
||||
<div class="am-form-group">
|
||||
<label class="block">{{$data.home_site_logo_wap.name}}<span class="am-form-group-label-tips">{{$data.home_site_logo_wap.describe}}</span></label>
|
||||
<label class="am-block">{{$data.home_site_logo_wap.name}}<span class="am-form-group-label-tips">{{$data.home_site_logo_wap.describe}}</span></label>
|
||||
<ul class="plug-file-upload-view home_site_logo_wap-images-view" data-form-name="home_site_logo_wap" data-max-number="1" data-delete="0" data-dialog-type="images">
|
||||
{{if !empty($data['home_site_logo_wap']['value'])}}
|
||||
<li>
|
||||
@ -46,7 +46,7 @@
|
||||
</div>
|
||||
|
||||
<div class="am-form-group">
|
||||
<label class="block">{{$data.home_site_logo_square.name}}<span class="am-form-group-label-tips">{{$data.home_site_logo_square.describe}}</span></label>
|
||||
<label class="am-block">{{$data.home_site_logo_square.name}}<span class="am-form-group-label-tips">{{$data.home_site_logo_square.describe}}</span></label>
|
||||
<ul class="plug-file-upload-view home_site_logo_square-images-view" data-form-name="home_site_logo_square" data-max-number="1" data-delete="0" data-dialog-type="images">
|
||||
{{if !empty($data['home_site_logo_square']['value'])}}
|
||||
<li>
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
</div>
|
||||
<div class="am-panel-bd am-padding-vertical-xs">
|
||||
<div class="am-form-group">
|
||||
<label class="block">{{$data.home_site_user_forgetpwd_ad1_images.name}}<span class="am-form-group-label-tips">{{$data.home_site_user_forgetpwd_ad1_images.describe}}</span></label>
|
||||
<label class="am-block">{{$data.home_site_user_forgetpwd_ad1_images.name}}<span class="am-form-group-label-tips">{{$data.home_site_user_forgetpwd_ad1_images.describe}}</span></label>
|
||||
<ul class="plug-file-upload-view home_site_user_forgetpwd_ad1_images-images-view" data-form-name="home_site_user_forgetpwd_ad1_images" data-max-number="1" data-dialog-type="images">
|
||||
{{if !empty($data['home_site_user_forgetpwd_ad1_images']['value'])}}
|
||||
<li>
|
||||
@ -51,7 +51,7 @@
|
||||
</div>
|
||||
<div class="am-panel-bd am-padding-vertical-xs">
|
||||
<div class="am-form-group">
|
||||
<label class="block">{{$data.home_site_user_forgetpwd_ad2_images.name}}<span class="am-form-group-label-tips">{{$data.home_site_user_forgetpwd_ad2_images.describe}}</span></label>
|
||||
<label class="am-block">{{$data.home_site_user_forgetpwd_ad2_images.name}}<span class="am-form-group-label-tips">{{$data.home_site_user_forgetpwd_ad2_images.describe}}</span></label>
|
||||
<ul class="plug-file-upload-view home_site_user_forgetpwd_ad2_images-images-view" data-form-name="home_site_user_forgetpwd_ad2_images" data-max-number="1" data-dialog-type="images">
|
||||
{{if !empty($data['home_site_user_forgetpwd_ad2_images']['value'])}}
|
||||
<li>
|
||||
@ -86,7 +86,7 @@
|
||||
</div>
|
||||
<div class="am-panel-bd am-padding-vertical-xs">
|
||||
<div class="am-form-group">
|
||||
<label class="block">{{$data.home_site_user_forgetpwd_ad3_images.name}}<span class="am-form-group-label-tips">{{$data.home_site_user_forgetpwd_ad3_images.describe}}</span></label>
|
||||
<label class="am-block">{{$data.home_site_user_forgetpwd_ad3_images.name}}<span class="am-form-group-label-tips">{{$data.home_site_user_forgetpwd_ad3_images.describe}}</span></label>
|
||||
<ul class="plug-file-upload-view home_site_user_forgetpwd_ad3_images-images-view" data-form-name="home_site_user_forgetpwd_ad3_images" data-max-number="1" data-dialog-type="images">
|
||||
{{if !empty($data['home_site_user_forgetpwd_ad3_images']['value'])}}
|
||||
<li>
|
||||
|
||||
@ -42,7 +42,7 @@
|
||||
</div>
|
||||
<div class="am-panel-bd am-padding-vertical-xs">
|
||||
<div class="am-form-group">
|
||||
<label class="block">{{$data.home_site_user_login_ad1_images.name}}<span class="am-form-group-label-tips">{{$data.home_site_user_login_ad1_images.describe}}</span></label>
|
||||
<label class="am-block">{{$data.home_site_user_login_ad1_images.name}}<span class="am-form-group-label-tips">{{$data.home_site_user_login_ad1_images.describe}}</span></label>
|
||||
<ul class="plug-file-upload-view home_site_user_login_ad1_images-images-view" data-form-name="home_site_user_login_ad1_images" data-max-number="1" data-dialog-type="images">
|
||||
{{if !empty($data['home_site_user_login_ad1_images']['value'])}}
|
||||
<li>
|
||||
@ -77,7 +77,7 @@
|
||||
</div>
|
||||
<div class="am-panel-bd am-padding-vertical-xs">
|
||||
<div class="am-form-group">
|
||||
<label class="block">{{$data.home_site_user_login_ad2_images.name}}<span class="am-form-group-label-tips">{{$data.home_site_user_login_ad2_images.describe}}</span></label>
|
||||
<label class="am-block">{{$data.home_site_user_login_ad2_images.name}}<span class="am-form-group-label-tips">{{$data.home_site_user_login_ad2_images.describe}}</span></label>
|
||||
<ul class="plug-file-upload-view home_site_user_login_ad2_images-images-view" data-form-name="home_site_user_login_ad2_images" data-max-number="1" data-dialog-type="images">
|
||||
{{if !empty($data['home_site_user_login_ad2_images']['value'])}}
|
||||
<li>
|
||||
@ -112,7 +112,7 @@
|
||||
</div>
|
||||
<div class="am-panel-bd am-padding-vertical-xs">
|
||||
<div class="am-form-group">
|
||||
<label class="block">{{$data.home_site_user_login_ad3_images.name}}<span class="am-form-group-label-tips">{{$data.home_site_user_login_ad3_images.describe}}</span></label>
|
||||
<label class="am-block">{{$data.home_site_user_login_ad3_images.name}}<span class="am-form-group-label-tips">{{$data.home_site_user_login_ad3_images.describe}}</span></label>
|
||||
<ul class="plug-file-upload-view home_site_user_login_ad3_images-images-view" data-form-name="home_site_user_login_ad3_images" data-max-number="1" data-dialog-type="images">
|
||||
{{if !empty($data['home_site_user_login_ad3_images']['value'])}}
|
||||
<li>
|
||||
|
||||
@ -46,7 +46,7 @@
|
||||
</div>
|
||||
|
||||
<div class="am-form-group">
|
||||
<label class="block">{{$data.home_site_user_register_bg_images.name}}<span class="am-form-group-label-tips">{{$data.home_site_user_register_bg_images.describe}}</span></label>
|
||||
<label class="am-block">{{$data.home_site_user_register_bg_images.name}}<span class="am-form-group-label-tips">{{$data.home_site_user_register_bg_images.describe}}</span></label>
|
||||
<ul class="plug-file-upload-view home_site_user_register_bg_images-images-view" data-form-name="home_site_user_register_bg_images" data-max-number="1" data-dialog-type="images">
|
||||
{{if !empty($data['home_site_user_register_bg_images']['value'])}}
|
||||
<li>
|
||||
|
||||
@ -116,7 +116,7 @@
|
||||
<div class="am-popup-bd">
|
||||
<form class="am-form form-validation-address" method="post" request-type="sync" request-value="ViewAddressModalBack">
|
||||
<div class="am-form-group am-form-file">
|
||||
<label class="block">logo图片<span class="am-form-group-label-tips">选传</span><span class="am-form-group-label-tips">建议300x300px</span></label>
|
||||
<label class="am-block">logo图片<span class="am-form-group-label-tips">选传</span><span class="am-form-group-label-tips">建议300x300px</span></label>
|
||||
<ul class="plug-file-upload-view sitetype-logo" data-form-name="logo" data-max-number="1" data-dialog-type="images"></ul>
|
||||
<div class="plug-file-upload-submit" data-view-tag="ul.sitetype-logo">+上传图片</div>
|
||||
</div>
|
||||
|
||||
@ -40,7 +40,7 @@
|
||||
</div>
|
||||
|
||||
<div class="am-form-group am-form-file">
|
||||
<label class="block">轮播图片<span class="am-form-group-label-tips-must">*</span></label>
|
||||
<label class="am-block">轮播图片<span class="am-form-group-label-tips-must">*</span></label>
|
||||
<ul class="plug-file-upload-view slide-images_url-images-view" data-form-name="images_url" data-max-number="1" data-delete="0" data-dialog-type="images">
|
||||
<li>
|
||||
<input type="text" name="images_url" value="{{if !empty($data['images_url'])}}{{$data.images_url}}{{/if}}" data-validation-message="请上传图片" required />
|
||||
@ -68,7 +68,7 @@
|
||||
</div>
|
||||
|
||||
<div class="am-form-group">
|
||||
<label class="block">是否启用</label>
|
||||
<label class="am-block">是否启用</label>
|
||||
<input name="is_enable" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if (!empty($data) and $data['is_enable'] eq 1) or empty($data)}}checked="true"{{/if}} />
|
||||
</div>
|
||||
<div class="am-form-group am-form-group-refreshing am-margin-top-lg am-padding-left-0">
|
||||
|
||||
@ -66,7 +66,7 @@
|
||||
</div>
|
||||
|
||||
<div class="am-form-group">
|
||||
<label class="block">是否默认</label>
|
||||
<label class="am-block">是否默认</label>
|
||||
<input name="is_default" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="49" data-am-switch {{if isset($data['is_default']) and $data['is_default'] eq 1}}checked="true"{{/if}} />
|
||||
</div>
|
||||
<div class="am-alert am-alert-secondary">
|
||||
|
||||
@ -31,13 +31,13 @@
|
||||
<div class="am-cf">
|
||||
<div class="am-u-sm-6 am-padding-horizontal-0">
|
||||
<div class="am-form-group">
|
||||
<label class="block">是否默认</label>
|
||||
<label class="am-block">是否默认</label>
|
||||
<input name="is_default" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="49" data-am-switch {{if isset($data['is_default']) and $data['is_default'] eq 1}}checked="true"{{/if}} />
|
||||
</div>
|
||||
</div>
|
||||
<div class="am-u-sm-6 am-padding-horizontal-0">
|
||||
<div class="am-form-group">
|
||||
<label class="block">是否启用</label>
|
||||
<label class="am-block">是否启用</label>
|
||||
<input name="is_enable" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="49" data-am-switch {{if isset($data['is_enable']) and $data['is_enable'] eq 1}}checked="true"{{/if}} />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -69,5 +69,18 @@ class Region extends Common
|
||||
{
|
||||
return ApiService::ApiDataReturn(RegionService::RegionAll());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取地区编号数据
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2018-09-21
|
||||
* @desc description
|
||||
*/
|
||||
public function CodeData()
|
||||
{
|
||||
return ApiService::ApiDataReturn(RegionService::RegionCodeData($this->data_post));
|
||||
}
|
||||
}
|
||||
?>
|
||||
@ -51,7 +51,7 @@ class Region extends Common
|
||||
['pid', '=', $pid],
|
||||
],
|
||||
];
|
||||
return ApiService::ApiDataReturn(DataReturn('获取成功', 0, RegionService::RegionNode($params)));
|
||||
return ApiService::ApiDataReturn(DataReturn('success', 0, RegionService::RegionNode($params)));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -66,5 +66,18 @@ class Region extends Common
|
||||
{
|
||||
return ApiService::ApiDataReturn(RegionService::RegionAll());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取地区编号数据
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2018-09-21
|
||||
* @desc description
|
||||
*/
|
||||
public function CodeData()
|
||||
{
|
||||
return ApiService::ApiDataReturn(RegionService::RegionCodeData($this->data_post));
|
||||
}
|
||||
}
|
||||
?>
|
||||
@ -1,5 +1,14 @@
|
||||
<div class="am-form-group region-linkage" data-url="{{:MyUrl('index/region/index')}}">
|
||||
<label class="block">省市区{{if isset($is_force_region_choice) and $is_force_region_choice eq 1}}<span class="am-form-group-label-tips-must">*</span>{{/if}}</label>
|
||||
<div class="am-form-group region-linkage" data-url="{{:MyUrl('index/region/index')}}" data-code-url="{{:MyUrl('index/region/codedata')}}">
|
||||
<label class="am-block">
|
||||
<span>省市区</span>
|
||||
{{if isset($is_force_region_choice) and $is_force_region_choice eq 1}}<span class="am-form-group-label-tips-must">*</span>{{/if}}
|
||||
<div class="am-input-group am-input-group-sm am-fr region-linkage-code">
|
||||
<input type="text" class="am-form-field am-radius" placeholder="地区编号" />
|
||||
<span class="am-input-group-btn">
|
||||
<button type="button" class="am-btn am-btn-default am-btn-xs am-radius">搜索</button>
|
||||
</span>
|
||||
</div>
|
||||
</label>
|
||||
<select name="province" data-next="city" class="am-radius chosen-select" data-placeholder="省份" data-validation-message="请选择省份" data-value="{{if isset($data['province'])}}{{$data.province}}{{else /}}0{{/if}}" {{if isset($is_force_region_choice) and $is_force_region_choice eq 1}}required{{/if}}>
|
||||
<option value="">省份</option>
|
||||
</select>
|
||||
|
||||
@ -96,7 +96,7 @@
|
||||
{{/if}}
|
||||
|
||||
<div class="am-form-group business-form-block">
|
||||
<label class="block">是否匿名<span class="am-form-group-label-tips">开启后你写的评论会以匿名的形式展现</span></label>
|
||||
<label class="am-block">是否匿名<span class="am-form-group-label-tips">开启后你写的评论会以匿名的形式展现</span></label>
|
||||
<input name="is_anonymous" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch />
|
||||
</div>
|
||||
|
||||
|
||||
@ -48,7 +48,7 @@
|
||||
</div>
|
||||
|
||||
<div class="am-form-group">
|
||||
<label class="block">是否默认</label>
|
||||
<label class="am-block">是否默认</label>
|
||||
<input name="is_default" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="49" data-am-switch {{if isset($data['is_default']) and $data['is_default'] eq 1}}checked="true"{{/if}} />
|
||||
</div>
|
||||
{{if MyC('home_user_address_idcard_status') eq 1}}
|
||||
|
||||
@ -35,6 +35,7 @@ return [
|
||||
'goods_no_choice_spec_tips' => '请选择规格',
|
||||
'goods_spec_empty_tips' => '无规格数据',
|
||||
'goods_id_empty_tips' => '商品ID数据',
|
||||
'input_empty_tips' => '请输入数据',
|
||||
'store_enabled_tips' => '您的浏览器不支持本地存储。请禁用“专用模式”,或升级到现代浏览器。',
|
||||
// 上传下载
|
||||
'get_loading_tips' => '正在获取中..',
|
||||
@ -88,6 +89,8 @@ return [
|
||||
'error' => '异常错误',
|
||||
'operate_fail' => '操作失败',
|
||||
'operate_success' => '操作成功',
|
||||
'get_fail' => '获取失败',
|
||||
'get_success' => '获取成功',
|
||||
'update_fail' => '更新失败',
|
||||
'update_success' => '更新成功',
|
||||
'insert_fail' => '添加失败',
|
||||
|
||||
@ -14,7 +14,7 @@ return [
|
||||
// 全局请求缓存
|
||||
// \think\middleware\CheckRequestCache::class,
|
||||
// 多语言加载
|
||||
// \think\middleware\LoadLangPack::class,
|
||||
\think\middleware\LoadLangPack::class,
|
||||
// Session初始化
|
||||
\think\middleware\SessionInit::class
|
||||
];
|
||||
|
||||
@ -622,6 +622,7 @@ class GoodsService
|
||||
$is_category = (isset($params['is_category']) && $params['is_category'] == true) ? true : false;
|
||||
$is_params = (isset($params['is_params']) && $params['is_params'] == true) ? true : false;
|
||||
$data_key_field = empty($params['data_key_field']) ? 'id' : $params['data_key_field'];
|
||||
$goods_ids = array_filter(array_column($data, $data_key_field));
|
||||
|
||||
// 字段列表
|
||||
$keys = ArrayKeys($data);
|
||||
@ -639,7 +640,13 @@ class GoodsService
|
||||
}
|
||||
|
||||
// 商品分类
|
||||
$category_group = $is_category ? self::GoodsListCategoryGroupList(array_column($data, $data_key_field)) : [];
|
||||
$category_group = $is_category ? self::GoodsListCategoryGroupList($goods_ids) : [];
|
||||
|
||||
// 规格
|
||||
$spec_group = $is_spec ? self::GoodsSpecificationsData($goods_ids) : [];
|
||||
|
||||
// 参数
|
||||
$params_group = $is_params ? self::GoodsParametersData($goods_ids) : [];
|
||||
|
||||
// 开始处理数据
|
||||
foreach($data as &$v)
|
||||
@ -774,13 +781,13 @@ class GoodsService
|
||||
// 获取规格
|
||||
if($is_spec && !empty($data_id))
|
||||
{
|
||||
$v['specifications'] = self::GoodsSpecificationsData($data_id);
|
||||
$v['specifications'] = (!empty($spec_group) && array_key_exists($data_id, $spec_group)) ? $spec_group[$data_id] : [];
|
||||
}
|
||||
|
||||
// 获取商品参数
|
||||
if($is_params && !empty($data_id))
|
||||
{
|
||||
$v['parameters'] = self::GoodsParametersData($data_id);
|
||||
$v['parameters'] = (!empty($params_group) && array_key_exists($data_id, $params_group)) ? $params_group[$data_id] : [];
|
||||
}
|
||||
|
||||
// 获取app内容
|
||||
@ -959,50 +966,63 @@ class GoodsService
|
||||
* @version 1.0.0
|
||||
* @date 2020-07-16
|
||||
* @desc description
|
||||
* @param [int] $goods_id [商品id]
|
||||
* @param [array] $goods_ids [商品id]
|
||||
*/
|
||||
public static function GoodsSpecificationsData($goods_id)
|
||||
public static function GoodsSpecificationsData($goods_ids)
|
||||
{
|
||||
// 条件
|
||||
$where = ['goods_id'=>$goods_id];
|
||||
|
||||
// 规格类型
|
||||
$choose = Db::name('GoodsSpecType')->where($where)->order('id asc')->select()->toArray();
|
||||
if(!empty($choose))
|
||||
$group = [];
|
||||
$data = Db::name('GoodsSpecType')->where(['goods_id'=>$goods_ids])->order('id asc')->select()->toArray();
|
||||
if(!empty($data))
|
||||
{
|
||||
// 数据处理
|
||||
foreach($choose as &$temp_type)
|
||||
// 分组
|
||||
foreach($data as $v)
|
||||
{
|
||||
$temp_type_value = json_decode($temp_type['value'], true);
|
||||
foreach($temp_type_value as &$vs)
|
||||
if(!array_key_exists($v['goods_id'], $group))
|
||||
{
|
||||
$vs['images'] = ResourcesService::AttachmentPathViewHandle($vs['images']);
|
||||
$group[$v['goods_id']] = ['choose'=>[]];
|
||||
}
|
||||
$temp_type['value'] = $temp_type_value;
|
||||
$temp_type['add_time'] = date('Y-m-d H:i:s');
|
||||
$group[$v['goods_id']]['choose'][] = $v;
|
||||
}
|
||||
|
||||
// 只有一个规格的时候直接获取规格值的库存数
|
||||
if(count($choose) == 1)
|
||||
// 数据处理
|
||||
foreach($group as $gid=>&$gv)
|
||||
{
|
||||
foreach($choose[0]['value'] as &$temp_spec)
|
||||
if(!empty($gv['choose']))
|
||||
{
|
||||
$temp_spec_params = [
|
||||
'id' => $goods_id,
|
||||
'spec' => [
|
||||
['type' => $choose[0]['name'], 'value' => $temp_spec['name']]
|
||||
],
|
||||
];
|
||||
$temp = self::GoodsSpecDetail($temp_spec_params);
|
||||
if($temp['code'] == 0)
|
||||
// 基础处理
|
||||
foreach($gv['choose'] as &$gvs)
|
||||
{
|
||||
$temp_spec['is_only_level_one'] = 1;
|
||||
$temp_spec['inventory'] = $temp['data']['spec_base']['inventory'];
|
||||
$gvs_value = json_decode($gvs['value'], true);
|
||||
foreach($gvs_value as &$gvss)
|
||||
{
|
||||
$gvss['images'] = ResourcesService::AttachmentPathViewHandle($gvss['images']);
|
||||
}
|
||||
$gvs['value'] = $gvs_value;
|
||||
$gvs['add_time'] = date('Y-m-d H:i:s', $gvs['add_time']);
|
||||
}
|
||||
|
||||
// 只有一个规格的时候直接获取规格值的库存数
|
||||
if(count($gv['choose']) == 1)
|
||||
{
|
||||
foreach($gv['choose'][0]['value'] as &$temp_spec)
|
||||
{
|
||||
$temp_spec_params = [
|
||||
'id' => $gid,
|
||||
'spec' => [
|
||||
['type' => $gv['choose'][0]['name'], 'value' => $temp_spec['name']]
|
||||
],
|
||||
];
|
||||
$temp = self::GoodsSpecDetail($temp_spec_params);
|
||||
if($temp['code'] == 0)
|
||||
{
|
||||
$temp_spec['is_only_level_one'] = 1;
|
||||
$temp_spec['inventory'] = $temp['data']['spec_base']['inventory'];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return ['choose'=>$choose];
|
||||
return $group;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1012,49 +1032,43 @@ class GoodsService
|
||||
* @version 1.0.0
|
||||
* @date 2020-08-31
|
||||
* @desc description
|
||||
* @param [int] $goods_id [商品id]
|
||||
* @param [array] $goods_ids [商品id]
|
||||
*/
|
||||
public static function GoodsParametersData($goods_id)
|
||||
public static function GoodsParametersData($goods_ids)
|
||||
{
|
||||
$base = [];
|
||||
$detail = [];
|
||||
$list = Db::name('GoodsParams')->where(['goods_id'=>$goods_id])->order('id asc')->select()->toArray();
|
||||
$data = [];
|
||||
$list = Db::name('GoodsParams')->where(['goods_id'=>$goods_ids])->order('id asc')->select()->toArray();
|
||||
if(!empty($list))
|
||||
{
|
||||
// 分组
|
||||
foreach($list as $v)
|
||||
{
|
||||
$temp = [
|
||||
'name' => $v['name'],
|
||||
'value' => $v['value'],
|
||||
];
|
||||
if(!array_key_exists($v['goods_id'], $data))
|
||||
{
|
||||
$data[$v['goods_id']] = ['base'=>[], 'detail'=>[]];
|
||||
}
|
||||
|
||||
// 基础
|
||||
if(in_array($v['type'], [0,2]))
|
||||
{
|
||||
$base[] = $temp;
|
||||
$data[$v['goods_id']]['base'][] = $v;
|
||||
}
|
||||
|
||||
// 详情
|
||||
if(in_array($v['type'], [0,1]))
|
||||
{
|
||||
$detail[] = $temp;
|
||||
$data[$v['goods_id']]['detail'][] = $v;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 返回的数据
|
||||
$data = [
|
||||
'base' => $base,
|
||||
'detail' => $detail,
|
||||
];
|
||||
|
||||
// 商品参数钩子
|
||||
$hook_name = 'plugins_service_goods_parameters_data';
|
||||
MyEventTrigger($hook_name, [
|
||||
'hook_name' => $hook_name,
|
||||
'is_backend' => true,
|
||||
'data' => &$data,
|
||||
'goods_id' => $goods_id,
|
||||
'goods_ids' => $goods_ids,
|
||||
]);
|
||||
|
||||
return $data;
|
||||
@ -2335,56 +2349,72 @@ class GoodsService
|
||||
// 条件
|
||||
$goods_id = intval($params['id']);
|
||||
$where = [
|
||||
'goods_id' => intval($params['id']),
|
||||
'goods_id' => $goods_id,
|
||||
];
|
||||
|
||||
// 有规格值
|
||||
// 规格数据
|
||||
// 规格不为数组则为json字符串
|
||||
$spec = [];
|
||||
if(!empty($params['spec']))
|
||||
{
|
||||
// 规格不为数组则为json字符串
|
||||
if(!is_array($params['spec']))
|
||||
{
|
||||
$params['spec'] = json_decode(htmlspecialchars_decode($params['spec']), true);
|
||||
$spec = json_decode(htmlspecialchars_decode($params['spec']), true);
|
||||
}
|
||||
$where['value'] = array_column($params['spec'], 'value');
|
||||
$spec = array_column($params['spec'], 'value');
|
||||
}
|
||||
|
||||
// 获取规格值基础值id
|
||||
$ids = Db::name('GoodsSpecValue')->where($where)->column('goods_spec_base_id');
|
||||
if(!empty($ids))
|
||||
// 规格基础静态临时存储
|
||||
static $goods_service_goods_spec_base_static_data = [];
|
||||
$key = $goods_id.(empty($spec) ? '' : md5(json_encode($spec, JSON_UNESCAPED_UNICODE)));
|
||||
if(array_key_exists($key, $goods_service_goods_spec_base_static_data))
|
||||
{
|
||||
$base = $goods_service_goods_spec_base_static_data[$key];
|
||||
} else {
|
||||
// 有规格值
|
||||
$base = [];
|
||||
if(!empty($spec))
|
||||
{
|
||||
// 根据基础值id获取规格值列表
|
||||
$temp_data = Db::name('GoodsSpecValue')->where(['goods_spec_base_id'=>$ids])->field('goods_spec_base_id,value')->order('id asc')->select()->toArray();
|
||||
if(!empty($temp_data))
|
||||
// 获取规格值基础值id
|
||||
$where['value'] = $spec;
|
||||
$ids = Db::name('GoodsSpecValue')->where($where)->column('goods_spec_base_id');
|
||||
if(!empty($ids))
|
||||
{
|
||||
// 根据基础值id分组
|
||||
$data = [];
|
||||
foreach($temp_data as $v)
|
||||
// 根据基础值id获取规格值列表
|
||||
$temp_data = Db::name('GoodsSpecValue')->where(['goods_spec_base_id'=>$ids])->field('goods_spec_base_id,value')->order('id asc')->select()->toArray();
|
||||
if(!empty($temp_data))
|
||||
{
|
||||
$data[$v['goods_spec_base_id']][] = $v;
|
||||
}
|
||||
|
||||
// 从条件中匹配对应的规格值得到最终的基础值id
|
||||
$base_id = 0;
|
||||
$spec_str = implode('', array_column($params['spec'], 'value'));
|
||||
foreach($data as $value_v)
|
||||
{
|
||||
$temp_str = implode('', array_column($value_v, 'value'));
|
||||
if($temp_str == $spec_str)
|
||||
// 根据基础值id分组
|
||||
$data = [];
|
||||
foreach($temp_data as $v)
|
||||
{
|
||||
$base_id = $value_v[0]['goods_spec_base_id'];
|
||||
break;
|
||||
$data[$v['goods_spec_base_id']][] = $v;
|
||||
}
|
||||
|
||||
// 从条件中匹配对应的规格值得到最终的基础值id
|
||||
$base_id = 0;
|
||||
$spec_str = implode('', array_column($params['spec'], 'value'));
|
||||
foreach($data as $value_v)
|
||||
{
|
||||
$temp_str = implode('', array_column($value_v, 'value'));
|
||||
if($temp_str == $spec_str)
|
||||
{
|
||||
$base_id = $value_v[0]['goods_spec_base_id'];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// 获取基础值数据
|
||||
if(!empty($base_id))
|
||||
{
|
||||
$base = Db::name('GoodsSpecBase')->find($base_id);
|
||||
}
|
||||
}
|
||||
|
||||
// 获取基础值数据
|
||||
if(!empty($base_id))
|
||||
{
|
||||
$base = Db::name('GoodsSpecBase')->find($base_id);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$base = Db::name('GoodsSpecBase')->where($where)->find();
|
||||
}
|
||||
} else {
|
||||
$base = Db::name('GoodsSpecBase')->where($where)->find();
|
||||
$goods_service_goods_spec_base_static_data[$key] = $base;
|
||||
}
|
||||
|
||||
// 是否有规格
|
||||
|
||||
@ -38,29 +38,37 @@ class PluginsService
|
||||
*/
|
||||
public static function PluginsData($plugins, $attachment_field = [], $is_cache = true)
|
||||
{
|
||||
// 从缓存获取数据、数据不存在则从数据库读取
|
||||
$data = ($is_cache === true) ? self::PluginsCacheData($plugins) : [];
|
||||
if(empty($data) || !$is_cache || MyEnv('app_debug'))
|
||||
static $static_all_plugins_data = [];
|
||||
if(array_key_exists($plugins, $static_all_plugins_data))
|
||||
{
|
||||
// 获取数据
|
||||
$ret = self::PluginsField($plugins, 'data');
|
||||
if(!empty($ret['data']))
|
||||
$data = $static_all_plugins_data[$plugins];
|
||||
} else {
|
||||
// 从缓存获取数据、数据不存在则从数据库读取
|
||||
$data = ($is_cache === true) ? self::PluginsCacheData($plugins) : [];
|
||||
if($data === null || !$is_cache || MyEnv('app_debug'))
|
||||
{
|
||||
// 获取插件基础字段定义
|
||||
$field_data = self::PluginsBaseFieldData($plugins);
|
||||
|
||||
// 数据处理、未指定附件字段则使用系统获取的附件字段
|
||||
if(empty($attachment_field) && !empty($field_data['attachment_field']))
|
||||
// 获取数据
|
||||
$ret = self::PluginsField($plugins, 'data');
|
||||
if(!empty($ret['data']))
|
||||
{
|
||||
$attachment_field = $field_data['attachment_field'];
|
||||
}
|
||||
$data = self::PluginsDataHandle($ret['data'], $attachment_field);
|
||||
} else {
|
||||
$data = [];
|
||||
}
|
||||
// 获取插件基础字段定义
|
||||
$field_data = self::PluginsBaseFieldData($plugins);
|
||||
|
||||
// 存储缓存
|
||||
self::PluginsCacheStorage($plugins, $data);
|
||||
// 数据处理、未指定附件字段则使用系统获取的附件字段
|
||||
if(empty($attachment_field) && !empty($field_data['attachment_field']))
|
||||
{
|
||||
$attachment_field = $field_data['attachment_field'];
|
||||
}
|
||||
$data = self::PluginsDataHandle($ret['data'], $attachment_field);
|
||||
} else {
|
||||
$data = [];
|
||||
}
|
||||
|
||||
// 存储缓存
|
||||
self::PluginsCacheStorage($plugins, $data);
|
||||
}
|
||||
// 加入静态记录
|
||||
$static_all_plugins_data[$plugins] = $data;
|
||||
}
|
||||
return DataReturn(MyLang('common.handle_success'), 0, $data);
|
||||
}
|
||||
|
||||
@ -84,7 +84,7 @@ class RegionService
|
||||
public static function RegionNode($params = [])
|
||||
{
|
||||
// 数据参数
|
||||
$field = empty($params['field']) ? 'id,name,level,letters' : $params['field'];
|
||||
$field = empty($params['field']) ? 'id,pid,name,level,letters,lng,lat,sort,is_enable' : $params['field'];
|
||||
$where = empty($params['where']) ? [] : $params['where'];
|
||||
$order_by = empty($params['order_by']) ? 'sort asc,id asc' : trim($params['order_by']);
|
||||
|
||||
@ -107,14 +107,14 @@ class RegionService
|
||||
$id = isset($params['id']) ? intval($params['id']) : 0;
|
||||
|
||||
// 获取数据
|
||||
$field = 'id,pid,name,sort,is_enable';
|
||||
$field = 'id,pid,name,level,letters,lng,lat,sort,is_enable';
|
||||
$data = Db::name('Region')->field($field)->where(['pid'=>$id])->order('sort asc,id asc')->select()->toArray();
|
||||
if(!empty($data))
|
||||
{
|
||||
foreach($data as &$v)
|
||||
{
|
||||
$v['is_son'] = (Db::name('Region')->where(['pid'=>$v['id']])->count() > 0) ? 'ok' : 'no';
|
||||
$v['json'] = json_encode($v);
|
||||
$v['is_son'] = (Db::name('Region')->where(['pid'=>$v['id']])->count() > 0) ? 'ok' : 'no';
|
||||
$v['json'] = json_encode($v);
|
||||
}
|
||||
return DataReturn(MyLang('common.operate_success'), 0, $data);
|
||||
}
|
||||
@ -148,14 +148,21 @@ class RegionService
|
||||
|
||||
// 数据
|
||||
$data = [
|
||||
'name' => $params['name'],
|
||||
'pid' => isset($params['pid']) ? intval($params['pid']) : 0,
|
||||
'sort' => isset($params['sort']) ? intval($params['sort']) : 0,
|
||||
'is_enable' => isset($params['is_enable']) ? intval($params['is_enable']) : 0,
|
||||
'name' => $params['name'],
|
||||
'pid' => isset($params['pid']) ? intval($params['pid']) : 0,
|
||||
'lng' => isset($params['lng']) ? floatval($params['lng']) : 0,
|
||||
'lat' => isset($params['lat']) ? floatval($params['lat']) : 0,
|
||||
'letters' => empty($params['letters']) ? '' : $params['letters'],
|
||||
'sort' => isset($params['sort']) ? intval($params['sort']) : 0,
|
||||
'is_enable' => isset($params['is_enable']) ? intval($params['is_enable']) : 0,
|
||||
];
|
||||
|
||||
// 得到level,风车车
|
||||
$data['level'] = ($data['pid'] > 0) ? (Db::name('Region')->where(['id'=>$data['pid']])->value('level')+1) : 0;
|
||||
if(!empty($params['id']))
|
||||
{
|
||||
$params['id'] = intval($params['id']);
|
||||
}
|
||||
|
||||
// 得到level
|
||||
$data['level'] = ($data['pid'] > 0) ? (Db::name('Region')->where(['id'=>$data['pid']])->value('level')+1) : 1;
|
||||
|
||||
// 添加
|
||||
if(empty($params['id']))
|
||||
@ -322,8 +329,75 @@ class RegionService
|
||||
MyCache($key, $data, 60);
|
||||
}
|
||||
}
|
||||
|
||||
return DataReturn('success', 0, $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据编号获取地区数据
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2023-01-16
|
||||
* @desc description
|
||||
* @param [array] $params [输入参数]
|
||||
*/
|
||||
public static function RegionCodeData($params = [])
|
||||
{
|
||||
// 请求参数
|
||||
$p = [
|
||||
[
|
||||
'checked_type' => 'empty',
|
||||
'key_name' => 'code',
|
||||
'error_msg' => '请输入地区编号',
|
||||
],
|
||||
];
|
||||
$ret = ParamsChecked($params, $p);
|
||||
if($ret !== true)
|
||||
{
|
||||
return DataReturn($ret, -1);
|
||||
}
|
||||
|
||||
// 获取地区
|
||||
$result = ['province'=>'', 'city'=>'', 'county'=>''];
|
||||
$field = 'id,pid,level';
|
||||
$region = self::RegionNode(['field'=>$field, 'where'=>[['id', '=', $params['code']]]]);
|
||||
if(!empty($region) && !empty($region[0]))
|
||||
{
|
||||
$arr = [1=>'province', 2=>'city', 3=>'county'];
|
||||
if(array_key_exists($region[0]['level'], $arr))
|
||||
{
|
||||
$result[$arr[$region[0]['level']]] = $region[0]['id'];
|
||||
// 上一级
|
||||
if($region[0]['level'] > 1)
|
||||
{
|
||||
$region = self::RegionNode(['field'=>$field, 'where'=>[['id', '=', $region[0]['pid']]]]);
|
||||
if(!empty($region) && !empty($region[0]))
|
||||
{
|
||||
if(array_key_exists($region[0]['level'], $arr))
|
||||
{
|
||||
$result[$arr[$region[0]['level']]] = $region[0]['id'];
|
||||
// 上一级
|
||||
if($region[0]['level'] > 1)
|
||||
{
|
||||
$region = self::RegionNode(['field'=>$field, 'where'=>[['id', '=', $region[0]['pid']]]]);
|
||||
if(!empty($region) && !empty($region[0]))
|
||||
{
|
||||
if(array_key_exists($region[0]['level'], $arr))
|
||||
{
|
||||
$result[$arr[$region[0]['level']]] = $region[0]['id'];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if(empty($result) || count(array_filter(array_values($result))) == 0)
|
||||
{
|
||||
return DataReturn('无相关地区', -1);
|
||||
}
|
||||
return DataReturn(MyLang('common.get_success'), 0, $result);
|
||||
}
|
||||
}
|
||||
?>
|
||||
@ -421,7 +421,15 @@ class SystemBaseService
|
||||
case 'plugins_service_goods_handle_end' :
|
||||
if(!empty($params['goods']) && !empty($params['goods']['id']))
|
||||
{
|
||||
$old = Db::name('Goods')->field('price,min_price,max_price')->find($params['goods']['id']);
|
||||
// 静态类似存储数据,避免重复读取浪费mysql
|
||||
static $system_base_service_goods_handle_info_static_data = [];
|
||||
if(array_key_exists($params['goods']['id'], $system_base_service_goods_handle_info_static_data))
|
||||
{
|
||||
$old = $system_base_service_goods_handle_info_static_data[$params['goods']['id']];
|
||||
} else {
|
||||
$old = Db::name('Goods')->field('price,min_price,max_price')->find($params['goods']['id']);
|
||||
$system_base_service_goods_handle_info_static_data[$params['goods']['id']] = $old;
|
||||
}
|
||||
if(!empty($old))
|
||||
{
|
||||
// 展示销售价格
|
||||
@ -463,7 +471,17 @@ class SystemBaseService
|
||||
{
|
||||
// key字段
|
||||
$key_field = empty($params['params']['data_key_field']) ? 'id' : $params['params']['data_key_field'];
|
||||
$old = Db::name('Goods')->where(['id'=>array_column($params['data'], $key_field)])->column('id,price,min_price,max_price', 'id');
|
||||
$goods_ids = array_column($params['data'], $key_field);
|
||||
// 静态类似存储数据,避免重复读取浪费mysql
|
||||
$key = md5(implode('', $goods_ids));
|
||||
static $system_base_service_goods_list_handle_column_static_data = [];
|
||||
if(array_key_exists($key, $system_base_service_goods_list_handle_column_static_data))
|
||||
{
|
||||
$old = $system_base_service_goods_list_handle_column_static_data[$key];
|
||||
} else {
|
||||
$old = Db::name('Goods')->where(['id'=>$goods_ids])->column('id,price,min_price,max_price', 'id');
|
||||
$system_base_service_goods_list_handle_column_static_data[$key] = $old;
|
||||
}
|
||||
if(!empty($old))
|
||||
{
|
||||
foreach($params['data'] as $goods)
|
||||
@ -513,8 +531,17 @@ class SystemBaseService
|
||||
case 'plugins_service_goods_spec_base' :
|
||||
if(!empty($params['data']) && !empty($params['data']['spec_base']) && !empty($params['data']['spec_base']['id']) && !empty($params['data']['spec_base']['goods_id']) && isset($params['data']['spec_base']['price']))
|
||||
{
|
||||
$price_old = Db::name('GoodsSpecBase')->where(['id'=>$params['data']['spec_base']['id']])->value('price');
|
||||
if($status == 1 && $params['data']['spec_base']['price'] < $price_old)
|
||||
$base_id = $params['data']['spec_base']['id'];
|
||||
// 静态类似存储数据,避免重复读取浪费mysql
|
||||
static $system_base_service_goods_spec_base_price_static_data = [];
|
||||
if(array_key_exists($base_id, $system_base_service_goods_spec_base_price_static_data))
|
||||
{
|
||||
$price_old = $system_base_service_goods_spec_base_price_static_data[$base_id];
|
||||
} else {
|
||||
$price_old = Db::name('GoodsSpecBase')->where(['id'=>$base_id])->value('price');
|
||||
$system_base_service_goods_spec_base_price_static_data[$base_id] = $price_old;
|
||||
}
|
||||
if($params['data']['spec_base']['price'] < $price_old)
|
||||
{
|
||||
$status = 0;
|
||||
}
|
||||
|
||||
@ -351,7 +351,7 @@ class UserAddressService
|
||||
'county' => isset($params['county']) ? intval($params['county']) : 0,
|
||||
'address' => $params['address'],
|
||||
'lng' => isset($params['lng']) ? floatval($params['lng']) : 0,
|
||||
'lat' => isset($params['lat']) ? floatval($params['lat']) : 0 ,
|
||||
'lat' => isset($params['lat']) ? floatval($params['lat']) : 0,
|
||||
'idcard_name' => empty($params['idcard_name']) ? '' : $params['idcard_name'],
|
||||
'idcard_number' => empty($params['idcard_number']) ? '' : $params['idcard_number'],
|
||||
'idcard_front' => $attachment['data']['idcard_front'],
|
||||
|
||||
@ -1377,17 +1377,31 @@ button.colorpicker-submit img {
|
||||
padding-left: 80px;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 公共联动地区组件样式
|
||||
*/
|
||||
.region-linkage .chosen-select {
|
||||
display: -webkit-inline-box;
|
||||
width: calc(33.3% - 3px) !important;
|
||||
width: calc(33.33% - 3px) !important;
|
||||
}
|
||||
.region-linkage .chosen-select .chosen-single {
|
||||
width: 100%;
|
||||
}
|
||||
.region-linkage .chosen-select.chosen-container:last-child {
|
||||
float: right;
|
||||
}
|
||||
.region-linkage-code {
|
||||
width: 150px;
|
||||
}
|
||||
.region-linkage-code input {
|
||||
padding: 2px 5px !important;
|
||||
height: 20px !important;
|
||||
}
|
||||
.region-linkage-code button {
|
||||
line-height: 20px !important;
|
||||
height: 20px !important;
|
||||
padding: 0 10px !important;
|
||||
}
|
||||
|
||||
/**
|
||||
* 小微章-镂空
|
||||
|
||||
@ -1838,7 +1838,17 @@ function TreeFormInit()
|
||||
$title.text($title.attr('data-add-title'));
|
||||
|
||||
// 填充数据
|
||||
var data = {id:"", pid:0, name:"", vice_name: "", describe: "", sort:0, is_enable:1, icon:"", big_images: "", seo_title:"", seo_keywords:"", seo_desc:""};
|
||||
var data = {id:'', pid:0, name:'', vice_name:'', describe:'', letters:'', lng:'', lat:'', sort:0, is_enable:1, icon:'', big_images:'', seo_title:'', seo_keywords:'', seo_desc:''};
|
||||
// 指定字段
|
||||
var fields = $popup.data('fields') || null;
|
||||
if(fields != null)
|
||||
{
|
||||
var arr = fields.split(',');
|
||||
for(var i in arr)
|
||||
{
|
||||
data[arr[i]] = '';
|
||||
}
|
||||
}
|
||||
|
||||
// 额外处理数据
|
||||
data = FunSaveWinAdditional(data, 'init');
|
||||
@ -3602,6 +3612,56 @@ $(function()
|
||||
// 地址初始化
|
||||
RegionLinkageInit();
|
||||
|
||||
// 地址编号搜索
|
||||
$('.region-linkage-code button').on('click', function()
|
||||
{
|
||||
var code = $(this).parents('.region-linkage-code').find('input').val() || null;
|
||||
if(code == null)
|
||||
{
|
||||
Prompt(window['lang_input_empty_tips'] || '请输入数据');
|
||||
return false;
|
||||
}
|
||||
var $this = $(this);
|
||||
var $parent = $this.parents('.region-linkage');
|
||||
$this.attr('disabled', true);
|
||||
$.ajax({
|
||||
url: RequestUrlHandle($parent.data('code-url')),
|
||||
type: 'POST',
|
||||
dataType: 'json',
|
||||
timeout: 30000,
|
||||
data: {code: code},
|
||||
success: function(result)
|
||||
{
|
||||
$this.attr('disabled', false);
|
||||
if(result.code == 0)
|
||||
{
|
||||
// 更新选中值
|
||||
$parent.find('select[name="province"]').attr('data-value', result.data.province);
|
||||
$parent.find('select[name="city"]').attr('data-value', result.data.city);
|
||||
$parent.find('select[name="county"]').attr('data-value', result.data.county);
|
||||
// 地址初始化
|
||||
RegionLinkageInit();
|
||||
Prompt(result.msg, 'success');
|
||||
} else {
|
||||
Prompt(result.msg);
|
||||
}
|
||||
},
|
||||
error: function(xhr, type)
|
||||
{
|
||||
$this.attr('disabled', false);
|
||||
Prompt(HtmlToString(xhr.responseText) || (window['lang_error_text'] || '异常错误'));
|
||||
}
|
||||
});
|
||||
});
|
||||
$('.region-linkage-code input').on('keydown', function()
|
||||
{
|
||||
if(event.keyCode == 13)
|
||||
{
|
||||
$(this).parents('.region-linkage-code').find('button').trigger('click');
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
// 根据字符串地址获取坐标位置
|
||||
$('#map-location-submit').on('click', function()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user