1 |
|
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>
|