Skip to content

Commit

Permalink
perf: 服务端导出方法支持pageQuery参数
Browse files Browse the repository at this point in the history
  • Loading branch information
greper committed Oct 23, 2023
1 parent 3297984 commit f9fbf4c
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 16 deletions.
21 changes: 20 additions & 1 deletion packages/fast-crud/src/d/expose.ts
@@ -1,4 +1,13 @@
import { CompositionColumns, CrudBinding, FormProps, PageQuery, PageRes, RemoveProps } from "./crud";
import {
CompositionColumns,
CrudBinding,
FormProps,
Page,
PageQuery,
PageRes,
RemoveProps,
UserPageQuery
} from "./crud";
import { Ref } from "vue";
import { EditableOnEnabledProps } from "../use";

Expand Down Expand Up @@ -76,6 +85,16 @@ export type CrudExpose = {
*/
doSearch: (props: DoSearchProps) => Promise<void>;

/**
* 构建page查询参数
* @param pageQuery
*/
buildPageQuery(pageQuery: PageQuery): UserPageQuery;

/**
* 获取当前分页参数
*/
getPage(): Page;
/**
* 执行搜索,返回页面数据
* @param pageQuery
Expand Down
12 changes: 5 additions & 7 deletions packages/fast-crud/src/lib/fs-export/index.ts
@@ -1,29 +1,25 @@
import _ from "lodash-es";
import { ColumnCompositionProps, ColumnProps, CrudExpose, PageQuery } from "../../d";
import { ColumnCompositionProps, ColumnProps, CrudExpose, PageQuery, UserPageQuery } from "../../d";
import { CsvParams, ExcelParams, ExportColumn, ExportUtil, ImportUtil } from "./lib/d";
import { unref } from "vue";

export async function loadFsExportUtil(): Promise<ExportUtil> {
const module = await import.meta.glob("./lib/index.ts");
console.log("module", module);
let target: any = null;
_.each(module, (item) => {
target = item;
});
const lib = await target();
console.log("lib", lib);
return lib.exportUtil;
}

export async function loadFsImportUtil(): Promise<ImportUtil> {
const module = await import.meta.glob("./lib/index.ts");
console.log("module", module);
let target: any = null;
_.each(module, (item) => {
target = item;
});
const lib = await target();
console.log("lib", lib);
return lib.importUtil;
}

Expand Down Expand Up @@ -58,7 +54,7 @@ export type ExportProps = {
/**
* 服务端导出,自己实现
*/
server?: () => Promise<void>;
server?: (pageQuery: UserPageQuery) => Promise<void>;

/**
* 仅导出显示的列
Expand Down Expand Up @@ -107,7 +103,9 @@ export type ExportProps = {
ExcelParams;
export async function exportTable(crudExpose: CrudExpose, opts: ExportProps = {}): Promise<any> {
if (opts.server) {
await opts.server();
const page = crudExpose.getPage();
const pageQuery = crudExpose.buildPageQuery({ page });
await opts.server(pageQuery);
return;
}
const crudBinding = crudExpose.crudBinding;
Expand Down
30 changes: 22 additions & 8 deletions packages/fast-crud/src/use/use-expose.ts
Expand Up @@ -17,6 +17,7 @@ import {
ColumnCompositionProps,
CrudBinding,
DoRemoveContext,
Page,
PageQuery,
PageRes,
RemoveProps,
Expand Down Expand Up @@ -301,7 +302,7 @@ export function useExpose(props: UseExposeProps): UseExposeRet {
return crudRef.value?.getSearchRef();
},

async search(pageQuery: PageQuery, options: SearchOptions = {}) {
buildPageQuery(pageQuery: PageQuery): UserPageQuery {
const page = pageQuery.page;

let searchFormData = pageQuery.form;
Expand All @@ -323,7 +324,11 @@ export function useExpose(props: UseExposeProps): UseExposeRet {
if (crudBinding.value.request.transformQuery) {
userPageQuery = crudBinding.value.request.transformQuery(query);
}
return userPageQuery;
},

async search(pageQuery: PageQuery, options: SearchOptions = {}) {
const userPageQuery = crudExpose.buildPageQuery(pageQuery);
let userPageRes: UserPageRes;
try {
if (options.silence !== true) {
Expand Down Expand Up @@ -355,24 +360,33 @@ export function useExpose(props: UseExposeProps): UseExposeRet {
}
return pageRes;
},
getPage() {
let page: Page = {
currentPage: 1,
pageSize: 10
};
if (crudBinding.value.pagination) {
page = {
currentPage: crudBinding.value.pagination[ui.pagination.currentPage],
pageSize: crudBinding.value.pagination.pageSize
};
}
return page;
},
async doRefresh(props?) {
if (crudBinding.value.request.pageRequest == null) {
return;
}
logger.debug("do refresh:", props);
let page: any;
if (crudBinding.value.pagination) {
if (props?.goFirstPage) {
crudBinding.value.pagination[ui.pagination.currentPage] = 1;
}

page = {
currentPage: crudBinding.value.pagination[ui.pagination.currentPage],
pageSize: crudBinding.value.pagination.pageSize
};
}

const page = crudExpose.getPage();
const pageRes = await crudExpose.search({ page }, { silence: props?.silence });
const { currentPage = page[ui.pagination.currentPage], pageSize = page.pageSize, total } = pageRes;
const { currentPage = page.currentPage, pageSize = page.pageSize, total } = pageRes;
const { records } = pageRes;
if (
records == null ||
Expand Down

0 comments on commit f9fbf4c

Please sign in to comment.