var width = $(window).width();
|
var $children = {};
|
(function ($) {
|
"use strict";
|
$.fn.FormRender = function (data) {
|
|
$("#txtTitle").html(data.title);
|
window.saveurl = data.saveurl;
|
window.submiturl = data.submiturl;
|
window.agreeurl = data.agreeurl;
|
window.disagreeurl = data.disagreeurl;
|
window.loadurl = data.loadurl;
|
if (data.initMethod != null && data.initMethod != undefined && data.loadJsUrl !== '') {
|
document.write("<script src='" + data.initMethod + "'><\/script>");
|
}
|
if (data.loadJsUrl != null && data.loadJsUrl != undefined && data.loadJsUrl !== '') {
|
document.write("<script src='" + data.loadJsUrl + "'><\/script>");
|
}
|
|
var $mcolumns = data.maindata[0].columns;
|
if ($mcolumns != null) {
|
var $main = $('<div class="row main" ></div>');
|
var $row;
|
$.each($mcolumns, function (index, obj) {
|
switch (obj.type) {
|
case "text":
|
$row = renderText(obj);
|
break;
|
case "textarea":
|
$row = renderTextarea(obj);
|
break;
|
case "radio":
|
$row = renderRadio(obj);
|
break;
|
case "checkbox":
|
$row = renderCheckbox(obj);
|
break;
|
case "combox":
|
$row = renderCombox(obj);
|
break;
|
case "datetime":
|
$row = renderDatetime(obj, index);
|
break;
|
}
|
$main.append($row);
|
});
|
$("#iform").append($main);
|
}
|
$children = data.children;
|
if ($children != null && $children !== undefined) {
|
//console.log(JSON.stringify($children));
|
var $child = $('<div class="row grid" ></div>');
|
var $crow = renderGirdtable($children);
|
$child.append($crow);
|
$("#iform").append($child);
|
}
|
$('#iform').find('.datetime').each(function () {
|
if ($.trim(this.id) !== '') {
|
//时间选择器
|
laydate.render({
|
elem: '#' + this.id,
|
event: "focus",
|
format: "yyyy-MM-dd"
|
});
|
}
|
});
|
};
|
})(jQuery, top.zou);
|
|
function getFontHtml(verify) {
|
var res = "";
|
switch (verify) {
|
case "NotNull":
|
case "Num":
|
case "Email":
|
case "EnglishStr":
|
case "Phone":
|
case "Fax":
|
case "Mobile":
|
case "MobileOrPhone":
|
case "Uri":
|
res = '<span style="color:red;">*</span>';
|
break;
|
}
|
return res;
|
}
|
|
//初始化文本框
|
function renderText(control) {
|
var $proportion = control.proportion;
|
var $row = $('<div class="col-xs-' + (12 / parseInt($proportion)) + ' col-sm-' + (12 / parseInt($proportion)) + '" ></div>');
|
//var $title = $('<label class="control-label form-item-title">' + control.title + getFontHtml(control.verify) + '</label>');
|
var $title = $('<label class="control-label form-item-title">' + control.title + '</label>');
|
if (control.title !== '') {
|
$row.append($title);
|
}
|
var $control = $('<input id="' + control.table + "_" + control.field + '" name="' + control.table + "." + control.field + '" type="text" class="form-control" />');
|
if (!!$control && !!control.verify && control.verify !== "") {
|
$control.attr('isvalid', 'yes').attr('checkexpession', control.verify);
|
}
|
|
var $width = parseInt(width / $proportion) - 160;
|
var $compont = $('<div class="form-item-control" style="width:' + $width + 'px;"></div>');
|
$compont.append($control);
|
$row.append($compont);
|
return $row;
|
}
|
|
//初始化表格文本框
|
function renderTableText(control) {
|
var $row = $('<td></td>');
|
var $control = $('<input id="' + control.table + "_" + control.field + '" name="' + control.table + "." + control.field + '" type="text" class="form-control" />');
|
if (!!$control && !!control.verify && control.verify !== "") {
|
$control.attr('isvalid', 'yes').attr('checkexpession', control.verify);
|
}
|
$row.append($control);
|
return $row;
|
}
|
|
//初始化文本域
|
function renderTextarea(control) {
|
var $proportion = control.proportion;
|
var $row = $('<div class="col-xs-' + (12 / parseInt($proportion)) + ' col-sm-' + (12 / parseInt($proportion)) + '" ></div>');
|
//var $title = $('<label class="control-label form-item-title">' + control.title + getFontHtml(control.verify) + '</label>');
|
var $title = $('<label class="control-label form-item-title">' + control.title + '</label>');
|
if (control.title !== '') {
|
$row.append($title);
|
}
|
var $control = $('<textarea id="' + control.table + "_" + control.field + '" name="' + control.table + "." + control.field + '" class="form-control" ' + 'style="height:90px;" />');;
|
if (!!$control && !!control.verify && control.verify !== "") {
|
$control.attr('isvalid', 'yes').attr('checkexpession', control.verify);
|
}
|
var $width = parseInt(width / $proportion) - 160;
|
var $compont = $('<div class="form-item-control" style="width:' + $width + 'px;"></div>');
|
$compont.append($control);
|
$row.append($compont);
|
return $row;
|
}
|
|
//初始化单选项
|
function renderRadio(control) {
|
var $proportion = control.proportion;
|
var $row = $('<div class="col-xs-' + (12 / parseInt($proportion)) + ' col-sm-' + (12 / parseInt($proportion)) + '" ></div>');
|
//var $title = $('<label class="col-sm-3 col-xs-3 control-label form-item-title">' + control.title + getFontHtml(control.verify) + '</label>');
|
var $title = $('<label class="col-sm-3 col-xs-3 control-label form-item-title">' + control.title + '</label>');
|
|
if (control.title !== '') {
|
$row.append($title);
|
}
|
var $compont = $('<div class="z-radio"></div>');
|
/*获取数据字典或者数据源数据*/
|
if (control.dataSourceType === '1') {
|
//数据字典
|
var url = "/DropDown/FindDataSource?key=" + control.dataSource;
|
window.$.ajax({
|
url: url,
|
type: "get",
|
dataType: "json",
|
success: function (data) {
|
$.each(data, function (index, obj) {
|
$compont.append($('<label><input name="' + control.id + '" value="' + obj.Value + '" type="radio">' + obj.Text + '</label>'));
|
});
|
}
|
});
|
}
|
else {
|
//数据字典
|
window.$.ajax({
|
url: control.dataSourceUrl,
|
type: "get",
|
dataType: "json",
|
success: function (data) {
|
$.each(data, function (index, obj) {
|
$compont.append($('<label><input name="' + control.id + '" value="' + obj.Value + '" type="radio">' + obj.Text + '</label> '));
|
});
|
}
|
});
|
}
|
$row.append($compont);
|
return $row;
|
}
|
|
//初始化多选项
|
function renderCheckbox(control) {
|
var $proportion = control.proportion;
|
var $row = $('<div class="col-xs-' + (12 / parseInt($proportion)) + ' col-sm-' + (12 / parseInt($proportion)) + '" ></div>');
|
//var $title = $('<label class="col-sm-3 col-xs-3 control-label form-item-title">' + control.title + getFontHtml(control.verify) + '</label>');
|
var $title = $('<label class="col-sm-3 col-xs-3 control-label form-item-title">' + control.title + '</label>');
|
|
if (control.title !== '') {
|
$row.append($title);
|
}
|
var $compont = $('<div class="z-checkbox"></div>');
|
/*获取数据字典或者数据源数据*/
|
if (control.dataSourceType === '1') {
|
//数据字典
|
var url = "/DropDown/FindDataSource?key=" + control.dataSource;
|
window.$.ajax({
|
url: url,
|
type: "get",
|
dataType: "json",
|
success: function (data) {
|
$.each(data, function (index, obj) {
|
$compont.append($('<label><input name="' + control.id + '" value="' + obj.Value + '" type="checkbox">' + obj.Text + '</label>'));
|
});
|
}
|
});
|
}
|
else {
|
//数据字典
|
window.$.ajax({
|
url: control.dataSourceUrl,
|
type: "get",
|
dataType: "json",
|
success: function (data) {
|
$.each(data, function (index, obj) {
|
$compont.append($('<label><input name="' + control.id + '" value="' + obj.Value + '" type="checkbox">' + obj.Text + '</label>'));
|
});
|
}
|
});
|
}
|
$row.append($compont);
|
return $row;
|
}
|
|
//初始化下拉框
|
function renderCombox(control) {
|
var $proportion = control.proportion;
|
var $row = $('<div class="col-xs-' + (12 / parseInt($proportion)) + ' col-sm-' + (12 / parseInt($proportion)) + '" ></div>');
|
//var $title = $('<label class="col-sm-3 col-xs-3 control-label form-item-title">' + control.title + getFontHtml(control.verify) + '</label>');
|
var $title = $('<label class="col-sm-3 col-xs-3 control-label form-item-title">' + control.title + '</label>');
|
|
if (control.title !== '') {
|
$row.append($title);
|
}
|
var $control = $('<select id="' + control.table + "_" + control.field + '" name="' + control.table + "." + control.field + '" class="form-control"></select>');;
|
if (!!$control && !!control.verify && control.verify !== "") {
|
$control.attr('isvalid', 'yes').attr('checkexpession', control.verify);
|
}
|
var $width = parseInt(width / $proportion) - 160;
|
var $compont = $('<div class="form-item-control" style="width:' + $width + 'px;"></div>');
|
$compont.append($control);
|
$row.append($compont);
|
/*获取数据字典或者数据源数据*/
|
if (control.dataSourceType === '1') {
|
//数据字典
|
var url = "/DropDown/FindDataSource?key=" + control.dataSource;
|
window.$.ajax({
|
url: url,
|
type: "get",
|
dataType: "json",
|
success: function (data) {
|
$.each(data, function (index, obj) {
|
$("#" + control.table + "_" + control.field).append("<option value='" + obj.Value + "'>" + obj.Text + "</option>");
|
});
|
}
|
});
|
}
|
else {
|
//数据字典
|
window.$.ajax({
|
url: control.dataSourceUrl,
|
type: "get",
|
dataType: "json",
|
success: function (data) {
|
$.each(data, function (index, obj) {
|
$("#" + control.table + "_" + control.field).append("<option value='" + obj.Value + "'>" + obj.Text + "</option>");
|
});
|
}
|
});
|
}
|
return $row;
|
}
|
|
//初始化下拉框
|
function renderTableCombox(control) {
|
|
var $row = $('<td></td>');
|
var $control = $('<select id="' + control.table + "_" + control.field + '" name="' + control.table + "." + control.field + '" class="form-control"></select>');;
|
if (!!$control && !!control.verify && control.verify !== "") {
|
$control.attr('isvalid', 'yes').attr('checkexpession', control.verify);
|
}
|
$row.append($control);
|
/*获取数据字典或者数据源数据*/
|
if (control.dataSourceType === '1') {
|
//数据字典
|
var url = "/DropDown/FindDataSource?key=" + control.dataSource;
|
window.$.ajax({
|
url: url,
|
type: "get",
|
dataType: "json",
|
success: function (data) {
|
$.each(data, function (index, obj) {
|
$("#" + $keyValue).append("<option value='" + obj.Value + "'>" + obj.Text + "</option>");
|
});
|
}
|
});
|
}
|
else {
|
//数据字典
|
window.$.ajax({
|
url: control.dataSourceUrl,
|
type: "get",
|
dataType: "json",
|
success: function (data) {
|
$.each(data, function (index, obj) {
|
$("#" + control.id).append("<option value='" + obj.Value + "'>" + obj.Text + "</option>");
|
});
|
}
|
});
|
}
|
return $row;
|
}
|
|
//初始化日期控件
|
function renderDatetime(control) {
|
var $proportion = control.proportion;
|
var $row = $('<div class="col-xs-' + (12 / parseInt($proportion)) + ' col-sm-' + (12 / parseInt($proportion)) + '" ></div>');
|
//var $title = $('<label class="control-label form-item-title">' + control.title + getFontHtml(control.verify) + '</label>');
|
var $title = $('<label class="control-label form-item-title">' + control.title + '</label>');
|
|
if (control.title !== '') {
|
$row.append($title);
|
}
|
|
var dateformat = control.dateformat === '0' ? 'yyyy-MM-dd' : 'yyyy-MM-dd HH:mm';
|
var datedefault = "";
|
var datetime = new Date();
|
switch (control.dfvalue) {
|
case "0":
|
datedefault = datetime.DateAdd('d', -1);
|
break;
|
case "1":
|
datedefault = datetime.DateAdd('d', 0);
|
break;
|
case "2":
|
datedefault = datetime.DateAdd('d', 1);;
|
break;
|
}
|
datedefault = formatDate(datetime, dateformat.replace(/H/g, 'h'));
|
var $control = $('<input value="' + datedefault + '" id="' + control.table + "_" + control.field + '" name="' + control.table + "." + control.field + '" type="text" class="form-control datetime" />');
|
|
if (!!$control && !!control.verify && control.verify !== "") {
|
$control.attr('isvalid', 'yes').attr('checkexpession', control.verify);
|
}
|
var $width = parseInt(width / $proportion) - 160;
|
var $compont = $('<div class="form-item-control" style="width:' + $width + 'px;"></div>');
|
$compont.append($control);
|
$row.append($compont);
|
|
return $row;
|
}
|
|
//初始化日期控件
|
function renderTableDatetime(control) {
|
var $row = $('<td></td>');
|
var dateformat = control.dateformat === '0' ? 'yyyy-MM-dd' : 'yyyy-MM-dd HH:mm';
|
var datedefault = "";
|
var datetime = new Date();
|
switch (control.dfvalue) {
|
case "0":
|
datedefault = datetime.DateAdd('d', -1);
|
break;
|
case "1":
|
datedefault = datetime.DateAdd('d', 0);
|
break;
|
case "2":
|
datedefault = datetime.DateAdd('d', 1);;
|
break;
|
}
|
datedefault = formatDate(datetime, dateformat.replace(/H/g, 'h'));
|
var $control = $('<input value="' + datedefault + '" id="' + control.table + "_" + control.field + '" name="' + control.table + "." + control.field + '" type="text" class="form-control datetime" />');
|
|
if (!!$control && !!control.verify && control.verify !== "") {
|
$control.attr('isvalid', 'yes').attr('checkexpession', control.verify);
|
}
|
$row.append($control);
|
|
return $row;
|
}
|
|
//初始化编辑表格
|
function renderGirdtable(control) {
|
var $row = $('<div class="col-xs-' + (12 / parseInt(control.proportion)) + ' col-sm-' + (12 / parseInt(control.proportion)) + '" ></div>');
|
var $tableTitle = $('<hr style="height:1px;border:none;border-top:1px dashed #ccc;" />' +
|
'<h3 style="text-align:center;font-family: 微软雅黑;">' + control.title + '</h3>');
|
$row.append($tableTitle);
|
|
var $table = $('<table class="table table-hover" style="border:1px solid #ddd;" id="girdtable"></table>');
|
var $headRow = findTabHead(control.columns);
|
$table.append($headRow);
|
for (var i = 0; i < 5; i++) {
|
var $tabelContent = createTabBody(control.columns);
|
$table.append($tabelContent);
|
}
|
$row.append($table);
|
return $row;
|
}
|
|
//获取编辑表格的表头
|
function findTabHead(columns) {
|
var $row = $('<tr class="head"></tr>');
|
$.each(columns, function (index, obj) {
|
$row.append($('<td style="width:108px; text-align: left;"><div class="th-inner ">' + obj.title + '</div><div class="fht-cell"></div></td>'));
|
});
|
$row.append($('<td style="width:108px; text-align: left;"><label class="widget-title"><a title="添加" class="subtradd_js">新建</a></label></td>'));
|
return $row;
|
}
|
|
//构建表格行
|
function createTabBody(columns) {
|
var $row = $('<tr class="body"></tr>');
|
$.each(columns, function (index, obj) {
|
switch (obj.type) {
|
case "input":
|
$row.append(renderTableText(obj));
|
break;
|
case "combox":
|
$row.append(renderTableCombox(obj));
|
break;
|
case "datetime":
|
$row.append(renderTableDatetime(obj, index));
|
break;
|
}
|
});
|
var $hidden = $('<td><input type="hidden" id="id" name="id"><a title="删除" class="subtrdel_js">删除</a></td>');
|
$row.append($hidden);
|
return $row;
|
}
|
|
formatDate = function (date, fmt) {
|
if (!date) return;
|
if (!fmt) fmt = "yyyy-MM-dd";
|
switch (typeof date) {
|
case "string":
|
date = new Date(date.replace(/-/, "/"));
|
break;
|
case "number":
|
date = new Date(date);
|
break;
|
}
|
if (!date instanceof Date) return;
|
var o = {
|
"M+": date.getMonth() + 1, //月份
|
"d+": date.getDate(), //日
|
"h+": date.getHours() % 12 === 0 ? 12 : date.getHours() % 12, //小时
|
"H+": date.getHours(), //小时
|
"m+": date.getMinutes(), //分
|
"s+": date.getSeconds(), //秒
|
"q+": Math.floor((date.getMonth() + 3) / 3), //季度
|
"S": date.getMilliseconds() //毫秒
|
};
|
var week = {
|
"0": "\u65e5",
|
"1": "\u4e00",
|
"2": "\u4e8c",
|
"3": "\u4e09",
|
"4": "\u56db",
|
"5": "\u4e94",
|
"6": "\u516d"
|
};
|
if (/(y+)/.test(fmt)) {
|
fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
|
}
|
if (/(E+)/.test(fmt)) {
|
fmt = fmt.replace(RegExp.$1, ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? "\u661f\u671f" : "\u5468") : "") + week[date.getDay() + ""]);
|
}
|
for (var k in o) {
|
if (o.hasOwnProperty(k)) {
|
if (new RegExp("(" + k + ")").test(fmt)) {
|
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
|
}
|
}
|
}
|
return fmt;
|
}
|
|
// 创建一个GUID
|
newGuid = function () {
|
var guid = "";
|
for (var i = 1; i <= 32; i++) {
|
var n = Math.floor(Math.random() * 16.0).toString(16);
|
guid += n;
|
if ((i === 8) || (i === 12) || (i === 16) || (i === 20)) guid += "";
|
}
|
return guid;
|
};
|