😎实现ecn同步到SAP

This commit is contained in:
bairubing 2024-10-11 08:50:20 +08:00
parent 46ee4ea994
commit 55a080bd89
9 changed files with 695 additions and 7 deletions

View File

@ -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<string> 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;
}
}

View File

@ -27,7 +27,7 @@ public class Obj118
///
/// </summary>
[SugarColumn(ColumnName = "CheckedStatus", ColumnDescription = "")]
public bool? CheckedStatus { get; set; }
public int? CheckedStatus { get; set; }
/// <summary>
///
@ -269,5 +269,29 @@ public class Obj118
/// </summary>
[SugarColumn(ColumnName = "fld004694", ColumnDescription = "", Length = -1)]
public string? fld004694 { get; set; }
/// <summary>
///
/// </summary>
[SugarColumn(ColumnName = "fld005292", ColumnDescription = "", Length = -1)]
public string? fld005292 { get; set; }
/// <summary>
///
/// </summary>
[SugarColumn(ColumnName = "fld005293", ColumnDescription = "", Length = -1)]
public string? fld005293 { get; set; }
/// <summary>
///
/// </summary>
[SugarColumn(ColumnName = "fld005294", ColumnDescription = "", Length = -1)]
public string? fld005294 { get; set; }
/// <summary>
///
/// </summary>
[SugarColumn(ColumnName = "fld005295", ColumnDescription = "", Length = -1)]
public string? fld005295 { get; set; }
}

View File

@ -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; }
/// <summary>
/// 变更把编号
/// </summary>
public string Aennr { get; set; }
/// <summary>
/// 更改号描述
/// </summary>
public string Aetxt { get; set; }
/// <summary>
/// 开始生效日期
/// </summary>
public string Datuv { get; set; }
/// <summary>
/// 更改编号的删除标记(重组) 如为空则默认1
/// </summary>
public string Lvorm { get; set; }
/// <summary>
/// 物料编号
/// </summary>
public string Matnr { get; set; }
}

View File

@ -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;
}
}
/// <summary>
/// 生成 item 元素
/// </summary>
/// <param name="items"></param>
/// <returns></returns>
public List<XElement> GenerateItemElements(List<ItemData> items)
{
var itemElements = new List<XElement>();
@ -304,6 +309,115 @@ public class SapService : IDynamicApiController, ITransient
return itemElements;
}
/// <summary>
/// SAP同步ECN
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public async Task<SapOutput> 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<string>(ConfigConst.SapUserName);
var password = await _sysConfigService.GetConfigValueByCode<string>(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;
}
}
}

View File

@ -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;
/// <summary>
/// 变更通知ECN服务
/// </summary>
[ApiDescriptionSettings(ApplicationConst.GroupName, Name = "ChangeNoticeEcn", Order = 100)]
public class ChangeNoticeEcnService : IDynamicApiController, ITransient
{
public SqlSugarRepository<Obj118> _obj118Rep;
private readonly SysConfigService _sysConfigService;
public Common.DataValidationService _dataValidationService;
public SapService.SapService _sapService;
public ChangeNoticeEcnService(
SqlSugarRepository<Obj118> obj118Rep,
SysConfigService sysConfigService,
DataValidationService dataValidationService,
SapService.SapService sapService
)
{
_obj118Rep = obj118Rep;
_sysConfigService = sysConfigService;
_dataValidationService = dataValidationService;
_sapService = sapService;
}
/// <summary>
/// 分页查询变更通知ECN
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[ApiDescriptionSettings(Name = "page", Description = "分页查询", Order = 1000), HttpPost]
[DisplayName("分页查询变更通知ECN")]
public async Task<SqlSugarPagedList<ChangeNoticeEcnOutput>> 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<ChangeNoticeEcnOutput>()
.ToPagedListAsync(input.Page, input.PageSize);
return query;
}
/// <summary>
/// 变更通知ECN-同步到 SAP
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[ApiDescriptionSettings(Name = "syncToSAP"), HttpPost]
[DisplayName("变更通知ECN-同步到 SAP")]
public async Task<SapOutput> 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<string>(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;
}
}

View File

@ -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
{
/// <summary>
/// ECN编号
/// </summary>
public string? _System_objNBS { get; set; }
/// <summary>
/// 有效日期
/// </summary>
public DateTime? fld004693 { get; set; }
/// <summary>
/// 有效日期范围
/// </summary>
public DateTime?[] fld004693Range { get; set; }
}

View File

@ -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;
/// <summary>
/// 变更通知ECN输出参数
/// </summary>
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; }
}

View File

@ -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,
});

View File

@ -0,0 +1,184 @@
<template>
<div class="changeNoticeEcn-container">
<el-card shadow="hover"
:body-style="{ padding: '20px 20px 16px 10px', display: 'flex', width: '100%', height: '100%', alignItems: 'start' }">
<el-form :model="state.queryParams" ref="queryForm" :show-message="false" :inlineMessage="true"
label-width="auto" style="flex: 1 1 0%" @submit.prevent="handleQuery">
<el-row :gutter="10">
<el-col :xs="24" :sm="12" :md="8" :lg="5" :xl="6" class="mb5">
<el-form-item label="物料编码" prop="_System_objNBS">
<el-input v-model="state.queryParams._System_objNBS" placeholder="物料编码" clearable
@keyup.enter.native="handleQuery" />
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="8" :lg="5" :xl="6" class="mb5">
<el-form-item label="有效日期" prop="fld004693">
<el-date-picker type="daterange" v-model="state.queryParams.fld004693Range"
value-format="YYYY-MM-DD HH:mm:ss" start-placeholder="开始日期" end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" unlink-panels />
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" class="mb5">
<el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'changeNoticeEcn/page'"
:loading="options.loading"> 查询 </el-button>
<el-button icon="ele-Refresh" @click="resetQuery" :loading="options.loading"> 重置 </el-button>
</el-col>
</el-row>
</el-form>
</el-card>
<el-card class="full-table" shadow="hover" style="margin-top: 5px">
<vxe-grid ref="xGrid" class="xGrid-style" v-bind="options" v-on="gridEvents">
<template #toolbar_tools>
<el-button style="position: absolute; left: 0" icon="ele-Promotion" size="small" text=""
type="success" @click="batchSyncToSAP" v-auth="'changeNoticeEcn/batchSyncToSAP'"> 批量同步到SAP
</el-button>
</template>
<template #row_buttons="{ row }">
<el-tooltip content="同步到ERP" placement="top">
<el-button icon="ele-Promotion" size="small" text="" type="success" @click="syncToSAP(row)"
v-auth="'productManagement/syncToSAP'"
v-if="row.fld005292 == 'A' && row._System_CurrentStage == '结束'"> 同步到SAP </el-button>
</el-tooltip>
</template>
</vxe-grid>
</el-card>
</div>
</template>
<script lang="ts" setup name="changeNoticeEcn">
import { onMounted, reactive, ref } from 'vue';
import { ElMessageBox, ElMessage } from "element-plus";
import { auth } from '/@/utils/authFunction';
import { VxeGridInstance, VxeGridListeners, VxeGridPropTypes } from 'vxe-table';
import { useVxeTable } from '/@/hooks/useVxeTableOptionsHook';
import { Local } from '/@/utils/storage';
import { formatDate } from '/@/utils/formatTime';
import { PageChangeNoticeEcn, SyncToSAPChangeNoticeEcn, BatchSyncToSAPChangeNoticeEcn } from '/@/api/processManagement/changeNoticeEcn';
import { disable } from 'ol/rotationconstraint';
const xGrid = ref<VxeGridInstance>();
//
const state = reactive({
queryParams: {
searchKey: undefined,
_System_objNBS: undefined,
fld004693: undefined,
fld004693Range: undefined,
},
localPageParam: {
pageSize: 50 as number,
defaultSort: { field: 'createTime', order: 'asc', descStr: 'desc' },
},
visible: false,
title: '',
});
//
const localPageParamKey = 'localPageParam:changeNoticeEcn';
//
const options = useVxeTable(
{
id: 'changeNoticeEcn',
name: '变更通知ECN',
columns: [
{ type: 'checkbox', title: '', width: 60 },
{ type: 'seq', title: '序号', width: 60 },
{ field: '_System_objNBS', title: 'ECN编号', minWidth: 100, showOverflow: 'tooltip', sortable: false },
{ field: '_System_objDescription', title: '变更原因', minWidth: 100, showOverflow: 'tooltip', sortable: false },
{field: 'fld004693', title: '有效日期', minWidth: 100, showOverflow: 'tooltip', sortable: false },
{ field: '_System_CurrentStage', title: '_System_CurrentStage', minWidth: 100, showOverflow: 'tooltip', sortable: false },
{ field: 'fld005294', title: '物料同步状态', minWidth: 100, showOverflow: 'tooltip', sortable: false },
{ field: 'fld005293', title: '物料同步时间', minWidth: 100, showOverflow: 'tooltip', sortable: false },
{ field: 'fld005292', title: '物料同步标识', minWidth: 100, showOverflow: 'tooltip', sortable: false },
{ field: 'fld005295', title: '物料同步信息', minWidth: 100, showOverflow: 'tooltip', sortable: false },
{ title: '操作', fixed: 'right', width: 300, showOverflow: true, slots: { default: 'row_buttons' } },
],
},
// vxeGrid()vxe-table
{
//
proxyConfig: { autoLoad: true, ajax: { query: ({ page, sort }) => handleQueryApi(page, sort) } },
//
sortConfig: { defaultSort: Local.get(localPageParamKey)?.defaultSort || state.localPageParam.defaultSort },
//
pagerConfig: { pageSize: Local.get(localPageParamKey)?.pageSize || state.localPageParam.pageSize },
//
toolbarConfig: { export: false },
//
// rowConfig: { height: 80 },
}
);
//
onMounted(() => {
});
// api
const handleQueryApi = async (page: VxeGridPropTypes.ProxyAjaxQueryPageParams, sort: VxeGridPropTypes.ProxyAjaxQuerySortCheckedParams) => {
const params = Object.assign(state.queryParams, { page: page.currentPage, pageSize: page.pageSize, field: sort.field, order: sort.order, descStr: 'desc' });
var data = PageChangeNoticeEcn(params)
return data;
};
//
const handleQuery = async (reset = false) => {
options.loading = true;
await xGrid.value?.commitProxy('query');
options.loading = false;
};
//
const resetQuery = async () => {
state.queryParams.searchKey = undefined,
state.queryParams._System_objNBS = undefined,
state.queryParams.fld004693 = undefined,
await xGrid.value?.commitProxy('reload');
};
//
const gridEvents: VxeGridListeners = {
// pager-config
async pageChange({ pageSize }) {
state.localPageParam.pageSize = pageSize;
Local.set(localPageParamKey, state.localPageParam);
},
//
async sortChange({ field, order }) {
state.localPageParam.defaultSort = { field: field, order: order!, descStr: 'desc' };
Local.set(localPageParamKey, state.localPageParam);
},
};
// SAP
const syncToSAP = async (row: any) => {
options.loading = true;
ElMessageBox.confirm(`确定要同步物料吗?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
})
.then(async () => {
var data = await SyncToSAPChangeNoticeEcn(row);
await handleQuery();
if (data.data.result.code == "成功") {
ElMessage.success("同步成功");
} else {
ElMessage.error("同步失败");
}
})
.catch(() => { });
options.loading = false;
};
</script>