tianheng-ui 0.1.23 → 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 (35) hide show
  1. package/lib/tianheng-ui.js +13 -13
  2. package/package.json +1 -1
  3. package/packages/FormMaking/FormConfig.vue +43 -6
  4. package/packages/FormMaking/WidgetConfig.vue +146 -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 +12 -37
  34. package/packages/TableMaking/index.vue +25 -2
  35. package/packages/TableMaking/widgetConfig.vue +38 -12
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.24",
5
5
  "author": "shu lang <403732931@qq.com>",
6
6
  "license": "MIT",
7
7
  "private": false,
@@ -8,6 +8,34 @@
8
8
  >
9
9
  <el-collapse v-model="collapseValue">
10
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>
11
39
  <el-form-item label="表单标题" required>
12
40
  <el-input
13
41
  v-model="config.title"
@@ -43,10 +71,10 @@
43
71
  no-data-text="暂无接口,请前往【接口模块】创建"
44
72
  >
45
73
  <el-option
46
- v-for="item in config.remoteFuncs"
74
+ v-for="item in config.network"
47
75
  :key="item.id"
48
76
  :label="item.label"
49
- :value="item"
77
+ :value="item.id"
50
78
  >
51
79
  </el-option>
52
80
  </el-select>
@@ -68,8 +96,8 @@
68
96
  </el-radio-group>
69
97
  </el-form-item>
70
98
  </el-collapse-item>
71
- <el-collapse-item title="操作配置" name="group-action">
72
- <el-form-item label="属性">
99
+ <el-collapse-item title="属性配置" name="group-attributes">
100
+ <el-form-item label-width="0">
73
101
  <el-checkbox v-model="config.disabled">禁用 </el-checkbox>
74
102
  <el-checkbox v-model="config.hideLabel">隐藏标签 </el-checkbox>
75
103
  </el-form-item>
@@ -81,16 +109,25 @@
81
109
 
82
110
  <script>
83
111
  export default {
84
- props: ["config"],
112
+ props: ["config", "fieldsOptions"],
85
113
  data() {
86
114
  return {
87
115
  collapseValue: [
88
116
  "group-form",
89
117
  "group-resultData",
90
118
  "group-label",
91
- "group-action"
119
+ "group-attributes"
92
120
  ]
93
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
+ }
94
131
  }
95
132
  };
96
133
  </script>
@@ -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,9 +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 {
385
- padding: 10px;
498
+ .widget-config {
386
499
  .el-dialog__body {
387
500
  padding: 20px;
388
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, //边框
@@ -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: "",
@@ -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