formScript.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. (function () {
  2. var getRule = function () {
  3. var rule = <?=json_encode($form->getRules())?>;
  4. rule.forEach(function (c) {
  5. if ((c.type == 'cascader' || c.type == 'tree') && Object.prototype.toString.call(c.props.data) == '[object String]') {
  6. if (c.props.data.indexOf('js.') === 0) {
  7. c.props.data = window[c.props.data.replace('js.', '')];
  8. }
  9. }
  10. });
  11. return rule;
  12. }, vm = new Vue,name = 'formBuilderExec<?= !$form->getId() ? '' : '_'.$form->getId() ?>';
  13. window[name] = function create(el, callback) {
  14. if (!el) el = document.body;
  15. var $f = formCreate.create(getRule(), {
  16. el: el,
  17. form:<?=json_encode($form->getConfig('form'))?>,
  18. row:<?=json_encode($form->getConfig('row'))?>,
  19. upload: {
  20. onExceededSize: function (file) {
  21. vm.$Message.error(file.name + '超出指定大小限制');
  22. },
  23. onFormatError: function () {
  24. vm.$Message.error(file.name + '格式验证失败');
  25. },
  26. onError: function (error) {
  27. vm.$Message.error(file.name + '上传失败,(' + error + ')');
  28. },
  29. onSuccess: function (res) {
  30. if (res.code == 200) {
  31. return res.data.filePath;
  32. } else {
  33. vm.$Message.error(res.msg);
  34. }
  35. }
  36. },
  37. //表单提交事件
  38. onSubmit: function (formData) {
  39. $f.submitStatus({loading: true});
  40. $.ajax({
  41. url: '<?=$form->getAction()?>',
  42. type: '<?=$form->getMethod()?>',
  43. dataType: 'json',
  44. data: formData,
  45. success: function (res) {
  46. if (res.code == 200) {
  47. vm.$Message.success(res.msg);
  48. formCreate.formSuccess && formCreate.formSuccess(res, $f, formData);
  49. callback && callback(0, res, $f, formData);
  50. //TODO 表单提交成功!
  51. } else {
  52. vm.$Message.error(res.msg);
  53. $f.btn.finish();
  54. callback && callback(1, res, $f, formData);
  55. //TODO 表单提交失败
  56. }
  57. },
  58. error: function () {
  59. vm.$Message.error('表单提交失败');
  60. $f.btn.finish();
  61. }
  62. });
  63. }
  64. });
  65. return $f;
  66. };
  67. return window[name];
  68. }());