tianheng-ui 0.1.23 → 0.1.25

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 (37) hide show
  1. package/lib/tianheng-ui.js +13 -13
  2. package/package.json +1 -1
  3. package/packages/FormMaking/FormConfig.vue +64 -5
  4. package/packages/FormMaking/WidgetConfig.vue +151 -33
  5. package/packages/FormMaking/WidgetTools.vue +1 -1
  6. package/packages/FormMaking/custom/config.js +10 -7
  7. package/packages/FormMaking/custom/configs/blank.vue +2 -6
  8. package/packages/FormMaking/custom/configs/button.vue +4 -46
  9. package/packages/FormMaking/custom/configs/cascader.vue +4 -45
  10. package/packages/FormMaking/custom/configs/cell.vue +2 -6
  11. package/packages/FormMaking/custom/configs/checkbox.vue +15 -62
  12. package/packages/FormMaking/custom/configs/color.vue +2 -43
  13. package/packages/FormMaking/custom/configs/date.vue +2 -42
  14. package/packages/FormMaking/custom/configs/divider.vue +2 -6
  15. package/packages/FormMaking/custom/configs/editor.vue +2 -6
  16. package/packages/FormMaking/custom/configs/filler.vue +2 -6
  17. package/packages/FormMaking/custom/configs/grid.vue +2 -6
  18. package/packages/FormMaking/custom/configs/image.vue +2 -6
  19. package/packages/FormMaking/custom/configs/input.vue +2 -42
  20. package/packages/FormMaking/custom/configs/number.vue +3 -47
  21. package/packages/FormMaking/custom/configs/radio.vue +13 -60
  22. package/packages/FormMaking/custom/configs/rate.vue +2 -44
  23. package/packages/FormMaking/custom/configs/select.vue +12 -58
  24. package/packages/FormMaking/custom/configs/slider.vue +2 -43
  25. package/packages/FormMaking/custom/configs/switch.vue +2 -43
  26. package/packages/FormMaking/custom/configs/table.vue +2 -6
  27. package/packages/FormMaking/custom/configs/tableH5.vue +2 -6
  28. package/packages/FormMaking/custom/configs/tabs.vue +14 -23
  29. package/packages/FormMaking/custom/configs/text.vue +6 -7
  30. package/packages/FormMaking/custom/configs/textarea.vue +4 -45
  31. package/packages/FormMaking/custom/configs/time.vue +2 -43
  32. package/packages/FormMaking/custom/configs/upload.vue +6 -11
  33. package/packages/FormMaking/index.vue +10 -37
  34. package/packages/TableMaking/WidgetTools.vue +8 -8
  35. package/packages/TableMaking/custom/config.js +1 -0
  36. package/packages/TableMaking/index.vue +9 -2
  37. package/packages/TableMaking/widgetConfig.vue +65 -21
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.1.23",
4
+ "version": "0.1.25",
5
5
  "author": "shu lang <403732931@qq.com>",
6
6
  "license": "MIT",
7
7
  "private": false,
@@ -8,6 +8,46 @@
8
8
  >
9
9
  <el-collapse v-model="collapseValue">
10
10
  <el-collapse-item title="表单配置" name="group-form">
11
+ <el-form-item required>
12
+ <el-tooltip
13
+ slot="label"
14
+ effect="dark"
15
+ content="字段的配置方式"
16
+ placement="top"
17
+ >
18
+ <span style="color: #409EFF;">字段类型</span>
19
+ </el-tooltip>
20
+ <el-radio-group v-model="config.fieldsType">
21
+ <el-radio-button label="custom">自定义</el-radio-button>
22
+ <el-radio-button label="fieldsApi">接口导入</el-radio-button>
23
+ </el-radio-group>
24
+ </el-form-item>
25
+ <el-form-item v-if="config.fieldsType === 'fieldsApi'" required>
26
+ <el-tooltip
27
+ slot="label"
28
+ effect="dark"
29
+ content="使用接口的出参配置可选字段"
30
+ placement="top"
31
+ >
32
+ <span style="color: #409EFF;">字段接口</span>
33
+ </el-tooltip>
34
+ <el-select
35
+ v-model="config.fieldsApi"
36
+ style="width:100%"
37
+ clearable
38
+ placeholder="请选择"
39
+ no-data-text="暂无接口,请前往【数据源模块】创建"
40
+ @change="handleFieldsApiChange"
41
+ >
42
+ <el-option
43
+ v-for="item in config.network"
44
+ :key="item.id"
45
+ :label="item.label"
46
+ :value="item.id"
47
+ >
48
+ </el-option>
49
+ </el-select>
50
+ </el-form-item>
11
51
  <el-form-item label="表单标题" required>
12
52
  <el-input
13
53
  v-model="config.title"
@@ -43,10 +83,10 @@
43
83
  no-data-text="暂无接口,请前往【接口模块】创建"
44
84
  >
45
85
  <el-option
46
- v-for="item in config.remoteFuncs"
86
+ v-for="item in config.network"
47
87
  :key="item.id"
48
88
  :label="item.label"
49
- :value="item"
89
+ :value="item.id"
50
90
  >
51
91
  </el-option>
52
92
  </el-select>
@@ -68,8 +108,8 @@
68
108
  </el-radio-group>
69
109
  </el-form-item>
70
110
  </el-collapse-item>
71
- <el-collapse-item title="操作配置" name="group-action">
72
- <el-form-item label="属性">
111
+ <el-collapse-item title="属性配置" name="group-attributes">
112
+ <el-form-item label-width="0">
73
113
  <el-checkbox v-model="config.disabled">禁用 </el-checkbox>
74
114
  <el-checkbox v-model="config.hideLabel">隐藏标签 </el-checkbox>
75
115
  </el-form-item>
@@ -88,9 +128,28 @@ export default {
88
128
  "group-form",
89
129
  "group-resultData",
90
130
  "group-label",
91
- "group-action"
131
+ "group-attributes"
92
132
  ]
93
133
  };
134
+ },
135
+ methods: {
136
+ handleFieldsApiChange(val) {
137
+ const dataArr = this.config.network.filter(item => {
138
+ return item.id === val;
139
+ });
140
+ if (dataArr.length && dataArr[0].paramsOut) {
141
+ const fields = dataArr[0].paramsOut.map(item => {
142
+ return {
143
+ label: item.note || item.name,
144
+ alias: item.name,
145
+ prop: item.name,
146
+ type: "input",
147
+ align: "left"
148
+ };
149
+ });
150
+ this.$emit("fieldsChange", fields);
151
+ } else this.$emit("fieldsChange", []);
152
+ }
94
153
  }
95
154
  };
96
155
  </script>
@@ -1,40 +1,139 @@
1
1
  <template>
2
- <div class="widgetConfig" v-if="show">
3
- <div style="line-height: 30px;"></div>
4
- <div class="flexView">
5
- <div style="width:100px">类型切换</div>
6
- <el-select
7
- :value="data.type"
8
- style="width:100%;"
9
- size="small"
10
- placeholder="请选择类型"
11
- @change="handleTypeChange"
12
- >
13
- <el-option
14
- v-for="item in Object.values(compsData)"
15
- :key="item.type"
16
- :label="item.name"
17
- :value="item.type"
2
+ <div class="widget-config" v-if="show">
3
+ <el-form
4
+ :model="data"
5
+ label-position="left"
6
+ label-width="80px"
7
+ size="small"
8
+ :rules="formRules"
9
+ ref="formRef"
10
+ >
11
+ <el-collapse v-model="collapseValue">
12
+ <el-collapse-item title="通用配置" name="group-general">
13
+ <el-form-item>
14
+ <el-tooltip
15
+ slot="label"
16
+ effect="dark"
17
+ content="会导致该组件配置信息重置,请谨慎使用!"
18
+ placement="top"
19
+ >
20
+ <span style="color: #409EFF;">组件切换</span>
21
+ </el-tooltip>
22
+ <el-select
23
+ :value="data.type"
24
+ style="width:100%;"
25
+ placeholder="请选择类型"
26
+ @change="handleTypeChange"
27
+ >
28
+ <el-option
29
+ v-for="item in Object.values(compsData)"
30
+ :key="item.type"
31
+ :label="item.name"
32
+ :value="item.type"
33
+ >
34
+ </el-option>
35
+ </el-select>
36
+ </el-form-item>
37
+ <el-form-item required>
38
+ <el-tooltip
39
+ slot="label"
40
+ effect="dark"
41
+ content="组件关联数据表中的唯一字段"
42
+ placement="top"
43
+ >
44
+ <span style="color: #409EFF;">组件字段</span>
45
+ </el-tooltip>
46
+ <el-input
47
+ v-if="config.fieldsType === 'custom'"
48
+ v-model="data.model"
49
+ ></el-input>
50
+ <el-select
51
+ v-else
52
+ v-model="data.model"
53
+ style="width:100%;"
54
+ placeholder="请选择字段"
55
+ >
56
+ <el-option
57
+ v-for="item in fields"
58
+ :key="item.prop"
59
+ :label="item.label"
60
+ :value="item.prop"
61
+ >
62
+ </el-option>
63
+ </el-select>
64
+ </el-form-item>
65
+ <el-form-item v-if="config.fieldsType === 'fieldsApi'">
66
+ <el-tooltip
67
+ slot="label"
68
+ effect="dark"
69
+ content="表单提交时的入参名,对应数据表中的字段"
70
+ placement="top"
71
+ >
72
+ <span style="color: #409EFF;">字段标识</span>
73
+ </el-tooltip>
74
+ <el-input v-model="data.model" readonly></el-input>
75
+ </el-form-item>
76
+ </el-collapse-item>
77
+
78
+ <component
79
+ :widget="data"
80
+ :config="config"
81
+ :fields="fields"
82
+ :is="compsData[data.type].content"
83
+ @events-show="handleEventDialogShow"
84
+ @events-edit="handleEventsCollapseClick"
85
+ ></component>
86
+
87
+ <el-collapse-item
88
+ v-if="data.events && Object.keys(data.events).length"
89
+ name="group-action"
18
90
  >
19
- </el-option>
20
- </el-select>
21
- <el-tooltip
22
- style="padding-left:10px;color:#F56C6C;"
23
- effect="dark"
24
- content="切换类型会导致该组件配置信息重置,请谨慎使用!"
25
- placement="top"
26
- >
27
- <i class="el-icon-warning"></i>
28
- </el-tooltip>
29
- </div>
91
+ <div slot="title" style="width:100%">
92
+ <span>动作设置</span>
93
+ <span
94
+ style="float: right;margin-right: 10px;"
95
+ @click.stop="handleEventsShow"
96
+ >配置</span
97
+ >
98
+ </div>
99
+ <el-form-item
100
+ v-for="event in Object.keys(data.events)"
101
+ :key="event"
102
+ :label="event"
103
+ >
104
+ <div class="eventsCollapse-item">
105
+ <el-select
106
+ v-model="data.events[event]"
107
+ placeholder="请选择"
108
+ clearable
109
+ >
110
+ <el-option
111
+ v-for="item in config.eventScript"
112
+ :key="item.id"
113
+ :label="item.label"
114
+ :value="item.id"
115
+ >
116
+ </el-option>
117
+ </el-select>
118
+ <i
119
+ v-if="data.events[event]"
120
+ class="el-icon-edit"
121
+ @click="handleEventsEdit(data.events[event])"
122
+ ></i>
123
+ </div>
124
+ </el-form-item>
125
+ </el-collapse-item>
126
+ </el-collapse>
127
+ </el-form>
30
128
 
31
- <component
129
+ <!-- <component
32
130
  :widget="data"
33
131
  :config="config"
132
+ :fields="fields"
34
133
  :is="compsData[data.type].content"
35
134
  @events-show="handleEventDialogShow"
36
135
  @events-edit="handleEventsCollapseClick"
37
- ></component>
136
+ ></component> -->
38
137
 
39
138
  <th-dialog
40
139
  title="动作设置"
@@ -157,7 +256,8 @@ export default {
157
256
  default: () => {
158
257
  return {};
159
258
  }
160
- }
259
+ },
260
+ fields: Array
161
261
  },
162
262
  data() {
163
263
  return {
@@ -205,7 +305,9 @@ export default {
205
305
  value: "goPage({path:'',query:{}})",
206
306
  score: 1
207
307
  }
208
- ]
308
+ ],
309
+ collapseValue: ["group-general", "group-element", "group-action"],
310
+ formRules: {}
209
311
  };
210
312
  },
211
313
  // watch: {
@@ -380,9 +482,25 @@ export default {
380
482
  };
381
483
  </script>
382
484
 
485
+ <style lang="scss">
486
+ .widget-config {
487
+ .el-collapse-item__header {
488
+ padding: 0 10px;
489
+ height: 40px;
490
+ line-height: 40px;
491
+ background-color: #f5f7f9;
492
+ }
493
+ .el-collapse-item__wrap {
494
+ padding: 10px;
495
+ }
496
+ .el-radio-button__inner {
497
+ padding: 7px !important;
498
+ }
499
+ }
500
+ </style>
501
+
383
502
  <style lang="scss" scoped>
384
- .widgetConfig {
385
- padding: 10px;
503
+ .widget-config {
386
504
  .el-dialog__body {
387
505
  padding: 20px;
388
506
  }
@@ -155,7 +155,7 @@
155
155
  >
156
156
  <generate-form
157
157
  v-if="dialog.preview.visible"
158
- :data="formData"
158
+ :config="formData"
159
159
  :value="formValue"
160
160
  :oauthConfig="oauthConfig"
161
161
  :remote="remoteData"
@@ -132,7 +132,7 @@ export const basicComponents = [
132
132
  children: "children"
133
133
  },
134
134
  remote: false,
135
- remoteFunc: {},
135
+ remoteFunc: "",
136
136
  remoteOptions: [],
137
137
  disabled: false,
138
138
  border: false, //边框
@@ -175,7 +175,7 @@ export const basicComponents = [
175
175
  children: "children"
176
176
  },
177
177
  remote: false,
178
- remoteFunc: {},
178
+ remoteFunc: "",
179
179
  remoteOptions: [],
180
180
  disabled: false,
181
181
  border: false, //边框
@@ -280,7 +280,7 @@ export const basicComponents = [
280
280
  children: "children"
281
281
  },
282
282
  remote: false,
283
- remoteFunc: {},
283
+ remoteFunc: "",
284
284
  remoteOptions: [],
285
285
  hidden: false,
286
286
  hideLabel: false
@@ -510,7 +510,7 @@ export const basicComponents = [
510
510
  min: 0,
511
511
  //isEdit: false,
512
512
  remote: false,
513
- remoteFunc: {},
513
+ remoteFunc: "",
514
514
  action: "https://jsonplaceholder.typicode.com/posts/",
515
515
  disabled: false,
516
516
  required: false,
@@ -567,7 +567,7 @@ export const basicComponents = [
567
567
  checkStrictly: false //选择任意一级选项
568
568
  },
569
569
  remote: true,
570
- remoteFunc: {},
570
+ remoteFunc: "",
571
571
  remoteOptions: [],
572
572
  hidden: false,
573
573
  hideLabel: false
@@ -667,7 +667,7 @@ export const advanceComponents = [
667
667
  isLabelWidth: false,
668
668
  hideLabel: true,
669
669
  remote: false,
670
- remoteFunc: {},
670
+ remoteFunc: "",
671
671
  remoteOption: [],
672
672
  tableColumn: false
673
673
  },
@@ -772,6 +772,8 @@ export const layoutComponents = [
772
772
  export const templateComponents = [];
773
773
 
774
774
  export const baseConfig = {
775
+ fieldsType: "fieldsApi",
776
+ fieldsApi: "",
775
777
  ui: "element",
776
778
  title: "",
777
779
  width: "",
@@ -793,5 +795,6 @@ export const baseConfig = {
793
795
  label: "refresh",
794
796
  value: ""
795
797
  }
796
- ]
798
+ ],
799
+ network: []
797
800
  };
@@ -1,10 +1,6 @@
1
1
  <template>
2
2
  <div class="configComponents">
3
- <el-form label-position="top" size="small">
4
- <el-form-item label="字段标识" required>
5
- <el-input v-model="widget.model"></el-input>
6
- </el-form-item>
7
-
3
+ <el-collapse-item title="组件配置" name="group-element">
8
4
  <el-form-item label="标题">
9
5
  <el-input v-model="widget.name"></el-input>
10
6
  </el-form-item>
@@ -37,7 +33,7 @@
37
33
  <el-form-item label="校验">
38
34
  <el-checkbox v-model="widget.options.required">必填</el-checkbox>
39
35
  </el-form-item>
40
- </el-form>
36
+ </el-collapse-item>
41
37
  </div>
42
38
  </template>
43
39
 
@@ -1,10 +1,6 @@
1
1
  <template>
2
2
  <div class="configComponents">
3
- <el-form label-position="top" size="small">
4
- <el-form-item label="字段标识" required>
5
- <el-input v-model="widget.model"></el-input>
6
- </el-form-item>
7
-
3
+ <el-collapse-item title="组件配置" name="group-element">
8
4
  <el-form-item label="标题">
9
5
  <el-input v-model="widget.name" clearable></el-input>
10
6
  </el-form-item>
@@ -100,53 +96,15 @@
100
96
  no-data-text="暂无接口,请前往【接口模块】创建"
101
97
  >
102
98
  <el-option
103
- v-for="item in config.remoteFuncs"
99
+ v-for="item in config.network"
104
100
  :key="item.id"
105
101
  :label="item.label"
106
- :value="item"
102
+ :value="item.id"
107
103
  >
108
104
  </el-option>
109
105
  </el-select>
110
106
  </el-form-item>
111
-
112
- <el-form-item>
113
- <div class="config-header" slot="label">
114
- <span class="title">动作设置</span>
115
- <span class="value" @click="handleEventsShow">配置</span>
116
- </div>
117
-
118
- <el-collapse v-show="!widget.options.remote" class="eventsCollapse">
119
- <el-collapse-item
120
- v-for="event in Object.keys(widget.events)"
121
- :key="event"
122
- :title="event"
123
- :name="event"
124
- >
125
- <div class="eventsCollapse-item">
126
- <el-select
127
- v-model="widget.events[event]"
128
- placeholder="请选择"
129
- size="mini"
130
- clearable
131
- >
132
- <el-option
133
- v-for="item in config.eventScript"
134
- :key="item.id"
135
- :label="item.label"
136
- :value="item.id"
137
- >
138
- </el-option>
139
- </el-select>
140
- <i
141
- v-if="widget.events[event]"
142
- class="el-icon-edit"
143
- @click="handleEventsEdit(widget.events[event])"
144
- ></i>
145
- </div>
146
- </el-collapse-item>
147
- </el-collapse>
148
- </el-form-item>
149
- </el-form>
107
+ </el-collapse-item>
150
108
  </div>
151
109
  </template>
152
110
 
@@ -1,10 +1,6 @@
1
1
  <template>
2
2
  <div class="configComponents">
3
- <el-form label-position="top" size="small">
4
- <el-form-item label="字段标识" required>
5
- <el-input v-model="widget.model"></el-input>
6
- </el-form-item>
7
-
3
+ <el-collapse-item title="组件配置" name="group-element">
8
4
  <el-form-item label="标题">
9
5
  <el-input v-model="widget.name"></el-input>
10
6
  </el-form-item>
@@ -69,10 +65,10 @@
69
65
  clearable
70
66
  >
71
67
  <el-option
72
- v-for="item in config.remoteFuncs"
68
+ v-for="item in config.network"
73
69
  :key="item.id"
74
70
  :label="item.label"
75
- :value="item"
71
+ :value="item.id"
76
72
  >
77
73
  </el-option>
78
74
  </el-select>
@@ -115,44 +111,7 @@
115
111
  <el-form-item label="校验">
116
112
  <el-checkbox v-model="widget.options.required">必填</el-checkbox>
117
113
  </el-form-item>
118
-
119
- <el-form-item>
120
- <div class="config-header" slot="label">
121
- <span class="title">动作设置</span>
122
- <span class="value" @click="handleEventsShow">配置</span>
123
- </div>
124
- <el-collapse class="eventsCollapse">
125
- <el-collapse-item
126
- v-for="event in Object.keys(widget.events)"
127
- :key="event"
128
- :title="event"
129
- :name="event"
130
- >
131
- <div class="eventsCollapse-item">
132
- <el-select
133
- v-model="widget.events[event]"
134
- placeholder="请选择"
135
- size="mini"
136
- clearable
137
- >
138
- <el-option
139
- v-for="item in config.eventScript"
140
- :key="item.id"
141
- :label="item.label"
142
- :value="item.id"
143
- >
144
- </el-option>
145
- </el-select>
146
- <i
147
- v-if="widget.events[event]"
148
- class="el-icon-edit"
149
- @click="handleEventsEdit(widget.events[event])"
150
- ></i>
151
- </div>
152
- </el-collapse-item>
153
- </el-collapse>
154
- </el-form-item>
155
- </el-form>
114
+ </el-collapse-item>
156
115
  </div>
157
116
  </template>
158
117
 
@@ -1,10 +1,6 @@
1
1
  <template>
2
2
  <div class="configComponents">
3
- <el-form label-position="top" size="small">
4
- <el-form-item label="字段标识" required>
5
- <el-input v-model="widget.model"></el-input>
6
- </el-form-item>
7
-
3
+ <el-collapse-item title="组件配置" name="group-element">
8
4
  <el-form-item label="标题">
9
5
  <el-input v-model="widget.name"></el-input>
10
6
  </el-form-item>
@@ -58,7 +54,7 @@
58
54
  <el-checkbox v-model="widget.options.hidden">隐藏组件</el-checkbox>
59
55
  <el-checkbox v-model="widget.options.hideLabel">隐藏标签</el-checkbox>
60
56
  </el-form-item>
61
- </el-form>
57
+ </el-collapse-item>
62
58
  </div>
63
59
  </template>
64
60