'.format(json.id, json.tag, selected ? 'active' : '', json.index);
_html += '
'.format(json.label,json.labelWidth,_hideLabel);
if (json.hideLabel) {
_html += '
';
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 += '
'.format(json.id + json.tag ,json.buttonIcon,json.buttonVlaue);
}else {
_html += '
'.format(json.id + json.tag ,json.buttonIcon,json.buttonVlaue);
}
if (json.data !== "") {
_html += '
'.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 = '
'.format(json.id, json.tag, selected ? 'active' : '', json.index);
_html += '
{0}: '.format(json.label,json.labelWidth,_hideLabel);
if (json.hideLabel) {
_html += '
';
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 = '
'.format(json.id, json.tag, selected ? 'active' : '', json.index,json.width);
_html += '
{0}: '.format(json.label,json.width,_hideLabel);
_html += '
';
_html += '
';
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 = '
'.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 = '
'.format(json.id, json.tag, selected ? 'active' : '', json.index,json.width);
_html += '
{0}: '.format(json.label,json.width,_hideLabel);
_html += '
';
_html += '
';
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 = '
';
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 += '
'.format(i, json.index, colClass,json.id);
//some html
_html += '
';
}
$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 = '
';
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 += '
';
$('#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 += '
';
}
$('#' + 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 += '
';
break;
case 'readonly':
var yes = "只读";
var no = "可写";
_html += '
';
break;
case 'disabled':
case 'hideLabel':
var yes = "隐藏";
var no = "显示";
_html += '
';
break;
case 'required':
var yes = "必填";
var no = "可选";
_html += '
';
break;
case 'expression':
_html += '
';
break;
case 'autoplay':
case 'iconPickerSearch':
case 'iconPickerPage':
case 'isInput':
var yes = "是";
var no = "否";
_html += '
';
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 += '
';
break;
case 'width':
case 'labelWidth':
_html += '
';
break;
case 'menu':
_html += '
';
break;
case 'id':
_html += '
';
break;
case 'switchValue':
_html += '
';
break;
case 'dateType':
_html += '
';
break;
case 'dateFormat':
_html += '
';
break;
case 'contents':
//处理
_html += '
';
_html += '
'.format(json.tag);
//选项
for (var i = 0; i < json.contents.length; i++) {
_html += '
'.format(i);
_html += '
';
_html += ' '.format(json.tag, json.contents[i]);
_html += '
';
_html += '
';
_html += ' ';
_html += ' ';
_html += '
';
_html += '
';
//向 .option .layui-inline 添加drag事件并且必须设在 contents-option-drag 中才能拖动
}
_html += '
';
break;
case 'options':
//处理
_html += '
';
_html += '
'.format(json.tag);
//选项
for (var i = 0; i < json.options.length; i++) {
_html += '
';
//向 .option .layui-inline 添加drag事件并且必须设在 select-option-drag 中才能拖动
}
_html += '
';
break;
case 'anim':
//处理
_html += '
';
break;
case 'arrow':
//处理
_html += '
';
break;
case 'buttonType':
//处理
_html += '
';
break;
case 'buttonSize':
//处理
_html += '
';
break;
case 'dataMaxValue':
case 'dataMinValue':
_html += '
';
break;
case 'dateDefaultValue':
_html += '
';
break;
case 'dateRangeDefaultValue':
_html += '
';
break;
case 'buttonIcon':
_html += '
';
break;
case 'whiteSpace':
_html += '
';
break;
case 'colorSelection':
_html += '
';
break;
case 'columns':
var columnCount = 2;
columnCount = json[key].length;
//处理
_html += '
';
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 = '
'.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 = '
'.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 = '
'.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 = '
'.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('
'.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 += '
{0}
'.format(item.name);
componentsLangHtml += '
'.format(item.component);
$.each(item.list
, function (index1
, item1) {
componentsLangHtml += '
{1}
'.format(item1.key
, staticField.lang[item1.key], item1.icon);
});
componentsLangHtml += '
';
});
$('#components-form-list').append(componentsLangHtml);
/* 根据templateFormList渲染组件 默认显示5条*/
var templateFormListHtml = ""
$.each(staticField.templateFormList
, function (index
, item) {
if (index < 5) {
templateFormListHtml += '
';
templateFormListHtml += '
'.format(item.imageUrl,index);
templateFormListHtml += '
{1} 加载此模板
'.format(index,item.text);
templateFormListHtml += '
';
$('#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 = $('
');;
that.generateHtml(options.data, _html,_script);
console.log(_html.html());
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")
}
});
});
$('.generateHtml').on('click', function () {
var _html = $('
');
that.generateHtml(options.data, _html,_script);
console.log(_html.html());
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.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('
'.format(options.formId));
that.renderViewForm();
} else {
var elem = $('#formDesignerForm');
//清空
elem.empty();
//渲染组件
that.renderComponents(options.data, elem);
//选中的节点只有一个
if (options.selectItem !== undefined) {
var _draghtml = '
';
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 = '
';
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);
});