tianheng-ui 0.1.9 → 0.1.11

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.
Files changed (58) hide show
  1. package/lib/theme-chalk/styles/reset.scss +0 -2
  2. package/lib/tianheng-ui.js +14 -14
  3. package/package.json +1 -1
  4. package/packages/FormMaking/GenerateForm.vue +10 -10
  5. package/packages/FormMaking/GenerateFormItem.vue +66 -578
  6. package/packages/FormMaking/GenerateFormItemH5.vue +5 -5
  7. package/packages/FormMaking/Upload/index.vue +0 -1
  8. package/packages/FormMaking/WidgetConfig.vue +66 -30
  9. package/packages/FormMaking/WidgetForm.vue +7 -48
  10. package/packages/FormMaking/WidgetFormItem.vue +41 -65
  11. package/packages/FormMaking/WidgetSelect.vue +160 -0
  12. package/packages/FormMaking/custom/config.js +98 -63
  13. package/packages/FormMaking/custom/configs/grid.vue +4 -4
  14. package/packages/FormMaking/custom/configs/input.vue +135 -28
  15. package/packages/FormMaking/custom/configs/number.vue +2 -2
  16. package/packages/FormMaking/custom/configs/table.vue +2 -2
  17. package/packages/FormMaking/custom/configs/{table_h5.vue → tableH5.vue} +2 -2
  18. package/packages/FormMaking/custom/configs/tabs.vue +6 -6
  19. package/packages/FormMaking/custom/configs/textarea.vue +121 -19
  20. package/packages/FormMaking/custom/index.js +2 -4
  21. package/packages/FormMaking/custom/items/alliance.vue +30 -29
  22. package/packages/FormMaking/custom/items/blank_pro.vue +14 -0
  23. package/packages/FormMaking/custom/items/button.vue +1 -0
  24. package/packages/FormMaking/custom/items/cascader.vue +6 -2
  25. package/packages/FormMaking/custom/items/cell.vue +0 -2
  26. package/packages/FormMaking/custom/items/checkbox.vue +17 -7
  27. package/packages/FormMaking/custom/items/color.vue +1 -1
  28. package/packages/FormMaking/custom/items/date.vue +1 -1
  29. package/packages/FormMaking/custom/items/editor.vue +1 -1
  30. package/packages/FormMaking/custom/items/{grid.vue → grid_dev.vue} +16 -47
  31. package/packages/FormMaking/custom/items/grid_pro.vue +45 -0
  32. package/packages/FormMaking/custom/items/image.vue +0 -28
  33. package/packages/FormMaking/custom/items/input.vue +15 -9
  34. package/packages/FormMaking/custom/items/number.vue +4 -4
  35. package/packages/FormMaking/custom/items/radio.vue +17 -7
  36. package/packages/FormMaking/custom/items/rate.vue +1 -1
  37. package/packages/FormMaking/custom/items/select.vue +12 -6
  38. package/packages/FormMaking/custom/items/slider.vue +1 -1
  39. package/packages/FormMaking/custom/items/switch.vue +1 -1
  40. package/packages/FormMaking/custom/items/{table_h5.vue → tableH5_dev.vue} +44 -49
  41. package/packages/FormMaking/custom/items/tableH5_pro.vue +113 -0
  42. package/packages/FormMaking/custom/items/{table.vue → table_dev.vue} +21 -41
  43. package/packages/FormMaking/custom/items/table_pro.vue +114 -0
  44. package/packages/FormMaking/custom/items/tabs_dev.vue +101 -0
  45. package/packages/FormMaking/custom/items/tabs_pro.vue +50 -0
  46. package/packages/FormMaking/custom/items/text.vue +1 -1
  47. package/packages/FormMaking/custom/items/textarea.vue +4 -13
  48. package/packages/FormMaking/custom/items/time.vue +3 -3
  49. package/packages/FormMaking/custom/items/upload.vue +15 -14
  50. package/packages/FormMaking/custom/mixins/index.js +23 -1
  51. package/packages/FormMaking/custom/register.js +22 -11
  52. package/packages/FormMaking/index.vue +11 -7
  53. package/packages/FormMaking/styles/index.scss +235 -221
  54. package/packages/FormMaking/util/generateCode.js +3 -3
  55. package/packages/FormMaking/util/index.js +33 -23
  56. package/packages/TableMaking/generateTable.vue +2 -2
  57. package/packages/FormMaking/custom/items/tabs.vue +0 -145
  58. /package/packages/FormMaking/custom/items/{blank.vue → blank_dev.vue} +0 -0
@@ -8,563 +8,33 @@
8
8
  :label="widget.options.hideLabel ? '' : widget.name"
9
9
  :label-width="labelWidth"
10
10
  :prop="prop ? prop : widget.model"
11
- :rules="widget.rules"
11
+ :rules="
12
+ widget.options.required
13
+ ? [
14
+ ...widget.rules,
15
+ { required: true, message: '必需项', trigger: 'change' }
16
+ ]
17
+ : widget.rules
18
+ "
12
19
  :ref="widget.model"
13
20
  >
14
- <template v-if="widget.type == 'input'">
15
- <el-input
16
- v-if="
17
- widget.options.dataType == 'number' ||
18
- widget.options.dataType == 'integer' ||
19
- widget.options.dataType == 'float'
20
- "
21
- type="number"
22
- v-model.number="dataModel"
23
- :placeholder="widget.options.placeholder"
24
- :style="{ width: widget.options.width }"
25
- :disabled="widget.options.disabled"
26
- :readonly="widget.options.readonly"
27
- :clearable="widget.options.clearable"
28
- :maxlength="widget.options.maxlength"
29
- :show-word-limit="widget.options.showWordLimit"
30
- :show-password="widget.options.showPassword"
31
- @input="handleEventAction(widget.events.onChange)"
32
- @focus="handleEventAction(widget.events.onFocus)"
33
- @blur="handleEventAction(widget.events.onBlur)"
34
- >
35
- </el-input>
36
- <el-input
37
- v-else
38
- type="text"
39
- v-model="dataModel"
40
- :placeholder="widget.options.placeholder"
41
- :style="{ width: widget.options.width }"
42
- :disabled="widget.options.disabled"
43
- :readonly="widget.options.readonly"
44
- :clearable="widget.options.clearable"
45
- :maxlength="widget.options.maxlength"
46
- :show-word-limit="widget.options.showWordLimit"
47
- :show-password="widget.options.showPassword"
48
- :suffix-icon="widget.options.suffixIcon"
49
- :prefix-icon="widget.options.prefixIcon"
50
- @input="handleEventAction(widget.events.onChange)"
51
- @focus="handleEventAction(widget.events.onFocus)"
52
- @blur="handleEventAction(widget.events.onBlur)"
53
- >
54
- <template v-if="widget.options.prepend" slot="prepend">{{
55
- widget.options.prepend
56
- }}</template>
57
- <template v-if="widget.options.append" slot="append">{{
58
- widget.options.append
59
- }}</template>
60
- </el-input>
61
- </template>
62
-
63
- <template v-if="widget.type == 'textarea'">
64
- <el-input
65
- type="textarea"
66
- v-model="dataModel"
67
- :disabled="widget.options.disabled"
68
- :placeholder="widget.options.placeholder"
69
- :style="{ width: widget.options.width }"
70
- :maxlength="widget.options.maxlength"
71
- :clearable="widget.options.clearable"
72
- :show-word-limit="widget.options.showWordLimit"
73
- :autosize="{
74
- minRows: widget.options.minRows,
75
- maxRows: widget.options.maxRows
76
- }"
77
- @input="handleEventAction(widget.events.onChange)"
78
- @focus="handleEventAction(widget.events.onFocus)"
79
- @blur="handleEventAction(widget.events.onBlur)"
80
- ></el-input>
81
- </template>
82
-
83
- <template v-if="widget.type == 'cell'">
84
- <th-cell
85
- :title="widget.options.title"
86
- :value="widget.options.value"
87
- :label="widget.options.label"
88
- ></th-cell>
89
- </template>
90
-
91
- <template v-if="widget.type == 'number'">
92
- <el-input-number
93
- v-model="dataModel"
94
- :style="{ width: widget.options.width }"
95
- :step="widget.options.step"
96
- :controls-position="widget.options.controlsPosition ? 'right' : ''"
97
- :disabled="widget.options.disabled"
98
- :min="widget.options.min"
99
- :max="widget.options.max"
100
- :precision="widget.options.precision"
101
- @change="handleEventAction(widget.events.onChange)"
102
- @focus="handleEventAction(widget.events.onFocus)"
103
- @blur="handleEventAction(widget.events.onBlur)"
104
- ></el-input-number>
105
- </template>
106
-
107
- <template v-if="widget.type == 'text'">
108
- <div
109
- :style="{
110
- height: widget.options.height,
111
- textAlign: widget.options.textAlign
112
- }"
113
- v-html="dataModel"
114
- ></div>
115
- </template>
116
-
117
- <template v-if="widget.type == 'radio'">
118
- <el-radio-group
119
- v-model="dataModel"
120
- :style="{ width: widget.options.width }"
121
- :disabled="widget.options.disabled"
122
- @change="handleEventAction(widget.events.onChange)"
123
- >
124
- <template v-if="widget.options.buttonType">
125
- <el-radio-button
126
- :style="{
127
- display: widget.options.inline ? 'inline-block' : 'block'
128
- }"
129
- v-for="(item, index) in widget.options.remote
130
- ? widget.options.remoteOptions
131
- : widget.options.options"
132
- :key="index"
133
- :label="item.value"
134
- :border="widget.options.border"
135
- >
136
- <template v-if="widget.options.remote">{{ item.label }}</template>
137
- <template v-else>{{
138
- widget.options.showLabel ? item.label : item.value
139
- }}</template>
140
- </el-radio-button>
141
- </template>
142
- <template v-else>
143
- <el-radio
144
- :style="{
145
- display: widget.options.inline ? 'inline-block' : 'block'
146
- }"
147
- :label="item.value"
148
- :border="widget.options.border"
149
- v-for="(item, index) in widget.options.remote
150
- ? widget.options.remoteOptions
151
- : widget.options.options"
152
- :key="index"
153
- >
154
- <template v-if="widget.options.remote">{{ item.label }}</template>
155
- <template v-else>{{
156
- widget.options.showLabel ? item.label : item.value
157
- }}</template>
158
- </el-radio>
159
- </template>
160
- </el-radio-group>
161
- </template>
162
-
163
- <template v-if="widget.type == 'checkbox'">
164
- <el-checkbox-group
165
- v-model="dataModel"
166
- :style="{ width: widget.options.width }"
167
- :disabled="widget.options.disabled"
168
- :min="widget.options.min"
169
- :max="widget.options.max"
170
- @change="handleEventAction(widget.events.onChange)"
171
- >
172
- <template v-if="widget.options.buttonType">
173
- <el-checkbox-button
174
- :style="{
175
- display: widget.options.inline ? 'inline-block' : 'block'
176
- }"
177
- :label="item.value"
178
- :border="widget.options.border"
179
- v-for="(item, index) in widget.options.remote
180
- ? widget.options.remoteOptions
181
- : widget.options.options"
182
- :key="index"
183
- >
184
- <template v-if="widget.options.remote">{{ item.label }}</template>
185
- <template v-else>{{
186
- widget.options.showLabel ? item.label : item.value
187
- }}</template>
188
- </el-checkbox-button>
189
- </template>
190
- <template v-else>
191
- <el-checkbox
192
- :style="{
193
- display: widget.options.inline ? 'inline-block' : 'block'
194
- }"
195
- :label="item.value"
196
- :border="widget.options.border"
197
- v-for="(item, index) in widget.options.remote
198
- ? widget.options.remoteOptions
199
- : widget.options.options"
200
- :key="index"
201
- >
202
- <template v-if="widget.options.remote">{{ item.label }}</template>
203
- <template v-else>{{
204
- widget.options.showLabel ? item.label : item.value
205
- }}</template>
206
- </el-checkbox>
207
- </template>
208
- </el-checkbox-group>
209
- </template>
210
-
211
- <template v-if="widget.type == 'time'">
212
- <el-time-picker
213
- v-model="dataModel"
214
- :style="{ width: widget.options.width }"
215
- :is-range="widget.options.isRange"
216
- :placeholder="widget.options.placeholder"
217
- :start-placeholder="widget.options.startPlaceholder"
218
- :end-placeholder="widget.options.endPlaceholder"
219
- :readonly="widget.options.readonly"
220
- :disabled="widget.options.disabled"
221
- :editable="widget.options.editable"
222
- :clearable="widget.options.clearable"
223
- :arrowControl="widget.options.arrowControl"
224
- :value-format="widget.options.format"
225
- :picker-options="{
226
- selectableRange: `${widget.options.pickerOptions.selectableRange[0]} - ${widget.options.pickerOptions.selectableRange[1]}`
227
- }"
228
- @change="handleEventAction(widget.events.onChange)"
229
- @focus="handleEventAction(widget.events.onFocus)"
230
- @blur="handleEventAction(widget.events.onBlur)"
231
- >
232
- </el-time-picker>
233
- </template>
234
-
235
- <template v-if="widget.type == 'date'">
236
- <el-date-picker
237
- v-model="dataModel"
238
- :style="{ width: widget.options.width }"
239
- :type="widget.options.type"
240
- :is-range="widget.options.isRange"
241
- :placeholder="widget.options.placeholder"
242
- :start-placeholder="widget.options.startPlaceholder"
243
- :end-placeholder="widget.options.endPlaceholder"
244
- :readonly="widget.options.readonly"
245
- :disabled="widget.options.disabled"
246
- :editable="widget.options.editable"
247
- :clearable="widget.options.clearable"
248
- :value-format="widget.options.format"
249
- @change="handleEventAction(widget.events.onChange)"
250
- @focus="handleEventAction(widget.events.onFocus)"
251
- @blur="handleEventAction(widget.events.onBlur)"
252
- >
253
- </el-date-picker>
254
- </template>
255
-
256
- <template v-if="widget.type == 'select'">
257
- <el-select
258
- v-model="dataModel"
259
- :style="{ width: widget.options.width }"
260
- :disabled="widget.options.disabled"
261
- :multiple="widget.options.multiple"
262
- :clearable="widget.options.clearable"
263
- :placeholder="widget.options.placeholder"
264
- :collapseTags="widget.options.collapseTags"
265
- :allowCreate="widget.options.allowCreate"
266
- :filterable="
267
- widget.options.allowCreate ? true : widget.options.filterable
268
- "
269
- @change="handleEventAction(widget.events.onChange)"
270
- @focus="handleEventAction(widget.events.onFocus)"
271
- @blur="handleEventAction(widget.events.onBlur)"
272
- >
273
- <el-option
274
- v-for="item in widget.options.remote
275
- ? widget.options.remoteOptions
276
- : widget.options.options"
277
- :key="item.value"
278
- :value="item.value"
279
- :label="
280
- widget.options.showLabel || widget.options.remote
281
- ? item.label
282
- : item.value
283
- "
284
- ></el-option>
285
- </el-select>
286
- </template>
287
-
288
- <template v-if="widget.type == 'color'">
289
- <el-color-picker
290
- v-model="dataModel"
291
- :disabled="widget.options.disabled"
292
- :show-alpha="widget.options.showAlpha"
293
- @change="handleEventAction(widget.events.onChange)"
294
- ></el-color-picker>
295
- </template>
296
-
297
- <template v-if="widget.type == 'switch'">
298
- <el-switch
299
- v-model="dataModel"
300
- :width="widget.options.width - 20"
301
- :disabled="widget.options.disabled"
302
- :inactive-text="widget.options.switchInactiveText"
303
- :active-text="widget.options.switchActiveText"
304
- :inactive-color="widget.options.switchInactiveColor"
305
- :active-color="widget.options.switchActiveColor"
306
- @change="handleEventAction(widget.events.onChange)"
307
- >
308
- </el-switch>
309
- </template>
310
-
311
- <template v-if="widget.type == 'button'">
312
- <el-button
313
- :style="{
314
- width: widget.options.width,
315
- height: widget.options.height
316
- }"
317
- :size="widget.options.buttonSize"
318
- :type="widget.options.buttonType"
319
- :plain="widget.options.buttonPlain"
320
- :round="widget.options.buttonRound"
321
- :circle="widget.options.buttonCircle"
322
- :loading="widget.options.loading"
323
- :disabled="widget.options.disabled"
324
- :icon="widget.options.buttonIcon"
325
- @click="handleEventAction(widget.events.onClick)"
326
- >{{ widget.options.defaultValue }}</el-button
327
- >
328
- </template>
329
-
330
- <template v-if="widget.type == 'slider'">
331
- <el-slider
332
- v-model="dataModel"
333
- :min="widget.options.min"
334
- :max="widget.options.max"
335
- :disabled="widget.options.disabled"
336
- :step="widget.options.step"
337
- :show-input="widget.options.showInput"
338
- :range="widget.options.range"
339
- :style="{
340
- width: widget.options.width,
341
- height: widget.options.height
342
- }"
343
- :show-tooltip="widget.options.showTooltip"
344
- :format-tooltip="
345
- val => formatTooltip(val, widget.options.formatTooltip)
346
- "
347
- :show-stops="widget.options.showStops"
348
- :vertical="widget.options.vertical"
349
- @change="handleEventAction(widget.events.onChange)"
350
- ></el-slider>
351
- </template>
352
-
353
- <template v-if="widget.type == 'rate'">
354
- <el-rate
355
- v-model="dataModel"
356
- :max="widget.options.max"
357
- :disabled="widget.options.disabled"
358
- :allow-half="widget.options.allowHalf"
359
- :show-text="widget.options.showText"
360
- :texts="widget.options.auxiliaryValue"
361
- @change="handleEventAction(widget.events.onChange)"
362
- ></el-rate>
363
- </template>
364
-
365
- <template v-if="widget.type == 'filler'">
366
- <div
367
- :style="{
368
- width: widget.options.width,
369
- height: widget.options.height
370
- }"
371
- ></div>
372
- </template>
373
-
374
- <template v-if="widget.type == 'image'">
375
- <!-- <el-image
376
- :style="{
377
- width: widget.options.width,
378
- height: widget.options.height
379
- }"
380
- :src="widget.options.defaultValue"
381
- :fit="widget.options.fit"
382
- :preview-src-list="[widget.options.defaultValue]"
383
- :lazy="widget.options.isLazy"
384
- ></el-image> -->
385
- <el-image
386
- v-for="(item, index) in widget.options.defaultValue"
387
- :key="index"
388
- :style="{
389
- width: widget.options.width,
390
- height: widget.options.height,
391
- borderRadius: widget.options.borderRadius,
392
- verticalAlign:'middle'
393
- }"
394
- :src="item.url"
395
- :fit="widget.options.fit"
396
- :preview-src-list="imagePreviewList"
397
- :lazy="widget.options.isLazy"
398
- ></el-image>
399
- </template>
400
-
401
- <template v-if="widget.type == 'upload'">
402
- <el-upload
403
- class="upload-demo"
404
- :action="uploadUrl"
405
- :headers="
406
- widget.options.remote ? widget.options.remoteFunc.headers : {}
407
- "
408
- :data="widget.options.remote ? widget.options.remoteFunc.params : {}"
409
- :multiple="widget.options.multiple"
410
- :limit="widget.options.length"
411
- :width="widget.options.size.width"
412
- :height="widget.options.size.height"
413
- :list-type="widget.options.listType"
414
- :drag="widget.options.drag"
415
- :disabled="widget.options.disabled"
416
- :auto-upload="true"
417
- :on-change="handleAvatar"
418
- :on-error="handleAvatarError"
419
- :on-preview="
420
- file => handlePictureCardPreview(file, widget.options.listType)
421
- "
422
- :on-remove="handleRemove"
423
- >
424
- <el-button
425
- size="small"
426
- type="primary"
427
- :disabled="widget.options.disabled"
428
- v-if="
429
- ['default', 'picture'].includes(widget.options.listType) &&
430
- !widget.options.drag
431
- "
432
- >点击上传</el-button
433
- >
434
- <i
435
- slot="default"
436
- class="el-icon-plus"
437
- v-if="
438
- widget.options.listType === 'picture-card' && !widget.options.drag
439
- "
440
- ></i>
441
- <i class="el-icon-upload" v-if="widget.options.drag"></i>
442
- <div class="el-upload__text" v-if="widget.options.drag">
443
- 将文件拖到此处,或<em>点击上传</em>
444
- </div>
445
- <div
446
- slot="tip"
447
- class="el-upload__tip"
448
- v-html="widget.options.elUploadTip"
449
- ></div>
450
- </el-upload>
451
- </template>
452
-
453
- <template v-if="widget.type == 'editor'">
454
- <vue-editor
455
- v-model="dataModel"
456
- :style="{ width: widget.options.width }"
457
- :disabled="widget.options.disabled"
458
- >
459
- </vue-editor>
460
- </template>
461
-
462
- <template v-if="widget.type == 'cascader'">
463
- <el-cascader
464
- v-model="dataModel"
465
- :disabled="widget.options.disabled"
466
- :clearable="widget.options.clearable"
467
- :placeholder="widget.options.placeholder"
468
- :style="{
469
- width: widget.options.width,
470
- height: widget.options.height
471
- }"
472
- :options="widget.options.remoteOptions"
473
- :props="widget.options.props"
474
- :show-all-levels="widget.options.showAllLevels ? false : true"
475
- :collapse-tags="widget.options.collapseTags"
476
- :filterable="widget.options.filterable"
477
- @change="handleEventAction(widget.events.onChange)"
478
- >
479
- <template slot-scope="{ data }">
480
- <span v-html="widget.options.prepend"></span>
481
- <span>{{ data.label }}</span>
482
- <span v-html="widget.options.append"></span>
483
- </template>
484
- </el-cascader>
485
- </template>
486
-
487
- <template v-if="widget.type == 'blank'">
488
- <slot :name="widget.model" />
489
- </template>
490
-
491
- <template v-if="widget.type == 'table'">
492
- <el-table
493
- style="width:100%"
494
- :data="dataModel"
495
- :stripe="widget.options.stripe"
496
- :show-header="widget.options.showHeader"
497
- :highlight-current-row="widget.options.highlightCurrentRow"
498
- :border="widget.options.border"
499
- >
500
- <el-table-column
501
- v-if="widget.options.isSerial"
502
- label="序号"
503
- type="index"
504
- width="50"
505
- align="center"
506
- >
507
- </el-table-column>
508
- <el-table-column
509
- v-for="element in widget.list"
510
- :key="`table_${element.key}`"
511
- :label="element.name"
512
- :prop="element.model"
513
- :width="element.options.width"
514
- >
515
- <template slot-scope="scope">
516
- <genetate-form-item
517
- :models.sync="dataModel[scope.$index]"
518
- :widget="element"
519
- :remote="remote"
520
- :config="config"
521
- :prop="`${prop}.${scope.$index}.${element.model}`"
522
- :slotKeys="slotKeys"
523
- :componentsData="componentsData"
524
- >
525
- <template v-for="name in slotKeys" :slot="name">
526
- <slot :name="name" />
527
- </template>
528
- </genetate-form-item>
529
- </template>
530
- </el-table-column>
531
- <el-table-column
532
- v-if="widget.options.isDelete"
533
- fixed="right"
534
- label="操作"
535
- width="60"
536
- align="center"
537
- >
538
- <template slot-scope="scope">
539
- <el-button
540
- style="color:#F56C6C"
541
- type="text"
542
- @click.native.prevent="handleTableDelete(scope.$index)"
543
- >
544
- 移除
545
- </el-button>
546
- </template>
547
- </el-table-column>
548
- <template v-if="widget.options.isAdd" slot="append">
549
- <div
550
- style="text-align: center;"
551
- :style="{
552
- borderTop:
553
- dataModel && dataModel.length != 0 ? '' : '1px solid #EBEEF5'
554
- }"
555
- >
556
- <el-button
557
- type="text"
558
- :disabled="widget.options.disabled"
559
- @click="handleTableAdd"
560
- >新增</el-button
561
- >
562
- </div>
563
- </template>
564
- </el-table>
565
- </template>
566
-
567
- <template v-if="widget.type == 'table_h5'">
21
+ <component
22
+ :is="compsData[widget.type].content"
23
+ :value.sync="dataModel"
24
+ :widget="widget"
25
+ :config="config"
26
+ :models="models"
27
+ :remote="remote"
28
+ :prop="prop"
29
+ :slotKeys="slotKeys"
30
+ :componentsData="componentsData"
31
+ ></component>
32
+
33
+ <!-- <template v-if="widget.type == 'input'">
34
+
35
+
36
+
37
+ <template v-if="widget.type == 'tableH5'">
568
38
  <div class="tableH5">
569
39
  <div
570
40
  v-for="(column, columnIndex) in dataModel"
@@ -575,7 +45,7 @@
575
45
  v-for="(element, elementIndex) in widget.list"
576
46
  :key="`table_h5_${columnIndex}_${element.key}`"
577
47
  >
578
- <genetate-form-item
48
+ <generate-form-item
579
49
  style="flex:1;"
580
50
  :models.sync="column"
581
51
  :widget="element"
@@ -592,7 +62,7 @@
592
62
  <template v-for="name in slotKeys" :slot="name">
593
63
  <slot :name="name" />
594
64
  </template>
595
- </genetate-form-item>
65
+ </generate-form-item>
596
66
  <div
597
67
  v-if="
598
68
  widget.options.isDelete &&
@@ -628,11 +98,11 @@
628
98
  :align="widget.options.align"
629
99
  >
630
100
  <th-col
631
- v-for="(column, columnIndex) in widget.columns"
101
+ v-for="(column, columnIndex) in widget.options.columns"
632
102
  :key="columnIndex"
633
103
  :span="column.span"
634
104
  >
635
- <genetate-form-item
105
+ <generate-form-item
636
106
  v-for="element in column.list"
637
107
  :key="element.key"
638
108
  :widget="element"
@@ -646,20 +116,24 @@
646
116
  <template v-for="name in slotKeys" :slot="name">
647
117
  <slot :name="name" />
648
118
  </template>
649
- </genetate-form-item>
119
+ </generate-form-item>
650
120
  </th-col>
651
121
  </th-row>
652
122
  </template>
653
123
 
654
124
  <template v-if="widget.type == 'tabs'">
655
- <el-tabs v-model="widget.options.defaultValue">
125
+ <el-tabs
126
+ v-model="widget.options.defaultValue"
127
+ :type="widget.options.type"
128
+ :tab-position="widget.options.tabPosition"
129
+ >
656
130
  <el-tab-pane
657
- v-for="(column, columnIndex) in widget.tabs"
131
+ v-for="(column, columnIndex) in widget.options.columns"
658
132
  :key="`tabs_${columnIndex}`"
659
133
  :label="column.label"
660
134
  :name="column.value"
661
135
  >
662
- <genetate-form-item
136
+ <generate-form-item
663
137
  v-for="element in column.list"
664
138
  :key="`tabs_${columnIndex}_${element.key}`"
665
139
  :widget="element"
@@ -677,7 +151,7 @@
677
151
  <template v-for="name in slotKeys" :slot="name">
678
152
  <slot :name="name" />
679
153
  </template>
680
- </genetate-form-item>
154
+ </generate-form-item>
681
155
  </el-tab-pane>
682
156
  </el-tabs>
683
157
  </template>
@@ -690,20 +164,18 @@
690
164
 
691
165
  <el-dialog :visible.sync="dialogVisible" append-to-body>
692
166
  <img width="100%" :src="dialogImageUrl" alt="" />
693
- </el-dialog>
167
+ </el-dialog> -->
694
168
  </el-form-item>
695
169
  </template>
696
170
 
697
171
  <script>
698
- import FmUpload from "./Upload";
172
+ import { inputTypeDict } from "./util/index";
699
173
  import { VueEditor } from "vue2-editor";
700
- import ThCell from "ui/Cell/index.vue";
701
- import ThImage from "ui/Image/index.vue";
702
- import ThRow from "ui/Row/index.vue";
703
- import ThCol from "ui/Col/index.vue";
174
+ import compsData from "./custom/register";
175
+ import FmUpload from "./Upload";
704
176
 
705
177
  export default {
706
- name: "genetate-form-item",
178
+ name: "generate-form-item",
707
179
  props: [
708
180
  "widget",
709
181
  "models",
@@ -713,9 +185,10 @@ export default {
713
185
  "config",
714
186
  "componentsData"
715
187
  ],
716
- components: { FmUpload, VueEditor, ThCell, ThImage, ThRow, ThCol },
188
+ components: { FmUpload, VueEditor },
717
189
  data() {
718
190
  return {
191
+ compsData: JSON.parse(JSON.stringify(compsData)),
719
192
  dataModel: this.models[this.widget.model],
720
193
  dialogVisible: false,
721
194
  dialogImageUrl: ""
@@ -767,21 +240,36 @@ export default {
767
240
  return list;
768
241
  }
769
242
  },
770
- created() {},
243
+ created() {
244
+ const proComponentsPath = {
245
+ grid: "grid_pro",
246
+ table: "table_pro",
247
+ tableH5: "tableH5_pro",
248
+ tabs: "tabs_pro",
249
+ blank: "blank_pro"
250
+ };
251
+ const keys = Object.keys(this.compsData);
252
+ for (const key of keys) {
253
+ if (proComponentsPath[key])
254
+ this.compsData[
255
+ key
256
+ ].content = require(`./custom/items/${proComponentsPath[key]}`).default;
257
+ else
258
+ this.compsData[key].content = require(`./custom/items/${key}`).default;
259
+ }
260
+ },
771
261
  mounted() {
772
262
  this.$nextTick(() => {
773
263
  this.componentsData[this.widget.model] = this.widget;
774
264
  });
775
265
  },
776
266
  methods: {
267
+ inputTypeDict,
777
268
  handleTimePicker(vals) {
778
269
  this.dataModel = [];
779
270
  this.dataModel[0] = vals;
780
271
  this.widget.options.endTimePickerOptions.minTime = vals;
781
272
  },
782
- formatTooltip(val, num) {
783
- return val / num;
784
- },
785
273
  handlePictureCardPreview(file, listType) {
786
274
  if (listType === "picture-card") {
787
275
  this.dialogImageUrl = file.url;
@@ -807,8 +295,8 @@ export default {
807
295
  let dic = {};
808
296
  this.widget.list.forEach(item => {
809
297
  if (item.type === "grid") {
810
- for (let i = 0; i < item.columns.length; i++) {
811
- const element = item.columns[i];
298
+ for (let i = 0; i < item.options.columns.length; i++) {
299
+ const element = item.options.columns[i];
812
300
  for (let j = 0; j < element.list.length; j++) {
813
301
  const element2 = element.list[j];
814
302
  dic[element2.model] = element2.options.defaultValue;