导入携带参数

pull/8599/head
huoshicnag 2025-08-05 12:35:24 +08:00
parent 277b5c43ac
commit 2af453276b
3 changed files with 54 additions and 31 deletions

View File

@ -34,6 +34,10 @@ interface ListPageOptions {
//update-end-author:taoyan date:20220507 for: erp
//
success?: (fileInfo?: any) => void;
// update-begin--author:huoshicang---date:20250805
parameters?: { key: String; value: String };
// update-end--author:huoshicang---date:20250805
};
}
@ -118,11 +122,13 @@ export function useListPage(options: ListPageOptions) {
// excel
function onImportXls(file) {
let { url, success } = options?.importConfig ?? {};
let { url, success, parameters = {} } = options?.importConfig ?? {};
//update-begin-author:taoyan date:20220507 for: erp
let realUrl = typeof url === 'function' ? url() : url;
if (realUrl) {
return handleImportXls(file, realUrl, success || reload);
// update-begin--author:huoshicang---date:20250805
return handleImportXls(file, realUrl, success || reload, parameters);
// update-end--author:huoshicang---date:20250805
//update-end-author:taoyan date:20220507 for: erp
} else {
$message.createMessage.warn('没有传递 importConfig.url 参数');

View File

@ -59,8 +59,9 @@ export function useMethods() {
* @param data 导入的数据
* @param url
* @param success 成功后的回调
* @param parameters 导入携带的参数
*/
async function importXls(data, url, success) {
async function importXls(data, url, success, parameters) {
const isReturn = (fileInfo) => {
try {
if (fileInfo.code === 201) {
@ -90,12 +91,14 @@ export function useMethods() {
typeof success === 'function' ? success(fileInfo) : '';
}
};
await defHttp.uploadFile({ url }, { file: data.file }, { success: isReturn });
await defHttp.uploadFile({ url }, { file: data.file }, { success: isReturn }, parameters);
}
return {
handleExportXls: (name: string, url: string, params?: object) => exportXls(name, url, params),
handleImportXls: (data, url, success) => importXls(data, url, success),
// update-begin--author:huoshicang---date:20250805
handleImportXls: (data, url, success, parameters) => importXls(data, url, success, parameters),
// update-end--author:huoshicang---date:20250805
handleExportXlsx: (name: string, url: string, params?: object) => exportXls(name, url, params, true),
};

View File

@ -1,17 +1,17 @@
import type { AxiosRequestConfig, AxiosInstance, AxiosResponse, AxiosError } from 'axios';
import type { RequestOptions, Result, UploadFileParams, UploadFileCallBack } from '/#/axios';
import type { CreateAxiosOptions } from './axiosTransform';
import type {AxiosRequestConfig, AxiosInstance, AxiosResponse, AxiosError} from 'axios';
import type {RequestOptions, Result, UploadFileParams, UploadFileCallBack} from '/#/axios';
import type {CreateAxiosOptions} from './axiosTransform';
import axios from 'axios';
import qs from 'qs';
import { AxiosCanceler } from './axiosCancel';
import { isFunction } from '/@/utils/is';
import { cloneDeep } from 'lodash-es';
import { ContentTypeEnum } from '/@/enums/httpEnum';
import { RequestEnum } from '/@/enums/httpEnum';
import { useGlobSetting } from '/@/hooks/setting';
import { useMessage } from '/@/hooks/web/useMessage';
import {AxiosCanceler} from './axiosCancel';
import {isFunction} from '/@/utils/is';
import {cloneDeep} from 'lodash-es';
import {ContentTypeEnum} from '/@/enums/httpEnum';
import {RequestEnum} from '/@/enums/httpEnum';
import {useGlobSetting} from '/@/hooks/setting';
import {useMessage} from '/@/hooks/web/useMessage';
const { createMessage } = useMessage();
const {createMessage} = useMessage();
export * from './axiosTransform';
/**
@ -35,7 +35,7 @@ export class VAxios {
}
private getTransform() {
const { transform } = this.options;
const {transform} = this.options;
return transform;
}
@ -71,7 +71,12 @@ export class VAxios {
if (!transform) {
return;
}
const { requestInterceptors, requestInterceptorsCatch, responseInterceptors, responseInterceptorsCatch } = transform;
const {
requestInterceptors,
requestInterceptorsCatch,
responseInterceptors,
responseInterceptorsCatch
} = transform;
const axiosCanceler = new AxiosCanceler();
@ -79,7 +84,7 @@ export class VAxios {
this.axiosInstance.interceptors.request.use((config: AxiosRequestConfig) => {
// If cancel repeat request is turned on, then cancel repeat request is prohibited
// @ts-ignore
const { ignoreCancelToken } = config.requestOptions;
const {ignoreCancelToken} = config.requestOptions;
const ignoreCancel = ignoreCancelToken !== undefined ? ignoreCancelToken : this.options.requestOptions?.ignoreCancelToken;
@ -92,8 +97,8 @@ export class VAxios {
//
requestInterceptorsCatch &&
isFunction(requestInterceptorsCatch) &&
this.axiosInstance.interceptors.request.use(undefined, requestInterceptorsCatch);
isFunction(requestInterceptorsCatch) &&
this.axiosInstance.interceptors.request.use(undefined, requestInterceptorsCatch);
//
this.axiosInstance.interceptors.response.use((res: AxiosResponse<any>) => {
@ -106,15 +111,19 @@ export class VAxios {
//
responseInterceptorsCatch &&
isFunction(responseInterceptorsCatch) &&
this.axiosInstance.interceptors.response.use(undefined, responseInterceptorsCatch);
isFunction(responseInterceptorsCatch) &&
this.axiosInstance.interceptors.response.use(undefined, responseInterceptorsCatch);
}
/**
* 文件上传
*/
//--@updateBy-begin----author:liusq---date:20211117------for:callback------
uploadFile<T = any>(config: AxiosRequestConfig, params: UploadFileParams, callback?: UploadFileCallBack) {
// update-begin--author:huoshicang---date:20250805
uploadFile<T = any>(config: AxiosRequestConfig, params: UploadFileParams, callback?: UploadFileCallBack, parameters?: {
key: String;
value: String
}) {
//--@updateBy-end----author:liusq---date:20211117------for:callback------
const formData = new window.FormData();
const customFilename = params.name || 'file';
@ -139,6 +148,11 @@ export class VAxios {
formData.append(key, params.data[key]);
});
}
// update-begin--author:huoshicang---date:20250805
if (Object.keys(parameters).length != 0) {
for (const key in parameters) formData.append(key, parameters[key]);
}
// update-end--author:huoshicang---date:20250805
return this.axiosInstance
.request<T>({
@ -180,35 +194,35 @@ export class VAxios {
return {
...config,
data: qs.stringify(config.data, { arrayFormat: 'brackets' }),
data: qs.stringify(config.data, {arrayFormat: 'brackets'}),
};
}
get<T = any>(config: AxiosRequestConfig, options?: RequestOptions): Promise<T> {
return this.request({ ...config, method: 'GET' }, options);
return this.request({...config, method: 'GET'}, options);
}
post<T = any>(config: AxiosRequestConfig, options?: RequestOptions): Promise<T> {
return this.request({ ...config, method: 'POST' }, options);
return this.request({...config, method: 'POST'}, options);
}
put<T = any>(config: AxiosRequestConfig, options?: RequestOptions): Promise<T> {
return this.request({ ...config, method: 'PUT' }, options);
return this.request({...config, method: 'PUT'}, options);
}
delete<T = any>(config: AxiosRequestConfig, options?: RequestOptions): Promise<T> {
return this.request({ ...config, method: 'DELETE' }, options);
return this.request({...config, method: 'DELETE'}, options);
}
request<T = any>(config: AxiosRequestConfig, options?: RequestOptions): Promise<T> {
let conf: CreateAxiosOptions = cloneDeep(config);
const transform = this.getTransform();
const { requestOptions } = this.options;
const {requestOptions} = this.options;
const opt: RequestOptions = Object.assign({}, requestOptions, options);
const { beforeRequestHook, requestCatchHook, transformRequestHook } = transform || {};
const {beforeRequestHook, requestCatchHook, transformRequestHook} = transform || {};
if (beforeRequestHook && isFunction(beforeRequestHook)) {
conf = beforeRequestHook(conf, opt);
}