From 6c622fcdaae757f603c62e820fbe831c475ea28e Mon Sep 17 00:00:00 2001 From: devil_gong Date: Tue, 19 Mar 2019 17:47:02 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=90=E8=B4=B9=E6=A8=A1=E5=9D=97=E5=BA=94?= =?UTF-8?q?=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/plugins/freightfee/Admin.php | 15 + .../view/freightfee/admin/saveinfo.html | 77 ++++-- application/service/RegionService.php | 11 +- public/static/common/css/common.css | 2 +- .../static/plugins/css/freightfee/admin.css | 76 +++++ public/static/plugins/js/freightfee/admin.js | 260 ++++++++++++++++++ 6 files changed, 413 insertions(+), 28 deletions(-) create mode 100644 public/static/plugins/js/freightfee/admin.js diff --git a/application/plugins/freightfee/Admin.php b/application/plugins/freightfee/Admin.php index eb2585de9..20f4237f5 100644 --- a/application/plugins/freightfee/Admin.php +++ b/application/plugins/freightfee/Admin.php @@ -12,6 +12,7 @@ namespace app\plugins\freightfee; use think\Controller; use app\service\PluginsService; +use app\service\RegionService; /** * 运费设置 - 管理 @@ -61,6 +62,20 @@ class Admin extends Controller 1 => array('id' => 1, 'name' => '按重量'), ]; + // 地区 + $region = RegionService::RegionItems(['pid'=>0, 'field'=>'id,name']); + if(!empty($region)) + { + $region = array_map(function($v) + { + $v['items'] = RegionService::RegionItems(['pid'=>$v['id'], 'field'=>'id,name']); + return $v; + }, $region); + } + + //print_r($ret['data']); + + $this->assign('region_list', $region); $this->assign('is_whether_list', $is_whether_list); $this->assign('data', $ret['data']); return $this->fetch('../../../plugins/view/freightfee/admin/saveinfo'); diff --git a/application/plugins/view/freightfee/admin/saveinfo.html b/application/plugins/view/freightfee/admin/saveinfo.html index eadd8545b..cb0836067 100644 --- a/application/plugins/view/freightfee/admin/saveinfo.html +++ b/application/plugins/view/freightfee/admin/saveinfo.html @@ -21,8 +21,8 @@ -
- +
+
@@ -35,34 +35,67 @@ - - - - - - - - - - - - - - - - - - - + + + + + + +
运送到
Amaze UIhttp://amazeui.org2012-10-01
Amaze UIhttp://amazeui.org2012-10-01
Amaze UIhttp://amazeui.org2012-10-01
Amaze UIhttp://amazeui.org2012-10-01
Amaze UIhttp://amazeui.org2012-10-01
+
默认运费 + +
+ + + + + + + +
+ +为指定地区城市设置运费
- +
+ + +
+
+
+

选择区域

+ × +
+
+ {{if !empty($region_list)}} +
    + {{foreach $region_list as $v}} +
  • +

    {{$v.name}}

    + {{if !empty($v['items'])}} +
      + {{foreach $v.items as $vs}} +
    • + {{$vs.name}} +
    • + {{/foreach}} +
    + {{/if}} +
  • + {{/foreach}} +
+ {{else /}} +
没有相关数据
+ {{/if}} + +
+
+
diff --git a/application/service/RegionService.php b/application/service/RegionService.php index 366a805d6..684d3c9f4 100755 --- a/application/service/RegionService.php +++ b/application/service/RegionService.php @@ -36,17 +36,18 @@ class RegionService } /** - * 获取地区idx下列表 + * 获取地区id下列表 * @author Devil * @blog http://gong.gg/ * @version 1.0.0 * @datetime 2018-12-09T00:13:02+0800 - * @param [array] $param [输入参数] + * @param [array] $params [输入参数] */ - public static function RegionItems($param = []) + public static function RegionItems($params = []) { - $pid = isset($param['pid']) ? intval($param['pid']) : 0; - return Db::name('Region')->where(['pid'=>$pid, 'is_enable'=>1])->select(); + $pid = isset($params['pid']) ? intval($params['pid']) : 0; + $field = empty($params['field']) ? '*' : $params['field']; + return Db::name('Region')->field($field)->where(['pid'=>$pid, 'is_enable'=>1])->select(); } /** diff --git a/public/static/common/css/common.css b/public/static/common/css/common.css index 5e663252e..05acfef6b 100755 --- a/public/static/common/css/common.css +++ b/public/static/common/css/common.css @@ -80,7 +80,7 @@ iframe { width: 100%; height: 100%; border: 0; } form.am-form .am-form-group:hover, .plug-file-upload-view:hover { background: #f6f9fc; } - form.am-form .am-form-group, .plug-images-list, .goods-specifications, .content-app-items, .plug-file-upload-view { + form.am-form .am-form-group, .plug-images-list, .goods-specifications, .content-app-items, .plug-file-upload-view, .business-form-block { border-bottom: 1px dashed #ccc; padding: 10px 20% 10px 5px; } diff --git a/public/static/plugins/css/freightfee/admin.css b/public/static/plugins/css/freightfee/admin.css index 62214c747..8562ba949 100755 --- a/public/static/plugins/css/freightfee/admin.css +++ b/public/static/plugins/css/freightfee/admin.css @@ -8,4 +8,80 @@ } .freightfee-content .edit-submit { margin-bottom: 20px; +} + +/** + * 编辑页面 + */ +.freightfee-rules table.am-table { + margin-bottom: 10px; +} +.freightfee-rules table.am-table tr td input { + max-width: 100px; + display: -webkit-inline-box; +} +.freightfee-rules table.am-table tr th, .freightfee-rules table.am-table tr td, .freightfee-rules table.am-table tr td input { + text-align: center; +} +.freightfee-rules table.am-table tr td.first +{ + width: 30%; +} +.freightfee-rules table.am-table tr td .region-td { + border: 1px solid #bee5c0; + padding: 5px; + background: #f0fff0; + margin-bottom: 5px; +} +.freightfee-rules table.am-table td.first input { + position: absolute; + margin-left: -1000000px; +} + +/** + * 弹窗 + */ +#freightfee-region-popup ul { + margin: 0; + padding: 0; +} +#freightfee-region-popup ul li { + list-style-type: none; + border-bottom: 1px solid #eee; + margin-bottom: 15px; +} +#freightfee-region-popup ul.city-list { + overflow: hidden; + margin-top: 5px; +} +#freightfee-region-popup ul .province-name { + border-bottom: 1px solid #e7e7e7; + background: #f5f5f5; + margin: 0; +} +#freightfee-region-popup ul .province-name.selected-may { + background: #eaf7eb; + border-bottom: 1px solid #d2efd3; +} +#freightfee-region-popup ul .province-name.selected { + background: #4CAF50; + border-bottom: 1px solid #409643; + color: #fff; +} +#freightfee-region-popup ul.city-list li { + float: left; + background: #e9e8e8; + margin: 0 10px 10px 0; + border-radius: 3px; + border: 1px solid #d6d6d6; +} +#freightfee-region-popup ul li .province-name, #freightfee-region-popup ul li .city-name +{ + cursor: pointer; + padding: 2px 5px; +} +#freightfee-region-popup ul.city-list li.selected { + background: #4CAF50; + color: #fff; + border: 1px solid #409643; } \ No newline at end of file diff --git a/public/static/plugins/js/freightfee/admin.js b/public/static/plugins/js/freightfee/admin.js new file mode 100644 index 000000000..06682fd9d --- /dev/null +++ b/public/static/plugins/js/freightfee/admin.js @@ -0,0 +1,260 @@ +$(function() +{ + // 计费方式切换 + $('form.am-form input[name=valuation]').on('click', function() + { + var $this = $(this); + var valuation = parseInt($this.val()); + if($(this).parents('.am-form-group').attr('data-value') != valuation) + { + AMUI.dialog.confirm({ + title: '温馨提示', + content: '切换计价方式后,所设置当前模板的运输信息将被清空,确定继续么?', + onConfirm: function(e) + { + // 内容 + var valuation_unit = ['件', 'kg']; + var unit = valuation_unit[valuation] || null; + if(unit == null) + { + Prompt('配置有误'); + return false; + } + + $this.parents('.am-form-group').attr('data-value', valuation); + var thead = ''; + thead += '运送到'; + thead += '首件数('+unit+')'; + thead += '首费(元)'; + thead += '续件数('+unit+')'; + thead += '续费(元)'; + thead += '操作'; + thead += ''; + + var html = ''; + switch(valuation) + { + // 按件 + case 0 : + html += ''; + html += '
默认运费'; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + break; + + // 按重量 + case 1 : + html += ''; + html += '
默认运费'; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + break; + + default : + Prompt('配置有误'); + } + $('.freightfee-rules table.am-table thead').html(thead); + $('.freightfee-rules table.am-table tbody').html(html); + }, + onCancel: function() + { + $('form.am-form input[name=valuation]').eq(valuation).uCheck('uncheck'); + $('form.am-form input[name=valuation]').eq(valuation == 1 ? 0 : 1).uCheck('check'); + $this.parents('.am-form-group').attr('data-value', valuation == 1 ? 0 : 1); + } + }); + } + }); + + // 元素添加 + $('.rules-submit-add').on('click', function() + { + // 唯一索引 + var index = parseInt(Math.random()*1000001); + + // 元素html + var html = $('.freightfee-rules table.am-table').find('tbody tr:first').prop('outerHTML'); + if(html.indexOf('默认运费') >= 0) + { + html = html.replace(/默认运费/ig, '添加地区'); + } + if(html.indexOf('') >= 0) + { + html = html.replace(//ig, '删除'); + } + $('.freightfee-rules table.am-table').append(html); + + // 值赋空 + $('.freightfee-rules table.am-table').find('tbody tr:last').find('input').each(function(k, v) + { + $(this).attr('value', ''); + }); + $('.freightfee-rules table.am-table').find('tbody tr:last .region-td').text('').addClass('none'); + + // 移除原来的class新增新的class + $('.freightfee-rules table.am-table').find('tbody tr:last').removeClass().addClass('data-list-'+index); + + // name名称设置 + $('.freightfee-rules table.am-table').find('tbody tr:last .region-name').attr('name', 'region_name['+index+'][\'region\']'); + $('.freightfee-rules table.am-table').find('tbody tr:last .first-name').attr('name', 'first_name['+index+'][\'first\']'); + $('.freightfee-rules table.am-table').find('tbody tr:last .first-price-name').attr('name', 'first_price_name['+index+'][\'first_price\']'); + $('.freightfee-rules table.am-table').find('tbody tr:last .continue-name').attr('name', 'continue_name['+index+'][\'continue\']'); + $('.freightfee-rules table.am-table').find('tbody tr:last .continue-price-name').attr('name', 'continue_price_name['+index+'][\'continue_price\']'); + }); + + // 行移除 + $(document).on('click', '.freightfee-rules table.am-table .line-remove', function() + { + $(this).parents('tr').remove(); + }); + + // 地区编辑 + $(document).on('click', '.freightfee-rules table.am-table .line-edit', function() + { + var index = $(this).data('index'); + $('#freightfee-region-popup').modal(); + $('#freightfee-region-popup').attr('data-index', index); + + // 清楚选中 + $('#freightfee-region-popup').find('.province-name').removeClass('selected').removeClass('selected-may'); + $('#freightfee-region-popup').find('.city-name').parent('li').removeClass('selected'); + + // 地区选中 + var ids = $('.data-list-'+index).find('td.first input').val() || null; + + if(ids != null) + { + var ids_all = ids.split('-'); + for(var i in ids_all) + { + $('.region-node-'+ids_all[i]).parent('li').addClass('selected'); + } + + // 父级选择处理 + $('#freightfee-region-popup .city-list').each(function(k, v) + { + var items_count = $(this).find('.city-name').length; + var selected_count = $(this).find('.selected').length; + if(selected_count >= items_count) + { + $(this).prev('.province-name').removeClass('selected-may').addClass('selected'); + } else if(selected_count > 0 && selected_count < items_count) + { + $(this).prev('.province-name').removeClass('selected').addClass('selected-may'); + } else { + $(this).prev('.province-name').removeClass('selected-may').removeClass('selected'); + } + }); + } + }); + + // 地区选择事件 - 省 + $('#freightfee-region-popup .province-name').on('click', function() + { + if($(this).hasClass('selected-may') || $(this).hasClass('selected')) + { + $(this).next('.city-list').find('li').removeClass('selected'); + $(this).removeClass('selected-may').removeClass('selected'); + } else { + $(this).next('.city-list').find('li').addClass('selected'); + $(this).addClass('selected'); + } + }); + + // 地区选择事件 - 城市 + $('#freightfee-region-popup .city-name').on('click', function() + { + if($(this).parent('li').hasClass('selected')) + { + $(this).parent('li').removeClass('selected'); + } else { + $(this).parent('li').addClass('selected'); + } + + // 父级处理 + var items_count = $(this).parents('.city-list').find('.city-name').length; + var selected_count = $(this).parents('.city-list').find('.selected').length; + if(selected_count >= items_count) + { + $(this).parents('.city-list').prev('.province-name').removeClass('selected-may').addClass('selected'); + } else if(selected_count > 0 && selected_count < items_count) + { + $(this).parents('.city-list').prev('.province-name').removeClass('selected').addClass('selected-may'); + } else { + $(this).parents('.city-list').prev('.province-name').removeClass('selected-may').removeClass('selected'); + } + }); + + // 地区选择确认 + $('#freightfee-region-popup button[type="submit"]').on('click', function() + { + var name_all = []; + var ids_all = []; + var city_index = 0; + var province_index = 0; + var province_id = 0; + $('#freightfee-region-popup .city-list li').each(function(k, v) + { + if($(this).parent('.city-list').prev('.province-name').hasClass('selected')) + { + var temp_province_id = $(this).parent('.city-list').prev('.province-name').data('id'); + console.log(temp_province_id) + if(province_id != temp_province_id) + { + province_id = temp_province_id; + name_all[province_index] = $(this).parent('.city-list').prev('.province-name').text(); + province_index++; + } + } else { + if($(this).hasClass('selected')) + { + name_all[province_index] = $(this).find('.city-name').text(); + province_index++; + } + } + if($(this).hasClass('selected')) + { + ids_all[city_index] = $(this).find('.city-name').data('city-id'); + city_index++; + } + }); + var $content = $('.data-list-'+$('#freightfee-region-popup').attr('data-index')+' .region-td'); + $content.text(name_all.join('、')); + if(name_all.length > 0) + { + $content.removeClass('none'); + } else { + $content.addClass('none'); + } + + $('.data-list-'+$('#freightfee-region-popup').attr('data-index')+' td.first input').val(ids_all.join('-')); + + $('#freightfee-region-popup').modal('close'); + }); +}); \ No newline at end of file