tianheng-ui 0.0.46 → 0.0.49

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "tianheng-ui",
3
3
  "description": "A Vue.js project",
4
- "version": "0.0.46",
4
+ "version": "0.0.49",
5
5
  "author": "shu lang <403732931@qq.com>",
6
6
  "license": "MIT",
7
7
  "private": false,
@@ -27,7 +27,10 @@
27
27
  </div>
28
28
  </div>
29
29
  <slot></slot>
30
- <span slot="footer">
30
+ <slot v-if="$slots.footer" slot="footer">
31
+ <slot name="footer"></slot>
32
+ </slot>
33
+ <span v-else slot="footer">
31
34
  <el-button
32
35
  v-if="showAffirm"
33
36
  type="primary"
@@ -80,9 +80,6 @@
80
80
  sort: false,
81
81
  ghostClass: 'ghost'
82
82
  }"
83
- @end="handleMoveEnd"
84
- @start="handleMoveStart"
85
- :move="handleMove"
86
83
  >
87
84
  <template v-for="(item, index) in layoutComponents">
88
85
  <li
@@ -150,7 +147,8 @@
150
147
  ref="widgetForm"
151
148
  :data="widgetForm"
152
149
  :select.sync="widgetFormSelect"
153
- ></widget-form>
150
+ >
151
+ </widget-form>
154
152
  </el-main>
155
153
  </el-container>
156
154
 
@@ -200,19 +198,11 @@
200
198
  :data="widgetForm"
201
199
  :value="widgetModels"
202
200
  :remote="remoteFuncs"
201
+ :slotKeys="slotKeys"
203
202
  ref="generateForm"
204
203
  >
205
- <template v-slot:blank="scope">
206
- Width
207
- <el-input
208
- v-model="scope.model.blank.width"
209
- style="width: 100px"
210
- ></el-input>
211
- Height
212
- <el-input
213
- v-model="scope.model.blank.height"
214
- style="width: 100px"
215
- ></el-input>
204
+ <template v-for="name in slotKeys" :slot="name">
205
+ <slot :name="name" />
216
206
  </template>
217
207
  </generate-form>
218
208
 
@@ -302,7 +292,7 @@
302
292
  import ace from "ace-builds";
303
293
  import "ace-builds/src-min-noconflict/mode-json";
304
294
  import "ace-builds/src-min-noconflict/mode-html";
305
- import htmlWorkerUrl from "file-loader!ace-builds/src-min-noconflict/worker-html";
295
+ import htmlWorkerUrl from "file-loader!ace-builds/src-min-noconflict/worker-html";
306
296
  ace.config.setModuleUrl("ace/mode/html_worker", htmlWorkerUrl);
307
297
  import jsonWorkerUrl from "file-loader!ace-builds/src-noconflict/worker-json";
308
298
  ace.config.setModuleUrl("ace/mode/json_worker", jsonWorkerUrl);
@@ -316,8 +306,8 @@ import CusDialog from "./CusDialog";
316
306
  import GenerateForm from "./GenerateForm";
317
307
  import {
318
308
  basicComponents,
319
- layoutComponents,
320
- advanceComponents
309
+ advanceComponents,
310
+ layoutComponents
321
311
  } from "./componentsConfig.js";
322
312
  // import {loadJs, loadCss} from '../util/index.js'
323
313
  import request from "./util/request";
@@ -369,16 +359,17 @@ export default {
369
359
  "select",
370
360
  "switch",
371
361
  "slider",
372
- "text"
362
+ "text",
363
+ "button"
373
364
  ]
374
365
  },
375
366
  advanceFields: {
376
367
  type: Array,
377
- default: () => ["blank", "imgupload", "editor", "cascader"]
368
+ default: () => ["blank", "imgupload", "editor", "cascader", "table"]
378
369
  },
379
370
  layoutFields: {
380
371
  type: Array,
381
- default: () => ["grid"]
372
+ default: () => ["grid", "tabs", "divider"]
382
373
  },
383
374
  remoteApis: {
384
375
  type: Array,
@@ -428,7 +419,7 @@ export default {
428
419
  console.log("callback", response, file, fileList);
429
420
  }
430
421
  },
431
- widgetModels: {},
422
+ widgetModels: { table: [{ name: "这是" }] },
432
423
  blank: "",
433
424
  htmlTemplate: "",
434
425
  vueTemplate: "",
@@ -445,7 +436,8 @@ export default {
445
436
  "size": "small"
446
437
  }
447
438
  }`,
448
- codeActiveName: "vue"
439
+ codeActiveName: "vue",
440
+ slotKeys: []
449
441
  };
450
442
  },
451
443
  mounted() {
@@ -472,9 +464,6 @@ export default {
472
464
  // };
473
465
  // });
474
466
  // },
475
- handleGoGithub() {
476
- window.location.href = "https://github.com/GavinZhuLei/vue-form-making";
477
- },
478
467
  handleConfigSelect(value) {
479
468
  this.configTab = value;
480
469
  },
@@ -489,6 +478,7 @@ export default {
489
478
  },
490
479
  handlePreview() {
491
480
  // console.log(this.widgetForm);
481
+ this.slotKeys = Object.keys(this.$slots);
492
482
  this.previewVisible = true;
493
483
  },
494
484
  handleTest() {
@@ -9,62 +9,20 @@
9
9
  :label-position="data.config.labelPosition"
10
10
  :label-width="data.config.labelWidth + 'px'"
11
11
  >
12
- <template v-for="item in data.list">
13
- <template v-if="item.type == 'grid'">
14
- <el-row
15
- :key="item.key"
16
- type="flex"
17
- :gutter="item.options.gutter ? item.options.gutter : 0"
18
- :justify="item.options.justify"
19
- :align="item.options.align"
20
- >
21
- <el-col
22
- v-for="(col, colIndex) in item.columns"
23
- :key="colIndex"
24
- :span="col.span"
25
- >
26
- <template v-for="citem in col.list">
27
- <el-form-item
28
- v-if="citem.type == 'blank'"
29
- :label="citem.name"
30
- :prop="citem.model"
31
- :key="citem.key"
32
- >
33
- <slot :name="citem.model" :model="models"></slot>
34
- </el-form-item>
35
- <genetate-form-item
36
- v-else
37
- :key="citem.key"
38
- :models.sync="models"
39
- :remote="remote"
40
- :rules="rules"
41
- :widget="citem"
42
- @input-change="onInputChange"
43
- >
44
- </genetate-form-item>
45
- </template>
46
- </el-col>
47
- </el-row>
12
+ <genetate-form-item
13
+ v-for="item in data.list"
14
+ :key="item.key"
15
+ :models.sync="models"
16
+ :rules="rules"
17
+ :widget="item"
18
+ :slotKeys="slotKeys"
19
+ @input-change="onInputChange"
20
+ :remote="remote"
21
+ >
22
+ <template v-for="name in slotKeys" :slot="name">
23
+ <slot :name="name" />
48
24
  </template>
49
-
50
- <template v-else-if="item.type == 'blank'">
51
- <el-form-item :label="item.name" :prop="item.model" :key="item.key">
52
- <slot :name="item.model" :model="models"></slot>
53
- </el-form-item>
54
- </template>
55
-
56
- <template v-else>
57
- <genetate-form-item
58
- :key="item.key"
59
- :models.sync="models"
60
- :rules="rules"
61
- :widget="item"
62
- @input-change="onInputChange"
63
- :remote="remote"
64
- >
65
- </genetate-form-item>
66
- </template>
67
- </template>
25
+ </genetate-form-item>
68
26
  </el-form>
69
27
  </div>
70
28
  </template>
@@ -75,13 +33,13 @@ import GenetateFormItem from "./GenerateFormItem";
75
33
  export default {
76
34
  name: "fm-generate-form",
77
35
  components: {
78
- GenetateFormItem,
36
+ GenetateFormItem
79
37
  },
80
- props: ["data", "remote", "value", "insite"],
38
+ props: ["data", "remote", "value", "insite", "slotKeys"],
81
39
  data() {
82
40
  return {
83
41
  models: {},
84
- rules: {},
42
+ rules: {}
85
43
  };
86
44
  },
87
45
  created() {
@@ -89,66 +47,100 @@ export default {
89
47
  },
90
48
  mounted() {},
91
49
  methods: {
92
- generateModle(genList) {
93
- for (let i = 0; i < genList.length; i++) {
94
- if (genList[i].type === "grid") {
95
- genList[i].columns.forEach((item) => {
96
- this.generateModle(item.list);
50
+ generateModle(genList, obj) {
51
+ genList.map(item => {
52
+ if (item.type === "grid") {
53
+ item.columns.forEach(item => {
54
+ this.generateModle(item.list, obj);
97
55
  });
56
+ } else if (item.type === "tabs") {
57
+ if (obj) {
58
+ obj[item.model] = {};
59
+ item.tabs.forEach(item2 => {
60
+ obj[item.model][item2.value] = {};
61
+ this.generateModle(
62
+ item2.list,
63
+ obj[item.model][item2.value]
64
+ );
65
+ });
66
+ } else {
67
+ this.models[item.model] = {};
68
+ item.tabs.forEach(item2 => {
69
+ this.models[item.model][item2.value] = {};
70
+ this.generateModle(
71
+ item2.list,
72
+ this.models[item.model][item2.value]
73
+ );
74
+ });
75
+ }
76
+ } else if (obj) {
77
+ obj[item.model] = JSON.parse(
78
+ JSON.stringify(item.options.defaultValue || "")
79
+ );
98
80
  } else {
99
- if (
100
- this.value &&
101
- Object.keys(this.value).indexOf(genList[i].model) >= 0
102
- ) {
103
- this.models[genList[i].model] = this.value[genList[i].model];
81
+ if (this.value && Object.keys(this.value).indexOf(item.model) >= 0) {
82
+ this.models[item.model] = this.value[item.model];
104
83
  } else {
105
- if (genList[i].type === "blank") {
84
+ if (item.type === "blank") {
106
85
  this.$set(
107
86
  this.models,
108
- genList[i].model,
109
- genList[i].options.defaultType === "String"
87
+ item.model,
88
+ item.options.defaultType === "String"
110
89
  ? ""
111
- : genList[i].options.defaultType === "Object"
90
+ : item.options.defaultType === "Object"
112
91
  ? {}
113
92
  : []
114
93
  );
115
94
  } else {
116
- this.models[genList[i].model] = genList[i].options.defaultValue;
95
+ this.models[item.model] = JSON.parse(
96
+ JSON.stringify(item.options.defaultValue || "")
97
+ );
117
98
  }
118
99
  }
119
100
 
120
- if (this.rules[genList[i].model]) {
121
- this.rules[genList[i].model] = [
122
- ...this.rules[genList[i].model],
123
- ...genList[i].rules.map((item) => {
124
- if (item.pattern) {
125
- return { ...item, pattern: new RegExp(item.pattern) };
126
- } else {
127
- return { ...item };
128
- }
129
- }),
130
- ];
101
+ if (item.type === "table") {
102
+ this.generateRules(item);
103
+ item.list.forEach(item2 => {
104
+ this.generateRules(item2);
105
+ });
131
106
  } else {
132
- this.rules[genList[i].model] = [
133
- ...genList[i].rules.map((item) => {
134
- if (item.pattern) {
135
- return { ...item, pattern: new RegExp(item.pattern) };
136
- } else {
137
- return { ...item };
138
- }
139
- }),
140
- ];
107
+ this.generateRules(item);
141
108
  }
142
109
  }
110
+ });
111
+ // console.log(this.models)
112
+ },
113
+ generateRules(item) {
114
+ if (this.rules[item.model]) {
115
+ this.rules[item.model] = [
116
+ ...this.rules[item.model],
117
+ ...item.rules.map(rule => {
118
+ if (rule.pattern) {
119
+ return { ...rule, pattern: new RegExp(rule.pattern) };
120
+ } else {
121
+ return { ...rule };
122
+ }
123
+ })
124
+ ];
125
+ } else {
126
+ this.rules[item.model] = [
127
+ ...item.rules.map(rule => {
128
+ if (rule.pattern) {
129
+ return { ...rule, pattern: new RegExp(rule.pattern) };
130
+ } else {
131
+ return { ...rule };
132
+ }
133
+ })
134
+ ];
143
135
  }
144
136
  },
145
137
  getData() {
146
138
  return new Promise((resolve, reject) => {
147
- this.$refs.generateForm.validate((valid) => {
139
+ this.$refs.generateForm.validate(valid => {
148
140
  if (valid) {
149
141
  resolve(this.models);
150
142
  } else {
151
- reject(new Error('表单数据校验失败').message);
143
+ reject(new Error("表单数据校验失败").message);
152
144
  }
153
145
  });
154
146
  });
@@ -159,23 +151,23 @@ export default {
159
151
  onInputChange(value, field) {
160
152
  this.$emit("on-change", field, value, this.models);
161
153
  },
162
- refresh() {},
154
+ refresh() {}
163
155
  },
164
156
  watch: {
165
157
  data: {
166
158
  deep: true,
167
159
  handler(val) {
168
- this.generateModle(val.list);
169
- },
160
+ // this.generateModle(val.list);
161
+ }
170
162
  },
171
163
  value: {
172
164
  deep: true,
173
165
  handler(val) {
174
166
  console.log(JSON.stringify(val));
175
167
  this.models = { ...this.models, ...val };
176
- },
177
- },
178
- },
168
+ }
169
+ }
170
+ }
179
171
  };
180
172
  </script>
181
173