bri-components 1.4.9 → 1.4.11

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.4.9",
3
+ "version": "1.4.11",
4
4
  "author": "dengshanghui",
5
5
  "description": "a component lib for vue project",
6
6
  "main": "src/index.js",
@@ -433,7 +433,7 @@
433
433
  }
434
434
  },
435
435
  getBtns (fileItem) {
436
- return ["image", "application/pdf", "text/plain"].some(type => fileItem.mimetype.includes(type))
436
+ return ["image", "application/pdf", "text/plain", "application/msword"].some(type => fileItem.mimetype.includes(type)) || fileItem.mimetype.includes("wordprocessingml.document") || fileItem.mimetype.includes("wordprocessingml.presentation") || fileItem.mimetype.includes("wordprocessingml.sheet")
437
437
  ? undefined
438
438
  : ["canDelete", "canEdit", "canDownload"];
439
439
  }
@@ -126,6 +126,7 @@
126
126
  "backColor", // 背景颜色
127
127
  "link", // 插入链接
128
128
  "list", // 列表
129
+ "table", // 表格
129
130
  "justify", // 对齐方式
130
131
  "quote", // 引用
131
132
  "image", // 插入图片
@@ -164,6 +165,7 @@
164
165
  editor.create();
165
166
  if (!this.finalCanEdit)editor.disable();
166
167
  this.editor = editor;
168
+ this.handleEdit();
167
169
  },
168
170
  handleEdit () {
169
171
  if (this.finalCanEdit) {
@@ -30,9 +30,21 @@
30
30
  <!-- 查看 -->
31
31
  <template v-else>
32
32
  <!-- 单元格的查看 进度条模式 -->
33
- <template v-if="isUnitShow && selfPropsObj._showProgress">
34
- <Progress :percent="progressNum" />
35
- </template>
33
+ <div
34
+ v-if="selfPropsObj._showProgress"
35
+ :class="{
36
+ 'DshNumber-show': true,
37
+ [`DshNumber-show-${unitAlign}`]: true
38
+ }"
39
+ >
40
+ <Progress
41
+ :percent="progressNum"
42
+ :stroke-width="strokeWidth"
43
+ :stroke-color="[statusColor, statusColor]"
44
+ >
45
+ <span>{{ progressStr }}</span>
46
+ </Progress>
47
+ </div>
36
48
 
37
49
  <!-- 单元格和查看页的查看 -->
38
50
  <template v-else>
@@ -82,6 +94,11 @@
82
94
  computed: {
83
95
  selfPropsObj () {
84
96
  return {
97
+ _strokeWidth: 12, // 参数还没配置
98
+ _overflowColor: "#87d068",
99
+ _compeleteColor: "#87d068",
100
+ _lessColor: "#108ee9",
101
+
85
102
  ...this.propsObj,
86
103
  ...this.commonDealPropsObj
87
104
  };
@@ -131,6 +148,16 @@
131
148
  },
132
149
 
133
150
  // 进度条方式使用(此处先这样,实际是进度条使用要受0-100的数值范围限制)
151
+ strokeWidth () {
152
+ return this.selfPropsObj._strokeWidth;
153
+ },
154
+ statusColor () {
155
+ return this.curVal > 100
156
+ ? this.selfPropsObj._overflowColor
157
+ : this.curVal === 100
158
+ ? this.selfPropsObj._compeleteColor
159
+ : this.selfPropsObj._lessColor;
160
+ },
134
161
  progressNum () {
135
162
  return this.$isEmptyData(this.curVal) || this.curVal < 0
136
163
  ? 0
@@ -138,6 +165,9 @@
138
165
  ? 100
139
166
  : Math.round(this.curVal * 100) / 100;
140
167
  },
168
+ progressStr () {
169
+ return `${this.$isEmptyData(this.curVal) ? 0 : Math.round(this.curVal * 100) / 100}%`;
170
+ },
141
171
  showVal () {
142
172
  return this.$isEmptyData(this.curVal)
143
173
  ? this.emptyShowVal
@@ -163,5 +193,45 @@
163
193
  color: @textColor;
164
194
  }
165
195
  }
196
+
197
+ &-show {
198
+ .ivu-progress-show-info {
199
+ display: flex;
200
+ flex-direction: row;
201
+ align-items: center;
202
+
203
+ .ivu-progress-outer {
204
+ flex: 1;
205
+ padding-right: 0px;
206
+ margin-right: 0px;
207
+ }
208
+
209
+ .ivu-progress-text {
210
+ width: 55px;
211
+ min-width: 55px;
212
+ margin-left: 0px;
213
+ text-align: right;
214
+ }
215
+ }
216
+
217
+ &-center {
218
+ .ivu-progress-show-info {
219
+ .ivu-progress-outer {}
220
+
221
+ .ivu-progress-text {
222
+ text-align: center;
223
+ }
224
+ }
225
+ }
226
+ &-right {
227
+ .ivu-progress-show-info {
228
+ .ivu-progress-outer {}
229
+
230
+ .ivu-progress-text {
231
+ text-align: right;
232
+ }
233
+ }
234
+ }
235
+ }
166
236
  }
167
237
  </style>
@@ -72,75 +72,14 @@ export default {
72
72
  };
73
73
  },
74
74
  computed: {
75
- // 值为不是[]类型用的
76
- curVal: {
77
- get () {
78
- // // 原选项变动了或选项动态改变时,过滤掉已不存在的选项值
79
- // if (!this.isInTable) {
80
- // if (["select"].includes(this.controlType)) {
81
- // if (!this.$dataType(this.propsObj._filterFunc, "function")) {
82
- // this.value[this.controlKey] = this.listData.some(item => item[this.saveKey] === this.value[this.controlKey])
83
- // ? this.value[this.controlKey]
84
- // : "";
85
- // }
86
- // }
87
- // }
88
-
89
- return this.value[this.controlKey];
90
- },
91
- set (val) {
92
- // 修复文本框clear后值为undefined,后端无法更新保存数据bug
93
- if (["select"].includes(this.controlType) && val === undefined) {
94
- val = "";
95
- }
96
-
97
- this.$set(this.value, this.controlKey, val);
98
- this.change();
99
- }
75
+ typeInfoData () {
76
+ return this.$modFieldMap[this.controlType] || {};
100
77
  },
101
- // 值为[]类型用的
102
- curValList: {
103
- get () {
104
- // // 原选项变动了或选项动态改变时,过滤掉已不存在的选项值
105
- // if (!this.isInTable) {
106
- // const valList = this.value[this.controlKey] || [];
107
- // if ((["select"].includes(this.controlType) && this.multipleMode) || ["checkbox"].includes(this.controlType)) {
108
- // this.value[this.controlKey] = valList.some(valKey => !this.listDataKeys.includes(valKey))
109
- // ? valList.filter(valKey => this.listDataKeys.includes(valKey))
110
- // : valList;
111
- // }
112
- // // else if (["region", "cascader"].includes(this.controlType)) {
113
- // // this.value[this.controlKey] = this.$getTreeLinealDatas(valList, this.cascaderAllData, undefined, this.saveKey).length
114
- // // ? valList
115
- // // : [];
116
- // // }
117
- // // else if (["regions", "cascaders"].includes(this.controlType)) {
118
- // // this.value[this.controlKey] = valList.filter(valListItem =>
119
- // // this.$getTreeLinealDatas(valListItem, this.cascaderAllData, undefined, this.saveKey).length
120
- // // );
121
- // // }
122
- // }
123
78
 
124
- return this.value[this.controlKey] || [];
125
- },
126
- set (valList) {
127
- this.$set(this.value, this.controlKey, valList);
128
- this.change();
129
- }
130
- },
131
- emptyShowVal () {
132
- return this.canEdit
133
- ? this.commonDealPropsObj._placeholder
134
- : this.isUnitShow
135
- ? "--"
136
- : "暂无内容";
137
- },
138
- showVal () {
139
- return this.$isEmptyData(this.curVal)
140
- ? this.emptyShowVal
141
- : this.curVal;
79
+ /* ----- 基本 ----- */
80
+ finalCanEdit () {
81
+ return this.canEdit && (this.propsObj.canEdit == undefined ? true : this.propsObj.canEdit);
142
82
  },
143
-
144
83
  controlKey () {
145
84
  return this.propsObj._key;
146
85
  },
@@ -156,19 +95,6 @@ export default {
156
95
  controlName () {
157
96
  return this.propsObj._name;
158
97
  },
159
- finalCanEdit () {
160
- return this.canEdit && (this.propsObj.canEdit == undefined ? true : this.propsObj.canEdit);
161
- },
162
- // 是否为多选模式
163
- multipleMode () {
164
- return this.isOnDftSearch || this.isOnSearch
165
- ? true
166
- : ["checkbox", "regions", "cascaders"].includes(this.controlType) || !!this.selfPropsObj._multiple;
167
- },
168
- // 是否为tag显示
169
- tagShow () {
170
- return ["users", "departments", "select", "checkbox", "regions", "cascaders", "switch", "labels", "refSelect"].includes(this.controlType);
171
- },
172
98
  commonDealPropsObj () {
173
99
  const selectControlTypes = ["coordinates", "date", "switch", "select", "checkbox", "file", "region", "regions", "cascader", "cascaders", "users", "departments", "reference"];
174
100
  return {
@@ -180,13 +106,29 @@ export default {
180
106
  _disabled: this.propsObj._disabled || ["serialNumber"].includes(this.controlType) || !this.finalCanEdit
181
107
  };
182
108
  },
109
+ // 是否为多选模式
110
+ multipleMode () {
111
+ return this.isOnDftSearch || this.isOnSearch
112
+ ? true
113
+ : ["checkbox", "regions", "cascaders"].includes(this.controlType) || !!this.selfPropsObj._multiple;
114
+ },
115
+ // 是否高度自由(在表格内且_heightAuto为true,2.详情页内且独占一行)
116
+ isHeightAuto () {
117
+ return this.isInTable
118
+ ? !!this.propsObj._heightAuto
119
+ : this.isFullRow;
120
+ },
121
+ // 是否为tag显示
122
+ isTagShow () {
123
+ return ["users", "departments", "select", "checkbox", "regions", "cascaders", "switch", "labels", "refSelect"].includes(this.controlType);
124
+ },
183
125
  commonClass () {
184
126
  return {
185
127
  "bri-control-edit": this.canEdit && this.finalCanEdit,
186
128
  "bri-control-disabled": this.canEdit && !this.finalCanEdit,
187
129
  "bri-control-unit": this.isUnitShow,
188
130
  "bri-control-show": this.isDetailShow,
189
- [`control-show-${this.showStatusMode}${this.tagShow ? "-tag" : ""}`]: this.isDetailShow,
131
+ [`control-show-${this.showStatusMode}${this.isTagShow ? "-tag" : ""}`]: this.isDetailShow,
190
132
  "dsh-ellipsis": this.isUnitShow,
191
133
  "bri-control-nodata": this.$isEmptyData(this.curVal)
192
134
  };
@@ -197,10 +139,12 @@ export default {
197
139
  "bri-control-disabled": this.canEdit && !this.finalCanEdit,
198
140
  "bri-control-unit": this.isUnitShow,
199
141
  "bri-control-show": this.isDetailShow,
200
- [`control-show-${this.showStatusMode}${this.tagShow ? "-tag" : ""}`]: this.isDetailShow,
142
+ [`control-show-${this.showStatusMode}${this.isTagShow ? "-tag" : ""}`]: this.isDetailShow,
201
143
  "bri-control-nodata": this.$isEmptyData(this.curVal)
202
144
  };
203
145
  },
146
+
147
+ /* ----- 表单相关 ----- */
204
148
  clearable () {
205
149
  return this.commonDealPropsObj._clearable;
206
150
  },
@@ -208,18 +152,17 @@ export default {
208
152
  isFullRow () {
209
153
  return this.propsObj._span === 24 || !this.propsObj._span;
210
154
  },
211
- // 控件内容的高度自由(在表格内且_heightAuto为true,2.详情页内且独占一行)
212
- isHeightAuto () {
213
- return this.isInTable
214
- ? !!this.propsObj._heightAuto
215
- : this.isFullRow;
216
- },
217
155
  // 查看页下的展示模式
218
156
  showStatusMode () {
219
157
  return this.propsObj.showStatusMode || "defaut"; // "default", "frame", "backdrop"
220
158
  },
221
159
 
222
- /* 部分条件下 才使用的属性 */
160
+ /* ----- 单元格相关 ----- */
161
+ unitAlign () {
162
+ return this.propsObj._align || this.typeInfoData.align || "left"; // "left", "center", "right"
163
+ },
164
+
165
+ /* ----- 部分条件下 才使用的属性 ----- */
223
166
  // isShare () {
224
167
  // return !!this.propsObj.isShare;
225
168
  // },
@@ -255,17 +198,8 @@ export default {
255
198
  isDetailShow () {
256
199
  return !this.isInTable && !this.canEdit;
257
200
  },
258
- // showAlign () {
259
- // return !this.isUnitShow
260
- // ? "flex-start"
261
- // : this.propsObj._align === "right"
262
- // ? "flex-end"
263
- // : this.propsObj._align === "center"
264
- // ? "center"
265
- // : "flex-start";
266
- // },
267
201
 
268
- /* 部分控件下 才使用的属性 */
202
+ /* ----- 部分控件下 才使用的属性 ----- */
269
203
  compKey () {
270
204
  return this.propsObj.compKey;
271
205
  },
@@ -285,7 +219,7 @@ export default {
285
219
  return this.propsObj.allScreenKey;
286
220
  },
287
221
 
288
- /* 移动端在用 */
222
+ /* ----- 移动端在用 ----- */
289
223
  // 只做校验而隐藏的的field框,所用的propsObj
290
224
  ruleFieldPropsObj () {
291
225
  return {
@@ -297,6 +231,76 @@ export default {
297
231
  return this.$isEmptyData(this.curVal) && this.$isEmptyData(this.curValList)
298
232
  ? ""
299
233
  : "有值";
234
+ },
235
+
236
+ /* ----- 值 ----- */
237
+ // 值为不是[]类型用的
238
+ curVal: {
239
+ get () {
240
+ // // 原选项变动了或选项动态改变时,过滤掉已不存在的选项值
241
+ // if (!this.isInTable) {
242
+ // if (["select"].includes(this.controlType)) {
243
+ // if (!this.$dataType(this.propsObj._filterFunc, "function")) {
244
+ // this.value[this.controlKey] = this.listData.some(item => item[this.saveKey] === this.value[this.controlKey])
245
+ // ? this.value[this.controlKey]
246
+ // : "";
247
+ // }
248
+ // }
249
+ // }
250
+
251
+ return this.value[this.controlKey];
252
+ },
253
+ set (val) {
254
+ // 修复文本框clear后值为undefined,后端无法更新保存数据bug
255
+ if (["select"].includes(this.controlType) && val === undefined) {
256
+ val = "";
257
+ }
258
+
259
+ this.$set(this.value, this.controlKey, val);
260
+ this.change();
261
+ }
262
+ },
263
+ // 值为[]类型用的
264
+ curValList: {
265
+ get () {
266
+ // // 原选项变动了或选项动态改变时,过滤掉已不存在的选项值
267
+ // if (!this.isInTable) {
268
+ // const valList = this.value[this.controlKey] || [];
269
+ // if ((["select"].includes(this.controlType) && this.multipleMode) || ["checkbox"].includes(this.controlType)) {
270
+ // this.value[this.controlKey] = valList.some(valKey => !this.listDataKeys.includes(valKey))
271
+ // ? valList.filter(valKey => this.listDataKeys.includes(valKey))
272
+ // : valList;
273
+ // }
274
+ // // else if (["region", "cascader"].includes(this.controlType)) {
275
+ // // this.value[this.controlKey] = this.$getTreeLinealDatas(valList, this.cascaderAllData, undefined, this.saveKey).length
276
+ // // ? valList
277
+ // // : [];
278
+ // // }
279
+ // // else if (["regions", "cascaders"].includes(this.controlType)) {
280
+ // // this.value[this.controlKey] = valList.filter(valListItem =>
281
+ // // this.$getTreeLinealDatas(valListItem, this.cascaderAllData, undefined, this.saveKey).length
282
+ // // );
283
+ // // }
284
+ // }
285
+
286
+ return this.value[this.controlKey] || [];
287
+ },
288
+ set (valList) {
289
+ this.$set(this.value, this.controlKey, valList);
290
+ this.change();
291
+ }
292
+ },
293
+ emptyShowVal () {
294
+ return this.canEdit
295
+ ? this.commonDealPropsObj._placeholder
296
+ : this.isUnitShow
297
+ ? "--"
298
+ : "暂无内容";
299
+ },
300
+ showVal () {
301
+ return this.$isEmptyData(this.curVal)
302
+ ? this.emptyShowVal
303
+ : this.curVal;
300
304
  }
301
305
  },
302
306
  methods: {
@@ -22,7 +22,6 @@
22
22
  :tableDataObj="curVal"
23
23
  :data="curVal.list"
24
24
  :rowDefault="curVal.rowDefault"
25
- :rowspanMap="curVal.rowspanMap"
26
25
  :columns="subForm"
27
26
  :propsObj="defaultPropsObj"
28
27
  :allFormList="allFormList"
@@ -39,7 +38,6 @@
39
38
  :tableDataObj="curVal"
40
39
  :data="curVal.list"
41
40
  :rowDefault="curVal.rowDefault"
42
- :rowspanMap="curVal.rowspanMap"
43
41
  :compareData="curVal.oldList"
44
42
  :columns="subForm"
45
43
  :propsObj="propsObj"
@@ -52,7 +52,7 @@
52
52
  <!-- 搜索条件 -->
53
53
  <dsh-render :render="topSearchRender"></dsh-render>
54
54
 
55
- <div class="DshCasTable-main">
55
+ <div class="DshCasTable-fullscreen-inner-main DshCasTable-main">
56
56
  <div
57
57
  class="DshCasTable-main-center"
58
58
  :style="{
@@ -67,6 +67,9 @@
67
67
  <dsh-render :render="tableBodyRender"></dsh-render>
68
68
  </div>
69
69
  </div>
70
+
71
+ <!-- 添加行 -->
72
+ <dsh-render :render="createBtnRender"></dsh-render>
70
73
  </div>
71
74
  </dsh-modal>
72
75
  </div>
@@ -147,7 +150,16 @@
147
150
 
148
151
  &-fullscreen {
149
152
  &-inner {
153
+ width: 100%;
154
+ height: 100%;
150
155
  padding: 10px 20px;
156
+ display: flex;
157
+ flex-direction: column;
158
+
159
+ &-main {
160
+ flex: 1;
161
+ min-width: 0px;
162
+ }
151
163
  }
152
164
  }
153
165
  }
@@ -61,7 +61,7 @@
61
61
  @selectAll="changeSelect"
62
62
  ></bri-table>
63
63
  <bri-table
64
- v-show="showListData.length && isSearching"
64
+ v-show="!showListData.length || isSearching"
65
65
  ref="briTable"
66
66
  class="DshFlatTable-main"
67
67
  :columns="showColumns"
@@ -71,16 +71,6 @@
71
71
  @changeSelect="changeSelect"
72
72
  @selectAll="changeSelect"
73
73
  ></bri-table>
74
- <bri-table
75
- v-show="!showListData.length"
76
- class="DshFlatTable-main"
77
- :columns="showColumns"
78
- :data="showListData"
79
- :footer-data="footerData"
80
- :propsObj="tablePropsObj"
81
- @changeSelect="changeSelect"
82
- @selectAll="changeSelect"
83
- ></bri-table>
84
74
  </template>
85
75
 
86
76
  <!-- 添加行 -->
@@ -108,8 +98,8 @@
108
98
 
109
99
  <!-- 表格 -->
110
100
  <bri-table
111
- v-show="showListData.length"
112
- class="DshFlatTable-main"
101
+ v-show="showListData.length && !isSearching"
102
+ class="DshFlatTable-fullscreen-inner-main"
113
103
  :columns="showColumns"
114
104
  :data="renderedListData"
115
105
  :footer-data="footerData"
@@ -118,8 +108,8 @@
118
108
  @selectAll="changeSelect"
119
109
  ></bri-table>
120
110
  <bri-table
121
- v-show="!showListData.length"
122
- class="DshFlatTable-main"
111
+ v-show="!showListData.length || isSearching"
112
+ class="DshFlatTable-fullscreen-inner-main"
123
113
  :columns="showColumns"
124
114
  :data="showListData"
125
115
  :footer-data="footerData"
@@ -228,16 +218,16 @@
228
218
 
229
219
  &-fullscreen {
230
220
  &-inner {
221
+ width: 100%;
222
+ height: 100%;
231
223
  padding: 10px 20px;
232
- }
233
- }
234
- }
235
- </style>
236
- <style lang="less">
237
- .DshFlatTable {
238
- &-form {
239
- .item {
224
+ display: flex;
225
+ flex-direction: column;
240
226
 
227
+ &-main {
228
+ flex: 1;
229
+ min-width: 0px;
230
+ }
241
231
  }
242
232
  }
243
233
  }
@@ -58,7 +58,7 @@
58
58
  <!-- 表格 -->
59
59
  <bri-table
60
60
  v-show="showListData.length"
61
- class="DshTreeTable-main"
61
+ class="DshTreeTable-fullscreen-inner-main"
62
62
  :columns="showColumns"
63
63
  :data="renderedListData"
64
64
  :footer-data="footerData"
@@ -68,7 +68,7 @@
68
68
  ></bri-table>
69
69
  <bri-table
70
70
  v-show="!showListData.length"
71
- class="DshTreeTable-main"
71
+ class="DshTreeTable-fullscreen-inner-main"
72
72
  :columns="showColumns"
73
73
  :data="showListData"
74
74
  :footer-data="footerData"
@@ -117,7 +117,16 @@
117
117
 
118
118
  &-fullscreen {
119
119
  &-inner {
120
+ width: 100%;
121
+ height: 100%;
120
122
  padding: 10px 20px;
123
+ display: flex;
124
+ flex-direction: column;
125
+
126
+ &-main {
127
+ flex: 1;
128
+ min-width: 0px;
129
+ }
121
130
  }
122
131
  }
123
132
  }
@@ -1,18 +1,14 @@
1
1
  export default {
2
2
  mixins: [],
3
3
  components: {},
4
- props: {
5
- rowspanMap: {
6
- type: Object,
7
- default () {
8
- return {};
9
- }
10
- }
11
- },
4
+ props: {},
12
5
  data () {
13
6
  return {};
14
7
  },
15
8
  computed: {
9
+ rowspanMap () {
10
+ return this.tableDataObj.rowspanMap || {};
11
+ },
16
12
  selfBasePropsObj () {
17
13
  return {
18
14
  _mergeRowColKeys: [] // 合并行的列
@@ -126,33 +122,37 @@ export default {
126
122
  if (this.mergeRowColKeys.length) {
127
123
  this.$set(this.tableDataObj, "rowspanMap", this.tableDataObj.rowspanMap || {});
128
124
 
125
+ // TODO: 待删除
126
+ Object.entries(this.rowspanMap).forEach(arr => {
127
+ if (arr[0].includes("dsh")) {
128
+ this.rowspanMap[arr[0].split("dsh").join("--")] = this.rowspanMap[arr[1]];
129
+ delete this.rowspanMap[arr[0]];
130
+ }
131
+ });
132
+
129
133
  this.allListData.forEach((rowItem, rowIndex) => {
130
134
  this.mergeRowColKeys.forEach(colKey => {
131
135
  const column = { _key: colKey };
132
136
 
133
- // 新增时,行的_id被置换,rowspanMap也要相应置换
134
- if (this.idRecordMap[rowItem._id]) {
135
- const oldId = this.idRecordMap[rowItem._id];
136
- this.rowspanMap[this.getMixKey(rowItem, column)] = this.getRealRowspan({
137
- row: { ...rowItem, _id: oldId },
138
- rowIndex,
139
- column
140
- });
141
-
142
- // 清除rowspanMap里和默认行老_id相关的
143
- delete this.rowspanMap[this.getMixKey({ _id: oldId }, column)];
144
- }
145
- else {
137
+ // 新增页 -行的_id被置换,rowspanMap也要相应置换,还要清除rowspanMap里和默认行老_id相关的
138
+ const oldId = this.idRecordMap[rowItem._id];
139
+ const oldRow = { ...rowItem, _id: oldId };
140
+ if (oldId && ![undefined, null].includes(this.rowspanMap[this.getMixKey(oldRow, column)])) {
141
+ this.rowspanMap[this.getMixKey(rowItem, column)] = this.getRealRowspan({ row: oldRow, rowIndex, column });
142
+ delete this.rowspanMap[this.getMixKey(oldRow, column)];
143
+ } else {
146
144
  this.rowspanMap[this.getMixKey(rowItem, column)] = this.getRealRowspan({ row: rowItem, rowIndex, column });
147
145
  }
148
146
  });
149
147
  });
150
148
 
151
- // 清除rowspanMap无用的(针对老数据)
152
- Object.keys(this.rowspanMap).forEach(mixKey => {
153
- const id = mixKey.split("dsh")[0];
154
- if (!this.allListMap[id]) {
155
- delete this.rowspanMap[mixKey];
149
+ // 清除rowspanMap无用的(针对来回改mergeRowColKeys)
150
+ Object.entries(this.rowspanMap).forEach(arr => {
151
+ const keyArr = arr[0].split("--");
152
+ const id = keyArr[0];
153
+ const colKey = keyArr.slice(1).join("--");
154
+ if (!this.allListMap[id] || !this.mergeRowColKeys.includes(colKey)) {
155
+ delete this.rowspanMap[arr[0]];
156
156
  }
157
157
  });
158
158
  }
@@ -312,9 +312,7 @@ export default {
312
312
  getRealRowspan ({ row, rowIndex, column }) {
313
313
  return ![undefined, null].includes(this.rowspanMap[this.getMixKey(row, column)])
314
314
  ? this.rowspanMap[this.getMixKey(row, column)]
315
- : ![undefined, null].includes(this.rowspanMap[this.getMixKey(row, column, false)])
316
- ? this.rowspanMap[this.getMixKey(row, column, false)]
317
- : this.getRowspan({ row, rowIndex, column }, this.allListData);
315
+ : this.getRowspan({ row, rowIndex, column }, this.allListData);
318
316
  },
319
317
  // 计算rowspan
320
318
  getRowspan ({ row, rowIndex, column }, list = this.showListData) {
@@ -249,6 +249,7 @@ export default {
249
249
 
250
250
  _disabledBtns: false, // 禁用增删按钮
251
251
  _showCreateBtnColKeys: [], // 显示增删图标的列
252
+ _useInsertInOperationCol: false, // 操作列出现插入行按钮
252
253
  _disabledFootCreateBtn: false, // 禁用底部新增按钮
253
254
  _disabledDeleteDftRow: false, // 默认的数据行禁止删除
254
255
  _disabledDeleteOldRow: false, // 保存的数据行禁止删除
@@ -343,6 +344,9 @@ export default {
343
344
  showCreateBtnColKeys () {
344
345
  return this.selfPropsObj._showCreateBtnColKeys || []; // 配置端有问题,高级依赖时值成undefined了
345
346
  },
347
+ useInsertInOperationCol () {
348
+ return this.selfPropsObj._useInsertInOperationCol;
349
+ },
346
350
  disabledFootCreateBtn () {
347
351
  return this.isDftSet ? false : this.selfPropsObj._disabledFootCreateBtn;
348
352
  },
@@ -530,8 +534,8 @@ export default {
530
534
  align: "center",
531
535
  _fixed: "right",
532
536
  fixed: "right",
533
- _width: 210,
534
- width: 210,
537
+ _width: 100 + (this.rowOperationList.length - 1) * 110,
538
+ width: 100 + (this.rowOperationList.length - 1) * 110,
535
539
  renderBodyCell: ({ row, rowIndex, column }, h) => {
536
540
  return this.operationTdCellRender(h, { row, rowIndex, column });
537
541
  }
@@ -697,7 +701,11 @@ export default {
697
701
  );
698
702
  },
699
703
  rowOperationList () {
700
- return this.$getOperationList(["canInsert", "canDelete"]);
704
+ const btns = [
705
+ ...(this.useInsertInOperationCol ? ["canInsert"] : []),
706
+ "canDelete"
707
+ ];
708
+ return this.$getOperationList(btns);
701
709
  }
702
710
  },
703
711
  watch: {
@@ -1584,11 +1592,9 @@ export default {
1584
1592
  ? compareRow[curColKey].length === row[curColKey].length && compareRow[curColKey].every((item, index) => item._key === row[curColKey][index]._key)
1585
1593
  : compareRow[curColKey] === row[curColKey];
1586
1594
  },
1587
- // 行id+列key组成键
1588
- getMixKey (row, column, useDsh = true) {
1589
- return useDsh
1590
- ? `${row._id}dsh${column._key}`
1591
- : `${row._id}${column._key}`;
1595
+ // 行id + 分隔符 + 列key 组成键
1596
+ getMixKey (row, column, splitStr = "--") {
1597
+ return `${row._id}${splitStr}${column._key}`;
1592
1598
  }
1593
1599
  }
1594
1600
  };