mpFormBuilder-bak-compiled.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320
  1. (function (global, factory) {
  2. define && define.amd && define(factory());
  3. })(this, function () {
  4. var FormBuilderName = 'form-builder';
  5. var props = {
  6. 'label-width': 80
  7. };
  8. var formBuilderInstall = function formBuilderInstall(Vue, rules) {
  9. rules = formBuilder.handleRules(rules);
  10. Vue.component(FormBuilderName, {
  11. data: function data() {
  12. return {
  13. formValidate: formBuilder.metaData(rules)
  14. };
  15. },
  16. render: function render(h) {
  17. window.__vm = this;
  18. var fb = new formBuilder(this, h, rules);
  19. window._fb = fb;
  20. return fb.makeForm();
  21. },
  22. watch: {},
  23. created: function created() {
  24. // formBuilder.createWatch(this,rules);
  25. }
  26. });
  27. };
  28. var formBuilder = function formBuilder(vm, h, rules) {
  29. this.vm = vm;
  30. this.h = h;
  31. this.rules = rules;
  32. };
  33. formBuilder.filterFailRule = function (rules) {
  34. return rules.filter(function (rule) {
  35. return !!rule.field;
  36. });
  37. };
  38. formBuilder.fields = function (rules) {
  39. var field = [];
  40. rules.map(function (rule) {
  41. field.push(rule.field);
  42. });
  43. return field;
  44. };
  45. formBuilder.metaData = function (rules) {
  46. var metaData = {};
  47. rules.map(function (rule) {
  48. metaData[rule.field] = rule.value;
  49. });
  50. return metaData;
  51. };
  52. formBuilder.metaRef = function (field) {
  53. return 'mp_' + field;
  54. };
  55. formBuilder.metaWatch = function (vm, field) {
  56. var _this = this;
  57. return vm.$watch('formValidate.' + field, function (n) {
  58. vm.$refs[_this.metaRef(field)].currentValue = n;
  59. });
  60. };
  61. formBuilder.createWatch = function (vm, rules) {
  62. var _this2 = this;
  63. this.fields(rules).map(function (field) {
  64. _this2.metaWatch(vm, field);
  65. });
  66. };
  67. formBuilder.handleRules = function (rules) {
  68. return this.filterFailRule(rules).map(function (rule) {
  69. rule.props || (rule.props = {});
  70. return rule;
  71. });
  72. };
  73. formBuilder.prototype = {
  74. onInput: function onInput(field, value) {
  75. console.log(value);
  76. this.vm.formValidate[field] = value;
  77. this.vm.$emit('input', value);
  78. },
  79. getFieldValue: function getFieldValue(field) {
  80. return this.vm.formValidate[field];
  81. },
  82. makeForm: function makeForm() {
  83. return this.h('i-form', {
  84. props: props
  85. }, this.parse());
  86. },
  87. makeFormItem: function makeFormItem(field, label, VNodeFn) {
  88. return this.h('form-Item', {
  89. props: {
  90. 'props': field,
  91. 'label': label || ''
  92. }
  93. }, VNodeFn());
  94. },
  95. makeInput: function makeInput(rule) {
  96. var _this3 = this;
  97. _vm = this.vm;
  98. rule.props.value = this.getFieldValue(rule.field);
  99. return this.h('i-input', {
  100. props: rule.props,
  101. on: {
  102. input: function input(value) {
  103. return _this3.onInput(rule.field, value);
  104. }
  105. },
  106. ref: formBuilder.metaRef(rule.field)
  107. });
  108. },
  109. makeInputNumber: function makeInputNumber(rule) {
  110. var _this4 = this;
  111. rule.props.value = parseFloat(this.getFieldValue(rule.field)) || 1;
  112. return this.h('Input-Number', {
  113. props: rule.props,
  114. on: {
  115. input: function input(value) {
  116. return _this4.onInput(rule.field, value);
  117. }
  118. },
  119. ref: formBuilder.metaRef(rule.field)
  120. });
  121. },
  122. makeRadioGroup: function makeRadioGroup(rule) {
  123. var _this5 = this;
  124. var VNodeFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};
  125. rule.props.value = this.getFieldValue(rule.field);
  126. return this.h('Radio-Group', {
  127. props: rule.props,
  128. on: {
  129. input: function input(value) {
  130. return _this5.onInput(rule.field, value);
  131. }
  132. },
  133. ref: formBuilder.metaRef(rule.field)
  134. }, VNodeFn());
  135. },
  136. makeRadio: function makeRadio(rule) {
  137. var _this6 = this;
  138. return this.makeRadioGroup(rule, function () {
  139. return rule.options.map(function (option) {
  140. return _this6.h('Radio', {
  141. props: option.props
  142. });
  143. });
  144. });
  145. },
  146. makeCheckBoxGroup: function makeCheckBoxGroup(rule) {
  147. var _this7 = this;
  148. var VNodeFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};
  149. rule.props.value = this.getFieldValue(rule.field);
  150. return this.h('Checkbox-Group', {
  151. props: rule.props,
  152. on: {
  153. input: function input(value) {
  154. return _this7.onInput(rule.field, value);
  155. }
  156. },
  157. ref: formBuilder.metaRef(rule.field)
  158. }, VNodeFn());
  159. },
  160. makeCheckBox: function makeCheckBox(rule) {
  161. var _this8 = this;
  162. return this.makeCheckBoxGroup(rule, function () {
  163. return rule.options.map(function (checkbox) {
  164. return _this8.h('Checkbox', {
  165. props: checkbox.props
  166. });
  167. });
  168. });
  169. },
  170. markSelectOptions: function markSelectOptions(options) {
  171. var _this9 = this;
  172. return options.map(function (option) {
  173. return _this9.h('i-option', {
  174. props: option.props
  175. });
  176. });
  177. },
  178. markSelect: function markSelect(rule) {
  179. var _this10 = this;
  180. rule.props.value = this.getFieldValue(rule.field);
  181. return this.h('i-select', {
  182. props: rule.props,
  183. on: {
  184. input: function input(value) {
  185. return _this10.onInput(rule.field, value);
  186. }
  187. },
  188. ref: formBuilder.metaRef(rule.field)
  189. }, this.markSelectOptions(rule.options));
  190. },
  191. makeDatePicker: function makeDatePicker(rule) {
  192. var _this11 = this;
  193. rule.props.value = this.getFieldValue(rule.field);
  194. rule.props.type || (rule.props.type = 'date');
  195. return this.h('Date-Picker', {
  196. props: rule.props,
  197. on: {
  198. input: function input(value) {
  199. return _this11.onInput(rule.field, value);
  200. }
  201. },
  202. ref: formBuilder.metaRef(rule.field)
  203. });
  204. },
  205. makeTimePicker: function makeTimePicker(rule) {
  206. var _this12 = this;
  207. rule.props.value = this.getFieldValue(rule.field);
  208. rule.props.type || (rule.props.type = 'time');
  209. return this.h('Time-Picker', {
  210. props: rule.props,
  211. on: {
  212. input: function input(value) {
  213. return _this12.onInput(rule.field, value);
  214. }
  215. },
  216. ref: formBuilder.metaRef(rule.field)
  217. });
  218. },
  219. makeColorPicker: function makeColorPicker(rule) {
  220. var _this13 = this;
  221. rule.props.value = this.getFieldValue(rule.field);
  222. return this.h('Color-Picker', {
  223. props: rule.props,
  224. on: {
  225. input: function input(value) {
  226. return _this13.onInput(rule.field, value);
  227. }
  228. },
  229. ref: formBuilder.metaRef(rule.field)
  230. });
  231. },
  232. makeUpload: function makeUpload(rule) {
  233. var _this14 = this;
  234. rule.props.value = this.getFieldValue(rule.field);
  235. return this.h('Upload', {
  236. props: rule.props,
  237. attrs: {
  238. style: 'display: inline-block;width:58px'
  239. },
  240. on: {
  241. input: function input(value) {
  242. return _this14.onInput(rule.field, value);
  243. }
  244. },
  245. ref: formBuilder.metaRef(rule.field)
  246. }, [this.h('div', { style: { width: '58px', height: '58px', lineHeight: '58px' } }, [this.h('Icon', {
  247. props: {
  248. type: "camera",
  249. size: 20
  250. }
  251. })])]);
  252. },
  253. parse: function parse() {
  254. var _this15 = this;
  255. return this.rules.filter(function (rule) {
  256. return !!rule.field;
  257. }).map(function (rule) {
  258. return _this15.makeFormItem(rule.field, rule.title, function () {
  259. return _this15[rule.type.toLowerCase()].call(_this15, rule);
  260. });
  261. });
  262. },
  263. text: function text(rule) {
  264. return [this.makeInput(rule)];
  265. },
  266. radio: function radio(rule) {
  267. return [this.makeRadio(rule)];
  268. },
  269. checkbox: function checkbox(rule) {
  270. return [this.makeCheckBox(rule)];
  271. },
  272. select: function select(rule) {
  273. return [this.markSelect(rule)];
  274. },
  275. inputnumber: function inputnumber(rule) {
  276. return [this.makeInputNumber(rule)];
  277. },
  278. datepicker: function datepicker(rule) {
  279. return [this.makeDatePicker(rule)];
  280. },
  281. timepicker: function timepicker(rule) {
  282. return [this.makeTimePicker(rule)];
  283. },
  284. colorpicker: function colorpicker(rule) {
  285. return [this.makeColorPicker(rule)];
  286. },
  287. upload: function upload(rule) {
  288. return [this.makeUpload(rule)];
  289. }
  290. };
  291. return {
  292. install: formBuilderInstall
  293. };
  294. });
  295. //# sourceMappingURL=mpFormBuilder-bak-compiled.js.map