var width = $(window).width();
var $mcolumns = {};
var $children = {};
var $primaryTable;
var $childTable;
var chars = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
(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;
window.loadJsUrl = data.loadJsUrl;
window.initMethod = data.initMethod;
/*主表解析*/
$mcolumns = data.maindata[0].columns;
if ($mcolumns != null) {
var $main = $('
');
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);
});
$primaryTable = $mcolumns[0].table;
$("#iform").append($main);
}
/*从表解析*/
$children = data.children;
if ($children != null && $children.columns !== undefined && window.taskid === '') {
//console.log(JSON.stringify($children));
var $child = $('');
var $crow = renderGirdtable($children);
$child.append($crow);
$childTable = $children.columns[0].table;
$("#iform").append($child);
}
/*所有时间控件初始化*/
setTimeout("initDateTime()", 500);
/*所有下拉控件初始化*/
setTimeout("initChosen()", 500);
};
})(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 = '*';
break;
}
return res;
}
//初始化文本框
function renderText(control) {
var $proportion = control.proportion;
var $row = $('');
//var $title = $('');
var $title = $('');
if (control.title !== '') {
$row.append($title);
}
var $control = $('');
if (!!$control && !!control.verify && control.verify !== "") {
$control.attr('isvalid', 'yes').attr('checkexpession', control.verify);
}
var $width = parseInt(width / $proportion) - 160;
var $compont = $('');
$compont.append($control);
$row.append($compont);
return $row;
}
//初始化表格文本框
function renderTableText(control) {
var $row = $(' | ');
var $control = $('');
if (!!$control && !!control.verify && control.verify !== "") {
$control.attr('isvalid', 'yes').attr('checkexpession', control.verify);
}
$row.append($control);
return $row;
}
//初始化表格文本域
function renderTableTextarea(control) {
var $row = $(' | ');
var $control = $('');
if (!!$control && !!control.verify && control.verify !== "") {
$control.attr('isvalid', 'yes').attr('checkexpession', control.verify);
}
$row.append($control);
return $row;
}
//初始化表格文本域
function renderTableTextareaByData(control, dfvalue) {
var $row = $(' | ');
var $control = $('');
if (!!$control && !!control.verify && control.verify !== "") {
$control.attr('isvalid', 'yes').attr('checkexpession', control.verify);
}
if (dfvalue !== undefined && dfvalue != null) {
$control.val(dfvalue);
}
$row.append($control);
return $row;
}
//初始化表格文本框
function renderTableTextByData(control, dfvalue) {
var $row = $(' | ');
var $control = $('');
if (!!$control && !!control.verify && control.verify !== "") {
$control.attr('isvalid', 'yes').attr('checkexpession', control.verify);
}
if (dfvalue !== undefined && dfvalue != null) {
$control.attr('value', dfvalue);
}
$row.append($control);
return $row;
}
//初始化文本域
function renderTextarea(control) {
var $proportion = control.proportion;
var $row = $('');
//var $title = $('');
var $title = $('');
if (control.title !== '') {
$row.append($title);
}
var $control = $('');;
if (!!$control && !!control.verify && control.verify !== "") {
$control.attr('isvalid', 'yes').attr('checkexpession', control.verify);
}
var $width = parseInt(width / $proportion) - 160;
var $compont = $('');
$compont.append($control);
$row.append($compont);
return $row;
}
//初始化单选项
function renderRadio(control) {
var $proportion = control.proportion;
var $row = $('');
//var $title = $('');
var $title = $('');
if (control.title !== '') {
$row.append($title);
}
var $compont = $('');
/*获取数据字典或者数据源数据*/
if (control.dataSourceType === '1') {
//数据字典
var url = "/DropDown/FindDataSource?key=" + control.dataSource;
window.$.ajax({
url: url,
type: "get",
dataType: "json",
async: false,
success: function (data) {
if (data.length > 0) {
$.each(data, function (index, obj) {
$compont.append($(''));
});
}
}
});
}
else {
//数据字典
window.$.ajax({
url: control.dataSourceUrl,
type: "get",
dataType: "json",
async: false,
success: function (data) {
if (data.length > 0) {
$.each(data, function (index, obj) {
$compont.append($(' '));
});
}
}
});
}
$row.append($compont);
return $row;
}
//初始化多选项
function renderCheckbox(control) {
var $proportion = control.proportion;
var $row = $('');
//var $title = $('');
var $title = $('');
if (control.title !== '') {
$row.append($title);
}
var $compont = $('');
/*获取数据字典或者数据源数据*/
if (control.dataSourceType === '1') {
//数据字典
var url = "/DropDown/FindDataSource?key=" + control.dataSource;
window.$.ajax({
url: url,
type: "get",
dataType: "json",
async: false,
success: function (data) {
$.each(data, function (index, obj) {
$compont.append($(''));
});
}
});
}
else {
//数据字典
window.$.ajax({
url: control.dataSourceUrl,
type: "get",
dataType: "json",
async: false,
success: function (data) {
$.each(data, function (index, obj) {
$compont.append($(''));
});
}
});
}
$row.append($compont);
return $row;
}
//初始化下拉框
function renderCombox(control) {
var $proportion = control.proportion;
var $row = $('');
//var $title = $('');
var $title = $('');
if (control.title !== '') {
$row.append($title);
}
var $control = $('');;
if (!!$control && !!control.verify && control.verify !== "") {
$control.attr('isvalid', 'yes').attr('checkexpession', control.verify);
}
var $width = parseInt(width / $proportion) - 160;
var $compont = $('');
$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",
async: false,
success: function (data) {
$.each(data, function (index, obj) {
$control.append("");
});
}
});
}
else {
//数据字典
window.$.ajax({
url: control.dataSourceUrl,
type: "get",
dataType: "json",
async: false,
success: function (data) {
$.each(data, function (index, obj) {
$control.append("");
});
}
});
}
return $row;
}
//初始化下拉框
function renderTableCombox(control) {
var $row = $(' | ');
var $control = $('');;
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",
async: false,
success: function (data) {
if (data.length > 0) {
$.each(data, function (index, obj) {
$control.append("");
});
}
}
});
}
else {
//数据字典
window.$.ajax({
url: control.dataSourceUrl,
type: "get",
dataType: "json",
async: false,
success: function (data) {
if (data.length > 0) {
$.each(data, function (index, obj) {
$control.append("");
});
}
}
});
}
return $row;
}
//初始化下拉框
function renderTableComboxByData(control, dfvalue) {
var $row = $(' | ');
var $control = $('');;
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",
async: false,
success: function (data) {
if (data.length > 0) {
$.each(data, function (index, obj) {
if (obj.Value == dfvalue)
$control.append("");
else
$control.append("");
});
}
}
});
}
else {
//数据字典
window.$.ajax({
url: control.dataSourceUrl,
type: "get",
dataType: "json",
async: false,
success: function (data) {
if (data.length > 0) {
$.each(data, function (index, obj) {
if (obj.Value == dfvalue)
$control.append("");
else
$control.append("");
});
}
}
});
}
return $row;
}
//初始化日期控件
function renderDatetime(control) {
var $proportion = control.proportion;
var $row = $('');
//var $title = $('');
var $title = $('');
if (control.title !== '') {
$row.append($title);
}
var dateformat = 'yyyy-MM-dd';
if (control.dateformat == "1") {
dateformat = 'yyyy-MM-dd HH:mm:ss';
}
else if (control.dateformat == "2") {
dateformat = 'yyyy-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 = $('');
if (!!$control && !!control.verify && control.verify !== "") {
$control.attr('isvalid', 'yes').attr('checkexpession', control.verify);
}
var $width = parseInt(width / $proportion) - 160;
var $compont = $('');
$compont.append($control);
$row.append($compont);
return $row;
}
//初始化日期控件
function renderTableDatetime(control) {
var $row = $(' | ');
var dateformat = 'yyyy-MM-dd';
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 $controlId = generateMixed(32);
var $control = $('');
if (!!$control && !!control.verify && control.verify !== "") {
$control.attr('isvalid', 'yes').attr('checkexpession', control.verify);
}
$row.append($control);
return $row;
}
//初始化日期控件
function renderTableDatetimeByData(control, dfvalue) {
var $row = $(' | ');
var dateformat = 'yyyy-MM-dd';
var datedefault = "";
var datetime;
if (dfvalue.indexOf("/Date") == 0) {
datetime = eval('new ' + (dfvalue.replace(/\//g, '')));
} else {
datetime = new Date(dfvalue);
}
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 $controlId = generateMixed(32);
var $control = $('');
if (!!$control && !!control.verify && control.verify !== "") {
$control.attr('isvalid', 'yes').attr('checkexpession', control.verify);
}
$row.append($control);
return $row;
}
//初始化编辑表格
function renderGirdtable(control) {
var $row = $('');
var $tableTitle = $('
' +
'' + control.title + '
');
$row.append($tableTitle);
var $table = $('');
var $headRow = findTabHead(control.columns);
$table.append($headRow);
var $tabelContent = createTabBody(control.columns, false);
$table.append($tabelContent);
$row.append($table);
return $row;
}
//初始化编辑表格
function renderGirdtableByData(control, data) {
var $row = $('');
var $tableTitle = $('
' +
'' + control.title + '
');
$row.append($tableTitle);
var $table = $('');
var $headRow = findTabHead(control.columns);
$table.append($headRow);
$.each(data, function (index, item) {
var $tabelContent = createTabBodyByData(control.columns, item);
$table.append($tabelContent);
});
$row.append($table);
return $row;
}
//获取编辑表格的表头
function findTabHead(columns) {
var $row = $('
');
$.each(columns, function (index, obj) {
$row.append($('' + obj.title + ' | '));
});
if (window.IsFirstStep)
$row.append($(' | '));
else
$row.append($('# | '));
return $row;
}
//构建表格行
function createTabBody(columns, isAdd) {
var $row = $('
');
$.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));
break;
case "textarea":
$row.append(renderTableTextarea(obj));
break;
}
});
var $hidden = $(' | ');
if (window.IsFirstStep == false)
$hidden = $(' | ');
$row.append($hidden);
return $row;
}
//构建表格行
function createTabBodyByData(columns, item) {
var $row = $('
');
$.each(columns, function (index, obj) {
var $dfvalue = item[obj.field];
switch (obj.type) {
case "input":
$row.append(renderTableTextByData(obj, $dfvalue));
break;
case "combox":
$row.append(renderTableComboxByData(obj, $dfvalue));
break;
case "datetime":
$row.append(renderTableDatetimeByData(obj, $dfvalue));
break;
case "textarea":
$row.append(renderTableTextareaByData(obj, $dfvalue));
break;
}
});
var $defvalue = item["DefineId"];
if (!!$defvalue && $defvalue.length > 0) {
$row.children("td:first").append('');
}
var $keyvalue = item["id"];
if ($keyvalue == '' || $keyvalue == undefined)
$keyvalue = item["Id"];
if ($keyvalue == '' || $keyvalue == undefined)
$keyvalue = item["ID"];
if (window.IsFirstStep)
var $hidden = $(' | ');
else $hidden = $(' | ');
$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;
};
function generateMixed(n) {
var res = "";
for (var i = 0; i < n; i++) {
var id = Math.ceil(Math.random() * 25);
res += chars[id];
}
return res;
}
compute = function () {
console.log("日期控件选择后执行的方法,请自己实现");
}
function initDateTime() {
$('#iform').find('.datetime').each(function () {
var $format = $(this).attr("format");
var $dateFormat = "date";
if ($format == "1")
$dateFormat = "datetime"
else if ($format == "2")
$dateFormat = "month"
if ($.trim(this.id) !== '') {
//时间选择器
laydate.render({
elem: '#' + this.id,
event: "focus",
type: $dateFormat,
done: function (value, date, endDate) {
compute(value, date, endDate);
}
});
}
});
}
function initChosen() {
$(".chosen-select").chosen({ search_contains: false });
}