tianheng-ui 0.1.68 → 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 (45) hide show
  1. package/lib/theme-chalk/js/axios.js +1 -1
  2. package/lib/theme-chalk/styles/dialog.scss +56 -40
  3. package/lib/theme-chalk/styles/feature.scss +7 -0
  4. package/lib/theme-chalk/styles/icon.css +8 -2
  5. package/lib/tianheng-ui.js +13 -13
  6. package/package.json +1 -1
  7. package/packages/Dialog/index.vue +18 -9
  8. package/packages/FormMaking/GenerateForm.vue +40 -49
  9. package/packages/FormMaking/GenerateFormItem.vue +10 -26
  10. package/packages/FormMaking/WidgetFormItem.vue +9 -7
  11. package/packages/FormMaking/WidgetGuide.vue +86 -0
  12. package/packages/FormMaking/WidgetSelect.vue +2 -2
  13. package/packages/FormMaking/WidgetTools.vue +10 -7
  14. package/packages/FormMaking/config/index.js +2 -0
  15. package/packages/FormMaking/custom/config.js +7 -36
  16. package/packages/FormMaking/custom/configs/grid.vue +17 -9
  17. package/packages/FormMaking/custom/configs/list.vue +89 -8
  18. package/packages/FormMaking/custom/configs/radio.vue +2 -5
  19. package/packages/FormMaking/custom/configs/table.vue +12 -9
  20. package/packages/FormMaking/custom/configs/tabs.vue +69 -55
  21. package/packages/FormMaking/custom/index.js +1 -1
  22. package/packages/FormMaking/custom/items/grid_dev.vue +5 -8
  23. package/packages/FormMaking/custom/items/list_dev.vue +19 -23
  24. package/packages/FormMaking/custom/items/list_pro.vue +109 -6
  25. package/packages/FormMaking/custom/items/table_dev.vue +13 -12
  26. package/packages/FormMaking/custom/items/table_pro.vue +5 -5
  27. package/packages/FormMaking/custom/items/tabs_dev.vue +4 -7
  28. package/packages/FormMaking/custom/items/tabs_pro.vue +7 -9
  29. package/packages/FormMaking/custom/items/upload.vue +3 -1
  30. package/packages/FormMaking/index.vue +72 -78
  31. package/packages/FormMaking/lang/zh-CN.js +2 -2
  32. package/packages/FormMaking/network/axios.js +88 -0
  33. package/packages/FormMaking/styles/index.scss +3 -3
  34. package/packages/FormMaking/util/Log.js +99 -0
  35. package/packages/FormMaking/util/generateCode.js +2 -2
  36. package/packages/TableMaking/config/index.js +8 -0
  37. package/packages/TableMaking/generateTable.vue +10 -3
  38. package/packages/TableMaking/index.vue +18 -3
  39. package/packages/TableMaking/network/axios.js +88 -0
  40. package/packages/TableMaking/util/Log.js +99 -0
  41. package/packages/TableMaking/widgetGuide.vue +122 -58
  42. package/packages/FormMaking/custom/configs/tableH5.vue +0 -98
  43. package/packages/FormMaking/custom/items/tableH5_dev.vue +0 -112
  44. package/packages/FormMaking/custom/items/tableH5_pro.vue +0 -119
  45. package/packages/FormMaking/util/request.js +0 -25
@@ -1,18 +1,99 @@
1
1
  <template>
2
- <div>
3
-
2
+ <div class="component-config">
3
+ <el-collapse-item title="组件配置" name="group-element">
4
+ <el-form-item label="标题">
5
+ <el-input v-model="widget.name" clearable></el-input>
6
+ </el-form-item>
7
+
8
+ <el-form-item label="标签宽度">
9
+ <div style="display: flex;">
10
+ <el-checkbox v-model="widget.options.isLabelWidth"
11
+ >自定义</el-checkbox
12
+ >
13
+ <el-input-number
14
+ style="margin-left:5px;"
15
+ v-model="widget.options.labelWidth"
16
+ controls-position="right"
17
+ :min="0"
18
+ :max="200"
19
+ :disabled="!widget.options.isLabelWidth"
20
+ >
21
+ </el-input-number>
22
+ </div>
23
+ </el-form-item>
24
+
25
+ <el-form-item label-width="0">
26
+ <div class="config-header">
27
+ <span class="title">默认值</span>
28
+ <div class="value">
29
+ <el-button type="text" @click="handleAddData">添加数据</el-button>
30
+ <el-button type="text" @click="widget.options.defaultValue = []"
31
+ >重置</el-button
32
+ >
33
+ </div>
34
+ </div>
35
+ <th-code-editor
36
+ v-model="widget.options.defaultValue"
37
+ language="json"
38
+ ></th-code-editor>
39
+ </el-form-item>
40
+
41
+ <el-form-item label="新增按钮">
42
+ <el-input v-model.number="widget.options.addButtonText"></el-input>
43
+ </el-form-item>
44
+
45
+ <el-form-item label="删除按钮">
46
+ <el-input v-model.number="widget.options.deleteButtonText"></el-input>
47
+ </el-form-item>
48
+
49
+ <el-form-item label="可删除的最小索引">
50
+ <el-input-number v-model="widget.options.deleteIndex" :min="0">
51
+ </el-input-number>
52
+ </el-form-item>
53
+
54
+ <el-form-item label="操作属性">
55
+ <el-checkbox v-model="widget.options.disabled">禁用 </el-checkbox>
56
+ <el-checkbox v-model="widget.options.hidden">隐藏组件 </el-checkbox>
57
+ <el-checkbox v-model="widget.options.hideLabel">隐藏标签 </el-checkbox>
58
+ <el-checkbox v-model="widget.options.isAdd">可新增 </el-checkbox>
59
+ <el-checkbox v-model="widget.options.isDelete">可删除 </el-checkbox>
60
+ </el-form-item>
61
+
62
+ <el-form-item label="校验">
63
+ <el-checkbox v-model="widget.options.required">必填</el-checkbox>
64
+ </el-form-item>
65
+ </el-collapse-item>
4
66
  </div>
5
67
  </template>
6
68
 
7
69
  <script>
70
+ import Draggable from "vuedraggable";
71
+ import { configComponent } from "../mixins";
8
72
  export default {
9
- data() {
10
- return {};
73
+ components: {
74
+ Draggable
11
75
  },
12
- created() {},
76
+ mixins: [configComponent],
77
+ props: {},
13
78
  mounted() {},
14
- methods: {},
79
+ methods: {
80
+ handleAddData() {
81
+ let dic = {};
82
+ this.widget.options.columns.forEach(item => {
83
+ if (item.type === "grid") {
84
+ for (let i = 0; i < item.options.columns.length; i++) {
85
+ const element = item.options.columns[i];
86
+ for (let j = 0; j < element.list.length; j++) {
87
+ const element2 = element.list[j];
88
+ dic[element2.model] = element2.options.defaultValue;
89
+ }
90
+ }
91
+ } else {
92
+ dic[item.model] = item.options.defaultValue;
93
+ }
94
+ });
95
+ this.widget.options.defaultValue.push(dic);
96
+ }
97
+ }
15
98
  };
16
99
  </script>
17
-
18
- <style lang="scss" scoped></style>
@@ -76,15 +76,12 @@
76
76
  >
77
77
  <div slot="prepend">标签</div>
78
78
  </el-input>
79
- <el-input
80
- style="margin-bottom:5px;"
81
- v-model="widget.options.remote.props.children"
82
- >
79
+ <el-input v-model="widget.options.remote.props.children">
83
80
  <div slot="prepend">子选项</div>
84
81
  </el-input>
85
82
  </template>
86
83
  <template v-else>
87
- <el-radio-group style="width: 100%;" v-model="widget.options.defaultValue">
84
+ <el-radio-group v-model="widget.options.defaultValue">
88
85
  <draggable
89
86
  :list="widget.options.options"
90
87
  v-bind="{
@@ -20,15 +20,20 @@
20
20
  </div>
21
21
  </el-form-item>
22
22
 
23
- <el-form-item>
24
- <div class="config-header" slot="label">
23
+ <el-form-item label-width="0">
24
+ <div class="config-header">
25
25
  <span class="title">默认值</span>
26
- <span class="value" @click="handleAddData">新增一组</span>
26
+ <div class="value">
27
+ <el-button type="text" @click="handleAddData">添加数据</el-button>
28
+ <el-button type="text" @click="widget.options.defaultValue = []"
29
+ >重置</el-button
30
+ >
31
+ </div>
27
32
  </div>
28
- <code-editor
33
+ <th-code-editor
29
34
  v-model="widget.options.defaultValue"
30
35
  language="json"
31
- ></code-editor>
36
+ ></th-code-editor>
32
37
  </el-form-item>
33
38
 
34
39
  <!-- <el-form-item label="高度">
@@ -76,9 +81,8 @@ export default {
76
81
  mounted() {},
77
82
  methods: {
78
83
  handleAddData() {
79
- let defaultValue = JSON.parse(this.widget.options.defaultValue || "[]");
80
84
  let dic = {};
81
- this.widget.list.forEach(item => {
85
+ this.widget.options.columns.forEach(item => {
82
86
  if (item.type === "grid") {
83
87
  for (let i = 0; i < item.options.columns.length; i++) {
84
88
  const element = item.options.columns[i];
@@ -91,8 +95,7 @@ export default {
91
95
  dic[item.model] = item.options.defaultValue;
92
96
  }
93
97
  });
94
- defaultValue.push(dic);
95
- this.widget.options.defaultValue = JSON.stringify(defaultValue, null, 2);
98
+ this.widget.options.defaultValue.push(dic);
96
99
  }
97
100
  }
98
101
  };
@@ -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
  }
@@ -1,18 +1,121 @@
1
1
  <template>
2
- <div>
3
-
2
+ <div class="component-list">
3
+ <div
4
+ v-for="(column, columnIndex) in dataModel"
5
+ class="list-group"
6
+ :key="`group_${columnIndex}`"
7
+ >
8
+ <div
9
+ v-for="(element, elementIndex) in widget.options.columns"
10
+ class="list-group-item"
11
+ :key="elementIndex"
12
+ >
13
+ <generate-form-item
14
+ :widget="element"
15
+ :model.sync="
16
+ element.type === 'grid' && !element.options.isEntity
17
+ ? column
18
+ : column[element.model]
19
+ "
20
+ :models="models"
21
+ :pModel="getPModel(columnIndex)"
22
+ :config="config"
23
+ :slotKeys="slotKeys"
24
+ :componentsData="componentsData"
25
+ >
26
+ <template v-for="name in slotKeys" :slot="name">
27
+ <slot :name="name" />
28
+ </template>
29
+ </generate-form-item>
30
+ <div
31
+ v-if="
32
+ widget.options.isDelete &&
33
+ elementIndex === 0 &&
34
+ columnIndex >= widget.options.deleteIndex
35
+ "
36
+ class="actions"
37
+ >
38
+ <el-button
39
+ type="danger"
40
+ @click.native.prevent="dataModel.splice(columnIndex, 1)"
41
+ >{{ widget.options.deleteButtonText }}</el-button
42
+ >
43
+ </div>
44
+ </div>
45
+ </div>
46
+
47
+ <div v-if="widget.options.isAdd" style="text-align: center;">
48
+ <el-button
49
+ type="text"
50
+ :disabled="widget.options.disabled"
51
+ @click="handleTableAdd"
52
+ >{{ widget.options.addButtonText }}</el-button
53
+ >
54
+ </div>
4
55
  </div>
5
56
  </template>
6
57
 
7
58
  <script>
59
+ import { itemsComponent, eventMixin } from "../mixins/index";
60
+ import GenerateFormItem from "../../GenerateFormItem.vue";
8
61
  export default {
62
+ components: { GenerateFormItem },
63
+ mixins: [itemsComponent, eventMixin],
64
+ props: ["slotKeys", "componentsData"],
9
65
  data() {
10
66
  return {};
11
67
  },
12
- created() {},
13
- mounted() {},
14
- methods: {},
68
+ mounted() {
69
+ console.log("mounted pModel =>", this.pModel);
70
+ },
71
+ methods: {
72
+ handleTableAdd() {
73
+ let dic = {};
74
+ const initData = (list, data) => {
75
+ for (const item of list) {
76
+ if (item.type === "grid") {
77
+ if (item.options.isEntity) data[item.model] = {};
78
+ for (const column of item.options.columns) {
79
+ initData(
80
+ column.list,
81
+ item.options.isEntity ? data[item.model] : data
82
+ );
83
+ }
84
+ } else {
85
+ data[item.model] = item.options.defaultValue;
86
+ }
87
+ }
88
+ };
89
+ initData(this.widget.options.columns, dic);
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}`;
95
+ }
96
+ }
15
97
  };
16
98
  </script>
17
99
 
18
- <style lang="scss" scoped></style>
100
+ <style lang="scss" scoped>
101
+ .component-list {
102
+ background: #fff;
103
+
104
+ .list-group {
105
+ .list-group-item {
106
+ width: 100%;
107
+ }
108
+ .list-group-item:nth-child(1) {
109
+ display: flex;
110
+ > div:first-child {
111
+ flex: 1;
112
+ margin-right: 10px;
113
+ }
114
+ }
115
+ }
116
+
117
+ .footer {
118
+ text-align: center;
119
+ }
120
+ }
121
+ </style>
@@ -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
  }