diff --git a/src/components/PageContent/index.vue b/src/components/PageContent/index.vue
index ab751da7..8db642bb 100644
--- a/src/components/PageContent/index.vue
+++ b/src/components/PageContent/index.vue
@@ -111,6 +111,7 @@
v-loading="loading"
v-bind="contentConfig.table"
:data="pageData"
+ :row-key="pk"
@selection-change="handleSelectionChange"
@filter-change="handleFilterChange"
>
@@ -332,6 +333,11 @@
label="当前数据 (当前页的数据)"
:value="ExportsOriginEnum.CURRENT"
/>
+
{
prop?: string;
width?: string | number;
align?: "left" | "center" | "right";
+ columnKey?: string;
+ reserveSelection?: boolean;
// 列是否显示
show?: boolean;
// 模板
@@ -537,6 +545,14 @@ const cols = ref(
) {
col.columnKey = col.prop;
}
+ if (
+ col.type === "selection" &&
+ col.reserveSelection === undefined &&
+ col["reserve-selection"] === undefined
+ ) {
+ // 配合表格row-key实现跨页多选
+ col.reserveSelection = true;
+ }
return col;
})
);
@@ -569,7 +585,9 @@ const request = props.contentConfig.request ?? {
};
// 行选中
+const selectionData = ref([]);
function handleSelectionChange(selection: any[]) {
+ selectionData.value = selection;
removeIds.value = selection.map((item) => item[pk]);
}
// 刷新
@@ -608,6 +626,7 @@ cols.value.forEach((item) => {
});
const enum ExportsOriginEnum {
CURRENT = "current",
+ SELECTED = "selected",
REMOTE = "remote",
}
const exportsModalVisible = ref(false);
@@ -669,6 +688,9 @@ function handleExports() {
} else {
ElMessage.error("未配置exportsAction");
}
+ } else if (exportsFormData.origin === ExportsOriginEnum.SELECTED) {
+ worksheet.addRows(selectionData.value);
+ downloadXlsx(workbook, filename);
} else {
worksheet.addRows(pageData.value);
downloadXlsx(workbook, filename);