@scenetechnology/cj_iview_table 0.0.69 → 0.0.71
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 +11 -1
- package/dist/cj_iview_table.common.js +51 -18
- package/dist/cj_iview_table.common.js.map +1 -1
- package/dist/cj_iview_table.css +1 -1
- package/dist/cj_iview_table.umd.js +51 -18
- package/dist/cj_iview_table.umd.js.map +1 -1
- package/dist/cj_iview_table.umd.min.js +1 -1
- package/dist/cj_iview_table.umd.min.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -64,6 +64,7 @@ cj_iview_table 是一个功能强大的表格组件,支持筛选、排序、
|
|
|
64
64
|
| defaultSize | Number | - | 默认分页大小 |
|
|
65
65
|
| rowKey | String/Boolean | id | 开启跨分页保留选中时使用的唯一键,支持如 `id`、`user.id` |
|
|
66
66
|
| selectedRowKeys | Array | [] | 外部传入的已选 rowKey 列表,可用于页面返回后恢复勾选 |
|
|
67
|
+
| selectedRows | Array | [] | 外部传入的已选完整行数据,用于页面返回后直接恢复完整提交数据 |
|
|
67
68
|
| reserveSelection | Boolean | false | 是否保留跨分页、跨筛选/搜索的多选结果 |
|
|
68
69
|
| filterGridSpan | Number | 6 | 筛选栏栅格跨度 |
|
|
69
70
|
| filterLabelWidth | Number | 80 | 筛选标签宽度 |
|
|
@@ -144,6 +145,8 @@ cj_iview_table 是一个功能强大的表格组件,支持筛选、排序、
|
|
|
144
145
|
row-key="id"
|
|
145
146
|
:reserveSelection="true"
|
|
146
147
|
:selectedRowKeys="savedSelectedRowKeys"
|
|
148
|
+
:selectedRows="savedSelectedRows"
|
|
149
|
+
@on-reserve-selection-change="handleReserveSelectionChange"
|
|
147
150
|
@on-reserve-selection-keys-change="handleReserveSelectionKeysChange"
|
|
148
151
|
/>
|
|
149
152
|
```
|
|
@@ -152,10 +155,15 @@ cj_iview_table 是一个功能强大的表格组件,支持筛选、排序、
|
|
|
152
155
|
export default {
|
|
153
156
|
data () {
|
|
154
157
|
return {
|
|
155
|
-
savedSelectedRowKeys: JSON.parse(sessionStorage.getItem('table-selected-row-keys') || '[]')
|
|
158
|
+
savedSelectedRowKeys: JSON.parse(sessionStorage.getItem('table-selected-row-keys') || '[]'),
|
|
159
|
+
savedSelectedRows: JSON.parse(sessionStorage.getItem('table-selected-rows') || '[]')
|
|
156
160
|
}
|
|
157
161
|
},
|
|
158
162
|
methods: {
|
|
163
|
+
handleReserveSelectionChange (selectedRows) {
|
|
164
|
+
this.savedSelectedRows = selectedRows
|
|
165
|
+
sessionStorage.setItem('table-selected-rows', JSON.stringify(selectedRows))
|
|
166
|
+
},
|
|
159
167
|
handleReserveSelectionKeysChange (selectedRowKeys) {
|
|
160
168
|
this.savedSelectedRowKeys = selectedRowKeys
|
|
161
169
|
sessionStorage.setItem('table-selected-row-keys', JSON.stringify(selectedRowKeys))
|
|
@@ -166,8 +174,10 @@ export default {
|
|
|
166
174
|
|
|
167
175
|
说明:
|
|
168
176
|
- `selectedRowKeys` 传的是 rowKey 数组,不是整行数据
|
|
177
|
+
- `selectedRows` 传的是之前保存下来的完整行数据,组件会优先用它恢复完整提交数据
|
|
169
178
|
- 组件会在数据重新加载后自动按这些 key 回显勾选
|
|
170
179
|
- 如果某些 key 在当前数据集中不存在,会被自动忽略
|
|
180
|
+
- 如果你希望“进入页面不翻页也能直接提交全部已选数据”,需要同时传 `selectedRowKeys` 和 `selectedRows`
|
|
171
181
|
|
|
172
182
|
## 使用示例
|
|
173
183
|
|
|
@@ -25799,7 +25799,7 @@ if (typeof window !== 'undefined') {
|
|
|
25799
25799
|
// Indicate to webpack that this file can be concatenated
|
|
25800
25800
|
/* harmony default export */ var setPublicPath = (null);
|
|
25801
25801
|
|
|
25802
|
-
;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/babel-loader/lib/index.js!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./packages/components/index.vue?vue&type=template&id=
|
|
25802
|
+
;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/babel-loader/lib/index.js!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./packages/components/index.vue?vue&type=template&id=cfec47d4&scoped=true
|
|
25803
25803
|
var render = function render() {
|
|
25804
25804
|
var _vm = this,
|
|
25805
25805
|
_c = _vm._self._c;
|
|
@@ -36514,6 +36514,10 @@ var vue_treeselect_cjs_default = /*#__PURE__*/__webpack_require__.n(vue_treesele
|
|
|
36514
36514
|
type: Array,
|
|
36515
36515
|
default: () => []
|
|
36516
36516
|
},
|
|
36517
|
+
selectedRows: {
|
|
36518
|
+
type: Array,
|
|
36519
|
+
default: () => []
|
|
36520
|
+
},
|
|
36517
36521
|
reserveSelection: {
|
|
36518
36522
|
type: Boolean,
|
|
36519
36523
|
default: false
|
|
@@ -36999,9 +37003,18 @@ var vue_treeselect_cjs_default = /*#__PURE__*/__webpack_require__.n(vue_treesele
|
|
|
36999
37003
|
selectedRowKeys: {
|
|
37000
37004
|
immediate: true,
|
|
37001
37005
|
deep: true,
|
|
37002
|
-
handler(
|
|
37006
|
+
handler() {
|
|
37003
37007
|
if (this.shouldReserveSelection()) {
|
|
37004
|
-
this.
|
|
37008
|
+
this.applyExternalSelection();
|
|
37009
|
+
}
|
|
37010
|
+
}
|
|
37011
|
+
},
|
|
37012
|
+
selectedRows: {
|
|
37013
|
+
immediate: true,
|
|
37014
|
+
deep: true,
|
|
37015
|
+
handler() {
|
|
37016
|
+
if (this.shouldReserveSelection()) {
|
|
37017
|
+
this.applyExternalSelection();
|
|
37005
37018
|
}
|
|
37006
37019
|
}
|
|
37007
37020
|
},
|
|
@@ -37033,6 +37046,18 @@ var vue_treeselect_cjs_default = /*#__PURE__*/__webpack_require__.n(vue_treesele
|
|
|
37033
37046
|
}
|
|
37034
37047
|
return Array.from(new Set(selectedRowKeys.map(item => this.normalizeRowKeyValue(item)).filter(Boolean)));
|
|
37035
37048
|
},
|
|
37049
|
+
createReserveSelectionMapFromRows(rows = []) {
|
|
37050
|
+
if (!Array.isArray(rows)) {
|
|
37051
|
+
return {};
|
|
37052
|
+
}
|
|
37053
|
+
return rows.reduce((result, row) => {
|
|
37054
|
+
const rowKey = this.normalizeRowKeyValue(this.getRowIdentity(row));
|
|
37055
|
+
if (rowKey) {
|
|
37056
|
+
result[rowKey] = row;
|
|
37057
|
+
}
|
|
37058
|
+
return result;
|
|
37059
|
+
}, {});
|
|
37060
|
+
},
|
|
37036
37061
|
setReserveSelectionState(nextMap = {}, nextKeys = []) {
|
|
37037
37062
|
const normalizedKeys = this.normalizeSelectedRowKeys(nextKeys);
|
|
37038
37063
|
const normalizedMap = normalizedKeys.reduce((result, key) => {
|
|
@@ -37045,18 +37070,16 @@ var vue_treeselect_cjs_default = /*#__PURE__*/__webpack_require__.n(vue_treesele
|
|
|
37045
37070
|
this.reserveSelectionKeys = normalizedKeys;
|
|
37046
37071
|
this.selectionItems = normalizedKeys.map(key => normalizedMap[key]).filter(Boolean);
|
|
37047
37072
|
},
|
|
37048
|
-
|
|
37073
|
+
applyExternalSelection() {
|
|
37049
37074
|
if (!this.shouldReserveSelection()) {
|
|
37050
37075
|
return;
|
|
37051
37076
|
}
|
|
37052
|
-
const normalizedKeys = this.normalizeSelectedRowKeys(selectedRowKeys);
|
|
37077
|
+
const normalizedKeys = this.normalizeSelectedRowKeys(this.selectedRowKeys);
|
|
37053
37078
|
const selectedKeySet = new Set(normalizedKeys);
|
|
37054
|
-
const nextMap =
|
|
37055
|
-
|
|
37056
|
-
|
|
37057
|
-
|
|
37058
|
-
return result;
|
|
37059
|
-
}, {});
|
|
37079
|
+
const nextMap = {
|
|
37080
|
+
...this.reserveSelectionMap,
|
|
37081
|
+
...this.createReserveSelectionMapFromRows(this.selectedRows)
|
|
37082
|
+
};
|
|
37060
37083
|
this.dataSource.forEach(row => {
|
|
37061
37084
|
const rowKey = this.normalizeRowKeyValue(this.getRowIdentity(row));
|
|
37062
37085
|
if (rowKey && selectedKeySet.has(rowKey)) {
|
|
@@ -37541,7 +37564,11 @@ var vue_treeselect_cjs_default = /*#__PURE__*/__webpack_require__.n(vue_treesele
|
|
|
37541
37564
|
if (!isSelection) {
|
|
37542
37565
|
return this.$emit('onToolBar', index);
|
|
37543
37566
|
}
|
|
37544
|
-
|
|
37567
|
+
if (this.shouldReserveSelection()) {
|
|
37568
|
+
this.$emit('onToolBar', index, this.selectionItems, this.getReserveSelectionKeys());
|
|
37569
|
+
} else {
|
|
37570
|
+
this.$emit('onToolBar', index, this.selectionItems);
|
|
37571
|
+
}
|
|
37545
37572
|
},
|
|
37546
37573
|
/**
|
|
37547
37574
|
* 当前表单属性值是否为空
|
|
@@ -37840,7 +37867,13 @@ var vue_treeselect_cjs_default = /*#__PURE__*/__webpack_require__.n(vue_treesele
|
|
|
37840
37867
|
} = dataValue.content;
|
|
37841
37868
|
this.columnSettingId = dataValue.id;
|
|
37842
37869
|
this.columnSettingObj = dataValue.content;
|
|
37843
|
-
let columnsList
|
|
37870
|
+
let columnsList;
|
|
37871
|
+
// 如果checkColumnData为空数组,显示所有列
|
|
37872
|
+
if (checkColumnData && checkColumnData.length > 0) {
|
|
37873
|
+
columnsList = this.sortAndFilterColumns(lodash_default().cloneDeep(this.columns), checkColumnData);
|
|
37874
|
+
} else {
|
|
37875
|
+
columnsList = lodash_default().cloneDeep(this.columns);
|
|
37876
|
+
}
|
|
37844
37877
|
let freezeNum = columnsList[0] && columnsList[0].type == 'selection' ? freeze + 1 : freeze;
|
|
37845
37878
|
columnsList.forEach((item, index) => {
|
|
37846
37879
|
if (item.title == '操作') {
|
|
@@ -38156,15 +38189,15 @@ var vue_treeselect_cjs_default = /*#__PURE__*/__webpack_require__.n(vue_treesele
|
|
|
38156
38189
|
});
|
|
38157
38190
|
;// ./packages/components/index.vue?vue&type=script&lang=js
|
|
38158
38191
|
/* harmony default export */ var packages_componentsvue_type_script_lang_js = (componentsvue_type_script_lang_js);
|
|
38159
|
-
;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-32.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-32.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-32.use[2]!./node_modules/less-loader/dist/cjs.js??clonedRuleSet-32.use[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./packages/components/index.vue?vue&type=style&index=0&id=
|
|
38192
|
+
;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-32.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-32.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-32.use[2]!./node_modules/less-loader/dist/cjs.js??clonedRuleSet-32.use[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./packages/components/index.vue?vue&type=style&index=0&id=cfec47d4&prod&scoped=true&lang=less
|
|
38160
38193
|
// extracted by mini-css-extract-plugin
|
|
38161
38194
|
|
|
38162
|
-
;// ./packages/components/index.vue?vue&type=style&index=0&id=
|
|
38195
|
+
;// ./packages/components/index.vue?vue&type=style&index=0&id=cfec47d4&prod&scoped=true&lang=less
|
|
38163
38196
|
|
|
38164
|
-
;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./packages/components/index.vue?vue&type=style&index=1&id=
|
|
38197
|
+
;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./packages/components/index.vue?vue&type=style&index=1&id=cfec47d4&prod&lang=css
|
|
38165
38198
|
// extracted by mini-css-extract-plugin
|
|
38166
38199
|
|
|
38167
|
-
;// ./packages/components/index.vue?vue&type=style&index=1&id=
|
|
38200
|
+
;// ./packages/components/index.vue?vue&type=style&index=1&id=cfec47d4&prod&lang=css
|
|
38168
38201
|
|
|
38169
38202
|
;// ./packages/components/index.vue
|
|
38170
38203
|
|
|
@@ -38182,7 +38215,7 @@ var components_component = normalizeComponent(
|
|
|
38182
38215
|
staticRenderFns,
|
|
38183
38216
|
false,
|
|
38184
38217
|
null,
|
|
38185
|
-
"
|
|
38218
|
+
"cfec47d4",
|
|
38186
38219
|
null
|
|
38187
38220
|
|
|
38188
38221
|
)
|