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',
|
deleteOne = '/dqinspecttask/dqInspectTask/delete',
|
||||||
deleteBatch = '/dqinspecttask/dqInspectTask/deleteBatch',
|
deleteBatch = '/dqinspecttask/dqInspectTask/deleteBatch',
|
||||||
importExcel = '/dqinspecttask/dqInspectTask/importExcel',
|
importExcel = '/dqinspecttask/dqInspectTask/importExcel',
|
||||||
|
importExcelByEasyExcel = '/dqinspecttask/dqInspectTask/importExcelByEasyExcel',
|
||||||
|
checkExcelByEasyExcel = '/dqinspecttask/dqInspectTask/checkExcelByEasyExcel',
|
||||||
exportXls = '/dqinspecttask/dqInspectTask/exportXls',
|
exportXls = '/dqinspecttask/dqInspectTask/exportXls',
|
||||||
|
exportXlsHeaders = '/dqinspecttask/dqInspectTask/exportXlsHeaders',
|
||||||
queryDataById = '/dqinspecttask/dqInspectTask/queryById',
|
queryDataById = '/dqinspecttask/dqInspectTask/queryById',
|
||||||
dqInspectProgressList = '/dqinspecttask/dqInspectTask/queryDqInspectProgressByMainId',
|
dqInspectProgressList = '/dqinspecttask/dqInspectTask/queryDqInspectProgressByMainId',
|
||||||
specificProblemOptions = '/dqinspectproblem/dqInspectProblem/specificOptions',
|
specificProblemOptions = '/dqinspectproblem/dqInspectProblem/specificOptions',
|
||||||
|
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* 导出api
|
* 导出api
|
||||||
@@ -27,6 +31,12 @@ export const getExportUrl = Api.exportXls;
|
|||||||
*/
|
*/
|
||||||
export const getImportUrl = Api.importExcel;
|
export const getImportUrl = Api.importExcel;
|
||||||
|
|
||||||
|
export const getImportExcelByEasyExcelUrl = Api.importExcelByEasyExcel;
|
||||||
|
|
||||||
|
export const getCheckExcelByEasyExcelUrl = Api.checkExcelByEasyExcel;
|
||||||
|
|
||||||
|
export const getExportXlsHeadersUrl = Api.exportXlsHeaders;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询子表数据
|
* 查询子表数据
|
||||||
* @param params
|
* @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 type="primary" v-auth="'dqinspecttask:dq_inspect_task:exportXls'" preIcon="ant-design:export-outlined" @click="onExportXls">
|
||||||
导出</a-button
|
导出</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
|
>导入</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">
|
<a-dropdown v-if="selectedRowKeys.length > 0">
|
||||||
<template #overlay>
|
<template #overlay>
|
||||||
<a-menu>
|
<a-menu>
|
||||||
@@ -109,7 +135,19 @@
|
|||||||
import DqInspectTaskModal from './components/DqInspectTaskModal.vue';
|
import DqInspectTaskModal from './components/DqInspectTaskModal.vue';
|
||||||
import DqInspectProgressFeedbackViewModal from '../inspectProgress/components/DqInspectProgressFeedbackViewModal.vue';
|
import DqInspectProgressFeedbackViewModal from '../inspectProgress/components/DqInspectProgressFeedbackViewModal.vue';
|
||||||
import { ledgerColumns, superQuerySchema } from './DqInspectTask.data';
|
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 { downloadFile } from '/@/utils/common/renderUtils';
|
||||||
import { useMessage } from '/@/hooks/web/useMessage';
|
import { useMessage } from '/@/hooks/web/useMessage';
|
||||||
import Icon from '/@/components/Icon/index';
|
import Icon from '/@/components/Icon/index';
|
||||||
@@ -230,6 +268,61 @@
|
|||||||
function handleSuccess() {
|
function handleSuccess() {
|
||||||
(selectedRowKeys.value = []) && reload();
|
(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