feat(inspectTask): 新增下载模板/模板校验/模板导入按钮及对应后端接口
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -11,10 +11,14 @@ enum Api {
|
||||
deleteOne = '/dqinspecttask/dqInspectTask/delete',
|
||||
deleteBatch = '/dqinspecttask/dqInspectTask/deleteBatch',
|
||||
importExcel = '/dqinspecttask/dqInspectTask/importExcel',
|
||||
importExcelByEasyExcel = '/dqinspecttask/dqInspectTask/importExcelByEasyExcel',
|
||||
checkExcelByEasyExcel = '/dqinspecttask/dqInspectTask/checkExcelByEasyExcel',
|
||||
exportXls = '/dqinspecttask/dqInspectTask/exportXls',
|
||||
exportXlsHeaders = '/dqinspecttask/dqInspectTask/exportXlsHeaders',
|
||||
queryDataById = '/dqinspecttask/dqInspectTask/queryById',
|
||||
dqInspectProgressList = '/dqinspecttask/dqInspectTask/queryDqInspectProgressByMainId',
|
||||
specificProblemOptions = '/dqinspectproblem/dqInspectProblem/specificOptions',
|
||||
|
||||
}
|
||||
/**
|
||||
* 导出api
|
||||
@@ -27,6 +31,12 @@ export const getExportUrl = Api.exportXls;
|
||||
*/
|
||||
export const getImportUrl = Api.importExcel;
|
||||
|
||||
export const getImportExcelByEasyExcelUrl = Api.importExcelByEasyExcel;
|
||||
|
||||
export const getCheckExcelByEasyExcelUrl = Api.checkExcelByEasyExcel;
|
||||
|
||||
export const getExportXlsHeadersUrl = Api.exportXlsHeaders;
|
||||
|
||||
/**
|
||||
* 查询子表数据
|
||||
* @param params
|
||||
|
||||
@@ -58,9 +58,35 @@
|
||||
<a-button type="primary" v-auth="'dqinspecttask:dq_inspect_task:exportXls'" preIcon="ant-design:export-outlined" @click="onExportXls">
|
||||
导出</a-button
|
||||
>
|
||||
<j-upload-button type="primary" v-auth="'dqinspecttask:dq_inspect_task:importExcel'" preIcon="ant-design:import-outlined" @click="onImportXls"
|
||||
<j-upload-button
|
||||
type="primary"
|
||||
v-auth="'dqinspecttask:dq_inspect_task:importExcel'"
|
||||
preIcon="ant-design:import-outlined"
|
||||
@click="onImpportXls"
|
||||
>导入</j-upload-button
|
||||
>
|
||||
<a-button
|
||||
type="primary"
|
||||
v-auth="'dqinspecttask:dq_inspect_task:exportXls'"
|
||||
preIcon="ant-design:download-outlined"
|
||||
@click="handleDownloadTemplate"
|
||||
>下载模板</a-button
|
||||
>
|
||||
<j-upload-button
|
||||
type="primary"
|
||||
v-auth="'dqinspecttask:dq_inspect_task:importExcel'"
|
||||
preIcon="ant-design:check-outlined"
|
||||
@click="handleCheckExcel"
|
||||
>模板校验</j-upload-button
|
||||
>
|
||||
<j-upload-button
|
||||
type="primary"
|
||||
v-auth="'dqinspecttask:dq_inspect_task:importExcel'"
|
||||
preIcon="ant-design:import-outlined"
|
||||
@click="handleImportByTemplate"
|
||||
>模板导入</j-upload-button
|
||||
>
|
||||
|
||||
<a-dropdown v-if="selectedRowKeys.length > 0">
|
||||
<template #overlay>
|
||||
<a-menu>
|
||||
@@ -109,7 +135,19 @@
|
||||
import DqInspectTaskModal from './components/DqInspectTaskModal.vue';
|
||||
import DqInspectProgressFeedbackViewModal from '../inspectProgress/components/DqInspectProgressFeedbackViewModal.vue';
|
||||
import { ledgerColumns, superQuerySchema } from './DqInspectTask.data';
|
||||
import { ledgerList, deleteOne, batchDelete, getImportUrl, getExportUrl, saveOrUpdate } from './DqInspectTask.api';
|
||||
import {
|
||||
ledgerList,
|
||||
deleteOne,
|
||||
batchDelete,
|
||||
getImportUrl,
|
||||
getExportUrl,
|
||||
getImportExcelByEasyExcelUrl,
|
||||
getCheckExcelByEasyExcelUrl,
|
||||
getExportXlsHeadersUrl,
|
||||
saveOrUpdate,
|
||||
} from './DqInspectTask.api';
|
||||
import { defHttp } from '/@/utils/http/axios';
|
||||
import { showImportValidationErrors } from '/@/utils/helper/importError';
|
||||
import { downloadFile } from '/@/utils/common/renderUtils';
|
||||
import { useMessage } from '/@/hooks/web/useMessage';
|
||||
import Icon from '/@/components/Icon/index';
|
||||
@@ -230,6 +268,61 @@
|
||||
function handleSuccess() {
|
||||
(selectedRowKeys.value = []) && reload();
|
||||
}
|
||||
|
||||
async function handleDownloadTemplate() {
|
||||
const data = await defHttp.get({ url: getExportXlsHeadersUrl, params: {}, responseType: 'blob', timeout: 60000 }, { isTransformResponse: false });
|
||||
if (!data) {
|
||||
createMessage.warning('文件下载失败');
|
||||
return;
|
||||
}
|
||||
const blob = new Blob([data]);
|
||||
const link = document.createElement('a');
|
||||
link.href = URL.createObjectURL(blob);
|
||||
link.download = '整改任务-导入模板.xls';
|
||||
link.click();
|
||||
URL.revokeObjectURL(link.href);
|
||||
}
|
||||
|
||||
async function handleCheckExcel(data) {
|
||||
const isReturn = (fileInfo) => {
|
||||
try {
|
||||
if (fileInfo.code === 500 || fileInfo.code === 510) {
|
||||
if (fileInfo.result && Array.isArray(fileInfo.result) && fileInfo.result.length > 0) {
|
||||
showImportValidationErrors(fileInfo.message || `${data.file.name} 校验失败`, fileInfo.result);
|
||||
} else {
|
||||
createMessage.error(fileInfo.message || `${data.file.name} 校验失败`);
|
||||
}
|
||||
} else {
|
||||
createMessage.success(fileInfo.message || `${data.file.name} 校验通过`);
|
||||
}
|
||||
} catch {
|
||||
// ignore
|
||||
}
|
||||
};
|
||||
await defHttp.uploadFile({ url: getCheckExcelByEasyExcelUrl }, { file: data.file }, { success: isReturn });
|
||||
}
|
||||
|
||||
async function handleImportByTemplate(data) {
|
||||
const isReturn = (fileInfo) => {
|
||||
try {
|
||||
if (fileInfo.code === 500 || fileInfo.code === 510) {
|
||||
if (fileInfo.result && Array.isArray(fileInfo.result) && fileInfo.result.length > 0) {
|
||||
showImportValidationErrors(fileInfo.message || `${data.file.name} 导入失败`, fileInfo.result);
|
||||
} else {
|
||||
createMessage.error(fileInfo.message || `${data.file.name} 导入失败`);
|
||||
}
|
||||
} else {
|
||||
createMessage.success(fileInfo.message || `${data.file.name} 导入成功`);
|
||||
}
|
||||
} catch {
|
||||
// ignore
|
||||
} finally {
|
||||
reload();
|
||||
}
|
||||
};
|
||||
await defHttp.uploadFile({ url: getImportExcelByEasyExcelUrl }, { file: data.file }, { success: isReturn });
|
||||
}
|
||||
|
||||
/**
|
||||
* 只在当前页内计算台账合并行,避免跨页合并导致表格分页行为不可控。
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user