refactor: download.ts 使用@vben/utils替换

pull/79/MERGE
xingyu4j 2025-04-23 17:22:37 +08:00
parent 84a5002d4a
commit ecf10c0539
24 changed files with 51 additions and 49 deletions

View File

@ -1,5 +1,6 @@
// TODO @芋艿:需要优化下每个方法
// TODO @芋艿:是不是可以共用么?
// 后续使用 packages/core/base/shared/src/utils/download.ts 下的方法
import { dataURLtoBlob, urlToBase64 } from './base64Conver';
/**

View File

@ -7,6 +7,7 @@ import type { InfraApiAccessLogApi } from '#/api/infra/api-access-log';
import { Page, useVbenModal } from '@vben/common-ui';
import { Download } from '@vben/icons';
import { downloadFileFromBlobPart } from '@vben/utils';
import { Button } from 'ant-design-vue';
@ -17,7 +18,6 @@ import {
} from '#/api/infra/api-access-log';
import { DocAlert } from '#/components/doc-alert';
import { $t } from '#/locales';
import { downloadByData } from '#/utils/download';
import { useGridColumns, useGridFormSchema } from './data';
import Detail from './modules/detail.vue';
@ -35,7 +35,7 @@ function onRefresh() {
/** 导出表格 */
async function onExport() {
const data = await exportApiAccessLog(await gridApi.formApi.getValues());
downloadByData(data, 'API 访问日志.xls');
downloadFileFromBlobPart({ fileName: 'API 访问日志.xls', source: data });
}
/** 查看 API 访问日志详情 */

View File

@ -7,6 +7,7 @@ import type { InfraApiErrorLogApi } from '#/api/infra/api-error-log';
import { Page, useVbenModal } from '@vben/common-ui';
import { Download } from '@vben/icons';
import { downloadFileFromBlobPart } from '@vben/utils';
import { Button, message, Modal } from 'ant-design-vue';
@ -19,7 +20,6 @@ import {
import { DocAlert } from '#/components/doc-alert';
import { $t } from '#/locales';
import { InfraApiErrorLogProcessStatusEnum } from '#/utils/constants';
import { downloadByData } from '#/utils/download';
import { useGridColumns, useGridFormSchema } from './data';
import Detail from './modules/detail.vue';
@ -37,7 +37,7 @@ function onRefresh() {
/** 导出表格 */
async function onExport() {
const data = await exportApiErrorLog(await gridApi.formApi.getValues());
downloadByData(data, 'API 错误日志.xls');
downloadFileFromBlobPart({ fileName: 'API 错误日志.xls', source: data });
}
/** 查看 API 错误日志详情 */

View File

@ -7,13 +7,13 @@ import type { InfraConfigApi } from '#/api/infra/config';
import { Page, useVbenModal } from '@vben/common-ui';
import { Download, Plus } from '@vben/icons';
import { downloadFileFromBlobPart } from '@vben/utils';
import { Button, message } from 'ant-design-vue';
import { useVbenVxeGrid } from '#/adapter/vxe-table';
import { deleteConfig, exportConfig, getConfigPage } from '#/api/infra/config';
import { $t } from '#/locales';
import { downloadByData } from '#/utils/download';
import { useGridColumns, useGridFormSchema } from './data';
import Form from './modules/form.vue';
@ -31,7 +31,7 @@ function onRefresh() {
/** 导出表格 */
async function onExport() {
const data = await exportConfig(await gridApi.formApi.getValues());
downloadByData(data, '参数配置.xls');
downloadFileFromBlobPart({ fileName: '参数配置.xls', source: data });
}
/** 创建参数 */

View File

@ -9,6 +9,7 @@ import { h } from 'vue';
import { Page, useVbenModal } from '@vben/common-ui';
import { Download, Plus } from '@vben/icons';
import { downloadFileFromBlobPart } from '@vben/utils';
import { Button, message } from 'ant-design-vue';
@ -19,7 +20,6 @@ import {
getDemo01ContactPage,
} from '#/api/infra/demo/demo01';
import { $t } from '#/locales';
import { downloadByData } from '#/utils/download';
import { useGridColumns, useGridFormSchema } from './data';
import Form from './modules/form.vue';
@ -66,7 +66,7 @@ async function onDelete(row: Demo01ContactApi.Demo01Contact) {
/** 导出表格 */
async function onExport() {
const data = await exportDemo01Contact(await gridApi.formApi.getValues());
downloadByData(data, '示例联系人.xls');
downloadFileFromBlobPart({ fileName: '示例联系人.xls', source: data });
}
/** 表格操作按钮的回调函数 */

View File

@ -9,6 +9,7 @@ import { h, ref } from 'vue';
import { Page, useVbenModal } from '@vben/common-ui';
import { Download, Plus } from '@vben/icons';
import { downloadFileFromBlobPart } from '@vben/utils';
import { Button, message } from 'ant-design-vue';
@ -19,7 +20,6 @@ import {
getDemo02CategoryList,
} from '#/api/infra/demo/demo02';
import { $t } from '#/locales';
import { downloadByData } from '#/utils/download';
import { useGridColumns, useGridFormSchema } from './data';
import Form from './modules/form.vue';
@ -44,7 +44,7 @@ function onRefresh() {
/** 导出表格 */
async function onExport() {
const data = await exportDemo02Category(await gridApi.formApi.getValues());
downloadByData(data, '示例分类.xls');
downloadFileFromBlobPart({ fileName: '示例分类.xls', source: data });
}
/** 创建示例分类 */

View File

@ -9,6 +9,7 @@ import { h, ref } from 'vue';
import { Page, useVbenModal } from '@vben/common-ui';
import { Download, Plus } from '@vben/icons';
import { downloadFileFromBlobPart } from '@vben/utils';
import { Button, message, Tabs } from 'ant-design-vue';
@ -19,7 +20,6 @@ import {
getDemo03StudentPage,
} from '#/api/infra/demo/demo03/erp';
import { $t } from '#/locales';
import { downloadByData } from '#/utils/download';
import { useGridColumns, useGridFormSchema } from './data';
import Demo03CourseList from './modules/demo03-course-list.vue';
@ -72,7 +72,7 @@ async function onDelete(row: Demo03StudentApi.Demo03Student) {
/** 导出表格 */
async function onExport() {
const data = await exportDemo03Student(await gridApi.formApi.getValues());
downloadByData(data, '学生.xls');
downloadFileFromBlobPart({ fileName: '学生.xls', source: data });
}
/** 表格操作按钮的回调函数 */

View File

@ -9,6 +9,7 @@ import { h, ref } from 'vue';
import { Page, useVbenModal } from '@vben/common-ui';
import { Download, Plus } from '@vben/icons';
import { downloadFileFromBlobPart } from '@vben/utils';
import { Button, message, Tabs } from 'ant-design-vue';
@ -19,7 +20,6 @@ import {
getDemo03StudentPage,
} from '#/api/infra/demo/demo03/inner';
import { $t } from '#/locales';
import { downloadByData } from '#/utils/download';
import { useGridColumns, useGridFormSchema } from './data';
import Demo03CourseList from './modules/demo03-course-list.vue';
@ -71,7 +71,7 @@ async function onDelete(row: Demo03StudentApi.Demo03Student) {
/** 导出表格 */
async function onExport() {
const data = await exportDemo03Student(await gridApi.formApi.getValues());
downloadByData(data, '学生.xls');
downloadFileFromBlobPart({ fileName: '学生.xls', source: data });
}
/** 表格操作按钮的回调函数 */

View File

@ -9,6 +9,7 @@ import { h } from 'vue';
import { Page, useVbenModal } from '@vben/common-ui';
import { Download, Plus } from '@vben/icons';
import { downloadFileFromBlobPart } from '@vben/utils';
import { Button, message } from 'ant-design-vue';
@ -19,7 +20,6 @@ import {
getDemo03StudentPage,
} from '#/api/infra/demo/demo03/normal';
import { $t } from '#/locales';
import { downloadByData } from '#/utils/download';
import { useGridColumns, useGridFormSchema } from './data';
import Form from './modules/form.vue';
@ -66,7 +66,7 @@ async function onDelete(row: Demo03StudentApi.Demo03Student) {
/** 导出表格 */
async function onExport() {
const data = await exportDemo03Student(await gridApi.formApi.getValues());
downloadByData(data, '学生.xls');
downloadFileFromBlobPart({ fileName: '学生.xls', source: data });
}
/** 表格操作按钮的回调函数 */

View File

@ -9,6 +9,7 @@ import { useRouter } from 'vue-router';
import { Page, useVbenModal } from '@vben/common-ui';
import { Download, History, Plus } from '@vben/icons';
import { downloadFileFromBlobPart } from '@vben/utils';
import { Button, message, Modal } from 'ant-design-vue';
@ -23,7 +24,6 @@ import {
import { DocAlert } from '#/components/doc-alert';
import { $t } from '#/locales';
import { InfraJobStatusEnum } from '#/utils/constants';
import { downloadByData } from '#/utils/download';
import { useGridColumns, useGridFormSchema } from './data';
import Detail from './modules/detail.vue';
@ -49,7 +49,7 @@ function onRefresh() {
/** 导出表格 */
async function onExport() {
const data = await exportJob(await gridApi.formApi.getValues());
downloadByData(data, '定时任务.xls');
downloadFileFromBlobPart({ fileName: '定时任务.xls', source: data });
}
/** 创建任务 */

View File

@ -9,6 +9,7 @@ import { useRoute } from 'vue-router';
import { Page, useVbenModal } from '@vben/common-ui';
import { Download } from '@vben/icons';
import { downloadFileFromBlobPart } from '@vben/utils';
import { Button } from 'ant-design-vue';
@ -16,7 +17,6 @@ import { useVbenVxeGrid } from '#/adapter/vxe-table';
import { exportJobLog, getJobLogPage } from '#/api/infra/job-log';
import { DocAlert } from '#/components/doc-alert';
import { $t } from '#/locales';
import { downloadByData } from '#/utils/download';
import { useGridColumns, useGridFormSchema } from './data';
import Detail from './modules/detail.vue';
@ -31,7 +31,7 @@ const [DetailModal, detailModalApi] = useVbenModal({
/** 导出表格 */
async function onExport() {
const data = await exportJobLog(await gridApi.formApi.getValues());
downloadByData(data, '任务日志.xls');
downloadFileFromBlobPart({ fileName: '任务日志.xls', source: data });
}
/** 查看日志详情 */

View File

@ -9,6 +9,7 @@ import { watch } from 'vue';
import { useVbenModal } from '@vben/common-ui';
import { Download, Plus } from '@vben/icons';
import { downloadFileFromBlobPart } from '@vben/utils';
import { Button, message } from 'ant-design-vue';
@ -19,7 +20,6 @@ import {
getDictDataPage,
} from '#/api/system/dict/data';
import { $t } from '#/locales';
import { downloadByData } from '#/utils/download';
import { useDataGridColumns, useDataGridFormSchema } from '../data';
import DataForm from './data-form.vue';
@ -44,7 +44,7 @@ function onRefresh() {
/** 导出表格 */
async function onExport() {
const data = await exportDictData(await gridApi.formApi.getValues());
downloadByData(data, '字典数据.xls');
downloadFileFromBlobPart({ fileName: '字典数据.xls', source: data });
}
/** 创建字典数据 */

View File

@ -8,6 +8,7 @@ import type { SystemDictTypeApi } from '#/api/system/dict/type';
import { useVbenModal } from '@vben/common-ui';
import { Download, Plus } from '@vben/icons';
import { downloadFileFromBlobPart } from '@vben/utils';
import { Button, message } from 'ant-design-vue';
@ -18,7 +19,6 @@ import {
getDictTypePage,
} from '#/api/system/dict/type';
import { $t } from '#/locales';
import { downloadByData } from '#/utils/download';
import { useTypeGridColumns, useTypeGridFormSchema } from '../data';
import TypeForm from './type-form.vue';
@ -38,7 +38,7 @@ function onRefresh() {
/** 导出表格 */
async function onExport() {
const data = await exportDictType(await gridApi.formApi.getValues());
downloadByData(data, '字典类型.xls');
downloadFileFromBlobPart({ fileName: '字典类型.xls', source: data });
}
/** 创建字典类型 */

View File

@ -7,6 +7,7 @@ import type { SystemLoginLogApi } from '#/api/system/login-log';
import { Page, useVbenModal } from '@vben/common-ui';
import { Download } from '@vben/icons';
import { downloadFileFromBlobPart } from '@vben/utils';
import { Button } from 'ant-design-vue';
@ -14,7 +15,6 @@ import { useVbenVxeGrid } from '#/adapter/vxe-table';
import { exportLoginLog, getLoginLogPage } from '#/api/system/login-log';
import { DocAlert } from '#/components/doc-alert';
import { $t } from '#/locales';
import { downloadByData } from '#/utils/download';
import { useGridColumns, useGridFormSchema } from './data';
import Detail from './modules/detail.vue';
@ -32,7 +32,7 @@ function onRefresh() {
/** 导出表格 */
async function onExport() {
const data = await exportLoginLog(await gridApi.formApi.getValues());
downloadByData(data, '登录日志.xls');
downloadFileFromBlobPart({ fileName: '登录日志.xls', source: data });
}
/** 查看登录日志详情 */

View File

@ -5,11 +5,10 @@ import type {
} from '#/adapter/vxe-table';
import type { SystemNotifyTemplateApi } from '#/api/system/notify/template';
import { DocAlert } from '#/components/doc-alert';
import Form from './modules/form.vue';
import SendForm from './modules/send-form.vue';
import { Page, useVbenModal } from '@vben/common-ui';
import { Download, Plus } from '@vben/icons';
import { downloadFileFromBlobPart } from '@vben/utils';
import { Button, message } from 'ant-design-vue';
import { useVbenVxeGrid } from '#/adapter/vxe-table';
@ -18,10 +17,12 @@ import {
exportNotifyTemplate,
getNotifyTemplatePage,
} from '#/api/system/notify/template';
import { DocAlert } from '#/components/doc-alert';
import { $t } from '#/locales';
import { downloadByData } from '#/utils/download';
import { useGridColumns, useGridFormSchema } from './data';
import Form from './modules/form.vue';
import SendForm from './modules/send-form.vue';
const [FormModal, formModalApi] = useVbenModal({
connectedComponent: Form,
@ -41,7 +42,7 @@ function onRefresh() {
/** 导出表格 */
async function onExport() {
const data = await exportNotifyTemplate(await gridApi.formApi.getValues());
downloadByData(data, '站内信模板.xls');
downloadFileFromBlobPart({ fileName: '站内信模板.xls', source: data });
}
/** 创建站内信模板 */

View File

@ -7,6 +7,7 @@ import type { SystemOperateLogApi } from '#/api/system/operate-log';
import { Page, useVbenModal } from '@vben/common-ui';
import { Download } from '@vben/icons';
import { downloadFileFromBlobPart } from '@vben/utils';
import { Button } from 'ant-design-vue';
@ -14,7 +15,6 @@ import { useVbenVxeGrid } from '#/adapter/vxe-table';
import { exportOperateLog, getOperateLogPage } from '#/api/system/operate-log';
import { DocAlert } from '#/components/doc-alert';
import { $t } from '#/locales';
import { downloadByData } from '#/utils/download';
import { useGridColumns, useGridFormSchema } from './data';
import Detail from './modules/detail.vue';
@ -32,7 +32,7 @@ function onRefresh() {
/** 导出表格 */
async function onExport() {
const data = await exportOperateLog(await gridApi.formApi.getValues());
downloadByData(data, '操作日志.xls');
downloadFileFromBlobPart({ fileName: '操作日志.xls', source: data });
}
/** 查看操作日志详情 */

View File

@ -7,13 +7,13 @@ import type { SystemPostApi } from '#/api/system/post';
import { Page, useVbenModal } from '@vben/common-ui';
import { Download, Plus } from '@vben/icons';
import { downloadFileFromBlobPart } from '@vben/utils';
import { Button, message } from 'ant-design-vue';
import { useVbenVxeGrid } from '#/adapter/vxe-table';
import { deletePost, exportPost, getPostPage } from '#/api/system/post';
import { $t } from '#/locales';
import { downloadByData } from '#/utils/download';
import { useGridColumns, useGridFormSchema } from './data';
import Form from './modules/form.vue';
@ -31,7 +31,7 @@ function onRefresh() {
/** 导出表格 */
async function onExport() {
const data = await exportPost(await gridApi.formApi.getValues());
downloadByData(data, '岗位.xls');
downloadFileFromBlobPart({ fileName: '岗位.xls', source: data });
}
/** 创建岗位 */

View File

@ -7,6 +7,7 @@ import type { SystemRoleApi } from '#/api/system/role';
import { Page, useVbenModal } from '@vben/common-ui';
import { Download, Plus } from '@vben/icons';
import { downloadFileFromBlobPart } from '@vben/utils';
import { Button, message } from 'ant-design-vue';
@ -14,7 +15,6 @@ import { useVbenVxeGrid } from '#/adapter/vxe-table';
import { deleteRole, exportRole, getRolePage } from '#/api/system/role';
import { DocAlert } from '#/components/doc-alert';
import { $t } from '#/locales';
import { downloadByData } from '#/utils/download';
import { useGridColumns, useGridFormSchema } from './data';
import AssignDataPermissionForm from './modules/assign-data-permission-form.vue';
@ -45,7 +45,7 @@ function onRefresh() {
/** 导出表格 */
async function onExport() {
const data = await exportRole(await gridApi.formApi.getValues());
downloadByData(data, '角色.xls');
downloadFileFromBlobPart({ fileName: '角色.xls', source: data });
}
/** 编辑角色 */

View File

@ -7,6 +7,7 @@ import type { SystemSmsChannelApi } from '#/api/system/sms/channel';
import { Page, useVbenModal } from '@vben/common-ui';
import { Download, Plus } from '@vben/icons';
import { downloadFileFromBlobPart } from '@vben/utils';
import { Button, message } from 'ant-design-vue';
@ -18,7 +19,6 @@ import {
} from '#/api/system/sms/channel';
import { DocAlert } from '#/components/doc-alert';
import { $t } from '#/locales';
import { downloadByData } from '#/utils/download';
import { useGridColumns, useGridFormSchema } from './data';
import Form from './modules/form.vue';
@ -36,7 +36,7 @@ function onRefresh() {
/** 导出表格 */
async function onExport() {
const data = await exportSmsChannel(await gridApi.formApi.getValues());
downloadByData(data, '短信渠道.xls');
downloadFileFromBlobPart({ fileName: '短信渠道.xls', source: data });
}
/** 创建短信渠道 */

View File

@ -7,6 +7,7 @@ import type { SystemSmsLogApi } from '#/api/system/sms/log';
import { Page, useVbenModal } from '@vben/common-ui';
import { Download } from '@vben/icons';
import { downloadFileFromBlobPart } from '@vben/utils';
import { Button } from 'ant-design-vue';
@ -14,7 +15,6 @@ import { useVbenVxeGrid } from '#/adapter/vxe-table';
import { exportSmsLog, getSmsLogPage } from '#/api/system/sms/log';
import { DocAlert } from '#/components/doc-alert';
import { $t } from '#/locales';
import { downloadByData } from '#/utils/download';
import { useGridColumns, useGridFormSchema } from './data';
import Detail from './modules/detail.vue';
@ -32,7 +32,7 @@ function onRefresh() {
/** 导出表格 */
async function onExport() {
const data = await exportSmsLog(await gridApi.formApi.getValues());
downloadByData(data, '短信日志.xls');
downloadFileFromBlobPart({ fileName: '短信日志.xls', source: data });
}
/** 查看短信日志详情 */

View File

@ -7,6 +7,7 @@ import type { SystemSmsTemplateApi } from '#/api/system/sms/template';
import { Page, useVbenModal } from '@vben/common-ui';
import { Download, Plus } from '@vben/icons';
import { downloadFileFromBlobPart } from '@vben/utils';
import { Button, message } from 'ant-design-vue';
@ -18,7 +19,6 @@ import {
} from '#/api/system/sms/template';
import { DocAlert } from '#/components/doc-alert';
import { $t } from '#/locales';
import { downloadByData } from '#/utils/download';
import { useGridColumns, useGridFormSchema } from './data';
import Form from './modules/form.vue';
@ -42,7 +42,7 @@ function onRefresh() {
/** 导出表格 */
async function onExport() {
const data = await exportSmsTemplate(await gridApi.formApi.getValues());
downloadByData(data, '短信模板.xls');
downloadFileFromBlobPart({ fileName: '短信模板.xls', source: data });
}
/** 创建短信模板 */

View File

@ -10,6 +10,7 @@ import { onMounted, ref } from 'vue';
import { Page, useVbenModal } from '@vben/common-ui';
import { Download, Plus } from '@vben/icons';
import { downloadFileFromBlobPart } from '@vben/utils';
import { Button, message } from 'ant-design-vue';
@ -18,7 +19,6 @@ import { deleteTenant, exportTenant, getTenantPage } from '#/api/system/tenant';
import { getTenantPackageList } from '#/api/system/tenant-package';
import { DocAlert } from '#/components/doc-alert';
import { $t } from '#/locales';
import { downloadByData } from '#/utils/download';
import { useGridColumns, useGridFormSchema } from './data';
import Form from './modules/form.vue';
@ -46,7 +46,7 @@ function onRefresh() {
/** 导出表格 */
async function onExport() {
const data = await exportTenant(await gridApi.formApi.getValues());
downloadByData(data, '租户.xls');
downloadFileFromBlobPart({ fileName: '租户.xls', source: data });
}
/** 创建租户 */

View File

@ -10,6 +10,7 @@ import { ref } from 'vue';
import { Page, useVbenModal } from '@vben/common-ui';
import { Download, Plus, Upload } from '@vben/icons';
import { downloadFileFromBlobPart } from '@vben/utils';
import { Button, message, Modal } from 'ant-design-vue';
@ -23,7 +24,6 @@ import {
import { DocAlert } from '#/components/doc-alert';
import { $t } from '#/locales';
import { DICT_TYPE, getDictLabel } from '#/utils/dict';
import { downloadByData } from '#/utils/download';
import { useGridColumns, useGridFormSchema } from './data';
import AssignRoleForm from './modules/assign-role-form.vue';
@ -60,7 +60,7 @@ function onRefresh() {
/** 导出表格 */
async function onExport() {
const data = await exportUser(await gridApi.formApi.getValues());
downloadByData(data, '用户.xls');
downloadFileFromBlobPart({ fileName: '用户.xls', source: data });
}
/** 选择部门 */

View File

@ -2,13 +2,13 @@
import type { FileType } from 'ant-design-vue/es/upload/interface';
import { useVbenModal } from '@vben/common-ui';
import { downloadFileFromBlobPart } from '@vben/utils';
import { Button, message, Upload } from 'ant-design-vue';
import { useVbenForm } from '#/adapter/form';
import { importUser, importUserTemplate } from '#/api/system/user';
import { $t } from '#/locales';
import { downloadByData } from '#/utils/download';
import { useImportFormSchema } from '../data';
@ -53,7 +53,7 @@ function beforeUpload(file: FileType) {
/** 下载模版 */
async function onDownload() {
const data = await importUserTemplate();
downloadByData(data, '用户导入模板.xlsx');
downloadFileFromBlobPart({ fileName: '用户导入模板.xls', source: data });
}
</script>