From 55a080bd89141f68b0f801ade0b9f3a7b43d0044 Mon Sep 17 00:00:00 2001 From: bairubing Date: Fri, 11 Oct 2024 08:50:20 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=98=8E=E5=AE=9E=E7=8E=B0ecn=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=E5=88=B0SAP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Common/DataValidationService.cs | 14 ++ .../Vistar.Application/Entity/Obj118.cs | 28 ++- .../SapService/Dto/SapEcnInput.cs | 50 +++++ .../SapService/SapService.cs | 124 +++++++++++- .../ChangeNoticeEcn/ChangeNoticeEcnService.cs | 124 ++++++++++++ .../Dto/ChangeNoticeEcnInput.cs | 83 ++++++++ .../Dto/ChangeNoticeEcnOutput.cs | 65 +++++++ .../api/processManagement/changeNoticeEcn.ts | 30 +++ .../changeNoticeEcn/index.vue | 184 ++++++++++++++++++ 9 files changed, 695 insertions(+), 7 deletions(-) create mode 100644 admin.net.pro/Admin.NET/Vistar.Application/SapService/Dto/SapEcnInput.cs create mode 100644 admin.net.pro/Admin.NET/Vistar.Application/Service/ChangeNoticeEcn/ChangeNoticeEcnService.cs create mode 100644 admin.net.pro/Admin.NET/Vistar.Application/Service/ChangeNoticeEcn/Dto/ChangeNoticeEcnInput.cs create mode 100644 admin.net.pro/Admin.NET/Vistar.Application/Service/ChangeNoticeEcn/Dto/ChangeNoticeEcnOutput.cs create mode 100644 admin.net.pro/Web/src/api/processManagement/changeNoticeEcn.ts create mode 100644 admin.net.pro/Web/src/views/processManagement/changeNoticeEcn/index.vue diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Common/DataValidationService.cs b/admin.net.pro/Admin.NET/Vistar.Application/Common/DataValidationService.cs index acaa8df..8cf61f3 100644 --- a/admin.net.pro/Admin.NET/Vistar.Application/Common/DataValidationService.cs +++ b/admin.net.pro/Admin.NET/Vistar.Application/Common/DataValidationService.cs @@ -13,6 +13,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using Vistar.Application.Entity; +using static SKIT.FlurlHttpClient.Wechat.Api.Models.CgibinAccountGetAccountBasicInfoResponse.Types; namespace Vistar.Application.Common; public class DataValidationService : IDynamicApiController, ITransient @@ -68,4 +69,17 @@ public class DataValidationService : IDynamicApiController, ITransient return verification; } + + public async Task ChangeModuleMaterial(long objId, string recordGuid) + { + string encoding = ""; + + if (objId==110) + { + var data = await _obj110Rep.AsQueryable().Where(x => x.RecordGuid == recordGuid && x.deleted == false).FirstAsync(); + encoding = data._System_objNBS; + } + + return encoding; + } } diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Entity/Obj118.cs b/admin.net.pro/Admin.NET/Vistar.Application/Entity/Obj118.cs index 16c7e59..0c40c1b 100644 --- a/admin.net.pro/Admin.NET/Vistar.Application/Entity/Obj118.cs +++ b/admin.net.pro/Admin.NET/Vistar.Application/Entity/Obj118.cs @@ -27,7 +27,7 @@ public class Obj118 /// /// [SugarColumn(ColumnName = "CheckedStatus", ColumnDescription = "")] - public bool? CheckedStatus { get; set; } + public int? CheckedStatus { get; set; } /// /// @@ -269,5 +269,29 @@ public class Obj118 /// [SugarColumn(ColumnName = "fld004694", ColumnDescription = "", Length = -1)] public string? fld004694 { get; set; } - + + /// + /// + /// + [SugarColumn(ColumnName = "fld005292", ColumnDescription = "", Length = -1)] + public string? fld005292 { get; set; } + + + /// + /// + /// + [SugarColumn(ColumnName = "fld005293", ColumnDescription = "", Length = -1)] + public string? fld005293 { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "fld005294", ColumnDescription = "", Length = -1)] + public string? fld005294 { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "fld005295", ColumnDescription = "", Length = -1)] + public string? fld005295 { get; set; } } diff --git a/admin.net.pro/Admin.NET/Vistar.Application/SapService/Dto/SapEcnInput.cs b/admin.net.pro/Admin.NET/Vistar.Application/SapService/Dto/SapEcnInput.cs new file mode 100644 index 0000000..78bcf64 --- /dev/null +++ b/admin.net.pro/Admin.NET/Vistar.Application/SapService/Dto/SapEcnInput.cs @@ -0,0 +1,50 @@ +// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 +// +// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 +// +// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Vistar.Application.SapService.Dto; +public class SapEcnInput +{ + public string Reqkeyid { get; set; } + public string Businessid { get; set; } + public string Messageid { get; set; } + public string Sndprn { get; set; } + public string Rcvprn { get; set; } + public string Requser { get; set; } + public string Note1 { get; set; } + public string Note2 { get; set; } + public string Note3 { get; set; } + + /// + /// 变更把编号 + /// + public string Aennr { get; set; } + + /// + /// 更改号描述 + /// + public string Aetxt { get; set; } + + /// + /// 开始生效日期 + /// + public string Datuv { get; set; } + + /// + /// 更改编号的删除标记(重组) 如为空,则默认1 + /// + public string Lvorm { get; set; } + + /// + /// 物料编号 + /// + public string Matnr { get; set; } +} diff --git a/admin.net.pro/Admin.NET/Vistar.Application/SapService/SapService.cs b/admin.net.pro/Admin.NET/Vistar.Application/SapService/SapService.cs index 1523594..389f09b 100644 --- a/admin.net.pro/Admin.NET/Vistar.Application/SapService/SapService.cs +++ b/admin.net.pro/Admin.NET/Vistar.Application/SapService/SapService.cs @@ -130,13 +130,14 @@ public class SapService : IDynamicApiController, ITransient }; return output; } - else { + else + { var result = await response.Content.ReadAsStringAsync(); var output = new SapOutput() { - parameter= soapEnvelope.ToString(), + parameter = soapEnvelope.ToString(), code = "失败", - msg = "调用失败,状态码:"+response.StatusCode, + msg = "调用失败,状态码:" + response.StatusCode, result = result }; return output; @@ -274,12 +275,16 @@ public class SapService : IDynamicApiController, ITransient { code = "失败", msg = "发生错误" + ex.Message, - result = "发生错误"+ex + result = "发生错误" + ex }; return output; } } - + /// + /// 生成 item 元素 + /// + /// + /// public List GenerateItemElements(List items) { var itemElements = new List(); @@ -304,6 +309,115 @@ public class SapService : IDynamicApiController, ITransient return itemElements; } + + /// + /// SAP同步ECN + /// + /// + /// + public async Task SapEcnApi(SapEcnInput input) + { + var soapEnvelope = new XDocument( + new XDeclaration("1.0", "utf-8", "yes"), + new XElement(XName.Get("Envelope", "http://schemas.xmlsoap.org/soap/envelope/"), + new XElement(XName.Get("Header", "http://schemas.xmlsoap.org/soap/envelope/")), + new XElement(XName.Get("Body", "http://schemas.xmlsoap.org/soap/envelope/"), + new XElement(XName.Get("Zppfm003", "urn:sap-com:document:sap:soap:functions:mc-style"), + new XElement("IsReq", + new XElement("Reqkeyid", input.Reqkeyid), + new XElement("Businessid", input.Businessid), + new XElement("Messageid", input.Messageid), + new XElement("Sndprn", input.Sndprn), + new XElement("Rcvprn", input.Rcvprn), + new XElement("Requser", input.Requser), + new XElement("Note1", input.Note1), + new XElement("Note2", input.Note2), + new XElement("Note3", input.Note3) + ), + new XElement("ItData", + new XElement("item", + new XElement("Aennr", input.Aennr), + new XElement("Aetxt", input.Aetxt), + new XElement("Datuv", input.Datuv), + new XElement("Lvorm", input.Lvorm), + new XElement("Item", + new XElement("item", + new XElement("Matnr", input.Matnr) + ) + ) + ) + ) + ) + ) + ) + ); + + var httpClientHandler = new HttpClientHandler + { + ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => true, + ClientCertificateOptions = ClientCertificateOption.Manual + }; + + try + { + using (var httpClient = new HttpClient(httpClientHandler)) + { + // 设置基本身份验证信息 + var username = await _sysConfigService.GetConfigValueByCode(ConfigConst.SapUserName); + var password = await _sysConfigService.GetConfigValueByCode(ConfigConst.SapPassword); + var credentials = Convert.ToBase64String(Encoding.ASCII.GetBytes($"{username}:{password}")); + httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", credentials); + // 将 XML 内容转换为字符串并设置请求内容类型为 text/xml + var content = new StringContent(soapEnvelope.ToString(), Encoding.UTF8, "text/xml"); + content.Headers.ContentType = new MediaTypeHeaderValue("text/xml"); + // 设置 SAP Web 服务的 URL + var url = "https://vhjqeds4ci.sap.vistar-eq.com:44300/sap/bc/srt/rfc/sap/zppfm003/120/zppfm003/zppfm003"; + + // 发起 POST 请求到 SAP Web 服务 + var response = await httpClient.PostAsync(url, content); + if (response.IsSuccessStatusCode) + { + var result = await response.Content.ReadAsStringAsync(); + XDocument doc = XDocument.Parse(result); + var item = doc.Descendants("item").FirstOrDefault(); + var zwbid = item?.Element("Zwbid")?.Value; + var matnr = item?.Element("Matnr")?.Value; + var code = item?.Element("Code")?.Value; + var msg = item?.Element("Msg")?.Value; + var output = new SapOutput() + { + parameter = soapEnvelope.ToString(), + code = code, + msg = msg, + result = result + }; + return output; + } + else + { + var result = await response.Content.ReadAsStringAsync(); + var output = new SapOutput() + { + parameter = soapEnvelope.ToString(), + code = "失败", + msg = "调用失败,状态码:" + response.StatusCode, + result = result + }; + return output; + } + } + } + catch (Exception ex) + { + var output = new SapOutput() + { + code = "失败", + msg = "发生错误" + ex.Message, + result = "发生错误" + ex + }; + return output; + } + } } diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Service/ChangeNoticeEcn/ChangeNoticeEcnService.cs b/admin.net.pro/Admin.NET/Vistar.Application/Service/ChangeNoticeEcn/ChangeNoticeEcnService.cs new file mode 100644 index 0000000..c92cb4d --- /dev/null +++ b/admin.net.pro/Admin.NET/Vistar.Application/Service/ChangeNoticeEcn/ChangeNoticeEcnService.cs @@ -0,0 +1,124 @@ +// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 +// +// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 +// +// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + +using Admin.NET.Core; +using Admin.NET.Core.Service; +using Furion.DependencyInjection; +using Furion.DynamicApiController; +using Microsoft.AspNetCore.Mvc; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Vistar.Application.Common; +using Vistar.Application.Const; +using Vistar.Application.Entity; +using Vistar.Application.SapService.Dto; +using Vistar.Application.Service.ChangeNoticeEcn.Dto; +using Vistar.Application.Util; + +namespace Vistar.Application.Service.ChangeNoticeEcn; +/// +/// 变更通知ECN服务 +/// +[ApiDescriptionSettings(ApplicationConst.GroupName, Name = "ChangeNoticeEcn", Order = 100)] +public class ChangeNoticeEcnService : IDynamicApiController, ITransient +{ + public SqlSugarRepository _obj118Rep; + private readonly SysConfigService _sysConfigService; + public Common.DataValidationService _dataValidationService; + public SapService.SapService _sapService; + public ChangeNoticeEcnService( + SqlSugarRepository obj118Rep, + SysConfigService sysConfigService, + DataValidationService dataValidationService, + SapService.SapService sapService + ) + { + _obj118Rep = obj118Rep; + _sysConfigService = sysConfigService; + _dataValidationService = dataValidationService; + _sapService = sapService; + } + /// + /// 分页查询变更通知ECN + /// + /// + /// + [ApiDescriptionSettings(Name = "page", Description = "分页查询", Order = 1000), HttpPost] + [DisplayName("分页查询变更通知ECN")] + public async Task> Page(PageChangeNoticeEcnInput input) + { + var query = await _obj118Rep.AsQueryable() + .Where(x => (x.CheckedStatus == 1 || x.CheckedStatus == 0) && x.deleted == false && x.IsLatestVersion == true) + .WhereIF(!string.IsNullOrWhiteSpace(input._System_objNBS), u => u._System_objNBS.Contains(input._System_objNBS.Trim())) + .WhereIF(input.fld004693Range != null && input.fld004693Range.Length == 2, u => u.fld004693 >= input.fld004693Range[0] && u.fld004693 <= input.fld004693Range[1]) + .Select() + .ToPagedListAsync(input.Page, input.PageSize); + return query; + } + /// + /// 变更通知ECN-同步到 SAP + /// + /// + /// + [ApiDescriptionSettings(Name = "syncToSAP"), HttpPost] + [DisplayName("变更通知ECN-同步到 SAP")] + public async Task SyncToSAP(ChangeNoticeEcnInput input) + { + //获取时间戳精确到毫秒,sap要求每次调用生成不重复guid + string millisecondTimestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString(); + var sapEcnInput = new SapEcnInput() + { + Reqkeyid = "", + Businessid = "", + Messageid = "", + Sndprn = "PLM", + Rcvprn = "SAP", + Requser = await _sysConfigService.GetConfigValueByCode(ConfigConst.SapUserName), + Note1 = "", + Note2 = "", + Note3 = "", + + Aennr = input._System_objNBS, + Aetxt = input._System_ObjDescription, + Datuv = input.fld004693.ToDateTime().ToString("yyyy-MM-dd"), + Lvorm = input.fld004694, + Matnr = await _dataValidationService.ChangeModuleMaterial(input.fld004638.ToLong(),input.fld004638_Rec) + }; + + var apiOutput = await _sapService.SapEcnApi(sapEcnInput); + string codeVal = apiOutput.code == "S" ? "成功" : "失败"; + var msg = apiOutput.msg; + if (apiOutput.msg == "") + { + msg = "同步成功"; + } + + await _obj118Rep.AsUpdateable() + .SetColumns(it => new Obj118 + { + fld005293 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), + fld005294 = codeVal, + fld005292 = "N", + fld005295 = msg + }) + .Where(it => it.idRecord == input.idRecord) + .ExecuteCommandAsync(); + var output = new SapOutput() + { + parameter = apiOutput.parameter, + code = codeVal, + msg = msg, + result = apiOutput.result + }; + return output; + } + + +} diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Service/ChangeNoticeEcn/Dto/ChangeNoticeEcnInput.cs b/admin.net.pro/Admin.NET/Vistar.Application/Service/ChangeNoticeEcn/Dto/ChangeNoticeEcnInput.cs new file mode 100644 index 0000000..b24fa0b --- /dev/null +++ b/admin.net.pro/Admin.NET/Vistar.Application/Service/ChangeNoticeEcn/Dto/ChangeNoticeEcnInput.cs @@ -0,0 +1,83 @@ +// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 +// +// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 +// +// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + +using Admin.NET.Core; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Vistar.Application.Service.ChangeNoticeEcn.Dto; +public class ChangeNoticeEcnInput +{ + public long idRecord { get; set; } + public int? CheckedStatus { get; set; } + public int? VersionIndex { get; set; } + public bool? IsLatestVersion { get; set; } + public DateTime? CreatedDate { get; set; } + public DateTime? VersionCreatedDate { get; set; } + public DateTime? dateModified { get; set; } + public long? UserCreatedId { get; set; } + public long? VersionUserCreatedId { get; set; } + public long? UserModifiedId { get; set; } + public string? RecordGuid { get; set; } + public bool? isVisibilityNormal { get; set; } + public bool? deleted { get; set; } + public string? SubObjectGuid { get; set; } + public bool? PreviousStatus { get; set; } + public string? revision { get; set; } + public byte[]? Record_image160_160 { get; set; } + public byte[]? Record_Image320_240 { get; set; } + public byte[]? Record_ImageMax { get; set; } + public string? _System_objNBS { get; set; } + public string? _System_ObjDescription { get; set; } + public DateTime? _System_Effectivity_Begin { get; set; } + public DateTime? _System_Effectivity_End { get; set; } + public string? CheckedOutPc { get; set; } + public long? StageId { get; set; } + public long? ProjectManager { get; set; } + public long? ProjectManager_Rec { get; set; } + public bool? EnableNotifications { get; set; } + public long? GroupObjId { get; set; } + public bool? _CheckOutInProgress { get; set; } + public string? _System_CurrentStage { get; set; } + public string _System_ObjNbsAuto { get; set; } + public bool? isReleasedVersion { get; set; } + public string? _System_WebLink { get; set; } + public long? _System_ObjParentProcess { get; set; } + public string? _System_ObjParentProcess_Rec { get; set; } + public long? fld004638 { get; set; } + public string? fld004638_Rec { get; set; } + public long? fld004692 { get; set; } + public string? fld004692_Rec { get; set; } + public DateTime? fld004693 { get; set; } + public string? fld004694 { get; set; } + public string? fld005292 { get; set; } + public string? fld005293 { get; set; } + public string? fld005294 { get; set; } + public string? fld005295 { get; set; } +} + +public class PageChangeNoticeEcnInput : BasePageInput +{ + /// + /// ECN编号 + /// + public string? _System_objNBS { get; set; } + + /// + /// 有效日期 + /// + public DateTime? fld004693 { get; set; } + + /// + /// 有效日期范围 + /// + public DateTime?[] fld004693Range { get; set; } + + +} diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Service/ChangeNoticeEcn/Dto/ChangeNoticeEcnOutput.cs b/admin.net.pro/Admin.NET/Vistar.Application/Service/ChangeNoticeEcn/Dto/ChangeNoticeEcnOutput.cs new file mode 100644 index 0000000..e5389ce --- /dev/null +++ b/admin.net.pro/Admin.NET/Vistar.Application/Service/ChangeNoticeEcn/Dto/ChangeNoticeEcnOutput.cs @@ -0,0 +1,65 @@ +// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 +// +// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 +// +// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Vistar.Application.Service.ChangeNoticeEcn.Dto; +/// +/// 变更通知ECN输出参数 +/// +public class ChangeNoticeEcnOutput +{ + public long idRecord { get; set; } + public int? CheckedStatus { get; set; } + public int? VersionIndex { get; set; } + public bool? IsLatestVersion { get; set; } + public DateTime? CreatedDate { get; set; } + public DateTime? VersionCreatedDate { get; set; } + public DateTime? dateModified { get; set; } + public long? UserCreatedId { get; set; } + public long? VersionUserCreatedId { get; set; } + public long? UserModifiedId { get; set; } + public string? RecordGuid { get; set; } + public bool? isVisibilityNormal { get; set; } + public bool? deleted { get; set; } + public string? SubObjectGuid { get; set; } + public bool? PreviousStatus { get; set; } + public string? revision { get; set; } + public byte[]? Record_image160_160 { get; set; } + public byte[]? Record_Image320_240 { get; set; } + public byte[]? Record_ImageMax { get; set; } + public string? _System_objNBS { get; set; } + public string? _System_ObjDescription { get; set; } + public DateTime? _System_Effectivity_Begin { get; set; } + public DateTime? _System_Effectivity_End { get; set; } + public string? CheckedOutPc { get; set; } + public long? StageId { get; set; } + public long? ProjectManager { get; set; } + public long? ProjectManager_Rec { get; set; } + public bool? EnableNotifications { get; set; } + public long? GroupObjId { get; set; } + public bool? _CheckOutInProgress { get; set; } + public string? _System_CurrentStage { get; set; } + public string _System_ObjNbsAuto { get; set; } + public bool? isReleasedVersion { get; set; } + public string? _System_WebLink { get; set; } + public long? _System_ObjParentProcess { get; set; } + public string? _System_ObjParentProcess_Rec { get; set; } + public long? fld004638 { get; set; } + public string? fld004638_Rec { get; set; } + public long? fld004692 { get; set; } + public string? fld004692_Rec { get; set; } + public DateTime? fld004693 { get; set; } + public string? fld004694 { get; set; } + public string? fld005292 { get; set; } + public string? fld005293 { get; set; } + public string? fld005294 { get; set; } + public string? fld005295 { get; set; } +} diff --git a/admin.net.pro/Web/src/api/processManagement/changeNoticeEcn.ts b/admin.net.pro/Web/src/api/processManagement/changeNoticeEcn.ts new file mode 100644 index 0000000..c7a108b --- /dev/null +++ b/admin.net.pro/Web/src/api/processManagement/changeNoticeEcn.ts @@ -0,0 +1,30 @@ +import request from '/@/utils/request'; +enum Api { + PageChangeNoticeEcn = '/api/changeNoticeEcn/page', + SyncToSAPChangeNoticeEcn= '/api/changeNoticeEcn/SyncToSAP', + BatchSyncToSAPChangeNoticeEcn = '/api/changeNoticeEcn/batchSyncToSAP' +} + +// 分页查询变更通知ECN +export const PageChangeNoticeEcn = (params?: any) => + request({ + url: Api.PageChangeNoticeEcn, + method: 'post', + data: params, + }); + +// 同步到SAP +export const SyncToSAPChangeNoticeEcn = (params?: any) => + request({ + url: Api.SyncToSAPChangeNoticeEcn, + method: 'post', + data: params, + }); + +// 批量同步到SAP +export const BatchSyncToSAPChangeNoticeEcn = (params?: any) => + request({ + url: Api.BatchSyncToSAPChangeNoticeEcn, + method: 'post', + data: params, + }); diff --git a/admin.net.pro/Web/src/views/processManagement/changeNoticeEcn/index.vue b/admin.net.pro/Web/src/views/processManagement/changeNoticeEcn/index.vue new file mode 100644 index 0000000..c3edb3b --- /dev/null +++ b/admin.net.pro/Web/src/views/processManagement/changeNoticeEcn/index.vue @@ -0,0 +1,184 @@ + + + \ No newline at end of file