(function () { /*** * 配送区域表格 * @param param * @constructor */ function Delivery(param) { this.tableElement = param.table; this.RegionalChoice = new RegionalChoice(param.regional, param.datas); this.initCreateRegion(); this.clickEditEvent(); this.clickDeleteEvent(); this.clickMethodEvent(); } Delivery.prototype = { /** * 初始化添加区域事件 */ initCreateRegion: function () { var _this = this; $(_this.tableElement).find('.add-region').click(function () { // 渲染地域 var str = ''; $(_this.tableElement).find('input[type=hidden]').each(function (index, item) { str += $(item).val() + ','; }); var alreadyIds = str.length > 0 ? str.substring(0, str.length - 1).split(',') : []; if (alreadyIds.length === 373) { layer.msg('已经选择了所有区域~'); return false; } _this.RegionalChoice.render(alreadyIds); _this.showRegionalModal(function () { // 弹窗交互完成 var Checked = _this.RegionalChoice.getCheckedContent(); Checked.ids.length > 0 && _this.appendRulesTr(Checked.content, Checked.ids); }); }); }, /** * 创建可配送区域规则 */ appendRulesTr: function (regionStr, checkedIds) { var $html = $( '' + '' + '

' + ' ' + regionStr + '

' + '

' + ' 编辑' + ' 删除' + '

' + ' ' + '' + '' + ' ' + '' + '' + ' ' + '' + '' + ' ' + '' + '' + ' ' + '' + '' ); $(this.tableElement).children("tbody").find('tr:last').before($html); }, /** * 显示区域选择窗口 * @param callback */ showRegionalModal: function (callback) { var _this = this; var area = [$(window).width() > 800 ? '800px' : '95%', $(window).height() > 600 ? '600px' : '95%']; layer.open({ type: 1, shade: false, title: '选择可配送区域', btn: ['确定', '取消'], area: area, //宽高 content: $('.regional-choice'), yes: function (index) { callback && callback(); layer.close(index); }, end: function () { // 销毁已选中区域 _this.RegionalChoice.destroy(); } }); }, /** * 编辑区域事件 */ clickEditEvent: function () { var _this = this , $table = $(_this.tableElement); $table.on('click', '.edit', function () { // 渲染地域 var $html = $(this).parent().parent() , $content = $html.find('.selected-content') , $input = $html.find('input[type=hidden]'); _this.RegionalChoice.render([], $input.val().split(',')); // 显示地区选择弹窗 _this.showRegionalModal(function () { // 弹窗交互完成 var Checked = _this.RegionalChoice.getCheckedContent(); if (Checked.ids.length > 0) { $content.html(Checked.content); $input.val(Checked.ids); } }); }); }, /** * 删除区域事件 */ clickDeleteEvent: function () { var $table = $(this.tableElement); $table.on('click', '.delete', function () { var $delete = $(this); layer.confirm('确定要删除吗?', function (index) { $delete.parents('tr').remove(); layer.close(index); }); }); }, /** * 切换计费方式 */ clickMethodEvent: function () { $('input:radio[name="delivery[method]"]').change(function (e) { var $first = $('.first') , $additional = $('.additional'); if (e.currentTarget.value === '20') $first.text('首重 (Kg)') && $additional.text('续重 (Kg)'); else $first.text('首件 (个)') && $additional.text('续件 (个)'); }); }, }; window.Delivery = Delivery; })(window); //******* 地区选择插件 *******// (function () { /*** * 地区选择插件 * @param container * @param datas * @constructor */ function RegionalChoice(container, datas) { this.container = container; this.datas = datas; this.initInterface(); // 初始化地域界面 } RegionalChoice.prototype = { /** * 条件渲染 * @param alreadyIds 已存在的区域ID: 用于新增 * @param checkedIds 已选中的区域ID: 用于编辑 * @param */ render: function (alreadyIds, checkedIds) { alreadyIds = alreadyIds || []; alreadyIds.length > 0 && this.setAlready(alreadyIds); checkedIds = checkedIds || []; checkedIds.length > 0 && this.setChecked(checkedIds); }, /** * 初始化地域界面 */ initInterface: function () { var _this = this; $(_this.container).append( $('
', { class: 'place-div' }).append( $('
', {}).append( $('
', { class: 'checkbtn' }) .append( $('