feat(PageContent): 支持选中数据导出

This commit is contained in:
cshaptx4869
2024-06-08 11:12:39 +08:00
parent eab91effd6
commit 51e88cdf7d

View File

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