cloud-web-corejs 1.0.89 → 1.0.90
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 +1 -1
- package/src/components/excelExport/mixins.js +3 -1
- package/src/components/table/index.js +3 -3
- package/src/components/table/util/index.js +328 -0
- package/src/components/xform/form-designer/form-widget/dialog/importDialogMixin.js +1 -1
- package/src/components/xform/form-designer/form-widget/field-widget/import-button-widget.vue +2 -1
- package/src/components/xform/form-designer/form-widget/field-widget/import2-button-widget.vue +2 -1
@@ -0,0 +1,328 @@
|
|
1
|
+
import Vue from "vue";
|
2
|
+
import CellSlot from "@base/components/table/CellSlot.vue";
|
3
|
+
|
4
|
+
let instance = null;
|
5
|
+
|
6
|
+
let TempSoltConstructor = Vue.extend(CellSlot);
|
7
|
+
|
8
|
+
function initTempSoltConstructorInstance() {
|
9
|
+
if (!instance) {
|
10
|
+
instance = new TempSoltConstructor();
|
11
|
+
}
|
12
|
+
return instance;
|
13
|
+
}
|
14
|
+
|
15
|
+
function destroyTempSoltConstructorInstance() {
|
16
|
+
if (instance) {
|
17
|
+
instance.$destroy();
|
18
|
+
instance = null;
|
19
|
+
}
|
20
|
+
}
|
21
|
+
|
22
|
+
export function getCellValue(obj) {
|
23
|
+
let {column, $table} = obj;
|
24
|
+
let params = createParams(obj);
|
25
|
+
let h = $table.$createElement;
|
26
|
+
let that = $table.$xegrid.originOption.vue;
|
27
|
+
|
28
|
+
let cellValue;
|
29
|
+
if (column.slots && column.slots.filterVal) {
|
30
|
+
cellValue = column.slots.filterVal(params);
|
31
|
+
} else {
|
32
|
+
let result = column.renderCell(h, params);
|
33
|
+
cellValue = vNodeRender(result);
|
34
|
+
}
|
35
|
+
return cellValue;
|
36
|
+
}
|
37
|
+
|
38
|
+
export function createParams(obj) {
|
39
|
+
let $xetable = obj.$table;
|
40
|
+
let {column, row} = obj;
|
41
|
+
let fixedType = $xetable.$refs.tableBody.fixedType,
|
42
|
+
afterFullData = $xetable.afterFullData,
|
43
|
+
tableData = $xetable.tableData;
|
44
|
+
var columnIndex = $xetable.getColumnIndex(column);
|
45
|
+
let items = tableData;
|
46
|
+
|
47
|
+
var _columnIndex = $xetable.getVTColumnIndex(column);
|
48
|
+
|
49
|
+
let overflowX = $xetable.overflowX;
|
50
|
+
var fixedHiddenColumn = fixedType
|
51
|
+
? column.fixed !== fixedType
|
52
|
+
: column.fixed && overflowX;
|
53
|
+
|
54
|
+
let tableColumn = $xetable.tableColumn,
|
55
|
+
scrollXLoad = $xetable.scrollXLoad,
|
56
|
+
scrollYLoad = $xetable.scrollYLoad,
|
57
|
+
allColumnOverflow = $xetable.showOverflow,
|
58
|
+
isAllOverflow = $xetable.isAllOverflow,
|
59
|
+
mergeList = $xetable.mergeList,
|
60
|
+
spanMethod = $xetable.spanMethod,
|
61
|
+
keyboardConfig = $xetable.keyboardConfig,
|
62
|
+
keyboardOpts = $xetable.keyboardOpts,
|
63
|
+
fixedColumn = $xetable.$refs.tableBody.fixedColumn,
|
64
|
+
visibleColumn = $xetable.visibleColumn;
|
65
|
+
|
66
|
+
if (obj.tableColumn == null) {
|
67
|
+
if (fixedType) {
|
68
|
+
if (
|
69
|
+
scrollXLoad
|
70
|
+
|| scrollYLoad
|
71
|
+
|| (allColumnOverflow ? isAllOverflow : allColumnOverflow)
|
72
|
+
) {
|
73
|
+
if (
|
74
|
+
!mergeList.length
|
75
|
+
&& !spanMethod
|
76
|
+
&& !(keyboardConfig && keyboardOpts.isMerge)
|
77
|
+
) {
|
78
|
+
tableColumn = fixedColumn;
|
79
|
+
} else {
|
80
|
+
tableColumn = visibleColumn; // 检查固定列是否被合并,合并范围是否超出固定列
|
81
|
+
// if (mergeList.length && !isMergeLeftFixedExceeded && fixedType === 'left') {
|
82
|
+
// tableColumn = fixedColumn
|
83
|
+
// } else if (mergeList.length && !isMergeRightFixedExceeded && fixedType === 'right') {
|
84
|
+
// tableColumn = fixedColumn
|
85
|
+
// } else {
|
86
|
+
// tableColumn = visibleColumn
|
87
|
+
// }
|
88
|
+
}
|
89
|
+
} else {
|
90
|
+
tableColumn = visibleColumn;
|
91
|
+
}
|
92
|
+
}
|
93
|
+
} else {
|
94
|
+
tableColumn = obj.tableColumn;
|
95
|
+
}
|
96
|
+
|
97
|
+
var rowid = $xetable.getRowid(row);
|
98
|
+
let fullAllDataRowIdData = $xetable.fullAllDataRowIdData;
|
99
|
+
var rest = fullAllDataRowIdData[rowid];
|
100
|
+
var rowLevel = rest ? rest.level : 0;
|
101
|
+
var seq = rest ? rest.seq : -1;
|
102
|
+
var renderType = "body";
|
103
|
+
|
104
|
+
let $rowIndex = obj.$rowIndex;
|
105
|
+
if ($rowIndex == null) {
|
106
|
+
tableData.some(function (item, index) {
|
107
|
+
let flag = rowid == $xetable.getRowid(item);
|
108
|
+
if (flag) {
|
109
|
+
$rowIndex = index;
|
110
|
+
}
|
111
|
+
return flag;
|
112
|
+
});
|
113
|
+
}
|
114
|
+
|
115
|
+
let $columnIndex = obj.$columnIndex;
|
116
|
+
if ($columnIndex == null) {
|
117
|
+
tableColumn.some(function (item, index) {
|
118
|
+
let flag = column.id == item.id;
|
119
|
+
if (flag) {
|
120
|
+
$columnIndex = index;
|
121
|
+
}
|
122
|
+
return flag;
|
123
|
+
});
|
124
|
+
}
|
125
|
+
|
126
|
+
var _rowIndex = $xetable.getVTRowIndex(row); // 确保任何情况下 rowIndex 都精准指向真实 data 索引
|
127
|
+
var rowIndex = $xetable.getRowIndex(row); // 事件绑定
|
128
|
+
var params = {
|
129
|
+
$table: $xetable,
|
130
|
+
seq: seq,
|
131
|
+
rowid: rowid,
|
132
|
+
row: row,
|
133
|
+
rowIndex: rowIndex,
|
134
|
+
$rowIndex: $rowIndex,
|
135
|
+
_rowIndex: _rowIndex,
|
136
|
+
column: column,
|
137
|
+
columnIndex: columnIndex,
|
138
|
+
$columnIndex: $columnIndex,
|
139
|
+
_columnIndex: _columnIndex,
|
140
|
+
fixed: fixedType,
|
141
|
+
type: renderType,
|
142
|
+
isHidden: fixedHiddenColumn,
|
143
|
+
level: rowLevel,
|
144
|
+
visibleData: afterFullData,
|
145
|
+
data: tableData,
|
146
|
+
items: items,
|
147
|
+
};
|
148
|
+
return params;
|
149
|
+
}
|
150
|
+
|
151
|
+
function vNodeRender(vNodes) {
|
152
|
+
if (vNodes === null || vNodes === undefined) {
|
153
|
+
return null;
|
154
|
+
}
|
155
|
+
let type = typeof vNodes;
|
156
|
+
if (type == "string" || type == "number") {
|
157
|
+
return vNodes;
|
158
|
+
}
|
159
|
+
|
160
|
+
let cellValue = "";
|
161
|
+
let contents = [];
|
162
|
+
// let instance = null;
|
163
|
+
let loop = function (item) {
|
164
|
+
if (item && item.children && item.children.length > 0) {
|
165
|
+
let arr = [];
|
166
|
+
item.children.forEach(function (child) {
|
167
|
+
if (child.componentOptions) {
|
168
|
+
initTempSoltConstructorInstance();
|
169
|
+
instance.$slots.default = child;
|
170
|
+
instance.$mount();
|
171
|
+
cellValue = "";
|
172
|
+
if (child.componentInstance && child.componentInstance.$el) {
|
173
|
+
cellValue = domRender(child.componentInstance.$el);
|
174
|
+
}
|
175
|
+
arr.push(cellValue);
|
176
|
+
instance.$slots.default = null;
|
177
|
+
} else {
|
178
|
+
let text = loop(child);
|
179
|
+
if (text != null) {
|
180
|
+
arr.push(text);
|
181
|
+
}
|
182
|
+
}
|
183
|
+
});
|
184
|
+
return arr.join("");
|
185
|
+
} else {
|
186
|
+
if (item.text != null) {
|
187
|
+
return item.text;
|
188
|
+
}
|
189
|
+
}
|
190
|
+
};
|
191
|
+
|
192
|
+
vNodes.forEach(function (vNode) {
|
193
|
+
if (vNode !== undefined && vNode !== null) {
|
194
|
+
if (vNode.componentOptions) {
|
195
|
+
initTempSoltConstructorInstance();
|
196
|
+
instance.$slots.default = vNode;
|
197
|
+
instance.$mount();
|
198
|
+
cellValue = "";
|
199
|
+
if (vNode.componentInstance && vNode.componentInstance.$el) {
|
200
|
+
cellValue = domRender(vNode.componentInstance.$el);
|
201
|
+
}
|
202
|
+
contents.push(cellValue);
|
203
|
+
// instance.$destroy();
|
204
|
+
instance.$slots.default = null;
|
205
|
+
// instance = null;
|
206
|
+
} else {
|
207
|
+
if (vNode && vNode.children && vNode.children.length > 0) {
|
208
|
+
let text = loop(vNode);
|
209
|
+
if (text != null) {
|
210
|
+
contents.push(text);
|
211
|
+
}
|
212
|
+
} else {
|
213
|
+
let type1 = typeof vNode;
|
214
|
+
if (type1 == "string" || type1 == "number") {
|
215
|
+
contents.push(vNode);
|
216
|
+
} else if (vNode.text != null) {
|
217
|
+
contents.push(vNode.text);
|
218
|
+
}
|
219
|
+
}
|
220
|
+
}
|
221
|
+
}
|
222
|
+
});
|
223
|
+
destroyTempSoltConstructorInstance();
|
224
|
+
// instance = null;
|
225
|
+
return contents.join("").trim();
|
226
|
+
}
|
227
|
+
|
228
|
+
function groupDomRender(dom) {
|
229
|
+
let contents = [];
|
230
|
+
let loop = function (item) {
|
231
|
+
if (item && item.children && item.children.length > 0) {
|
232
|
+
let arr = [];
|
233
|
+
Array.from(item.children).forEach((child) => {
|
234
|
+
let text = loop(child);
|
235
|
+
if (text != null) {
|
236
|
+
arr.push(text);
|
237
|
+
}
|
238
|
+
});
|
239
|
+
return arr.join("");
|
240
|
+
} else {
|
241
|
+
var style = window.getComputedStyle(item); //el即DOM元素
|
242
|
+
let classList = Array.from(item.classList);
|
243
|
+
if (style.display === "none") {
|
244
|
+
} else if (item.nodeName == "INPUT") {
|
245
|
+
if (item.type == "radio") {
|
246
|
+
if (item.checked && classList.includes("el-radio__original")) {
|
247
|
+
let value = item.parentNode.parentNode.innerText || "";
|
248
|
+
if (value) {
|
249
|
+
contents.push(value);
|
250
|
+
}
|
251
|
+
}
|
252
|
+
} else if (item.type == "checkbox") {
|
253
|
+
if (item.checked && classList.includes("el-checkbox__original")) {
|
254
|
+
let value = item.parentNode.parentNode.innerText || "";
|
255
|
+
if (value) {
|
256
|
+
contents.push(value);
|
257
|
+
}
|
258
|
+
}
|
259
|
+
}
|
260
|
+
}
|
261
|
+
}
|
262
|
+
};
|
263
|
+
loop(dom);
|
264
|
+
return contents.join(",");
|
265
|
+
}
|
266
|
+
|
267
|
+
function selectGroupRender(dom) {
|
268
|
+
let ul = dom.querySelector(".el-select-dropdown__list");
|
269
|
+
if (ul) {
|
270
|
+
let lis = ul.children;
|
271
|
+
if (lis) {
|
272
|
+
return Array.from(lis)
|
273
|
+
.filter((li) => {
|
274
|
+
let classList = Array.from(li.classList);
|
275
|
+
return classList.includes("selected");
|
276
|
+
})
|
277
|
+
.map((li) => {
|
278
|
+
return li.innerText;
|
279
|
+
})
|
280
|
+
.join(",");
|
281
|
+
} else {
|
282
|
+
return "";
|
283
|
+
}
|
284
|
+
} else {
|
285
|
+
return "";
|
286
|
+
}
|
287
|
+
}
|
288
|
+
|
289
|
+
function domRender(dom) {
|
290
|
+
let loop = function (item) {
|
291
|
+
if(item?.nodeName=="#comment")return "";
|
292
|
+
var style = window.getComputedStyle(item); //el即DOM元素
|
293
|
+
let role = item.getAttribute("role");
|
294
|
+
let classList = Array.from(item.classList);
|
295
|
+
|
296
|
+
if (style.display === "none") {
|
297
|
+
return "";
|
298
|
+
} else if (role == "group") {
|
299
|
+
return groupDomRender(item);
|
300
|
+
} else if (role == "radiogroup") {
|
301
|
+
return groupDomRender(item);
|
302
|
+
} else if (
|
303
|
+
classList.includes("el-select")
|
304
|
+
&& item["@@clickoutsideContext"]
|
305
|
+
) {
|
306
|
+
return selectGroupRender(item);
|
307
|
+
} else if (item && item.children && item.children.length > 0) {
|
308
|
+
let arr = [];
|
309
|
+
Array.from(item.children).forEach((child) => {
|
310
|
+
let text = loop(child);
|
311
|
+
if (text != null) {
|
312
|
+
arr.push(text);
|
313
|
+
}
|
314
|
+
});
|
315
|
+
return arr.join("");
|
316
|
+
} else {
|
317
|
+
if (item.nodeName == "INPUT") {
|
318
|
+
return item.value;
|
319
|
+
} else if (item.innerText != null && item.innerText != "") {
|
320
|
+
return item.innerText;
|
321
|
+
} else {
|
322
|
+
return "";
|
323
|
+
}
|
324
|
+
}
|
325
|
+
};
|
326
|
+
let res = loop(dom).trim();
|
327
|
+
return res;
|
328
|
+
}
|