提交 a1d9f02b 编写于 作者: D devil_gong

自提点管理地址开发

上级 f4e11139
......@@ -35,9 +35,6 @@ class Region extends Common
// 登录校验
$this->IsLogin();
// 权限校验
$this->IsPower();
}
/**
......@@ -49,6 +46,9 @@ class Region extends Common
*/
public function Index()
{
// 权限校验
$this->IsPower();
// 是否启用
$this->assign('common_is_enable_list', lang('common_is_enable_list'));
......@@ -64,6 +64,9 @@ class Region extends Common
*/
public function GetNodeSon()
{
// 权限校验
$this->IsPower();
// 是否ajax请求
if(!IS_AJAX)
{
......@@ -83,6 +86,9 @@ class Region extends Common
*/
public function Save()
{
// 权限校验
$this->IsPower();
// 是否ajax请求
if(!IS_AJAX)
{
......@@ -102,6 +108,9 @@ class Region extends Common
*/
public function Delete()
{
// 权限校验
$this->IsPower();
// 是否ajax
if(!IS_AJAX)
{
......@@ -113,5 +122,31 @@ class Region extends Common
$params['admin'] = $this->admin;
return RegionService::RegionDelete($params);
}
/**
* 获取地区节点数据
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-09-21
* @desc description
*/
public function Node()
{
// 是否ajax请求
if(!IS_AJAX)
{
$this->error('非法访问');
}
// 获取地区
$params = [
'where' => [
'pid' => intval(input('pid', 0)),
],
];
$data = RegionService::RegionNode($params);
return DataReturn('操作成功', 0, $data);
}
}
?>
\ No newline at end of file
......@@ -49,6 +49,10 @@ class Site extends Common
*/
public function Index()
{
// 导航
$nav_type = input('nav_type', 'base');
$this->assign('nav_type', $nav_type);
// 时区
$this->assign('site_timezone_list', lang('site_timezone_list'));
......@@ -77,14 +81,23 @@ class Site extends Common
$this->assign('common_site_type_list', lang('common_site_type_list'));
// 配置信息
$this->assign('data', ConfigService::ConfigList());
$data = ConfigService::ConfigList();
$this->assign('data', $data);
// 自提点地址处理
if($nav_type == 'sitetype' && !empty($data['common_self_extraction_address']) && !empty($data['common_self_extraction_address']['value']))
{
$address_list = json_decode($data['common_self_extraction_address']['value'], true);
if(!empty($address_list) && is_array($address_list))
{
$this->assign('sitetype_address_list', $address_list);
}
}
// 编辑器文件存放地址
$this->assign('editor_path_type', 'common');
// 导航/视图
$nav_type = input('nav_type', 'base');
$this->assign('nav_type', $nav_type);
// 视图
return $this->fetch($nav_type);
}
......@@ -103,33 +116,33 @@ class Site extends Common
// 字段不存在赋空值
$field_list = [];
// 用户注册
if($nav_type == 'register')
{
$field_list[] = 'home_user_reg_state';
$field_list[] = 'home_site_user_register_bg_images';
}
// 用户登录
if($nav_type == 'login')
{
$field_list[] = 'home_site_user_login_ad1_images';
$field_list[] = 'home_site_user_login_ad2_images';
$field_list[] = 'home_site_user_login_ad3_images';
}
// 密码找回
if($nav_type == 'forgetpwd')
{
$field_list[] = 'home_site_user_forgetpwd_ad1_images';
$field_list[] = 'home_site_user_forgetpwd_ad2_images';
$field_list[] = 'home_site_user_forgetpwd_ad3_images';
}
// 图片验证码
if($nav_type == 'imagesverify')
// 导航类型
switch($nav_type)
{
$field_list[] = 'common_images_verify_rules';
// 用户注册
case 'register' :
$field_list[] = 'home_user_reg_state';
$field_list[] = 'home_site_user_register_bg_images';
break;
// 用户登录
case 'login' :
$field_list[] = 'home_site_user_login_ad1_images';
$field_list[] = 'home_site_user_login_ad2_images';
$field_list[] = 'home_site_user_login_ad3_images';
break;
// 密码找回
case 'forgetpwd' :
$field_list[] = 'home_site_user_forgetpwd_ad1_images';
$field_list[] = 'home_site_user_forgetpwd_ad2_images';
$field_list[] = 'home_site_user_forgetpwd_ad3_images';
break;
// 图片验证码
case 'imagesverify' :
$field_list[] = 'common_images_verify_rules';
break;
}
// 开始处理空值
......
......@@ -674,10 +674,9 @@
<!-- 拖拽排序初始化 -->
<script type="text/javascript">
// 规格扩展返回处理
function SpecificationsExtendsBack()
function SpecificationsExtendsBack(data)
{
var $extends_popup = $('#specifications-extends-popup');
var data = GetFormVal('#specifications-extends-popup', true);
$('.specifications-table').find($extends_popup.attr('data-line-extend')).find('.line-extend-input').val(JSON.stringify(data));
$extends_popup.modal('close');
}
......
<div class="am-form-group region-linkage" data-url="{{:MyUrl('admin/region/node')}}">
<label class="block">省市区</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}}" required>
<option value="">省份</option>
</select>
<select name="city" data-next="county" class="am-radius chosen-select" data-placeholder="城市" data-validation-message="请选择城市" data-value="{{if isset($data['city'])}}{{$data.city}}{{else /}}0{{/if}}" required>
<option value="">城市</option>
</select>
<select name="county" class="am-radius chosen-select" data-placeholder="区/县" data-validation-message="请选择区/县" data-value="{{if isset($data['county'])}}{{$data.county}}{{else /}}0{{/if}}" required>
<option value="">区/县</option>
</select>
</div>
\ No newline at end of file
......@@ -34,4 +34,4 @@
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end
\ No newline at end of file
<!-- footer end -->
\ No newline at end of file
......@@ -98,4 +98,4 @@
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end
\ No newline at end of file
<!-- footer end -->
\ No newline at end of file
......@@ -35,4 +35,4 @@
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end
\ No newline at end of file
<!-- footer end -->
\ No newline at end of file
......@@ -48,4 +48,4 @@
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end
\ No newline at end of file
<!-- footer end -->
\ No newline at end of file
......@@ -126,4 +126,4 @@
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end
\ No newline at end of file
<!-- footer end -->
\ No newline at end of file
......@@ -47,4 +47,4 @@
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end
\ No newline at end of file
<!-- footer end -->
\ No newline at end of file
......@@ -144,4 +144,4 @@
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end
\ No newline at end of file
<!-- footer end -->
\ No newline at end of file
......@@ -36,4 +36,4 @@
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end
\ No newline at end of file
<!-- footer end -->
\ No newline at end of file
......@@ -71,4 +71,4 @@
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end
\ No newline at end of file
<!-- footer end -->
\ No newline at end of file
......@@ -34,4 +34,4 @@
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end
\ No newline at end of file
<!-- footer end -->
\ No newline at end of file
......@@ -46,7 +46,19 @@
<span class="am-panel-title">自提点</span>
</div>
<div class="am-panel-bd">
hello 自提点地址配置
<ul class="am-list am-list-static am-list-border am-list-striped am-form-group am-btn-sm am-margin-bottom-0 am-padding-bottom-0 address-list">
{{if !empty($sitetype_address_list) and is_array($sitetype_address_list)}}
{{foreach $sitetype_address_list as $address}}
<li>
<span>{{$address.province_name}} {{$address.city_name}} {{$address.county_name}} {{$address.address}}{{if !empty($address['alias'])}}<span class="am-badge am-radius am-badge-success am-margin-left-xs">{{$address.alias}}</span>{{/if}}</span>
<span class="am-badge am-radius am-icon-remove delete-submit"> 移除</span>
<span class="am-badge am-radius am-icon-edit edit-submit"> 编辑</span>
</li>
{{/foreach}}
{{/if}}
</ul>
<input type="hidden" name="{{$data.common_self_extraction_address.only_tag}}" value="{{$data.common_self_extraction_address.value}}" class="self-extraction-address-value" />
<button type="button" class="am-btn am-btn-secondary am-radius am-icon-plus am-btn-sm am-margin-top-sm address-submit-add"> 添加地址</button>
</div>
</div>
......@@ -59,7 +71,63 @@
</div>
</div>
<!-- right content end -->
<!-- 自提点地址添加弹层 -->
<div class="am-popup" id="popup-address-win">
<div class="am-popup-inner">
<div class="am-popup-hd">
<h4 class="am-popup-title">地址添加</h4>
<span data-am-modal-close class="am-close">&times;</span>
</div>
<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">
<label>别名</label>
<input type="text" name="alias" placeholder="别名" minlength="0" maxlength="16" data-validation-message="别名格式最多 16 个字符" class="am-radius" />
</div>
<div class="am-form-group">
<label>联系人</label>
<input type="text" name="name" placeholder="联系人" minlength="2" maxlength="16" data-validation-message="联系人格式 2~16 个字符之间" class="am-radius" required />
</div>
<div class="am-form-group">
<label>联系电话</label>
<input type="text" name="tel" placeholder="联系电话" minlength="6" maxlength="30" data-validation-message="联系电话格式有误" class="am-radius" required />
</div>
{{include file="lib/region_linkage" /}}
<div class="am-form-group address-detail">
<label>详细地址</label>
<div class="am-input-group am-input-group-sm">
<input type="hidden" name="lng" id="form-lng" />
<input type="hidden" name="lat" id="form-lat" />
<input type="text" name="address" id="form-address" placeholder="详细地址" minlength="2" maxlength="80" data-validation-message="详细地址格式 1~80 个字符之间" class="am-radius" required />
<span class="am-input-group-btn">
<button class="am-btn am-btn-default am-radius" type="button" id="map-location-submit"><span class="am-icon-map-marker"></span> 定位</button>
</span>
</div>
</div>
<div id="map" data-level="17" class="am-form-group"></div>
<div class="am-form-group am-form-group-refreshing">
<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>
</form>
</div>
</div>
</div>
<!-- map -->
<script type="text/javascript" src="{{$Think.__MY_HTTP__}}://api.map.baidu.com/api?v=2.0&ak={{:MyC('common_baidu_map_ak')}}"></script>
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end
\ No newline at end of file
<!-- footer end -->
<script type="text/javascript">
// 返回处理
function ViewAddressModalBack(data)
{
AddressModalHandle(data);
}
</script>
\ No newline at end of file
......@@ -46,46 +46,18 @@
</div>
<!-- conntent end -->
<!-- map -->
<!-- <script type="text/javascript" src="{{$Think.__MY_HTTP__}}://api.map.baidu.com/api?v=2.0&ak={{:MyC('common_baidu_map_ak')}}"></script> -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->
<!-- map -->
<!-- <script type="text/javascript" src="{{$Think.__MY_HTTP__}}://api.map.baidu.com/api?v=2.0&ak={{:MyC('common_baidu_map_ak')}}"></script> -->
<script type="text/javascript">
$(function()
{
/*// 百度地图API功能
var map = new BMap.Map("map", {enableMapClick:false});
var level = $('#map').data('level') || 16;
var point = new BMap.Point({{if !empty($data['lng'])}}{{$data['lng']}}{{else /}}116.400244{{/if}},{{if !empty($data['lat'])}}{{$data['lat']}}{{else /}}39.92556{{/if}});
map.centerAndZoom(point, level);
// 添加控件
var navigationControl = new BMap.NavigationControl({
// 靠左上角位置
anchor: BMAP_ANCHOR_TOP_LEFT,
// LARGE类型
type: BMAP_NAVIGATION_CONTROL_LARGE,
});
map.addControl(navigationControl);
// 创建标注
var marker = new BMap.Marker(point); // 创建标注
map.addOverlay(marker); // 将标注添加到地图中
marker.enableDragging(); // 可拖拽
marker.addEventListener("dragend", function(e) {
map.panTo(e.point);
$('#form-lng').val(e.point.lng);
$('#form-lat').val(e.point.lat);
});
// 设置版权控件位置
var cr = new BMap.CopyrightControl({anchor:BMAP_ANCHOR_BOTTOM_RIGHT});
map.addControl(cr); //添加版权控件
var bs = map.getBounds(); //返回地图可视区域
cr.addCopyright({id: 1, content: "<div class='map-copy'><span>拖动红色图标直接定位</span></div>", bounds:bs});*/
// // 百度地图初始化
// MapInit({{if !empty($data['lng'])}}{{$data['lng']}}{{else /}}116.400244{{/if}},{{if !empty($data['lat'])}}{{$data['lat']}}{{else /}}39.92556{{/if}});
});
// 返回处理
......
......@@ -31,6 +31,7 @@ class ConfigService
'home_email_user_email_binding',
'home_site_close_reason',
'common_agreement_userregister',
'common_self_extraction_address',
];
// 附件字段列表
......
此差异已折叠。
......@@ -24,4 +24,35 @@ ul.home_site_user_register_bg_images-images-view li {
.content-right .am-panel .am-panel-bd .am-form-group {
border-bottom: 0;
margin-bottom: 0;
}
/**
* 地址添加/编辑
*/
.region-linkage .chosen-select {
display: -webkit-inline-box;
width: calc(33.3% - 3px) !important;
}
.region-linkage .chosen-select .chosen-single {
width: 100%;
}
.address-detail {
margin-bottom: 0;
}
#map {
width: calc(100% - 10px);
height: 250px;
padding: 0 !important;
margin: 0 5px 20px 5px;
}
.address-detail, #map {
border-bottom: 0 !important;
}
.address-list {
padding: 0 20% 0 0 !important;
}
.address-list .edit-submit,
.address-list .delete-submit {
cursor: pointer;
}
\ No newline at end of file
// 地址表单初始化
FromInit('form.form-validation-address');
/**
* 地址返回处理
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2019-11-12
* @desc description
* @param {[object]} data [地址信息]
*/
function AddressModalHandle(data)
{
$(function()
{
// 参数处理
var alias = data.alias || null;
var name = data.name || null;
var tel = data.tel || null;
var province = data.province || null;
var city = data.city || null;
var county = data.county || null;
var address = data.address || null;
var lng = data.lng || null;
var lat = data.lat || null;
if(name == null || tel == null || province == null || city == null || county == null || address == null)
{
Prompt('数据填写有误');
return false;
}
// 地区名称
data['province_name'] = $('.region-linkage select[name="province"]').find('option:selected').text();
data['city_name'] = $('.region-linkage select[name="city"]').find('option:selected').text();
data['county_name'] = $('.region-linkage select[name="county"]').find('option:selected').text();
// 数据拼接
var html = '<li>';
html += '<span>'+data['province_name']+' '+data['city_name']+' '+data['county_name']+' '+address;
if(alias != null)
{
html += '<span class="am-badge am-radius am-badge-success am-margin-left-xs">'+alias+'</span>';
}
html += '</span>';
html += '<span class="am-badge am-radius am-icon-remove delete-submit"> 移除</span>';
html += '<span class="am-badge am-radius am-icon-edit edit-submit"> 编辑</span>';
html += '</li>';
// 数据处理
var value = SelfExtractionAddressValue();
// 弹层
var $popup = $('#popup-address-win');
// 操作类型(add, edit)
var form_type = $popup.attr('data-type') || 'add';
if(form_type == 'add')
{
$('ul.address-list').append(html);
value.push(data);
} else {
var form_index = $popup.attr('data-index') || 0;
value.splice(form_index, 1, data);
$('ul.address-list').find('li').eq(form_index).replaceWith(html);
}
$popup.modal('close');
$('.self-extraction-address-value').val(JSON.stringify(value));
});
}
/**
* 获取自提地址
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2019-11-12
* @desc description
*/
function SelfExtractionAddressValue()
{
var value = $('.self-extraction-address-value').val() || null;
return (value == null) ? [] : JSON.parse(value);
}
$(function()
{
// 图片选择名称展示
$('input.site-logo').on('change', function()
{
var fileNames = '';
$.each(this.files, function()
{
fileNames += '<span class="am-badge">' + this.name + '</span> ';
});
$($(this).data('tils-tag')).html(fileNames);
});
// 弹层
var $popup = $('#popup-address-win');
// 地址添加开启
$('.address-submit-add').on('click', function()
{
$popup.modal();
$popup.attr('data-type', 'add');
// 地图初始化
MapInit();
});
// 地址移除
$(document).on('click', '.address-list .delete-submit', function()
{
var index = $(this).parents('li').index();
var value = SelfExtractionAddressValue();
if(value.length > 0)
{
AMUI.dialog.confirm({
title: '温馨提示',
content: '移除后保存生效、确认继续吗?',
onConfirm: function(options)
{
value.splice(index, 1);
$('.self-extraction-address-value').val(JSON.stringify(value));
$('ul.address-list').find('li').eq(index).remove();
},
onCancel: function(){}
});
} else {
$('ul.address-list').find('li').eq(index).remove();
}
});
// 地址编辑
$(document).on('click', '.address-list .edit-submit', function()
{
var index = $(this).parents('li').index();
var value = SelfExtractionAddressValue();
if(value.length <= 0)
{
Prompt('地址数据为空');
return false;
}
var item = value[index] || null;
if(item == null)
{
Prompt('地址不存在');
return false;
}
// 数据填充
FormDataFill(item, 'form.form-validation-address');
$popup.modal();
$popup.attr('data-type', 'edit');
$popup.attr('data-index', index);
// 地图初始化
MapInit(item.lng, item.lat);
});
});
\ No newline at end of file
......@@ -226,6 +226,10 @@ function FromInit(form_name)
}
var editor_tag_name = 'editor-tag';
var $form = $(form_name);
if($form.length <= 0)
{
return false;
}
var $editor_tag = $form.find('[id='+editor_tag_name+']');
var editor_count = $editor_tag.length;
if(editor_count > 0)
......@@ -385,7 +389,7 @@ function FromInit(form_name)
$button.button('reset');
if(IsExitsFunction(request_value))
{
window[request_value]();
window[request_value](GetFormVal(form_name, true));
} else {
Prompt('['+request_value+']表单定义的方法未定义');
}
......@@ -1280,6 +1284,57 @@ function PageLibrary(total, number, page, sub_number)
return html;
}
/**
* 地图初始化
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2019-11-12
* @desc description
* @param {[float]} lng [经度]
* @param {[float]} lat [维度]
* @param {[int]} level [层级]
* @param {[object]} point [中心对象]
*/
function MapInit(lng, lat, level, point)
{
// 百度地图API功能
var map = new BMap.Map("map", {enableMapClick:false});
level = level || $('#map').data('level') || 16;
point = point || (new BMap.Point(lng || 116.400244, lat || 39.92556));
map.centerAndZoom(point, level);
// 添加控件
var navigationControl = new BMap.NavigationControl({
// 靠左上角位置
anchor: BMAP_ANCHOR_TOP_LEFT,
// LARGE类型
type: BMAP_NAVIGATION_CONTROL_LARGE,
});
map.addControl(navigationControl);
// 创建标注
var marker = new BMap.Marker(point); // 创建标注
map.addOverlay(marker); // 将标注添加到地图中
marker.enableDragging(); // 可拖拽
marker.addEventListener("dragend", function(e) {
map.panTo(e.point);
$('#form-lng').val(e.point.lng);
$('#form-lat').val(e.point.lat);
});
// 设置版权控件位置
var cr = new BMap.CopyrightControl({anchor:BMAP_ANCHOR_BOTTOM_RIGHT});
map.addControl(cr); //添加版权控件
var bs = map.getBounds(); //返回地图可视区域
cr.addCopyright({id: 1, content: "<div class='map-copy'><span>拖动红色图标直接定位</span></div>", bounds:bs});
//获取地址坐标
var p = marker.getPosition();
$('#form-lng').val(p.lng);
$('#form-lat').val(p.lat);
}
// 公共数据操作
$(function()
{
......@@ -1755,56 +1810,30 @@ $(function()
for(var i in region)
{
var $temp_obj = $('.region-linkage select[name='+region[i]+']');
var v = $temp_obj.find('option:selected').val();
if(v.length > 0)
var v = $temp_obj.find('option:selected').val() || null;
if(v != null)
{
if(i == 0) province = $temp_obj.find('option:selected').text();
address += $temp_obj.find('option:selected').text();
if(i == 0)
{
province = $temp_obj.find('option:selected').text() || '';
}
address += $temp_obj.find('option:selected').text() || '';
}
}
address += $('#form-address').val();
var map = new BMap.Map("map", {enableMapClick:false});
var point = new BMap.Point(116.331398,39.897445);
var level = $('#map').attr('data-level') || 16;
map.centerAndZoom(point, level);
if(province.length <= 0 || address.length <= 0)
{
Prompt('地址为空');
return false;
}
// 创建地址解析器实例
var myGeo = new BMap.Geocoder();
// 将地址解析结果显示在地图上,并调整地图视野
myGeo.getPoint(address, function(point) {
if (point) {
map.centerAndZoom(point, level);
var navigationControl = new BMap.NavigationControl({
// 靠左上角位置
anchor: BMAP_ANCHOR_TOP_LEFT,
// LARGE类型
type: BMAP_NAVIGATION_CONTROL_LARGE,
});
map.addControl(navigationControl);
var marker = new BMap.Marker(point); // 创建标注
map.addOverlay(marker); // 将标注添加到地图中
marker.enableDragging(); // 可拖拽
/* 设置版权控件位置 */
var cr = new BMap.CopyrightControl({anchor:BMAP_ANCHOR_BOTTOM_RIGHT});
map.addControl(cr); //添加版权控件
var bs = map.getBounds(); //返回地图可视区域
cr.addCopyright({id: 1, content: "<div class='map-copy'><span>拖动红色图标直接定位</span></div>", bounds:bs});
//增加拖动后事件
marker.addEventListener("dragend", function(e) {
map.panTo(e.point);
$('#form-lng').val(e.point.lng);
$('#form-lat').val(e.point.lat);
});
//获取地址坐标
var p = marker.getPosition(); //获取marker的位置
$('#form-lng').val(p.lng);
$('#form-lat').val(p.lat);
}else{
MapInit(null, null, null, point);
} else {
Prompt("您选择地址没有解析到结果!");
}
}, province);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册