bri-components 1.2.23 → 1.2.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bri-components",
3
- "version": "1.2.23",
3
+ "version": "1.2.25",
4
4
  "author": "dengshanghui",
5
5
  "description": "a component lib for vue project",
6
6
  "main": "src/index.js",
@@ -6,20 +6,19 @@
6
6
  @change="change"
7
7
  ></bri-upload-image>
8
8
 
9
+ <!-- 上传 -->
9
10
  <div
10
11
  v-else
11
- :class="[
12
- prefixCls,
13
- `BriUpload-${showType}`,
14
- {
15
- 'BriUpload': true,
16
- 'BriUpload-disabled': canEdit && !finalCanEdit,
17
- 'BriUpload-readonly': !canEdit,
18
- 'BriUpload-unit': !canEdit && isUnitShow
19
- }
20
- ]"
12
+ :class="{
13
+ [prefixCls]: true,
14
+ 'BriUpload': true,
15
+ 'BriUpload-disabled': canEdit && !finalCanEdit,
16
+ 'BriUpload-readonly': !canEdit,
17
+ 'BriUpload-unit': !canEdit && isInTable,
18
+ [`BriUpload-${showType}`]: true,
19
+ }"
21
20
  >
22
- <!-- 上传 -->
21
+ <!-- 编辑 -->
23
22
  <div
24
23
  v-if="finalCanEdit"
25
24
  :class="classes"
@@ -35,43 +34,47 @@
35
34
  type="file"
36
35
  :accept="accept"
37
36
  :multiple="multipleMode"
37
+ :disabled="!finalCanEdit || percent > 0"
38
38
  :webkitdirectory="false"
39
- :disabled="finalCanEdit && percent > 0"
40
39
  @change="handleChange"
41
40
  >
42
41
 
43
42
  <slot>
44
43
  <div :class="`BriUpload-${showType}-imageadd`">
44
+ <!-- 上传 -->
45
45
  <i-circle
46
46
  v-if="percent"
47
47
  :class="`BriUpload-${showType}-circle`"
48
48
  :percent="percent"
49
49
  :stroke-color="percentColor"
50
50
  >
51
+ <!-- 上传完 -->
51
52
  <Icon
52
53
  v-if="percent === 100"
53
54
  type="ios-checkmark"
54
55
  ></Icon>
56
+ <!-- 上传中 -->
55
57
  <span v-else-if="showType === 'old'">
56
58
  {{ percent }}%
57
59
  </span>
58
60
  </i-circle>
59
61
 
62
+ <!-- 未上传 -->
60
63
  <template v-else>
61
64
  <dsh-icons
62
- :list="$getOperationList([fileType === 'image' ? 'add' : 'upload'])"
65
+ :list="$getOperationList([subType === 'image' ? 'add' : 'upload'])"
63
66
  @click="clickUpload"
64
67
  ></dsh-icons>
65
68
 
66
69
  <span v-if="showType !== 'inline'">
67
- 点击上传{{ fileType === 'image' ? "图片" : "文件" }}
70
+ 点击上传{{ subType === 'image' ? "图片" : "文件" }}
68
71
  </span>
69
72
  </template>
70
73
  </div>
71
74
  </slot>
72
75
  </div>
73
76
 
74
- <!-- 列表 -->
77
+ <!-- 编辑和查看 列表 -->
75
78
  <slot name="list">
76
79
  <upload-list
77
80
  :canEdit="finalCanEdit"
@@ -92,6 +95,19 @@
92
95
  import uploadList from "./uploadList.vue";
93
96
 
94
97
  const prefixCls = "ivu-upload";
98
+ const imageType = ["jpg", "png", "gif", "jpeg", "tiff", "swf"];
99
+ const documentType = ["txt", "doc", "xls", "ppt", "docx", "xlsx", "pptx", "pdf"];
100
+ const videoType = ["flv", "rmvb", "mp4", "mvb"];
101
+ const audioType = ["wma", "mp3", "m4a"];
102
+ const packageType = ["rar", "zip"];
103
+ const fileTypes = [
104
+ ...documentType,
105
+ ...imageType,
106
+ ...videoType,
107
+ ...audioType,
108
+ ...packageType
109
+ ];
110
+
95
111
  export default {
96
112
  name: "BriUpload",
97
113
  mixins: [
@@ -102,23 +118,12 @@
102
118
  BriUploadImage,
103
119
  uploadList
104
120
  },
105
- props: {
106
- type: {
107
- type: String,
108
- default: "drag"
109
- },
110
- format: {
111
- type: Array,
112
- default () {
113
- return [];
114
- }
115
- },
116
- maxSize: {
117
- type: Number
118
- }
119
- },
121
+ props: {},
120
122
  data () {
121
123
  return {
124
+ prefixCls: prefixCls,
125
+ dragOver: false,
126
+
122
127
  operationMap: {
123
128
  upload: {
124
129
  customIcon: "bico-upload1"
@@ -126,73 +131,77 @@
126
131
  add: {
127
132
  icon: "md-add"
128
133
  }
129
- },
130
- prefixCls: prefixCls,
131
- dragOver: false,
132
- tempIndex: 1
134
+ }
133
135
  };
134
136
  },
135
137
  computed: {
138
+ selfPropsObj () {
139
+ return {
140
+ _fileType: "file",
141
+ _showType: this.isFullRow && !this.isInTable ? "old" : "inline", // 宽度为100%、且不在级联表格或内部表格里的 显示老版
142
+ // _multiple: true,
143
+ _useType: "drag",
144
+ _maxSize: 1024 * 1024,
145
+ _format: [],
146
+
147
+ ...this.propsObj,
148
+ ...this.commonDealPropsObj,
149
+
150
+ _multiple: true // TODO: 解决后端返回的配置数据里,内部表格里的上传字段有脏属性_multiple且为false,早晚要删除这行用上面的那行
151
+ };
152
+ },
153
+ subType () {
154
+ return this.selfPropsObj._fileType;
155
+ },
136
156
  showType () {
137
- // 宽度不为100%,级联表格或内部表格中显示新版
138
- return this.propsObj.showType
139
- ? this.propsObj.showType
140
- : ((!this.isFullRow || this.isInTable) ? "inline" : "old");
157
+ return this.selfPropsObj._showType;
158
+ },
159
+ useType () {
160
+ return this.selfPropsObj._useType;
141
161
  },
142
- fileType () {
143
- // 宽度不为100%,级联表格或内部表格中显示新版
144
- return this.propsObj._fileType;
162
+ format () {
163
+ return this.selfPropsObj._format;
145
164
  },
146
- multipleMode () {
147
- return this.propsObj._multiple !== false;
165
+ maxSize () {
166
+ return this.selfPropsObj._maxSize;
148
167
  },
149
168
 
169
+ // 限制文件格式
150
170
  accept () {
151
- const documentType = ["txt", "doc", "xls", "ppt", "docx", "xlsx", "pptx", "pdf"];
152
- const imageType = ["jpg", "png", "gif", "jpeg", "tiff", "swf"];
153
- const videoType = ["flv", "rmvb", "mp4", "mvb"];
154
- const audioType = ["wma", "mp3", "m4a"];
155
- const packageType = ["rar", "zip"];
156
-
157
- // 限制文件格式
158
- return (
159
- this.fileType === "image"
160
- ? imageType
161
- : [
162
- ...documentType,
163
- ...imageType,
164
- ...videoType,
165
- ...audioType,
166
- ...packageType
167
- ]
168
- ).map(item => `.${item}`).join();
171
+ return (this.subType === "image" ? imageType : fileTypes)
172
+ .map(type => `.${type}`)
173
+ .join();
169
174
  },
170
175
  classes () {
171
- return [
172
- `${prefixCls}`,
173
- {
174
- [`${prefixCls}-select`]: this.type === "select",
175
- [`${prefixCls}-drag`]: this.type === "drag",
176
- [`${prefixCls}-dragOver`]: this.type === "drag" && this.dragOver,
177
- [`BriUpload-${this.showType}-wrapper`]: true
178
- }
179
- ];
176
+ return {
177
+ [`${prefixCls}`]: true,
178
+ [`${prefixCls}-select`]: this.useType === "select",
179
+ [`${prefixCls}-drag`]: this.useType === "drag",
180
+ [`${prefixCls}-dragOver`]: this.useType === "drag" && this.dragOver,
181
+ [`BriUpload-${this.showType}-wrapper`]: true
182
+ };
180
183
  }
181
184
  },
182
185
  methods: {
183
186
  clickUpload () {
184
187
  this.$refs.input.click();
185
188
  },
186
- clickDeteItem (fileItem) {
187
- this.curValList.splice(this.curValList.indexOf(fileItem), 1);
189
+ clickDeteItem (fileItem, fileIndex) {
190
+ this.curValList.splice(fileIndex, 1);
188
191
  this.curValList = [...this.curValList];
189
192
  },
190
193
  successCb (res, data) {
191
194
  if (data.res === 0) {
192
- this.curValList = [
193
- ...this.curValList,
194
- data.data
195
- ];
195
+ if (this.multipleMode) {
196
+ this.curValList = [
197
+ data.data,
198
+ ...this.curValList
199
+ ];
200
+ } else {
201
+ this.curValList = [
202
+ data.data
203
+ ];
204
+ }
196
205
  } else {
197
206
  this.$Message.error({
198
207
  content: `操作失败!${this.$getMsgText(data.msg)}`,
@@ -223,12 +232,9 @@
223
232
 
224
233
  postFiles.forEach(fileItem => {
225
234
  if (
226
- (this.format.length && !this.format.some(item => item.toLocaleLowerCase() === fileItem.name.split(".").pop().toLocaleLowerCase())) ||
227
- (this.maxSize && (fileItem.size > this.maxSize * 1024))
235
+ (!this.format.length || this.format.some(item => item.toLocaleLowerCase() === fileItem.name.split(".").pop().toLocaleLowerCase())) &&
236
+ (fileItem.size <= this.maxSize * 1024)
228
237
  ) {
229
- return false;
230
- } else {
231
- // 上传接口
232
238
  this.handlePost(fileItem);
233
239
  }
234
240
  });
@@ -12,14 +12,14 @@
12
12
  class="uploadList-list"
13
13
  >
14
14
  <div
15
- v-for="fileItem in files"
15
+ v-for="(fileItem, fileIndex) in files"
16
16
  :key="fileItem._key || fileItem._id"
17
17
  class="item"
18
18
  >
19
19
  <!-- 展示图 -->
20
20
  <div class="item-show">
21
21
  <img
22
- v-if="propsObj._fileType === 'image' || (fileItem.mimetype.indexOf('image') > -1)"
22
+ v-if="fileItem.mimetype.includes('image')"
23
23
  :data-original="fileItem.url"
24
24
  :src="$imageResize(fileItem.url, imageResizeConfig)"
25
25
  :alt="fileItem.name"
@@ -32,23 +32,14 @@
32
32
  </div>
33
33
 
34
34
  <!-- 展示名称 -->
35
- <bri-tooltip
36
- v-if="propsObj._fileType != 'image'"
37
- class="item-name"
38
- :content="fileItem.name"
39
- :transfer="true"
40
- placement="top-start"
41
- max-width="300"
42
- >
43
- <p class="item-name-title">{{ fileItem.name }}</p>
44
- </bri-tooltip>
35
+ <p class="item-name-title">{{ fileItem.name }}</p>
45
36
 
46
37
  <!-- 图标 -->
47
38
  <dsh-icons
48
39
  class="item-action"
49
40
  item-class="item-action-icon"
50
- :list="$getOperationList(getBtns((fileItem.mimetype.indexOf('image') > -1) || (fileItem.mimetype.indexOf('application/pdf') > -1)))"
51
- @click="$dispatchEvent($event,fileItem)"
41
+ :list="$getOperationList(getBtns(fileItem))"
42
+ @click="$dispatchEvent($event, fileItem, fileIndex)"
52
43
  ></dsh-icons>
53
44
  </div>
54
45
  </div>
@@ -63,7 +54,7 @@
63
54
  </div>
64
55
  </template>
65
56
 
66
- <!-- 自定义新的展示方式 -->
57
+ <!-- 新展示方式 -->
67
58
  <template v-else>
68
59
  <!-- 有值 -->
69
60
  <div
@@ -72,12 +63,12 @@
72
63
  class="uploadList-inline-list"
73
64
  >
74
65
  <div
75
- v-for="fileItem in files"
66
+ v-for="(fileItem, fileIndex) in files"
76
67
  :key="fileItem.url"
77
68
  class="item"
78
69
  >
79
70
  <img
80
- v-if="propsObj._fileType === 'image' || (fileItem.mimetype.indexOf('image') > -1)"
71
+ v-if="fileItem.mimetype.includes('image')"
81
72
  :data-original="fileItem.url"
82
73
  :src="$imageResize(fileItem.url, imageResizeConfig)"
83
74
  :alt="fileItem.name"
@@ -91,8 +82,8 @@
91
82
  <dsh-icons
92
83
  class="item-action"
93
84
  item-class="item-action-icon"
94
- :list="$getOperationList(getBtns((fileItem.mimetype.indexOf('image') > -1) || (fileItem.mimetype.indexOf('application/pdf') > -1) || (fileItem.mimetype=='text/plain')))"
95
- @click="$dispatchEvent($event,fileItem)"
85
+ :list="$getOperationList(getBtns(fileItem))"
86
+ @click="$dispatchEvent($event, fileItem, fileIndex)"
96
87
  ></dsh-icons>
97
88
  </div>
98
89
  </div>
@@ -138,91 +129,83 @@
138
129
  }
139
130
  },
140
131
  computed: {
141
- operationMap () {
132
+ imageResizeConfig () {
133
+ return {};
134
+ },
135
+ noText () {
136
+ return this.canEdit
137
+ ? `未上传${this.propsObj._fileType === "image" ? "图片" : "文件"}`
138
+ : this.emptyShowVal;
139
+ },
140
+
141
+ allOperationMap () {
142
142
  return {
143
- remove: {
143
+ canDelete: {
144
144
  name: "删除",
145
+ type: "canDelete",
145
146
  icon: "ios-trash-outline",
146
147
  size: "16",
147
- event: "clickDeleteItem",
148
- canShow: this.canEdit
148
+ event: "clickDeleteItem"
149
149
  },
150
- download: {
150
+ canDownload: {
151
151
  name: "下载",
152
+ type: "canDownload",
152
153
  icon: "ios-cloud-download-outline",
153
154
  size: "14",
154
- event: "handleDownload",
155
- canShow: true
155
+ event: "handleDownload"
156
156
  },
157
- preview: {
157
+ canPreview: {
158
158
  name: "预览",
159
+ type: "canPreview",
159
160
  icon: "ios-eye-outline",
160
161
  size: "22",
161
- type: "updateColor",
162
- event: "clickPreview",
163
- canShow: undefined
162
+ event: "clickPreview"
164
163
  }
165
164
  };
166
165
  },
167
- imageResizeConfig () {
168
- return {};
169
- },
170
- noText () {
171
- if (this.files && this.files.length) {
172
- return "";
173
- } else {
174
- if (this.canEdit) {
175
- return `未上传${this.propsObj._fileType === "image" ? "图片" : "文件"} `;
176
- } else {
177
- return this.emptyShowVal;
178
- }
179
- }
166
+ operationMap () {
167
+ return this.canEdit
168
+ ? this.allOperationMap
169
+ : this.$categoryMapToMap(
170
+ this.allOperationMap,
171
+ undefined,
172
+ ["canDelete"]
173
+ );
180
174
  }
181
175
  },
182
176
  data () {
183
177
  return {};
184
178
  },
185
179
  methods: {
186
- getBtns (canPreview) {
187
- this.operationMap.preview.canShow = canPreview;
188
- return Object.keys(this.operationMap).filter(attr => this.operationMap[attr].canShow);
189
- },
190
-
191
180
  // 点击删除某项
192
- clickDeleteItem (operationItem, fileItem) {
193
- this.$emit("deleteItem", fileItem);
181
+ clickDeleteItem (operationItem, fileItem, fileIndex) {
182
+ this.$emit("deleteItem", fileItem, fileIndex);
194
183
  },
195
184
  // 点击文件预览 -file服务器的数据列表
196
- clickPreview (operationItem, fileItem) {
197
- if (this.propsObj._fileType === "image") {
198
- this.previewImage(fileItem.url);
199
- } else if (fileItem.mimetype.indexOf("image") > -1) {
200
- this.previewImage(fileItem.url);
185
+ clickPreview (operationItem, fileItem, fileIndex) {
186
+ if (fileItem.mimetype.includes("image")) {
187
+ const viewerImage = this.$refs.viewerImage;
188
+ const findIndex = this.files
189
+ .filter(valItem => valItem.mimetype.includes("image"))
190
+ .findIndex(valItem => valItem.url === fileItem.url);
191
+
192
+ const viewer = new Viewer(viewerImage, {
193
+ url: "data-original",
194
+ hidden: function () {
195
+ viewer.destroy();
196
+ },
197
+ loop: false,
198
+ initialViewIndex: findIndex,
199
+ zIndex: 2147483647
200
+ });
201
+ viewer.show();
201
202
  } else {
202
203
  window.open(fileItem.url);
203
204
  }
204
205
  },
205
- // 图片预览
206
- previewImage (src) {
207
- let viewerImage = this.$refs.viewerImage;
208
- let findIndex = this.files
209
- .filter(valItem => valItem.mimetype.indexOf("image") > -1)
210
- .findIndex(valItem => valItem.url === src);
211
206
 
212
- let viewer = new Viewer(viewerImage, {
213
- url: "data-original",
214
- hidden: function () {
215
- viewer.destroy();
216
- },
217
- loop: false,
218
- initialViewIndex: findIndex,
219
- zIndex: 2147483647
220
- });
221
- viewer.show();
222
- },
223
-
224
- // 下载
225
- handleDownload (operationItem, fileItem) {
207
+ // 接口 -下载
208
+ handleDownload (operationItem, fileItem, fileIndex) {
226
209
  axios
227
210
  .get(fileItem.url, {
228
211
  responseType: "blob"
@@ -243,55 +226,34 @@
243
226
  }
244
227
  });
245
228
  },
246
-
247
- // format (fileItem) {
248
- // const format = fileItem.name.split(".").pop().toLocaleLowerCase() || "";
249
- // let type = "ios-document-outline";
250
-
251
- // if (["gif", "jpg", "jpeg", "png", "bmp", "webp"].indexOf(format) > -1) {
252
- // type = "ios-image";
253
- // }
254
- // if (["mp4", "m3u8", "rmvb", "avi", "swf", "3gp", "mkv", "flv"].indexOf(format) > -1) {
255
- // type = "ios-film";
256
- // }
257
- // if (["mp3", "wav", "wma", "ogg", "aac", "flac"].indexOf(format) > -1) {
258
- // type = "ios-musical-notes";
259
- // }
260
- // if (["doc", "txt", "docx", "pages", "epub", "pdf"].indexOf(format) > -1) {
261
- // type = "md-document";
262
- // }
263
- // if (["numbers", "csv", "xls", "xlsx"].indexOf(format) > -1) {
264
- // type = "ios-stats";
265
- // }
266
- // if (["keynote", "ppt", "pptx"].indexOf(format) > -1) {
267
- // type = "ios-videocam";
268
- // }
269
-
270
- // return type;
271
- // },
272
229
  // 获取不同类型文件的图片
273
- getFileImage (item) {
274
- if (!item.mimetype) {
230
+ getFileImage (fileItem) {
231
+ if (!fileItem.mimetype) {
275
232
  return this.$imageSrcMap.fileType.other;
276
- } else if (item.mimetype.indexOf("image") > -1) {
277
- return item.url; // 压缩图片:将图片最长的边限制在100像素,短边按比例处理
278
- } else if (item.mimetype.indexOf("text/plain") > -1) {
233
+ } else if (fileItem.mimetype.includes("image")) {
234
+ return fileItem.url; // 压缩图片:将图片最长的边限制在100像素,短边按比例处理
235
+ } else if (fileItem.mimetype.includes("text/plain")) {
279
236
  return this.$imageSrcMap.fileType.text;
280
- } else if (item.mimetype.indexOf("application/pdf") > -1) {
237
+ } else if (fileItem.mimetype.includes("application/pdf")) {
281
238
  return this.$imageSrcMap.fileType.pdf;
282
- } else if (item.mimetype.indexOf("wordprocessingml.document") > -1 || item.mimetype.indexOf("application/msword") > -1) {
239
+ } else if (fileItem.mimetype.includes("wordprocessingml.document") || fileItem.mimetype.includes("application/msword")) {
283
240
  return this.$imageSrcMap.fileType.doc;
284
- } else if (item.mimetype.indexOf("presentationml.presentation") > -1 || item.mimetype.indexOf("application/vnd.ms-powerpoint") > -1) {
241
+ } else if (fileItem.mimetype.includes("presentationml.presentation") || fileItem.mimetype.includes("application/vnd.ms-powerpoint")) {
285
242
  return this.$imageSrcMap.fileType.ppt;
286
- } else if (item.mimetype.indexOf("spreadsheetml.sheet") > -1) {
243
+ } else if (fileItem.mimetype.includes("spreadsheetml.sheet")) {
287
244
  return this.$imageSrcMap.fileType.excel;
288
- } else if (item.mimetype.indexOf("application/x-zip-compressed") > -1) {
245
+ } else if (fileItem.mimetype.includes("application/x-zip-compressed")) {
289
246
  return this.$imageSrcMap.fileType.zip;
290
- } else if (item.mimetype.indexOf("application/x-rar-compressed") > -1) {
247
+ } else if (fileItem.mimetype.includes("application/x-rar-compressed")) {
291
248
  return this.$imageSrcMap.fileType.rar;
292
249
  } else {
293
250
  return this.$imageSrcMap.fileType.other;
294
251
  }
252
+ },
253
+ getBtns (fileItem) {
254
+ return ["image", "application/pdf", "text/plain"].some(type => fileItem.mimetype.includes(type))
255
+ ? undefined
256
+ : ["canDelete", "canDownload"];
295
257
  }
296
258
  }
297
259
  };
@@ -84,7 +84,7 @@ export default {
84
84
  return this.canEdit && (this.propsObj.canEdit == undefined ? true : this.propsObj.canEdit);
85
85
  },
86
86
  multipleMode () {
87
- return !!this.propsObj._multiple;
87
+ return this.selfPropsObj ? !!this.selfPropsObj._multiple : !!this.propsObj._multiple;
88
88
  },
89
89
  commonDealPropsObj () {
90
90
  const selectControlTypes = ["date", "switch", "select", "checkbox", "file", "region", "regions", "cascader", "cascaders", "coordinates", "users", "departments"];
@@ -165,9 +165,9 @@
165
165
  getFormItem (formItem) {
166
166
  return {
167
167
  ...this.formatFormItem(formItem),
168
+
168
169
  _line: true,
169
- _br: formItem._defaultSearchBr,
170
- _wrap: formItem._defaultSearchWrap,
170
+ _useColor: false,
171
171
 
172
172
  ...(
173
173
  // date、daterange类型的(formItem._type基本不会为daterange)
@@ -111,6 +111,11 @@ export default {
111
111
  getFormItem (formItem) {
112
112
  return {
113
113
  ...this.formatFormItem(formItem),
114
+
115
+ _line: false,
116
+ _span: 24,
117
+ _useColor: true,
118
+
114
119
  ...(
115
120
  ["default", "rely"].includes(this.mode)
116
121
  ? (
@@ -121,10 +126,7 @@ export default {
121
126
  : {}
122
127
  )
123
128
  : {}
124
- ),
125
- _line: false,
126
- _span: 24,
127
- _useColor: true
129
+ )
128
130
  };
129
131
  },
130
132
  // 格式化表单配置,适合需要
@@ -124,7 +124,7 @@
124
124
  },
125
125
  trigger: {
126
126
  type: String,
127
- default: "hover"
127
+ default: "click"
128
128
  },
129
129
  transfer: {
130
130
  type: Boolean,
@@ -79,7 +79,7 @@
79
79
  <slot>
80
80
  <component
81
81
  ref="control"
82
- :is="componentNameMap[formItem._type] || 'DshUndeveloped'"
82
+ :is="curComponentName"
83
83
  :canEdit="canEdit"
84
84
  :value="formData"
85
85
  :propsObj="formItem"
@@ -117,10 +117,10 @@
117
117
  return [];
118
118
  }
119
119
  },
120
- // 实际最精确值是68px(label:30px, control:32px, 上下padding各: 3px,因为ivu-form-item-content里line-height: 32px导致有问题,故先70px
120
+ // 实际最精确值是68px(label:30px, control:32px, 上下padding各: 2px 8px,因为ivu-form-item-content里line-height: 32px导致有问题,故先74px
121
121
  height: {
122
122
  type: [String, Number],
123
- default: "70"
123
+ default: "74"
124
124
  },
125
125
  rowStyle: {
126
126
  type: Object,
@@ -15,7 +15,7 @@
15
15
 
16
16
  <template v-else>
17
17
  <component
18
- :is="componentNameMap[formItem._type]"
18
+ :is="curComponentName"
19
19
  :canEdit="canEdit"
20
20
  :value="formData"
21
21
  :propsObj="{