tianheng-ui 0.1.69 → 0.1.70

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 (31) hide show
  1. package/lib/theme-chalk/styles/dialog.scss +56 -40
  2. package/lib/theme-chalk/styles/feature.scss +7 -0
  3. package/lib/tianheng-ui.js +13 -13
  4. package/package.json +1 -1
  5. package/packages/Dialog/index.vue +18 -9
  6. package/packages/FormMaking/GenerateForm.vue +27 -42
  7. package/packages/FormMaking/GenerateFormItem.vue +10 -26
  8. package/packages/FormMaking/WidgetFormItem.vue +9 -7
  9. package/packages/FormMaking/WidgetGuide.vue +86 -0
  10. package/packages/FormMaking/WidgetSelect.vue +2 -2
  11. package/packages/FormMaking/WidgetTools.vue +10 -6
  12. package/packages/FormMaking/custom/config.js +2 -31
  13. package/packages/FormMaking/custom/configs/list.vue +11 -12
  14. package/packages/FormMaking/custom/configs/radio.vue +2 -5
  15. package/packages/FormMaking/custom/configs/table.vue +12 -9
  16. package/packages/FormMaking/custom/configs/tabs.vue +69 -55
  17. package/packages/FormMaking/custom/index.js +1 -1
  18. package/packages/FormMaking/custom/items/grid_dev.vue +5 -8
  19. package/packages/FormMaking/custom/items/list_dev.vue +19 -23
  20. package/packages/FormMaking/custom/items/list_pro.vue +16 -14
  21. package/packages/FormMaking/custom/items/table_dev.vue +13 -12
  22. package/packages/FormMaking/custom/items/table_pro.vue +5 -5
  23. package/packages/FormMaking/custom/items/tabs_dev.vue +4 -7
  24. package/packages/FormMaking/custom/items/tabs_pro.vue +7 -9
  25. package/packages/FormMaking/index.vue +62 -76
  26. package/packages/FormMaking/styles/index.scss +1 -1
  27. package/packages/TableMaking/index.vue +18 -3
  28. package/packages/TableMaking/widgetGuide.vue +122 -58
  29. package/packages/FormMaking/custom/configs/tableH5.vue +0 -98
  30. package/packages/FormMaking/custom/items/tableH5_dev.vue +0 -112
  31. package/packages/FormMaking/custom/items/tableH5_pro.vue +0 -119
@@ -55,77 +55,65 @@
55
55
  </el-form-item>
56
56
 
57
57
  <el-form-item label-width="0">
58
- <div v-if="widget.options.remote">
58
+ <div v-if="widget.options.remote.open">
59
59
  <el-select
60
- style="width:100%"
61
- v-model="widget.options.remote.api"
62
- placeholder="请选择"
63
- no-data-text="暂无数据,请查阅相关文档说明"
64
- clearable
65
- filterable
66
- >
67
- <el-option
68
- v-for="item in apiOptions"
69
- :key="item.id"
70
- :label="item.name"
71
- :value="item.id"
60
+ style="width:100%;margin-bottom:5px;"
61
+ v-model="widget.options.remote.api"
62
+ placeholder="请选择"
63
+ no-data-text="暂无数据,请查阅相关文档说明"
64
+ clearable
65
+ filterable
72
66
  >
73
- </el-option>
74
- </el-select>
75
-
76
- <!-- <el-input size="mini" style="" v-model="widget.options.props.value">
77
- <template slot="prepend">
78
- <div style="width:30px;">值</div>
79
- </template>
67
+ <el-option
68
+ v-for="item in apiOptions"
69
+ :key="item.id"
70
+ :label="item.name"
71
+ :value="item.id"
72
+ >
73
+ </el-option>
74
+ </el-select>
75
+ <el-input
76
+ style="margin-bottom:5px;"
77
+ v-model="widget.options.remote.props.value"
78
+ >
79
+ <div slot="prepend">内容</div>
80
+ </el-input>
81
+ <el-input v-model="widget.options.remote.props.label">
82
+ <div slot="prepend">标签</div>
80
83
  </el-input>
81
- <el-input size="mini" style="" v-model="widget.options.props.label">
82
- <template slot="prepend">
83
- <div style="width:30px;">标签</div>
84
- </template>
85
- </el-input> -->
86
84
  </div>
87
85
  <template v-else>
88
86
  <el-radio-group v-model="widget.options.defaultValue">
89
87
  <draggable
90
- tag="ul"
91
88
  :list="widget.options.columns"
92
89
  v-bind="{
93
- group: { name: 'tabs' },
90
+ group: { name: 'options' },
94
91
  ghostClass: 'ghost',
95
- handle: '.drag-item'
92
+ handle: '.drag'
96
93
  }"
97
- handle=".drag-item"
94
+ handle=".drag"
98
95
  >
99
- <li v-for="(item, index) in widget.options.columns" :key="index">
100
- <el-radio :label="item.value" style="margin-right: 5px;">
101
- <el-input
102
- v-model="item.value"
103
- style="width:90px;"
104
- size="mini"
105
- placeholder="value"
106
- ></el-input>
107
- <el-input
108
- v-model="item.label"
109
- style="width:90px;"
110
- size="mini"
111
- placeholder="label"
112
- ></el-input>
113
- </el-radio>
114
- <i
115
- class="drag-item"
116
- style="font-size: 16px;margin: 0 5px;cursor: move;"
117
- ><i class="iconfont icon-icon_bars"></i
118
- ></i>
96
+ <div
97
+ v-for="(item, index) in widget.options.columns"
98
+ class="draggable-item"
99
+ :key="index"
100
+ >
101
+ <i class="drag"><i class="iconfont icon-icon_bars"></i></i>
102
+ <el-radio :label="item.value"> <span></span> </el-radio>
103
+ <div class="content">
104
+ <el-input v-model="item.value"></el-input>
105
+ <el-input v-model="item.label"></el-input>
106
+ </div>
119
107
  <el-button
120
- @click="handleOptionsRemove(index)"
121
- circle
122
- plain
108
+ class="delete"
123
109
  type="danger"
124
110
  size="mini"
125
111
  icon="el-icon-minus"
126
- style="padding: 4px;margin-left: 5px;"
112
+ circle
113
+ plain
114
+ @click="handleOptionsRemove(index)"
127
115
  ></el-button>
128
- </li>
116
+ </div>
129
117
  </draggable>
130
118
  </el-radio-group>
131
119
 
@@ -168,4 +156,30 @@ export default {
168
156
  };
169
157
  </script>
170
158
 
171
- <style></style>
159
+ <style lang="scss" scoped>
160
+ .draggable-item {
161
+ margin-bottom: 5px;
162
+ display: flex;
163
+ align-items: center;
164
+ .el-radio {
165
+ margin-right: 0;
166
+ padding-left: 10px;
167
+ }
168
+
169
+ .content {
170
+ flex: 1;
171
+ display: flex;
172
+ margin-right: 5px;
173
+ > div {
174
+ margin: 0 2px;
175
+ }
176
+ }
177
+ .drag {
178
+ font-size: 16px;
179
+ cursor: move;
180
+ }
181
+ .delete {
182
+ padding: 4px;
183
+ }
184
+ }
185
+ </style>
@@ -20,7 +20,7 @@ const basicComponents = [
20
20
  "editor",
21
21
  "cascader"
22
22
  ];
23
- const advanceComponents = ["table", "tableH5", "list", "tabs"];
23
+ const advanceComponents = ["table", "list", "tabs"];
24
24
  const layoutComponents = ["grid", "alliance", "filler", "divider"];
25
25
  const businessComponents = ["blank", "descriptions"];
26
26
 
@@ -12,13 +12,13 @@
12
12
  >
13
13
  <draggable
14
14
  v-model="column.list"
15
- :no-transition-on-drag="true"
16
15
  v-bind="{
17
16
  group: 'people',
18
17
  ghostClass: 'draggable-ghost',
19
18
  animation: 200,
20
19
  handle: '.drag-widget'
21
20
  }"
21
+ :no-transition-on-drag="true"
22
22
  @add="handleWidgetAdd($event, widget, columnIndex)"
23
23
  >
24
24
  <transition-group name="fade" tag="div" class="draggable-list">
@@ -50,18 +50,15 @@ export default {
50
50
  mixins: [itemsComponent, eventMixin],
51
51
  data() {
52
52
  return {
53
- selectWidget: {}
53
+ selectWidget: this.select
54
54
  };
55
55
  },
56
56
  watch: {
57
57
  select(val) {
58
58
  this.selectWidget = val;
59
59
  },
60
- selectWidget: {
61
- handler(val) {
62
- this.$emit("update:select", val);
63
- },
64
- deep: true
60
+ selectWidget(val) {
61
+ this.$emit("update:select", val);
65
62
  }
66
63
  },
67
64
  methods: {
@@ -74,7 +71,7 @@ export default {
74
71
  );
75
72
 
76
73
  // 防止布局元素的嵌套拖拽
77
- if (item.className.indexOf("data-grid") >= 0) {
74
+ if (item.className.indexOf("grid") >= 0) {
78
75
  // 如果是列表中拖拽的元素需要还原到原来位置
79
76
  item.tagName === "DIV" &&
80
77
  this.widgetArray.splice(oldIndex, 0, newComponent);
@@ -2,34 +2,30 @@
2
2
  <div class="component-list">
3
3
  <draggable
4
4
  v-model="widget.options.columns"
5
- :no-transition-on-drag="true"
6
5
  v-bind="{
7
6
  group: 'people',
8
7
  ghostClass: 'draggable-ghost',
9
8
  animation: 200,
10
9
  handle: '.drag-widget'
11
10
  }"
11
+ :no-transition-on-drag="true"
12
12
  @add="handleWidgetAdd($event)"
13
13
  >
14
14
  <transition-group name="fade" tag="div" class="draggable-list">
15
- <div
15
+ <widget-form-item
16
16
  v-for="(element, elementIndex) in widget.options.columns.filter(
17
17
  item => {
18
18
  return item.key;
19
19
  }
20
20
  )"
21
21
  :key="element.key"
22
- @click.stop="selectWidget = element"
22
+ :widget="element"
23
+ :widgetArray="widget.options.columns"
24
+ :widgetIndex="elementIndex"
25
+ :select.sync="selectWidget"
26
+ :config="config"
23
27
  >
24
- <widget-form-item
25
- :widget="element"
26
- :widgetArray="widget.options.columns"
27
- :widgetIndex="elementIndex"
28
- :select.sync="selectWidget"
29
- :config="config"
30
- >
31
- </widget-form-item>
32
- </div>
28
+ </widget-form-item>
33
29
  </transition-group>
34
30
  </draggable>
35
31
  <div v-if="widget.options.isDelete" class="tools">
@@ -52,35 +48,34 @@ export default {
52
48
  mixins: [itemsComponent, eventMixin],
53
49
  data() {
54
50
  return {
55
- selectWidget: {}
51
+ selectWidget: this.select
56
52
  };
57
53
  },
58
54
  watch: {
59
55
  select(val) {
60
56
  this.selectWidget = val;
61
57
  },
62
- selectWidget: {
63
- handler(val) {
64
- this.$emit("update:select", val);
65
- },
66
- deep: true
58
+ selectWidget(val) {
59
+ this.$emit("update:select", val);
60
+ },
61
+ // 子组建变动后重置初始值
62
+ "widget.options.columns.length"(val) {
63
+ this.widget.options.defaultValue = [];
67
64
  }
68
65
  },
69
66
  methods: {
70
67
  handleWidgetAdd($event) {
71
- console.log("handleWidgetAdd =>", $event);
72
68
  const newIndex = $event.newIndex;
73
69
  const oldIndex = $event.oldIndex;
74
70
  const newComponent = JSON.parse(
75
71
  JSON.stringify(this.widget.options.columns[newIndex])
76
72
  );
77
- const item = $event.item;
73
+
78
74
  // 防止布局元素的嵌套拖拽
79
- if (item.className.indexOf("no-put") >= 0) {
75
+ if ($event.item.className.indexOf("no-put") >= 0) {
80
76
  // 如果是列表中拖拽的元素需要还原到原来位置
81
- item.tagName === "DIV" &&
77
+ $event.item.tagName === "DIV" &&
82
78
  this.widgetArray.splice(oldIndex, 0, newComponent);
83
-
84
79
  this.widget.options.columns.splice(newIndex, 1);
85
80
  return false;
86
81
  }
@@ -92,6 +87,7 @@ export default {
92
87
  newComponent.model = `${newComponent.type}_${key}`;
93
88
  }
94
89
  this.$set(this.widget.options.columns, newIndex, newComponent);
90
+ this.widget.options.defaultValue = [];
95
91
  this.selectWidget = newComponent;
96
92
  }
97
93
  }
@@ -2,16 +2,15 @@
2
2
  <div class="component-list">
3
3
  <div
4
4
  v-for="(column, columnIndex) in dataModel"
5
- class="tableH5-list"
6
- :key="`tableH5_${columnIndex}`"
5
+ class="list-group"
6
+ :key="`group_${columnIndex}`"
7
7
  >
8
8
  <div
9
9
  v-for="(element, elementIndex) in widget.options.columns"
10
- class="tableH5-list-item"
11
- :key="`tableH5_${columnIndex}_${element.key}`"
10
+ class="list-group-item"
11
+ :key="elementIndex"
12
12
  >
13
13
  <generate-form-item
14
- style="flex:1;"
15
14
  :widget="element"
16
15
  :model.sync="
17
16
  element.type === 'grid' && !element.options.isEntity
@@ -19,11 +18,7 @@
19
18
  : column[element.model]
20
19
  "
21
20
  :models="models"
22
- :pModel="
23
- pModel
24
- ? `${pModel}.${columnIndex}`
25
- : `${widget.model}.${columnIndex}`
26
- "
21
+ :pModel="getPModel(columnIndex)"
27
22
  :config="config"
28
23
  :slotKeys="slotKeys"
29
24
  :componentsData="componentsData"
@@ -66,10 +61,13 @@ import GenerateFormItem from "../../GenerateFormItem.vue";
66
61
  export default {
67
62
  components: { GenerateFormItem },
68
63
  mixins: [itemsComponent, eventMixin],
69
- props: ["models", "prop", "slotKeys", "componentsData"],
64
+ props: ["slotKeys", "componentsData"],
70
65
  data() {
71
66
  return {};
72
67
  },
68
+ mounted() {
69
+ console.log("mounted pModel =>", this.pModel);
70
+ },
73
71
  methods: {
74
72
  handleTableAdd() {
75
73
  let dic = {};
@@ -90,6 +88,10 @@ export default {
90
88
  };
91
89
  initData(this.widget.options.columns, dic);
92
90
  this.dataModel.push(dic);
91
+ },
92
+ getPModel(val) {
93
+ if (this.pModel) return `${this.pModel}.${this.widget.model}.${val}`;
94
+ else return `${this.widget.model}.${val}`;
93
95
  }
94
96
  }
95
97
  };
@@ -99,11 +101,11 @@ export default {
99
101
  .component-list {
100
102
  background: #fff;
101
103
 
102
- .tableH5-list {
103
- .tableH5-list-item {
104
+ .list-group {
105
+ .list-group-item {
104
106
  width: 100%;
105
107
  }
106
- .tableH5-list-item:nth-child(1) {
108
+ .list-group-item:nth-child(1) {
107
109
  display: flex;
108
110
  > div:first-child {
109
111
  flex: 1;
@@ -2,14 +2,14 @@
2
2
  <draggable
3
3
  class="component-table"
4
4
  v-model="widget.options.columns"
5
- :no-transition-on-drag="true"
6
5
  v-bind="{
7
6
  group: 'people',
8
7
  ghostClass: 'draggable-ghost',
9
8
  animation: 200,
10
9
  handle: '.drag-widget'
11
10
  }"
12
- @add="handleWidgetAdd($event, widget)"
11
+ :no-transition-on-drag="true"
12
+ @add="handleWidgetAdd($event)"
13
13
  >
14
14
  <transition-group name="fade" tag="div" class="draggable-list">
15
15
  <widget-form-item
@@ -39,18 +39,19 @@ export default {
39
39
  mixins: [itemsComponent, eventMixin],
40
40
  data() {
41
41
  return {
42
- selectWidget: {}
42
+ selectWidget: this.select
43
43
  };
44
44
  },
45
45
  watch: {
46
46
  select(val) {
47
47
  this.selectWidget = val;
48
48
  },
49
- selectWidget: {
50
- handler(val) {
51
- this.$emit("update:select", val);
52
- },
53
- deep: true
49
+ selectWidget(val) {
50
+ this.$emit("update:select", val);
51
+ },
52
+ // 子组建变动后重置初始值
53
+ "widget.options.columns.length"(val) {
54
+ this.widget.options.defaultValue = [];
54
55
  }
55
56
  },
56
57
  methods: {
@@ -60,13 +61,12 @@ export default {
60
61
  const newComponent = JSON.parse(
61
62
  JSON.stringify(this.widget.options.columns[newIndex])
62
63
  );
63
- const item = $event.item;
64
+
64
65
  // 防止布局元素的嵌套拖拽
65
- if (item.className.indexOf("no-put") >= 0) {
66
+ if ($event.item.className.indexOf("no-put") >= 0) {
66
67
  // 如果是列表中拖拽的元素需要还原到原来位置
67
- item.tagName === "DIV" &&
68
+ $event.item.tagName === "DIV" &&
68
69
  this.widgetArray.splice(oldIndex, 0, newComponent);
69
-
70
70
  this.widget.options.columns.splice(newIndex, 1);
71
71
  return false;
72
72
  }
@@ -78,6 +78,7 @@ export default {
78
78
  newComponent.model = `${newComponent.type}_${key}`;
79
79
  }
80
80
  this.$set(this.widget.options.columns, newIndex, newComponent);
81
+ this.widget.options.defaultValue = [];
81
82
  this.selectWidget = newComponent;
82
83
  }
83
84
  }
@@ -27,11 +27,7 @@
27
27
  :widget="element"
28
28
  :model.sync="dataModel[scope.$index][element.model]"
29
29
  :models="models"
30
- :pModel="
31
- pModel
32
- ? `${pModel}.${scope.$index}`
33
- : `${widget.model}.${scope.$index}`
34
- "
30
+ :pModel="getPModel(scope.$index)"
35
31
  :config="config"
36
32
  :slotKeys="slotKeys"
37
33
  :componentsData="componentsData"
@@ -110,6 +106,10 @@ export default {
110
106
  },
111
107
  handleTableDelete(index) {
112
108
  this.dataModel.splice(index, 1);
109
+ },
110
+ getPModel(val) {
111
+ if (this.pModel) return `${this.pModel}.${this.widget.model}.${val}`;
112
+ else return `${this.widget.model}.${val}`;
113
113
  }
114
114
  }
115
115
  };
@@ -13,13 +13,13 @@
13
13
  >
14
14
  <draggable
15
15
  v-model="column.list"
16
- :no-transition-on-drag="true"
17
16
  v-bind="{
18
17
  group: 'people',
19
18
  ghostClass: 'draggable-ghost',
20
19
  animation: 200,
21
20
  handle: '.drag-widget'
22
21
  }"
22
+ :no-transition-on-drag="true"
23
23
  @add="handleWidgetAdd($event, widget, columnIndex)"
24
24
  >
25
25
  <transition-group name="fade" tag="div" class="draggable-list">
@@ -49,18 +49,15 @@ export default {
49
49
  mixins: [itemsComponent, eventMixin],
50
50
  data() {
51
51
  return {
52
- selectWidget: {}
52
+ selectWidget: this.select
53
53
  };
54
54
  },
55
55
  watch: {
56
56
  select(val) {
57
57
  this.selectWidget = val;
58
58
  },
59
- selectWidget: {
60
- handler(val) {
61
- this.$emit("update:select", val);
62
- },
63
- deep: true
59
+ selectWidget(val) {
60
+ this.$emit("update:select", val);
64
61
  }
65
62
  },
66
63
  methods: {
@@ -20,11 +20,7 @@
20
20
  : dataModel[column.value][element.model]
21
21
  "
22
22
  :models="models"
23
- :pModel="
24
- pModel
25
- ? `${pModel}.${scope.$index}`
26
- : `${widget.model}.${column.value}`
27
- "
23
+ :pModel="getPModel(column.value)"
28
24
  :config="config"
29
25
  :slotKeys="slotKeys"
30
26
  :componentsData="componentsData"
@@ -44,10 +40,12 @@ export default {
44
40
  components: { GenerateFormItem },
45
41
  mixins: [itemsComponent, eventMixin],
46
42
  props: ["slotKeys", "componentsData"],
47
- data() {
48
- return {};
49
- },
50
- methods: {}
43
+ methods: {
44
+ getPModel(val) {
45
+ if (this.pModel) return `${this.pModel}.${this.widget.model}.${val}`;
46
+ else return `${this.widget.model}.${val}`;
47
+ }
48
+ }
51
49
  };
52
50
  </script>
53
51