UNPKG

6.88 kBHTMLView Raw
1<!DOCTYPE html>
2<html lang="en">
3
4<head>
5 <meta charset="UTF-8">
6 <title>form-create示例</title>
7 <link href="https://cdn.jsdelivr.net/npm/element-ui@2.6.3/lib/theme-chalk/index.css" rel="stylesheet">
8
9 <!--省市区三级联动json数据-->
10 <!--<script src="../district/province_city_area.js"></script>-->
11
12 <script defer src="https://cdn.bootcss.com/vue/2.5.22/vue.js"></script>
13 <script defer src="https://cdn.jsdelivr.net/npm/element-ui@2.6.3/lib/index.js"></script>
14 <!--省市区二级联动json数据-->
15 <script defer src="../../district/province_city.js"></script>
16 <script defer src="../../dist/form-create.elm.js"></script>
17 <script defer src="mock.js"></script>
18 <script defer src="json.js"></script>
19
20</head>
21
22<body>
23<div id="app1">
24 <h2>组件模式生成</h2>
25 <form-create ref="fc" v-model="fApi" :rule="rule" :option="option" @goods-name-change="change"
26 @btn-click="change"
27 @xaboy-change="change" @mounted="fcMounted"></form-create>
28</div>
29<div id="app2">
30 <h2 onclick="vm.create()" style="cursor: pointer;">点击使用Vue原型方法生成</h2>
31</div>
32<div id="app3">
33 <h2 onclick="window.create2()" style="cursor: pointer;">点击使用全局方法生成</h2>
34</div>
35<script>
36 window.onload = function () {
37 Vue.use(ELEMENT);
38 //组件模式
39 _vm = new Vue({
40 el: '#app1',
41 data: {
42 formModel: {},
43 // rule: jsonMock(),
44 rule: mock(),
45 option: {
46 //显示表单重置按钮
47 resetBtn: true,
48 iframeHelper: true,
49 //
50 upload: {
51 'beforeUpload': function (res) {
52 console.log(res);
53 }
54 },
55 //表单提交事件
56 onSubmit: function (formData) {
57 alert(JSON.stringify(formData));
58 //按钮进入提交状态
59 $f.btn.loading();
60 //重置按钮禁用
61 $f.resetBtn.disabled();
62 //按钮进入可点击状态
63 //$f.btn.finish();
64 //创建第二个表单
65 // $f = that.$formCreate(mock, root);
66 },
67 mounted: function ($f) {
68 var $m = $f.model();
69 $m.goods_name.value += " now";
70 // console.log(123);
71 },
72 //onReload 表单重载是触发 用与更新$f
73 onReload: function ($f) {
74 console.log($f);
75 }
76 },
77 fApi: {}
78 },
79 watch: {
80 'formData.address': {
81 handler: function (n) {
82 console.log(n);
83 },
84 deep: true
85 }
86 },
87 methods: {
88 change: function (res) {
89 console.log(res);
90 },
91 fcMounted($f){
92 console.log('form-create mounted',$f);
93 }
94 },
95 mounted: function () {
96 console.log(this.fApi);
97 //实际开发中记得加 var
98 window.$f = this.fApi;
99 this.formModel = this.fApi.model();
100 //动态添加表单元素
101 this.fApi.append($r, 'pic');
102 }
103 });
104
105
106 //$formCreate构造方法生成
107
108 var _m1 = false;
109 vm = new Vue({
110 el: '#app2',
111 data: {
112 formData: {},
113 rule: mock()
114 },
115 watch: {
116 'formData.address': {
117 handler: function (n) {
118 console.log(n);
119 },
120 deep: true
121 }
122 },
123 methods: {
124 create: function () {
125 if (_m1) return;
126 _m1 = true;
127
128 //var root = document.getElementById('app2');
129 var root = this.$el;
130 //frame,upload组件请在线上环境测试
131 $f_2 = this.$formCreate(this.rule, {
132 //表单插入的父级元素
133 el: root,
134 //显示表单重置按钮
135 resetBtn: true,
136 //表单提交事件
137 onSubmit: function (formData) {
138 alert(JSON.stringify(formData));
139 //按钮进入提交状态
140 $f_2.btn.loading();
141 //重置按钮禁用
142 $f_2.resetBtn.disabled();
143 //按钮进入可点击状态
144 //$f_2.btn.finish();
145 //创建第二个表单
146 $f2 = that.$formCreate(mock, root);
147 },
148 mounted: function () {
149 _m1 = false;
150 }
151 });
152 //动态添加表单元素
153 $f_2.append($r);
154 //获取表单数据,双向数据绑定
155 this.formData = $f_2.model();
156 console.log(this.formData);
157 },
158 fcMounted($f){
159 console.log('form-create mounted',$f);
160 }
161 },
162 mounted: function () {
163 //this.create();
164 this.$on('fc:mounted',this.fcMounted);
165 }
166 });
167
168
169 var _m2 = false;
170 window.create2 = function () {
171 if (_m2) return;
172 _m2 = true;
173 _rule = mock();
174
175
176 //全局方法生成
177
178
179 $f_3 = formCreate.create(_rule, {
180 //表单插入的父级元素
181 el: document.getElementById('app3'),
182 //显示表单重置按钮
183 resetBtn: true,
184 //表单提交事件
185 onSubmit: function (formData) {
186 alert(JSON.stringify(formData));
187 //按钮进入提交状态
188 $f_3.btn.loading();
189 //重置按钮禁用
190 $f_3.resetBtn.disabled();
191 //按钮进入可点击状态
192 //$f_3.btn.finish();
193 },
194 mounted: function () {
195 _m2 = false;
196 }
197 });
198 }
199 }
200
201</script>
202</body>
203
204</html>