/** 
 | 
 +------------------------------------------------------------------------------------+ 
 | 
 + ayq-layui-form-designer(layui表单设计器) 
 | 
 +------------------------------------------------------------------------------------+ 
 | 
 + ayq-layui-form-designer v2.0.0 
 | 
 * MIT License By http://116.62.237.101:8009/ 
 | 
 + 作者:谁家没一个小强 
 | 
 + 官方: 
 | 
 + 时间:2022-05-23 
 | 
 +------------------------------------------------------------------------------------+ 
 | 
 + 版权声明:该版权完全归谁家没一个小强所有,可转载使用和学习,但请务必保留版权信息 
 | 
 +------------------------------------------------------------------------------------+ 
 | 
 + 本项目是一个基于layui表单组件的表单设计器 
 | 
 + 1.本项目基于Layui、Jquery、Sortable 
 | 
 + 2.项目已经基本实现了拖动布局,父子布局 
 | 
 + 3.项目实现了大部分基于Layui的Form表单控件布局,包括输入框、编辑器、下拉、单选、单选组、多选组、日期、滑块、评分、轮播、图片、颜色选择、图片上传、文件上传 
 | 
 + 4.表单数据的获取与回显,禁用全表单 
 | 
 +------------------------------------------------------------------------------------+ 
 | 
 */ 
 | 
layui.define(["layer",'flow', "laytpl", "element", "form", "slider", "laydate", "rate", "colorpicker", "layedit", "carousel", "upload", "formField","staticField", "numberInput", "iconPicker", "cron", "labelGeneration"] 
 | 
    , function (exports) { 
 | 
        var $ = layui.jquery 
 | 
            , layer = layui.layer 
 | 
            , laytpl = layui.laytpl 
 | 
            , setter = layui.cache 
 | 
            , element = layui.element 
 | 
            , slider = layui.slider 
 | 
            , laydate = layui.laydate 
 | 
            , rate = layui.rate 
 | 
            , colorpicker = layui.colorpicker 
 | 
            , carousel = layui.carousel 
 | 
            , form = layui.form 
 | 
            , upload = layui.upload 
 | 
            , layedit = layui.layedit 
 | 
            , flow = layui.flow 
 | 
            , formField = layui.formField 
 | 
            , staticField = layui.staticField 
 | 
            , hint = layui.hint 
 | 
            , numberInput = layui.numberInput 
 | 
            , iconPicker = layui.iconPicker 
 | 
            , cron = layui.cron 
 | 
            , labelGeneration = layui.labelGeneration 
 | 
            , files = [] 
 | 
            , images = [] 
 | 
            , iceEditorObjects = {} 
 | 
            , labelGenerationObjects = {} 
 | 
            , signObjects = {} 
 | 
            //模块名称常量 
 | 
            , MOD_NAME = 'formDesigner' 
 | 
            //外部接口 
 | 
            , formDesigner = { 
 | 
                index: layui.formDesigner ? (layui.formDesigner.index + 10000) : 0 
 | 
                //设置全局项 
 | 
                , 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); 
 | 
                } 
 | 
            } 
 | 
            , 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; 
 | 
                    }, getHtmlData: function () { 
 | 
                        return that.getHtmlData() || null; 
 | 
                    }, geticeEditorObjects: function () { 
 | 
                        return iceEditorObjects || null; 
 | 
                    },getImages:function () { 
 | 
                        return images || null; 
 | 
                    },getFiles:function () { 
 | 
                        return files || null; 
 | 
                    },getFormData:function () { 
 | 
                        return that.getFormData() || null; 
 | 
                    },setFormData:function (json) { 
 | 
                        return that.setFormData(json) || null; 
 | 
                    },globalDisable:function () { 
 | 
                        return that.globalDisable() || null; 
 | 
                    },globalNoDisable:function () { 
 | 
                        return that.globalNoDisable() || null; 
 | 
                    }, 
 | 
                } 
 | 
            } 
 | 
            , getThisInsConfig = function (id) { 
 | 
                var config = thisIns.config[id]; 
 | 
                if (!config) { 
 | 
                    hint.error('在表实例中找不到ID选项'); 
 | 
                } 
 | 
                return config || null; 
 | 
            } 
 | 
            , Class = function (options) { 
 | 
                var that = this; 
 | 
                that.index = ++formDesigner.index; //增加实例,index 也是要增加JSON.stringify(options.data, null, 4) 
 | 
                that.config = $.extend({} 
 | 
                    , that.config 
 | 
                    , formDesigner.config 
 | 
                    , options); 
 | 
                that.render(); 
 | 
            }; 
 | 
  
 | 
  
 | 
        /* 组件定义 */ 
 | 
        Class.prototype.components = { 
 | 
            input: { 
 | 
                /** 
 | 
                 * 根据json对象生成html对象 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} elem 表单面板jquery对象 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                render: function (json,selected,elem,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _selected = selected ? 'active' : ''; 
 | 
                    var _disabled = json.disabled ? 'disabled=""' : ''; 
 | 
                    var _disabledClass = json.disabled ? ' layui-disabled' : ''; 
 | 
                    var _readonly = json.readonly ? 'readonly=""' : ''; 
 | 
                    var _required = json.required ? 'required' : ''; 
 | 
                    var _hideLabel = json.hideLabel ? 'display: none;' : ''; 
 | 
                    if (json.expression !== null && json.expression !== undefined ) { 
 | 
                        if (json.expression !== '') { 
 | 
                            _required = _required + '|' + json.expression; 
 | 
                        } 
 | 
                    } 
 | 
                    var _html = '<div id="{0}" class="layui-form-item {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, _selected, json.index); 
 | 
                    _html += '<label class="layui-form-label {0}" style="width: {3}px;{4}"><span style="color:red;">{2}</span>{1}:</label>'.format(json.required ? 'layui-form-required' : '', json.label,json.required ? '*' : '',json.labelWidth,_hideLabel); 
 | 
                    if (json.hideLabel) { 
 | 
                        _html += '<div class="layui-input-block" style="margin-left: 0px">'; 
 | 
                    } else { 
 | 
                        _html += '<div class="layui-input-block" style="margin-left: {0}px">'.format(json.labelWidth); 
 | 
                    } 
 | 
                    _html += '<input name="{0}" value="{1}" placeholder="{3}" class="layui-input{7}" lay-vertype="tips" lay-verify="{6}" {4} {5} style="width:{2}">' 
 | 
                        .format(json.id, json.defaultValue ? json.defaultValue : '', json.width, json.placeholder, _readonly, _disabled, _required, _disabledClass); 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    elem.append(_html); 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象更新html对象 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                update: function (json,that) { 
 | 
                    var _disabled = json.disabled ? 'disabled=""' : ''; 
 | 
                    var _readonly = json.readonly ? 'readonly=""' : ''; 
 | 
                    var _required = json.required ? 'required' : ''; 
 | 
                    var _disabledClass = json.disabled ? ' layui-disabled' : ''; 
 | 
                    if (json.expression !== null && json.expression !== undefined ) { 
 | 
                        if (json.expression !== '') { 
 | 
                            _required = 'required' + '|' + json.expression; 
 | 
                        } 
 | 
                    } 
 | 
                    var $block = $('#' + json.id + ' .layui-input-block'); 
 | 
                    var $label = $('#' + json.id + ' .layui-form-label'); 
 | 
                    $block.empty(); 
 | 
                    $label.empty(); 
 | 
                    $label.css("width",json.labelWidth); 
 | 
                    if (json.required) { 
 | 
                        // $label.append('<span style="color:red;">*</span>'); 
 | 
                    } 
 | 
                    $label.append(json.label + ":"); 
 | 
                    if (json.hideLabel) { 
 | 
                        $label.css("display","none"); 
 | 
                        $block.css("margin-left","0px"); 
 | 
                    } else { 
 | 
                        $label.css("display","block"); 
 | 
                        $block.css("margin-left",json.labelWidth); 
 | 
                    } 
 | 
                    var _html = ''; 
 | 
                    //重绘设计区改id下的所有元素 
 | 
                    _html += '<input name="{0}" value="{1}" placeholder="{3}" class="layui-input{7}" lay-vertype="tips" lay-verify="{6}" {4} {5} style="width:{2}">' 
 | 
                        .format(json.id, json.defaultValue ? json.defaultValue : '', json.width, json.placeholder, _readonly, _disabled, _required, _disabledClass); 
 | 
                    $block.append(_html); 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据components组件对象获取组件属性 
 | 
                 * @param {object} id 所属组件id 
 | 
                 * @param {object} index 所属对象组件索引 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                jsonData: function (id, index,that) { 
 | 
                    var _json = JSON.parse(JSON.stringify(formField.components.input)); 
 | 
                    _json.id = id; 
 | 
                    _json.index = index; 
 | 
                    return _json; 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据 json 对象显示对应的属性 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                property: function (json,that) { 
 | 
                    that.renderCommonProperty(json); //根据 json 对象获取对应的属性的html 
 | 
                    that.initCommonProperty(json); //初始化 json 对象获取对应的属性 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成html文本 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateHtml: function (json,selected,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _selected = selected ? 'active' : ''; 
 | 
                    var _disabled = json.disabled ? 'disabled=""' : ''; 
 | 
                    var _disabledClass = json.disabled ? ' layui-disabled' : ''; 
 | 
                    var _readonly = json.readonly ? 'readonly=""' : ''; 
 | 
                    var _required = json.required ? 'required' : ''; 
 | 
                    var _hideLabel = json.hideLabel ? 'display: none;' : ''; 
 | 
                    if (json.expression !== null && json.expression !== undefined ) { 
 | 
                        if (json.expression !== '') { 
 | 
                            _required = _required + '|' + json.expression; 
 | 
                        } 
 | 
                    } 
 | 
                    var _html = '<div id="{0}" class="layui-form-item {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, _selected,json.index); 
 | 
                    _html += '<label class="layui-form-label {0}" style="width: {3}px;{4}"><span style="color:red;">{2}</span>{1}:</label>'.format(json.required ? 'layui-form-required' : '', json.label,json.required ? '*' : '',json.labelWidth,_hideLabel); 
 | 
                    if (json.hideLabel) { 
 | 
                        _html += '<div class="layui-input-block" style="margin-left: 0px">'; 
 | 
                    } else { 
 | 
                        _html += '<div class="layui-input-block" style="margin-left: {0}px">'.format(json.labelWidth); 
 | 
                    } 
 | 
                    _html += '<input name="{0}" value="{1}" placeholder="{3}" class="layui-input{7}" lay-vertype="tips" lay-verify="{6}" {4} {5} style="width:{2}">' 
 | 
                        .format(json.id, json.defaultValue ? json.defaultValue : '', json.width, json.placeholder, _readonly, _disabled, _required, _disabledClass); 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    return _html; 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成js文本 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateScript:function (json,that) { 
 | 
                    return ''; 
 | 
                } 
 | 
            }, 
 | 
            blockquote: { 
 | 
                /** 
 | 
                 * 根据json对象生成html对象 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} elem 表单面板jquery对象 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                render: function (json,selected,elem,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _selected = selected ? 'active' : ''; 
 | 
                    var _html = '<div id="{0}" class="layui-form-item {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, _selected, json.index); 
 | 
                    _html += '<blockquote id="{0}" class="layui-elem-quote" style="width:calc({2} - 35px);border-left: 5px solid {3};">{1}</blockquote>' 
 | 
                        .format(json.id +json.tag, json.defaultValue ? json.defaultValue : '', json.width,json.colorSelection); 
 | 
                    _html += '</div>'; 
 | 
                    elem.append(_html); 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象更新html对象 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                update: function (json,that) { 
 | 
                    var $block = $('#' + json.id +json.tag); 
 | 
                    $block.css("width","calc({0} - 35px)".format(json.width)); 
 | 
                    $block.css("border-left","5px solid {0}".format(json.colorSelection)); 
 | 
                    $block.html(json.defaultValue); 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据components组件对象获取组件属性 
 | 
                 * @param {object} id 所属组件id 
 | 
                 * @param {object} index 所属对象组件索引 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                jsonData: function (id, index,that) { 
 | 
                    var _json = JSON.parse(JSON.stringify(formField.components.blockquote)); 
 | 
                    _json.id = id; 
 | 
                    _json.index = index; 
 | 
                    return _json; 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据 json 对象显示对应的属性 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                property: function (json,that) { 
 | 
                    that.renderCommonProperty(json); //根据 json 对象获取对应的属性的html 
 | 
                    that.initCommonProperty(json); //初始化 json 对象获取对应的属性 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成html文本 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateHtml: function (json,selected,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _selected = selected ? 'active' : ''; 
 | 
                    var _html = '<div id="{0}" class="layui-form-item {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, _selected, json.index); 
 | 
                    _html += '<blockquote id="{0}" class="layui-elem-quote" style="width:calc({2} - 35px);border-left: 5px solid {3};">{1}</blockquote>' 
 | 
                        .format(json.id +json.tag, json.defaultValue ? json.defaultValue : '', json.width,json.colorSelection); 
 | 
                    _html += '</div>'; 
 | 
                    return _html; 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成js文本 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateScript:function (json,that) { 
 | 
                    return ''; 
 | 
                } 
 | 
            }, 
 | 
            spacing: { 
 | 
                /** 
 | 
                 * 根据json对象生成html对象 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} elem 表单面板jquery对象 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                render: function (json,selected,elem,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _selected = selected ? 'active' : ''; 
 | 
                    var _html = '<div id="{0}" class="layui-form-item {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, _selected, json.index); 
 | 
                    _html += '<div id="{0}" style="height:{1}px;"></div>' 
 | 
                        .format(json.id +json.tag,json.whiteSpace); 
 | 
                    _html += '</div>'; 
 | 
                    elem.append(_html); 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象更新html对象 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                update: function (json,that) { 
 | 
                    var $block = $('#' + json.id +json.tag); 
 | 
                    $block.css("height","{0}px".format(json.whiteSpace)); 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据components组件对象获取组件属性 
 | 
                 * @param {object} id 所属组件id 
 | 
                 * @param {object} index 所属对象组件索引 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                jsonData: function (id, index,that) { 
 | 
                    var _json = JSON.parse(JSON.stringify(formField.components.spacing)); 
 | 
                    _json.id = id; 
 | 
                    _json.index = index; 
 | 
                    return _json; 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据 json 对象显示对应的属性 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                property: function (json,that) { 
 | 
                    that.renderCommonProperty(json); //根据 json 对象获取对应的属性的html 
 | 
                    that.initCommonProperty(json); //初始化 json 对象获取对应的属性 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成html文本 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateHtml: function (json,selected,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _selected = selected ? 'active' : ''; 
 | 
                    var _html = '<div id="{0}" class="layui-form-item {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, _selected, json.index); 
 | 
                    _html += '<div id="{0}" style="height:{1}px;"></div>' 
 | 
                        .format(json.id +json.tag,json.whiteSpace); 
 | 
                    _html += '</div>'; 
 | 
                    return _html; 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成js文本 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateScript:function (json,that) { 
 | 
                    return ''; 
 | 
                } 
 | 
            }, 
 | 
            line: { 
 | 
                /** 
 | 
                 * 根据json对象生成html对象 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} elem 表单面板jquery对象 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                render: function (json,selected,elem,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _selected = selected ? 'active' : ''; 
 | 
                    var _html = '<div id="{0}" class="layui-form-item {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, _selected, json.index); 
 | 
                    _html += '<fieldset id="{0}" class="layui-elem-field layui-field-title" style="border-color: {1};width: {2}">'.format(json.id +json.tag,json.colorSelection,json.width); 
 | 
                    if (json.defaultValue) { 
 | 
                        _html += '<legend>{0}</legend>'.format(json.defaultValue); 
 | 
                    } 
 | 
                    _html += '</fieldset>'; 
 | 
                    elem.append(_html); 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象更新html对象 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                update: function (json,that) { 
 | 
                    var $block = $('#' + json.id +json.tag); 
 | 
                    $block.css("width",json.width); 
 | 
                    $block.css("border-color",json.colorSelection); 
 | 
                    $block.empty(); 
 | 
                    if (json.defaultValue) { 
 | 
                        $block.append('<legend>{0}</legend>'.format(json.defaultValue)); 
 | 
                    } 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据components组件对象获取组件属性 
 | 
                 * @param {object} id 所属组件id 
 | 
                 * @param {object} index 所属对象组件索引 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                jsonData: function (id, index,that) { 
 | 
                    var _json = JSON.parse(JSON.stringify(formField.components.line)); 
 | 
                    _json.id = id; 
 | 
                    _json.index = index; 
 | 
                    return _json; 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据 json 对象显示对应的属性 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                property: function (json,that) { 
 | 
                    that.renderCommonProperty(json); //根据 json 对象获取对应的属性的html 
 | 
                    that.initCommonProperty(json); //初始化 json 对象获取对应的属性 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成html文本 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateHtml: function (json,selected,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _selected = selected ? 'active' : ''; 
 | 
                    var _html = '<div id="{0}" class="layui-form-item {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, _selected, json.index); 
 | 
                    _html += '<fieldset id="{0}" class="layui-elem-field layui-field-title" style="border-color: {1};width: {2}">'.format(json.id +json.tag,json.colorSelection,json.width); 
 | 
                    if (json.defaultValue) { 
 | 
                        _html += '<legend>{0}</legend>'.format(json.defaultValue); 
 | 
                    } 
 | 
                    _html += '</fieldset>'; 
 | 
                    return _html; 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成js文本 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateScript:function (json,that) { 
 | 
                    return ''; 
 | 
                } 
 | 
            }, 
 | 
            password: { 
 | 
                /** 
 | 
                 * 根据json对象生成html对象 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} elem 表单面板jquery对象 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                render: function (json,selected,elem,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _disabled = json.disabled ? 'disabled=""' : ''; 
 | 
                    var _readonly = json.readonly ? 'readonly=""' : ''; 
 | 
                    var _required = json.required ? 'lay-verify="required"' : ''; 
 | 
                    var _disabledClass = json.disabled ? ' layui-disabled' : ''; 
 | 
                    var _hideLabel = json.hideLabel ? 'display: none;' : ''; 
 | 
                    var _html = '<div id="{0}" class="layui-form-item {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, selected ? 'active' : '', json.index); 
 | 
                    _html += '<label class="layui-form-label {0}" style="width: {3}px;{4}"><span style="color:red;">{2}</span>{1}:</label>'.format(json.required ? 'layui-form-required' : '', json.label,json.required ? '*' : '',json.labelWidth,_hideLabel); 
 | 
                    if (json.hideLabel) { 
 | 
                        _html += '<div class="layui-input-block" style="margin-left: 0px">'; 
 | 
                    } else { 
 | 
                        _html += '<div class="layui-input-block" style="margin-left: {0}px">'.format(json.labelWidth); 
 | 
                    } 
 | 
                    _html += '<input type="password" name="{0}" placeholder="{3}" value="{1}" autocomplete="off" style="width:{2}" {4}  {5} {6} class="layui-input{7}">' 
 | 
                        .format(json.id, json.defaultValue ? json.defaultValue : '', json.width, json.placeholder, _readonly, _disabled, _required, _disabledClass); 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    elem.append(_html); 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象更新html对象 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                update: function (json,that) { 
 | 
                    var _disabled = json.disabled ? 'disabled=""' : ''; 
 | 
                    var _readonly = json.readonly ? 'readonly=""' : ''; 
 | 
                    var _required = json.required ? 'lay-verify="required"' : ''; 
 | 
                    var _disabledClass = json.disabled ? ' layui-disabled' : ''; 
 | 
                    var $block = $('#' + json.id + ' .layui-input-block'); 
 | 
                    var $label = $('#' + json.id + ' .layui-form-label'); 
 | 
                    $block.empty(); 
 | 
                    $label.empty(); 
 | 
                    $label.css("width",json.labelWidth); 
 | 
                    if (json.required) { 
 | 
                        // $label.append('<span style="color:red;">*</span>'); 
 | 
                    } 
 | 
                    $label.append(json.label + ":"); 
 | 
                    if (json.hideLabel) { 
 | 
                        $label.css("display","none"); 
 | 
                        $block.css("margin-left","0px"); 
 | 
                    } else { 
 | 
                        $label.css("display","block"); 
 | 
                        $block.css("margin-left",json.labelWidth); 
 | 
                    } 
 | 
                    var _html = ''; 
 | 
                    //重绘设计区改id下的所有元素 
 | 
                    _html += '<input type="password" name="{0}" placeholder="{3}" value="{1}" autocomplete="off" style="width:{2}" {4} {5} {6} class="layui-input{7}">' 
 | 
                        .format(json.id, json.defaultValue ? json.defaultValue : '', json.width, json.placeholder, _readonly, _disabled, _required, _disabledClass); 
 | 
                    $block.append(_html); 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据components组件对象获取组件属性 
 | 
                 * @param {object} id 所属组件id 
 | 
                 * @param {object} index 所属对象组件索引 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                jsonData: function (id, index, that) { 
 | 
                    //分配一个新的ID 
 | 
                    var _json = JSON.parse(JSON.stringify(formField.components.password)); 
 | 
                    _json.id = id; 
 | 
                    _json.index = index; 
 | 
                    return _json; 
 | 
  
 | 
                }, 
 | 
                /** 
 | 
                 * 根据 json 对象显示对应的属性 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                property: function (json,that) { 
 | 
                    that.renderCommonProperty(json); //根据 json 对象获取对应的属性的html 
 | 
                    that.initCommonProperty(json); //初始化 json 对象获取对应的属性 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成html文本 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateHtml: function (json,selected,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _disabled = json.disabled ? 'disabled=""' : ''; 
 | 
                    var _readonly = json.readonly ? 'readonly=""' : ''; 
 | 
                    var _required = json.required ? 'lay-verify="required"' : ''; 
 | 
                    var _disabledClass = json.disabled ? ' layui-disabled' : ''; 
 | 
                    var _hideLabel = json.hideLabel ? 'display: none;' : ''; 
 | 
                    var _html = '<div id="{0}" class="layui-form-item {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, selected ? 'active' : '', json.index); 
 | 
                    _html += '<label class="layui-form-label {0}" style="width: {3}px;{4}"><span style="color:red;">{2}</span>{1}:</label>'.format(json.required ? 'layui-form-required' : '', json.label,json.required ? '*' : '',json.labelWidth,_hideLabel); 
 | 
                    if (json.hideLabel) { 
 | 
                        _html += '<div class="layui-input-block" style="margin-left: 0px">'; 
 | 
                    } else { 
 | 
                        _html += '<div class="layui-input-block" style="margin-left: {0}px">'.format(json.labelWidth); 
 | 
                    } 
 | 
                    _html += '<input type="password" name="{0}" placeholder="{3}" value="{1}" autocomplete="off" style="width:{2}" {4}  {5} {6} class="layui-input{7}">' 
 | 
                        .format(json.id, json.defaultValue ? json.defaultValue : '', json.width, json.placeholder, _readonly, _disabled, _required, _disabledClass); 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    return _html; 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成js文本 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateScript:function (json,that) { 
 | 
                    return ''; 
 | 
                } 
 | 
            }, 
 | 
            textarea: { 
 | 
                /** 
 | 
                 * 根据json对象生成html对象 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} elem 表单面板jquery对象 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                render: function (json,selected,elem,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _disabled = json.disabled ? 'disabled=""' : ''; 
 | 
                    var _required = json.required ? 'lay-verify="required"' : ''; 
 | 
                    var _readonly = json.readonly ? 'readonly=""' : ''; 
 | 
                    var _disabledClass = json.disabled ? ' layui-disabled' : ''; 
 | 
                    var _hideLabel = json.hideLabel ? 'display: none;' : ''; 
 | 
                    var _html = '<div id="{0}" class="layui-form-item layui-form-text {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, selected ? 'active' : '', json.index); 
 | 
                    _html += '<label class="layui-form-label {0}" style="width: {3};{4}"><span style="color:red;">{2}</span>{1}:</label>'.format(json.required ? 'layui-form-required' : '', json.label,json.required ? '*' : '',json.width,_hideLabel); 
 | 
                    _html += '<div class="layui-input-block"  style="width: {0}">'.format(json.width); 
 | 
                    _html += '<textarea name="{0}" placeholder="{3}" width="{2}" class="layui-textarea{6}" {4} {5} {7}>{1}</textarea>' 
 | 
                        .format(json.id, json.defaultValue ? json.defaultValue : '', json.width, json.placeholder, _disabled, _required, _disabledClass, _readonly); 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    elem.append(_html); 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象更新html对象 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                update: function (json,that) { 
 | 
                    var _disabled = json.disabled ? 'disabled=""' : ''; 
 | 
                    var _required = json.required ? 'lay-verify="required"' : ''; 
 | 
                    var _disabledClass = json.disabled ? ' layui-disabled' : ''; 
 | 
                    var _readonly = json.readonly ? 'readonly=""' : ''; 
 | 
                    var $block = $('#' + json.id + ' .layui-input-block'); 
 | 
                    var $label = $('#' + json.id + ' .layui-form-label'); 
 | 
                    $block.empty(); 
 | 
                    $label.empty(); 
 | 
                    if (json.hideLabel) { 
 | 
                        $label.css("display","none"); 
 | 
                    } else { 
 | 
                        $label.css("display","block"); 
 | 
                    } 
 | 
                    var _html = ''; 
 | 
                    _html += '<textarea name="{0}" placeholder="{3}" width="{2}" class="layui-textarea{6}" {4} {5} {7}>{1}</textarea>' 
 | 
                        .format(json.id, json.defaultValue ? json.defaultValue : '', json.width, json.placeholder, _disabled, _required, _disabledClass, _readonly); 
 | 
                    $('#' + json.id + ' .layui-input-block').append(_html); 
 | 
                    $label.css({width: '{0}'.format(json.width)}); 
 | 
                    $block.css({width: '{0}'.format(json.width)}); 
 | 
                    if (json.required) { 
 | 
                        // $label.append('<span style="color:red;">*</span>'); 
 | 
                    } 
 | 
                    $label.append(json.label + ":"); 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据components组件对象获取组件属性 
 | 
                 * @param {object} id 所属组件id 
 | 
                 * @param {object} index 所属对象组件索引 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                jsonData: function (id, index, that) { 
 | 
                    //分配一个新的ID 
 | 
                    var _json = JSON.parse(JSON.stringify(formField.components.textarea)); 
 | 
                    _json.id = id; 
 | 
                    _json.index = index; 
 | 
                    return _json; 
 | 
  
 | 
                }, 
 | 
                /** 
 | 
                 * 根据 json 对象显示对应的属性 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                property: function (json,that) { 
 | 
                    that.renderCommonProperty(json); //根据 json 对象获取对应的属性的html 
 | 
                    that.initCommonProperty(json); //初始化 json 对象获取对应的属性 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成html文本 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateHtml: function (json,selected,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _disabled = json.disabled ? 'disabled=""' : ''; 
 | 
                    var _required = json.required ? 'lay-verify="required"' : ''; 
 | 
                    var _readonly = json.readonly ? 'readonly=""' : ''; 
 | 
                    var _disabledClass = json.disabled ? ' layui-disabled' : ''; 
 | 
                    var _hideLabel = json.hideLabel ? 'display: none;' : ''; 
 | 
                    var _html = '<div id="{0}" class="layui-form-item layui-form-text {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, selected ? 'active' : '', json.index); 
 | 
                    _html += '<label class="layui-form-label {0}" style="width: {3};{4}"><span style="color:red;">{2}</span>{1}:</label>'.format(json.required ? 'layui-form-required' : '', json.label,json.required ? '*' : '',json.width,_hideLabel); 
 | 
                    _html += '<div class="layui-input-block"  style="width: {0}">'.format(json.width); 
 | 
                    _html += '<textarea name="{0}" placeholder="{3}" width="{2}" class="layui-textarea{6}" {4} {5} {7}>{1}</textarea>' 
 | 
                        .format(json.id, json.defaultValue ? json.defaultValue : '', json.width, json.placeholder, _disabled, _required, _disabledClass, _readonly); 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    return _html; 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成js文本 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateScript:function (json,that) { 
 | 
                    return ''; 
 | 
                } 
 | 
            }, 
 | 
            select: { 
 | 
                /** 
 | 
                 * 根据json对象生成html对象 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} elem 表单面板jquery对象 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                render: function (json, selected,elem,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _disabled = json.disabled ? 'disabled=""' : ''; 
 | 
                    var _required = json.required ? 'required' : ''; 
 | 
                    var _hideLabel = json.hideLabel ? 'display: none;' : ''; 
 | 
                    var _html = '<div id="{0}" class="layui-form-item {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, selected ? 'active' : '', json.index); 
 | 
                    _html += '<label class="layui-form-label {0}" style="width: {3}px;{4}"><span style="color:red;">{2}</span>{1}:</label>'.format(json.required ? 'layui-form-required' : '', json.label,json.required ? '*' : '',json.labelWidth,_hideLabel); 
 | 
                    if (json.hideLabel) { 
 | 
                        _html += '<div class="layui-input-block layui-form" lay-filter="{0}" style="margin-left: 0px">'.format(json.id); 
 | 
                    } else { 
 | 
                        _html += '<div class="layui-input-block layui-form" lay-filter="{0}" style="margin-left: {1}px">'.format(json.id,json.labelWidth); 
 | 
                    } 
 | 
                    _html += '<select name="{0}" lay-verify="{2}" {1} >'.format(json.id, _disabled,_required); 
 | 
                    /*if (json.defaultValue === undefined) { 
 | 
                        _html += '<option value="{0}" selected="">{1}</option>'.format('', '请选择'); 
 | 
                    }*/ 
 | 
                    for (var i = 0; i < json.options.length; i++) { 
 | 
                        if (json.options[i].checked) { 
 | 
                            _html += '<option value="{0}" selected="">{1}</option>'.format(json.options[i].value, json.options[i].text); 
 | 
                        } else { 
 | 
                            _html += '<option value="{0}">{1}</option>'.format(json.options[i].value, json.options[i].text); 
 | 
                        } 
 | 
                    } 
 | 
                    _html += '</select>' 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    elem.append(_html); 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象更新html对象 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                update: function (json,that) { 
 | 
                    var _disabled = json.disabled ? 'disabled=""' : ''; 
 | 
                    var _required = json.required ? 'required' : ''; 
 | 
                    var $block = $('#' + json.id + ' .layui-input-block'); 
 | 
                    var $label = $('#' + json.id + ' .layui-form-label'); 
 | 
                    $block.empty(); 
 | 
                    $label.empty(); 
 | 
                    var _html = ''; 
 | 
                    _html += '<select name="{0}" lay-verify="{2}" {1}>'.format(json.id, _disabled,_required); 
 | 
                    //重绘设计区改id下的所有元素 
 | 
                    /* if (json.defaultValue === undefined) { 
 | 
                         _html += '<option value="{0}" selected="">{1}</option>'.format('', '请选择'); 
 | 
                     }*/ 
 | 
                    for (var i = 0; i < json.options.length; i++) { 
 | 
                        if (json.options[i].checked) { 
 | 
                            _html += '<option value="{0}" selected="">{1}</option>'.format(json.options[i].value, json.options[i].text); 
 | 
                        } else { 
 | 
                            _html += '<option value="{0}">{1}</option>'.format(json.options[i].value, json.options[i].text); 
 | 
                        } 
 | 
                    } 
 | 
                    _html += '</select>' 
 | 
                    $('#' + json.id + ' .layui-input-block').append(_html); 
 | 
                    $label.css("width",json.labelWidth); 
 | 
                    if (json.required) { 
 | 
                        // $label.append('<span style="color:red;">*</span>'); 
 | 
                    } 
 | 
                    $label.append(json.label + ":"); 
 | 
                    form.render('select',json.id); 
 | 
                    $('#' + json.id + ' .layui-input-block div.layui-unselect.layui-form-select').css({width: '{0}'.format(json.width)}); 
 | 
                    if (json.hideLabel) { 
 | 
                        $label.css("display","none"); 
 | 
                        $block.css("margin-left","0px"); 
 | 
                        $block.css({width: 'calc({0})'.format(json.width)}); 
 | 
                    } else { 
 | 
                        $label.css("display","block"); 
 | 
                        $block.css("margin-left",json.labelWidth); 
 | 
                        $block.css({width: 'calc({0} - {1}px)'.format(json.width,json.labelWidth)}); 
 | 
                    } 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据components组件对象获取组件属性 
 | 
                 * @param {object} id 所属组件id 
 | 
                 * @param {object} index 所属对象组件索引 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                jsonData: function (id, index, that) { 
 | 
                    //分配一个新的ID 
 | 
                    var _json = JSON.parse(JSON.stringify(formField.components.select)); 
 | 
                    _json.id = id; 
 | 
                    _json.index = index; 
 | 
                    return _json; 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据 json 对象显示对应的属性 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                property: function (json,that) { 
 | 
                    that.renderCommonProperty(json); //根据 json 对象获取对应的属性的html 
 | 
                    that.initCommonProperty(json); //初始化 json 对象获取对应的属性 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成html文本 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateHtml: function (json,selected,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _disabled = json.disabled ? 'disabled=""' : ''; 
 | 
                    var _required = json.required ? 'required' : ''; 
 | 
                    var _hideLabel = json.hideLabel ? 'display: none;' : ''; 
 | 
                    var _html = '<div id="{0}" class="layui-form-item {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, selected ? 'active' : '', json.index); 
 | 
                    _html += '<label class="layui-form-label {0}" style="width: {3}px;"><span style="color:red;">{2}</span>{1}:</label>'.format(json.required ? 'layui-form-required' : '', json.label,json.required ? '*' : '',json.labelWidth,_hideLabel); 
 | 
                    if (json.hideLabel) { 
 | 
                        _html += '<div class="layui-input-block layui-form" lay-filter="{0}" style="margin-left: 0px">'.format(json.id); 
 | 
                    } else { 
 | 
                        _html += '<div class="layui-input-block layui-form" lay-filter="{0}" style="margin-left: {1}px">'.format(json.id,json.labelWidth); 
 | 
                    } 
 | 
                    _html += '<select name="{0}" lay-verify="{2}" {1} >'.format(json.id, _disabled,_required); 
 | 
                    /*if (json.defaultValue === undefined) { 
 | 
                        _html += '<option value="{0}" selected="">{1}</option>'.format('', '请选择'); 
 | 
                    }*/ 
 | 
                    for (var i = 0; i < json.options.length; i++) { 
 | 
                        if (json.options[i].checked) { 
 | 
                            _html += '<option value="{0}" selected="">{1}</option>'.format(json.options[i].value, json.options[i].text); 
 | 
                        } else { 
 | 
                            _html += '<option value="{0}">{1}</option>'.format(json.options[i].value, json.options[i].text); 
 | 
                        } 
 | 
                    } 
 | 
                    _html += '</select>' 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    return _html; 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成js文本 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateScript:function (json,that) { 
 | 
                    return ''; 
 | 
                } 
 | 
            }, 
 | 
            radio: { 
 | 
                /** 
 | 
                 * 根据json对象生成html对象 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} elem 表单面板jquery对象 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                render: function (json, selected,elem,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _disabled = json.disabled ? 'disabled=""' : ''; 
 | 
                    var _hideLabel = json.hideLabel ? 'display: none;' : ''; 
 | 
                    var _html = '<div id="{0}" class="layui-form-item {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, selected ? 'active' : '', json.index); 
 | 
                    _html += '<label class="layui-form-label" style="width: {1}px;{2}">{0}:</label>'.format(json.label,json.labelWidth,_hideLabel); 
 | 
                    if (json.hideLabel) { 
 | 
                        _html += '<div class="layui-input-block" style="margin-left: 0px">'; 
 | 
                    } else { 
 | 
                        _html += '<div class="layui-input-block" style="margin-left: {0}px">'.format(json.labelWidth); 
 | 
                    } 
 | 
                    for (var i = 0; i < json.options.length; i++) { 
 | 
                        if (json.options[i].checked) { 
 | 
                            _html += '<input type="radio" name="{0}" value="{1}" title="{2}" checked="" {3}>'.format(json.id, json.options[i].value, json.options[i].text, _disabled); 
 | 
                        } else { 
 | 
                            _html += '<input type="radio" name="{0}" value="{1}" title="{2}" {3}>'.format(json.id, json.options[i].value, json.options[i].text, _disabled); 
 | 
                        } 
 | 
                    } 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    elem.append(_html); 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象更新html对象 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                update: function (json,that) { 
 | 
                    var _disabled = json.disabled ? 'disabled=""' : ''; 
 | 
                    var $block = $('#' + json.id + ' .layui-input-block'); 
 | 
                    var $label = $('#' + json.id + ' .layui-form-label'); 
 | 
                    $block.empty(); 
 | 
                    $label.empty(); 
 | 
                    $label.css("width",json.labelWidth); 
 | 
                    $label.append(json.label + ":"); 
 | 
                    if (json.hideLabel) { 
 | 
                        $label.css("display","none"); 
 | 
                        $block.css("margin-left","0px"); 
 | 
                        $block.css({width: 'calc({0} - {1}px)'.format(json.width,json.labelWidth)}); 
 | 
                    } else { 
 | 
                        $label.css("display","block"); 
 | 
                        $block.css("margin-left",json.labelWidth); 
 | 
                        $block.css({width: 'calc({0} - {1}px)'.format(json.width,json.labelWidth)}); 
 | 
                    } 
 | 
                    var _html = ''; 
 | 
                    //重绘设计区改id下的所有元素 
 | 
                    for (var i = 0; i < json.options.length; i++) { 
 | 
                        if (json.options[i].checked) { 
 | 
                            _html += '<input type="radio" name="{0}" value="{1}" title="{2}" checked="" {3}>'.format(json.id, json.options[i].value, json.options[i].text, _disabled); 
 | 
                        } else { 
 | 
                            _html += '<input type="radio" name="{0}" value="{1}" title="{2}" {3}>'.format(json.id, json.options[i].value, json.options[i].text, _disabled); 
 | 
                        } 
 | 
                    } 
 | 
                    $block.append(_html); 
 | 
                    form.render('radio'); 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据components组件对象获取组件属性 
 | 
                 * @param {object} id 所属组件id 
 | 
                 * @param {object} index 所属对象组件索引 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                jsonData: function (id, index, that) { 
 | 
                    //分配一个新的ID 
 | 
                    var _json = JSON.parse(JSON.stringify(formField.components.radio)); 
 | 
                    _json.id = id; 
 | 
                    _json.index = index; 
 | 
                    return _json; 
 | 
  
 | 
                }, 
 | 
                /** 
 | 
                 * 根据 json 对象显示对应的属性 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                property: function (json,that) { 
 | 
                    that.renderCommonProperty(json); //根据 json 对象获取对应的属性的html 
 | 
                    that.initCommonProperty(json); //初始化 json 对象获取对应的属性 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成html文本 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateHtml: function (json,selected,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _disabled = json.disabled ? 'disabled=""' : ''; 
 | 
                    var _hideLabel = json.hideLabel ? 'display: none;' : ''; 
 | 
                    var _html = '<div id="{0}" class="layui-form-item {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, selected ? 'active' : '', json.index); 
 | 
                    _html += '<label class="layui-form-label" style="width: {1}px;{2}">{0}:</label>'.format(json.label,json.labelWidth,_hideLabel); 
 | 
                    if (json.hideLabel) { 
 | 
                        _html += '<div class="layui-input-block" style="margin-left: 0px">'; 
 | 
                    } else { 
 | 
                        _html += '<div class="layui-input-block" style="margin-left: {0}px">'.format(json.labelWidth); 
 | 
                    } 
 | 
                    for (var i = 0; i < json.options.length; i++) { 
 | 
                        if (json.options[i].checked) { 
 | 
                            _html += '<input type="radio" name="{0}" value="{1}" title="{2}" checked="" {3}>'.format(json.id, json.options[i].value, json.options[i].text, _disabled); 
 | 
                        } else { 
 | 
                            _html += '<input type="radio" name="{0}" value="{1}" title="{2}" {3}>'.format(json.id, json.options[i].value, json.options[i].text, _disabled); 
 | 
                        } 
 | 
                    } 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    return _html; 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成js文本 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateScript:function (json,that) { 
 | 
                    return ''; 
 | 
                } 
 | 
            }, 
 | 
            checkbox: { 
 | 
                /** 
 | 
                 * 根据json对象生成html对象 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} elem 表单面板jquery对象 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                render: function (json, selected,elem,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _disabled = json.disabled ? 'disabled=""' : ''; 
 | 
                    var _required = json.required ? 'lay-verify="otherReq"' : ''; 
 | 
                    var _hideLabel = json.hideLabel ? 'display: none;' : ''; 
 | 
                    var _html = '<div id="{0}" class="layui-form-item {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, selected ? 'active' : '', json.index); 
 | 
                    _html += '<label class="layui-form-label {0}" style="width: {3}px;{4}"><span style="color:red;">{2}</span>{1}:</label>'.format(json.required ? 'layui-form-required' : '', json.label,json.required ? '*' : '',json.labelWidth,_hideLabel); 
 | 
                    if (json.hideLabel) { 
 | 
                        _html += '<div class="layui-input-block" style="margin-left: 0px;">'; 
 | 
                    } else { 
 | 
                        _html += '<div class="layui-input-block" style="margin-left: {0}px;">'.format(json.labelWidth); 
 | 
                    } 
 | 
                    for (var i = 0; i < json.options.length; i++) { 
 | 
                        if (json.options[i].checked) { 
 | 
                            _html += '<input type="checkbox" name="{0}[{1}]" title="{2}" checked="" {3} {4}>'.format(json.id, json.options[i].value, json.options[i].text, _disabled,_required); 
 | 
                        } else { 
 | 
                            _html += '<input type="checkbox" name="{0}[{1}]" title="{2}" {3} {4}>'.format(json.id, json.options[i].value, json.options[i].text, _disabled,_required); 
 | 
                        } 
 | 
                    } 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    elem.append(_html); 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象更新html对象 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                update: function (json,that) { 
 | 
                    var _disabled = json.disabled ? 'disabled=""' : ''; 
 | 
                    var _required = json.required ? 'lay-verify="otherReq"' : ''; 
 | 
                    var $block = $('#' + json.id + ' .layui-input-block'); 
 | 
                    var $label = $('#' + json.id + ' .layui-form-label'); 
 | 
                    $block.empty(); 
 | 
                    $label.empty(); 
 | 
                    var _html = ''; 
 | 
                    //重绘设计区改id下的所有元素 
 | 
                    for (var i = 0; i < json.options.length; i++) { 
 | 
                        if (json.options[i].checked) { 
 | 
                            _html += '<input type="checkbox" name="{0}[{1}]" title="{2}" checked="" {3} {4}>'.format(json.id, json.options[i].value, json.options[i].text, _disabled,_required); 
 | 
                        } else { 
 | 
                            _html += '<input type="checkbox" name="{0}[{1}]" title="{2}" {3} {4}>'.format(json.id, json.options[i].value, json.options[i].text, _disabled,_required); 
 | 
                        } 
 | 
                    } 
 | 
                    $block.append(_html); 
 | 
                    $label.css("width",json.labelWidth); 
 | 
                    if (json.hideLabel) { 
 | 
                        $label.css("display","none"); 
 | 
                        $block.css("margin-left","0px"); 
 | 
                    } else { 
 | 
                        $label.css("display","block"); 
 | 
                        $block.css("margin-left",json.labelWidth); 
 | 
                    } 
 | 
                    if (json.required) { 
 | 
                        // $label.append('<span style="color:red;">*</span>'); 
 | 
                    } 
 | 
                    $label.append(json.label + ":"); 
 | 
                    form.render('checkbox'); 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据components组件对象获取组件属性 
 | 
                 * @param {object} id 所属组件id 
 | 
                 * @param {object} index 所属对象组件索引 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                jsonData: function (id, index, that) { 
 | 
                    //分配一个新的ID 
 | 
                    var _json = JSON.parse(JSON.stringify(formField.components.checkbox)); 
 | 
                    _json.id = id; 
 | 
                    _json.index = index; 
 | 
                    return _json; 
 | 
  
 | 
                }, 
 | 
                /** 
 | 
                 * 根据 json 对象显示对应的属性 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                property: function (json,that) { 
 | 
                    that.renderCommonProperty(json); //根据 json 对象获取对应的属性的html 
 | 
                    that.initCommonProperty(json); //初始化 json 对象获取对应的属性 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成html文本 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateHtml: function (json,selected,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _disabled = json.disabled ? 'disabled=""' : ''; 
 | 
                    var _required = json.required ? 'lay-verify="otherReq"' : ''; 
 | 
                    var _hideLabel = json.hideLabel ? 'display: none;' : ''; 
 | 
                    var _html = '<div id="{0}" class="layui-form-item {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, selected ? 'active' : '', json.index); 
 | 
                    _html += '<label class="layui-form-label {0}" style="width: {3}px;{4}"><span style="color:red;">{2}</span>{1}:</label>'.format(json.required ? 'layui-form-required' : '', json.label,json.required ? '*' : '',json.labelWidth,_hideLabel); 
 | 
                    if (json.hideLabel) { 
 | 
                        _html += '<div class="layui-input-block" style="margin-left: 0px;">'; 
 | 
                    } else { 
 | 
                        _html += '<div class="layui-input-block" style="margin-left: {0}px;">'.format(json.labelWidth); 
 | 
                    } 
 | 
                    for (var i = 0; i < json.options.length; i++) { 
 | 
                        if (json.options[i].checked) { 
 | 
                            _html += '<input type="checkbox" name="{0}[{1}]" title="{2}" checked="" {3} {4}>'.format(json.id, json.options[i].value, json.options[i].text, _disabled,_required); 
 | 
                        } else { 
 | 
                            _html += '<input type="checkbox" name="{0}[{1}]" title="{2}" {3} {4}>'.format(json.id, json.options[i].value, json.options[i].text, _disabled,_required); 
 | 
                        } 
 | 
                    } 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    return _html; 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成js文本 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateScript:function (json,that) { 
 | 
                    return ''; 
 | 
                } 
 | 
            }, 
 | 
            switch: { 
 | 
                /** 
 | 
                 * 根据json对象生成html对象 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} elem 表单面板jquery对象 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                render: function (json, selected,elem,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _disabled = json.disabled ? 'disabled=""' : ''; 
 | 
                    var _disabledClass = json.disabled ? ' layui-disabled' : ''; 
 | 
                    var _hideLabel = json.hideLabel ? 'display: none;' : ''; 
 | 
                    var _html = '<div id="{0}" class="layui-form-item {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, selected ? 'active' : '', json.index); 
 | 
                    _html += '<label class="layui-form-label" style="width: {1}px;{2}">{0}:</label>'.format(json.label,json.labelWidth,_hideLabel); 
 | 
                    if (json.hideLabel) { 
 | 
                        _html += '<div class="layui-input-block" style="width:calc({0});border: 0px solid #d2d2d2;margin-left: 0px">'.format(json.width,json.labelWidth); 
 | 
                    } else { 
 | 
                        _html += '<div class="layui-input-block" style="width:calc({0} - {1}px);border: 1px solid #d2d2d2;border-left: 0px;margin-left: {1}px">'.format(json.width,json.labelWidth); 
 | 
                    } 
 | 
                    _html += '<input type="checkbox" name="{0}" lay-skin="switch" lay-text="ON|OFF" {1} class="{2}" {3}>'.format(json.id, _disabled, _disabledClass, json.switchValue ? 'checked' : ''); 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    elem.append(_html); 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象更新html对象 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                update: function (json,that) { 
 | 
                    var _disabled = json.disabled ? 'disabled=""' : ''; 
 | 
                    var _disabledClass = json.disabled ? ' layui-disabled' : ''; 
 | 
                    var $block = $('#' + json.id + ' .layui-input-block'); 
 | 
                    var $label = $('#' + json.id + ' .layui-form-label'); 
 | 
                    $block.empty(); 
 | 
                    $label.empty(); 
 | 
                    var _html = ''; 
 | 
                    _html += '<input type="checkbox" name="{0}" lay-skin="switch" lay-text="ON|OFF" {1} class="{2}" {3}>'.format(json.tag, _disabled, _disabledClass, json.switchValue ? 'checked' : ''); 
 | 
                    $block.append(_html); 
 | 
                    $label.append(json.label + ":"); 
 | 
                    if (json.hideLabel) { 
 | 
                        $label.css("display","none"); 
 | 
                        $block.css("margin-left","0px"); 
 | 
                        $block.css("border","0px"); 
 | 
                        $block.css({width: 'calc({0})'.format(json.width)}); 
 | 
                    } else { 
 | 
                        $label.css("display","block"); 
 | 
                        $block.css("margin-left",json.labelWidth); 
 | 
                        $block.css({width: 'calc({0} - {1}px)'.format(json.width,json.labelWidth)}); 
 | 
                    } 
 | 
                    $label.css("width",json.labelWidth); 
 | 
                    form.render('checkbox'); 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据components组件对象获取组件属性 
 | 
                 * @param {object} id 所属组件id 
 | 
                 * @param {object} index 所属对象组件索引 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                jsonData: function (id, index, that) { 
 | 
                    var _json = JSON.parse(JSON.stringify(formField.components.switch)); 
 | 
                    _json.id = id; 
 | 
                    _json.index = index; 
 | 
                    return _json; 
 | 
  
 | 
                }, 
 | 
                /** 
 | 
                 * 根据 json 对象显示对应的属性 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                property: function (json,that) { 
 | 
                    that.renderCommonProperty(json); //根据 json 对象获取对应的属性的html 
 | 
                    that.initCommonProperty(json); //初始化 json 对象获取对应的属性 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成html文本 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateHtml: function (json,selected,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _disabled = json.disabled ? 'disabled=""' : ''; 
 | 
                    var _disabledClass = json.disabled ? ' layui-disabled' : ''; 
 | 
                    var _hideLabel = json.hideLabel ? 'display: none;' : ''; 
 | 
                    var _html = '<div id="{0}" class="layui-form-item {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, selected ? 'active' : '', json.index); 
 | 
                    _html += '<label class="layui-form-label" style="width: {1}px;{2}">{0}:</label>'.format(json.label,json.labelWidth,_hideLabel); 
 | 
                    if (json.hideLabel) { 
 | 
                        _html += '<div class="layui-input-block" style="width:calc({0});border: 0px solid #d2d2d2;margin-left: 0px">'.format(json.width,json.labelWidth); 
 | 
                    } else { 
 | 
                        _html += '<div class="layui-input-block" style="width:calc({0} - {1}px);border: 1px solid #d2d2d2;border-left: 0px;margin-left: {1}px">'.format(json.width,json.labelWidth); 
 | 
                    } 
 | 
                    _html += '<input type="checkbox" name="{0}" lay-skin="switch" lay-text="ON|OFF" {1} class="{2}" {3}>'.format(json.id, _disabled, _disabledClass, json.switchValue ? 'checked' : ''); 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    return _html; 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成js文本 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateScript:function (json,that) { 
 | 
                    return ''; 
 | 
                } 
 | 
            }, 
 | 
            slider: { 
 | 
                /** 
 | 
                 * 根据json对象生成html对象 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} elem 表单面板jquery对象 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                render: function (json, selected,elem,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _disabled = json.disabled ? 'disabled=""' : ''; 
 | 
                    var _hideLabel = json.hideLabel ? 'display: none;' : ''; 
 | 
                    var _html = '<div id="{0}" class="layui-form-item {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, selected ? 'active' : '', json.index); 
 | 
                    _html += '<label class="layui-form-label" style="width: {1}px;{2}">{0}:</label>'.format(json.label,json.labelWidth,_hideLabel); 
 | 
                    if (json.hideLabel) { 
 | 
                        _html += '<div class="layui-input-block layui-form" style="width:calc({0});margin-left: 0px">'.format(json.width); 
 | 
                    } else { 
 | 
                        _html += '<div class="layui-input-block layui-form" style="width:calc({0} - {1}px);margin-left: {1}px">'.format(json.width,json.labelWidth); 
 | 
                    } 
 | 
                    _html += '<div id="{0}" class="widget-slider"></div>'.format(json.tag + json.id); 
 | 
                    _html += '<input name="{0}" type="hidden" value="{1}"></input>'.format(json.id,json.defaultValue); 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    elem.append(_html); 
 | 
                    slider.render({ 
 | 
                        elem: '#' + json.tag + json.id, 
 | 
                        value: json.defaultValue, //初始值 
 | 
                        min: json.minValue, 
 | 
                        max: json.maxValue, 
 | 
                        step: json.stepValue, 
 | 
                        disabled: json.disabled, 
 | 
                        input:json.isInput, 
 | 
                    }); 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象更新html对象 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                update: function (json,that) { 
 | 
                    var $block = $('#' + json.id + ' .layui-input-block'); 
 | 
                    var $label = $('#' + json.id + ' .layui-form-label'); 
 | 
                    $label.empty(); 
 | 
                    $label.css("width",json.labelWidth); 
 | 
                    $label.append(json.label + ":"); 
 | 
                    if (json.hideLabel) { 
 | 
                        $label.css("display","none"); 
 | 
                        $block.css("margin-left","0px"); 
 | 
                        $block.css({width: 'calc({0})'.format(json.width)}); 
 | 
                    } else { 
 | 
                        $label.css("display","block"); 
 | 
                        $block.css("margin-left",json.labelWidth); 
 | 
                        $block.css({width: 'calc({0} - {1}px)'.format(json.width,json.labelWidth)}); 
 | 
                    } 
 | 
                    slider.render({ 
 | 
                        elem: '#' + json.tag + json.id, 
 | 
                        value: json.defaultValue, //初始值 
 | 
                        min: json.minValue, 
 | 
                        max: json.maxValue, 
 | 
                        step: json.stepValue, 
 | 
                        disabled: json.disabled, 
 | 
                        input:json.isInput, 
 | 
                    }); 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据components组件对象获取组件属性 
 | 
                 * @param {object} id 所属组件id 
 | 
                 * @param {object} index 所属对象组件索引 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                jsonData: function (id, index, that) { 
 | 
                    //分配一个新的ID 
 | 
                    var _json = JSON.parse(JSON.stringify(formField.components.slider)); 
 | 
                    _json.id = id; 
 | 
                    _json.index = index; 
 | 
                    return _json; 
 | 
  
 | 
                }, 
 | 
                /** 
 | 
                 * 根据 json 对象显示对应的属性 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                property: function (json,that) { 
 | 
                    that.renderCommonProperty(json); //根据 json 对象获取对应的属性的html 
 | 
                    that.initCommonProperty(json); //初始化 json 对象获取对应的属性 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成html文本 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateHtml: function (json,selected,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _disabled = json.disabled ? 'disabled=""' : ''; 
 | 
                    var _hideLabel = json.hideLabel ? 'display: none;' : ''; 
 | 
                    var _html = '<div id="{0}" class="layui-form-item {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, selected ? 'active' : '', json.index); 
 | 
                    _html += '<label class="layui-form-label" style="width: {1}px;{2}">{0}:</label>'.format(json.label,json.labelWidth,_hideLabel); 
 | 
                    if (json.hideLabel) { 
 | 
                        _html += '<div class="layui-input-block layui-form" style="width:calc({0});margin-left: 0px">'.format(json.width); 
 | 
                    } else { 
 | 
                        _html += '<div class="layui-input-block layui-form" style="width:calc({0} - {1}px);margin-left: {1}px">'.format(json.width,json.labelWidth); 
 | 
                    } 
 | 
                    _html += '<div id="{0}" class="widget-slider"></div>'.format(json.tag + json.id); 
 | 
                    _html += '<input name="{0}" type="hidden" value="{1}"></input>'.format(json.id,json.defaultValue); 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    return _html; 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成js文本 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateScript:function (json,that) { 
 | 
                    var scriptHtmlCode = ''; 
 | 
                    scriptHtmlCode += ['slider.render({', 
 | 
                        , 'elem: "#' + json.tag + json.id + '" ,' 
 | 
                        , 'value: ' + json.defaultValue + ',' 
 | 
                        , 'min: ' + json.minValue + ',' 
 | 
                        , 'max: ' + json.maxValue + ',' 
 | 
                        , 'step: ' + json.stepValue + ',' 
 | 
                        , 'input:' + json.isInput + ',' 
 | 
                        , 'change: function(value){' 
 | 
                        , '$("#' + json.id + '").find("input[name="' + json.id + '"]").val(value);' 
 | 
                        , ' }' 
 | 
                        , '});'].join(''); 
 | 
                    return scriptHtmlCode; 
 | 
                } 
 | 
            }, 
 | 
            date: { 
 | 
                /** 
 | 
                 * 根据json对象生成html对象 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} elem 表单面板jquery对象 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                render: function (json, selected,elem,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _disabledClass = json.disabled ? ' layui-disabled' : ''; 
 | 
                    var _disabledStyle = json.disabled ? ' pointer-events: none;' : ''; 
 | 
                    var _required = json.required ? 'required' : ''; 
 | 
                    var _hideLabel = json.hideLabel ? 'display: none;' : ''; 
 | 
                    var _html = '<div id="{0}" class="layui-form-item {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, selected ? 'active' : '', json.index); 
 | 
                    _html += '<label class="layui-form-label {0}" style="width: {3}px;{4}"><span style="color:red;">{2}</span>{1}:</label>'.format(json.required ? 'layui-form-required' : '', json.label,json.required ? '*' : '',json.labelWidth,_hideLabel); 
 | 
                    if (json.hideLabel) { 
 | 
                        _html += '<div class="layui-input-block" style="width:calc({0});margin-left: 0px;">'.format(json.width); 
 | 
                    } else { 
 | 
                        _html += '<div class="layui-input-block" style="width:calc({0} - {1}px);margin-left: {1}px;">'.format(json.width,json.labelWidth); 
 | 
                    } 
 | 
                    _html += '<input id="{0}" name="{0}" lay-verify="{3}" class="layui-input icon-date widget-date {1}" style="line-height: 40px;{2}"></input>'.format(json.tag + json.id,_disabledClass,_disabledStyle,_required); 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    elem.append(_html); 
 | 
                    laydate.render({ 
 | 
                        elem: '#' + json.tag + json.id, 
 | 
                        btns: ['confirm'], 
 | 
                        type: json.dateType, 
 | 
                        format: json.dateFormat, 
 | 
                        value: json.dateDefaultValue, 
 | 
                        min: json.dataMinValue, 
 | 
                        max: json.dataMaxValue, 
 | 
                    }); 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象更新html对象 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                update: function (json,that) { 
 | 
                    var _disabledClass = json.disabled ? ' layui-disabled' : ''; 
 | 
                    var _disabledStyle = json.disabled ? ' pointer-events: none;' : ''; 
 | 
                    var _required = json.required ? 'required' : ''; 
 | 
                    var $block = $('#' + json.id + ' .layui-input-block'); 
 | 
                    var $label = $('#' + json.id + ' .layui-form-label'); 
 | 
                    $block.empty(); 
 | 
                    $label.empty(); 
 | 
                    if (json.hideLabel) { 
 | 
                        $label.css("display","none"); 
 | 
                        $block.css("margin-left","0px"); 
 | 
                        $block.css({width: 'calc({0})'.format(json.width)}); 
 | 
                    } else { 
 | 
                        $label.css("display","block"); 
 | 
                        $block.css("margin-left",json.labelWidth); 
 | 
                        $block.css({width: 'calc({0} - {1}px)'.format(json.width,json.labelWidth)}); 
 | 
                    } 
 | 
                    $label.css("width",json.labelWidth); 
 | 
                    if (json.required) { 
 | 
                        // $label.append('<span style="color:red;">*</span>'); 
 | 
                    } 
 | 
                    $label.append(json.label + ":"); 
 | 
                    var _html = '<input id="{0}" name="{0}"  lay-verify="{3}" class="layui-input icon-date widget-date {1}" style="line-height: 40px;{2}"></input>'.format(json.tag + json.id,_disabledClass,_disabledStyle,_required); 
 | 
                    $block.append(_html); 
 | 
                    laydate.render({ 
 | 
                        elem: '#' + json.tag + json.id, 
 | 
                        btns: ['confirm'], 
 | 
                        type: json.dateType, 
 | 
                        format: json.dateFormat, 
 | 
                        value: json.dateDefaultValue, 
 | 
                        min: json.dataMinValue, 
 | 
                        max: json.dataMaxValue, 
 | 
                    }); 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据components组件对象获取组件属性 
 | 
                 * @param {object} id 所属组件id 
 | 
                 * @param {object} index 所属对象组件索引 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                jsonData: function (id, index, that) { 
 | 
                    //分配一个新的ID 
 | 
                    var _json = JSON.parse(JSON.stringify(formField.components.date)); 
 | 
                    _json.id = id; 
 | 
                    _json.index = index; 
 | 
                    return _json; 
 | 
  
 | 
                }, 
 | 
                /** 
 | 
                 * 根据 json 对象显示对应的属性 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                property: function (json,that) { 
 | 
                    that.renderCommonProperty(json); //根据 json 对象获取对应的属性的html 
 | 
                    that.initCommonProperty(json); //初始化 json 对象获取对应的属性 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成html文本 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateHtml: function (json,selected,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _disabledClass = json.disabled ? ' layui-disabled' : ''; 
 | 
                    var _disabledStyle = json.disabled ? ' pointer-events: none;' : ''; 
 | 
                    var _required = json.required ? 'required' : ''; 
 | 
                    var _hideLabel = json.hideLabel ? 'display: none;' : ''; 
 | 
                    var _html = '<div id="{0}" class="layui-form-item {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, selected ? 'active' : '', json.index); 
 | 
                    _html += '<label class="layui-form-label {0}" style="width: {3}px;{4}"><span style="color:red;">{2}</span>{1}:</label>'.format(json.required ? 'layui-form-required' : '', json.label,json.required ? '*' : '',json.labelWidth,_hideLabel); 
 | 
                    if (json.hideLabel) { 
 | 
                        _html += '<div class="layui-input-block" style="width:calc({0});margin-left: 0px;">'.format(json.width); 
 | 
                    } else { 
 | 
                        _html += '<div class="layui-input-block" style="width:calc({0} - {1}px);margin-left: {1}px;">'.format(json.width,json.labelWidth); 
 | 
                    } 
 | 
                    _html += '<input id="{0}" name="{0}" lay-verify="{3}" class="layui-input icon-date widget-date {1}" style="line-height: 40px;{2}"></input>'.format(json.tag + json.id,_disabledClass,_disabledStyle,_required); 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    return _html; 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成js文本 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateScript:function (json,that) { 
 | 
                    var scriptHtmlCode = ''; 
 | 
                    scriptHtmlCode += ['laydate.render({' 
 | 
                        , 'elem: "#' + json.tag + json.id + '" ,' 
 | 
                        , 'type:"' + json.datetype + '",' 
 | 
                        , 'format:"' + json.dateformat + '",' 
 | 
                        , 'value:"' + json.dateDefaultValue + '",' 
 | 
                        , 'min:"' + json.dataMinValue + '",' 
 | 
                        , 'max:"' + json.dataMaxValue + '"});'].join(''); 
 | 
                    return scriptHtmlCode; 
 | 
                } 
 | 
            }, 
 | 
            rate: { 
 | 
                /** 
 | 
                 * 根据json对象生成html对象 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} elem 表单面板jquery对象 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                render: function (json, selected,elem,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _readonly = json.readonly ? 'readonly=""' : ''; 
 | 
                    var _required = json.required ? 'required=""' : ''; 
 | 
                    var _hideLabel = json.hideLabel ? 'display: none;' : ''; 
 | 
                    var _html = '<div id="{0}" class="layui-form-item {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, selected ? 'active' : '', json.index); 
 | 
                    _html += '<label class="layui-form-label {0}" style="width:{2}px;{3}">{1}:</label>'.format(json.required ? 'layui-form-required' : '', json.label,json.labelWidth,_hideLabel); 
 | 
                    if (json.hideLabel) { 
 | 
                        _html += '<div class="layui-input-block" style="margin-left: 0px;">'; 
 | 
                    } else { 
 | 
                        _html += '<div class="layui-input-block" style="margin-left: {0}px;">'.format(json.labelWidth + 30); 
 | 
                    } 
 | 
                    _html += '<div id="{0}" class="widget-rate"></div>'.format(json.tag + json.id); 
 | 
                    _html += '<input name="{0}" type="hidden" value="{1}"></input>'.format(json.id,json.defaultValue); 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    elem.append(_html); 
 | 
                    rate.render({ 
 | 
                        elem: '#' + json.tag + json.id, 
 | 
                        value: json.defaultValue, 
 | 
                        text: json.text, 
 | 
                        length: json.rateLength, 
 | 
                        half: json.half, 
 | 
                        readonly: json.readonly, 
 | 
                        theme: json.colorSelection, 
 | 
                        choose: function(value){ 
 | 
                            $("#" + json.id).find("input[name=" + json.id + "]").val(value); 
 | 
                        } 
 | 
                    }); 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象更新html对象 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                update: function (json,that) { 
 | 
                    var $block = $('#' + json.id + ' .layui-input-block'); 
 | 
                    var $label = $('#' + json.id + ' .layui-form-label'); 
 | 
                    $label.empty(); 
 | 
                    if (json.hideLabel) { 
 | 
                        $label.css("display","none"); 
 | 
                        $block.css("margin-left","0px"); 
 | 
                    } else { 
 | 
                        $label.css("display","block"); 
 | 
                        $block.css("margin-left",json.labelWidth + 30); 
 | 
                    } 
 | 
                    $label.append(json.label + ":"); 
 | 
                    rate.render({ 
 | 
                        elem: '#' + json.tag + json.id, 
 | 
                        value: json.defaultValue, 
 | 
                        text: json.text, 
 | 
                        length: json.rateLength, 
 | 
                        half: json.half, 
 | 
                        readonly: json.readonly, 
 | 
                        theme: json.colorSelection, 
 | 
                        choose: function(value){ 
 | 
                            $("#" + json.id).find("input[name=" + json.id + "]").val(value); 
 | 
                        } 
 | 
                    }); 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据components组件对象获取组件属性 
 | 
                 * @param {object} id 所属组件id 
 | 
                 * @param {object} index 所属对象组件索引 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                jsonData: function (id, index, that) { 
 | 
                    //分配一个新的ID 
 | 
                    var _json = JSON.parse(JSON.stringify(formField.components.rate)); 
 | 
                    _json.id = id; 
 | 
                    _json.index = index; 
 | 
                    return _json; 
 | 
  
 | 
                }, 
 | 
                /** 
 | 
                 * 根据 json 对象显示对应的属性 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                property: function (json,that) { 
 | 
                    that.renderCommonProperty(json); //根据 json 对象获取对应的属性的html 
 | 
                    that.initCommonProperty(json); //初始化 json 对象获取对应的属性 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成html文本 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateHtml: function (json,selected,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _disabledClass = json.disabled ? ' layui-disabled' : ''; 
 | 
                    var _disabledStyle = json.disabled ? ' pointer-events: none;' : ''; 
 | 
                    var _required = json.required ? 'required' : ''; 
 | 
                    var _hideLabel = json.hideLabel ? 'display: none;' : ''; 
 | 
                    var _html = '<div id="{0}" class="layui-form-item {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, selected ? 'active' : '', json.index); 
 | 
                    _html += '<label class="layui-form-label {0}" style="width: {3}px;{4}"><span style="color:red;">{2}</span>{1}:</label>'.format(json.required ? 'layui-form-required' : '', json.label,json.required ? '*' : '',json.labelWidth,_hideLabel); 
 | 
                    if (json.hideLabel) { 
 | 
                        _html += '<div class="layui-input-block" style="margin-left: 0px;">'; 
 | 
                    } else { 
 | 
                        _html += '<div class="layui-input-block" style="margin-left: {0}px;">'.format(json.labelWidth + 30); 
 | 
                    } 
 | 
                    _html += '<input id="{0}" name="{0}" lay-verify="{3}" class="layui-input icon-date widget-date {1}" style="line-height: 40px;{2}"></input>'.format(json.tag + json.id,_disabledClass,_disabledStyle,_required); 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    return _html; 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成js文本 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateScript:function (json,that) { 
 | 
                    var scriptHtmlCode = ''; 
 | 
                    scriptHtmlCode += ['rate.render({' 
 | 
                        , 'elem: "#' + json.tag + json.id + '" ,' 
 | 
                        , 'value: ' + json.defaultValue + ',' 
 | 
                        , 'text: ' + json.text + ',' 
 | 
                        , 'length: ' + json.rateLength + ',' 
 | 
                        , 'half: ' + json.half + ',' 
 | 
                        , 'readonly: ' + json.readonly + ',' 
 | 
                        , 'theme: ' + json.colorSelection + ',' 
 | 
                        , 'choose: function(value){' 
 | 
                        , '$("#' + json.id + '").find("input[name="' + json.id + '"]").val(value);' 
 | 
                        , '}' 
 | 
                        , '});'].join(''); 
 | 
                    return scriptHtmlCode; 
 | 
                } 
 | 
            }, 
 | 
            carousel: { 
 | 
                /** 
 | 
                 * 根据json对象生成html对象 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} elem 表单面板jquery对象 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                render: function (json, selected,elem,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _html = '<div id="{0}" class="layui-form-item {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, selected ? 'active' : '', json.index); 
 | 
                    _html += '<div class="layui-carousel" id="{0}">'.format(json.tag + json.id); 
 | 
                    _html += '<div carousel-item class="carousel-item">'; 
 | 
                    for (var i = 0; i < json.options.length; i++) { 
 | 
                        _html += '<div><img src="{0}" /></div>'.format(json.options[i].value); 
 | 
                    } 
 | 
                    _html += '</div>';//end for div carousel-item 
 | 
                    _html += '</div>';//end for class=layui-carousel 
 | 
                    _html += '</div>'; 
 | 
                    elem.append(_html); 
 | 
                    carousel.render({ 
 | 
                        elem: '#' + json.tag + json.id, 
 | 
                        width: json.width,//设置容器宽度 
 | 
                        height: json.height,//设置容器宽度 
 | 
                        arrow: json.arrow, //始终显示箭头 
 | 
                        index: json.startIndex, 
 | 
                        interval: json.interval, 
 | 
                        anim: json.anim, 
 | 
                        autoplay: json.autoplay, 
 | 
                    }); 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象更新html对象 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                update: function (json,that) { 
 | 
                    $('#' + json.tag + json.id).remove(); 
 | 
                    var _html = ''; 
 | 
                    _html += '<div class="layui-carousel" id="{0}">'.format(json.tag + json.id); 
 | 
                    _html += '<div carousel-item class="carousel-item">'; 
 | 
                    for (var i = 0; i < json.options.length; i++) { 
 | 
                        _html += '<div><img src="{0}" /></div>'.format(json.options[i].value); 
 | 
                    } 
 | 
                    _html += '</div>';//end for div carousel-item 
 | 
                    _html += '</div>';//end for class=layui-carousel 
 | 
                    $('#' + json.id).append(_html); 
 | 
                    carousel.render({ 
 | 
                        elem: '#' + json.tag + json.id, 
 | 
                        width: json.width,//设置容器宽度 
 | 
                        height: json.height,//设置容器宽度 
 | 
                        arrow: json.arrow, //始终显示箭头 
 | 
                        index: json.startIndex, 
 | 
                        interval: json.interval, 
 | 
                        anim: json.anim, 
 | 
                        autoplay: json.autoplay 
 | 
                        //anim: 'updown' //切换动画方式 
 | 
                    }); 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据components组件对象获取组件属性 
 | 
                 * @param {object} id 所属组件id 
 | 
                 * @param {object} index 所属对象组件索引 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                jsonData: function (id, index, that) { 
 | 
                    //分配一个新的ID 
 | 
                    var _json = JSON.parse(JSON.stringify(formField.components.carousel)); 
 | 
                    _json.id = id; 
 | 
                    _json.index = index; 
 | 
                    return _json; 
 | 
  
 | 
                }, 
 | 
                /** 
 | 
                 * 根据 json 对象显示对应的属性 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                property: function (json,that) { 
 | 
                    that.renderCommonProperty(json); //根据 json 对象获取对应的属性的html 
 | 
                    that.initCommonProperty(json); //初始化 json 对象获取对应的属性 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成html文本 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateHtml: function (json,selected,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _html = '<div id="{0}" class="layui-form-item {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, selected ? 'active' : '', json.index); 
 | 
                    _html += '<div class="layui-carousel" id="{0}">'.format(json.tag + json.id); 
 | 
                    _html += '<div carousel-item class="carousel-item">'; 
 | 
                    for (var i = 0; i < json.options.length; i++) { 
 | 
                        _html += '<div><img src="{0}" /></div>'.format(json.options[i].value); 
 | 
                    } 
 | 
                    _html += '</div>';//end for div carousel-item 
 | 
                    _html += '</div>';//end for class=layui-carousel 
 | 
                    _html += '</div>'; 
 | 
                    return _html; 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成js文本 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateScript:function (json,that) { 
 | 
                    var scriptHtmlCode = ''; 
 | 
                    scriptHtmlCode += ['carousel.render({' 
 | 
                        , 'elem: "#' + json.tag + json.id + '" ' 
 | 
                        , ',width: "' + json.width + '"' 
 | 
                        , ',height: "' + json.height + '"' 
 | 
                        , ',arrow: "' + json.arrow + '"' 
 | 
                        , ',interval: "' + json.interval + '"' 
 | 
                        , ',anim: "' + json.anim + '"' 
 | 
                        , ',autoplay: "' + json.autoplay + '"' 
 | 
                        , '});'].join(''); 
 | 
                    return scriptHtmlCode; 
 | 
                } 
 | 
            }, 
 | 
            colorpicker: { 
 | 
                /** 
 | 
                 * 根据json对象生成html对象 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} elem 表单面板jquery对象 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                render: function (json, selected,elem,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _hideLabel = json.hideLabel ? 'display: none;' : ''; 
 | 
                    var _html = '<div id="{0}" class="layui-form-item {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, selected ? 'active' : '', json.index); 
 | 
                    _html += '<label class="layui-form-label {0}" style="width: {3}px;{4}"><span style="color:red;">{2}</span>{1}:</label>'.format(json.required ? 'layui-form-required' : '', json.label,json.required ? '*' : '',json.labelWidth,_hideLabel); 
 | 
                    if (json.hideLabel) { 
 | 
                        _html += '<div class="layui-input-block" style="margin-left: 0px">'; 
 | 
                    } else { 
 | 
                        _html += '<div class="layui-input-block" style="margin-left: {0}px">'.format(json.labelWidth); 
 | 
                    } 
 | 
                    if (json.disabled) { 
 | 
                        _html += '<div class="iceEditor-disabled" style="width: 10%;height: 89%;"></div>'; 
 | 
                    } 
 | 
                    _html += '<div id="{0}" class="widget-rate"></div>'.format(json.tag + json.id); 
 | 
                    _html += '<input name="{0}" type="hidden" value="{1}"></input>'.format(json.id,json.defaultValue); 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    elem.append(_html); 
 | 
                    colorpicker.render({ 
 | 
                        elem: '#' + json.tag + json.id 
 | 
                        ,color: json.defaultValue 
 | 
                        ,format: 'rgb' 
 | 
                        ,predefine: true 
 | 
                        ,alpha: true 
 | 
                        ,done: function (color) { 
 | 
                            $("#" + json.id).find("input[name=" + json.id + "]").val(color); 
 | 
                        } 
 | 
                    }); 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象更新html对象 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                update: function (json,that) { 
 | 
                    var $block = $('#' + json.id + ' .layui-input-block'); 
 | 
                    var $label = $('#' + json.id + ' .layui-form-label'); 
 | 
                    $label.empty(); 
 | 
                    if (json.hideLabel) { 
 | 
                        $label.css("display","none"); 
 | 
                        $block.css("margin-left","0px"); 
 | 
                    } else { 
 | 
                        $label.css("display","block"); 
 | 
                        $block.css("margin-left",json.labelWidth); 
 | 
                    }                    $label.css("width",json.labelWidth); 
 | 
                    $label.append(json.label + ":"); 
 | 
                    if (json.disabled) { 
 | 
                        $("#" + json.id).find(".layui-input-block").append('<div class="iceEditor-disabled" style="width: 10%;height: 89%;"></div>'); 
 | 
                    } else { 
 | 
                        $("#" + json.id).find(".iceEditor-disabled").remove(); 
 | 
                    } 
 | 
                    colorpicker.render({ 
 | 
                        elem: '#' + json.tag + json.id 
 | 
                        ,color: json.defaultValue 
 | 
                        ,format: 'rgb' 
 | 
                        ,predefine: true 
 | 
                        ,alpha: true 
 | 
                        ,done: function (color) { 
 | 
                            $("#" + json.id).find("input[name=" + json.id + "]").val(color); 
 | 
                        } 
 | 
                    }); 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据components组件对象获取组件属性 
 | 
                 * @param {object} id 所属组件id 
 | 
                 * @param {object} index 所属对象组件索引 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                jsonData: function (id, index, that) { 
 | 
                    //分配一个新的ID 
 | 
                    var _json = JSON.parse(JSON.stringify(formField.components.colorpicker)); 
 | 
                    _json.id = id; 
 | 
                    _json.index = index; 
 | 
                    return _json; 
 | 
  
 | 
                }, 
 | 
                /** 
 | 
                 * 根据 json 对象显示对应的属性 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                property: function (json,that) { 
 | 
                    that.renderCommonProperty(json); //根据 json 对象获取对应的属性的html 
 | 
                    that.initCommonProperty(json); //初始化 json 对象获取对应的属性 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成html文本 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateHtml: function (json,selected,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _hideLabel = json.hideLabel ? 'display: none;' : ''; 
 | 
                    var _html = '<div id="{0}" class="layui-form-item {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, selected ? 'active' : '', json.index); 
 | 
                    _html += '<label class="layui-form-label {0}" style="width: {3}px;{4}"><span style="color:red;">{2}</span>{1}:</label>'.format(json.required ? 'layui-form-required' : '', json.label,json.required ? '*' : '',json.labelWidth,_hideLabel); 
 | 
                    if (json.hideLabel) { 
 | 
                        _html += '<div class="layui-input-block" style="margin-left: 0px">'; 
 | 
                    } else { 
 | 
                        _html += '<div class="layui-input-block" style="margin-left: {0}px">'.format(json.labelWidth); 
 | 
                    } 
 | 
                    if (json.disabled) { 
 | 
                        _html += '<div class="iceEditor-disabled" style="width: 10%;height: 89%;"></div>'; 
 | 
                    } 
 | 
                    _html += '<div id="{0}" class="widget-rate"></div>'.format(json.tag + json.id); 
 | 
                    _html += '<input name="{0}" type="hidden" value="{1}"></input>'.format(json.id,json.defaultValue); 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    return _html; 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成js文本 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateScript:function (json,that) { 
 | 
                    var scriptHtmlCode = ''; 
 | 
                    scriptHtmlCode += ['colorpicker.render({' 
 | 
                        , 'elem: "#' + json.tag + json.id + '"' 
 | 
                        , ',format: \'rgb\'' 
 | 
                        , ',predefine: true' 
 | 
                        , ',alpha: true' 
 | 
                        , ',done: function (color) {' 
 | 
                        , '$("#' + json.id + '").find("input[name="'+ json.id + '"]").val(color);' 
 | 
                        , '}' 
 | 
                        , '});'].join(''); 
 | 
                    return scriptHtmlCode; 
 | 
                } 
 | 
            }, 
 | 
            image: { 
 | 
                /** 
 | 
                 * 根据json对象生成html对象 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} elem 表单面板jquery对象 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                render: function (json, selected,elem,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _html = '<div id="{0}" class="layui-form-item {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, selected ? 'active' : '', json.index); 
 | 
                    _html += '<label class="layui-form-label {0}">{1}:</label>'.format(json.required ? 'layui-form-required' : '', json.label); 
 | 
                    _html += '<div class="layui-input-block">'; 
 | 
                    _html += '<div class="layui-upload">'; 
 | 
                    _html += '<button type="button" class="layui-btn" id="{0}">多图片上传</button>'.format(json.tag + json.id); 
 | 
                    _html += '<blockquote class="layui-elem-quote layui-quote-nm" style="margin-top: 10px;width: 88%">预览图:'; 
 | 
                    _html += '<div class="layui-upload-list uploader-list" style="overflow: auto;" id="uploader-list-{0}">'.format(json.id); 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</blockquote>'; 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    elem.append(_html); 
 | 
                    if (that.config.viewOrDesign) { 
 | 
                        var data = {"select":json.tag + json.id,"uploadUrl": json.uploadUrl}; 
 | 
                        images.push(data); 
 | 
                    } 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象更新html对象 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                update: function (json,that) { 
 | 
  
 | 
                }, 
 | 
                /** 
 | 
                 * 根据components组件对象获取组件属性 
 | 
                 * @param {object} id 所属组件id 
 | 
                 * @param {object} index 所属对象组件索引 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                jsonData: function (id, index, that) { 
 | 
                    //分配一个新的ID 
 | 
                    var _json = JSON.parse(JSON.stringify(formField.components.image)); 
 | 
                    _json.id = id; 
 | 
                    _json.index = index; 
 | 
                    layer.msg('上传组件请在组件内部自行编写代码,或者根据demo在外部编写代码', { 
 | 
                        time: 2000 
 | 
                    }) 
 | 
                    return _json; 
 | 
  
 | 
                }, 
 | 
                /** 
 | 
                 * 根据 json 对象显示对应的属性 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                property: function (json,that) { 
 | 
                    that.renderCommonProperty(json); //根据 json 对象获取对应的属性的html 
 | 
                    that.initCommonProperty(json); //初始化 json 对象获取对应的属性 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成html文本 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateHtml: function (json,selected,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _html = '<div id="{0}" class="layui-form-item {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, selected ? 'active' : '', json.index); 
 | 
                    _html += '<label class="layui-form-label {0}">{1}:</label>'.format(json.required ? 'layui-form-required' : '', json.label); 
 | 
                    _html += '<div class="layui-input-block">'; 
 | 
                    _html += '<div class="layui-upload">'; 
 | 
                    _html += '<button type="button" class="layui-btn" id="{0}">多图片上传</button>'.format(json.tag + json.id); 
 | 
                    _html += '<blockquote class="layui-elem-quote layui-quote-nm" style="margin-top: 10px;width: 88%">预览图:'; 
 | 
                    _html += '<div class="layui-upload-list uploader-list" style="overflow: auto;" id="uploader-list-{0}">'.format(json.id); 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</blockquote>'; 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    return _html; 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成js文本 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateScript:function (json,that) { 
 | 
                    var scriptHtmlCode = ''; 
 | 
                    scriptHtmlCode += ['upload.render({' 
 | 
                        , 'elem: "#' + json.tag + json.id + '" ' 
 | 
                        , ', url: "' + json.uploadUrl + '"' 
 | 
                        , ', multiple: true' 
 | 
                        , ', before: function (obj) {' 
 | 
                        , 'layer.msg("图片上传中...", {' 
 | 
                        , 'icon: 16,' 
 | 
                        , 'shade: 0.01,' 
 | 
                        , 'time: 0' 
 | 
                        , '})' 
 | 
                        , '}' 
 | 
                        , ', done: function (res) {' 
 | 
                        , 'layer.close(layer.msg());' 
 | 
                        , '$("#uploader-list-' + json.id + '").append(' 
 | 
                        , '\'<div class="file-iteme"><div class="handle"><i class="layui-icon layui-icon-delete"></i></div><img style="width: 100px;height: 100px;" src="\'+ res.data.src + \'">' 
 | 
                        , '<div class="info">\'+ res.data.title+\'</div>' 
 | 
                        , '</div>\'' 
 | 
                        , ');' 
 | 
                        , '}' 
 | 
                        , '});'].join(''); 
 | 
                    return scriptHtmlCode; 
 | 
                } 
 | 
            }, 
 | 
            file: { 
 | 
                /** 
 | 
                 * 根据json对象生成html对象 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} elem 表单面板jquery对象 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                render: function (json, selected,elem,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _html = '<div id="{0}" class="layui-form-item {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, selected ? 'active' : '', json.index); 
 | 
                    _html += '<label class="layui-form-label {0}">{1}:</label>'.format(json.required ? 'layui-form-required' : '', json.label); 
 | 
                    _html += '<div class="layui-input-block">'; 
 | 
                    _html += '<div class="layui-upload">'; 
 | 
                    _html += '<button type="button" class="layui-btn layui-btn-normal" id="{0}">选择多文件</button> '.format(json.tag + json.id); 
 | 
                    _html += ' <div class="layui-upload-list" style="max-width: 1000px;"><table class="layui-table">'; 
 | 
                    _html += '<colgroup><col><col width="150"><col width="260"><col width="150"></colgroup>'; 
 | 
                    _html += '<thead><tr><th>文件名</th><th>大小</th><th>上传进度</th><th>操作</th></tr></thead>'; 
 | 
                    _html += '<tbody id="list-{0}"></tbody></table></div>'.format(json.id); 
 | 
                    _html += '<button type="button" class="layui-btn" id="listAction-{0}">开始上传</button>'.format(json.id); 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</blockquote>'; 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    elem.append(_html); 
 | 
                    if (that.config.viewOrDesign) { 
 | 
                        var data = {"select":json.tag + json.id,"uploadUrl": json.uploadUrl}; 
 | 
                        files.push(data); 
 | 
                    } 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象更新html对象 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                update: function (json,that) { 
 | 
  
 | 
                }, 
 | 
                /** 
 | 
                 * 根据components组件对象获取组件属性 
 | 
                 * @param {object} id 所属组件id 
 | 
                 * @param {object} index 所属对象组件索引 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                jsonData: function (id, index, that) { 
 | 
                    //分配一个新的ID 
 | 
                    var _json = JSON.parse(JSON.stringify(formField.components.file)); 
 | 
                    _json.id = id; 
 | 
                    _json.index = index; 
 | 
                    layer.msg('上传组件请在组件内部自行编写代码,或者根据demo在外部编写代码', { 
 | 
                        time: 2000 
 | 
                    }) 
 | 
                    return _json; 
 | 
  
 | 
                }, 
 | 
                /** 
 | 
                 * 根据 json 对象显示对应的属性 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                property: function (json,that) { 
 | 
                    that.renderCommonProperty(json); //根据 json 对象获取对应的属性的html 
 | 
                    that.initCommonProperty(json); //初始化 json 对象获取对应的属性 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成html文本 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateHtml: function (json,selected,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _html = '<div id="{0}" class="layui-form-item {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, selected ? 'active' : '', json.index); 
 | 
                    _html += '<label class="layui-form-label {0}">{1}:</label>'.format(json.required ? 'layui-form-required' : '', json.label); 
 | 
                    _html += '<div class="layui-input-block">'; 
 | 
                    _html += '<div class="layui-upload">'; 
 | 
                    _html += '<button type="button" class="layui-btn layui-btn-normal" id="{0}">选择多文件</button> '.format(json.tag + json.id); 
 | 
                    _html += ' <div class="layui-upload-list" style="max-width: 1000px;"><table class="layui-table">'; 
 | 
                    _html += '<colgroup><col><col width="150"><col width="260"><col width="150"></colgroup>'; 
 | 
                    _html += '<thead><tr><th>文件名</th><th>大小</th><th>上传进度</th><th>操作</th></tr></thead>'; 
 | 
                    _html += '<tbody id="list-{0}"></tbody></table></div>'.format(json.id); 
 | 
                    _html += '<button type="button" class="layui-btn" id="listAction-{0}">开始上传</button>'.format(json.id); 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</blockquote>'; 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    return _html; 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成js文本 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateScript:function (json,that) { 
 | 
                    var scriptHtmlCode = ''; 
 | 
                    scriptHtmlCode += ['upload.render({' 
 | 
                        , 'elem: "#' + json.tag + json.id + '" ' 
 | 
                        , ', url: "' + json.uploadUrl + '"' 
 | 
                        , ' ,elemList: $("#list-' + json.id + '")' 
 | 
                        , ',accept: "file"' 
 | 
                        , ',multiple: true' 
 | 
                        , ',number: 3' 
 | 
                        , ',auto: false' 
 | 
                        , ',bindAction: "#listAction-' + json.id + '"' 
 | 
                        , ',choose: function(obj){' 
 | 
                        , 'var that = this;' 
 | 
                        , 'var files = this.files = obj.pushFile();' 
 | 
                        , 'obj.preview(function(index, file, result){' 
 | 
                        , 'var tr = $(["<tr id="upload-"+ index +"">"' 
 | 
                        , ',"<td>"+ file.name +"</td>"' 
 | 
                        , ',"<td>"+ (file.size/1014).toFixed(1) +"kb</td>"' 
 | 
                        , ',"<td><div class="layui-progress" lay-filter="progress-demo-"+ index +""><div class="layui-progress-bar" lay-percent=""></div></div></td>"' 
 | 
                        , ',"<td>","<button class="layui-btn layui-btn-xs demo-reload layui-hide">重传</button>","<button class="layui-btn layui-btn-xs layui-btn-danger demo-delete">删除</button>","</td>"' 
 | 
                        , ',"</tr>"].join(""));' 
 | 
                        , 'tr.find(".demo-reload").on("click", function(){obj.upload(index, file);});' 
 | 
                        , 'tr.find(".demo-delete").on("click", function(){delete files[index];tr.remove();uploadListIns.config.elem.next()[0].value = ""; });' 
 | 
                        , 'that.elemList.append(tr);' 
 | 
                        , 'element.render("progress");}' 
 | 
                        , ',done: function(res, index, upload)' 
 | 
                        , '{var that = this;if(res.code == 0){var tr = that.elemList.find("tr#upload-"+ index),tds = tr.children();tds.eq(3).html("");delete this.files[index];return;}this.error(index, upload);}' 
 | 
                        , ',allDone: function(obj){console.log(obj)}' 
 | 
                        , ',error: function(index, upload){var that = this;var tr = that.elemList.find("tr#upload-"+ index),' 
 | 
                        , 'tds = tr.children();tds.eq(3).find(".demo-reload").removeClass("layui-hide");}' 
 | 
                        , ',progress: function(n, elem, e, index){element.progress("progress-demo-"+ index, n + "%");}' 
 | 
                        , '});'].join(''); 
 | 
                    return scriptHtmlCode; 
 | 
                } 
 | 
            }, 
 | 
            dateRange: { 
 | 
                /** 
 | 
                 * 根据json对象生成html对象 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} elem 表单面板jquery对象 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                render: function (json, selected,elem,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _disabledClass = json.disabled ? ' layui-disabled' : ''; 
 | 
                    var _disabledStyle = json.disabled ? ' pointer-events: none;' : ''; 
 | 
                    var _required = json.required ? 'required' : ''; 
 | 
                    var _hideLabel = json.hideLabel ? 'display: none;' : ''; 
 | 
                    var _html = '<div id="{0}" class="layui-form-item {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, selected ? 'active' : '', json.index); 
 | 
                    _html += '<div class="layui-inline">'; 
 | 
                    _html += '<label class="layui-form-label {0}" style="width: {3}px;{4}"><span style="color:red;">{2}</span>{1}:</label>'.format(json.required ? 'layui-form-required' : '', json.label,json.required ? '*' : '',json.labelWidth,_hideLabel); 
 | 
                    _html += '<div class="layui-inline" id="{0}" style="line-height: 40px;{1}">'.format(json.tag + json.id,_disabledStyle); 
 | 
                    _html += '<div class="layui-input-inline">'; 
 | 
                    _html += '<input id="start-{0}" lay-verify="{3}" name="start{2}" class="layui-input {1}" autocomplete="off" placeholder="开始日期"></input>'.format(json.tag + json.id,_disabledClass,json.id,_required); 
 | 
                    _html += '</div>'; 
 | 
                    _html += '<div class="layui-form-mid">-</div>'; 
 | 
                    _html += '<div class="layui-input-inline">'; 
 | 
                    _html += '<input id="end-{0}" lay-verify="{3}" name="end{2}" class="layui-input {1}" autocomplete="off" placeholder="结束日期"></input>'.format(json.tag + json.id,_disabledClass,json.id,_required); 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    elem.append(_html); 
 | 
                    laydate.render({ 
 | 
                        elem: '#' + json.tag + json.id, 
 | 
                        type: json.dateType, 
 | 
                        format: json.dateFormat, 
 | 
                        min: json.dataMinValue, 
 | 
                        max: json.dataMaxValue, 
 | 
                        range: ['#start-' + json.tag + json.id, '#end-' + json.tag + json.id] 
 | 
                    }); 
 | 
                    if (json.dateRangeDefaultValue !== null && json.dateRangeDefaultValue !== "" 
 | 
                        && json.dateRangeDefaultValue !== undefined) { 
 | 
                        var split = json.dateRangeDefaultValue.split(" - "); 
 | 
                        $('#start-' + json.tag + json.id).val(split[0]); 
 | 
                        $('#end-' + json.tag + json.id).val(split[1]); 
 | 
                    } 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象更新html对象 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                update: function (json,that) { 
 | 
                    var _disabledClass = json.disabled ? ' layui-disabled' : ''; 
 | 
                    var _disabledStyle = json.disabled ? ' pointer-events: none;' : ''; 
 | 
                    var _required = json.required ? 'required' : ''; 
 | 
                    var _hideLabel = json.hideLabel ? 'display: none;' : ''; 
 | 
                    var _html = '<div class="layui-inline">'; 
 | 
                    _html += '<label class="layui-form-label {0}" style="width: {3}px;{4}"><span style="color:red;">{2}</span>{1}:</label>'.format(json.required ? 'layui-form-required' : '', json.label,json.required ? '*' : '',json.labelWidth,_hideLabel); 
 | 
                    _html += '<div class="layui-inline" id="{0}" style="line-height: 40px;{1}">'.format(json.tag + json.id,_disabledStyle); 
 | 
                    _html += '<div class="layui-input-inline">'; 
 | 
                    _html += '<input id="start-{0}" lay-verify="{3}" name="start{2}" class="layui-input {1}" autocomplete="off" placeholder="开始日期" ></input>'.format(json.tag + json.id,_disabledClass,json.id,_required); 
 | 
                    _html += '</div>'; 
 | 
                    _html += '<div class="layui-form-mid">-</div>'; 
 | 
                    _html += '<div class="layui-input-inline">'; 
 | 
                    _html += '<input id="end-{0}" lay-verify="{3}" name="end{2}" class="layui-input {1}" autocomplete="off" placeholder="结束日期"></input>'.format(json.tag + json.id,_disabledClass,json.id,_required); 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    $('#' + json.id + ' .layui-inline').remove(); 
 | 
                    $('#' + json.id).append(_html); 
 | 
                    laydate.render({ 
 | 
                        elem: '#' + json.tag + json.id, 
 | 
                        type: json.dateType, 
 | 
                        format: json.dateFormat, 
 | 
                        //value: item.dateDefaultValue, 
 | 
                        min: json.dataMinValue, 
 | 
                        max: json.dataMaxValue, 
 | 
                        range: ['#start-' + json.tag + json.id, '#end-' + json.tag + json.id] 
 | 
                    }); 
 | 
                    if (json.dateRangeDefaultValue !== null && json.dateRangeDefaultValue !== "" 
 | 
                        && json.dateRangeDefaultValue !== undefined) { 
 | 
                        var split = json.dateRangeDefaultValue.split(" - "); 
 | 
                        $('#start-' + json.tag + json.id).val(split[0]); 
 | 
                        $('#end-' + json.tag + json.id).val(split[1]); 
 | 
                    } 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据components组件对象获取组件属性 
 | 
                 * @param {object} id 所属组件id 
 | 
                 * @param {object} index 所属对象组件索引 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                jsonData: function (id, index, that) { 
 | 
                    var _json = JSON.parse(JSON.stringify(formField.components.dateRange)); 
 | 
                    _json.id = id; 
 | 
                    _json.index = index; 
 | 
                    return _json; 
 | 
  
 | 
                }, 
 | 
                /** 
 | 
                 * 根据 json 对象显示对应的属性 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                property: function (json,that) { 
 | 
                    that.renderCommonProperty(json); //根据 json 对象获取对应的属性的html 
 | 
                    that.initCommonProperty(json); //初始化 json 对象获取对应的属性 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成html文本 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateHtml: function (json,selected,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _disabledClass = json.disabled ? ' layui-disabled' : ''; 
 | 
                    var _disabledStyle = json.disabled ? ' pointer-events: none;' : ''; 
 | 
                    var _required = json.required ? 'required' : ''; 
 | 
                    var _hideLabel = json.hideLabel ? 'display: none;' : ''; 
 | 
                    var _html = '<div id="{0}" class="layui-form-item {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, selected ? 'active' : '', json.index); 
 | 
                    _html += '<div class="layui-inline">'; 
 | 
                    _html += '<label class="layui-form-label {0}" style="width: {3}px;{4}"><span style="color:red;">{2}</span>{1}:</label>'.format(json.required ? 'layui-form-required' : '', json.label,json.required ? '*' : '',json.labelWidth,_hideLabel); 
 | 
                    _html += '<div class="layui-inline" id="{0}" style="line-height: 40px;{1}">'.format(json.tag + json.id,_disabledStyle); 
 | 
                    _html += '<div class="layui-input-inline">'; 
 | 
                    _html += '<input id="start-{0}" lay-verify="{3}" name="start{2}" class="layui-input {1}" autocomplete="off" placeholder="开始日期"></input>'.format(json.tag + json.id,_disabledClass,json.id,_required); 
 | 
                    _html += '</div>'; 
 | 
                    _html += '<div class="layui-form-mid">-</div>'; 
 | 
                    _html += '<div class="layui-input-inline">'; 
 | 
                    _html += '<input id="end-{0}" lay-verify="{3}" name="end{2}" class="layui-input {1}" autocomplete="off" placeholder="结束日期"></input>'.format(json.tag + json.id,_disabledClass,json.id,_required); 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    return _html; 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成js文本 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateScript:function (json,that) { 
 | 
                    var scriptHtmlCode = ''; 
 | 
                    scriptHtmlCode += ['laydate.render({' 
 | 
                        ,'elem:"#' + json.tag + json.id + '",' 
 | 
                        ,'type:' + json.datetype + ',' 
 | 
                        ,'format:' + json.dateformat + '' 
 | 
                        ,'min:' + json.dataMinValue + '' 
 | 
                        ,'max:' + json.dataMaxValue + '' 
 | 
                        ,'range:["#start-' + json.tag + json.id + '", "#end-' + json.tag + json.id + '"]' 
 | 
                        ,'});'].join(''); 
 | 
                    return scriptHtmlCode; 
 | 
                } 
 | 
            }, 
 | 
            bottom: { 
 | 
                /** 
 | 
                 * 根据json对象生成html对象 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} elem 表单面板jquery对象 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                render: function (json, selected,elem,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _coustomCss = ""; 
 | 
                    if (json.buttonSize === "layui-btn-lg") { 
 | 
                        _coustomCss = "custom-lg"; 
 | 
                    } 
 | 
                    if (json.buttonSize === "") { 
 | 
                        _coustomCss = "custom-zc"; 
 | 
                    } 
 | 
                    if (json.buttonSize === "layui-btn-sm") { 
 | 
                        _coustomCss = "custom-sm"; 
 | 
                    } 
 | 
                    if (json.buttonSize === "layui-btn-xs") { 
 | 
                        _coustomCss = "custom-xs"; 
 | 
                    } 
 | 
                    var _html = '<div id="{0}" class="layui-form-item {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, selected ? 'active' : '', json.index); 
 | 
                    if (!json.hideLabel) { 
 | 
                        _html += '<label class="layui-form-label" style="width: {1}px;">{0}:</label>'.format(json.label,json.labelWidth); 
 | 
                    } 
 | 
                    _html += '<div class="layui-input-block" style="margin-left: 0px;">'; 
 | 
                    if (json.disabled) { 
 | 
                        _html += '<button id="{0}" type="button" class="layui-btn {1} layui-btn-disabled {2}"><i class="layui-icon {3}"></i> {4}</button>'.format(json.id + json.tag, json.buttonSize,_coustomCss ,json.buttonIcon,json.buttonVlaue); 
 | 
                    }else { 
 | 
                        _html += '<button id="{0}" type="button" class="layui-btn {1} {2} {3}"><i class="layui-icon {4}"></i> {5}</button>'.format(json.id + json.tag, json.buttonSize, json.buttonType,_coustomCss ,json.buttonIcon,json.buttonVlaue); 
 | 
                    } 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    elem.append(_html); 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象更新html对象 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                update: function (json,that) { 
 | 
                    var $block = $('#' + json.id + ' .layui-input-block'); 
 | 
                    var $label = $('#' + json.id + ' .layui-form-label'); 
 | 
                    if (json.hideLabel) { 
 | 
                        $label.remove(); 
 | 
                        $block.css("margin-left","0px"); 
 | 
                    }else { 
 | 
                        if ($('#' + json.id).find("label").length === 0) { 
 | 
                            $('#' + json.id).prepend('<label class="layui-form-label" style="width: {1}px;">{0}:</label>'.format(json.label,json.labelWidth)); 
 | 
                        }else { 
 | 
                            $label.css("width",json.labelWidth + "px"); 
 | 
                        } 
 | 
                        $label.empty(); 
 | 
                        $label.append(json.label + ":"); 
 | 
                    } 
 | 
                    $block.empty(); 
 | 
                    var _html = ''; 
 | 
                    var _coustomCss = ""; 
 | 
                    if (json.buttonSize === "layui-btn-lg") { 
 | 
                        _coustomCss = "custom-lg"; 
 | 
                    } 
 | 
                    if (json.buttonSize === "") { 
 | 
                        _coustomCss = "custom-zc"; 
 | 
                    } 
 | 
                    if (json.buttonSize === "layui-btn-sm") { 
 | 
                        _coustomCss = "custom-sm"; 
 | 
                    } 
 | 
                    if (json.buttonSize === "layui-btn-xs") { 
 | 
                        _coustomCss = "custom-xs"; 
 | 
                    } 
 | 
                    //重绘设计区改id下的所有元素 
 | 
                    if (json.disabled) { 
 | 
                        _html += '<button id="{0}" type="button" class="layui-btn {1} layui-btn-disabled {2}"><i class="layui-icon {3}"></i> {4}</button>'.format(json.id + json.tag, json.buttonSize,_coustomCss ,json.buttonIcon,json.buttonVlaue); 
 | 
                    }else { 
 | 
                        _html += '<button id="{0}" type="button" class="layui-btn {1} {2} {3}"><i class="layui-icon {4}"></i> {5}</button>'.format(json.id + json.tag, json.buttonSize, json.buttonType,_coustomCss ,json.buttonIcon,json.buttonVlaue); 
 | 
                    } 
 | 
                    $block.append(_html); 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据components组件对象获取组件属性 
 | 
                 * @param {object} id 所属组件id 
 | 
                 * @param {object} index 所属对象组件索引 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                jsonData: function (id, index, that) { 
 | 
                    //分配一个新的ID 
 | 
                    var _json = JSON.parse(JSON.stringify(formField.components.bottom)); 
 | 
                    _json.id = id; 
 | 
                    _json.index = index; 
 | 
                    return _json; 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据 json 对象显示对应的属性 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                property: function (json,that) { 
 | 
                    that.renderCommonProperty(json); //根据 json 对象获取对应的属性的html 
 | 
                    that.initCommonProperty(json); //初始化 json 对象获取对应的属性 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成html文本 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateHtml: function (json,selected,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _coustomCss = ""; 
 | 
                    if (json.buttonSize === "layui-btn-lg") { 
 | 
                        _coustomCss = "custom-lg"; 
 | 
                    } 
 | 
                    if (json.buttonSize === "") { 
 | 
                        _coustomCss = "custom-zc"; 
 | 
                    } 
 | 
                    if (json.buttonSize === "layui-btn-sm") { 
 | 
                        _coustomCss = "custom-sm"; 
 | 
                    } 
 | 
                    if (json.buttonSize === "layui-btn-xs") { 
 | 
                        _coustomCss = "custom-xs"; 
 | 
                    } 
 | 
                    var _html = '<div id="{0}" class="layui-form-item {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, selected ? 'active' : '', json.index); 
 | 
                    if (!json.hideLabel) { 
 | 
                        _html += '<label class="layui-form-label" style="width: {1}px;">{0}:</label>'.format(json.label,json.labelWidth); 
 | 
                    } 
 | 
                    _html += '<div class="layui-input-block" style="margin-left: 0px;">'; 
 | 
                    if (json.disabled) { 
 | 
                        _html += '<button id="{0}" type="button" class="layui-btn {1} layui-btn-disabled {2}"><i class="layui-icon {3}"></i> {4}</button>'.format(json.id + json.tag, json.buttonSize,_coustomCss ,json.buttonIcon,json.buttonVlaue); 
 | 
                    }else { 
 | 
                        _html += '<button id="{0}" type="button" class="layui-btn {1} {2} {3}"><i class="layui-icon {4}"></i> {5}</button>'.format(json.id + json.tag, json.buttonSize, json.buttonType,_coustomCss ,json.buttonIcon,json.buttonVlaue); 
 | 
                    } 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    return _html; 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成js文本 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateScript:function (json,that) { 
 | 
                    return ''; 
 | 
                } 
 | 
            }, 
 | 
            numberInput: { 
 | 
                /** 
 | 
                 * 根据json对象生成html对象 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} elem 表单面板jquery对象 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                render: function (json, selected,elem,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _disabled = json.disabled ? 'disabled=""' : ''; 
 | 
                    var _disabledClass = json.disabled ? ' layui-disabled' : ''; 
 | 
                    var _required = json.required ? 'required' : ''; 
 | 
                    var _hideLabel = json.hideLabel ? 'display: none;' : ''; 
 | 
                    var _html = '<div id="{0}" class="layui-form-item {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, selected ? 'active' : '', json.index); 
 | 
                    _html += '<label class="layui-form-label" style="width: {1};{2}">{0}:</label>'.format( json.label,json.labelWidth,_hideLabel); 
 | 
                    if (json.hideLabel) { 
 | 
                        _html += '<div class="layui-input-block" style="width:calc({0});margin-left: 0px;">'.format(json.width); 
 | 
                    } else { 
 | 
                        _html += '<div class="layui-input-block" style="width:calc({0} - {1}px);margin-left: {1}px;">'.format(json.width,json.labelWidth); 
 | 
                    } 
 | 
                    _html += '<input name="{0}" id="{9}" value="{1}" placeholder="{3}" class="layui-input{5}" lay-vertype="tips" min="{6}" max="{7}" step="{8}"  {4} style="width:{2}">' 
 | 
                        .format(json.id, json.defaultValue ? json.defaultValue : '0', json.width, json.placeholder, _disabled , _disabledClass,json.minValue,json.maxValue,json.stepValue,json.tag + json.id); 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    elem.append(_html); 
 | 
                    //定义初始值 
 | 
                    numberInput.render({ 
 | 
                        elem:'#' + json.tag + json.id 
 | 
                    }); 
 | 
                    var _width = json.width.replace(/[^\d]/g,''); 
 | 
                    if(''!=_width){ 
 | 
                        _width = 100 - parseInt(_width); 
 | 
                    } 
 | 
                    $('#' + json.id + ' .layui-input-block .layui-number-input-btn').css("right",_width + "%"); 
 | 
                    if (json.disabled) { 
 | 
                        $('#' + json.id + ' .layui-input-block .layui-number-input-btn').css("z-index","-1"); 
 | 
                    } 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象更新html对象 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                update: function (json,that) { 
 | 
                    var _disabled = json.disabled ? 'disabled=""' : ''; 
 | 
                    var _disabledClass = json.disabled ? ' layui-disabled' : ''; 
 | 
                    var $block = $('#' + json.id + ' .layui-input-block'); 
 | 
                    var $label = $('#' + json.id + ' .layui-form-label'); 
 | 
                    $block.empty(); 
 | 
                    $label.empty(); 
 | 
                    if (json.hideLabel) { 
 | 
                        $label.css("display","none"); 
 | 
                        $block.css("margin-left","0px"); 
 | 
                        $block.css({width: 'calc({0})'.format(json.width)}); 
 | 
                    } else { 
 | 
                        $label.css("display","block"); 
 | 
                        $block.css("margin-left",json.labelWidth); 
 | 
                        $block.css({width: 'calc({0} - {1}px)'.format(json.width,json.labelWidth)}); 
 | 
                    } 
 | 
                    $label.css("width",json.labelWidth); 
 | 
                    $label.append(json.label + ":"); 
 | 
                    var _html = ''; 
 | 
                    //重绘设计区改id下的所有元素 
 | 
                    _html += '<input name="{0}" id="{9}" value="{1}" placeholder="{3}" class="layui-input{5}" lay-vertype="tips" min="{6}" max="{7}" step="{8}"  {4} style="width:{2}">' 
 | 
                        .format(json.id, json.defaultValue ? json.defaultValue : '0', json.width, json.placeholder, _disabled , _disabledClass,json.minValue,json.maxValue,json.stepValue,json.tag + json.id); 
 | 
                    $block.append(_html); 
 | 
                    numberInput.render({ 
 | 
                        elem:'#' + json.tag + json.id 
 | 
                    }); 
 | 
                    var _width = json.width.replace(/[^\d]/g,''); 
 | 
                    if(''!=_width){ 
 | 
                        _width = 100 - parseInt(_width); 
 | 
                    } 
 | 
                    $('#' + json.id + ' .layui-input-block .layui-number-input-btn').css("right",_width + "%"); 
 | 
                    if (json.disabled) { 
 | 
                        $('#' + json.id + ' .layui-input-block .layui-number-input-btn').css("z-index","-1"); 
 | 
                    } 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据components组件对象获取组件属性 
 | 
                 * @param {object} id 所属组件id 
 | 
                 * @param {object} index 所属对象组件索引 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                jsonData: function (id, index, that) { 
 | 
                    var _json = JSON.parse(JSON.stringify(formField.components.numberInput)); 
 | 
                    _json.id = id; 
 | 
                    _json.index = index; 
 | 
                    return _json; 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据 json 对象显示对应的属性 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                property: function (json,that) { 
 | 
                    that.renderCommonProperty(json); //根据 json 对象获取对应的属性的html 
 | 
                    that.initCommonProperty(json); //初始化 json 对象获取对应的属性 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成html文本 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateHtml: function (json,selected,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _disabled = json.disabled ? 'disabled=""' : ''; 
 | 
                    var _disabledClass = json.disabled ? ' layui-disabled' : ''; 
 | 
                    var _required = json.required ? 'required' : ''; 
 | 
                    var _hideLabel = json.hideLabel ? 'display: none;' : ''; 
 | 
                    var _html = '<div id="{0}" class="layui-form-item {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, selected ? 'active' : '', json.index); 
 | 
                    _html += '<label class="layui-form-label" style="width: {1};{2}">{0}:</label>'.format( json.label,json.labelWidth,_hideLabel); 
 | 
                    if (json.hideLabel) { 
 | 
                        _html += '<div class="layui-input-block" style="width:calc({0});margin-left: 0px;">'.format(json.width); 
 | 
                    } else { 
 | 
                        _html += '<div class="layui-input-block" style="width:calc({0} - {1}px);margin-left: {1}px;">'.format(json.width,json.labelWidth); 
 | 
                    } 
 | 
                    _html += '<input name="{0}" id="{9}" value="{1}" placeholder="{3}" class="layui-input{5}" lay-vertype="tips" min="{6}" max="{7}" step="{8}"  {4} style="width:{2}">' 
 | 
                        .format(json.id, json.defaultValue ? json.defaultValue : '0', json.width, json.placeholder, _disabled , _disabledClass,json.minValue,json.maxValue,json.stepValue,json.tag + json.id); 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    return _html; 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成js文本 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateScript:function (json,that) { 
 | 
                    var scriptHtmlCode = ''; 
 | 
                    scriptHtmlCode += [' numberInput.render({' 
 | 
                        ,'elem:"#' + json.tag + json.id + '"' 
 | 
                        ,'});var _width = ' + json.width.replace(/[^\d]/g,'') + ';' 
 | 
                        ,'if(""!=_width){_width = 100 - parseInt(_width);}' 
 | 
                        ,'$("#' + json.id + ' .layui-input-block .layui-number-input-btn").css("right",_width + "%");' 
 | 
                        ,'if (item.disabled) { $("#' + json.id + ' .layui-input-block .layui-number-input-btn").css("z-index","-1");}'].join(''); 
 | 
                    return scriptHtmlCode; 
 | 
                } 
 | 
            }, 
 | 
            iconPicker: { 
 | 
                /** 
 | 
                 * 根据json对象生成html对象 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} elem 表单面板jquery对象 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                render: function (json, selected,elem,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _disabled = json.disabled ? 'disabled=""' : ''; 
 | 
                    var _disabledClass = json.disabled ? ' layui-disabled' : ''; 
 | 
                    var _hideLabel = json.hideLabel ? 'display: none;' : ''; 
 | 
                    var _html = '<div id="{0}" class="layui-form-item {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, selected ? 'active' : '', json.index); 
 | 
                    _html += '<label class="layui-form-label" style="width: {1}px;{2}">{0}:</label>'.format( json.label,json.labelWidth,_hideLabel); 
 | 
                    if (json.hideLabel) { 
 | 
                        _html += '<div class="layui-input-block" style="margin-left: 0px">'; 
 | 
                    } else { 
 | 
                        _html += '<div class="layui-input-block" style="margin-left: {0}px">'.format(json.labelWidth); 
 | 
                    } 
 | 
                    if (json.disabled) { 
 | 
                        _html += '<div class="iceEditor-disabled"></div>'; 
 | 
                    } 
 | 
                    _html += '<input name="{0}" id="{6}" value="{1}" placeholder="{3}" class="layui-input{5}" lay-filter="{6}" lay-vertype="tips" {4} style="width:{2}">' 
 | 
                        .format(json.id, json.defaultValue ? json.defaultValue : '', json.width, json.placeholder, _disabled, _disabledClass,json.tag + json.id); 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    elem.append(_html); 
 | 
                    iconPicker.render({ 
 | 
                        // 选择器,推荐使用input 
 | 
                        elem: '#' + json.tag + json.id, 
 | 
                        // 数据类型:fontClass/unicode,推荐使用fontClass 
 | 
                        type: 'fontClass', 
 | 
                        // 是否开启搜索:true/false,默认true 
 | 
                        search: json.iconPickerSearch, 
 | 
                        // 是否开启分页:true/false,默认true 
 | 
                        page: json.iconPickerPage, 
 | 
                        // 每页显示数量,默认12 
 | 
                        limit: json.iconPickerLimit, 
 | 
                        // 每个图标格子的宽度:'43px'或'20%' 
 | 
                        cellWidth: json.iconPickerCellWidth, 
 | 
                        // 点击回调 
 | 
                        click: function (data) { 
 | 
                            //console.log(data); 
 | 
                        }, 
 | 
                        // 渲染成功后的回调 
 | 
                        success: function(d) { 
 | 
                            //console.log(d); 
 | 
                        } 
 | 
                    }); 
 | 
                    iconPicker.checkIcon(json.tag + json.id, ''); 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象更新html对象 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                update: function (json,that) { 
 | 
                    var _disabled = json.disabled ? 'disabled=""' : ''; 
 | 
                    var _disabledClass = json.disabled ? ' layui-disabled' : ''; 
 | 
                    var $block = $('#' + json.id + ' .layui-input-block'); 
 | 
                    var $label = $('#' + json.id + ' .layui-form-label'); 
 | 
                    $label.empty(); 
 | 
                    $block.empty(); 
 | 
                    if (json.hideLabel) { 
 | 
                        $label.css("display","none"); 
 | 
                        $block.css("margin-left","0px"); 
 | 
                    } else { 
 | 
                        $label.css("display","block"); 
 | 
                        $block.css("margin-left",json.labelWidth); 
 | 
                    } 
 | 
                    $label.css("width",json.labelWidth); 
 | 
                    $label.append(json.label + ":"); 
 | 
                    var _html = ''; 
 | 
                    //重绘设计区改id下的所有元素 
 | 
                    _html += '<input name="{0}" value="{1}" id="{6}" placeholder="{3}" class="layui-input{5}" lay-filter="{6}" lay-vertype="tips" {4} style="width:{2}">' 
 | 
                        .format(json.id, json.defaultValue ? json.defaultValue : '', json.width, json.placeholder, _disabled, _disabledClass,json.tag + json.id); 
 | 
                    $('#' + json.id + ' .layui-input-block').append(_html); 
 | 
                    iconPicker.render({ 
 | 
                        // 选择器,推荐使用input 
 | 
                        elem: '#' + json.tag + json.id, 
 | 
                        // 数据类型:fontClass/unicode,推荐使用fontClass 
 | 
                        type: 'fontClass', 
 | 
                        // 是否开启搜索:true/false,默认true 
 | 
                        search: json.iconPickerSearch, 
 | 
                        // 是否开启分页:true/false,默认true 
 | 
                        page: json.iconPickerPage, 
 | 
                        // 每页显示数量,默认12 
 | 
                        limit: json.iconPickerLimit, 
 | 
                        // 每个图标格子的宽度:'43px'或'20%' 
 | 
                        cellWidth: json.iconPickerCellWidth, 
 | 
                        // 点击回调 
 | 
                        click: function (data) { 
 | 
                            //console.log(data); 
 | 
                        }, 
 | 
                        // 渲染成功后的回调 
 | 
                        success: function(d) { 
 | 
                            //console.log(d); 
 | 
                        } 
 | 
                    }); 
 | 
                    iconPicker.checkIcon(json.tag + json.id, json.defaultValue); 
 | 
                    if (json.disabled) { 
 | 
                        $("#" + json.id).find(".layui-input-block").append('<div class="iceEditor-disabled"></div>'); 
 | 
                    } else { 
 | 
                        $("#" + json.id).find(".iceEditor-disabled").remove(); 
 | 
                    } 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据components组件对象获取组件属性 
 | 
                 * @param {object} id 所属组件id 
 | 
                 * @param {object} index 所属对象组件索引 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                jsonData: function (id, index, that) { 
 | 
                    //分配一个新的ID 
 | 
                    var _json = JSON.parse(JSON.stringify(formField.components.iconPicker)); 
 | 
                    _json.id = id; 
 | 
                    _json.index = index; 
 | 
                    return _json; 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据 json 对象显示对应的属性 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                property: function (json,that) { 
 | 
                    that.renderCommonProperty(json); //根据 json 对象获取对应的属性的html 
 | 
                    that.initCommonProperty(json); //初始化 json 对象获取对应的属性 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成html文本 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateHtml: function (json,selected,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _disabled = json.disabled ? 'disabled=""' : ''; 
 | 
                    var _disabledClass = json.disabled ? ' layui-disabled' : ''; 
 | 
                    var _hideLabel = json.hideLabel ? 'display: none;' : ''; 
 | 
                    var _html = '<div id="{0}" class="layui-form-item {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, selected ? 'active' : '', json.index); 
 | 
                    _html += '<label class="layui-form-label" style="width: {1}px;{2}">{0}:</label>'.format( json.label,json.labelWidth,_hideLabel); 
 | 
                    if (json.hideLabel) { 
 | 
                        _html += '<div class="layui-input-block" style="margin-left: 0px">'; 
 | 
                    } else { 
 | 
                        _html += '<div class="layui-input-block" style="margin-left: {0}px">'.format(json.labelWidth); 
 | 
                    } 
 | 
                    if (json.disabled) { 
 | 
                        _html += '<div class="iceEditor-disabled"></div>'; 
 | 
                    } 
 | 
                    _html += '<input name="{0}" id="{6}" value="{1}" placeholder="{3}" class="layui-input{5}" lay-filter="{6}" lay-vertype="tips" {4} style="width:{2}">' 
 | 
                        .format(json.id, json.defaultValue ? json.defaultValue : '', json.width, json.placeholder, _disabled, _disabledClass,json.tag + json.id); 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    return _html; 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成js文本 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateScript:function (json,that) { 
 | 
                    var scriptHtmlCode = ''; 
 | 
                    scriptHtmlCode += ['iconPicker.render({' 
 | 
                        ,'elem:"#' + json.tag + json.id + '",' 
 | 
                        ,'type:"fontClass",' 
 | 
                        ,'search:' + json.iconPickerSearch + '' 
 | 
                        ,'page:' + json.iconPickerPage + '' 
 | 
                        ,'limit:' + json.iconPickerLimit + '' 
 | 
                        ,'cellWidth:' + json.iconPickerCellWidth + '' 
 | 
                        ,' click: function (data) {},' 
 | 
                        ,'success: function(d) {}' 
 | 
                        ,'});' 
 | 
                        ,'iconPicker.checkIcon(' + json.tag + json.id + ',"");'].join(''); 
 | 
                    return scriptHtmlCode; 
 | 
                } 
 | 
            }, 
 | 
            cron: { 
 | 
                /** 
 | 
                 * 根据json对象生成html对象 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} elem 表单面板jquery对象 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                render: function (json, selected,elem,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _disabled = json.disabled ? 'disabled=""' : ''; 
 | 
                    var _disabledClass = json.disabled ? ' layui-disabled' : ''; 
 | 
                    var _required = json.required ? 'required' : ''; 
 | 
                    var _hideLabel = json.hideLabel ? 'display: none;' : ''; 
 | 
                    var _width = json.width.replace(/[^\d]/g,''); 
 | 
                    if(''!=_width){ 
 | 
                        _width = 100 - parseInt(_width); 
 | 
                    } 
 | 
                    var _html = '<div id="{0}" class="layui-form-item {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, selected ? 'active' : '', json.index); 
 | 
                    _html += '<label class="layui-form-label {0}" style="width: {3}px;{4}"><span style="color:red;">{2}</span>{1}:</label>'.format(json.required ? 'layui-form-required' : '', json.label,json.required ? '*' : '',json.labelWidth,_hideLabel); 
 | 
                    if (json.hideLabel) { 
 | 
                        _html += '<div class="layui-input-block" style="width:calc({0});margin-left: 0px;">'.format(json.width); 
 | 
                    } else { 
 | 
                        _html += '<div class="layui-input-block" style="width:calc({0} - {1}px);margin-left: {1}px;">'.format(json.width,json.labelWidth); 
 | 
                    } 
 | 
                    _html += '<input type="cronExpression" name="{0}" id="{5}" value="{1}" lay-verify="{6}" placeholder="{2}" class="layui-input{4}" lay-filter="iconPicker" lay-vertype="tips" {3}>' 
 | 
                        .format(json.id, json.defaultValue ? json.defaultValue : '', json.placeholder, _disabled, _disabledClass,json.tag + json.id,_required); 
 | 
                    if (!json.disabled) { 
 | 
                        _html += '<button id="{0}-button" style="position: absolute;top: 0;right: 0px;cursor: pointer;" type="button" class="layui-btn">生成</button>'.format(json.tag + json.id); 
 | 
                    } 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    elem.append(_html); 
 | 
                    cron.render({ 
 | 
                        elem: "#" + json.tag + json.id + "-button", // 绑定元素 
 | 
                        url: json.cronUrl, // 获取最近运行时间的接口 
 | 
                        done: function (cronStr) { 
 | 
                            $("#" + json.tag + json.id).val(cronStr); 
 | 
                        }, 
 | 
                    }); 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象更新html对象 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                update: function (json,that) { 
 | 
                    var _disabled = json.disabled ? 'disabled=""' : ''; 
 | 
                    var _disabledClass = json.disabled ? ' layui-disabled' : ''; 
 | 
                    var _required = json.required ? 'required' : ''; 
 | 
                    var $block = $('#' + json.id + ' .layui-input-block'); 
 | 
                    var $label = $('#' + json.id + ' .layui-form-label'); 
 | 
                    $block.empty(); 
 | 
                    $label.empty(); 
 | 
                    if (json.hideLabel) { 
 | 
                        $label.css("display","none"); 
 | 
                        $block.css("margin-left","0px"); 
 | 
                        $block.css({width: 'calc({0})'.format(json.width)}); 
 | 
                    } else { 
 | 
                        $label.css("display","block"); 
 | 
                        $block.css("margin-left",json.labelWidth); 
 | 
                        $block.css({width: 'calc({0} - {1}px)'.format(json.width,json.labelWidth)}); 
 | 
                    } 
 | 
                    $label.css("width",json.labelWidth); 
 | 
                    if (json.required) { 
 | 
                        // $label.append('<span style="color:red;">*</span>'); 
 | 
                    } 
 | 
                    $label.append(json.label + ":"); 
 | 
                    var _html = ''; 
 | 
                    //重绘设计区改id下的所有元素 
 | 
                    _html += '<input name="{0}" value="{1}" id="{5}" placeholder="{2}" class="layui-input{4}" lay-verify="{6}" lay-filter="iconPicker" lay-vertype="tips" {3}>' 
 | 
                        .format(json.id, json.defaultValue ? json.defaultValue : '', json.placeholder, _disabled, _disabledClass,json.tag + json.id,_required); 
 | 
                    if (!json.disabled) { 
 | 
                        var _width = json.width.replace(/[^\d]/g,''); 
 | 
                        if(''!=_width){ 
 | 
                            _width = 100 - parseInt(_width); 
 | 
                        } 
 | 
                        _html += '<button id="{0}-button" style="position: absolute;top: 0;right: 0px;cursor: pointer;" type="button" class="layui-btn">生成</button>'.format(json.tag + json.id); 
 | 
                        $block.append(_html); 
 | 
                        cron.render({ 
 | 
                            elem: "#" + json.tag + json.id + "-button", // 绑定元素 
 | 
                            url: json.cronUrl, // 获取最近运行时间的接口 
 | 
                            done: function (cronStr) { 
 | 
                                $("#" + json.tag + json.id).val(cronStr); 
 | 
                            }, 
 | 
                        }); 
 | 
                    } else { 
 | 
                        $block.append(_html); 
 | 
                    } 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据components组件对象获取组件属性 
 | 
                 * @param {object} id 所属组件id 
 | 
                 * @param {object} index 所属对象组件索引 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                jsonData: function (id, index, that) { 
 | 
                    var _json = JSON.parse(JSON.stringify(formField.components.cron)); 
 | 
                    _json.id = id; 
 | 
                    _json.index = index; 
 | 
                    return _json; 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据 json 对象显示对应的属性 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                property: function (json,that) { 
 | 
                    that.renderCommonProperty(json); //根据 json 对象获取对应的属性的html 
 | 
                    that.initCommonProperty(json); //初始化 json 对象获取对应的属性 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成html文本 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateHtml: function (json,selected,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _disabled = json.disabled ? 'disabled=""' : ''; 
 | 
                    var _disabledClass = json.disabled ? ' layui-disabled' : ''; 
 | 
                    var _required = json.required ? 'required' : ''; 
 | 
                    var _hideLabel = json.hideLabel ? 'display: none;' : ''; 
 | 
                    var _width = json.width.replace(/[^\d]/g,''); 
 | 
                    if(''!=_width){ 
 | 
                        _width = 100 - parseInt(_width); 
 | 
                    } 
 | 
                    var _html = '<div id="{0}" class="layui-form-item {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, selected ? 'active' : '', json.index); 
 | 
                    _html += '<label class="layui-form-label {0}" style="width: {3}px;{4}"><span style="color:red;">{2}</span>{1}:</label>'.format(json.required ? 'layui-form-required' : '', json.label,json.required ? '*' : '',json.labelWidth,_hideLabel); 
 | 
                    if (json.hideLabel) { 
 | 
                        _html += '<div class="layui-input-block" style="width:calc({0});margin-left: 0px;">'.format(json.width); 
 | 
                    } else { 
 | 
                        _html += '<div class="layui-input-block" style="width:calc({0} - {1}px);margin-left: {1}px;">'.format(json.width,json.labelWidth); 
 | 
                    } 
 | 
                    _html += '<input type="cronExpression" name="{0}" id="{5}" value="{1}" lay-verify="{6}" placeholder="{2}" class="layui-input{4}" lay-filter="iconPicker" lay-vertype="tips" {3}>' 
 | 
                        .format(json.id, json.defaultValue ? json.defaultValue : '', json.placeholder, _disabled, _disabledClass,json.tag + json.id,_required); 
 | 
                    if (!json.disabled) { 
 | 
                        _html += '<button id="{0}-button" style="position: absolute;top: 0;right: 0px;cursor: pointer;" type="button" class="layui-btn">生成</button>'.format(json.tag + json.id); 
 | 
                    } 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    return _html; 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成js文本 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateScript:function (json,that) { 
 | 
                    var scriptHtmlCode = ''; 
 | 
                    scriptHtmlCode += ['cron.render({' 
 | 
                        ,'elem:"#' + json.tag + json.id + '-button",' 
 | 
                        ,'url:' + json.cronUrl + ',' 
 | 
                        ,'done: function (cronStr) {' 
 | 
                        ,'$("#' +  json.tag + json.id + '").val(cronStr);' 
 | 
                        ,'},' 
 | 
                        ,'});'].join(''); 
 | 
                    return scriptHtmlCode; 
 | 
                } 
 | 
            }, 
 | 
            sign: { 
 | 
                /** 
 | 
                 * 根据json对象生成html对象 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} elem 表单面板jquery对象 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                render: function (json, selected,elem,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _hideLabel = json.hideLabel ? 'display: none;' : ''; 
 | 
                    var _html = '<div id="{0}" class="layui-form-item {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, selected ? 'active' : '', json.index); 
 | 
                    _html += '<label class="layui-form-label" style="width: {1}px;{2}">{0}:</label>'.format(json.label,json.labelWidth,_hideLabel); 
 | 
                    if (json.hideLabel) { 
 | 
                        _html += '<div class="layui-input-block" style="margin-left: 0px">'; 
 | 
                    } else { 
 | 
                        _html += '<div class="layui-input-block" style="margin-left: {0}px">'.format(json.labelWidth); 
 | 
                    } 
 | 
                    if (json.disabled) { 
 | 
                        _html += '<button id="{0}" type="button" class="layui-btn layui-btn-normal layui-btn-disabled custom-zc"><i class="layui-icon {1}"></i> {2}</button>'.format(json.id + json.tag ,json.buttonIcon,json.buttonVlaue); 
 | 
                    }else { 
 | 
                        _html += '<button id="{0}" type="button" class="layui-btn  layui-btn-normal custom-zc"><i class="layui-icon {1}"></i> {2}</button>'.format(json.id + json.tag ,json.buttonIcon,json.buttonVlaue); 
 | 
                    } 
 | 
                    if (json.data !== "") { 
 | 
                        _html += '<div class="signImg"><img src="{0}"></div>'.format(json.data); 
 | 
                    } 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    elem.append(_html); 
 | 
                    $('#' + json.id + json.tag).click(function () { 
 | 
                        layer.open({ 
 | 
                            type: 2, 
 | 
                            title: '手写签名', 
 | 
                            btn: ['保存','关闭'], //可以无限个按钮 
 | 
                            yes: function(index, layero){ 
 | 
                                //do something 
 | 
                                var iframe = window['layui-layer-iframe' + index]; 
 | 
                                var data = iframe.getCanvasData(); 
 | 
                                json.data = data; 
 | 
                                that.components[json.tag].update(json,that); 
 | 
                                layer.close(index); //如果设定了yes回调,需进行手工关闭 
 | 
                            }, 
 | 
                            btn2: function (index, layero) { 
 | 
                                layer.close(index); 
 | 
                            }, 
 | 
                            closeBtn: 1, //不显示关闭按钮 
 | 
                            shade: [0], 
 | 
                            area: ['60%', '60%'], 
 | 
                            offset: 'auto', //右下角弹出 
 | 
                            anim: 2, 
 | 
                            content: ['./handwrittenSignature.html', 'yes'], //iframe的url,no代表不显示滚动条 
 | 
                            success:function (layero,index) { 
 | 
                            } 
 | 
                        }); 
 | 
                    }); 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象更新html对象 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                update: function (json,that) { 
 | 
                    var $block = $('#' + json.id + ' .layui-input-block'); 
 | 
                    var $label = $('#' + json.id + ' .layui-form-label'); 
 | 
                    $block.empty(); 
 | 
                    $label.empty(); 
 | 
                    if (json.hideLabel) { 
 | 
                        $label.css("display","none"); 
 | 
                        $block.css("margin-left","0px"); 
 | 
                        $block.css({width: 'calc({0})'.format(json.width)}); 
 | 
                    } else { 
 | 
                        $label.css("display","block"); 
 | 
                        $block.css("margin-left",json.labelWidth); 
 | 
                        $block.css({width: 'calc({0} - {1}px)'.format(json.width,json.labelWidth)}); 
 | 
                    } 
 | 
                    $label.css("width",json.labelWidth); 
 | 
                    $label.append(json.label + ":"); 
 | 
                    var _html = ''; 
 | 
                    //重绘设计区改id下的所有元素 
 | 
                    if (json.disabled) { 
 | 
                        _html += '<button id="{0}" type="button" class="layui-btn layui-btn-normal layui-btn-disabled custom-zc"><i class="layui-icon {1}"></i> {2}</button>'.format(json.id + json.tag ,json.buttonIcon,json.buttonVlaue); 
 | 
                    }else { 
 | 
                        _html += '<button id="{0}" type="button" class="layui-btn  layui-btn-normal custom-zc"><i class="layui-icon {1}"></i> {2}</button>'.format(json.id + json.tag ,json.buttonIcon,json.buttonVlaue); 
 | 
                    } 
 | 
                    if (json.data !== "") { 
 | 
                        _html += '<div class="signImg"><img src="{0}"></div>'.format(json.data); 
 | 
                    } 
 | 
                    $block.append(_html); 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据components组件对象获取组件属性 
 | 
                 * @param {object} id 所属组件id 
 | 
                 * @param {object} index 所属对象组件索引 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                jsonData: function (id, index, that) { 
 | 
                    //分配一个新的ID 
 | 
                    var _json = JSON.parse(JSON.stringify(formField.components.sign)); 
 | 
                    _json.id = id; 
 | 
                    _json.index = index; 
 | 
                    return _json; 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据 json 对象显示对应的属性 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                property: function (json,that) { 
 | 
                    that.renderCommonProperty(json); //根据 json 对象获取对应的属性的html 
 | 
                    that.initCommonProperty(json); //初始化 json 对象获取对应的属性 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成html文本 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateHtml: function (json,selected,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _hideLabel = json.hideLabel ? 'display: none;' : ''; 
 | 
                    var _html = '<div id="{0}" class="layui-form-item {2}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, selected ? 'active' : '', json.index); 
 | 
                    _html += '<label class="layui-form-label" style="width: {1}px;{2}">{0}:</label>'.format(json.label,json.labelWidth,_hideLabel); 
 | 
                    if (json.hideLabel) { 
 | 
                        _html += '<div class="layui-input-block" style="margin-left: 0px">'; 
 | 
                    } else { 
 | 
                        _html += '<div class="layui-input-block" style="margin-left: {0}px">'.format(json.labelWidth); 
 | 
                    } 
 | 
                    if (json.disabled) { 
 | 
                        _html += '<button id="{0}" type="button" class="layui-btn layui-btn-normal layui-btn-disabled custom-zc"><i class="layui-icon {1}"></i> {2}</button>'.format(json.id + json.tag ,json.buttonIcon,json.buttonVlaue); 
 | 
                    }else { 
 | 
                        _html += '<button id="{0}" type="button" class="layui-btn  layui-btn-normal custom-zc"><i class="layui-icon {1}"></i> {2}</button>'.format(json.id + json.tag ,json.buttonIcon,json.buttonVlaue); 
 | 
                    } 
 | 
                    if (json.data !== "") { 
 | 
                        _html += '<div class="signImg"><img src="{0}"></div>'.format(json.data); 
 | 
                    } 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    return _html; 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成js文本 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateScript:function (json,that) { 
 | 
                    var scriptHtmlCode = ''; 
 | 
                    return scriptHtmlCode; 
 | 
                } 
 | 
            }, 
 | 
            editor: { 
 | 
                /** 
 | 
                 * 根据json对象生成html对象 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} elem 表单面板jquery对象 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                render: function (json, selected,elem,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _hideLabel = json.hideLabel ? 'display: none;' : ''; 
 | 
                    var _html = '<div id="{0}" class="layui-form-item layui-form-text {2}" style="width: {4}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, selected ? 'active' : '', json.index,json.width); 
 | 
                    _html += '<label class="layui-form-label" style="width: {1}px;{2}">{0}:</label>'.format(json.label,json.width,_hideLabel); 
 | 
                    _html += '<div class="layui-input-block">'; 
 | 
                    _html += '<div id="{0}"></div>'.format(json.tag + json.id); 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    elem.append(_html); 
 | 
                    var e = new ice.editor(json.tag + json.id); 
 | 
                    e.width=json.width;   //宽度 
 | 
                    e.height=json.height;  //高度 
 | 
                    e.uploadUrl=json.uploadUrl; //上传文件路径 
 | 
                    e.disabled=json.disabled; 
 | 
                    e.menu = json.menu; 
 | 
                    e.create(); 
 | 
                    e.setValue(json.defaultValue); 
 | 
                    if (that.config.viewOrDesign) { 
 | 
                        iceEditorObjects[json.id] = e; 
 | 
                    } 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象更新html对象 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                update: function (json,that) { 
 | 
                    var $label = $('#' + json.id + ' .layui-form-label'); 
 | 
                    $label.empty(); 
 | 
                    $label.css("width",json.width); 
 | 
                    $label.append(json.label + ":"); 
 | 
                    if (json.hideLabel) { 
 | 
                        $label.css("display","none"); 
 | 
                    } else { 
 | 
                        $label.css("display","block"); 
 | 
                    } 
 | 
                    if (that.config.viewOrDesign) { 
 | 
                        var e = iceEditorObjects[json.id]; 
 | 
                        e.setValue(json.defaultValue); 
 | 
                    } else { 
 | 
                        var $block = $('#' + json.id + ' .layui-input-block'); 
 | 
                        $block.empty(); 
 | 
                        var _html = '<div id="{0}"></div>'.format(json.tag + json.id); 
 | 
                        $block.append(_html); 
 | 
                        var e = new ice.editor(json.tag + json.id); 
 | 
                        e.width=json.width;   //宽度 
 | 
                        e.height=json.height;  //高度 
 | 
                        e.uploadUrl=json.uploadUrl; //上传文件路径 
 | 
                        e.disabled=json.disabled; 
 | 
                        e.menu = json.menu; 
 | 
                        e.create(); 
 | 
                        e.setValue(json.defaultValue); 
 | 
                    } 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据components组件对象获取组件属性 
 | 
                 * @param {object} id 所属组件id 
 | 
                 * @param {object} index 所属对象组件索引 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                jsonData: function (id, index, that) { 
 | 
                    //分配一个新的ID 
 | 
                    var _json = JSON.parse(JSON.stringify(formField.components.editor)); 
 | 
                    _json.id = id; 
 | 
                    _json.index = index; 
 | 
                    return _json; 
 | 
  
 | 
                }, 
 | 
                /** 
 | 
                 * 根据 json 对象显示对应的属性 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                property: function (json,that) { 
 | 
                    that.renderCommonProperty(json); //根据 json 对象获取对应的属性的html 
 | 
                    that.initCommonProperty(json); //初始化 json 对象获取对应的属性 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成html文本 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateHtml: function (json,selected,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _hideLabel = json.hideLabel ? 'display: none;' : ''; 
 | 
                    var _html = '<div id="{0}" class="layui-form-item layui-form-text {2}" style="width: {4}"  data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, selected ? 'active' : '', json.index,json.width); 
 | 
                    _html += '<label class="layui-form-label" style="width: {1}px;{2}">{0}:</label>'.format(json.label,json.width,_hideLabel); 
 | 
                    _html += '<div class="layui-input-block">'; 
 | 
                    _html += '<div id="{0}"></div>'.format(json.tag + json.id); 
 | 
                    _html += '</div>'; 
 | 
                    _html += '</div>'; 
 | 
                    return _html; 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成js文本 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateScript:function (json,that) { 
 | 
                    var scriptHtmlCode = ''; 
 | 
                    scriptHtmlCode += ['var e = new ice.editor('+  json.tag + json.id +');' 
 | 
                        ,'e.width=' + json.width + ';   //宽度' 
 | 
                        ,'e.height=' + json.height + ';  //高度' 
 | 
                        ,'e.uploadUrl=' + json.uploadUrl + '; //上传文件路径' 
 | 
                        ,'e.disabled=' + json.disabled + ';' 
 | 
                        ,'e.menu = ' + json.menu + ';' 
 | 
                        ,'e.create();'].join(''); 
 | 
                    return scriptHtmlCode; 
 | 
                } 
 | 
            }, 
 | 
            grid: { 
 | 
                /** 
 | 
                 * 根据json对象生成html对象 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} elem 表单面板jquery对象 
 | 
                 * @param {object} that 当前实例模块对象 
 | 
                 * */ 
 | 
                render: function (json, selected,elem,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _selected = selected ? 'active' : ''; 
 | 
                    var _html = '<div id="{0}" class="layui-form-item layui-row grid {2}"  data-id="{0}" data-tag="{1}" data-index="{3}" >'.format(json.id, json.tag, selected ? 'active' : '', json.index); 
 | 
                    var colClass = 'layui-col-md6'; 
 | 
                    if (json.columns.length == 3) { 
 | 
                        colClass = 'layui-col-md4'; 
 | 
                    } else if (json.columns.length == 4) { 
 | 
                        colClass = 'layui-col-md3'; 
 | 
                    } 
 | 
                    for (var i = 0; i < json.columns.length; i++) { 
 | 
                        _html += '<div class="{2} widget-col-list column{3}{0}" data-index="{0}" data-parentindex="{1}">'.format(i, json.index, colClass,json.id); 
 | 
                        //some html 
 | 
                        _html += '</div>'; 
 | 
                    } 
 | 
                    _html += '</div>'; 
 | 
                    elem.append(_html); 
 | 
                    that.bindGridSortEvent(json); 
 | 
  
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象更新html对象 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                update: function (json,that) { 
 | 
                    var $block = $('#' + json.id); 
 | 
                    $block.empty(); 
 | 
                    var colClass = 'layui-col-md6'; 
 | 
                    if (json.columns.length == 3) { 
 | 
                        colClass = 'layui-col-md4'; 
 | 
                    } else if (json.columns.length == 4) { 
 | 
                        colClass = 'layui-col-md3'; 
 | 
                    } 
 | 
                    var _html = ''; 
 | 
                    for (var i = 0; i < json.columns.length; i++) { 
 | 
                        _html += '<div class="{2} widget-col-list column{3}{0}" data-index="{0}" data-parentindex="{1}">'.format(i, json.index, colClass,json.id); 
 | 
                        //some html 
 | 
                        _html += '</div>'; 
 | 
                    } 
 | 
                    $block.append(_html); 
 | 
                    that.renderForm(); 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据components组件对象获取组件属性 
 | 
                 * @param {object} id 所属组件id 
 | 
                 * @param {object} index 所属对象组件索引 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                jsonData: function (id, index,that) { 
 | 
                    //分配一个新的ID 默认是一个一行两列的布局对象 
 | 
                    var _json = JSON.parse(JSON.stringify(formField.components.grid)); 
 | 
                    _json.id = id; 
 | 
                    _json.index = index; 
 | 
                    return _json; 
 | 
  
 | 
                }, 
 | 
                /** 
 | 
                 * 根据 json 对象显示对应的属性 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                property: function (json,that) { 
 | 
                    that.renderCommonProperty(json); //根据 json 对象获取对应的属性的html 
 | 
                    that.initCommonProperty(json); //初始化 json 对象获取对应的属性 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成html文本 
 | 
                 * @param {object} json 当前组件的json属性 
 | 
                 * @param {boolean} selected 是否被选中 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateHtml: function (json,selected,that) { 
 | 
                    if (selected === undefined) { 
 | 
                        selected = false; 
 | 
                    } 
 | 
                    var _selected = selected ? 'active' : ''; 
 | 
                    var _html = '<div id="{0}" class="layui-form-item layui-row grid {2}"  data-id="{0}" data-tag="{1}" data-index="{3}" >'.format(json.id, json.tag, _selected ? 'active' : '', json.index); 
 | 
                    var colClass = 'layui-col-md6'; 
 | 
                    if (json.columns.length == 3) { 
 | 
                        colClass = 'layui-col-md4'; 
 | 
                    } else if (json.columns.length == 4) { 
 | 
                        colClass = 'layui-col-md3'; 
 | 
                    } 
 | 
                    for (var i = 0; i < json.columns.length; i++) { 
 | 
                        _html += '<div class="{2} widget-col-list column{3}{0}" data-index="{0}" data-parentindex="{1}">'.format(i, json.index, colClass,json.id); 
 | 
                        //some html 
 | 
                        _html += '</div>'; 
 | 
                    } 
 | 
                    _html += '</div>'; 
 | 
                    return _html; 
 | 
                }, 
 | 
                /** 
 | 
                 * 根据json对象生成js文本 
 | 
                 * @param {object} json 变更后的json属性 
 | 
                 * @param {object} that 实例对象 
 | 
                 * */ 
 | 
                generateScript:function (json,that) { 
 | 
                    return ''; 
 | 
                } 
 | 
            }, 
 | 
        } 
 | 
  
 | 
        /* 初始化 json 对象获取对应的属性*/ 
 | 
        Class.prototype.initCommonProperty = function (json) { 
 | 
            var that = this 
 | 
                , options = that.config; 
 | 
            for (var key in json) { 
 | 
                if (key === 'index') { 
 | 
                    continue; 
 | 
                } 
 | 
                switch (key) { 
 | 
                    case 'id': 
 | 
                        $('#id').click(function () { 
 | 
                            //例子2 
 | 
                            layer.prompt({ 
 | 
                                formType: 0, 
 | 
                                value: options.selectItem.id, 
 | 
                                title: '请输入更新后的ID', 
 | 
                            }, function(value, index, elem){ 
 | 
                                var _checkid = that.findJsonItem(options.data, value); 
 | 
                                if (_checkid === undefined) { 
 | 
                                    var findJsonItem = that.findJsonItem(options.data, options.selectItem.id); 
 | 
                                    findJsonItem.id = value; 
 | 
                                    that.renderForm(); 
 | 
                                } else { 
 | 
                                    //提示层 
 | 
                                    layer.msg('ID已经存在'); 
 | 
                                } 
 | 
                                layer.close(index); 
 | 
                            }); 
 | 
                        }); 
 | 
                        $('#id').mouseover(function(){ 
 | 
                            layer.tips('请点击修改id', '#id',); 
 | 
                        }); 
 | 
                        break; 
 | 
                    case 'labelWidth': 
 | 
                        //定义初始值 
 | 
                        slider.render({ 
 | 
                            elem: '#labelWidth', 
 | 
                            value: json.labelWidth, //初始值 
 | 
                            min: 80, 
 | 
                            max: 300, 
 | 
                            step: 1, 
 | 
                            input:true, 
 | 
                            change: function(value){ 
 | 
                                json.labelWidth = value; 
 | 
                                that.components[json.tag].update(json,that); 
 | 
                            } 
 | 
                        }); 
 | 
                        break; 
 | 
                    case 'width': 
 | 
                        //定义初始值 
 | 
                        slider.render({ 
 | 
                            elem: '#width', 
 | 
                            value: json.width.replace("%",""), //初始值 
 | 
                            min: 20, 
 | 
                            max: 100, 
 | 
                            step: 1, 
 | 
                            input:true, 
 | 
                            change: function(value){ 
 | 
                                json.width = value + "%"; 
 | 
                                that.components[json.tag].update(json,that); 
 | 
                            } 
 | 
                        }); 
 | 
                        break; 
 | 
                    case 'options': 
 | 
                        var sortable = Sortable.create(document.getElementById(options.selectItem.tag), { 
 | 
                            group: { 
 | 
                                name: 'propertygroup', 
 | 
                            }, 
 | 
                            ghostClass: "ghost", 
 | 
                            handle: '.select-option-drag', 
 | 
                            dataIdAttr: 'data-index', 
 | 
                            animation: 150, 
 | 
                            onEnd: function (evt) { 
 | 
                                if (options.selectItem === undefined) { 
 | 
                                    return; 
 | 
                                } 
 | 
                                var indexArray = sortable.toArray(); 
 | 
                                var newJson = []; 
 | 
                                for (var i = 0; i < indexArray.length; i++) { 
 | 
                                    newJson.push(options.selectItem.options[indexArray[i]]); 
 | 
                                } 
 | 
                                options.selectItem.options = newJson; 
 | 
                                var $select = $('#' + options.selectItem.tag); 
 | 
                                $select.empty(); 
 | 
                                that.components[options.selectItem.tag].update(options.selectItem,that); 
 | 
                                that.components[options.selectItem.tag].property(options.selectItem,that); 
 | 
                                form.render('select'); 
 | 
                                form.render('radio'); 
 | 
                                form.render('checkbox'); 
 | 
                            } 
 | 
                        }); 
 | 
                        that.addOptionEvent(json); 
 | 
                        break; 
 | 
                    case 'dataMaxValue': 
 | 
                        laydate.render({ 
 | 
                            elem: '#dataMaxValue' + json.tag + json.id, 
 | 
                            format: 'yyyy-MM-dd', 
 | 
                            btns: ['now','confirm'], 
 | 
                            value: json.dataMaxValue, 
 | 
                            done: function(value, date, endDate){ 
 | 
                                json.dataMaxValue = value; 
 | 
                                that.components[json.tag].update(json,that); 
 | 
                            } 
 | 
                        }); 
 | 
                        break; 
 | 
                    case 'dataMinValue': 
 | 
                        laydate.render({ 
 | 
                            elem: '#dataMinValue' + json.tag + json.id, 
 | 
                            format: 'yyyy-MM-dd', 
 | 
                            btns: ['now','confirm'], 
 | 
                            value: json.dataMinValue, 
 | 
                            done: function(value, date, endDate){ 
 | 
                                json.dataMinValue = value; 
 | 
                                that.components[json.tag].update(json,that); 
 | 
                            } 
 | 
                        }); 
 | 
                        break; 
 | 
                    case 'dateDefaultValue': 
 | 
                        laydate.render({ 
 | 
                            elem: '#dateDefaultValue' + json.tag + json.id, 
 | 
                            type: json.dateType, 
 | 
                            format: json.dateFormat, 
 | 
                            value: json.dateDefaultValue, 
 | 
                            done: function(value, date, endDate){ 
 | 
                                json.dateDefaultValue = value; 
 | 
                                that.components[json.tag].update(json,that); 
 | 
                            } 
 | 
                        }); 
 | 
                        break; 
 | 
                    case 'dateRangeDefaultValue': 
 | 
                        laydate.render({ 
 | 
                            elem: '#dateRangeDefaultValue' + json.tag + json.id, 
 | 
                            type: json.dateType, 
 | 
                            format: json.dateFormat, 
 | 
                            value: json.dateRangeDefaultValue, 
 | 
                            range:"-", 
 | 
                            done: function(value, date, endDate){ 
 | 
                                json.dateRangeDefaultValue = value; 
 | 
                                that.components[json.tag].update(json,that); 
 | 
                            } 
 | 
                        }); 
 | 
                        break; 
 | 
                    case 'buttonIcon': 
 | 
                        iconPicker.render({ 
 | 
                            // 选择器,推荐使用input 
 | 
                            elem: '#' + json.tag + json.id + "property", 
 | 
                            // 数据类型:fontClass/unicode,推荐使用fontClass 
 | 
                            type: 'fontClass', 
 | 
                            // 是否开启搜索:true/false,默认true 
 | 
                            search: true, 
 | 
                            // 是否开启分页:true/false,默认true 
 | 
                            page: true, 
 | 
                            // 每页显示数量,默认12 
 | 
                            limit: 12, 
 | 
                            // 每个图标格子的宽度:'43px'或'20%' 
 | 
                            cellWidth: '43px', 
 | 
                            // 点击回调 
 | 
                            click: function (data) { 
 | 
                                json.buttonIcon = data.icon; 
 | 
                                that.components[json.tag].update(json,that); 
 | 
                            }, 
 | 
                            // 渲染成功后的回调 
 | 
                            success: function(d) { 
 | 
                                //console.log(d); 
 | 
                            } 
 | 
                        }); 
 | 
                        break; 
 | 
                    case 'whiteSpace': 
 | 
                        slider.render({ 
 | 
                            elem:'#' + json.tag + json.id + "property", 
 | 
                            value: json.whiteSpace, //初始值 
 | 
                            min: 30, 
 | 
                            max: 500, 
 | 
                            step: 1, 
 | 
                            input:true, 
 | 
                            change: function(value){ 
 | 
                                json.whiteSpace = value; 
 | 
                                that.components[json.tag].update(json,that); 
 | 
                            } 
 | 
                        }); 
 | 
                        break; 
 | 
                    case 'colorSelection': 
 | 
                        colorpicker.render({ 
 | 
                            elem: '#' + json.tag + json.id + "property" 
 | 
                            ,color: json.colorSelection 
 | 
                            ,format: 'rgb' 
 | 
                            ,predefine: true 
 | 
                            ,alpha: true 
 | 
                            ,done: function (color) { 
 | 
                                json.colorSelection = color; 
 | 
                                that.components[json.tag].update(json,that); 
 | 
                            } 
 | 
                        }); 
 | 
                        break; 
 | 
                    case 'menu': 
 | 
                        $('#menu').click(function () { 
 | 
                            layer.open({ 
 | 
                                type: 2, 
 | 
                                title: '头部菜单', 
 | 
                                btn: ['保存','关闭'], //可以无限个按钮 
 | 
                                yes: function(index, layero){ 
 | 
                                    //do something 
 | 
                                    var iframe = window['layui-layer-iframe' + index]; 
 | 
                                    var checkData = iframe.getCheckData(); 
 | 
                                    json.menu = checkData; 
 | 
                                    that.components[json.tag].update(json,that); 
 | 
                                    layer.close(index); //如果设定了yes回调,需进行手工关闭 
 | 
                                }, 
 | 
                                btn2: function (index, layero) { 
 | 
                                    layer.close(index); 
 | 
                                }, 
 | 
                                closeBtn: 1, //不显示关闭按钮 
 | 
                                shade: [0], 
 | 
                                area: ['80%', '80%'], 
 | 
                                offset: 'auto', //右下角弹出 
 | 
                                anim: 2, 
 | 
                                content: ['./editorMenu.html', 'yes'], //iframe的url,no代表不显示滚动条 
 | 
                                success:function (layero,index) { 
 | 
                                    var iframe = window['layui-layer-iframe' + index]; 
 | 
                                    iframe.child(staticField.iceEditMenus) 
 | 
                                } 
 | 
                            }); 
 | 
                        }); 
 | 
                        break; 
 | 
                    default: 
 | 
                        break; 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
  
 | 
        /* 添加选项事件*/ 
 | 
        Class.prototype.addOptionEvent = function (json) { 
 | 
            var that = this 
 | 
                , options = that.config; 
 | 
            $('#select-option-add').on('click', function () { 
 | 
                //添加html 
 | 
                json.options.splice(json.options.length + 1, 0, {text: 'option', value: 'value', checked: false}); 
 | 
                var _htmloption = ''; 
 | 
                _htmloption += '<div class="layui-form-item option select-options" data-index="{0}">'.format(json.options.length - 1); 
 | 
                _htmloption += '  <div class="layui-inline" style="width: 30px; margin-right: 0px;">'; 
 | 
                if (json.tag === 'checkbox') { 
 | 
                    _htmloption += '   <input type="checkbox" name="{0}" lay-skin="primary" title="">'.format(json.tag); 
 | 
                } else { 
 | 
                    _htmloption += '   <input type="radio" name="{0}" >'.format(json.tag); 
 | 
                } 
 | 
                _htmloption += '  </div>'; 
 | 
                _htmloption += '  <div class="layui-inline" style="margin-right: 0px;width:110px;">'; 
 | 
                _htmloption += '   <input type="text" name="{0}-text"  autocomplete="off" value="{1}" class="layui-input">'.format(json.tag, 'option'); 
 | 
                _htmloption += '  </div>'; 
 | 
                _htmloption += '  <div class="layui-inline" style="margin-right: 0px;width:110px;">'; 
 | 
                _htmloption += '   <input type="text" name="{0}-value"  autocomplete="off" value="{1}" class="layui-input">'.format(json.tag, 'value'); 
 | 
                _htmloption += '  </div>'; 
 | 
                _htmloption += '  <div class="layui-inline" style="margin-right: 0px;">'; 
 | 
                _htmloption += '   <i class="layui-icon layui-icon-slider select-option-drag" style="color:blue;font-size:20px;"></i>'; 
 | 
                _htmloption += '   <i class="layui-icon layui-icon-delete select-option-delete" style="color:red;font-size:20px;"></i>'; 
 | 
                _htmloption += '  </div>'; 
 | 
                _htmloption += '</div>'; 
 | 
                $('#columnProperty .select-options').last().after(_htmloption); 
 | 
                //更新设计区节点 
 | 
                that.components[json.tag].update(json,that); 
 | 
                if (json.tag === 'checkbox') { 
 | 
                    form.render('checkbox'); 
 | 
                } else if (json.tag === 'radio' || json.tag == 'carousel') { 
 | 
                    form.render('radio'); 
 | 
                } else if (json.tag == 'select') { 
 | 
                    form.render('select'); 
 | 
                    form.render('radio'); 
 | 
                } 
 | 
            }); 
 | 
            //委托监听先关闭在增加 click 
 | 
            $(document).off('click', '#columnProperty .select-option-delete').on('click', '#columnProperty .select-option-delete', function (e) { 
 | 
                e.preventDefault(); 
 | 
                e.stopPropagation(); 
 | 
                //从数据源 options.data 中删除节点 
 | 
                if (json.options.length <= 1) { 
 | 
                    layer.msg('已达到最低选项,不能继续删除'); 
 | 
                    return; 
 | 
                } 
 | 
                var _index = $(this).closest('.layui-form-item')[0].dataset.index; 
 | 
                if (_index !== undefined) { 
 | 
                    json.options.splice(_index, 1);//删除此节点 
 | 
                } 
 | 
                var checkedDefual = true; 
 | 
                for (var i = 0; i < json.options.length; i++) { 
 | 
                    if (json.options[i].checked) { 
 | 
                        checkedDefual = false 
 | 
                    } 
 | 
                } 
 | 
                if (checkedDefual) { 
 | 
                    json.options[0].checked = true; 
 | 
                } 
 | 
                $('#' + json.tag).empty(); 
 | 
                var _html = ''; 
 | 
                for (var i = 0; i < json.options.length; i++) { 
 | 
                    _html += '<div class="layui-form-item option select-options" data-index="{0}">'.format(i); 
 | 
                    _html += '  <div class="layui-inline" style="width: 30px; margin-right: 0px;">'; 
 | 
                    if (json.tag === 'checkbox') { 
 | 
                        if (json.options[i].checked) { 
 | 
                            _html += '   <input type="checkbox" name="{0}" lay-skin="primary" title="" checked>'.format(json.tag); 
 | 
                        } else { 
 | 
                            _html += '   <input type="checkbox" name="{0}" lay-skin="primary" title="">'.format(json.tag); 
 | 
                        } 
 | 
                    } else { 
 | 
                        if (json.options[i].checked) { 
 | 
                            _html += '   <input type="radio" name="{0}" checked>'.format(json.tag); 
 | 
                        } else { 
 | 
                            _html += '   <input type="radio" name="{0}">'.format(json.tag); 
 | 
                        } 
 | 
                    } 
 | 
                    _html += '  </div>'; 
 | 
                    _html += '  <div class="layui-inline" style="margin-right: 0px;width:110px;">'; 
 | 
                    _html += '   <input type="text" name="{0}-text"  autocomplete="off" value="{1}" class="layui-input">'.format(json.tag, json.options[i].text); 
 | 
                    _html += '  </div>'; 
 | 
                    _html += '  <div class="layui-inline" style="margin-right: 0px;width:110px;">'; 
 | 
                    _html += '   <input type="text" name="{0}-value"  autocomplete="off" value="{1}" class="layui-input">'.format(json.tag, json.options[i].value); 
 | 
                    _html += '  </div>'; 
 | 
                    _html += '  <div class="layui-inline" style="margin-right: 0px;">'; 
 | 
                    _html += '   <i class="layui-icon layui-icon-slider select-option-drag" style="color:blue;font-size:20px;"></i>'; 
 | 
                    _html += '   <i class="layui-icon layui-icon-delete select-option-delete" style="color:red;font-size:20px;"></i>'; 
 | 
                    _html += '  </div>'; 
 | 
                    _html += '</div>'; 
 | 
                } 
 | 
                $('#' + json.tag).append(_html); 
 | 
                //更新设计区节点 
 | 
                that.components[json.tag].update(json,that); 
 | 
                if (json.tag === 'checkbox') { 
 | 
                    form.render('checkbox'); 
 | 
                } else if (json.tag === 'radio') { 
 | 
                    form.render('radio'); 
 | 
                } else if (json.tag == 'select') { 
 | 
                    form.render('select'); 
 | 
                    form.render('radio'); 
 | 
                } 
 | 
            }); 
 | 
        } 
 | 
  
 | 
        /* 根据 json 对象获取对应的属性的html*/ 
 | 
        Class.prototype.renderCommonProperty = function (json) { 
 | 
            $('#columnProperty').empty(); 
 | 
            var _html = ''; 
 | 
            for (var key in json) { 
 | 
                if (key === 'index') { 
 | 
                    continue; 
 | 
                } 
 | 
                switch (key) { 
 | 
                    case 'tag': 
 | 
                    case 'uploadUrl': 
 | 
                    case 'document': 
 | 
                    case 'interval': 
 | 
                    case 'cronUrl': 
 | 
                        _html += '<div class="layui-form-item" >'; 
 | 
                        _html += '  <label class="layui-form-label">{0}</label>'.format(staticField.lang[key]); 
 | 
                        _html += '  <div class="layui-input-block">'; 
 | 
                        if (key === 'tag') { 
 | 
                            _html += '    <input type="text" readonly id="{0}" name="{0}" value="{1}" required lay-verify="required" placeholder="请输入内容" autocomplete="off" class="layui-input">' 
 | 
                                .format(key, json[key] == undefined ? '' : json[key]); 
 | 
                        } else { 
 | 
                            _html += '    <input type="text" id="{0}" name="{0}" value="{1}" required lay-verify="required" placeholder="请输入内容" autocomplete="off" class="layui-input">' 
 | 
                                .format(key, json[key] == undefined ? '' : json[key]); 
 | 
                        } 
 | 
                        _html += '  </div>'; 
 | 
                        _html += '</div>'; 
 | 
                        break; 
 | 
                    case 'readonly': 
 | 
                        var yes = "只读"; 
 | 
                        var no = "可写"; 
 | 
                        _html += '<div class="layui-form-item" >'; 
 | 
                        _html += '  <label class="layui-form-label">{0}</label>'.format(staticField.lang[key]); 
 | 
                        _html += '  <div class="layui-input-block">'; 
 | 
                        _html += '    <input type="checkbox" id="{1}" {0} name="{1}" lay-skin="switch" lay-text="{2}|{3}">'.format(json[key] ? 'checked' : '', key, yes, no); 
 | 
                        _html += '  </div>'; 
 | 
                        _html += '</div>'; 
 | 
                        break; 
 | 
                    case 'disabled': 
 | 
                    case 'hideLabel': 
 | 
                        var yes = "隐藏"; 
 | 
                        var no = "显示"; 
 | 
                        _html += '<div class="layui-form-item" >'; 
 | 
                        _html += '  <label class="layui-form-label">{0}</label>'.format(staticField.lang[key]); 
 | 
                        _html += '  <div class="layui-input-block">'; 
 | 
                        _html += '    <input type="checkbox" id="{1}" {0} name="{1}" lay-skin="switch" lay-text="{2}|{3}">'.format(json[key] ? 'checked' : '', key, yes, no); 
 | 
                        _html += '  </div>'; 
 | 
                        _html += '</div>'; 
 | 
                        break; 
 | 
                    case 'required': 
 | 
                        var yes = "必填"; 
 | 
                        var no = "可选"; 
 | 
                        _html += '<div class="layui-form-item" >'; 
 | 
                        _html += '  <label class="layui-form-label">{0}</label>'.format(staticField.lang[key]); 
 | 
                        _html += '  <div class="layui-input-block">'; 
 | 
                        _html += '    <input type="checkbox" id="{1}" {0} name="{1}" lay-skin="switch" lay-text="{2}|{3}">'.format(json[key] ? 'checked' : '', key, yes, no); 
 | 
                        _html += '  </div>'; 
 | 
                        _html += '</div>'; 
 | 
                        break; 
 | 
                    case 'expression': 
 | 
                        _html += '<div class="layui-form-item" >'; 
 | 
                        _html += '  <label class="layui-form-label">{0}</label>'.format(staticField.lang[key]); 
 | 
                        _html += '  <div class="layui-input-block">'; 
 | 
                        _html += '<select name="{0}" lay-verify="required">'.format(key); 
 | 
                        for (var i = 0; i < staticField.expressions.length; i++) { 
 | 
                            if (staticField.expressions[i].value === json.expression) { 
 | 
                                _html += '<option value="{0}" selected="">{1}</option>'.format(staticField.expressions[i].value, staticField.expressions[i].text); 
 | 
                            } else { 
 | 
                                _html += '<option value="{0}">{1}</option>'.format(staticField.expressions[i].value, staticField.expressions[i].text); 
 | 
                            } 
 | 
                        } 
 | 
                        _html += '</select>' 
 | 
                        _html += '  </div>'; 
 | 
                        _html += '</div>'; 
 | 
                        break; 
 | 
                    case 'autoplay': 
 | 
                    case 'iconPickerSearch': 
 | 
                    case 'iconPickerPage': 
 | 
                    case 'isInput': 
 | 
                        var yes = "是"; 
 | 
                        var no = "否"; 
 | 
                        _html += '<div class="layui-form-item" >'; 
 | 
                        _html += '  <label class="layui-form-label">{0}</label>'.format(staticField.lang[key]); 
 | 
                        _html += '  <div class="layui-input-block">'; 
 | 
                        _html += '    <input type="checkbox" id="{1}" {0} name="{1}" lay-skin="switch" lay-text="{2}|{3}">'.format(json[key] ? 'checked' : '', key, yes, no); 
 | 
                        _html += '  </div>'; 
 | 
                        _html += '</div>'; 
 | 
                        break; 
 | 
                    case 'defaultValue': 
 | 
                    case 'label': 
 | 
                    case 'height': 
 | 
                    case 'placeholder': 
 | 
                    case 'document': 
 | 
                    case 'minValue': 
 | 
                    case 'maxValue': 
 | 
                    case 'stepValue': 
 | 
                    case 'rateLength': 
 | 
                    case 'iconPickerLimit': 
 | 
                    case 'iconPickerCellWidth': 
 | 
                    case 'buttonVlaue': 
 | 
                        _html += '<div class="layui-form-item" >'; 
 | 
                        _html += '  <label class="layui-form-label">{0}</label>'.format(staticField.lang[key]); 
 | 
                        _html += '  <div class="layui-input-block">'; 
 | 
                        _html += '    <input type="text" id="{0}" name="{0}" value="{1}" required lay-verify="required" placeholder="请输入{2}" autocomplete="off" class="layui-input">' 
 | 
                            .format(key, json[key] == undefined ? '' : json[key], staticField.lang[key]); 
 | 
                        _html += '  </div>'; 
 | 
                        _html += '</div>'; 
 | 
                        break; 
 | 
                    case 'width': 
 | 
                    case 'labelWidth': 
 | 
                        _html += '<div class="layui-form-item" >'; 
 | 
                        _html += '  <label class="layui-form-label">{0}</label>'.format(staticField.lang[key]); 
 | 
                        _html += '  <div class="layui-input-block">'; 
 | 
                        _html += '<div id="{0}" class="widget-slider" style="top: 16px;"></div>'.format(key); 
 | 
                        _html += '    <input type="hidden" id="{0}"  name="{0}" value="{1}" readonly="readonly" style="background:#eeeeee!important;width: 100%;" placeholder="请选择{2}" autocomplete="off" class="layui-input">' 
 | 
                            .format(key + "-value", '', staticField.lang[key]); 
 | 
                        _html += '  </div>'; 
 | 
                        _html += '</div>'; 
 | 
                        break; 
 | 
                    case 'menu': 
 | 
                        _html += '<div class="layui-form-item" >'; 
 | 
                        _html += '  <label class="layui-form-label">{0}</label>'.format(staticField.lang[key]); 
 | 
                        _html += '  <div class="layui-input-block">'; 
 | 
                        _html += '    <input type="text" id="{0}" name="{0}" value="{1}" readonly="readonly" style="background:#eeeeee!important;width: 100%;" placeholder="{2}" autocomplete="off" class="layui-input">' 
 | 
                            .format(key, '', staticField.lang[key]); 
 | 
                        _html += '  </div>'; 
 | 
                        _html += '</div>'; 
 | 
                        break; 
 | 
                    case 'id': 
 | 
                        _html += '<div class="layui-form-item" >'; 
 | 
                        _html += '  <label class="layui-form-label">{0}</label>'.format(staticField.lang[key]); 
 | 
                        _html += '  <div class="layui-input-block">'; 
 | 
                        _html += '    <input type="text" id="{0}" name="{0}" value="{1}" readonly="readonly" style="background:#eeeeee!important;width: 100%;" placeholder="{2}" autocomplete="off" class="layui-input">' 
 | 
                            .format(key, '', json[key]); 
 | 
                        _html += '  </div>'; 
 | 
                        _html += '</div>'; 
 | 
                        break; 
 | 
                    case 'switchValue': 
 | 
                        _html += '<div class="layui-form-item" >'; 
 | 
                        _html += '  <label class="layui-form-label">{0}</label>'.format(staticField.lang[key]); 
 | 
                        _html += '  <div class="layui-input-block">'; 
 | 
                        _html += '     <input type="checkbox" name="{0}" {1} lay-skin="switch" lay-text="ON|OFF">' 
 | 
                            .format(key, json[key] ? 'checked' : ''); 
 | 
                        _html += '  </div>'; 
 | 
                        _html += '</div>'; 
 | 
                        break; 
 | 
                    case 'dateType': 
 | 
                        _html += '<div class="layui-form-item" >'; 
 | 
                        _html += '  <label class="layui-form-label">{0}</label>'.format(staticField.lang[key]); 
 | 
                        _html += '  <div class="layui-input-block">'; 
 | 
                        _html += '<select name="{0}" lay-verify="required">'.format(key); 
 | 
                        for (var i = 0; i < staticField.dateTypes.length; i++) { 
 | 
                            if (staticField.dateTypes[i].value === json.dateType) { 
 | 
                                _html += '<option value="{0}" selected="">{1}</option>'.format(staticField.dateTypes[i].value,staticField.dateTypes[i].text); 
 | 
                            } else { 
 | 
                                _html += '<option value="{0}">{1}</option>'.format(staticField.dateTypes[i].value,staticField.dateTypes[i].text); 
 | 
                            } 
 | 
                        } 
 | 
                        _html += '</select>' 
 | 
                        _html += '  </div>'; 
 | 
                        _html += '</div>'; 
 | 
                        break; 
 | 
                    case 'dateFormat': 
 | 
                        _html += '<div class="layui-form-item" >'; 
 | 
                        _html += '  <label class="layui-form-label">{0}</label>'.format(staticField.lang[key]); 
 | 
                        _html += '  <div class="layui-input-block">'; 
 | 
                        _html += '<select name="{0}" lay-verify="required">'.format(key); 
 | 
                        for (var i = 0; i < staticField.dateFormats.length; i++) { 
 | 
                            if (staticField.dateFormats[i] === json.dateFormat) { 
 | 
                                _html += '<option value="{0}" selected="">{0}</option>'.format(staticField.dateFormats[i]); 
 | 
                            } else { 
 | 
                                _html += '<option value="{0}">{0}</option>'.format(staticField.dateFormats[i]); 
 | 
                            } 
 | 
                        } 
 | 
                        _html += '</select>' 
 | 
                        _html += '  </div>'; 
 | 
                        _html += '</div>'; 
 | 
                        break; 
 | 
                    case 'contents': 
 | 
                        //处理 
 | 
                        _html += '<div class="layui-form-item" >'; 
 | 
                        _html += '  <label class="layui-form-label">{0}</label>'.format(staticField.lang[key]); 
 | 
                        _html += '  <div class="layui-input-block">'; 
 | 
                        _html += '    <button style="margin: 5px 0px 0px 30px;" type="button" id="select-option-add" class="layui-btn layui-btn-primary layui-btn-sm"><i class="layui-icon layui-icon-addition"></i>增加选项</button>' 
 | 
                        //_html += '    <button type="button" id="select-option-datasource" class="layui-btn layui-btn-primary layui-btn-sm"><i class="layui-icon layui-icon-addition"></i>设置数据源</button>' 
 | 
                        _html += '  </div>'; 
 | 
                        _html += '</div>'; 
 | 
                        _html += '<div id="{0}">'.format(json.tag); 
 | 
                        //选项 
 | 
                        for (var i = 0; i < json.contents.length; i++) { 
 | 
                            _html += '<div class="layui-form-item option contents-options" data-index="{0}">'.format(i); 
 | 
  
 | 
                            _html += '  <div class="layui-inline" style="margin-right: 0px;width:220px; margin-left:30px;">'; 
 | 
                            _html += '   <input type="text" name="{0}-text"  autocomplete="off" value="{1}" class="layui-input">'.format(json.tag, json.contents[i]); 
 | 
                            _html += '  </div>'; 
 | 
                            _html += '  <div class="layui-inline" style="margin-right: 0px;">'; 
 | 
                            _html += '   <i class="layui-icon layui-icon-slider contents-option-drag" style="color:blue;font-size:20px;"></i>'; 
 | 
                            _html += '   <i class="layui-icon layui-icon-delete contents-option-delete" style="color:red;font-size:20px;"></i>'; 
 | 
                            _html += '  </div>'; 
 | 
                            _html += '</div>'; 
 | 
                            //向 .option .layui-inline 添加drag事件并且必须设在 contents-option-drag 中才能拖动 
 | 
                        } 
 | 
                        _html += '</div>'; 
 | 
                        break; 
 | 
                    case 'options': 
 | 
                        //处理 
 | 
                        _html += '<div class="layui-form-item" >'; 
 | 
                        _html += '  <label class="layui-form-label">{0}</label>'.format(staticField.lang[key]); 
 | 
                        _html += '  <div class="layui-input-block">'; 
 | 
                        _html += '    <button style="margin: 5px 0px 0px 30px;" type="button" id="select-option-add" class="layui-btn layui-btn-primary layui-btn-sm"><i class="layui-icon layui-icon-addition"></i>增加选项</button>' 
 | 
                        //_html += '    <button type="button" id="select-option-datasource" class="layui-btn layui-btn-primary layui-btn-sm"><i class="layui-icon layui-icon-addition"></i>设置数据源</button>' 
 | 
                        _html += '  </div>'; 
 | 
                        _html += '</div>'; 
 | 
                        _html += '<div id="{0}">'.format(json.tag); 
 | 
                        //选项 
 | 
                        for (var i = 0; i < json.options.length; i++) { 
 | 
                            _html += '<div class="layui-form-item option select-options" data-index="{0}">'.format(i); 
 | 
                            _html += '  <div class="layui-inline" style="width: 30px; margin-right: 0px;">'; 
 | 
                            if (json.tag === 'checkbox') { 
 | 
                                if (json.options[i].checked) { 
 | 
                                    _html += '    <input type="checkbox" name="{0}" lay-skin="primary" title="" checked="">'.format(json.tag); 
 | 
                                } else { 
 | 
                                    _html += '    <input type="checkbox" name="{0}" lay-skin="primary" title="">'.format(json.tag); 
 | 
                                } 
 | 
                            } else { 
 | 
                                if (json.options[i].checked) { 
 | 
                                    _html += '   <input type="radio" name="{0}"  checked="">'.format(json.tag); 
 | 
                                } else { 
 | 
                                    _html += '   <input type="radio" name="{0}">'.format(json.tag); 
 | 
                                } 
 | 
  
 | 
                            } 
 | 
                            _html += '  </div>'; 
 | 
                            _html += '  <div class="layui-inline" style="margin-right: 0px;width:110px;">'; 
 | 
                            _html += '   <input type="text" name="{0}-text"  autocomplete="off" value="{1}" class="layui-input">'.format(json.tag, json.options[i].text); 
 | 
                            _html += '  </div>'; 
 | 
                            _html += '  <div class="layui-inline" style="margin-right: 0px;width:110px;">'; 
 | 
                            _html += '   <input type="text" name="{0}-value"  autocomplete="off" value="{1}" class="layui-input">'.format(json.tag, json.options[i].value); 
 | 
                            _html += '  </div>'; 
 | 
                            _html += '  <div class="layui-inline" style="margin-right: 0px;">'; 
 | 
                            _html += '   <i class="layui-icon layui-icon-slider select-option-drag" style="color:blue;font-size:20px;"></i>'; 
 | 
                            _html += '   <i class="layui-icon layui-icon-delete select-option-delete" style="color:red;font-size:20px;"></i>'; 
 | 
                            _html += '  </div>'; 
 | 
                            _html += '</div>'; 
 | 
                            //向 .option .layui-inline 添加drag事件并且必须设在 select-option-drag 中才能拖动 
 | 
                        } 
 | 
                        _html += '</div>'; 
 | 
                        break; 
 | 
                    case 'anim': 
 | 
                        //处理 
 | 
                        _html += '<div class="layui-form-item" >'; 
 | 
                        _html += '  <label class="layui-form-label">{0}</label>'.format(staticField.lang[key]); 
 | 
                        _html += '  <div class="layui-input-block">'; 
 | 
                        _html += '<select name="{0}" lay-verify="required">'.format(key); 
 | 
                        for (var i = 0; i < staticField.anims.length; i++) { 
 | 
                            if (staticField.anims[i].value === json.anim) { 
 | 
                                _html += ' <option value="{1}" selected="">{0}</option>'.format(staticField.anims[i].text, staticField.anims[i].value); 
 | 
                            } else { 
 | 
                                _html += ' <option value="{1}">{0}</option>'.format(staticField.anims[i].text, staticField.anims[i].value); 
 | 
                            } 
 | 
                        } 
 | 
                        _html += '</select>' 
 | 
                        _html += '</div>'; 
 | 
                        _html += '</div>'; 
 | 
                        break; 
 | 
                    case 'arrow': 
 | 
                        //处理 
 | 
                        _html += '<div class="layui-form-item" >'; 
 | 
                        _html += '  <label class="layui-form-label">{0}</label>'.format(staticField.lang[key]); 
 | 
                        _html += '  <div class="layui-input-block">'; 
 | 
                        _html += '<select name="{0}" lay-verify="required">'.format(key); 
 | 
                        for (var i = 0; i < staticField.arrows.length; i++) { 
 | 
                            if (staticField.arrows[i].value === json.arrow) { 
 | 
                                _html += ' <option value="{1}" selected="">{0}</option>'.format(staticField.arrows[i].text, staticField.arrows[i].value); 
 | 
                            }else { 
 | 
                                _html += ' <option value="{1}">{0}</option>'.format(staticField.arrows[i].text, staticField.arrows[i].value); 
 | 
                            } 
 | 
                        } 
 | 
                        _html += '</select>' 
 | 
                        _html += '</div>'; 
 | 
                        _html += '</div>'; 
 | 
                        break; 
 | 
                    case 'buttonType': 
 | 
                        //处理 
 | 
                        _html += '<div class="layui-form-item" >'; 
 | 
                        _html += '  <label class="layui-form-label">{0}</label>'.format(staticField.lang[key]); 
 | 
                        _html += '  <div class="layui-input-block">'; 
 | 
                        _html += '<select name="{0}" lay-verify="required">'.format(key); 
 | 
                        for (var i = 0; i < staticField.buttonTypes.length; i++) { 
 | 
                            if (staticField.buttonTypes[i].value === json.buttonType) { 
 | 
                                if (staticField.buttonTypes[i].value === "") { 
 | 
                                    _html += ' <option selected="">{0}</option>'.format(staticField.buttonTypes[i].text); 
 | 
                                }else { 
 | 
                                    _html += ' <option value="{1}" selected="">{0}</option>'.format(staticField.buttonTypes[i].text, staticField.buttonTypes[i].value); 
 | 
                                } 
 | 
                            }else { 
 | 
                                _html += ' <option value="{1}">{0}</option>'.format(staticField.buttonTypes[i].text, staticField.buttonTypes[i].value); 
 | 
                            } 
 | 
                        } 
 | 
                        _html += '</select>' 
 | 
                        _html += '</div>'; 
 | 
                        _html += '</div>'; 
 | 
                        break; 
 | 
                    case 'buttonSize': 
 | 
                        //处理 
 | 
                        _html += '<div class="layui-form-item" >'; 
 | 
                        _html += '  <label class="layui-form-label">{0}</label>'.format(staticField.lang[key]); 
 | 
                        _html += '  <div class="layui-input-block">'; 
 | 
                        _html += '<select name="{0}" lay-verify="required">'.format(key); 
 | 
                        for (var i = 0; i < staticField.buttonSizes.length; i++) { 
 | 
                            if (staticField.buttonSizes[i].value === json.buttonSize) { 
 | 
                                if (staticField.buttonSizes[i].value === "") { 
 | 
                                    _html += ' <option selected="">{0}</option>'.format(staticField.buttonSizes[i].text); 
 | 
                                }else { 
 | 
                                    _html += ' <option value="{1}" selected="">{0}</option>'.format(staticField.buttonSizes[i].text, staticField.buttonSizes[i].value); 
 | 
                                } 
 | 
                            }else { 
 | 
                                _html += ' <option value="{1}">{0}</option>'.format(staticField.buttonSizes[i].text, staticField.buttonSizes[i].value); 
 | 
                            } 
 | 
                        } 
 | 
                        _html += '</select>' 
 | 
                        _html += '</div>'; 
 | 
                        _html += '</div>'; 
 | 
                        break; 
 | 
                    case 'dataMaxValue': 
 | 
                    case 'dataMinValue': 
 | 
                        _html += '<div id="{0}" class="layui-form-item">'.format(key + json.id); 
 | 
                        _html += '<label class="layui-form-label">{0}:</label>'.format(staticField.lang[key]); 
 | 
                        _html += '<div class="layui-input-block"">'; 
 | 
                        _html += '<div id="{0}" class="layui-input icon-date widget-date" style="line-height: 40px;"></div>'.format(key + json.tag + json.id); 
 | 
                        _html += '</div>'; 
 | 
                        _html += '</div>'; 
 | 
                        break; 
 | 
                    case 'dateDefaultValue': 
 | 
                        _html += '<div id="{0}" class="layui-form-item">'.format(key + json.id); 
 | 
                        _html += '<label class="layui-form-label">{0}:</label>'.format(staticField.lang[key]); 
 | 
                        _html += '<div class="layui-input-block"">'; 
 | 
                        _html += '<div id="{0}" class="layui-input icon-date widget-date" style="line-height: 40px;"></div>'.format(key + json.tag + json.id); 
 | 
                        _html += '</div>'; 
 | 
                        _html += '</div>'; 
 | 
                        break; 
 | 
                    case 'dateRangeDefaultValue': 
 | 
                        _html += '<div id="{0}" class="layui-form-item">'.format(key + json.id); 
 | 
                        _html += '<label class="layui-form-label">{0}:</label>'.format(staticField.lang[key]); 
 | 
                        _html += '<div class="layui-input-block"">'; 
 | 
                        _html += '<div id="{0}" class="layui-input icon-date widget-date" style="line-height: 40px;"></div>'.format(key + json.tag + json.id); 
 | 
                        _html += '</div>'; 
 | 
                        _html += '</div>'; 
 | 
                        break; 
 | 
                    case 'buttonIcon': 
 | 
                        _html += '<div id="{0}" class="layui-form-item" ">'.format(key + json.id); 
 | 
                        _html += '<label class="layui-form-label">{0}:</label>'.format(staticField.lang[key]); 
 | 
                        _html += '<div class="layui-input-block"">'; 
 | 
                        _html += '<div id="{0}" class="layui-input icon-date widget-date" style="line-height: 40px;"></div>'.format(json.tag + json.id + "property"); 
 | 
                        _html += '</div>'; 
 | 
                        _html += '</div>'; 
 | 
                        break; 
 | 
                    case 'whiteSpace': 
 | 
                        _html += '<div id="{0}" class="layui-form-item" ">'.format(key + json.id); 
 | 
                        _html += '<label class="layui-form-label">{0}:</label>'.format(staticField.lang[key]); 
 | 
                        _html += '<div class="layui-input-block"">'; 
 | 
                        _html += '<div id="{0}" class="widget-slider" style="top: 16px;"></div>' 
 | 
                            .format(json.tag + json.id + "property"); 
 | 
                        _html += '</div>'; 
 | 
                        _html += '</div>'; 
 | 
                        break; 
 | 
                    case 'colorSelection': 
 | 
                        _html += '<div id="{0}" class="layui-form-item" ">'.format(key + json.id); 
 | 
                        _html += '<label class="layui-form-label">{0}:</label>'.format(staticField.lang[key]); 
 | 
                        _html += '<div class="layui-input-block"">'; 
 | 
                        _html += '<div id="{0}" class="widget-rate"></div>'.format(json.tag + json.id + "property"); 
 | 
                        _html += '</div>'; 
 | 
                        _html += '</div>'; 
 | 
                        break; 
 | 
                    case 'columns': 
 | 
                        var columnCount = 2; 
 | 
                        columnCount = json[key].length; 
 | 
                        //处理 
 | 
                        _html += '<div class="layui-form-item" >'; 
 | 
                        _html += '  <label class="layui-form-label">{0}</label>'.format(staticField.lang[key]); 
 | 
                        _html += '  <div class="layui-input-block">'; 
 | 
                        _html += '<select name="{0}" lay-verify="required">'.format(key); 
 | 
                        for (var i = 2; i <= 4; i++) { 
 | 
                            if (i === columnCount) { 
 | 
                                _html += '<option value="{0}" selected="">{0}</option>'.format(i); 
 | 
                            } else { 
 | 
                                _html += '<option value="{0}">{0}</option>'.format(i); 
 | 
                            } 
 | 
                        } 
 | 
                        _html += '</select>' 
 | 
                        _html += '</div>'; 
 | 
                        _html += '</div>'; 
 | 
                        break; 
 | 
                    default: 
 | 
                        break; 
 | 
                } 
 | 
            } 
 | 
            $('#columnProperty').append(_html); 
 | 
        } 
 | 
  
 | 
  
 | 
  
 | 
        /* 给字段属性绑定事件 实现双向绑定*/ 
 | 
        Class.prototype.bindPropertyEvent = function (_json) { 
 | 
            var that = this 
 | 
                , options = that.config; 
 | 
            if (options.data === undefined) { 
 | 
                return; 
 | 
            } 
 | 
            if (typeof (options.data) === 'string') { 
 | 
                options.data = JSON.parse(options.data); 
 | 
            } 
 | 
            //没有可以选择的 
 | 
            if (_json === undefined) { 
 | 
                return; 
 | 
            } 
 | 
            //全局下拉绑定 
 | 
            form.on('select', function (data) { 
 | 
                var _key = data.elem.name; 
 | 
                var _value = parseInt(data.value); 
 | 
                var _json = options.selectItem; 
 | 
                switch (_key) { 
 | 
                    case 'columns': 
 | 
                        var columnCount = _json[_key].length; 
 | 
                        var nullJson = { 
 | 
                            span: 12, 
 | 
                            list: [] 
 | 
                        }; 
 | 
                        if (_value > columnCount) { 
 | 
                            for (var i = columnCount + 1; i <= _value; i++) { 
 | 
                                _json[_key].splice(i, 0, nullJson); 
 | 
                            } 
 | 
                        } else { 
 | 
                            _json[_key].splice(_value, columnCount); 
 | 
                        } 
 | 
                        that.components[_json.tag].update(_json,that); 
 | 
                        break; 
 | 
                    case 'dateFormat': 
 | 
                        if (_json.tag === 'date') { 
 | 
                            var _html = '<div id="{0}" class="layui-input icon-date widget-date" style="line-height: 40px;"></div>'.format('dateDefaultValue' + _json.tag + _json.id); 
 | 
                            $('#dateDefaultValue' + _json.id + ' .layui-input-block').empty(); 
 | 
                            $('#dateDefaultValue' + _json.id + ' .layui-input-block').append(_html); 
 | 
                            _json.dateFormat = data.value; 
 | 
                            var dateClass = laydate.render({ 
 | 
                                elem: '#dateDefaultValue' + _json.tag + _json.id, 
 | 
                                type: _json.datetype, 
 | 
                                format: _json.dateFormat, 
 | 
                                value: new Date(), 
 | 
                                done: function(value, date, endDate){ 
 | 
                                    _json.dateDefaultValue = value; 
 | 
                                    that.components[_json.tag].update(_json,that); 
 | 
                                } 
 | 
                            }); 
 | 
                            _json.dateDefaultValue = dateClass.config.elem[0].innerText; 
 | 
                            that.components[_json.tag].update(_json,that); 
 | 
                        } 
 | 
                        if (_json.tag === 'dateRange') { 
 | 
                            var _html = '<div id="{0}" class="layui-input icon-date widget-date"></div>'.format('dateDefaultValue' + _json.tag + _json.id); 
 | 
                            $('#dateDefaultValue' + _json.id + ' .layui-input-block').empty(); 
 | 
                            $('#dateDefaultValue' + _json.id + ' .layui-input-block').append(_html); 
 | 
                            _json.dateFormat = data.value; 
 | 
                            var _v = layui.util.toDateString(new Date(), _json.dateFormat) + " - " + layui.util.toDateString(new Date(), _json.dateFormat); 
 | 
                            laydate.render({ 
 | 
                                elem: '#dateRangeDefaultValue' + _json.tag + _json.id, 
 | 
                                type: _json.dateType, 
 | 
                                format: _json.dateFormat, 
 | 
                                value:  _v, 
 | 
                                range:"-", 
 | 
                                done: function(value, date, endDate){ 
 | 
                                    _json.dateRangeDefaultValue = value; 
 | 
                                    that.components[_json.tag].update(_json,that); 
 | 
                                } 
 | 
                            }); 
 | 
                            _json.dateRangeDefaultValue = _v; 
 | 
                            that.components[_json.tag].update(_json,that); 
 | 
                        } 
 | 
                        break; 
 | 
                    case 'dateType': 
 | 
                        if (_json.tag === 'date') { 
 | 
                            var _html = '<div id="{0}" class="layui-input icon-date widget-date" style="line-height: 40px;"></div>'.format('dateDefaultValue' + _json.tag + _json.id); 
 | 
                            $('#dateDefaultValue' + _json.id + ' .layui-input-block').empty(); 
 | 
                            $('#dateDefaultValue' + _json.id + ' .layui-input-block').append(_html); 
 | 
                            _json.dateType = data.value; 
 | 
                            var dateClass = laydate.render({ 
 | 
                                elem: '#dateDefaultValue' + _json.tag + _json.id, 
 | 
                                type: _json.dateType, 
 | 
                                format: _json.dateFormat, 
 | 
                                value: new Date(), 
 | 
                                done: function(value, date, endDate){ 
 | 
                                    _json.dateDefaultValue = value; 
 | 
                                    that.components[_json.tag].update(_json,that); 
 | 
                                } 
 | 
                            }); 
 | 
                            _json.dateDefaultValue = dateClass.config.elem[0].innerText; 
 | 
                            that.components[_json.tag].update(_json,that); 
 | 
                        } 
 | 
                        if (_json.tag === 'dateRange') { 
 | 
                            var _html = '<div id="{0}" class="layui-input icon-date widget-date"></div>'.format('dateDefaultValue' + _json.tag + _json.id); 
 | 
                            $('#dateDefaultValue' + _json.id + ' .layui-input-block').empty(); 
 | 
                            $('#dateDefaultValue' + _json.id + ' .layui-input-block').append(_html); 
 | 
                            _json.dateType = data.value; 
 | 
                            laydate.render({ 
 | 
                                elem: '#dateRangeDefaultValue' + _json.tag + _json.id, 
 | 
                                type: _json.dateType, 
 | 
                                format: _json.dateFormat, 
 | 
                                value: _json.dateRangeDefaultValue, 
 | 
                                range:"-", 
 | 
                                done: function(value, date, endDate){ 
 | 
                                    _json.dateRangeDefaultValue = value; 
 | 
                                    that.components[_json.tag].update(_json,that); 
 | 
                                } 
 | 
                            }); 
 | 
                            that.components[_json.tag].update(_json,that); 
 | 
                        } 
 | 
                        break; 
 | 
                    case 'anim': 
 | 
                    case 'arrow': 
 | 
                    case 'buttonType': 
 | 
                    case 'buttonSize': 
 | 
                        _json[data.elem.name] = data.value; 
 | 
                        that.components[_json.tag].update(_json,that); 
 | 
                        break; 
 | 
                    default: 
 | 
                        break; 
 | 
                } 
 | 
            }); 
 | 
            //全局input框绑定 
 | 
            $(document).off('keyup', '#columnProperty .layui-input').on('keyup', '#columnProperty .layui-input', function () { 
 | 
                var _key = $(this).attr("name"); 
 | 
                var _value = $(this).val(); 
 | 
                var _json = options.selectItem; 
 | 
                switch (_key) { 
 | 
                    case 'label': 
 | 
                    case 'width': 
 | 
                    case 'interval': 
 | 
                    case 'iconPickerLimit': 
 | 
                    case 'iconPickerCellWidth': 
 | 
                    case 'buttonVlaue': 
 | 
                    case 'placeholder': 
 | 
                    case 'rateLength': 
 | 
                    case 'height': 
 | 
                    case 'iconPickerLimit': 
 | 
                        _json[_key] = _value; 
 | 
                        that.components[_json.tag].update(_json,that); 
 | 
                        break; 
 | 
                    case 'defaultValue': 
 | 
                        if (_json.tag === 'slider') { 
 | 
                            var resultNumber = that.replaceNumber(_value); 
 | 
                            _json[_key] = resultNumber; 
 | 
                            $(this).val(resultNumber); 
 | 
                            slider.render({ 
 | 
                                elem: '#' + _json.tag + _json.id, 
 | 
                                value: _json.defaultValue, //初始值 
 | 
                                min: _json.minValue, 
 | 
                                max: _json.maxValue, 
 | 
                                step: _json.stepValue, 
 | 
                                disabled: _json.disabled 
 | 
                            }); 
 | 
                        } else if (_json.tag == 'numberInput') { 
 | 
                            var resultNumber = that.replaceNumber(_value); 
 | 
                            _json[_key] = resultNumber; 
 | 
                            $(this).val(resultNumber); 
 | 
                            that.components[_json.tag].update(_json,that);//局部更新 
 | 
                        } else { 
 | 
                            _json[_key] = _value; 
 | 
                            that.components[_json.tag].update(_json,that); 
 | 
                        } 
 | 
                        break; 
 | 
                    case 'minValue': 
 | 
                    case 'maxValue': 
 | 
                    case 'stepValue': 
 | 
                        var resultNumber = that.replaceNumber(_value); 
 | 
                        _json[_key] = resultNumber; 
 | 
                        $(this).val(resultNumber); 
 | 
                        if (_json.tag === 'slider') { 
 | 
                            slider.render({ 
 | 
                                elem: '#' + _json.tag + _json.id, 
 | 
                                value: _json.defaultValue, //初始值 
 | 
                                min: _json.minValue, 
 | 
                                max: _json.maxValue, 
 | 
                                step: _json.stepValue, 
 | 
                                disabled: _json.disabled 
 | 
                            }); 
 | 
                        }else if (_json.tag == 'numberInput') { 
 | 
                            that.components[_json.tag].update(_json,that);//局部更新 
 | 
                        } 
 | 
                        break; 
 | 
                    case 'carousel-text': 
 | 
                    case 'carousel-value': 
 | 
                        var _options = []; 
 | 
                        $('#columnProperty .select-options').each(function () { 
 | 
                            _options.push({ 
 | 
                                text: $(this).find('input[name=carousel-text]').val(), 
 | 
                                value: $(this).find('input[name=carousel-value]').val(), 
 | 
                                checked: $(this).find('input[name=carousel]').hasAttribute("checked") 
 | 
                            }); 
 | 
                        }); 
 | 
                        _json.options = JSON.parse(JSON.stringify(_options)); 
 | 
                        that.components[_json.tag].update(_json,that);//局部更新 
 | 
                        break; 
 | 
                    case 'select-text': 
 | 
                    case 'select-value': 
 | 
                    case 'radio-text': 
 | 
                    case 'radio-value': 
 | 
                    case 'checkbox-text': 
 | 
                    case 'checkbox-value': 
 | 
                        //找到 id=key 下的 option值 
 | 
                        var _index = parseInt($(this).parent().parent().attr("data-index")); 
 | 
                        if (_key === 'select-text' || _key === 'radio-text' || _key === 'checkbox-text') { 
 | 
                            _json.options[_index].text = $(this).val(); 
 | 
                        } else { 
 | 
                            _json.options[_index].value = $(this).val(); 
 | 
                        } 
 | 
                        that.components[_json.tag].update(_json,that);//局部更新 
 | 
                        break; 
 | 
                    default: 
 | 
                        break; 
 | 
                } 
 | 
            }); 
 | 
            //全局开关绑定 
 | 
            form.on('switch', function (data) { 
 | 
                var _key = data.elem.name; 
 | 
                var _value = data.elem.checked ? true : false; 
 | 
                var _json = options.selectItem; 
 | 
                switch (_key) { 
 | 
                    case 'readonly': 
 | 
                    case 'disabled': 
 | 
                    case 'required': 
 | 
                    case 'half': 
 | 
                    case 'text': 
 | 
                    case 'switchValue': 
 | 
                    case 'isInput': 
 | 
                    case 'iconPickerSearch': 
 | 
                    case 'iconPickerPage': 
 | 
                    case 'isEnter': 
 | 
                    case 'isLabel': 
 | 
                    case 'autoplay': 
 | 
                    case 'hideLabel': 
 | 
                        _json[_key] = _value; 
 | 
                        that.components[_json.tag].update(_json,that); 
 | 
                        break; 
 | 
                    default: 
 | 
                        break; 
 | 
                } 
 | 
            }); 
 | 
  
 | 
            form.on('radio', function (data) { 
 | 
                var _json = options.selectItem; 
 | 
                switch (_json.tag) { 
 | 
                    case 'radio': 
 | 
                        var _index = parseInt($("#" + _json.id + " .layui-input-block div.layui-form-radio").index(data.othis[0])); 
 | 
                        if ($(data.othis[0]).parent().parent().parent().attr("id") === 'radio') { 
 | 
                            _index = parseInt($(data.othis[0]).parent().parent().attr("data-index")); 
 | 
                        } 
 | 
                        for (var i = 0; i < _json.options.length; i++) { 
 | 
                            if (i === _index) { 
 | 
                                _json.options[i].checked = true; 
 | 
                                continue; 
 | 
                            } 
 | 
                            _json.options[i].checked = false; 
 | 
                        } 
 | 
                        that.components[_json.tag].update(_json,that); 
 | 
                        break; 
 | 
                    case 'select': 
 | 
                    case 'carousel': 
 | 
                        var _index = parseInt(data.elem.closest('.layui-form-item').dataset.index); 
 | 
                        for (var i = 0; i < _json.options.length; i++) { 
 | 
                            if (i === _index) { 
 | 
                                _json.options[i].checked = true; 
 | 
                                _json.startIndex = i; 
 | 
                                continue; 
 | 
                            } 
 | 
                            _json.options[i].checked = false; 
 | 
                        } 
 | 
                        that.components[_json.tag].update(_json,that); 
 | 
                        break; 
 | 
                    default: 
 | 
                        break; 
 | 
                } 
 | 
            }); 
 | 
  
 | 
            form.on('checkbox', function (data) { 
 | 
                var _json = options.selectItem; 
 | 
                switch (_json.tag) { 
 | 
                    case 'checkbox': 
 | 
                        var _index = parseInt($("#" + _json.id + " .layui-input-block div.layui-form-checkbox").index(data.othis[0])); 
 | 
                        if ($(data.othis[0]).parent().parent().parent().attr("id") === 'checkbox') { 
 | 
                            _index = parseInt($(data.othis[0]).parent().parent().attr("data-index")); 
 | 
                        } 
 | 
                        for (var i = 0; i < _json.options.length; i++) { 
 | 
                            if (i === _index) { 
 | 
                                _json.options[i].checked = data.elem.checked; 
 | 
                                break; 
 | 
                            } 
 | 
                        } 
 | 
                        that.components[_json.tag].update(_json,that); 
 | 
                        break; 
 | 
                    default: 
 | 
                        break; 
 | 
                } 
 | 
            }); 
 | 
  
 | 
        } 
 | 
  
 | 
        /*--------------------------------------------------以下属于非修改内容---------------------------------------------------------*/ 
 | 
        /*--------------------------------------------------以下属于非修改内容---------------------------------------------------------*/ 
 | 
  
 | 
        Class.prototype.reload = function (id 
 | 
            , options) { 
 | 
            var that = this; 
 | 
            options = options || {};//如果是空的话,就赋值 {} 
 | 
            that.render(); 
 | 
        } 
 | 
  
 | 
  
 | 
        //核心入口 初始化一个 regionSelect 类 
 | 
        formDesigner.render = function (options) { 
 | 
            var ins = new Class(options); 
 | 
            return thisIns.call(ins); 
 | 
        }; 
 | 
  
 | 
        /** 
 | 
         * data 表示设计区数据 
 | 
         * dataSource 表示数据源即一个控件的数据来源 
 | 
         * 
 | 
         */ 
 | 
        Class.prototype.config = { 
 | 
            version: "1.0.0" 
 | 
            , formName: "表单示例" 
 | 
            , Author: "谁家没一个小强" 
 | 
            , formId: "formPreviewForm" 
 | 
            , generateId: 0 
 | 
            , data: [] 
 | 
            , dataSource: {} 
 | 
            , formData:{} 
 | 
            , globalDisable:false 
 | 
            , viewOrDesign:false 
 | 
            , formDefaultButton:true 
 | 
            , formProperty: {} 
 | 
            , selectItem: undefined 
 | 
        }; 
 | 
  
 | 
        /* 自动生成ID 当前页面自动排序*/ 
 | 
        Class.prototype.autoId = function (tag) { 
 | 
            var that = this, 
 | 
                options = that.config; 
 | 
            options.generateId = options.generateId + 1; 
 | 
            return tag + '_' + options.generateId; 
 | 
        } 
 | 
  
 | 
        //渲染视图 
 | 
        Class.prototype.render = function () { 
 | 
            var that = this 
 | 
                , options = that.config; 
 | 
            if (options.viewOrDesign) { 
 | 
                var that = this 
 | 
                    , options = that.config; 
 | 
                options.elem = $(options.elem); 
 | 
                options.id = options.id || options.elem.attr('id') || that.index; 
 | 
                options.elem.html('<form  class="layui-form  layui-form-pane" style="height:100%;" id="{0}" lay-filter="{0}"></form>'.format(options.formId)); 
 | 
                that.renderViewForm(); 
 | 
            } else { 
 | 
                options.elem = $(options.elem); 
 | 
                options.id = options.id || options.elem.attr('id') || that.index; 
 | 
                options.elem.html(staticField.formDesignerHtml); 
 | 
                /* 根据componentsLang渲染组件*/ 
 | 
                var componentsLangHtml = "" 
 | 
                $.each(formField.componentsLang 
 | 
                    , function (index 
 | 
                        , item) { 
 | 
                        componentsLangHtml += '<div class="components-title">{0} </div>'.format(item.name); 
 | 
                        componentsLangHtml += '<div class="components-draggable" id="{0}">'.format(item.component); 
 | 
                        $.each(item.list 
 | 
                            , function (index1 
 | 
                                , item1) { 
 | 
                                componentsLangHtml += '<ol data-tag="{0}"><div class="icon"><i class="{2}"></i></div><div class="name">{1}</div></ol>'.format(item1.key 
 | 
                                    , staticField.lang[item1.key], item1.icon); 
 | 
                            }); 
 | 
                        componentsLangHtml += '</div>'; 
 | 
                    }); 
 | 
                $('#components-form-list').append(componentsLangHtml); 
 | 
  
 | 
                /* 根据templateFormList渲染组件 默认显示5条*/ 
 | 
                var templateFormListHtml = "" 
 | 
                $.each(staticField.templateFormList 
 | 
                    , function (index 
 | 
                        , item) { 
 | 
                        if (index < 5) { 
 | 
                            templateFormListHtml += '<div class="item-body"><div class="item-img">'; 
 | 
                            templateFormListHtml += '<img src="{0}" lay-image-hover="" data-size="635,500" alt="" id="tip{1}"></div>'.format(item.imageUrl,index); 
 | 
                            templateFormListHtml += '<div class="item-desc"><span class="item-title">{1}</span><button type="button" class="right-button button--text" data-id="{0}"><span> 加载此模板</span></button></div></div>'.format(index,item.text); 
 | 
                            templateFormListHtml += '</div>'; 
 | 
                            $('#template-form-list').append(templateFormListHtml); 
 | 
                        } 
 | 
                    }); 
 | 
  
 | 
                // 加载模板事件注册 
 | 
                $('body').on('click', '.button--text', function (e) { 
 | 
                    var id = $(this).data('id'); 
 | 
                    layer.confirm('是否加载这个模板?加载后会覆盖设计器当前表单', function (index) { 
 | 
                        options.data = []; 
 | 
                        Object.assign(options.data, staticField.templateFormList[id].value) 
 | 
                        that.renderForm(); 
 | 
                        layer.close(index); 
 | 
                    }) 
 | 
                }); 
 | 
                //加载更多模板 
 | 
                flow.load({ 
 | 
                    elem: '#template-form-list' 
 | 
                    ,done: function(page, next){ 
 | 
                        //模拟插入 
 | 
                        setTimeout(function(){ 
 | 
                            var list = []; 
 | 
                            next(list.join(''), page < 2); //假设总页数为 6 
 | 
                        }, 500); 
 | 
                    } 
 | 
                }); 
 | 
                //排序事件注册 
 | 
                $.each(formField.componentsLang 
 | 
                    , function (index 
 | 
                        , item) { 
 | 
                        var sortable1 = Sortable.create(document.getElementById(item.component), { 
 | 
                            group: { 
 | 
                                name: 'formgroup', 
 | 
                                pull: 'clone', //克隆本区域元素到其他区域 
 | 
                                put: false, //禁止本区域实现拖动或拖入 
 | 
                            }, 
 | 
                            ghostClass: "ghost", 
 | 
                            sort: false, 
 | 
                            animation: 150, 
 | 
                            onEnd: function (evt) { 
 | 
                                // console.log('onEnd.foo:', [evt.item, evt.from]); 
 | 
                                // console.log(evt.oldIndex); 
 | 
                                // console.log(evt.newIndex); 
 | 
                                var itemEl = evt.item; 
 | 
                                // console.log(itemEl); 
 | 
                            } 
 | 
                        }); 
 | 
                    }); 
 | 
                //表单事件注册 
 | 
                var formItemSort = Sortable.create(document.getElementById("formDesignerForm"), { 
 | 
                    group: { 
 | 
                        name: 'formgroup' 
 | 
                    }, 
 | 
                    handle: '.widget-view-drag', 
 | 
                    ghostClass: "ghost", 
 | 
                    animation: 200, 
 | 
                    onAdd: function (evt) { 
 | 
                        if (options.data === undefined) { 
 | 
                            return; 
 | 
                        } 
 | 
                        if (typeof (options.data) === 'string') { 
 | 
                            options.data = JSON.parse(options.data); 
 | 
                        } 
 | 
                        //注意这里的一个bug,newIndex 第一次拖动也是1 第二次拖动也是1 
 | 
                        if (options.data.length === 0) { 
 | 
                            evt.newIndex = 0; 
 | 
                        } 
 | 
                        if (evt.item.dataset.id !== undefined) { 
 | 
                            /*根据id的新算法 复制一份副本 删除json中的节点 再插入节点*/ 
 | 
                            var _item = that.findJsonItem(options.data, evt.item.dataset.id); 
 | 
                            options.selectItem = _item; 
 | 
                            that.deleteJsonItem(options.data, evt.item.dataset.id); 
 | 
                            options.data.splice(evt.newIndex + 1, 0, _item); 
 | 
                        } else { 
 | 
                            var _id = that.autoId(evt.item.dataset.tag); 
 | 
                            /* 向现有的表单数据中增加新的数组元素 splice */ 
 | 
                            var _newitem = that.components[evt.item.dataset.tag].jsonData(_id, evt.newIndex,that); 
 | 
                            //如果是 grid 呢,需要知道几列 
 | 
                            options.selectItem = _newitem; 
 | 
                            options.data.splice(evt.newIndex, 0, _newitem); 
 | 
                        } 
 | 
                        //局部更新 只要更新 designer 设计区部分 
 | 
                        that.renderForm(); 
 | 
                    }, 
 | 
                    onEnd: function (evt) { 
 | 
                        var newIndex = evt.newIndex; 
 | 
                        var oldIndex = evt.oldIndex; 
 | 
                        //只有当to的目标容器是 formDesignerForm 
 | 
                        if (evt.to.id === 'formDesignerForm') { 
 | 
                            that.moveItem(evt.oldIndex, evt.newIndex); 
 | 
                        } 
 | 
                    } 
 | 
                }); 
 | 
            } 
 | 
            //注册预览事件 
 | 
            $('.previewForm').on('click', function () { 
 | 
                window.localStorage.setItem('layui_form_json', JSON.stringify(options.data)); 
 | 
                layer.confirm('请选择你要预览页面的方式?', { 
 | 
                    btn: ['弹窗','新页面'] //按钮 
 | 
                }, function(){ 
 | 
                    //iframe窗 
 | 
                    layer.open({ 
 | 
                        type: 2, 
 | 
                        title: '表单预览', 
 | 
                        btn: ['关闭'], //可以无限个按钮 
 | 
                        btn1: function (index, layero) { 
 | 
                            layer.close(index); 
 | 
                        }, 
 | 
                        closeBtn: 1, //不显示关闭按钮 
 | 
                        shade: [0], 
 | 
                        area: ['100%', '100%'], 
 | 
                        offset: 'auto', //右下角弹出 
 | 
                        anim: 2, 
 | 
                        content: ['./preview.html', 'yes'], //iframe的url,no代表不显示滚动条 
 | 
                        end: function () { //此处用于演示 
 | 
                            //加载结束 
 | 
                        } 
 | 
                    }); 
 | 
                }, function(){ 
 | 
                    window.open("./preview.html"); 
 | 
                }); 
 | 
  
 | 
            }); 
 | 
            $('body').append(staticField.importHtml); 
 | 
            $('body').append(staticField.exportHtml); 
 | 
            //注册导入数据 
 | 
            $('.importJson').on('click', function () { 
 | 
                document.getElementById('import-json-code').value = JSON.stringify(options.data, null, 4); 
 | 
                layer.open({ 
 | 
                    type: 1 
 | 
                    , title: 'JSON模板数据导入' 
 | 
                    , id: 'Lay_layer_importjsoncodeview' 
 | 
                    , content: $('.importjsoncodeview') 
 | 
                    , area: ['800px', '640px'] 
 | 
                    , shade: false 
 | 
                    , resize: false 
 | 
                    , success: function (layero, index) { 
 | 
                    } 
 | 
                    , end: function () { 
 | 
                        $('.importjsoncodeview').css("display","none") 
 | 
                    } 
 | 
                }); 
 | 
            }); 
 | 
            $('#copy-html-code').on('click', function () { 
 | 
                var Url2 = document.getElementById("generate-code-view"); 
 | 
                Url2.select(); // 选择对象 
 | 
                document.execCommand("Copy"); // 执行 
 | 
                layer.msg('复制成功'); 
 | 
            }); 
 | 
            $('#import-json-code').on('click', function () { 
 | 
                var _value = document.getElementById("import-json-code-view").value; 
 | 
                options.data = JSON.parse(_value); 
 | 
                that.renderForm(); 
 | 
                layer.closeAll(); 
 | 
                layer.msg('导入成功'); 
 | 
            }); 
 | 
            //注册导出数据 
 | 
            $('.exportJson').on('click', function () { 
 | 
                document.getElementById('generate-code-view').value = JSON.stringify(options.data, null, 4); 
 | 
  
 | 
                layer.open({ 
 | 
                    type: 1 
 | 
                    , title: 'JSON 数据导出' 
 | 
                    , id: 'Lay_layer_htmlcodeview' 
 | 
                    , content: $('.htmlcodeview') 
 | 
                    , area: ['800px', '640px'] 
 | 
                    , shade: false 
 | 
                    , resize: false 
 | 
                    , success: function (layero, index) { 
 | 
  
 | 
                    } 
 | 
                    , end: function () { 
 | 
                        $('.htmlcodeview').css("display","none") 
 | 
                    } 
 | 
                }); 
 | 
            }); 
 | 
  
 | 
            $('.generateCode').on('click', function () { 
 | 
                var _html = $('<div style="height:100%;width:100%;"></div>'); 
 | 
                var _script = $('<div style="height:100%;width:100%;"></div>');; 
 | 
                that.generateHtml(options.data, _html,_script); 
 | 
                var _htmlCode = staticField.htmlCode.format(_html.html(),_script.html()); 
 | 
                document.getElementById('generate-code-view').value = style_html(_htmlCode, 4, ' ', 400); 
 | 
                layer.open({ 
 | 
                    type: 1 
 | 
                    , title: 'HTML代码' 
 | 
                    , id: 'Lay_layer_htmlcodeview' 
 | 
                    , content: $('.htmlcodeview') 
 | 
                    , area: ['800px', '640px'] 
 | 
                    , shade: false 
 | 
                    , resize: false 
 | 
                    , success: function (layero, index) { 
 | 
                        layer.style(index, { 
 | 
                            marginLeft: -220 
 | 
                        }); 
 | 
                    } 
 | 
                    , end: function () { 
 | 
                        $('.htmlcodeview').css("display","none") 
 | 
                    } 
 | 
                }); 
 | 
  
 | 
            }); 
 | 
  
 | 
            $('.generateHtmlData').on('click', function () { 
 | 
                var _html = $('<div style="height:100%;width:100%;"></div>'); 
 | 
                var _script = $('<div style="height:100%;width:100%;"></div>'); 
 | 
                that.generateHtml(options.data, _html,_script); 
 | 
                return _html.html(); 
 | 
            }); 
 | 
  
 | 
            that.renderForm(); 
 | 
        } 
 | 
  
 | 
        //递归赋值 
 | 
        Class.prototype.replaceNumber = function (value) { 
 | 
            value = value.replace(/[^\d]/g,''); 
 | 
            if(''!=value){ 
 | 
                value = parseInt(value); 
 | 
            } 
 | 
            return value; 
 | 
        } 
 | 
  
 | 
        /* 触发 grid 的 sortablejs 事件*/ 
 | 
        Class.prototype.bindGridSortEvent = function (json) { 
 | 
            var that = this 
 | 
                , options = that.config; 
 | 
            var objs = $('#' + json.id + ' .widget-col-list'); 
 | 
            //遍历他下面的节点 
 | 
            for (var i = 0; i < objs.length; i++) { 
 | 
                var el = objs[i]; 
 | 
                var ops = { 
 | 
                    group: { 
 | 
                        name: 'formgroup' 
 | 
                    }, 
 | 
                    handle: '.widget-view-drag', 
 | 
                    ghostClass: "ghost", 
 | 
                    animation: 150, 
 | 
                    onAdd: function (evt) { 
 | 
                        var parentItem = JSON.parse(JSON.stringify(that.findJsonItem(options.data, evt.item.parentElement.parentElement.dataset.id))); 
 | 
                        var index = evt.newIndex; 
 | 
                        var colIndex = evt.item.parentElement.dataset.index; 
 | 
                        if (evt.item.dataset.id != undefined) { 
 | 
                            //表示从其他地方移动过来 
 | 
                            var _fromItem = JSON.parse(JSON.stringify(that.findJsonItem(options.data, evt.item.dataset.id))); 
 | 
                            var _oldid = _fromItem.id; 
 | 
                            _fromItem.id = that.autoId(_fromItem.tag); 
 | 
                            _fromItem.index = index; 
 | 
                            parentItem.columns[colIndex].list.splice(index + 1, 0, _fromItem); 
 | 
                            that.findAndCopyJson(options.data,parentItem,evt.item.parentElement.parentElement.dataset.id); 
 | 
                            that.deleteJsonItem(options.data, _oldid); 
 | 
                        } else { 
 | 
                            /* 向指定目标放入数据 splice */ 
 | 
                            var tag = evt.item.dataset.tag; 
 | 
                            _id = that.autoId(tag); 
 | 
                            var _newitem = that.components[tag].jsonData(_id, evt.newIndex,that); 
 | 
                            _newitem.index = index; 
 | 
                            parentItem.columns[colIndex].list.splice(index + 1, 0, _newitem); 
 | 
                            that.findAndCopyJson(options.data,parentItem,evt.item.parentElement.parentElement.dataset.id); 
 | 
                            options.selectItem = _newitem; 
 | 
                        } 
 | 
                        that.renderForm(); 
 | 
                    }, 
 | 
                    //拖动结束 
 | 
                    onEnd: function (evt) { 
 | 
                        //console.log(evt); 
 | 
                    }}; 
 | 
                var gridSortable = Sortable.create(el,ops); 
 | 
            } 
 | 
        }; 
 | 
  
 | 
        /* 重新渲染视图区*/ 
 | 
        Class.prototype.renderViewForm = function () { 
 | 
            var that = this 
 | 
                , options = that.config; 
 | 
            var elem = $('#' + options.formId); 
 | 
            //清空 
 | 
            elem.empty(); 
 | 
            that.renderComponents(options.data, elem); 
 | 
            if (options.formDefaultButton) { 
 | 
                elem.append(staticField.formDefaultButton); 
 | 
            } 
 | 
            that.setFormData(options.formData); 
 | 
            form.render();//一次性渲染表单 
 | 
        } 
 | 
  
 | 
        /* 生成 Html 代码 */ 
 | 
        Class.prototype.generateHtml = function (jsondata, elem, scriptHtml) { 
 | 
            var that = this 
 | 
                , options = that.config; 
 | 
            $.each(jsondata, function (index, item) { 
 | 
                elem.append(that.components[item.tag].generateHtml(item, that)); 
 | 
                if (item.tag === 'grid') { 
 | 
                    $.each(item.columns, function (index2, item2) { 
 | 
                        //获取当前的 DOM 对象 
 | 
                        if (item2.list.length > 0) { 
 | 
                            var elem2 = elem.find('#' + item.id + ' .widget-col-list.column' + item.id + index2); 
 | 
                            that.generateHtml(item2.list, elem2,scriptHtml); 
 | 
                        } 
 | 
                    }); 
 | 
                } else { 
 | 
                    scriptHtml.append(that.components[item.tag].generateScript(item, that)); 
 | 
                } 
 | 
            }); 
 | 
        } 
 | 
  
 | 
        //获取表单数据回调 
 | 
        Class.prototype.setFormData = function (json) { 
 | 
            var that = this, 
 | 
                options = that.config; 
 | 
            //获取表单区域所有值 
 | 
            for(let key  in json){ 
 | 
                if (key.indexOf("[")!= -1 && key.indexOf("]")!= -1) { 
 | 
                    var check = key.substring(0,key.indexOf("[")); 
 | 
                    var item = that.findJsonItem(options.data,check); 
 | 
                    if (item === undefined) { 
 | 
                        continue; 
 | 
                    } 
 | 
                    that.components[item.tag].update(item,that); 
 | 
                    continue; 
 | 
                } 
 | 
                var item = that.findJsonItem(options.data,key); 
 | 
                if (item === undefined) { 
 | 
                    continue; 
 | 
                } 
 | 
                switch (item.tag) { 
 | 
                    case 'editor': 
 | 
                    case 'rate': 
 | 
                    case 'slider': 
 | 
                    case 'labelGeneration': 
 | 
                    case 'iconPicker': 
 | 
                    case 'cron': 
 | 
                    case 'colorpicker': 
 | 
                        item.defaultValue = json[key]; 
 | 
                        that.components[item.tag].update(item,that); 
 | 
                        break; 
 | 
                    case 'sign': 
 | 
                        item.data = json[key]; 
 | 
                        that.components[item.tag].update(item,that); 
 | 
                        break; 
 | 
                    default: 
 | 
                        break; 
 | 
                } 
 | 
            } 
 | 
            if (options.viewOrDesign) { 
 | 
                form.val(options.formId,json); 
 | 
            } else { 
 | 
                form.val("formPreviewForm",json); 
 | 
            } 
 | 
            options.formData = json; 
 | 
            return json; 
 | 
        } 
 | 
  
 | 
        //获取表单数据回调 
 | 
        Class.prototype.getFormData = function () { 
 | 
            var that = this, 
 | 
                options = that.config; 
 | 
            //获取表单区域所有值 
 | 
            var json = form.val(that.config.formId); 
 | 
            for(let key  in iceEditorObjects){ 
 | 
                json[key] = iceEditorObjects[key].getHTML(); 
 | 
            } 
 | 
            for(let key  in labelGenerationObjects){ 
 | 
                json[key] = labelGenerationObjects[key].getData(); 
 | 
            } 
 | 
            for(let key  in signObjects){ 
 | 
                json[key] = signObjects[key]; 
 | 
            } 
 | 
            return json; 
 | 
        } 
 | 
  
 | 
  
 | 
        //获取表单数据回调 
 | 
        Class.prototype.getHtmlData = function () { 
 | 
            var that = this, 
 | 
                options = that.config; 
 | 
            var _html = $('<div style="height:100%;width:100%;"></div>'); 
 | 
            var _script = $('<div style="height:100%;width:100%;"></div>'); 
 | 
            that.generateHtml(options.data, _html,_script); 
 | 
            return _html.html(); 
 | 
        } 
 | 
  
 | 
        //递归改变禁用属性 
 | 
        Class.prototype.findItemToDisable = function (jsondata) { 
 | 
            var that = this 
 | 
                , options = that.config; 
 | 
            $.each(jsondata, function (index, item) { 
 | 
                if (item.tag === 'grid') { 
 | 
                    $.each(item.columns, function (index2, item2) { 
 | 
                        //获取当前的 DOM 对象 
 | 
                        if (item2.list.length > 0) { 
 | 
                            that.findItemToDisable(item2.list); 
 | 
                        } 
 | 
                    }); 
 | 
                } else { 
 | 
                    item.disabled = true; 
 | 
                    item.readonly = true; 
 | 
                } 
 | 
            }); 
 | 
        } 
 | 
  
 | 
        //递归改变禁用属性 
 | 
        Class.prototype.findItemToNoDisable = function (jsondata) { 
 | 
            var that = this 
 | 
                , options = that.config; 
 | 
            $.each(jsondata, function (index, item) { 
 | 
                if (item.tag === 'grid') { 
 | 
                    $.each(item.columns, function (index2, item2) { 
 | 
                        //获取当前的 DOM 对象 
 | 
                        if (item2.list.length > 0) { 
 | 
                            that.findItemToNoDisable(item2.list); 
 | 
                        } 
 | 
                    }); 
 | 
                } else { 
 | 
                    item.disabled = false; 
 | 
                    item.readonly = false; 
 | 
                } 
 | 
            }); 
 | 
        } 
 | 
  
 | 
        //全局禁用 
 | 
        Class.prototype.globalDisable = function () { 
 | 
            var that = this 
 | 
                , options = that.config; 
 | 
            that.findItemToDisable(options.data); 
 | 
            that.renderForm(); 
 | 
        } 
 | 
  
 | 
        //全局取消禁用 
 | 
        Class.prototype.globalNoDisable = function () { 
 | 
            var that = this 
 | 
                , options = that.config; 
 | 
            that.findItemToNoDisable(options.data); 
 | 
            that.renderForm(); 
 | 
        } 
 | 
  
 | 
        /* 重新渲染设计区*/ 
 | 
        Class.prototype.renderForm = function () { 
 | 
            var that = this 
 | 
                , options = that.config; 
 | 
            if (options.viewOrDesign) { 
 | 
                var that = this 
 | 
                    , options = that.config; 
 | 
                options.elem = $(options.elem); 
 | 
                options.id = options.id || options.elem.attr('id') || that.index; 
 | 
                options.elem.html('<form  class="layui-form  layui-form-pane" style="height:100%;" id="{0}" lay-filter="{0}"></form>'.format(options.formId)); 
 | 
                that.renderViewForm(); 
 | 
            } else { 
 | 
                var elem = $('#formDesignerForm'); 
 | 
                //清空 
 | 
                elem.empty(); 
 | 
                //渲染组件 
 | 
                that.renderComponents(options.data, elem); 
 | 
                //选中的节点只有一个 
 | 
                if (options.selectItem !== undefined) { 
 | 
                    var _draghtml = '<div class="widget-view-action"  id="widget-view-action"><i class="layui-icon layui-icon-file"></i><i class="layui-icon layui-icon-delete"></i></div><div class="widget-view-drag" id="widget-view-drag"><i class="layui-icon layui-icon-screen-full"></i></div>'; 
 | 
                    var len = $('#' + options.selectItem.id).children().length; 
 | 
                    if ($('#widget-view-action')) {//已存在 
 | 
                        $('#widget-view-action').remove(); 
 | 
                    } 
 | 
                    $('#' + options.selectItem.id).children(len - 1).after(_draghtml); 
 | 
                    $('#formDesignerForm .layui-form-item').removeClass('active'); 
 | 
                    //给当前元素增加class 
 | 
                    $('#' + options.selectItem.id).addClass('active'); 
 | 
                    that.bindPropertyEvent(options.selectItem); 
 | 
                } 
 | 
                /* 向 节点点击添加 click 动作 */ 
 | 
                that.addClick(); 
 | 
                /* 向 拷贝 删除 按钮添加 click 动作 */ 
 | 
                that.addCopyDeleteClick(); 
 | 
                form.render(); 
 | 
            } 
 | 
        } 
 | 
  
 | 
        /* 递归渲染组件 */ 
 | 
        Class.prototype.renderComponents = function (jsondata, elem) { 
 | 
            var that = this 
 | 
                , options = that.config; 
 | 
            $.each(jsondata, function (index, item) { 
 | 
                item.index = index;//设置index 仅仅为了传递给render对象,如果存在下级子节点那么 子节点的也要变动 
 | 
                if (options.selectItem === undefined) { 
 | 
  
 | 
                    that.components[item.tag].render(item, false,elem,that); 
 | 
                } else { 
 | 
                    if (options.selectItem.id === item.id) { 
 | 
                        that.components[item.tag].render(item, true,elem,that); 
 | 
                        //显示当前的属性 
 | 
                        that.components[item.tag].property(item,that); 
 | 
                        that.bindPropertyEvent(item); 
 | 
                    } else { 
 | 
                        that.components[item.tag].render(item, false,elem,that); 
 | 
                    } 
 | 
                } 
 | 
                if (item.tag === 'grid') { 
 | 
                    that.bindGridSortEvent(item); 
 | 
                    $.each(item.columns, function (index2, item2) { 
 | 
                        //获取当前的 DOM 对象 
 | 
                        if (item2.list.length > 0) { 
 | 
                            var elem2 = elem.find('#' + item.id + ' .widget-col-list.column' + item.id + index2); 
 | 
                            that.renderComponents(item2.list, elem2); 
 | 
                        } 
 | 
                    }); 
 | 
                } 
 | 
            }); 
 | 
        } 
 | 
  
 | 
        /* 加入copy选项删除 */ 
 | 
        Class.prototype.addCopyDeleteClick = function () { 
 | 
            var that = this 
 | 
                , options = that.config; 
 | 
            if (options.data === undefined) { 
 | 
                return; 
 | 
            } 
 | 
            if (typeof (options.data) === 'string') { 
 | 
                options.data = JSON.parse(options.data); 
 | 
            } 
 | 
            //复制当前节点 
 | 
            $('#formDesignerForm  .layui-form-item .widget-view-action .layui-icon-file').on('click', function (e) { 
 | 
                e.stopPropagation(); 
 | 
                //在json中插入 
 | 
                if (options.data === undefined) { 
 | 
                    return; 
 | 
                } 
 | 
                if (typeof (options.data) === 'string') { 
 | 
                    options.data = JSON.parse(options.data); 
 | 
                } 
 | 
                var _id = document.elementFromPoint(e.pageX, e.pageY).parentElement.parentElement.dataset.id; 
 | 
                if (_id !== undefined) { 
 | 
                    options.selectItem = that.copyJsonAfterItem(options.data, _id); 
 | 
                } 
 | 
                that.renderForm(); 
 | 
            }); 
 | 
            $('#formDesignerForm  .layui-form-item .layui-icon-delete').on('click', function (e) { 
 | 
                e.stopPropagation(); 
 | 
                //获取当前组件的组件id 
 | 
                var _id = document.elementFromPoint(e.pageX, e.pageY).parentElement.parentElement.dataset.id; 
 | 
                if (_id !== undefined) { 
 | 
                    options.selectItem = that.deleteJsonItem(options.data, _id); 
 | 
                } 
 | 
                that.renderForm(); 
 | 
            }); 
 | 
        }; 
 | 
  
 | 
        /* 如果是grid布局控件 就显示不一样的样式 */ 
 | 
        Class.prototype.addClick = function (evt) { 
 | 
            var that = this 
 | 
                , options = that.config; 
 | 
            $("#formDesignerForm .layui-form-item").on('click', function (e) { 
 | 
                //当 div 为嵌套关系的时候 阻止事件冒泡 
 | 
                e.preventDefault(); 
 | 
                e.stopPropagation(); 
 | 
                var index = parseInt($(this)[0].dataset.index); 
 | 
                var _id = $(this)[0].dataset.id; 
 | 
                options.selectItem = that.findJsonItem(options.data, _id); 
 | 
                var tag = $(this)[0].dataset.tag; 
 | 
  
 | 
                //显示当前的属性 
 | 
                that.components[tag].property(options.selectItem,that); 
 | 
                that.bindPropertyEvent(); 
 | 
                //移除 #formDesignerForm .layui-form-item 下所有的 active 
 | 
                $('#formDesignerForm .layui-form-item').removeClass('active'); 
 | 
                //给当前元素增加class 
 | 
                $(this).addClass('active'); 
 | 
                var _draghtml = '<div class="widget-view-action"  id="widget-view-action"><i class="layui-icon layui-icon-file"></i><i class="layui-icon layui-icon-delete"></i></div><div class="widget-view-drag" id="widget-view-drag"><i class="layui-icon layui-icon-screen-full"></i></div>'; 
 | 
                var len = $(this).children().length; 
 | 
                if (len <= 12) { 
 | 
                    //先删除元素 
 | 
                    $("#formDesignerForm .layui-form-item .widget-view-action").remove(); 
 | 
                    $("#formDesignerForm .layui-form-item .widget-view-drag").remove(); 
 | 
                    if ($('#widget-view-action')) {//已存在 
 | 
                        $('#widget-view-action').remove(); 
 | 
                    } 
 | 
                    $(this).children(len - 1).after(_draghtml); 
 | 
                } 
 | 
                /* 向 拷贝 删除 按钮添加 click 动作 */ 
 | 
                that.addCopyDeleteClick(); 
 | 
                //重新渲染 
 | 
                form.render(); 
 | 
            }); 
 | 
        }; 
 | 
  
 | 
        //移动视图 
 | 
        Class.prototype.moveItem = function (oldIndex,newIndex) { 
 | 
            var that = this 
 | 
                , options = that.config; 
 | 
            var newData = options.data[newIndex]; 
 | 
            var oldData = options.data[oldIndex]; 
 | 
            options.data[newIndex] = oldData; 
 | 
            options.data[oldIndex] = newData; 
 | 
        } 
 | 
  
 | 
        /* 根据id返回json中的节点*/ 
 | 
        Class.prototype.findJsonItem = function (json, id) { 
 | 
            var that = this, 
 | 
                options = that.config; 
 | 
            for (var i = 0; i < json.length; i++) { 
 | 
                if (json[i].id === id) { 
 | 
                    return json[i]; 
 | 
                } else { 
 | 
                    if (json[i].tag === 'grid') { 
 | 
                        for (var j = 0; j < json[i].columns.length; j++) { 
 | 
                            if (json[i].columns[j].list.length > 0) { 
 | 
                                var _item = that.findJsonItem(json[i].columns[j].list, id); 
 | 
                                if (_item) { 
 | 
                                    return _item; 
 | 
                                } 
 | 
                            } 
 | 
                        } 
 | 
                    } 
 | 
                } 
 | 
            } 
 | 
            return undefined; 
 | 
        } 
 | 
  
 | 
  
 | 
  
 | 
        /* 复制json中的节点并返回上一个节点*/ 
 | 
        Class.prototype.copyJsonAfterItem = function (json, id) { 
 | 
            var that = this, 
 | 
                options = that.config; 
 | 
            for (var i = 0; i < json.length; i++) { 
 | 
                if (json[i].id === id) { 
 | 
                    var _newjson = JSON.parse(JSON.stringify(json[i])); 
 | 
                    _newjson.id = that.autoId(_newjson.tag); 
 | 
                    json.splice(i + 1, 0, _newjson); 
 | 
                    return json[i]; 
 | 
                } else { 
 | 
                    if (json[i].tag === 'grid') { 
 | 
                        for (var j = 0; j < json[i].columns.length; j++) { 
 | 
                            if (json[i].columns[j].list.length > 0) { 
 | 
                                var _item = that.copyJsonAfterItem(json[i].columns[j].list, id); 
 | 
                                if (_item) { 
 | 
                                    return _item; 
 | 
                                } 
 | 
                            } 
 | 
                        } 
 | 
                    } 
 | 
                } 
 | 
  
 | 
            } 
 | 
            return undefined; 
 | 
        }; 
 | 
  
 | 
        /* 删除json中的节点并返回上一个节点*/ 
 | 
        Class.prototype.deleteJsonItem = function (json, id) { 
 | 
            var that = this, 
 | 
                options = that.config; 
 | 
            for (var i = 0; i < json.length; i++) { 
 | 
                if (json[i].id === id) { 
 | 
                    json.splice(i, 1); 
 | 
                    if (i > 0) { 
 | 
                        return json[i - 1]; 
 | 
                    } 
 | 
                    break; 
 | 
                }else { 
 | 
                    if (json[i].tag === 'grid') { 
 | 
                        for (var j = 0; j < json[i].columns.length; j++) { 
 | 
                            if (json[i].columns[j].list.length > 0) { 
 | 
                                that.deleteJsonItem(json[i].columns[j].list, id); 
 | 
                            } 
 | 
                        } 
 | 
                    } 
 | 
                } 
 | 
  
 | 
  
 | 
            } 
 | 
            return undefined; 
 | 
        }; 
 | 
  
 | 
        /* 自动生成ID 当前页面自动排序*/ 
 | 
        Class.prototype.autoId = function (tag) { 
 | 
            var that = this, 
 | 
                options = that.config; 
 | 
            options.generateId = options.generateId + 1; 
 | 
            var findJsonItem = that.findJsonItem(options.data,tag + '_' + options.generateId); 
 | 
            if (findJsonItem != undefined) { 
 | 
                return that.autoId(tag); 
 | 
            } else { 
 | 
                return tag + '_' + options.generateId; 
 | 
            } 
 | 
        } 
 | 
  
 | 
        //递归赋值 
 | 
        Class.prototype.findAndCopyJson = function (json,parentItem,id) { 
 | 
            var that = this; 
 | 
            for (var i = 0; i < json.length; i++) { 
 | 
                if (json[i].id === id) { 
 | 
                    json[i] = parentItem; 
 | 
                } else { 
 | 
                    if (json[i].tag === 'grid') { 
 | 
                        for (var j = 0; j < json[i].columns.length; j++) { 
 | 
                            if (json[i].columns[j].list.length > 0) { 
 | 
                                that.findAndCopyJson(json[i].columns[j].list,parentItem,id); 
 | 
                            } 
 | 
                        } 
 | 
                    } 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
  
 | 
  
 | 
        /* 此方法最后一道 commom.js 中 */ 
 | 
        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('formDesigner' 
 | 
            , formDesigner); 
 | 
    }); 
 |