wms-formrender.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300
  1. /*
  2. * 描 述:自定义表单渲染
  3. */
  4. (function ($, learun) {
  5. "use strict";
  6. function getFontHtml(verify) {
  7. var res = "";
  8. switch (verify) {
  9. case "NotNull":
  10. case "Num":
  11. case "Email":
  12. case "EnglishStr":
  13. case "Phone":
  14. case "Fax":
  15. case "Mobile":
  16. case "MobileOrPhone":
  17. case "Uri":
  18. res = '<font face="宋体">*</font>';
  19. break;
  20. }
  21. return res;
  22. }
  23. function getTdValidatorHtml(verify) {
  24. var res = "";
  25. if (verify != "") {
  26. res = 'isvalid="yes" checkexpession="' + verify + '"';
  27. }
  28. return res;
  29. }
  30. $.fn.lrCustmerFormRender = function (data) {
  31. var $this = $(this);
  32. var compontsMap = {};
  33. var girdCompontMap = {};
  34. var iLen = data.length;
  35. var $ul;
  36. var $container;
  37. if (iLen > 1) {
  38. var html = '<div class="lr-form-tabs" id="lr_form_tabs">';
  39. html += '<ul class="nav nav-tabs"></ul></div>';
  40. html += '<div class="tab-content lr-tab-content" id="lr_tab_content">';
  41. html += '</div>';
  42. $this.append(html);
  43. $('#lr_form_tabs').lrFormTab();
  44. $ul = $('#lr_form_tabs ul');
  45. $container = $('#lr_tab_content');
  46. }
  47. else {
  48. $container = $this;
  49. }
  50. $this[0].compontsMap = compontsMap;
  51. for (var i = 0; i < iLen; i++) {
  52. var $content = $('<div class="lr-form-wrap"></div>');
  53. $container.append($content);
  54. for (var j = 0, jLen = data[i].componts.length; j < jLen; j++) {
  55. var compont = data[i].componts[j];
  56. if (!!compont.table && !!compont.field) {
  57. compontsMap[compont.table + compont.field.toLowerCase()] = compont.id;
  58. }
  59. var $row = $('<div class="col-xs-' + (12 / parseInt(compont.proportion)) + ' lr-form-item" ></div>');
  60. var $title = $(' <div class="lr-form-item-title">' + compont.title + getFontHtml(compont.verify) + '</div>');
  61. if (compont.title != '') {
  62. $row.append($title);
  63. }
  64. $content.append($row);
  65. var $compont = $.lrFormComponents[compont.type].renderTable(compont, $row);
  66. if (!!$compont && !!compont.verify && compont.verify != "") {
  67. $compont.attr('isvalid', 'yes').attr('checkexpession', compont.verify);
  68. }
  69. if (compont.type == 'girdtable') {
  70. girdCompontMap[compont.table] = compont;
  71. }
  72. }
  73. if (iLen > 1) {// 如果大于一个选项卡,需要添加选项卡,否则不需要
  74. $ul.append('<li><a data-value="' + data[i].id + '">' + data[i].text + '</a></li>');
  75. $content.addClass('tab-pane').attr('id', data[i].id);
  76. if (i == 0) {
  77. $ul.find('li').trigger('click');
  78. }
  79. }
  80. }
  81. $('.lr-form-wrap').lrscroll();
  82. return girdCompontMap;
  83. };
  84. // 验证自定义表单数据
  85. $.lrValidCustmerform = function () {
  86. var validateflag = true;
  87. var validHelper = learun.validator;
  88. $('body').find("[isvalid=yes]").each(function () {
  89. var $this = $(this);
  90. if ($this.parent().find('.lr-field-error-info').length > 0) {
  91. validateflag = false;
  92. return true;
  93. }
  94. var checkexpession = $(this).attr("checkexpession");
  95. var checkfn = validHelper['is' + checkexpession];
  96. if (!checkexpession || !checkfn) { return false; }
  97. var errormsg = $(this).attr("errormsg") || "";
  98. var value;
  99. var type = $this.attr('type');
  100. if (type == 'lrselect') {
  101. value = $this.lrselectGet();
  102. }
  103. else if (type == 'formselect') {
  104. value = $this.lrformselectGet();
  105. }
  106. else {
  107. value = $this.val();
  108. }
  109. var r = { code: true, msg: '' };
  110. if (checkexpession == 'LenNum' || checkexpession == 'LenNumOrNull' || checkexpession == 'LenStr' || checkexpession == 'LenStrOrNull') {
  111. var len = $this.attr("length");
  112. r = checkfn(value, len);
  113. } else {
  114. r = checkfn(value);
  115. }
  116. if (!r.code) {
  117. validateflag = false;
  118. $.lrValidformMessage($this, errormsg + r.msg);
  119. }
  120. });
  121. return validateflag;
  122. }
  123. // 获取自定义表单数据
  124. $.fn.lrGetCustmerformData = function () {
  125. var resdata = {};
  126. $(this).find('input,select,textarea,.lr-select,.lr-formselect,.lrUploader-wrap,.jfgrid-layout,.edui-default').each(function (r) {
  127. var $self = $(this);
  128. var id = $self.attr('id') || $self.attr('name');
  129. if (!!id) {
  130. var type = $self.attr('type');
  131. switch (type) {
  132. case "checkbox":
  133. if ($self.is(":checked")) {
  134. if (resdata[id] != undefined && resdata[id] != '') {
  135. resdata[id] += ',';
  136. }
  137. else {
  138. resdata[id] = '';
  139. }
  140. resdata[id] += $self.val();
  141. }
  142. break;
  143. case "radio":
  144. if ($self.is(":checked")) {
  145. resdata[id] = $self.val();
  146. }
  147. break;
  148. case "lrselect":
  149. resdata[id] = $self.lrselectGet();
  150. break;
  151. case "formselect":
  152. resdata[id] = $self.lrformselectGet();
  153. break;
  154. case "lr-Uploader":
  155. resdata[id] = $self.lrUploaderGet();
  156. break;
  157. default:
  158. if ($self.hasClass('lr-currentInfo')) {
  159. resdata[id] = $self[0].lrvalue;
  160. }
  161. else if ($self.hasClass('jfgrid-layout')) {
  162. var _resdata = [];
  163. var _resdataTmp = $self.jfGridGet('rowdatas');
  164. for (var i = 0, l = _resdataTmp.length; i < l; i++) {
  165. _resdata.push(_resdataTmp[i]);
  166. }
  167. resdata[id] = JSON.stringify(_resdata);
  168. }
  169. else if ($self.hasClass('edui-default')) {
  170. if ($self[0].ue) {
  171. resdata[id] = $self[0].ue.getContent(null, null, true);
  172. }
  173. }
  174. else {
  175. var value = $self.val();
  176. resdata[id] = $.trim(value);
  177. }
  178. break;
  179. }
  180. }
  181. });
  182. return resdata;
  183. }
  184. // 设置自定义表单数据
  185. $.fn.lrSetCustmerformData = function (data, tablename) {// 设置表单数据
  186. var compontsMap = $(this)[0].compontsMap;
  187. for (var field in data) {
  188. var value = data[field];
  189. var id = compontsMap[tablename + field];
  190. var $obj = $('#' + id);
  191. if (!$obj.length || $obj.length == 0) {
  192. var vs = (value + "").split(',');
  193. for (var i = 0, l = vs.length; i < l; i++) {
  194. _setvalue(vs[i]);
  195. }
  196. function _setvalue(_value) {
  197. var _$obj = $('input[name="' + id + '"][value="' + _value + '"]');
  198. if (!!_$obj.length && _$obj.length > 0) {
  199. if (!_$obj.is(":checked")) {
  200. _$obj.trigger('click');
  201. }
  202. }
  203. else {
  204. setTimeout(function () {
  205. _setvalue(_value);
  206. }, 100);
  207. }
  208. }
  209. }
  210. else {
  211. var type = $obj.attr('type');
  212. if ($obj.hasClass("lr-input-wdatepicker")) {
  213. type = "datepicker";
  214. }
  215. switch (type) {
  216. case "lrselect":
  217. $obj.lrselectSet(value);
  218. break;
  219. case "formselect":
  220. $obj.lrformselectSet(value);
  221. break;
  222. case "datepicker":
  223. $obj.val(learun.formatDate(value, 'yyyy-MM-dd'));
  224. break;
  225. case "lr-Uploader":
  226. $obj.lrUploaderSet(value);
  227. break;
  228. default:
  229. if ($obj.hasClass('lr-currentInfo-user')) {
  230. $obj[0].lrvalue = value;
  231. $obj.val('');
  232. learun.clientdata.getAsync('user', {
  233. key: value,
  234. callback: function (item, op) {
  235. op.obj.val(item.name);
  236. },
  237. obj: $obj
  238. });
  239. }
  240. else if ($obj.hasClass('lr-currentInfo-company')) {
  241. $obj[0].lrvalue = value;
  242. $obj.val('');
  243. learun.clientdata.getAsync('company', {
  244. key: value,
  245. callback: function (_data, op) {
  246. op.obj.val(_data.name);
  247. },
  248. obj: $obj
  249. });
  250. }
  251. else if ($obj.hasClass('lr-currentInfo-department')) {
  252. $obj[0].lrvalue = value;
  253. $obj.val('');
  254. learun.clientdata.getAsync('department', {
  255. key: value,
  256. callback: function (item, op) {
  257. op.obj.val(item.name);
  258. },
  259. obj: $obj
  260. });
  261. }
  262. else if ($obj.hasClass('lr-currentInfo-guid')) {
  263. $obj[0].lrvalue = value;
  264. $obj.val(value);
  265. }
  266. else if ($obj.hasClass('edui-default')) {
  267. ueSet($obj[0].ue, value);
  268. //$obj[0].ue.setContent(value);
  269. }
  270. else {
  271. $obj.val(value);
  272. }
  273. break;
  274. }
  275. }
  276. }
  277. };
  278. function ueSet(ue, content) {
  279. ue.ready(function() {
  280. ue.setContent(content);
  281. });
  282. }
  283. })(jQuery, top.learun);