From 2af453276b02118c73c70975bbb3583e5d7316c9 Mon Sep 17 00:00:00 2001 From: huoshicnag <2717334980@qq.com> Date: Tue, 5 Aug 2025 12:35:24 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=BC=E5=85=A5=E6=90=BA=E5=B8=A6=E5=8F=82?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/hooks/system/useListPage.ts | 10 ++- jeecgboot-vue3/src/hooks/system/useMethods.ts | 9 ++- jeecgboot-vue3/src/utils/http/axios/Axios.ts | 66 +++++++++++-------- 3 files changed, 54 insertions(+), 31 deletions(-) diff --git a/jeecgboot-vue3/src/hooks/system/useListPage.ts b/jeecgboot-vue3/src/hooks/system/useListPage.ts index b2d8036fa..387e8f67d 100644 --- a/jeecgboot-vue3/src/hooks/system/useListPage.ts +++ b/jeecgboot-vue3/src/hooks/system/useListPage.ts @@ -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 参数'); diff --git a/jeecgboot-vue3/src/hooks/system/useMethods.ts b/jeecgboot-vue3/src/hooks/system/useMethods.ts index d10879a43..46a3f957f 100644 --- a/jeecgboot-vue3/src/hooks/system/useMethods.ts +++ b/jeecgboot-vue3/src/hooks/system/useMethods.ts @@ -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), }; diff --git a/jeecgboot-vue3/src/utils/http/axios/Axios.ts b/jeecgboot-vue3/src/utils/http/axios/Axios.ts index 4d7c29612..8228790ce 100644 --- a/jeecgboot-vue3/src/utils/http/axios/Axios.ts +++ b/jeecgboot-vue3/src/utils/http/axios/Axios.ts @@ -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) => { @@ -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(config: AxiosRequestConfig, params: UploadFileParams, callback?: UploadFileCallBack) { + // update-begin--author:huoshicang---date:20250805 + uploadFile(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({ @@ -180,35 +194,35 @@ export class VAxios { return { ...config, - data: qs.stringify(config.data, { arrayFormat: 'brackets' }), + data: qs.stringify(config.data, {arrayFormat: 'brackets'}), }; } get(config: AxiosRequestConfig, options?: RequestOptions): Promise { - return this.request({ ...config, method: 'GET' }, options); + return this.request({...config, method: 'GET'}, options); } post(config: AxiosRequestConfig, options?: RequestOptions): Promise { - return this.request({ ...config, method: 'POST' }, options); + return this.request({...config, method: 'POST'}, options); } put(config: AxiosRequestConfig, options?: RequestOptions): Promise { - return this.request({ ...config, method: 'PUT' }, options); + return this.request({...config, method: 'PUT'}, options); } delete(config: AxiosRequestConfig, options?: RequestOptions): Promise { - return this.request({ ...config, method: 'DELETE' }, options); + return this.request({...config, method: 'DELETE'}, options); } request(config: AxiosRequestConfig, options?: RequestOptions): Promise { 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); }