tianheng-ui 0.1.22 → 0.1.24

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 +140 -50
  4. package/packages/FormMaking/WidgetConfig.vue +146 -32
  5. package/packages/FormMaking/WidgetTools.vue +1 -1
  6. package/packages/FormMaking/custom/config.js +13 -9
  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 +31 -56
  34. package/packages/FormMaking/styles/index.scss +9 -9
  35. package/packages/TableMaking/custom/config.js +1 -1
  36. package/packages/TableMaking/index.vue +25 -2
  37. package/packages/TableMaking/widgetConfig.vue +39 -13
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.22",
4
+ "version": "0.1.24",
5
5
  "author": "shu lang <403732931@qq.com>",
6
6
  "license": "MIT",
7
7
  "private": false,
@@ -1,60 +1,150 @@
1
1
  <template>
2
- <div class="form-config-container">
3
- <el-form label-position="top">
4
- <el-form-item label="UI">
5
- <el-radio-group v-model="data.ui">
6
- <el-radio-button label="element">Element</el-radio-button>
7
- <el-radio-button label="vant" disabled>Vant</el-radio-button>
8
- </el-radio-group>
9
- </el-form-item>
2
+ <div class="form-config">
3
+ <el-form
4
+ :model="config"
5
+ label-position="left"
6
+ label-width="80px"
7
+ size="small"
8
+ >
9
+ <el-collapse v-model="collapseValue">
10
+ <el-collapse-item title="表单配置" name="group-form">
11
+ <el-form-item label="字段类型" required>
12
+ <el-radio-group v-model="config.fieldsType">
13
+ <el-radio-button label="custom">自定义</el-radio-button>
14
+ <el-radio-button label="fieldsTable">字段表</el-radio-button>
15
+ </el-radio-group>
16
+ </el-form-item>
17
+ <el-form-item
18
+ v-if="config.fieldsType === 'fieldsTable'"
19
+ label="字段表"
20
+ required
21
+ >
22
+ <el-select
23
+ v-model="config.fieldsTable"
24
+ style="width:100%"
25
+ clearable
26
+ placeholder="请选择"
27
+ no-data-text="暂无接口,请前往【数据源模块】创建"
28
+ @change="handleFieldsTableChange"
29
+ >
30
+ <el-option
31
+ v-for="item in fieldsOptions"
32
+ :key="item.id"
33
+ :label="item.label"
34
+ :value="item.id"
35
+ >
36
+ </el-option>
37
+ </el-select>
38
+ </el-form-item>
39
+ <el-form-item label="表单标题" required>
40
+ <el-input
41
+ v-model="config.title"
42
+ placeholder="请输入"
43
+ clearable
44
+ ></el-input>
45
+ </el-form-item>
46
+ <el-form-item label="表单宽度">
47
+ <el-input v-model="config.width"></el-input>
48
+ </el-form-item>
49
+ <el-form-item label="组件库">
50
+ <el-radio-group v-model="config.ui">
51
+ <el-radio-button label="element">Element</el-radio-button>
52
+ <el-radio-button label="vant" disabled>Vant</el-radio-button>
53
+ </el-radio-group>
54
+ </el-form-item>
55
+ <el-form-item label="组件尺寸">
56
+ <el-radio-group v-model="config.size">
57
+ <el-radio-button label="medium">medium</el-radio-button>
58
+ <el-radio-button label="small">small</el-radio-button>
59
+ <el-radio-button label="mini">mini</el-radio-button>
60
+ </el-radio-group>
61
+ </el-form-item>
62
+ </el-collapse-item>
10
63
 
11
- <el-form-item label="表单标题" required>
12
- <el-input
13
- v-model="data.title"
14
- placeholder="请输入"
15
- clearable
16
- ></el-input>
17
- </el-form-item>
18
-
19
- <el-form-item label="表单宽度">
20
- <el-input v-model="data.width"></el-input>
21
- </el-form-item>
22
-
23
- <el-form-item label="表单标签宽度">
24
- <el-input-number
25
- v-model="data.labelWidth"
26
- :min="0"
27
- :max="200"
28
- :step="10"
29
- ></el-input-number>
30
- </el-form-item>
31
-
32
- <el-form-item label="标签对齐方式">
33
- <el-radio-group v-model="data.labelPosition">
34
- <el-radio-button label="left">左对齐</el-radio-button>
35
- <el-radio-button label="right">右对齐</el-radio-button>
36
- <el-radio-button label="top">顶部对齐</el-radio-button>
37
- </el-radio-group>
38
- </el-form-item>
39
-
40
- <el-form-item label="组件尺寸">
41
- <el-radio-group v-model="data.size">
42
- <el-radio-button label="medium">medium</el-radio-button>
43
- <el-radio-button label="small">small</el-radio-button>
44
- <el-radio-button label="mini">mini</el-radio-button>
45
- </el-radio-group>
46
- </el-form-item>
47
-
48
- <el-form-item label="操作属性">
49
- <el-checkbox v-model="data.disabled">禁用 </el-checkbox>
50
- <el-checkbox v-model="data.hideLabel">隐藏标签 </el-checkbox>
51
- </el-form-item>
64
+ <el-collapse-item title="数据配置" name="group-resultData">
65
+ <el-form-item label="表单回填">
66
+ <el-select
67
+ v-model="config.mounted.api"
68
+ value-key="id"
69
+ clearable
70
+ placeholder="请选择数据方法"
71
+ no-data-text="暂无接口,请前往【接口模块】创建"
72
+ >
73
+ <el-option
74
+ v-for="item in config.network"
75
+ :key="item.id"
76
+ :label="item.label"
77
+ :value="item.id"
78
+ >
79
+ </el-option>
80
+ </el-select>
81
+ </el-form-item>
82
+ </el-collapse-item>
83
+ <el-collapse-item title="标签配置" name="group-label">
84
+ <el-form-item label="标签宽度">
85
+ <el-input-number
86
+ v-model="config.labelWidth"
87
+ :min="0"
88
+ :step="5"
89
+ ></el-input-number>
90
+ </el-form-item>
91
+ <el-form-item label="对齐方式">
92
+ <el-radio-group v-model="config.labelPosition">
93
+ <el-radio-button label="left">左对齐</el-radio-button>
94
+ <el-radio-button label="right">右对齐</el-radio-button>
95
+ <el-radio-button label="top">顶部对齐</el-radio-button>
96
+ </el-radio-group>
97
+ </el-form-item>
98
+ </el-collapse-item>
99
+ <el-collapse-item title="属性配置" name="group-attributes">
100
+ <el-form-item label-width="0">
101
+ <el-checkbox v-model="config.disabled">禁用 </el-checkbox>
102
+ <el-checkbox v-model="config.hideLabel">隐藏标签 </el-checkbox>
103
+ </el-form-item>
104
+ </el-collapse-item>
105
+ </el-collapse>
52
106
  </el-form>
53
107
  </div>
54
108
  </template>
55
109
 
56
110
  <script>
57
111
  export default {
58
- props: ["data"]
112
+ props: ["config", "fieldsOptions"],
113
+ data() {
114
+ return {
115
+ collapseValue: [
116
+ "group-form",
117
+ "group-resultData",
118
+ "group-label",
119
+ "group-attributes"
120
+ ]
121
+ };
122
+ },
123
+ methods: {
124
+ handleFieldsTableChange(val) {
125
+ const data = this.fieldsOptions.filter(item => {
126
+ return item.id === val;
127
+ });
128
+ if (data.length) this.$emit("fieldsTableChange", data[0].children);
129
+ else this.$emit("fieldsTableChange", []);
130
+ }
131
+ }
59
132
  };
60
133
  </script>
134
+
135
+ <style lang="scss">
136
+ .form-config {
137
+ .el-collapse-item__header {
138
+ padding: 0 10px;
139
+ height: 40px;
140
+ line-height: 40px;
141
+ background-color: #f5f7f9;
142
+ }
143
+ .el-collapse-item__wrap {
144
+ padding: 10px;
145
+ }
146
+ .el-radio-button__inner {
147
+ padding: 7px !important;
148
+ }
149
+ }
150
+ </style>
@@ -1,40 +1,134 @@
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
66
+ v-if="config.fieldsType === 'fieldsTable'"
67
+ label="字段标识"
68
+ >
69
+ <el-input v-model="data.model" readonly></el-input>
70
+ </el-form-item>
71
+ </el-collapse-item>
72
+
73
+ <component
74
+ :widget="data"
75
+ :config="config"
76
+ :fields="fields"
77
+ :is="compsData[data.type].content"
78
+ @events-show="handleEventDialogShow"
79
+ @events-edit="handleEventsCollapseClick"
80
+ ></component>
81
+
82
+ <el-collapse-item
83
+ v-if="data.events && Object.keys(data.events).length"
84
+ name="group-action"
18
85
  >
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>
86
+ <div slot="title" style="width:100%">
87
+ <span>动作设置</span>
88
+ <span
89
+ style="float: right;margin-right: 10px;"
90
+ @click.stop="handleEventsShow"
91
+ >配置</span
92
+ >
93
+ </div>
94
+ <el-form-item
95
+ v-for="event in Object.keys(data.events)"
96
+ :key="event"
97
+ :label="event"
98
+ >
99
+ <div class="eventsCollapse-item">
100
+ <el-select
101
+ v-model="data.events[event]"
102
+ placeholder="请选择"
103
+ clearable
104
+ >
105
+ <el-option
106
+ v-for="item in config.eventScript"
107
+ :key="item.id"
108
+ :label="item.label"
109
+ :value="item.id"
110
+ >
111
+ </el-option>
112
+ </el-select>
113
+ <i
114
+ v-if="data.events[event]"
115
+ class="el-icon-edit"
116
+ @click="handleEventsEdit(data.events[event])"
117
+ ></i>
118
+ </div>
119
+ </el-form-item>
120
+ </el-collapse-item>
121
+ </el-collapse>
122
+ </el-form>
30
123
 
31
- <component
124
+ <!-- <component
32
125
  :widget="data"
33
126
  :config="config"
127
+ :fields="fields"
34
128
  :is="compsData[data.type].content"
35
129
  @events-show="handleEventDialogShow"
36
130
  @events-edit="handleEventsCollapseClick"
37
- ></component>
131
+ ></component> -->
38
132
 
39
133
  <th-dialog
40
134
  title="动作设置"
@@ -157,7 +251,8 @@ export default {
157
251
  default: () => {
158
252
  return {};
159
253
  }
160
- }
254
+ },
255
+ fields: Array
161
256
  },
162
257
  data() {
163
258
  return {
@@ -205,7 +300,9 @@ export default {
205
300
  value: "goPage({path:'',query:{}})",
206
301
  score: 1
207
302
  }
208
- ]
303
+ ],
304
+ collapseValue: ["group-general", "group-element", "group-action"],
305
+ formRules: {}
209
306
  };
210
307
  },
211
308
  // watch: {
@@ -380,8 +477,25 @@ export default {
380
477
  };
381
478
  </script>
382
479
 
480
+ <style lang="scss">
481
+ .widget-config {
482
+ .el-collapse-item__header {
483
+ padding: 0 10px;
484
+ height: 40px;
485
+ line-height: 40px;
486
+ background-color: #f5f7f9;
487
+ }
488
+ .el-collapse-item__wrap {
489
+ padding: 10px;
490
+ }
491
+ .el-radio-button__inner {
492
+ padding: 7px !important;
493
+ }
494
+ }
495
+ </style>
496
+
383
497
  <style lang="scss" scoped>
384
- .widgetConfig {
498
+ .widget-config {
385
499
  .el-dialog__body {
386
500
  padding: 20px;
387
501
  }
@@ -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, //边框
@@ -236,9 +236,9 @@ export const basicComponents = [
236
236
  clearable: true,
237
237
  placeholder: "",
238
238
  startPlaceholder: "",
239
- startField:'',
239
+ startField: "",
240
240
  endPlaceholder: "",
241
- endField:'',
241
+ endField: "",
242
242
  type: "date",
243
243
  format: "yyyy-MM-dd",
244
244
  timestamp: 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: "custom",
776
+ fieldsTable: "",
775
777
  ui: "element",
776
778
  title: "",
777
779
  width: "",
@@ -781,6 +783,7 @@ export const baseConfig = {
781
783
  size: "small",
782
784
  disabled: false,
783
785
  hideLabel: false,
786
+ mounted: { api: "" },
784
787
  eventScript: [
785
788
  {
786
789
  id: "mounted",
@@ -792,5 +795,6 @@ export const baseConfig = {
792
795
  label: "refresh",
793
796
  value: ""
794
797
  }
795
- ]
798
+ ],
799
+ network: []
796
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