tianheng-ui 0.1.10 → 0.1.12

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 (72) hide show
  1. package/lib/theme-chalk/styles/reset.scss +0 -2
  2. package/lib/tianheng-ui.js +13 -14
  3. package/package.json +1 -1
  4. package/packages/FormMaking/GenerateForm.vue +16 -11
  5. package/packages/FormMaking/GenerateFormItem.vue +73 -581
  6. package/packages/FormMaking/GenerateFormItemH5.vue +6 -6
  7. package/packages/FormMaking/Upload/index.vue +0 -1
  8. package/packages/FormMaking/WidgetConfig.vue +100 -77
  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/WidgetTools.vue +538 -0
  13. package/packages/FormMaking/config/index.js +6 -0
  14. package/packages/FormMaking/custom/config.js +119 -87
  15. package/packages/FormMaking/custom/configs/button.vue +24 -25
  16. package/packages/FormMaking/custom/configs/cascader.vue +7 -7
  17. package/packages/FormMaking/custom/configs/checkbox.vue +23 -22
  18. package/packages/FormMaking/custom/configs/color.vue +3 -3
  19. package/packages/FormMaking/custom/configs/date.vue +3 -3
  20. package/packages/FormMaking/custom/configs/grid.vue +4 -4
  21. package/packages/FormMaking/custom/configs/input.vue +138 -31
  22. package/packages/FormMaking/custom/configs/number.vue +5 -5
  23. package/packages/FormMaking/custom/configs/radio.vue +23 -19
  24. package/packages/FormMaking/custom/configs/rate.vue +3 -3
  25. package/packages/FormMaking/custom/configs/select.vue +25 -20
  26. package/packages/FormMaking/custom/configs/slider.vue +3 -3
  27. package/packages/FormMaking/custom/configs/switch.vue +3 -3
  28. package/packages/FormMaking/custom/configs/table.vue +2 -2
  29. package/packages/FormMaking/custom/configs/{table_h5.vue → tableH5.vue} +2 -2
  30. package/packages/FormMaking/custom/configs/tabs.vue +18 -23
  31. package/packages/FormMaking/custom/configs/textarea.vue +124 -22
  32. package/packages/FormMaking/custom/configs/time.vue +3 -3
  33. package/packages/FormMaking/custom/configs/upload.vue +5 -5
  34. package/packages/FormMaking/custom/index.js +2 -4
  35. package/packages/FormMaking/custom/items/alliance.vue +30 -29
  36. package/packages/FormMaking/custom/items/blank_pro.vue +14 -0
  37. package/packages/FormMaking/custom/items/button.vue +36 -1
  38. package/packages/FormMaking/custom/items/cascader.vue +6 -2
  39. package/packages/FormMaking/custom/items/cell.vue +0 -2
  40. package/packages/FormMaking/custom/items/checkbox.vue +18 -8
  41. package/packages/FormMaking/custom/items/color.vue +1 -1
  42. package/packages/FormMaking/custom/items/date.vue +1 -1
  43. package/packages/FormMaking/custom/items/editor.vue +1 -1
  44. package/packages/FormMaking/custom/items/{grid.vue → grid_dev.vue} +16 -47
  45. package/packages/FormMaking/custom/items/grid_pro.vue +45 -0
  46. package/packages/FormMaking/custom/items/image.vue +0 -28
  47. package/packages/FormMaking/custom/items/input.vue +15 -9
  48. package/packages/FormMaking/custom/items/number.vue +4 -4
  49. package/packages/FormMaking/custom/items/radio.vue +17 -7
  50. package/packages/FormMaking/custom/items/rate.vue +1 -1
  51. package/packages/FormMaking/custom/items/select.vue +12 -6
  52. package/packages/FormMaking/custom/items/slider.vue +1 -1
  53. package/packages/FormMaking/custom/items/switch.vue +1 -1
  54. package/packages/FormMaking/custom/items/{table_h5.vue → tableH5_dev.vue} +44 -49
  55. package/packages/FormMaking/custom/items/tableH5_pro.vue +113 -0
  56. package/packages/FormMaking/custom/items/{table.vue → table_dev.vue} +21 -41
  57. package/packages/FormMaking/custom/items/table_pro.vue +114 -0
  58. package/packages/FormMaking/custom/items/tabs_dev.vue +101 -0
  59. package/packages/FormMaking/custom/items/tabs_pro.vue +50 -0
  60. package/packages/FormMaking/custom/items/text.vue +1 -1
  61. package/packages/FormMaking/custom/items/textarea.vue +4 -13
  62. package/packages/FormMaking/custom/items/time.vue +3 -3
  63. package/packages/FormMaking/custom/items/upload.vue +15 -14
  64. package/packages/FormMaking/custom/mixins/index.js +28 -6
  65. package/packages/FormMaking/custom/register.js +22 -11
  66. package/packages/FormMaking/index.vue +95 -468
  67. package/packages/FormMaking/styles/index.scss +235 -242
  68. package/packages/FormMaking/util/generateCode.js +3 -3
  69. package/packages/FormMaking/util/index.js +33 -23
  70. package/packages/FormMaking/util/request.js +9 -12
  71. package/packages/FormMaking/custom/items/tabs.vue +0 -145
  72. /package/packages/FormMaking/custom/items/{blank.vue → blank_dev.vue} +0 -0
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div class="fm-container">
2
+ <div class="formMaking">
3
3
  <el-container
4
4
  v-if="Object.keys(widgetFormData.config).length"
5
5
  class="container-box"
@@ -52,7 +52,7 @@
52
52
  v-for="(item, index) in getAdvanceComponents"
53
53
  class="form-edit-widget-label"
54
54
  :class="{
55
- 'no-put': ['table', 'table_h5', 'tabs'].includes(
55
+ 'no-put': ['table', 'tableH5', 'tabs'].includes(
56
56
  item.type
57
57
  ),
58
58
  [item.type]: true
@@ -100,95 +100,20 @@
100
100
  <!-- 中间视图区 -->
101
101
  <el-container class="center-container" direction="vertical">
102
102
  <!-- 操作区 -->
103
- <el-header>
104
- <div class="client">
105
- <el-button
106
- v-if="tools.includes('monitor')"
107
- :class="{ active: client === 'monitor' }"
108
- type="text"
109
- size="medium"
110
- icon="el-icon-monitor"
111
- @click="client = 'monitor'"
112
- >
113
- 桌面端
114
- </el-button>
115
- <el-button
116
- v-if="tools.includes('mobile')"
117
- :class="{ active: client === 'mobile' }"
118
- type="text"
119
- size="medium"
120
- icon="el-icon-mobile"
121
- @click="client = 'mobile'"
122
- >
123
- 移动端
124
- </el-button>
125
- </div>
126
- <slot name="action"> </slot>
127
- <el-popover
128
- placement="bottom"
129
- trigger="hover"
130
- style="margin:0 10px;"
131
- >
132
- <el-button
133
- v-if="tools.includes('upload')"
134
- type="text"
135
- size="medium"
136
- icon="el-icon-upload2"
137
- slot="reference"
138
- >导入</el-button
139
- >
140
- <div>
141
- <el-upload
142
- action
143
- accept=".xlsx, .xls"
144
- :auto-upload="false"
145
- :show-file-list="false"
146
- :on-change="onExcelFileChange"
147
- >
148
- <el-button type="text" size="medium">导入EXCEL </el-button>
149
- </el-upload>
150
- <el-button
151
- type="text"
152
- size="medium"
153
- @click="dialog.import.visible = true"
154
- >导入JSON
155
- </el-button>
156
- </div>
157
- </el-popover>
158
-
159
- <el-button
160
- v-if="tools.includes('clearable')"
161
- type="text"
162
- size="medium"
163
- icon="el-icon-delete"
164
- @click="handleClear"
165
- >清空
166
- </el-button>
167
- <el-button
168
- v-if="tools.includes('preview')"
169
- type="text"
170
- size="medium"
171
- icon="el-icon-view"
172
- @click="handlePreview"
173
- >预览
174
- </el-button>
175
- <el-button
176
- v-if="tools.includes('generateJson')"
177
- type="text"
178
- size="medium"
179
- icon="el-icon-tickets"
180
- @click="handleGenerateJson"
181
- >生成JSON</el-button
182
- >
183
- <el-button
184
- v-if="tools.includes('generateCode')"
185
- type="text"
186
- size="medium"
187
- icon="el-icon-document"
188
- @click="handleGenerateCode"
189
- >生成代码</el-button
190
- >
191
- </el-header>
103
+ <WidgetTools
104
+ :baseConfig="baseConfig"
105
+ :permissions="permissions"
106
+ :client.sync="client"
107
+ :basicComponents="basicComponents"
108
+ :layoutComponents="layoutComponents"
109
+ :formData="widgetFormData"
110
+ :formValue="widgetValue"
111
+ :oauthConfig="oauthConfig"
112
+ :slotKeys="Object.keys($slots)"
113
+ @click="handleWidgetToolsChange"
114
+ >
115
+ <slot name="action"></slot>
116
+ </WidgetTools>
192
117
 
193
118
  <!-- 工作区 -->
194
119
  <el-main>
@@ -225,8 +150,8 @@
225
150
  <widget-config
226
151
  v-show="configTab == 'widget'"
227
152
  :data="widgetFormSelect"
228
- :remoteApis="remoteApis"
229
153
  :config="widgetFormData.config"
154
+ @update="handleWidgetConfigUpdate"
230
155
  >
231
156
  </widget-config>
232
157
  <form-config
@@ -236,137 +161,6 @@
236
161
  </el-main>
237
162
  </el-container>
238
163
  </el-aside>
239
-
240
- <!-- 导入JSON -->
241
- <th-dialog
242
- title="导入JSON"
243
- :visible="dialog.import.visible"
244
- :modal-append-to-body="false"
245
- @on-close="dialog.import.visible = false"
246
- @on-affirm="handleUploadJson"
247
- @on-fullscreen="$refs.valueCodeEditor.resize()"
248
- >
249
- <el-alert
250
- type="info"
251
- title="JSON格式如下,直接复制生成的json覆盖此处代码点击确定即可"
252
- ></el-alert>
253
- <th-code-editor
254
- v-model="dialog.import.value"
255
- ref="valueCodeEditor"
256
- ></th-code-editor>
257
- </th-dialog>
258
-
259
- <!-- 预览 -->
260
- <th-dialog
261
- title="预览"
262
- v-model="dialog.preview.visible"
263
- :modal-append-to-body="false"
264
- @on-close="dialog.preview.visible = false"
265
- >
266
- <generate-form
267
- v-if="dialog.preview.visible"
268
- :data="widgetFormData"
269
- :value="widgetValue"
270
- :oauthConfig="oauthConfig"
271
- :remote="remoteFuncs"
272
- :slotKeys="slotKeys"
273
- :client="client"
274
- insite="true"
275
- @on-change="handleDataChange"
276
- ref="generateForm"
277
- >
278
- <template v-for="name in slotKeys" :slot="name">
279
- <slot :name="name" />
280
- </template>
281
- </generate-form>
282
-
283
- <template slot="footer">
284
- <el-button type="primary" @click="handleGetData"
285
- >获取数据</el-button
286
- >
287
- <el-button @click="handleReset">重置</el-button>
288
- </template>
289
- </th-dialog>
290
-
291
- <!-- 获取数据 -->
292
- <th-dialog
293
- title="获取数据"
294
- :visible="dialog.data.visible"
295
- :modal-append-to-body="false"
296
- @on-close="dialog.data.visible = false"
297
- @on-fullscreen="$refs.dataCodeEditor.resize()"
298
- >
299
- <th-code-editor
300
- v-model="dialog.data.value"
301
- ref="dataCodeEditor"
302
- ></th-code-editor>
303
-
304
- <template slot="footer">
305
- <el-button
306
- type="primary"
307
- class="json-btn"
308
- :data-clipboard-text="dialog.data.valueCopy"
309
- >复制数据</el-button
310
- >
311
- </template>
312
- </th-dialog>
313
-
314
- <!-- 生成json -->
315
- <th-dialog
316
- title="生成JSON"
317
- :visible="dialog.config.visible"
318
- :modal-append-to-body="false"
319
- @on-close="dialog.config.visible = false"
320
- @on-fullscreen="$refs.jsonCodeEditor.resize()"
321
- >
322
- <th-code-editor
323
- v-model="dialog.config.value"
324
- ref="jsonCodeEditor"
325
- ></th-code-editor>
326
-
327
- <template slot="footer">
328
- <el-button
329
- type="primary"
330
- class="json-btn"
331
- :data-clipboard-text="dialog.config.valueCopy"
332
- >复制数据</el-button
333
- >
334
- </template>
335
- </th-dialog>
336
-
337
- <!-- 生成代码 -->
338
- <th-dialog
339
- class="codeDialog"
340
- title="生成代码"
341
- :visible="dialog.code.visible"
342
- :showFooter="false"
343
- :modal-append-to-body="false"
344
- @on-close="dialog.code.visible = false"
345
- @on-fullscreen="handleDialogFullscreen"
346
- >
347
- <el-tabs
348
- type="border-card"
349
- style="box-shadow: none;"
350
- v-model="dialog.code.type"
351
- >
352
- <el-tab-pane label="Vue Component" name="vue">
353
- <th-code-editor
354
- v-model="dialog.code.valueVue"
355
- language="html"
356
- readonly
357
- ref="vueCodeEditor"
358
- ></th-code-editor>
359
- </el-tab-pane>
360
- <el-tab-pane label="HTML" name="html">
361
- <th-code-editor
362
- v-model="dialog.code.valueHtml"
363
- language="html"
364
- readonly
365
- ref="htmlCodeEditor"
366
- ></th-code-editor>
367
- </el-tab-pane>
368
- </el-tabs>
369
- </th-dialog>
370
164
  </el-container>
371
165
  </el-main>
372
166
  </el-container>
@@ -375,9 +169,9 @@
375
169
 
376
170
  <script>
377
171
  import Draggable from "vuedraggable";
378
- import Clipboard from "clipboard";
379
172
  import WidgetConfig from "./WidgetConfig";
380
173
  import FormConfig from "./FormConfig";
174
+ import WidgetTools from "./WidgetTools";
381
175
  import WidgetForm from "./WidgetForm";
382
176
  import GenerateForm from "./GenerateForm";
383
177
  import {
@@ -386,9 +180,7 @@ import {
386
180
  layoutComponents,
387
181
  baseConfig
388
182
  } from "./custom/config";
389
- import request from "./util/request";
390
183
  import generateCode from "./util/generateCode.js";
391
- import * as XLSX from "xlsx/xlsx.mjs";
392
184
 
393
185
  export default {
394
186
  name: "thFormMaking",
@@ -396,6 +188,7 @@ export default {
396
188
  Draggable,
397
189
  WidgetConfig,
398
190
  FormConfig,
191
+ WidgetTools,
399
192
  WidgetForm,
400
193
  GenerateForm
401
194
  },
@@ -412,19 +205,17 @@ export default {
412
205
  return {};
413
206
  }
414
207
  },
415
- tools: {
208
+ permissions: {
416
209
  type: Array,
417
- default: () => {
418
- return [
419
- "monitor",
420
- "mobile",
421
- "upload",
422
- "clearable",
423
- "preview",
424
- "generateCode",
425
- "generateJson"
426
- ];
427
- }
210
+ default: () => [
211
+ "monitor",
212
+ "mobile",
213
+ "upload",
214
+ "clearable",
215
+ "preview",
216
+ "generateCode",
217
+ "generateJson"
218
+ ]
428
219
  },
429
220
  basicFields: {
430
221
  type: Array,
@@ -452,15 +243,15 @@ export default {
452
243
  },
453
244
  advanceFields: {
454
245
  type: Array,
455
- default: () => ["table", "table_h5", "tabs", "blank"]
246
+ default: () => ["table", "tableH5", "tabs", "blank"]
456
247
  },
457
248
  layoutFields: {
458
249
  type: Array,
459
250
  default: () => ["grid", "filler", "divider"]
460
251
  },
461
- remoteApis: {
462
- type: Array,
463
- default: () => []
252
+ remoteFuncs: {
253
+ type: Object,
254
+ default: () => {}
464
255
  }
465
256
  },
466
257
  data() {
@@ -473,39 +264,7 @@ export default {
473
264
  widgetFormSelect: {},
474
265
  widgetValue: {},
475
266
  configTab: "widget",
476
- client: "monitor",
477
- dialog: {
478
- import: { visible: false, value: "" },
479
- preview: { visible: false, value: "" },
480
- data: { visible: false, value: "", valueCopy: "" },
481
- config: { visible: false, value: "", valueCopy: "" },
482
- code: { visible: false, valueHtml: "", valueVue: "", type: "vue" }
483
- },
484
- remoteFuncs: {
485
- func_test(resolve) {
486
- setTimeout(() => {
487
- const options = [
488
- { id: "1", name: "1111" },
489
- { id: "2", name: "2222" },
490
- { id: "3", name: "3333" }
491
- ];
492
-
493
- resolve(options);
494
- }, 2000);
495
- },
496
- funcGetToken(resolve) {
497
- request
498
- .get("http://tools-server.making.link/api/uptoken")
499
- .then(res => {
500
- resolve(res.uptoken);
501
- });
502
- },
503
- upload_callback(response, file, fileList) {
504
- console.log("callback", response, file, fileList);
505
- }
506
- },
507
- jsonClipboard: null,
508
- slotKeys: []
267
+ client: "monitor"
509
268
  };
510
269
  },
511
270
  computed: {
@@ -541,6 +300,41 @@ export default {
541
300
  val.config = Object.assign(this.baseConfig, val.config);
542
301
  }
543
302
  this.setJSON(val);
303
+ },
304
+ remoteFuncs(val) {
305
+ if (val) {
306
+ const props = val.props;
307
+ const options = val.options;
308
+
309
+ /**
310
+ * 支持外部接口转自定义事件(待完成)
311
+ */
312
+ // const _eventScript = options.map(item => {
313
+ // return {
314
+ // id: item[props.key],
315
+ // label: item[props.name],
316
+ // value: `
317
+ // const params = ${JSON.stringify(item.params)}
318
+ // const headers = ${JSON.stringify(item.headers || {})}
319
+ // const request = {
320
+ // url:"${item.url}",
321
+ // method:"${item.method}",
322
+ // data:params,
323
+ // headers:headers
324
+ // }
325
+ // this.hendleRemoteData(request)
326
+ // `
327
+ // };
328
+ // });
329
+ // this.widgetFormData.config.eventScript = this.widgetFormData.config.eventScript.concat(
330
+ // _eventScript
331
+ // );
332
+
333
+ const _remoteFuncs = options.map(item => {
334
+ return { ...item, id: item[props.key], label: item[props.name] };
335
+ });
336
+ this.widgetFormData.config.remoteFuncs = _remoteFuncs;
337
+ }
544
338
  }
545
339
  },
546
340
  created() {
@@ -549,6 +343,7 @@ export default {
549
343
  this.baseConfig,
550
344
  this.widgetFormData.config
551
345
  );
346
+
552
347
  if (this.widgetFormData.list && this.widgetFormData.list.length) {
553
348
  this.widgetFormSelect = this.widgetFormData.list[0];
554
349
  } else {
@@ -581,200 +376,11 @@ export default {
581
376
  });
582
377
  }
583
378
  },
584
- // 读取excel file
585
- readExcelFile(file) {
586
- //文件读取
587
- return new Promise(resolve => {
588
- let reader = new FileReader();
589
- reader.readAsBinaryString(file); //以二进制的方式读取
590
- reader.onload = ev => {
591
- resolve(ev.target.result);
592
- };
593
- });
594
- },
595
- // excel 文件上传 改变监听
596
- async onExcelFileChange(ev) {
597
- let file = ev.raw;
598
- if (!file) {
599
- console.log("文件打开失败");
600
- return;
601
- } else {
602
- let data = await this.readExcelFile(file);
603
- //XLSX 文档 https://www.npmjs.com/package/xlsx
604
- let workbook = XLSX.read(data, { type: "binary" }); //解析二进制格式数据
605
- let worksheet = workbook.Sheets[workbook.SheetNames[0]]; //获取第一个Sheet
606
-
607
- // console.log("XLSX.read => \n", workbook);
608
- // console.log("sheet_to_json => \n", XLSX.utils.sheet_to_json(worksheet));
609
- // console.log("sheet_to_csv => \n", XLSX.utils.sheet_to_csv(worksheet));
610
- // console.log("sheet_to_txt => \n", XLSX.utils.sheet_to_txt(worksheet));
611
- const xlsxDom = this.parseDom(XLSX.utils.sheet_to_html(worksheet));
612
- // console.log("sheet_to_html => \n", xlsxDom);
613
- const rowsDom = xlsxDom.getElementsByTagName("tr");
614
- console.log("rowsDom =>", rowsDom);
615
- let rowSpan = 0;
616
- for (let i = 0; i < rowsDom[0].childNodes.length; i++) {
617
- const col = rowsDom[0].childNodes[i];
618
- rowSpan += col.colSpan || 1;
619
- }
620
- console.log("rowSpan =>", rowSpan);
621
- const colSpan = 24 / rowSpan;
622
-
623
- let config = {
624
- list: [],
625
- config: this.baseConfig
626
- };
627
-
628
- for (const row of rowsDom) {
629
- const key =
630
- Date.parse(new Date()) + "_" + Math.ceil(Math.random() * 99999);
631
- let grid = this.getComponentsConfig("grid");
632
- grid.columns = [];
633
- grid.key = key;
634
- grid.model = "grid_" + key;
635
-
636
- const colsDom = row.childNodes;
637
- console.log("colsDom =>", colsDom);
638
- // continue;
639
- let span = 0;
640
- for (let i = 0; i < colsDom.length; i++) {
641
- if (i % 2 === 0) span = 0;
642
- else continue;
643
-
644
- const colKey =
645
- Date.parse(new Date()) + "_" + Math.ceil(Math.random() * 99999);
646
- const titleDom = colsDom[i];
647
- const valueDom = colsDom[i + 1];
648
- if (!titleDom.innerText && !valueDom.innerText) continue;
649
-
650
- if (valueDom) {
651
- span =
652
- ((titleDom.colSpan || 1) + (valueDom.colSpan || 1)) * colSpan;
653
-
654
- const data = this.getComponentsConfig("input");
655
- let name = titleDom.innerText;
656
- if (name.charAt(0) === "*") {
657
- name = name.slice(1);
658
- data.options.required = true;
659
- data.rules = data.rules || [];
660
- data.rules.push({
661
- required: true,
662
- message: "单行文本必须填写"
663
- });
664
- }
665
- data.name = name;
666
- data.options.defaultValue = valueDom.innerText;
667
- data.key = colKey;
668
- data.model = "input_" + colKey;
669
- grid.columns.push({ span: span, list: [data] });
670
- } else {
671
- span = titleDom.colSpan * colSpan;
672
-
673
- const data = this.getComponentsConfig("text");
674
- data.name = titleDom.innerText;
675
- data.options.defaultValue = titleDom.innerText;
676
- data.options.hideLabel = true;
677
- data.key = colKey;
678
- data.model = "text_" + colKey;
679
- grid.columns.push({ span: span, list: [data] });
680
- }
681
- }
682
- if (grid.columns.length) {
683
- config.list.push(grid);
684
- } else {
685
- const data = this.getComponentsConfig("filler");
686
- data.name = "";
687
- data.key = key;
688
- data.model = "filler_" + key;
689
- config.list.push(data);
690
- }
691
- }
692
- this.setJSON(config);
693
- }
694
- },
695
- getComponentsConfig(type) {
696
- let data = null;
697
- for (const item of this.basicComponents) {
698
- if (type === item.type) {
699
- data = JSON.parse(JSON.stringify(item));
700
- return data;
701
- }
702
- }
703
- for (const item of this.layoutComponents) {
704
- if (type === item.type) {
705
- data = JSON.parse(JSON.stringify(item));
706
- return data;
707
- }
708
- }
709
- return data;
710
- },
711
379
 
712
- parseDom(arg) {
713
- var objE = document.createElement("div");
714
- objE.innerHTML = arg;
715
- return objE.childNodes[2];
716
- },
717
-
718
- initClipboard() {
719
- if (!this.jsonClipboard) {
720
- this.jsonClipboard = new Clipboard(".json-btn");
721
- this.jsonClipboard.on("success", e => {
722
- this.$message.success("复制成功");
723
- });
724
- }
725
- },
726
380
  handleConfigSelect(value) {
727
381
  this.configTab = value;
728
382
  },
729
- handlePreview() {
730
- this.slotKeys = Object.keys(this.$slots);
731
- this.dialog.preview.visible = true;
732
- },
733
- handleGetData() {
734
- this.$refs.generateForm.getData().then(data => {
735
- this.dialog.data = {
736
- visible: true,
737
- value: JSON.stringify(data, null, 2),
738
- valueCopy: JSON.stringify(data, null, 2)
739
- };
740
- this.$nextTick(() => {
741
- this.initClipboard();
742
- });
743
- });
744
- },
745
- handleReset() {
746
- this.$refs.generateForm.reset();
747
- },
748
- handleGenerateJson() {
749
- this.dialog.config = {
750
- visible: true,
751
- value: JSON.stringify(this.widgetFormData, null, 2),
752
- valueCopy: JSON.stringify(this.widgetFormData, null, 2)
753
- };
754
- this.$nextTick(() => {
755
- this.initClipboard();
756
- });
757
- },
758
- handleGenerateCode() {
759
- this.dialog.code = {
760
- visible: true,
761
- valueHtml: generateCode(JSON.stringify(this.widgetFormData), "html"),
762
- valueVue: generateCode(JSON.stringify(this.widgetFormData), "vue"),
763
- type: "vue"
764
- };
765
- },
766
- handleUploadJson() {
767
- try {
768
- this.setJSON(JSON.parse(this.dialog.import.value));
769
- this.dialog.import.visible = false;
770
- } catch (e) {
771
- this.$message.error(e.message);
772
- }
773
- },
774
- handleDialogFullscreen() {
775
- this.$refs.vueCodeEditor.resize();
776
- this.$refs.htmlCodeEditor.resize();
777
- },
383
+
778
384
  handleClear() {
779
385
  this.widgetFormData = {
780
386
  list: [],
@@ -783,6 +389,30 @@ export default {
783
389
 
784
390
  this.widgetFormSelect = {};
785
391
  },
392
+ handleWidgetToolsChange(val, data) {
393
+ switch (val) {
394
+ case "mobile":
395
+ this.client = val;
396
+ break;
397
+ case "monitor":
398
+ this.client = val;
399
+ break;
400
+ case "import-excel":
401
+ case "import-json":
402
+ case "import-template":
403
+ this.setJSON(data);
404
+ break;
405
+ case "clear":
406
+ this.handleClear();
407
+ break;
408
+
409
+ default:
410
+ break;
411
+ }
412
+ },
413
+ handleWidgetConfigUpdate(val) {
414
+ this.widgetFormSelect = Object.assign(this.widgetFormSelect, val);
415
+ },
786
416
  clear() {
787
417
  this.handleClear();
788
418
  },
@@ -798,9 +428,6 @@ export default {
798
428
  if (json.list.length > 0) {
799
429
  this.widgetFormSelect = json.list[0];
800
430
  }
801
- },
802
- handleDataChange(field, value, data) {
803
- // console.log(field, value, data);
804
431
  }
805
432
  }
806
433
  };