vxe-table 3.5.8 → 3.5.9-beta.10
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/README.md +1 -1
- package/lib/edit/src/mixin.js +18 -14
- package/lib/edit/src/mixin.min.js +1 -1
- package/lib/export/src/mixin.js +1 -1
- package/lib/export/src/mixin.min.js +1 -1
- package/lib/filter/src/mixin.js +8 -5
- package/lib/filter/src/mixin.min.js +1 -1
- package/lib/filter/src/panel.js +7 -2
- package/lib/filter/src/panel.min.js +1 -1
- package/lib/form/src/form-config-item.js +2 -1
- package/lib/form/src/form-config-item.min.js +1 -1
- package/lib/form/src/form-item.js +3 -1
- package/lib/form/src/form-item.min.js +1 -1
- package/lib/form/src/form.js +12 -7
- package/lib/form/src/form.min.js +1 -1
- package/lib/form/src/render.js +1 -0
- package/lib/form/src/render.min.js +1 -1
- package/lib/form/style/style.css +2 -1
- package/lib/form/style/style.min.css +1 -1
- package/lib/grid/src/grid.js +14 -8
- package/lib/grid/src/grid.min.js +1 -1
- package/lib/index.css +1 -1
- package/lib/index.umd.js +804 -496
- package/lib/index.umd.min.js +1 -1
- package/lib/input/src/input.js +20 -15
- package/lib/input/src/input.min.js +1 -1
- package/lib/list/src/list.js +12 -7
- package/lib/list/src/list.min.js +1 -1
- package/lib/loading/index.js +19 -0
- package/lib/loading/index.min.js +1 -0
- package/lib/loading/src/loading.js +36 -0
- package/lib/loading/src/loading.min.js +1 -0
- package/lib/locale/lang/en-US.js +5 -0
- package/lib/locale/lang/en-US.min.js +1 -1
- package/lib/locale/lang/en-US.umd.js +5 -0
- package/lib/locale/lang/ja-JP.js +5 -0
- package/lib/locale/lang/ja-JP.min.js +1 -1
- package/lib/locale/lang/ja-JP.umd.js +5 -0
- package/lib/locale/lang/zh-CN.js +5 -0
- package/lib/locale/lang/zh-CN.min.js +1 -1
- package/lib/locale/lang/zh-CN.umd.js +5 -0
- package/lib/locale/lang/zh-HK.min.js +1 -1
- package/lib/locale/lang/zh-HK.umd.js +5 -0
- package/lib/locale/lang/zh-MO.min.js +1 -1
- package/lib/locale/lang/zh-MO.umd.js +5 -0
- package/lib/locale/lang/zh-TC.js +5 -0
- package/lib/locale/lang/zh-TC.min.js +1 -1
- package/lib/locale/lang/zh-TC.umd.js +5 -0
- package/lib/locale/lang/zh-TW.min.js +1 -1
- package/lib/locale/lang/zh-TW.umd.js +5 -0
- package/lib/modal/src/modal.js +28 -12
- package/lib/modal/src/modal.min.js +1 -1
- package/lib/modal/style/style.css +1 -1
- package/lib/modal/style/style.min.css +1 -1
- package/lib/select/src/select.js +213 -33
- package/lib/select/src/select.min.js +1 -1
- package/lib/select/style/style.css +17 -72
- package/lib/select/style/style.min.css +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/table/src/body.js +6 -3
- package/lib/table/src/body.min.js +1 -1
- package/lib/table/src/cell.js +3 -3
- package/lib/table/src/cell.min.js +1 -1
- package/lib/table/src/columnInfo.js +1 -1
- package/lib/table/src/columnInfo.min.js +1 -1
- package/lib/table/src/methods.js +84 -62
- package/lib/table/src/methods.min.js +1 -1
- package/lib/table/src/table.js +12 -8
- package/lib/table/src/table.min.js +1 -1
- package/lib/table/style/style.css +0 -68
- package/lib/table/style/style.min.css +1 -1
- package/lib/toolbar/style/style.css +13 -10
- package/lib/toolbar/style/style.min.css +1 -1
- package/lib/tools/log.js +1 -1
- package/lib/tools/log.min.js +1 -1
- package/lib/tools/utils.js +2 -2
- package/lib/tools/utils.min.js +1 -1
- package/lib/v-x-e-table/index.js +1 -1
- package/lib/v-x-e-table/index.min.js +1 -1
- package/lib/v-x-e-table/src/conf.js +6 -2
- package/lib/v-x-e-table/src/conf.min.js +1 -1
- package/lib/v-x-e-table/src/store.js +10 -5
- package/lib/v-x-e-table/src/store.min.js +1 -1
- package/lib/v-x-e-table/style/style.css +590 -0
- package/lib/v-x-e-table/style/style.min.css +1 -0
- package/package.json +1 -1
- package/packages/edit/src/mixin.js +17 -13
- package/packages/export/src/mixin.js +2 -2
- package/packages/filter/src/mixin.js +5 -5
- package/packages/filter/src/panel.js +13 -6
- package/packages/form/src/form-config-item.js +17 -9
- package/packages/form/src/form-item.js +16 -8
- package/packages/form/src/form.js +10 -9
- package/packages/form/src/render.js +1 -1
- package/packages/grid/src/grid.js +9 -7
- package/packages/input/src/input.js +17 -13
- package/packages/list/src/list.js +10 -9
- package/packages/loading/index.js +9 -0
- package/packages/loading/src/loading.js +31 -0
- package/packages/locale/lang/en-US.js +5 -0
- package/packages/locale/lang/ja-JP.js +5 -0
- package/packages/locale/lang/zh-CN.js +5 -0
- package/packages/locale/lang/zh-TC.js +5 -0
- package/packages/modal/src/modal.js +23 -14
- package/packages/select/src/select.js +139 -16
- package/packages/table/src/body.js +39 -24
- package/packages/table/src/cell.js +3 -3
- package/packages/table/src/columnInfo.js +1 -1
- package/packages/table/src/methods.js +68 -57
- package/packages/table/src/table.js +10 -9
- package/packages/tools/utils.js +2 -2
- package/packages/v-x-e-table/src/conf.js +6 -2
- package/packages/v-x-e-table/src/store.js +8 -4
- package/styles/form.scss +1 -0
- package/styles/{base/loading.scss → loading.scss} +17 -4
- package/styles/modal.scss +1 -1
- package/styles/modules.scss +1 -0
- package/styles/select.scss +24 -6
- package/styles/table.scss +0 -1
- package/styles/toolbar.scss +9 -5
- package/styles/v-x-e-table.scss +2 -0
- package/styles/variable.scss +0 -4
- package/types/form-item.d.ts +11 -8
- package/types/form.d.ts +5 -2
- package/types/table.d.ts +5 -0
- package/types/v-x-e-table/renderer.d.ts +15 -2
|
@@ -138,12 +138,12 @@ function calculateMergerOffserIndex (list, offsetItem, type) {
|
|
|
138
138
|
function setMerges (_vm, merges, mList, rowList) {
|
|
139
139
|
if (merges) {
|
|
140
140
|
const { treeConfig, visibleColumn } = _vm
|
|
141
|
-
if (treeConfig) {
|
|
142
|
-
throw new Error(UtilTools.getLog('vxe.error.noTree', ['merge-footer-items']))
|
|
143
|
-
}
|
|
144
141
|
if (!XEUtils.isArray(merges)) {
|
|
145
142
|
merges = [merges]
|
|
146
143
|
}
|
|
144
|
+
if (treeConfig && merges.length) {
|
|
145
|
+
errLog('vxe.error.noTree', ['merge-cells | merge-footer-items'])
|
|
146
|
+
}
|
|
147
147
|
merges.forEach(item => {
|
|
148
148
|
let { row, col, rowspan, colspan } = item
|
|
149
149
|
if (rowList && XEUtils.isNumber(row)) {
|
|
@@ -187,12 +187,12 @@ function removeMerges (_vm, merges, mList, rowList) {
|
|
|
187
187
|
const rest = []
|
|
188
188
|
if (merges) {
|
|
189
189
|
const { treeConfig, visibleColumn } = _vm
|
|
190
|
-
if (treeConfig) {
|
|
191
|
-
throw new Error(UtilTools.getLog('vxe.error.noTree', ['merge-cells']))
|
|
192
|
-
}
|
|
193
190
|
if (!XEUtils.isArray(merges)) {
|
|
194
191
|
merges = [merges]
|
|
195
192
|
}
|
|
193
|
+
if (treeConfig && merges.length) {
|
|
194
|
+
errLog('vxe.error.noTree', ['merge-cells | merge-footer-items'])
|
|
195
|
+
}
|
|
196
196
|
merges.forEach(item => {
|
|
197
197
|
let { row, col } = item
|
|
198
198
|
if (rowList && XEUtils.isNumber(row)) {
|
|
@@ -351,7 +351,7 @@ const Methods = {
|
|
|
351
351
|
* @param {Array} datas 数据
|
|
352
352
|
*/
|
|
353
353
|
loadTableData (datas) {
|
|
354
|
-
const { keepSource, treeConfig, treeOpts, editStore, scrollYStore, scrollXStore, lastScrollLeft, lastScrollTop, scrollYLoad: oldScrollYLoad } = this
|
|
354
|
+
const { keepSource, treeConfig, treeOpts, editStore, scrollYStore, scrollXStore, lastScrollLeft, lastScrollTop, scrollYLoad: oldScrollYLoad, sXOpts, sYOpts } = this
|
|
355
355
|
let treeData = []
|
|
356
356
|
let fullData = datas ? datas.slice(0) : []
|
|
357
357
|
if (treeConfig) {
|
|
@@ -446,11 +446,20 @@ const Methods = {
|
|
|
446
446
|
this.$nextTick()
|
|
447
447
|
.then(() => this.recalculate())
|
|
448
448
|
.then(() => {
|
|
449
|
+
let targetScrollLeft = lastScrollLeft
|
|
450
|
+
let targetScrollTop = lastScrollTop
|
|
451
|
+
// 是否在更新数据之后自动滚动重置滚动条
|
|
452
|
+
if (sXOpts.scrollToLeftOnChange) {
|
|
453
|
+
targetScrollLeft = 0
|
|
454
|
+
}
|
|
455
|
+
if (sYOpts.scrollToTopOnChange) {
|
|
456
|
+
targetScrollTop = 0
|
|
457
|
+
}
|
|
449
458
|
// 是否变更虚拟滚动
|
|
450
459
|
if (oldScrollYLoad === sYLoad) {
|
|
451
|
-
restoreScrollLocation(this,
|
|
460
|
+
restoreScrollLocation(this, targetScrollLeft, targetScrollTop).then(resolve)
|
|
452
461
|
} else {
|
|
453
|
-
setTimeout(() => restoreScrollLocation(this,
|
|
462
|
+
setTimeout(() => restoreScrollLocation(this, targetScrollLeft, targetScrollTop).then(resolve))
|
|
454
463
|
}
|
|
455
464
|
})
|
|
456
465
|
})
|
|
@@ -654,15 +663,15 @@ const Methods = {
|
|
|
654
663
|
let radioColumn
|
|
655
664
|
let hasFixed
|
|
656
665
|
const handleFunc = (column, index, items, path, parent) => {
|
|
657
|
-
const { id: colid,
|
|
666
|
+
const { id: colid, field, fixed, type, treeNode } = column
|
|
658
667
|
const rest = { column, colid, index, items, parent }
|
|
659
|
-
if (
|
|
668
|
+
if (field) {
|
|
660
669
|
if (process.env.VUE_APP_VXE_TABLE_ENV === 'development') {
|
|
661
|
-
if (fullColumnFieldData[
|
|
662
|
-
warnLog('vxe.error.colRepet', ['field',
|
|
670
|
+
if (fullColumnFieldData[field]) {
|
|
671
|
+
warnLog('vxe.error.colRepet', ['field', field])
|
|
663
672
|
}
|
|
664
673
|
}
|
|
665
|
-
fullColumnFieldData[
|
|
674
|
+
fullColumnFieldData[field] = rest
|
|
666
675
|
}
|
|
667
676
|
if (!hasFixed && fixed) {
|
|
668
677
|
hasFixed = fixed
|
|
@@ -874,8 +883,8 @@ const Methods = {
|
|
|
874
883
|
const { radioOpts, checkboxOpts, treeConfig, treeOpts, expandOpts } = this
|
|
875
884
|
const rowkey = getRowkey(this)
|
|
876
885
|
this.tableFullColumn.forEach(column => {
|
|
877
|
-
const {
|
|
878
|
-
if (
|
|
886
|
+
const { field, editRender } = column
|
|
887
|
+
if (field && !XEUtils.has(record, field)) {
|
|
879
888
|
let cellValue = null
|
|
880
889
|
if (editRender) {
|
|
881
890
|
const { defaultValue } = editRender
|
|
@@ -885,7 +894,7 @@ const Methods = {
|
|
|
885
894
|
cellValue = defaultValue
|
|
886
895
|
}
|
|
887
896
|
}
|
|
888
|
-
XEUtils.set(record,
|
|
897
|
+
XEUtils.set(record, field, cellValue)
|
|
889
898
|
}
|
|
890
899
|
})
|
|
891
900
|
const otherFields = [radioOpts.labelField, checkboxOpts.checkField, checkboxOpts.labelField, expandOpts.labelField]
|
|
@@ -954,7 +963,7 @@ const Methods = {
|
|
|
954
963
|
if (!this.isInsertByRow(row)) {
|
|
955
964
|
const rowIndex = this.getRowIndex(row)
|
|
956
965
|
if (treeConfig && rowIndex === -1) {
|
|
957
|
-
|
|
966
|
+
errLog('vxe.error.noTree', ['revertData'])
|
|
958
967
|
}
|
|
959
968
|
const oRow = tableSourceData[rowIndex]
|
|
960
969
|
if (oRow && row) {
|
|
@@ -993,7 +1002,7 @@ const Methods = {
|
|
|
993
1002
|
} else {
|
|
994
1003
|
rows.forEach(row => {
|
|
995
1004
|
visibleColumn.forEach(column => {
|
|
996
|
-
if (column.
|
|
1005
|
+
if (column.field) {
|
|
997
1006
|
setCellValue(row, column, null)
|
|
998
1007
|
}
|
|
999
1008
|
})
|
|
@@ -1045,7 +1054,7 @@ const Methods = {
|
|
|
1045
1054
|
return !eqCellValue(oRow, row, field)
|
|
1046
1055
|
}
|
|
1047
1056
|
for (let index = 0, len = visibleColumn.length; index < len; index++) {
|
|
1048
|
-
property = visibleColumn[index].
|
|
1057
|
+
property = visibleColumn[index].field
|
|
1049
1058
|
if (property && !eqCellValue(oRow, row, property)) {
|
|
1050
1059
|
return true
|
|
1051
1060
|
}
|
|
@@ -1103,14 +1112,14 @@ const Methods = {
|
|
|
1103
1112
|
getCheckboxRecords (isFull) {
|
|
1104
1113
|
const { tableFullData, afterFullData, treeConfig, treeOpts, checkboxOpts, tableFullTreeData, afterTreeFullData } = this
|
|
1105
1114
|
const { transform, children, mapChildren } = treeOpts
|
|
1106
|
-
const { checkField
|
|
1115
|
+
const { checkField } = checkboxOpts
|
|
1107
1116
|
const currTableData = isFull ? (transform ? tableFullTreeData : tableFullData) : (transform ? afterTreeFullData : afterFullData)
|
|
1108
1117
|
let rowList = []
|
|
1109
|
-
if (
|
|
1118
|
+
if (checkField) {
|
|
1110
1119
|
if (treeConfig) {
|
|
1111
|
-
rowList = XEUtils.filterTree(currTableData, row => XEUtils.get(row,
|
|
1120
|
+
rowList = XEUtils.filterTree(currTableData, row => XEUtils.get(row, checkField), { children: transform ? mapChildren : children })
|
|
1112
1121
|
} else {
|
|
1113
|
-
rowList = currTableData.filter(row => XEUtils.get(row,
|
|
1122
|
+
rowList = currTableData.filter(row => XEUtils.get(row, checkField))
|
|
1114
1123
|
}
|
|
1115
1124
|
} else {
|
|
1116
1125
|
const { selection } = this
|
|
@@ -1157,7 +1166,7 @@ const Methods = {
|
|
|
1157
1166
|
const filterColumns = []
|
|
1158
1167
|
let orderColumns = []
|
|
1159
1168
|
tableFullColumn.forEach(column => {
|
|
1160
|
-
const {
|
|
1169
|
+
const { field, sortable, order, filters } = column
|
|
1161
1170
|
if (!allRemoteFilter && filters && filters.length) {
|
|
1162
1171
|
const valueList = []
|
|
1163
1172
|
const itemList = []
|
|
@@ -1172,7 +1181,7 @@ const Methods = {
|
|
|
1172
1181
|
}
|
|
1173
1182
|
}
|
|
1174
1183
|
if (!allRemoteSort && sortable && order) {
|
|
1175
|
-
orderColumns.push({ column, field
|
|
1184
|
+
orderColumns.push({ column, field, property: field, order, sortTime: column.sortTime })
|
|
1176
1185
|
}
|
|
1177
1186
|
})
|
|
1178
1187
|
if (sortMultiple && chronological && orderColumns.length > 1) {
|
|
@@ -1182,7 +1191,7 @@ const Methods = {
|
|
|
1182
1191
|
const handleFilter = (row) => {
|
|
1183
1192
|
return filterColumns.every(({ column, valueList, itemList }) => {
|
|
1184
1193
|
if (valueList.length && !allRemoteFilter) {
|
|
1185
|
-
const { filterMethod, filterRender } = column
|
|
1194
|
+
const { filterMethod, filterRender, field } = column
|
|
1186
1195
|
const compConf = filterRender ? VXETable.renderer.get(filterRender.name) : null
|
|
1187
1196
|
const compFilterMethod = compConf && compConf.renderFilter ? compConf.filterMethod : null
|
|
1188
1197
|
const defaultFilterMethod = compConf ? compConf.defaultFilterMethod : null
|
|
@@ -1196,7 +1205,7 @@ const Methods = {
|
|
|
1196
1205
|
} else if (defaultFilterMethod) {
|
|
1197
1206
|
return itemList.some((item) => defaultFilterMethod({ value: item.value, option: item, cellValue, row, column, $table: this }))
|
|
1198
1207
|
}
|
|
1199
|
-
return valueList.indexOf(XEUtils.get(row,
|
|
1208
|
+
return valueList.indexOf(XEUtils.get(row, field)) > -1
|
|
1200
1209
|
}
|
|
1201
1210
|
return true
|
|
1202
1211
|
})
|
|
@@ -1232,7 +1241,7 @@ const Methods = {
|
|
|
1232
1241
|
tableData = tableTree
|
|
1233
1242
|
} else {
|
|
1234
1243
|
if (allSortMethod) {
|
|
1235
|
-
const sortRests = allSortMethod({ data: tableData, column: firstOrderColumn.column, property: firstOrderColumn.
|
|
1244
|
+
const sortRests = allSortMethod({ data: tableData, column: firstOrderColumn.column, property: firstOrderColumn.field, field: firstOrderColumn.field, order: firstOrderColumn.order, sortList: orderColumns, $table: this })
|
|
1236
1245
|
tableData = XEUtils.isArray(sortRests) ? sortRests : tableData
|
|
1237
1246
|
} else {
|
|
1238
1247
|
// 兼容 v4
|
|
@@ -1312,8 +1321,9 @@ const Methods = {
|
|
|
1312
1321
|
* 根据行的唯一主键获取行
|
|
1313
1322
|
* @param {String/Number} rowid 行主键
|
|
1314
1323
|
*/
|
|
1315
|
-
getRowById (
|
|
1324
|
+
getRowById (cellValue) {
|
|
1316
1325
|
const fullDataRowIdData = this.fullDataRowIdData
|
|
1326
|
+
const rowid = XEUtils.eqNull(cellValue) ? '' : encodeURIComponent(cellValue)
|
|
1317
1327
|
return fullDataRowIdData[rowid] ? fullDataRowIdData[rowid].row : null
|
|
1318
1328
|
},
|
|
1319
1329
|
/**
|
|
@@ -2472,7 +2482,8 @@ const Methods = {
|
|
|
2472
2482
|
// }
|
|
2473
2483
|
// 如果是按下非功能键之外允许直接编辑
|
|
2474
2484
|
if (selected.column && selected.row && isEnableConf(selected.column.editRender)) {
|
|
2475
|
-
|
|
2485
|
+
const beforeEditMethod = editOpts.beforeEditMethod || editOpts.activeMethod
|
|
2486
|
+
if (!beforeEditMethod || beforeEditMethod({ ...selected.args, $table: this })) {
|
|
2476
2487
|
if (editMethod) {
|
|
2477
2488
|
editMethod({
|
|
2478
2489
|
row: selected.row,
|
|
@@ -2750,9 +2761,9 @@ const Methods = {
|
|
|
2750
2761
|
return this.$nextTick()
|
|
2751
2762
|
},
|
|
2752
2763
|
isCheckedByCheckboxRow (row) {
|
|
2753
|
-
const { checkField
|
|
2754
|
-
if (
|
|
2755
|
-
return XEUtils.get(row,
|
|
2764
|
+
const { checkField } = this.checkboxOpts
|
|
2765
|
+
if (checkField) {
|
|
2766
|
+
return XEUtils.get(row, checkField)
|
|
2756
2767
|
}
|
|
2757
2768
|
return this.selection.indexOf(row) > -1
|
|
2758
2769
|
},
|
|
@@ -2765,19 +2776,19 @@ const Methods = {
|
|
|
2765
2776
|
*/
|
|
2766
2777
|
handleSelectRow ({ row }, value) {
|
|
2767
2778
|
const { selection, afterFullData, treeConfig, treeOpts, treeIndeterminates, checkboxOpts } = this
|
|
2768
|
-
const { checkField
|
|
2769
|
-
if (
|
|
2779
|
+
const { checkField, checkStrictly, checkMethod } = checkboxOpts
|
|
2780
|
+
if (checkField) {
|
|
2770
2781
|
if (treeConfig && !checkStrictly) {
|
|
2771
2782
|
if (value === -1) {
|
|
2772
2783
|
if (treeIndeterminates.indexOf(row) === -1) {
|
|
2773
2784
|
treeIndeterminates.push(row)
|
|
2774
2785
|
}
|
|
2775
|
-
XEUtils.set(row,
|
|
2786
|
+
XEUtils.set(row, checkField, false)
|
|
2776
2787
|
} else {
|
|
2777
2788
|
// 更新子节点状态
|
|
2778
2789
|
XEUtils.eachTree([row], (item) => {
|
|
2779
2790
|
if (row === item || (!checkMethod || checkMethod({ row: item }))) {
|
|
2780
|
-
XEUtils.set(item,
|
|
2791
|
+
XEUtils.set(item, checkField, value)
|
|
2781
2792
|
XEUtils.remove(treeIndeterminates, half => half === item)
|
|
2782
2793
|
this.handleCheckboxReserveRow(row, value)
|
|
2783
2794
|
}
|
|
@@ -2792,14 +2803,14 @@ const Methods = {
|
|
|
2792
2803
|
if (indeterminatesItem) {
|
|
2793
2804
|
parentStatus = -1
|
|
2794
2805
|
} else {
|
|
2795
|
-
const selectItems = matchObj.items.filter(item => XEUtils.get(item,
|
|
2806
|
+
const selectItems = matchObj.items.filter(item => XEUtils.get(item, checkField))
|
|
2796
2807
|
parentStatus = selectItems.filter(item => vItems.indexOf(item) > -1).length === vItems.length ? true : (selectItems.length || value === -1 ? -1 : false)
|
|
2797
2808
|
}
|
|
2798
2809
|
return this.handleSelectRow({ row: matchObj.parent }, parentStatus)
|
|
2799
2810
|
}
|
|
2800
2811
|
} else {
|
|
2801
2812
|
if (!checkMethod || checkMethod({ row })) {
|
|
2802
|
-
XEUtils.set(row,
|
|
2813
|
+
XEUtils.set(row, checkField, value)
|
|
2803
2814
|
this.handleCheckboxReserveRow(row, value)
|
|
2804
2815
|
}
|
|
2805
2816
|
}
|
|
@@ -2855,9 +2866,9 @@ const Methods = {
|
|
|
2855
2866
|
},
|
|
2856
2867
|
handleToggleCheckRowEvent (evnt, params) {
|
|
2857
2868
|
const { selection, checkboxOpts } = this
|
|
2858
|
-
const { checkField
|
|
2869
|
+
const { checkField } = checkboxOpts
|
|
2859
2870
|
const { row } = params
|
|
2860
|
-
const value =
|
|
2871
|
+
const value = checkField ? !XEUtils.get(row, checkField) : selection.indexOf(row) === -1
|
|
2861
2872
|
if (evnt) {
|
|
2862
2873
|
this.triggerCheckRowEvent(evnt, params, value)
|
|
2863
2874
|
} else {
|
|
@@ -2884,7 +2895,7 @@ const Methods = {
|
|
|
2884
2895
|
*/
|
|
2885
2896
|
setAllCheckboxRow (value) {
|
|
2886
2897
|
const { afterFullData, treeConfig, treeOpts, selection, checkboxReserveRowMap, checkboxOpts } = this
|
|
2887
|
-
const { checkField
|
|
2898
|
+
const { checkField, reserve, checkStrictly, checkMethod } = checkboxOpts
|
|
2888
2899
|
let selectRows = []
|
|
2889
2900
|
const beforeSelection = treeConfig ? [] : selection.filter(row => afterFullData.indexOf(row) === -1)
|
|
2890
2901
|
if (checkStrictly) {
|
|
@@ -2894,13 +2905,13 @@ const Methods = {
|
|
|
2894
2905
|
* 绑定属性方式(高性能,有污染)
|
|
2895
2906
|
* 必须在行数据存在对应的属性,否则将不响应
|
|
2896
2907
|
*/
|
|
2897
|
-
if (
|
|
2908
|
+
if (checkField) {
|
|
2898
2909
|
const checkValFn = (row) => {
|
|
2899
2910
|
if (!checkMethod || checkMethod({ row })) {
|
|
2900
2911
|
if (value) {
|
|
2901
2912
|
selectRows.push(row)
|
|
2902
2913
|
}
|
|
2903
|
-
XEUtils.set(row,
|
|
2914
|
+
XEUtils.set(row, checkField, value)
|
|
2904
2915
|
}
|
|
2905
2916
|
}
|
|
2906
2917
|
// 如果存在选中方法
|
|
@@ -2972,7 +2983,7 @@ const Methods = {
|
|
|
2972
2983
|
afterFullData.forEach(row => this.handleCheckboxReserveRow(row, false))
|
|
2973
2984
|
}
|
|
2974
2985
|
}
|
|
2975
|
-
this.selection =
|
|
2986
|
+
this.selection = checkField ? [] : beforeSelection.concat(selectRows)
|
|
2976
2987
|
}
|
|
2977
2988
|
this.treeIndeterminates = []
|
|
2978
2989
|
this.checkSelectionStatus()
|
|
@@ -3183,12 +3194,12 @@ const Methods = {
|
|
|
3183
3194
|
*/
|
|
3184
3195
|
clearCheckboxRow () {
|
|
3185
3196
|
const { tableFullData, treeConfig, treeOpts, checkboxOpts } = this
|
|
3186
|
-
const { checkField
|
|
3187
|
-
if (
|
|
3197
|
+
const { checkField, reserve } = checkboxOpts
|
|
3198
|
+
if (checkField) {
|
|
3188
3199
|
if (treeConfig) {
|
|
3189
|
-
XEUtils.eachTree(tableFullData, item => XEUtils.set(item,
|
|
3200
|
+
XEUtils.eachTree(tableFullData, item => XEUtils.set(item, checkField, false), treeOpts)
|
|
3190
3201
|
} else {
|
|
3191
|
-
tableFullData.forEach(item => XEUtils.set(item,
|
|
3202
|
+
tableFullData.forEach(item => XEUtils.set(item, checkField, false))
|
|
3192
3203
|
}
|
|
3193
3204
|
}
|
|
3194
3205
|
if (reserve) {
|
|
@@ -3536,14 +3547,14 @@ const Methods = {
|
|
|
3536
3547
|
*/
|
|
3537
3548
|
triggerSortEvent (evnt, column, order) {
|
|
3538
3549
|
const { sortOpts } = this
|
|
3539
|
-
const
|
|
3540
|
-
if (
|
|
3550
|
+
const { field, sortable, remoteSort } = column
|
|
3551
|
+
if (sortable || remoteSort) {
|
|
3541
3552
|
if (!order || column.order === order) {
|
|
3542
3553
|
this.clearSort(sortOpts.multiple ? column : null)
|
|
3543
3554
|
} else {
|
|
3544
|
-
this.sort({ field
|
|
3555
|
+
this.sort({ field, order })
|
|
3545
3556
|
}
|
|
3546
|
-
const params = { column, property, order: column.order, sortList: this.getSortColumns() }
|
|
3557
|
+
const params = { column, field, property: field, order: column.order, sortList: this.getSortColumns() }
|
|
3547
3558
|
this.emitEvent('sort-change', params, evnt)
|
|
3548
3559
|
}
|
|
3549
3560
|
},
|
|
@@ -3630,9 +3641,9 @@ const Methods = {
|
|
|
3630
3641
|
const { multiple, chronological } = this.sortOpts
|
|
3631
3642
|
const sortList = []
|
|
3632
3643
|
this.tableFullColumn.forEach((column) => {
|
|
3633
|
-
const {
|
|
3644
|
+
const { field, order } = column
|
|
3634
3645
|
if ((column.sortable || column.remoteSort) && order) {
|
|
3635
|
-
sortList.push({ column, field
|
|
3646
|
+
sortList.push({ column, field, property: field, order, sortTime: column.sortTime })
|
|
3636
3647
|
}
|
|
3637
3648
|
})
|
|
3638
3649
|
if (multiple && chronological && sortList.length > 1) {
|
|
@@ -3654,7 +3665,7 @@ const Methods = {
|
|
|
3654
3665
|
visible: false
|
|
3655
3666
|
})
|
|
3656
3667
|
if (visible) {
|
|
3657
|
-
this.emitEvent('filter-visible', { column, property: column.
|
|
3668
|
+
this.emitEvent('filter-visible', { column, field: column.field, property: column.field, filterList: this.getCheckedFilters(), visible: false }, null)
|
|
3658
3669
|
}
|
|
3659
3670
|
return this.$nextTick()
|
|
3660
3671
|
},
|
|
@@ -9,6 +9,7 @@ import { createResizeEvent } from '../../tools/resize'
|
|
|
9
9
|
import { GlobalEvent } from '../../tools/event'
|
|
10
10
|
import methods from './methods'
|
|
11
11
|
import { warnLog, errLog } from '../../tools/log'
|
|
12
|
+
import VxeLoading from '../../loading/index'
|
|
12
13
|
|
|
13
14
|
/**
|
|
14
15
|
* 渲染浮固定列
|
|
@@ -829,6 +830,9 @@ export default {
|
|
|
829
830
|
if (this.emptyRender && !XEUtils.isObject(this.emptyRender)) {
|
|
830
831
|
warnLog('vxe.error.errProp', [`table.empty-render=${this.emptyRender}`, 'table.empty-render={}'])
|
|
831
832
|
}
|
|
833
|
+
// if (this.editConfig && this.editConfig.activeMethod) {
|
|
834
|
+
// warnLog('vxe.error.delProp', ['table.edit-config.activeMethod', 'table.edit-config.beforeEditMethod'])
|
|
835
|
+
// }
|
|
832
836
|
}
|
|
833
837
|
|
|
834
838
|
// 检查是否有安装需要的模块
|
|
@@ -1083,15 +1087,12 @@ export default {
|
|
|
1083
1087
|
/**
|
|
1084
1088
|
* 加载中
|
|
1085
1089
|
*/
|
|
1086
|
-
h(
|
|
1087
|
-
class:
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
class: 'vxe-loading--spinner'
|
|
1093
|
-
})
|
|
1094
|
-
]),
|
|
1090
|
+
h(VxeLoading, {
|
|
1091
|
+
class: 'vxe-table--loading',
|
|
1092
|
+
props: {
|
|
1093
|
+
loading
|
|
1094
|
+
}
|
|
1095
|
+
}),
|
|
1095
1096
|
/**
|
|
1096
1097
|
* 筛选
|
|
1097
1098
|
*/
|
package/packages/tools/utils.js
CHANGED
|
@@ -45,10 +45,10 @@ export const UtilTools = {
|
|
|
45
45
|
return '' + (value === '' || value === null || value === undefined ? (placeholder ? GlobalConfig.emptyCell : '') : value)
|
|
46
46
|
},
|
|
47
47
|
getCellValue (row, column) {
|
|
48
|
-
return XEUtils.get(row, column.
|
|
48
|
+
return XEUtils.get(row, column.field)
|
|
49
49
|
},
|
|
50
50
|
setCellValue (row, column, value) {
|
|
51
|
-
return XEUtils.set(row, column.
|
|
51
|
+
return XEUtils.set(row, column.field, value)
|
|
52
52
|
},
|
|
53
53
|
// 组装列配置
|
|
54
54
|
assemColumn (_vm) {
|
|
@@ -6,6 +6,7 @@ export default {
|
|
|
6
6
|
version: 0, // 版本号,对于某些带数据缓存的功能有用到,上升版本号可以用于重置数据
|
|
7
7
|
// resizeInterval: 500,
|
|
8
8
|
emptyCell: ' ',
|
|
9
|
+
loadingText: null, // 自定义loading提示内容,如果为null则不显示文本
|
|
9
10
|
table: {
|
|
10
11
|
fit: true,
|
|
11
12
|
showHeader: true,
|
|
@@ -123,6 +124,9 @@ export default {
|
|
|
123
124
|
types: {}
|
|
124
125
|
},
|
|
125
126
|
icon: {
|
|
127
|
+
// loading
|
|
128
|
+
// LOADING: iconPrefix + 'refresh roll vxe-loading--default-icon',
|
|
129
|
+
|
|
126
130
|
// table
|
|
127
131
|
TABLE_SORT_ASC: iconPrefix + 'caret-top',
|
|
128
132
|
TABLE_SORT_DESC: iconPrefix + 'caret-bottom',
|
|
@@ -260,8 +264,8 @@ export default {
|
|
|
260
264
|
// parseFormat: 'yyyy-MM-dd HH:mm:ss.SSS',
|
|
261
265
|
// labelFormat: '',
|
|
262
266
|
// valueFormat: '',
|
|
263
|
-
|
|
264
|
-
|
|
267
|
+
startDate: new Date(1900, 0, 1),
|
|
268
|
+
endDate: new Date(2100, 0, 1),
|
|
265
269
|
startDay: 1,
|
|
266
270
|
selectDay: 1,
|
|
267
271
|
digits: 2,
|
|
@@ -19,13 +19,17 @@ class Store {
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
add (name, render) {
|
|
22
|
+
const conf = this.store[name]
|
|
22
23
|
// 检测是否覆盖
|
|
23
24
|
if (process.env.VUE_APP_VXE_TABLE_ENV === 'development') {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
const confKeys = XEUtils.keys(conf)
|
|
26
|
+
XEUtils.each(render, (item, key) => {
|
|
27
|
+
if (confKeys.includes(key)) {
|
|
28
|
+
warnLog('vxe.error.coverProp', [name, key])
|
|
29
|
+
}
|
|
30
|
+
})
|
|
27
31
|
}
|
|
28
|
-
this.store[name] = render
|
|
32
|
+
this.store[name] = conf ? XEUtils.merge(conf, render) : render
|
|
29
33
|
return Store
|
|
30
34
|
}
|
|
31
35
|
|
package/styles/form.scss
CHANGED
|
@@ -12,13 +12,26 @@
|
|
|
12
12
|
&.is--visible {
|
|
13
13
|
display: block;
|
|
14
14
|
}
|
|
15
|
+
& > .vxe-loading--chunk {
|
|
16
|
+
width: 100%;
|
|
17
|
+
position: absolute;
|
|
18
|
+
top: 50%;
|
|
19
|
+
left: 0;
|
|
20
|
+
transform: translateY(-50%);
|
|
21
|
+
text-align: center;
|
|
22
|
+
color: $vxe-primary-color;
|
|
23
|
+
}
|
|
24
|
+
.vxe-loading--default-icon {
|
|
25
|
+
font-size: 1.2em;
|
|
26
|
+
}
|
|
27
|
+
.vxe-loading--text {
|
|
28
|
+
padding: 0.4em 0;
|
|
29
|
+
}
|
|
15
30
|
.vxe-loading--spinner {
|
|
31
|
+
display: inline-block;
|
|
32
|
+
position: relative;
|
|
16
33
|
width: 56px;
|
|
17
34
|
height: 56px;
|
|
18
|
-
position: absolute;
|
|
19
|
-
top: 50%;
|
|
20
|
-
left: 50%;
|
|
21
|
-
transform: translate(-50%, -50%);
|
|
22
35
|
&:before,
|
|
23
36
|
&:after {
|
|
24
37
|
content: "";
|
package/styles/modal.scss
CHANGED
package/styles/modules.scss
CHANGED
package/styles/select.scss
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
/**Variable**/
|
|
2
2
|
@import './helpers/mixin.scss';
|
|
3
|
-
@import './base/loading.scss';
|
|
4
3
|
|
|
5
4
|
.vxe-select {
|
|
6
5
|
position: relative;
|
|
@@ -34,9 +33,11 @@
|
|
|
34
33
|
}
|
|
35
34
|
}
|
|
36
35
|
&.is--active {
|
|
37
|
-
|
|
38
|
-
.vxe-input
|
|
39
|
-
|
|
36
|
+
&:not(.is--filter) {
|
|
37
|
+
& > .vxe-input {
|
|
38
|
+
.vxe-input--inner {
|
|
39
|
+
border: 1px solid $vxe-primary-color;
|
|
40
|
+
}
|
|
40
41
|
}
|
|
41
42
|
}
|
|
42
43
|
}
|
|
@@ -77,7 +78,15 @@
|
|
|
77
78
|
}
|
|
78
79
|
}
|
|
79
80
|
|
|
81
|
+
.vxe-select-filter--wrapper {
|
|
82
|
+
display: block;
|
|
83
|
+
.vxe-select-filter--input {
|
|
84
|
+
width: 100%;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
80
88
|
.vxe-select-option--wrapper {
|
|
89
|
+
position: relative;
|
|
81
90
|
overflow-x: hidden;
|
|
82
91
|
overflow-y: auto;
|
|
83
92
|
padding: 4px 0;
|
|
@@ -103,7 +112,7 @@
|
|
|
103
112
|
}
|
|
104
113
|
|
|
105
114
|
.vxe-select-option {
|
|
106
|
-
padding: 0
|
|
115
|
+
padding: 0 0.6em;
|
|
107
116
|
max-width: 600px;
|
|
108
117
|
white-space: nowrap;
|
|
109
118
|
overflow: hidden;
|
|
@@ -126,8 +135,13 @@
|
|
|
126
135
|
}
|
|
127
136
|
}
|
|
128
137
|
|
|
138
|
+
.vxe-select--search-icon {
|
|
139
|
+
margin-right: 0.5em;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
.vxe-select--search-loading,
|
|
129
143
|
.vxe-select--empty-placeholder {
|
|
130
|
-
padding: 0
|
|
144
|
+
padding: 0 0.6em;
|
|
131
145
|
text-align: center;
|
|
132
146
|
color: $vxe-select-empty-color;
|
|
133
147
|
}
|
|
@@ -153,6 +167,7 @@
|
|
|
153
167
|
}
|
|
154
168
|
.vxe-optgroup--title,
|
|
155
169
|
.vxe-select-option,
|
|
170
|
+
.vxe-select--search-loading,
|
|
156
171
|
.vxe-select--empty-placeholder {
|
|
157
172
|
line-height: $vxe-select-option-height-default;
|
|
158
173
|
}
|
|
@@ -163,6 +178,7 @@
|
|
|
163
178
|
}
|
|
164
179
|
.vxe-optgroup--title,
|
|
165
180
|
.vxe-select-option,
|
|
181
|
+
.vxe-select--search-loading,
|
|
166
182
|
.vxe-select--empty-placeholder {
|
|
167
183
|
line-height: $vxe-select-option-height-medium;
|
|
168
184
|
}
|
|
@@ -174,6 +190,7 @@
|
|
|
174
190
|
}
|
|
175
191
|
.vxe-optgroup--title,
|
|
176
192
|
.vxe-select-option,
|
|
193
|
+
.vxe-select--search-loading,
|
|
177
194
|
.vxe-select--empty-placeholder {
|
|
178
195
|
line-height: $vxe-select-option-height-small;
|
|
179
196
|
}
|
|
@@ -185,6 +202,7 @@
|
|
|
185
202
|
}
|
|
186
203
|
.vxe-optgroup--title,
|
|
187
204
|
.vxe-select-option,
|
|
205
|
+
.vxe-select--search-loading,
|
|
188
206
|
.vxe-select--empty-placeholder {
|
|
189
207
|
line-height: $vxe-select-option-height-mini;
|
|
190
208
|
}
|