| layui.define(['form'], function (exports) { | 
|   | 
|     var form = layui.form, | 
|         $ = layui.jquery, | 
|         layer = layui.layer, | 
|         index = 0, | 
|         oldId, | 
|     MOD_NAME = 'labelGeneration', | 
|         formField = { | 
|             label: { | 
|                 id: '-1', | 
|                 tag: "label", | 
|             }, | 
|         }, | 
|         labelGeneration = { | 
|             set: function (options) { | 
|                 var that = this; | 
|                 that.config = $.extend({} | 
|                     , that.config | 
|                     , options); | 
|                 return that; | 
|             } | 
|             //事件监听 | 
|             , on: function (events | 
|                 , callback) { | 
|                 return layui.onevent.call(this | 
|                     , MOD_NAME | 
|                     , events | 
|                     , callback); | 
|             } | 
|         }, | 
|         Class = function (options) { | 
|             var that = this; | 
|             that.config = $.extend({} | 
|                 , that.config | 
|                 , labelGeneration.config | 
|                 , options); | 
|             that.render(); | 
|         }, | 
|         thisIns = function () { | 
|             var that = this | 
|                 , options = that.config; | 
|             return { | 
|                 reload: function (options) { | 
|                     that.reload.call(that | 
|                         , options); | 
|                 }, getOptions: function () { | 
|                     return options || null; | 
|                 }, getData: function () { | 
|                     return options.data || null; | 
|                 } | 
|             } | 
|         } | 
|   | 
|     Class.prototype.config = { | 
|         version: "1.0.0" | 
|         , Author: "谁家没一个小强" | 
|         , generateId: 0 | 
|         , data: [] | 
|         , isEnter: false | 
|     }; | 
|   | 
|     /* 自动生成ID 当前页面自动排序*/ | 
|     Class.prototype.autoId = function (tag) { | 
|         var that = this, | 
|             options = that.config; | 
|         options.generateId = options.generateId + 1; | 
|         return tag + '_' + options.generateId; | 
|     } | 
|   | 
|     Class.prototype.components = { | 
|         label: { | 
|             render: function (json,options) { | 
|                 var _html = '<blockquote class="layui-elem-quote">'; | 
|                 _html += '<div class="layui-form layui-form-pane layui-form-item">'; | 
|                 _html += '<label class="layui-form-label">输入标签</label>'; | 
|                 _html += '<div class="layui-input-inline">'; | 
|                 if (options.isEnter) { | 
|                 _html += '<input type="text" id="{0}"  placeholder="按回车生成标签" autocomplete="off" class="layui-input">' | 
|                     .format(json.id); | 
|                 } else { | 
|                     _html += '<input type="text" id="{0}" placeholder="通过按钮生成标签" autocomplete="off" class="layui-input">' | 
|                     .format(json.id); | 
|                 } | 
|                 _html += '</div>'; | 
|                 if (!options.isEnter) { | 
|                     _html += '<button type="button" id="{0}-button" class="layui-btn layui-btn-normal">确定</button>'.format(json.id); | 
|                 } | 
|                 _html += '<label class="layui-form-label">颜色选择</label>'; | 
|                 _html += '<div class="layui-input-inline">'; | 
|                 _html += '<select lay-filter="{0}-switchTest">'.format(json.id); | 
|                 _html += '<option value="" selected>墨绿色</option>'; | 
|                 _html += '<option value="layui-btn-primary">原始色</option>'; | 
|                 _html += '<option value="layui-btn-normal">天蓝色</option>'; | 
|                 _html += '<option value="layui-btn-warm">暖黄色</option>'; | 
|                 _html += '<option value="layui-btn-danger">红色</option>'; | 
|                 _html += '</select>'; | 
|                 _html += '</div>'; | 
|                 _html += '</div>'; | 
|                 _html += '<div id="{0}-content" class="layui-btn-container"></div>'.format(json.id); | 
|                 _html += '</blockquote>'; | 
|                 return _html; | 
|             }, | 
|             update: function (json) { | 
|   | 
|             }, | 
|             /* 获取对象 */ | 
|             jsonData: function (id, that) { | 
|                 //分配一个新的ID | 
|                 var _json = JSON.parse(JSON.stringify(formField.label)); | 
|                 _json.id = id == undefined ? that.autoId(_json.tag) : id; | 
|                 that.checkId(_json,that); | 
|                 return _json; | 
|             } | 
|         } | 
|     }; | 
|   | 
|     /* 判定id是否重复*/ | 
|     Class.prototype.checkId = function (json,that) { | 
|         if ($("#" + json.id + "-content").length != 0) { | 
|                 json.id = that.autoId(json.tag); | 
|                 that.checkId(json); | 
|         } else { | 
|             return; | 
|         } | 
|     } | 
|   | 
|     Class.prototype.bindGridSortEvent = function (json) { | 
|         var that = this | 
|             , options = that.config; | 
|         var formItemSort = Sortable.create(document.getElementById(json.id + "-content"), { | 
|             group: { | 
|                 name: 'group' + json.id | 
|             }, | 
|             animation: 1000, | 
|             onEnd: function (evt) { | 
|                 var _values = $("#" + json.id + "-content").find("div"); | 
|                 var ops = []; | 
|                 for (var i = 0; i < _values.length; i++) { | 
|                     ops.push({"ngColor": $(_values[i]).attr("ng-color"), "value": $(_values[i]).text()}); | 
|                 } | 
|                 options.data = ops; | 
|             } | 
|         }); | 
|     } | 
|   | 
|     /* 绑定事件*/ | 
|     Class.prototype.deleteValue = function (value, ngValue) { | 
|         var that = this | 
|             , options = that.config; | 
|         for (var i = 0; i < options.data.length; i++) { | 
|             if (options.data[i].value === value && options.data[i].ngColor === ngValue) { | 
|                 options.data.splice(i, 1); | 
|                 break; | 
|             } | 
|         } | 
|     } | 
|   | 
|     /* 绑定事件*/ | 
|     Class.prototype.bindPropertyEvent = function (_json) { | 
|         var that = this | 
|             , options = that.config; | 
|         var colorClass = ""; | 
|         if (options.isEnter) { | 
|             $("#" + _json.id).keypress(function (event) { | 
|                 if (event.which === 13) { | 
|                     var _value = $(this).val(); | 
|                     if (_value === "") { | 
|                         layer.msg('标签值不能为空'); | 
|                         return; | 
|                     } | 
|                     index = index + 1; | 
|                     var _html = '<div class="layui-btn {0} none-transition" id="{2}" ng-index="{3}" ng-color="{0}">{1}<i class="layui-icon layui-icon-close"></i></div>' | 
|                         .format(colorClass, _value, _json.id + index, index); | 
|                     $("#" + _json.id + "-content").append(_html); | 
|                     options.data.push({"ngColor": colorClass, "value": _value}); | 
|                     $("#" + _json.id + index + " .layui-icon-close").click(function () { | 
|                         that.deleteValue($(this).parent().text(), $(this).parent().attr("ng-color")); | 
|                         $(this).parent().remove(); | 
|                     }); | 
|                     return false; | 
|                 } | 
|             }); | 
|         } else { | 
|             $("#" + _json.id + "-button").click(function (event) { | 
|                 var _value = $("#" + _json.id).val(); | 
|                 if (_value === "") { | 
|                     layer.msg('标签值不能为空'); | 
|                     return; | 
|                 } | 
|                 index = index + 1; | 
|                 var _html = '<div class="layui-btn {0} none-transition" id="{2}" ng-index="{3}" ng-color="{0}">{1}<i class="layui-icon layui-icon-close"></i></div>' | 
|                     .format(colorClass, _value, _json.id + index, index); | 
|                 $("#" + _json.id + "-content").append(_html); | 
|                 options.data.push({"ngColor": colorClass, "value": _value}); | 
|                 $("#" + _json.id + index + " .layui-icon-close").click(function () { | 
|                     that.deleteValue($(this).parent().text(), $(this).parent().attr("ng-color")); | 
|                     $(this).parent().remove(); | 
|                 }); | 
|             }); | 
|         } | 
|   | 
|         form.on('select(' + _json.id + '-switchTest)', function (data) { | 
|             colorClass = data.value; | 
|         }); | 
|         for (var i = 0; i < options.data.length; i++) { | 
|             index = index + 1; | 
|             var _html = '<div class="layui-btn {0} none-transition" id="{2}" ng-index="{3}" ng-color="{0}">{1}<i class="layui-icon layui-icon-close"></i></div>' | 
|                 .format(options.data[i].ngColor, options.data[i].value, _json.id + index, index); | 
|             $("#" + _json.id + "-content").append(_html); | 
|             $("#" + _json.id + index + " .layui-icon-close").click(function () { | 
|                 that.deleteValue($(this).parent().text(), $(this).parent().attr("ng-color")); | 
|                 $(this).parent().remove(); | 
|             }); | 
|         } | 
|     } | 
|   | 
|     /* 渲染组件 */ | 
|     Class.prototype.renderComponents = function () { | 
|         var that = this | 
|             , options = that.config; | 
|         var elem = $(options.elem); | 
|         elem.empty(); | 
|         var jsonData = that.components['label'].jsonData(undefined, that); | 
|         elem.append(that.components['label'].render(jsonData,options)); | 
|         that.bindPropertyEvent(jsonData); | 
|         that.bindGridSortEvent(jsonData); | 
|         form.render(); | 
|     } | 
|   | 
|     Class.prototype.reload = function (options) { | 
|         var that = this; | 
|         options = options || {};//如果是空的话,就赋值 {} | 
|         that.config = $.extend({} | 
|             , that.config | 
|             , labelGeneration.config | 
|             , options); | 
|         that.render(options); | 
|     } | 
|   | 
|     //核心入口 初始化一个 regionSelect 类 | 
|     labelGeneration.render = function (options) { | 
|         var ins = new Class(options); | 
|         return thisIns.call(ins); | 
|     } | 
|     /** | 
|      * 渲染组件 | 
|      */ | 
|     Class.prototype.render = function (options) { | 
|         var that = this | 
|             , options = that.config; | 
|         that.renderComponents(); | 
|     } | 
|   | 
|     String.prototype.format = function (args) { | 
|         var result = this; | 
|         if (arguments.length > 0) { | 
|             if (arguments.length == 1 && typeof (args) == "object") { | 
|                 for (var key in args) { | 
|                     if (args[key] != undefined) { | 
|                         var reg = new RegExp("({" + key + "})" | 
|                             , "g"); | 
|                         result = result.replace(reg | 
|                             , args[key]); | 
|                     } | 
|                 } | 
|             } else { | 
|                 for (var i = 0; i < arguments.length; i++) { | 
|                     if (arguments[i] != undefined) { | 
|                         var reg = new RegExp("({[" + i + "]})" | 
|                             , "g"); | 
|                         result = result.replace(reg | 
|                             , arguments[i]); | 
|                     } | 
|                 } | 
|             } | 
|         } | 
|         return result; | 
|     } | 
|   | 
|     exports(MOD_NAME, labelGeneration); | 
| }); |