From 1a0740e49a9b9052a8223368f63fa1a60ae88744 Mon Sep 17 00:00:00 2001 From: yzp Date: Mon, 7 Apr 2025 16:16:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=93=E5=8D=B0=E6=A8=A1=E6=9D=BF=E5=8A=A0?= =?UTF-8?q?=E5=85=A5=E5=A4=8D=E5=88=B6=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/Print/SysPrintService.cs | 19 ++++- Web/src/api-services/apis/sys-print-api.ts | 83 +++++++++++++++++++ Web/src/views/system/print/index.vue | 11 +++ 3 files changed, 112 insertions(+), 1 deletion(-) diff --git a/Admin.NET/Admin.NET.Core/Service/Print/SysPrintService.cs b/Admin.NET/Admin.NET.Core/Service/Print/SysPrintService.cs index 3382d431..5d409f8f 100644 --- a/Admin.NET/Admin.NET.Core/Service/Print/SysPrintService.cs +++ b/Admin.NET/Admin.NET.Core/Service/Print/SysPrintService.cs @@ -29,7 +29,7 @@ public class SysPrintService : IDynamicApiController, ITransient { return await _sysPrintRep.AsQueryable() .WhereIF(!string.IsNullOrWhiteSpace(input.Name), u => u.Name.Contains(input.Name)) - .OrderBy(u => new { u.OrderNo, u.Id }) + .OrderBy(u => new { u.OrderNo, u.Name }) .ToPagedListAsync(input.Page, input.PageSize); } @@ -73,6 +73,23 @@ public class SysPrintService : IDynamicApiController, ITransient await _sysPrintRep.AsUpdateable(input.Adapt()).IgnoreColumns(true).ExecuteCommandAsync(); } + + /// + /// 复制打印模板 + /// + /// + /// + [ApiDescriptionSettings(Name = "Copy"), HttpPost] + [DisplayName("复制打印模板")] + public async Task CopyPrint(DeletePrintInput input) + { + var print = await _sysPrintRep.AsQueryable().Where(u => u.Id == input.Id).FirstAsync(); + if (print == null) + throw Oops.Bah("模板不存在"); + print.Name = print.Name + "_Copy_" + DateTime.Now.ToString("ddHHmmss"); + print.Id = 0; + await AddPrint(print.Adapt()); + } /// /// 删除打印模板 🖨️ diff --git a/Web/src/api-services/apis/sys-print-api.ts b/Web/src/api-services/apis/sys-print-api.ts index bc65658e..58b782c4 100644 --- a/Web/src/api-services/apis/sys-print-api.ts +++ b/Web/src/api-services/apis/sys-print-api.ts @@ -77,6 +77,54 @@ export const SysPrintApiAxiosParamCreator = function (configuration?: Configurat options: localVarRequestOptions, }; }, + /** + * + * @summary 复制打印模板 + * @param {DeletePrintInput} [body] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + apiSysPrintCopyPost: async (body?: DeletePrintInput, options: AxiosRequestConfig = {}): Promise => { + const localVarPath = `/api/sysPrint/copy`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, 'https://example.com'); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication Bearer required + // http bearer authentication required + if (configuration && configuration.accessToken) { + const accessToken = typeof configuration.accessToken === 'function' + ? await configuration.accessToken() + : await configuration.accessToken; + localVarHeaderParameter["Authorization"] = "Bearer " + accessToken; + } + + localVarHeaderParameter['Content-Type'] = 'application/json-patch+json'; + + const query = new URLSearchParams(localVarUrlObj.search); + for (const key in localVarQueryParameter) { + query.set(key, localVarQueryParameter[key]); + } + for (const key in options.params) { + query.set(key, options.params[key]); + } + localVarUrlObj.search = (new URLSearchParams(query)).toString(); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json'; + localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || ""); + + return { + url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash, + options: localVarRequestOptions, + }; + }, /** * * @summary 删除打印模板 🖨️ @@ -293,6 +341,20 @@ export const SysPrintApiFp = function(configuration?: Configuration) { return axios.request(axiosRequestArgs); }; }, + /** + * + * @summary 复制打印模板 + * @param {DeletePrintInput} [body] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async apiSysPrintCopyPost(body?: DeletePrintInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise>> { + const localVarAxiosArgs = await SysPrintApiAxiosParamCreator(configuration).apiSysPrintCopyPost(body, options); + return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => { + const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url}; + return axios.request(axiosRequestArgs); + }; + }, /** * * @summary 删除打印模板 🖨️ @@ -368,6 +430,16 @@ export const SysPrintApiFactory = function (configuration?: Configuration, baseP async apiSysPrintAddPost(body?: AddPrintInput, options?: AxiosRequestConfig): Promise> { return SysPrintApiFp(configuration).apiSysPrintAddPost(body, options).then((request) => request(axios, basePath)); }, + /** + * + * @summary 复制打印模板 + * @param {DeletePrintInput} [body] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async apiSysPrintCopyPost(body?: DeletePrintInput, options?: AxiosRequestConfig): Promise> { + return SysPrintApiFp(configuration).apiSysPrintCopyPost(body, options).then((request) => request(axios, basePath)); + }, /** * * @summary 删除打印模板 🖨️ @@ -429,6 +501,17 @@ export class SysPrintApi extends BaseAPI { public async apiSysPrintAddPost(body?: AddPrintInput, options?: AxiosRequestConfig) : Promise> { return SysPrintApiFp(this.configuration).apiSysPrintAddPost(body, options).then((request) => request(this.axios, this.basePath)); } + /** + * + * @summary 复制打印模板 + * @param {DeletePrintInput} [body] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof SysPrintApi + */ + public async apiSysPrintCopyPost(body?: DeletePrintInput, options?: AxiosRequestConfig) : Promise> { + return SysPrintApiFp(this.configuration).apiSysPrintCopyPost(body, options).then((request) => request(this.axios, this.basePath)); + } /** * * @summary 删除打印模板 🖨️ diff --git a/Web/src/views/system/print/index.vue b/Web/src/views/system/print/index.vue index 10eb04e8..85728558 100644 --- a/Web/src/views/system/print/index.vue +++ b/Web/src/views/system/print/index.vue @@ -43,6 +43,9 @@ + + + @@ -151,6 +154,14 @@ const handleEdit = (row: any) => { editPrintRef.value?.openDialog(row); }; +// 复制 +const handleCopy = async (row: any) => { + var res = await getAPI(SysPrintApi).apiSysPrintCopyPost({ id: row.id }); + handleQuery(); + ElMessage.success('复制成功'); +}; + + // 删除 const handleDelete = (row: any) => { ElMessageBox.confirm(`确定删除打印模板:【${row.name}】?`, '提示', {