nocobase/packages/plugins/@nocobase/plugin-action-import/src/client/useDownloadXlsxTemplateAction.ts
ChengLei Shao 61e7a89067
refactor: export action (#5665)
* chore: export xlsx command

* chore: container service

* chore: report export progress

* chore: export

* chore: performInsert

* chore: export command

* chore: base exporter

* chore: limit option

* chore: export

* chore: export

* chore: types

* chore: ws socket with auth

* refactor: refactor exporter, change addRows method to handleRow method to support row-by-row processing

* chore: xlsx exporter

* chore: base exporter

* chore: export limit

* chore: import action

* chore: load websocket

* chore: import action

* chore: object to cli args

* chore: import options

* chore: import action

* chore: import runner

* chore: import action

* chore: import options

* chore: import options

* chore: plugin load event

* chore: test

* chore: i18n

* chore: i18n

* chore: i18n

* fix: ws auth status

* chore: cache in data source

* chore: load datasource

* chore: import with field alias

* fix: build

* fix: test

* fix: build

* fix: import schema settings

* fix: import action

* fix: import progress

* chore: template creator

* fix: import error message

* fix: import error message

* chore: test

* chore: workflow dispatch event

* chore: export alias

* fix: typo

* chore: error render

* fix: event error

* chore: send message to tags

* fix: test

* fix: import action setting
2024-12-31 20:16:03 +08:00

47 lines
1.2 KiB
TypeScript

/**
* This file is part of the NocoBase (R) project.
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
* Authors: NocoBase Team.
*
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
* For more information, please refer to: https://www.nocobase.com/agreement.
*/
import {
useAPIClient,
useRecord,
useBlockRequestContext,
useCollection_deprecated,
useCompile,
} from '@nocobase/client';
import { saveAs } from 'file-saver';
export const useDownloadXlsxTemplateAction = () => {
const { resource } = useBlockRequestContext();
const compile = useCompile();
const record = useRecord();
const { title } = useCollection_deprecated();
return {
async run() {
const { explain, importColumns } = record;
const { data } = await resource.downloadXlsxTemplate(
{
values: {
title: compile(title),
explain,
columns: compile(importColumns),
},
},
{
method: 'post',
responseType: 'blob',
},
);
const blob = new Blob([data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
saveAs(blob, `${compile(title)}.xlsx`);
},
};
};