iov-design 2.15.31 → 2.15.32
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/lib/calendar.js +2 -2
- package/lib/cascader-panel.js +8 -8
- package/lib/cascader.js +2 -2
- package/lib/color-picker.js +4 -4
- package/lib/date-picker.js +6 -6
- package/lib/image.js +8 -8
- package/lib/index.js +1 -1
- package/lib/iov-design.common.js +333 -12
- package/lib/loading.js +8 -8
- package/lib/message-box.js +10 -10
- package/lib/message.js +8 -8
- package/lib/notification.js +8 -8
- package/lib/pagination.js +2 -2
- package/lib/popover.js +8 -8
- package/lib/select.js +8 -8
- package/lib/table-column.js +76 -6
- package/lib/table.js +273 -22
- package/lib/theme-chalk/index.css +1 -1
- package/lib/theme-chalk/table.css +1 -1
- package/lib/time-picker.js +11 -11
- package/lib/time-select.js +8 -8
- package/lib/tooltip.js +2 -2
- package/lib/transfer.js +8 -8
- package/lib/upload.js +8 -8
- package/package.json +1 -1
- package/packages/table/src/config.js +32 -4
- package/packages/table/src/store/watcher.js +65 -5
- package/packages/table/src/table-header.js +149 -0
- package/packages/table/src/table.vue +6 -0
- package/packages/theme-chalk/src/table.scss +34 -8
- package/src/index.js +1 -1
package/lib/select.js
CHANGED
|
@@ -554,13 +554,6 @@ module.exports = require("iov-design/lib/utils/vue-popper");
|
|
|
554
554
|
|
|
555
555
|
/***/ }),
|
|
556
556
|
|
|
557
|
-
/***/ 6:
|
|
558
|
-
/***/ (function(module, exports) {
|
|
559
|
-
|
|
560
|
-
module.exports = require("iov-design/lib/mixins/locale");
|
|
561
|
-
|
|
562
|
-
/***/ }),
|
|
563
|
-
|
|
564
557
|
/***/ 64:
|
|
565
558
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
566
559
|
|
|
@@ -1071,7 +1064,7 @@ var focus_ = __webpack_require__(22);
|
|
|
1071
1064
|
var focus_default = /*#__PURE__*/__webpack_require__.n(focus_);
|
|
1072
1065
|
|
|
1073
1066
|
// EXTERNAL MODULE: external "iov-design/lib/mixins/locale"
|
|
1074
|
-
var locale_ = __webpack_require__(
|
|
1067
|
+
var locale_ = __webpack_require__(7);
|
|
1075
1068
|
var locale_default = /*#__PURE__*/__webpack_require__.n(locale_);
|
|
1076
1069
|
|
|
1077
1070
|
// EXTERNAL MODULE: external "iov-design/lib/input"
|
|
@@ -2246,6 +2239,13 @@ src_select.install = function (Vue) {
|
|
|
2246
2239
|
|
|
2247
2240
|
/* harmony default export */ var packages_select = __webpack_exports__["default"] = (src_select);
|
|
2248
2241
|
|
|
2242
|
+
/***/ }),
|
|
2243
|
+
|
|
2244
|
+
/***/ 7:
|
|
2245
|
+
/***/ (function(module, exports) {
|
|
2246
|
+
|
|
2247
|
+
module.exports = require("iov-design/lib/mixins/locale");
|
|
2248
|
+
|
|
2249
2249
|
/***/ })
|
|
2250
2250
|
|
|
2251
2251
|
/******/ });
|
package/lib/table-column.js
CHANGED
|
@@ -128,18 +128,88 @@ var cellStarts = {
|
|
|
128
128
|
var cellForced = {
|
|
129
129
|
selection: {
|
|
130
130
|
renderHeader: function renderHeader(h, _ref) {
|
|
131
|
+
var _this = this;
|
|
132
|
+
|
|
131
133
|
var store = _ref.store;
|
|
132
134
|
|
|
133
|
-
|
|
135
|
+
// console.log(store, 'store===========');
|
|
136
|
+
var _store$states = store.states,
|
|
137
|
+
isCrossPageSelection = _store$states.isCrossPageSelection,
|
|
138
|
+
selection = _store$states.selection,
|
|
139
|
+
data = _store$states.data,
|
|
140
|
+
rowKey = _store$states.rowKey;
|
|
141
|
+
|
|
142
|
+
var indeterminate = selection.length > 0 && !(selection.length === data.length);
|
|
143
|
+
if (isCrossPageSelection) {
|
|
144
|
+
// 全选: v-model - true, indeterminate - false
|
|
145
|
+
// 半选: v-model - false, indeterminate - true
|
|
146
|
+
// 不选:v-model - false, indeterminate - false
|
|
147
|
+
|
|
148
|
+
// 已选择的数据中是否包括当前页的数据项 && !当前页数据全部选中
|
|
149
|
+
indeterminate = selection.some(function (o) {
|
|
150
|
+
return data.some(function (row) {
|
|
151
|
+
return row[rowKey] === o[rowKey];
|
|
152
|
+
});
|
|
153
|
+
}) && !data.every(function (row) {
|
|
154
|
+
return selection.some(function (o) {
|
|
155
|
+
return row[rowKey] === o[rowKey];
|
|
156
|
+
});
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
// console.log(indeterminate, 'indeterminate===========');
|
|
160
|
+
return [h('el-checkbox', {
|
|
134
161
|
attrs: {
|
|
135
|
-
disabled:
|
|
136
|
-
indeterminate:
|
|
162
|
+
disabled: data && data.length === 0,
|
|
163
|
+
indeterminate: indeterminate,
|
|
137
164
|
|
|
138
165
|
value: this.isAllSelected },
|
|
139
166
|
on: {
|
|
140
167
|
'input': this.toggleAllSelection
|
|
141
168
|
}
|
|
142
|
-
})
|
|
169
|
+
}), this.table.crossPageSelection && h(
|
|
170
|
+
'el-dropdown',
|
|
171
|
+
{
|
|
172
|
+
'class': 'el-table__cross-page-selection',
|
|
173
|
+
attrs: { placement: 'bottom-start',
|
|
174
|
+
trigger: 'click'
|
|
175
|
+
},
|
|
176
|
+
on: {
|
|
177
|
+
'command': function command(_command) {
|
|
178
|
+
return _this.onCommand(_command, _this.scope);
|
|
179
|
+
},
|
|
180
|
+
'visible-change': this.onVisibleChange
|
|
181
|
+
}
|
|
182
|
+
},
|
|
183
|
+
[h('i', { 'class': ['iov-icon-arrow-down', this.store.states.showSelectionDropdown ? 'show-selection-dropdown' : ''] }), h(
|
|
184
|
+
'el-dropdown-menu',
|
|
185
|
+
{ slot: 'dropdown', 'class': 'table-selection__dropdown' },
|
|
186
|
+
[h(
|
|
187
|
+
'el-dropdown-item',
|
|
188
|
+
{
|
|
189
|
+
attrs: { command: 1 }
|
|
190
|
+
},
|
|
191
|
+
['\u5168\u9009\u5F53\u9875']
|
|
192
|
+
), h(
|
|
193
|
+
'el-dropdown-item',
|
|
194
|
+
{
|
|
195
|
+
attrs: { command: 3 }
|
|
196
|
+
},
|
|
197
|
+
['\u5168\u9009\u6240\u6709\u9875']
|
|
198
|
+
), h(
|
|
199
|
+
'el-dropdown-item',
|
|
200
|
+
{
|
|
201
|
+
attrs: { command: 2 }
|
|
202
|
+
},
|
|
203
|
+
['\u6E05\u7A7A\u5F53\u9875']
|
|
204
|
+
), h(
|
|
205
|
+
'el-dropdown-item',
|
|
206
|
+
{
|
|
207
|
+
attrs: { command: 4 }
|
|
208
|
+
},
|
|
209
|
+
['\u6E05\u7A7A\u6240\u6709\u9875']
|
|
210
|
+
)]
|
|
211
|
+
)]
|
|
212
|
+
)];
|
|
143
213
|
},
|
|
144
214
|
renderCell: function renderCell(h, _ref2) {
|
|
145
215
|
var row = _ref2.row,
|
|
@@ -274,7 +344,7 @@ function treeCellPrefix(h, _ref8) {
|
|
|
274
344
|
return ele;
|
|
275
345
|
}
|
|
276
346
|
// EXTERNAL MODULE: ./packages/table/src/util.js
|
|
277
|
-
var util = __webpack_require__(
|
|
347
|
+
var util = __webpack_require__(6);
|
|
278
348
|
|
|
279
349
|
// EXTERNAL MODULE: external "iov-design/lib/checkbox"
|
|
280
350
|
var checkbox_ = __webpack_require__(18);
|
|
@@ -632,7 +702,7 @@ module.exports = require("iov-design/lib/utils/util");
|
|
|
632
702
|
|
|
633
703
|
/***/ }),
|
|
634
704
|
|
|
635
|
-
/***/
|
|
705
|
+
/***/ 6:
|
|
636
706
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
637
707
|
|
|
638
708
|
"use strict";
|
package/lib/table.js
CHANGED
|
@@ -208,18 +208,6 @@ module.exports = require("iov-design/lib/utils/vue-popper");
|
|
|
208
208
|
|
|
209
209
|
/***/ }),
|
|
210
210
|
/* 6 */
|
|
211
|
-
/***/ (function(module, exports) {
|
|
212
|
-
|
|
213
|
-
module.exports = require("iov-design/lib/mixins/locale");
|
|
214
|
-
|
|
215
|
-
/***/ }),
|
|
216
|
-
/* 7 */
|
|
217
|
-
/***/ (function(module, exports) {
|
|
218
|
-
|
|
219
|
-
module.exports = require("vue");
|
|
220
|
-
|
|
221
|
-
/***/ }),
|
|
222
|
-
/* 8 */
|
|
223
211
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
224
212
|
|
|
225
213
|
"use strict";
|
|
@@ -533,6 +521,18 @@ var objectEquals = function objectEquals(objectA, objectB) {
|
|
|
533
521
|
return true;
|
|
534
522
|
};
|
|
535
523
|
|
|
524
|
+
/***/ }),
|
|
525
|
+
/* 7 */
|
|
526
|
+
/***/ (function(module, exports) {
|
|
527
|
+
|
|
528
|
+
module.exports = require("iov-design/lib/mixins/locale");
|
|
529
|
+
|
|
530
|
+
/***/ }),
|
|
531
|
+
/* 8 */
|
|
532
|
+
/***/ (function(module, exports) {
|
|
533
|
+
|
|
534
|
+
module.exports = require("vue");
|
|
535
|
+
|
|
536
536
|
/***/ }),
|
|
537
537
|
/* 9 */
|
|
538
538
|
/***/ (function(module, exports) {
|
|
@@ -1151,7 +1151,7 @@ var mousewheel_mousewheel = function mousewheel(element, callback) {
|
|
|
1151
1151
|
}
|
|
1152
1152
|
});
|
|
1153
1153
|
// EXTERNAL MODULE: external "iov-design/lib/mixins/locale"
|
|
1154
|
-
var locale_ = __webpack_require__(
|
|
1154
|
+
var locale_ = __webpack_require__(7);
|
|
1155
1155
|
var locale_default = /*#__PURE__*/__webpack_require__.n(locale_);
|
|
1156
1156
|
|
|
1157
1157
|
// EXTERNAL MODULE: external "iov-design/lib/mixins/migrating"
|
|
@@ -1159,7 +1159,7 @@ var migrating_ = __webpack_require__(11);
|
|
|
1159
1159
|
var migrating_default = /*#__PURE__*/__webpack_require__.n(migrating_);
|
|
1160
1160
|
|
|
1161
1161
|
// EXTERNAL MODULE: external "vue"
|
|
1162
|
-
var external_vue_ = __webpack_require__(
|
|
1162
|
+
var external_vue_ = __webpack_require__(8);
|
|
1163
1163
|
var external_vue_default = /*#__PURE__*/__webpack_require__.n(external_vue_);
|
|
1164
1164
|
|
|
1165
1165
|
// EXTERNAL MODULE: external "iov-design/lib/utils/merge"
|
|
@@ -1167,7 +1167,7 @@ var merge_ = __webpack_require__(9);
|
|
|
1167
1167
|
var merge_default = /*#__PURE__*/__webpack_require__.n(merge_);
|
|
1168
1168
|
|
|
1169
1169
|
// EXTERNAL MODULE: ./packages/table/src/util.js
|
|
1170
|
-
var util = __webpack_require__(
|
|
1170
|
+
var util = __webpack_require__(6);
|
|
1171
1171
|
|
|
1172
1172
|
// CONCATENATED MODULE: ./packages/table/src/store/expand.js
|
|
1173
1173
|
|
|
@@ -1625,6 +1625,15 @@ var doFlattenColumns = function doFlattenColumns(columns) {
|
|
|
1625
1625
|
selectOnIndeterminate: false,
|
|
1626
1626
|
selectable: null,
|
|
1627
1627
|
|
|
1628
|
+
// 跨页全选标记
|
|
1629
|
+
isCrossPageSelection: false,
|
|
1630
|
+
// 全选下拉出现/隐藏事件
|
|
1631
|
+
showSelectionDropdown: false,
|
|
1632
|
+
// 1-全选当前页 2-取消全选当前页 3-全选所有页 4-取消全选所有页
|
|
1633
|
+
selectionType: 0,
|
|
1634
|
+
// 已取消勾选的数据
|
|
1635
|
+
unSelectedRow: [],
|
|
1636
|
+
|
|
1628
1637
|
// 过滤
|
|
1629
1638
|
filters: {}, // 不可响应的
|
|
1630
1639
|
filteredData: null,
|
|
@@ -1704,9 +1713,19 @@ var doFlattenColumns = function doFlattenColumns(columns) {
|
|
|
1704
1713
|
var states = this.states;
|
|
1705
1714
|
states.isAllSelected = false;
|
|
1706
1715
|
var oldSelection = states.selection;
|
|
1716
|
+
|
|
1717
|
+
// 表格中有选中的数据项是disabled状态时,清空时保留该数据
|
|
1718
|
+
var isDisabledSelection = states.data.filter(function (row, index) {
|
|
1719
|
+
// 判断selectable是不可选中状态, 且当前数据项已被选中
|
|
1720
|
+
if (states.selectable && !states.selectable.call(null, row, index) && oldSelection.some(function (item) {
|
|
1721
|
+
return item[states.rowKey] === row[states.rowKey];
|
|
1722
|
+
})) {
|
|
1723
|
+
return row;
|
|
1724
|
+
}
|
|
1725
|
+
});
|
|
1707
1726
|
if (oldSelection.length) {
|
|
1708
|
-
states.selection =
|
|
1709
|
-
this.table.$emit('selection-change',
|
|
1727
|
+
states.selection = isDisabledSelection;
|
|
1728
|
+
this.table.$emit('selection-change', states.selection, false);
|
|
1710
1729
|
}
|
|
1711
1730
|
},
|
|
1712
1731
|
cleanSelection: function cleanSelection() {
|
|
@@ -1735,7 +1754,7 @@ var doFlattenColumns = function doFlattenColumns(columns) {
|
|
|
1735
1754
|
return deleted.indexOf(item) === -1;
|
|
1736
1755
|
});
|
|
1737
1756
|
states.selection = newSelection;
|
|
1738
|
-
this.table.$emit('selection-change', newSelection.slice());
|
|
1757
|
+
this.table.$emit('selection-change', newSelection.slice(), false);
|
|
1739
1758
|
}
|
|
1740
1759
|
},
|
|
1741
1760
|
toggleRowSelection: function toggleRowSelection(row, selected) {
|
|
@@ -1746,11 +1765,65 @@ var doFlattenColumns = function doFlattenColumns(columns) {
|
|
|
1746
1765
|
var newSelection = (this.states.selection || []).slice();
|
|
1747
1766
|
// 调用 API 修改选中值,不触发 select 事件
|
|
1748
1767
|
if (emitChange) {
|
|
1768
|
+
this.getUnSelectedRow(newSelection);
|
|
1749
1769
|
this.table.$emit('select', newSelection, row);
|
|
1750
1770
|
}
|
|
1751
|
-
this.
|
|
1771
|
+
if (this.states.isCrossPageSelection) {
|
|
1772
|
+
this.table.$emit('selection-change', this.states.unSelectedRow, true);
|
|
1773
|
+
} else {
|
|
1774
|
+
this.table.$emit('selection-change', newSelection, false);
|
|
1775
|
+
}
|
|
1752
1776
|
}
|
|
1753
1777
|
},
|
|
1778
|
+
|
|
1779
|
+
|
|
1780
|
+
/**
|
|
1781
|
+
* 获取取消勾选数据项
|
|
1782
|
+
* @param {arr} selection 当前已选择所有数据项
|
|
1783
|
+
*/
|
|
1784
|
+
getUnSelectedRow: function getUnSelectedRow(selection) {
|
|
1785
|
+
var _this = this;
|
|
1786
|
+
|
|
1787
|
+
if (!this.states.isCrossPageSelection) return;
|
|
1788
|
+
|
|
1789
|
+
var rowKey = this.table.rowKey;
|
|
1790
|
+
|
|
1791
|
+
// 从全部勾选数据中过滤出当前页勾选的数据
|
|
1792
|
+
|
|
1793
|
+
var selected = this.table.data.filter(function (item) {
|
|
1794
|
+
return selection.some(function (row) {
|
|
1795
|
+
return row[rowKey] === item[rowKey];
|
|
1796
|
+
});
|
|
1797
|
+
});
|
|
1798
|
+
// 通过当前页数据与当前页已勾选的数据, 过滤出当前页未勾选的数据
|
|
1799
|
+
var unselected = this.table.data.filter(function (item) {
|
|
1800
|
+
return !selected.some(function (row) {
|
|
1801
|
+
return row[rowKey] === item[rowKey];
|
|
1802
|
+
});
|
|
1803
|
+
});
|
|
1804
|
+
|
|
1805
|
+
// 取消勾选数据中是否存在当页面已勾选的数据项, 如有则删除
|
|
1806
|
+
var index = [];
|
|
1807
|
+
this.states.unSelectedRow.forEach(function (item, i) {
|
|
1808
|
+
if (selected.some(function (s) {
|
|
1809
|
+
return s[rowKey] === item[rowKey];
|
|
1810
|
+
})) {
|
|
1811
|
+
index.push(i);
|
|
1812
|
+
}
|
|
1813
|
+
});
|
|
1814
|
+
this.states.unSelectedRow = this.states.unSelectedRow.filter(function (item, i) {
|
|
1815
|
+
return !index.includes(i);
|
|
1816
|
+
});
|
|
1817
|
+
|
|
1818
|
+
// 取消勾选数据中如果不存在当前页未勾选的数据, 则将当前未勾选的数据添push到取消勾选数据中
|
|
1819
|
+
unselected.forEach(function (item) {
|
|
1820
|
+
if (!_this.states.unSelectedRow.some(function (s) {
|
|
1821
|
+
return s[rowKey] === item[rowKey];
|
|
1822
|
+
})) {
|
|
1823
|
+
_this.states.unSelectedRow.push(item);
|
|
1824
|
+
}
|
|
1825
|
+
});
|
|
1826
|
+
},
|
|
1754
1827
|
_toggleAllSelection: function _toggleAllSelection() {
|
|
1755
1828
|
var states = this.states;
|
|
1756
1829
|
var _states$data = states.data,
|
|
@@ -1775,8 +1848,15 @@ var doFlattenColumns = function doFlattenColumns(columns) {
|
|
|
1775
1848
|
}
|
|
1776
1849
|
});
|
|
1777
1850
|
|
|
1851
|
+
var newSelection = (this.states.selection || []).slice();
|
|
1852
|
+
|
|
1778
1853
|
if (selectionChanged) {
|
|
1779
|
-
|
|
1854
|
+
if (states.isCrossPageSelection) {
|
|
1855
|
+
this.getUnSelectedRow(newSelection);
|
|
1856
|
+
this.table.$emit('selection-change', states.unSelectedRow || [], true);
|
|
1857
|
+
} else {
|
|
1858
|
+
this.table.$emit('selection-change', selection ? selection.slice() : [], false);
|
|
1859
|
+
}
|
|
1780
1860
|
}
|
|
1781
1861
|
this.table.$emit('select-all', selection);
|
|
1782
1862
|
},
|
|
@@ -1862,7 +1942,7 @@ var doFlattenColumns = function doFlattenColumns(columns) {
|
|
|
1862
1942
|
this.states.sortOrder = order;
|
|
1863
1943
|
},
|
|
1864
1944
|
execFilter: function execFilter() {
|
|
1865
|
-
var
|
|
1945
|
+
var _this2 = this;
|
|
1866
1946
|
|
|
1867
1947
|
var states = this.states;
|
|
1868
1948
|
var _data = states._data,
|
|
@@ -1873,7 +1953,7 @@ var doFlattenColumns = function doFlattenColumns(columns) {
|
|
|
1873
1953
|
Object.keys(filters).forEach(function (columnId) {
|
|
1874
1954
|
var values = states.filters[columnId];
|
|
1875
1955
|
if (!values || values.length === 0) return;
|
|
1876
|
-
var column = Object(util["d" /* getColumnById */])(
|
|
1956
|
+
var column = Object(util["d" /* getColumnById */])(_this2.states, columnId);
|
|
1877
1957
|
if (column && column.filterMethod) {
|
|
1878
1958
|
data = data.filter(function (row) {
|
|
1879
1959
|
return values.some(function (value) {
|
|
@@ -3574,6 +3654,7 @@ var table_header_extends = Object.assign || function (target) { for (var i = 1;
|
|
|
3574
3654
|
|
|
3575
3655
|
|
|
3576
3656
|
|
|
3657
|
+
|
|
3577
3658
|
var getAllColumns = function getAllColumns(columns) {
|
|
3578
3659
|
var result = [];
|
|
3579
3660
|
columns.forEach(function (column) {
|
|
@@ -3788,6 +3869,64 @@ var convertToRows = function convertToRows(originColumns) {
|
|
|
3788
3869
|
}
|
|
3789
3870
|
})),
|
|
3790
3871
|
|
|
3872
|
+
watch: {
|
|
3873
|
+
'store.states.data': {
|
|
3874
|
+
handler: function handler() {
|
|
3875
|
+
var states = this.store.states;
|
|
3876
|
+
var _states$data = states.data,
|
|
3877
|
+
data = _states$data === undefined ? [] : _states$data,
|
|
3878
|
+
selection = states.selection;
|
|
3879
|
+
var rowKey = this.table.rowKey;
|
|
3880
|
+
// 全选所有页
|
|
3881
|
+
|
|
3882
|
+
if (this.store.states.isCrossPageSelection) {
|
|
3883
|
+
|
|
3884
|
+
states.isAllSelected = true;
|
|
3885
|
+
|
|
3886
|
+
data.forEach(function (row, index) {
|
|
3887
|
+
if (states.selectable) {
|
|
3888
|
+
if (states.selectable.call(null, row, index)) {
|
|
3889
|
+
// 如果已勾选数据中不包含当前页数据(如跳转至新的一页), 则勾选
|
|
3890
|
+
if (!selection.some(function (o) {
|
|
3891
|
+
return o[rowKey] === row[rowKey];
|
|
3892
|
+
})) {
|
|
3893
|
+
Object(util["n" /* toggleRowStatus */])(selection, row, true);
|
|
3894
|
+
}
|
|
3895
|
+
if (states.unSelectedRow.some(function (o) {
|
|
3896
|
+
return o[rowKey] === row[rowKey];
|
|
3897
|
+
})) {
|
|
3898
|
+
// 如果取消勾选数据中包含当前页数据项, 则取消勾选
|
|
3899
|
+
Object(util["n" /* toggleRowStatus */])(selection, row, false);
|
|
3900
|
+
states.isAllSelected = false;
|
|
3901
|
+
}
|
|
3902
|
+
}
|
|
3903
|
+
} else {
|
|
3904
|
+
// 如果已勾选数据中不包含当前页数据(如跳转至新的一页), 则勾选
|
|
3905
|
+
if (!selection.some(function (o) {
|
|
3906
|
+
return o[rowKey] === row[rowKey];
|
|
3907
|
+
})) {
|
|
3908
|
+
Object(util["n" /* toggleRowStatus */])(selection, row, true);
|
|
3909
|
+
}
|
|
3910
|
+
// 如果取消勾选数据中包含当前页数据项, 则取消勾选
|
|
3911
|
+
if (states.unSelectedRow.some(function (o) {
|
|
3912
|
+
return o[rowKey] === row[rowKey];
|
|
3913
|
+
})) {
|
|
3914
|
+
Object(util["n" /* toggleRowStatus */])(selection, row, false);
|
|
3915
|
+
states.isAllSelected = false;
|
|
3916
|
+
}
|
|
3917
|
+
}
|
|
3918
|
+
});
|
|
3919
|
+
// console.log(states, 'states===========================');
|
|
3920
|
+
} else {
|
|
3921
|
+
// states.isAllSelected = false;
|
|
3922
|
+
states.selection = [];
|
|
3923
|
+
}
|
|
3924
|
+
},
|
|
3925
|
+
|
|
3926
|
+
deep: true
|
|
3927
|
+
}
|
|
3928
|
+
},
|
|
3929
|
+
|
|
3791
3930
|
created: function created() {
|
|
3792
3931
|
this.filterPanels = {};
|
|
3793
3932
|
},
|
|
@@ -3894,6 +4033,113 @@ var convertToRows = function convertToRows(originColumns) {
|
|
|
3894
4033
|
toggleAllSelection: function toggleAllSelection() {
|
|
3895
4034
|
this.store.commit('toggleAllSelection');
|
|
3896
4035
|
},
|
|
4036
|
+
|
|
4037
|
+
|
|
4038
|
+
/**
|
|
4039
|
+
* 下拉框出现/隐藏事件
|
|
4040
|
+
* @param {bol} visible 出现/隐藏
|
|
4041
|
+
*/
|
|
4042
|
+
onVisibleChange: function onVisibleChange(v) {
|
|
4043
|
+
this.store.states.showSelectionDropdown = v;
|
|
4044
|
+
},
|
|
4045
|
+
|
|
4046
|
+
|
|
4047
|
+
/**
|
|
4048
|
+
* 选择数据事件
|
|
4049
|
+
* @param {num} command 选择事件类型 1-全选当前页 2-清空当前页 3-全选所有页 4-清空所有页
|
|
4050
|
+
*/
|
|
4051
|
+
onCommand: function onCommand(command) {
|
|
4052
|
+
this.store.states.selectionType = command;
|
|
4053
|
+
var states = this.store.states;
|
|
4054
|
+
var _states$data2 = states.data,
|
|
4055
|
+
data = _states$data2 === undefined ? [] : _states$data2,
|
|
4056
|
+
selection = states.selection;
|
|
4057
|
+
// console.log(this, 'this===========================');
|
|
4058
|
+
|
|
4059
|
+
switch (command) {
|
|
4060
|
+
// 全选当前页
|
|
4061
|
+
case 1:
|
|
4062
|
+
states.isAllSelected = true;
|
|
4063
|
+
data.forEach(function (row, index) {
|
|
4064
|
+
if (states.selectable) {
|
|
4065
|
+
if (states.selectable.call(null, row, index)) {
|
|
4066
|
+
Object(util["n" /* toggleRowStatus */])(selection, row, true);
|
|
4067
|
+
}
|
|
4068
|
+
} else {
|
|
4069
|
+
Object(util["n" /* toggleRowStatus */])(selection, row, true);
|
|
4070
|
+
}
|
|
4071
|
+
});
|
|
4072
|
+
// console.log(states, 'states1===========================');
|
|
4073
|
+
// 先点击跨页全选,再点击清空当前页/取消几条勾选数据, 最后点击全选当前页
|
|
4074
|
+
if (states.isCrossPageSelection) {
|
|
4075
|
+
// 重新计算未选中数据
|
|
4076
|
+
this.store.getUnSelectedRow(states.selection);
|
|
4077
|
+
// 触发el-table的'selection-change'事件
|
|
4078
|
+
this.table.$listeners['selection-change'](states.unSelectedRow, true);
|
|
4079
|
+
} else {
|
|
4080
|
+
this.table.$listeners['selection-change'](this.table.selection, false);
|
|
4081
|
+
}
|
|
4082
|
+
break;
|
|
4083
|
+
// 清空当前页
|
|
4084
|
+
case 2:
|
|
4085
|
+
// 先点击跨页选择,再点击清空当前页
|
|
4086
|
+
if (states.isCrossPageSelection) {
|
|
4087
|
+
// 标记当前页未选中, 如果有选中的数据,清空选中数据
|
|
4088
|
+
states.isAllSelected = false;
|
|
4089
|
+
var oldSelection = states.selection;
|
|
4090
|
+
// 表格中有选中的数据项是disabled状态时,清空时保留该数据
|
|
4091
|
+
var isDisabledSelection = states.data.filter(function (row, index) {
|
|
4092
|
+
// 判断selectable是不可选中状态, 且当前数据项已被选中
|
|
4093
|
+
if (states.selectable && !states.selectable.call(null, row, index) && oldSelection.some(function (item) {
|
|
4094
|
+
return item[states.rowKey] === row[states.rowKey];
|
|
4095
|
+
})) {
|
|
4096
|
+
return row;
|
|
4097
|
+
}
|
|
4098
|
+
});
|
|
4099
|
+
if (oldSelection.length) {
|
|
4100
|
+
states.selection = isDisabledSelection;
|
|
4101
|
+
}
|
|
4102
|
+
// 重新计算未选中数据
|
|
4103
|
+
this.store.getUnSelectedRow(states.selection);
|
|
4104
|
+
// 触发el-table的'selection-change'事件
|
|
4105
|
+
this.table.$listeners['selection-change'](states.unSelectedRow, true);
|
|
4106
|
+
} else {
|
|
4107
|
+
states.unSelectedRow = [];
|
|
4108
|
+
this.table.clearSelection();
|
|
4109
|
+
}
|
|
4110
|
+
// console.log(states, 'states2===========================');
|
|
4111
|
+
break;
|
|
4112
|
+
// 全选所有页
|
|
4113
|
+
case 3:
|
|
4114
|
+
states.isCrossPageSelection = true;
|
|
4115
|
+
states.unSelectedRow = [];
|
|
4116
|
+
states.isAllSelected = true;
|
|
4117
|
+
data.forEach(function (row, index) {
|
|
4118
|
+
if (states.selectable) {
|
|
4119
|
+
if (states.selectable.call(null, row, index)) {
|
|
4120
|
+
Object(util["n" /* toggleRowStatus */])(selection, row, true);
|
|
4121
|
+
}
|
|
4122
|
+
} else {
|
|
4123
|
+
Object(util["n" /* toggleRowStatus */])(selection, row, true);
|
|
4124
|
+
}
|
|
4125
|
+
});
|
|
4126
|
+
// console.log(states, 'states3===========================');
|
|
4127
|
+
// 重新计算未选中数据
|
|
4128
|
+
this.store.getUnSelectedRow(states.selection);
|
|
4129
|
+
// 触发el-table的'selection-change'事件
|
|
4130
|
+
this.table.$listeners['selection-change'](states.unSelectedRow, true);
|
|
4131
|
+
break;
|
|
4132
|
+
// 清空所有页
|
|
4133
|
+
case 4:
|
|
4134
|
+
states.isCrossPageSelection = false;
|
|
4135
|
+
states.unSelectedRow = [];
|
|
4136
|
+
// console.log(states, 'states4===========================');
|
|
4137
|
+
this.table.clearSelection();
|
|
4138
|
+
break;
|
|
4139
|
+
default:
|
|
4140
|
+
break;
|
|
4141
|
+
}
|
|
4142
|
+
},
|
|
3897
4143
|
handleFilterClick: function handleFilterClick(event, column) {
|
|
3898
4144
|
event.stopPropagation();
|
|
3899
4145
|
var target = event.target;
|
|
@@ -4601,6 +4847,11 @@ var tableIdSeed = 1;
|
|
|
4601
4847
|
default: true
|
|
4602
4848
|
},
|
|
4603
4849
|
|
|
4850
|
+
crossPageSelection: {
|
|
4851
|
+
type: Boolean,
|
|
4852
|
+
default: false
|
|
4853
|
+
},
|
|
4854
|
+
|
|
4604
4855
|
indent: {
|
|
4605
4856
|
type: Number,
|
|
4606
4857
|
default: 16
|