/* * 描 述:自定义表单渲染 */ (function ($, learun) { "use strict"; 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 getTdValidatorHtml(verify) { var res = ""; if (verify != "") { res = 'isvalid="yes" checkexpession="' + verify + '"'; } return res; } $.fn.lrCustmerFormRender = function (data) { var $this = $(this); var compontsMap = {}; var girdCompontMap = {}; var iLen = data.length; var $ul; var $container; if (iLen > 1) { var html = '
'; html += '
'; html += '
'; html += '
'; $this.append(html); $('#lr_form_tabs').lrFormTab(); $ul = $('#lr_form_tabs ul'); $container = $('#lr_tab_content'); } else { $container = $this; } $this[0].compontsMap = compontsMap; for (var i = 0; i < iLen; i++) { var $content = $('
'); $container.append($content); for (var j = 0, jLen = data[i].componts.length; j < jLen; j++) { var compont = data[i].componts[j]; if (!!compont.table && !!compont.field) { compontsMap[compont.table + compont.field.toLowerCase()] = compont.id; } var $row = $('
'); var $title = $('
' + compont.title + getFontHtml(compont.verify) + '
'); if (compont.title != '') { $row.append($title); } $content.append($row); var $compont = $.lrFormComponents[compont.type].renderTable(compont, $row); if (!!$compont && !!compont.verify && compont.verify != "") { $compont.attr('isvalid', 'yes').attr('checkexpession', compont.verify); } if (compont.type == 'girdtable') { girdCompontMap[compont.table] = compont; } } if (iLen > 1) {// 如果大于一个选项卡,需要添加选项卡,否则不需要 $ul.append('
  • ' + data[i].text + '
  • '); $content.addClass('tab-pane').attr('id', data[i].id); if (i == 0) { $ul.find('li').trigger('click'); } } } $('.lr-form-wrap').lrscroll(); return girdCompontMap; }; // 验证自定义表单数据 $.lrValidCustmerform = function () { var validateflag = true; var validHelper = learun.validator; $('body').find("[isvalid=yes]").each(function () { var $this = $(this); if ($this.parent().find('.lr-field-error-info').length > 0) { validateflag = false; return true; } var checkexpession = $(this).attr("checkexpession"); var checkfn = validHelper['is' + checkexpession]; if (!checkexpession || !checkfn) { return false; } var errormsg = $(this).attr("errormsg") || ""; var value; var type = $this.attr('type'); if (type == 'lrselect') { value = $this.lrselectGet(); } else if (type == 'formselect') { value = $this.lrformselectGet(); } else { value = $this.val(); } var r = { code: true, msg: '' }; if (checkexpession == 'LenNum' || checkexpession == 'LenNumOrNull' || checkexpession == 'LenStr' || checkexpession == 'LenStrOrNull') { var len = $this.attr("length"); r = checkfn(value, len); } else { r = checkfn(value); } if (!r.code) { validateflag = false; $.lrValidformMessage($this, errormsg + r.msg); } }); return validateflag; } // 获取自定义表单数据 $.fn.lrGetCustmerformData = function () { var resdata = {}; $(this).find('input,select,textarea,.lr-select,.lr-formselect,.lrUploader-wrap,.jfgrid-layout,.edui-default').each(function (r) { var $self = $(this); var id = $self.attr('id') || $self.attr('name'); if (!!id) { var type = $self.attr('type'); switch (type) { case "checkbox": if ($self.is(":checked")) { if (resdata[id] != undefined && resdata[id] != '') { resdata[id] += ','; } else { resdata[id] = ''; } resdata[id] += $self.val(); } break; case "radio": if ($self.is(":checked")) { resdata[id] = $self.val(); } break; case "lrselect": resdata[id] = $self.lrselectGet(); break; case "formselect": resdata[id] = $self.lrformselectGet(); break; case "lr-Uploader": resdata[id] = $self.lrUploaderGet(); break; default: if ($self.hasClass('lr-currentInfo')) { resdata[id] = $self[0].lrvalue; } else if ($self.hasClass('jfgrid-layout')) { var _resdata = []; var _resdataTmp = $self.jfGridGet('rowdatas'); for (var i = 0, l = _resdataTmp.length; i < l; i++) { _resdata.push(_resdataTmp[i]); } resdata[id] = JSON.stringify(_resdata); } else if ($self.hasClass('edui-default')) { if ($self[0].ue) { resdata[id] = $self[0].ue.getContent(null, null, true); } } else { var value = $self.val(); resdata[id] = $.trim(value); } break; } } }); return resdata; } // 设置自定义表单数据 $.fn.lrSetCustmerformData = function (data, tablename) {// 设置表单数据 var compontsMap = $(this)[0].compontsMap; for (var field in data) { var value = data[field]; var id = compontsMap[tablename + field]; var $obj = $('#' + id); if (!$obj.length || $obj.length == 0) { var vs = (value + "").split(','); for (var i = 0, l = vs.length; i < l; i++) { _setvalue(vs[i]); } function _setvalue(_value) { var _$obj = $('input[name="' + id + '"][value="' + _value + '"]'); if (!!_$obj.length && _$obj.length > 0) { if (!_$obj.is(":checked")) { _$obj.trigger('click'); } } else { setTimeout(function () { _setvalue(_value); }, 100); } } } else { var type = $obj.attr('type'); if ($obj.hasClass("lr-input-wdatepicker")) { type = "datepicker"; } switch (type) { case "lrselect": $obj.lrselectSet(value); break; case "formselect": $obj.lrformselectSet(value); break; case "datepicker": $obj.val(learun.formatDate(value, 'yyyy-MM-dd')); break; case "lr-Uploader": $obj.lrUploaderSet(value); break; default: if ($obj.hasClass('lr-currentInfo-user')) { $obj[0].lrvalue = value; $obj.val(''); learun.clientdata.getAsync('user', { key: value, callback: function (item, op) { op.obj.val(item.name); }, obj: $obj }); } else if ($obj.hasClass('lr-currentInfo-company')) { $obj[0].lrvalue = value; $obj.val(''); learun.clientdata.getAsync('company', { key: value, callback: function (_data, op) { op.obj.val(_data.name); }, obj: $obj }); } else if ($obj.hasClass('lr-currentInfo-department')) { $obj[0].lrvalue = value; $obj.val(''); learun.clientdata.getAsync('department', { key: value, callback: function (item, op) { op.obj.val(item.name); }, obj: $obj }); } else if ($obj.hasClass('lr-currentInfo-guid')) { $obj[0].lrvalue = value; $obj.val(value); } else if ($obj.hasClass('edui-default')) { ueSet($obj[0].ue, value); //$obj[0].ue.setContent(value); } else { $obj.val(value); } break; } } } }; function ueSet(ue, content) { ue.ready(function() { ue.setContent(content); }); } })(jQuery, top.learun);