diff --git a/src/YhCore.WebApi/Controllers/Api/Common/CommonController.cs b/src/YhCore.WebApi/Controllers/Api/Common/CommonController.cs
index 7ae60a4..4a1a8fa 100644
--- a/src/YhCore.WebApi/Controllers/Api/Common/CommonController.cs
+++ b/src/YhCore.WebApi/Controllers/Api/Common/CommonController.cs
@@ -77,7 +77,7 @@ namespace YhCore.WebApi.Controllers.Api.Common
/// 添加字典。
[HttpPost("AddDic")]
- public async Task AddDic([FromBody] Common_Dictionary model)
+ public async Task AddDic([FromForm] Common_Dictionary model)
{
if (model == null) throw new DException("参数错误!");
@@ -94,7 +94,7 @@ namespace YhCore.WebApi.Controllers.Api.Common
/// 更新字典。
[HttpPost("UpdateDic")]
- public async Task UpdateDic([FromBody] Common_Dictionary model)
+ public async Task UpdateDic([FromForm] Common_Dictionary model)
{
if (model == null) throw new DException("参数有误!");
model.Schserid = SchSerID();
@@ -103,7 +103,7 @@ namespace YhCore.WebApi.Controllers.Api.Common
/// 编辑字典名称。
[HttpPost("EditDic")]
- public async Task EditDic([FromBody] Common_Dictionary model)
+ public async Task EditDic([FromForm] Common_Dictionary model)
{
if (model == null) throw new DException("参数有误!");
model.Schserid = SchSerID();
@@ -112,7 +112,7 @@ namespace YhCore.WebApi.Controllers.Api.Common
/// 添加发文部门。
[HttpPost("AddDeptDic")]
- public async Task AddDeptDic([FromBody] Common_Dictionary model)
+ public async Task AddDeptDic([FromForm] Common_Dictionary model)
{
if (model == null) throw new DException("参数有误!");
@@ -129,7 +129,7 @@ namespace YhCore.WebApi.Controllers.Api.Common
/// 更新发文部门。
[HttpPost("UpdateDeptDic")]
- public async Task UpdateDeptDic([FromBody] Common_Dictionary model)
+ public async Task UpdateDeptDic([FromForm] Common_Dictionary model)
{
if (model == null) throw new DException("参数有误!");
model.Schserid = SchSerID();
diff --git a/src/YhCore.WebApi/Controllers/Api/Common/ReviewprocessController.cs b/src/YhCore.WebApi/Controllers/Api/Common/ReviewprocessController.cs
index 3c0d5c2..e231747 100644
--- a/src/YhCore.WebApi/Controllers/Api/Common/ReviewprocessController.cs
+++ b/src/YhCore.WebApi/Controllers/Api/Common/ReviewprocessController.cs
@@ -49,7 +49,7 @@ namespace YhCore.WebApi.Controllers.Api.Common
/// 添加审核流程。
[HttpPost("Create")]
- public async Task Create([FromBody] Common_flowinfo model)
+ public async Task Create([FromForm] Common_flowinfo model)
{
model.schSerID = SchSerID();
await _svc.CreateAsync(model);
@@ -57,7 +57,7 @@ namespace YhCore.WebApi.Controllers.Api.Common
/// 修改审核流程。
[HttpPost("Edit")]
- public async Task Edit([FromBody] Common_flowinfo model)
+ public async Task Edit([FromForm] Common_flowinfo model)
{
model.schSerID = SchSerID();
await _svc.EditAsync(model);
@@ -65,12 +65,12 @@ namespace YhCore.WebApi.Controllers.Api.Common
/// 添加步骤流程。
[HttpPost("StepCreate")]
- public Task StepCreate([FromBody] Common_flowstep model)
+ public Task StepCreate([FromForm] Common_flowstep model)
=> _svc.StepCreateAsync(model);
/// 修改步骤流程。
[HttpPost("StepEdit")]
- public Task StepEdit([FromBody] Common_flowstep model)
+ public Task StepEdit([FromForm] Common_flowstep model)
=> _svc.StepEditAsync(model);
/// 删除审核流程(ids 逗号分隔)。
@@ -80,7 +80,7 @@ namespace YhCore.WebApi.Controllers.Api.Common
/// 删除步骤。
[HttpPost("StepDelete")]
- public Task StepDelete([FromBody] decimal[] ids)
+ public Task StepDelete([FromForm] decimal[] ids)
=> _svc.StepDeleteAsync(ids);
/// 流程绑定的步骤列表。
diff --git a/src/YhCore.WebApi/Controllers/Api/DocPrint/WYSHRoleController.cs b/src/YhCore.WebApi/Controllers/Api/DocPrint/WYSHRoleController.cs
index f80ebb9..9ea390b 100644
--- a/src/YhCore.WebApi/Controllers/Api/DocPrint/WYSHRoleController.cs
+++ b/src/YhCore.WebApi/Controllers/Api/DocPrint/WYSHRoleController.cs
@@ -3,6 +3,7 @@ using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Mvc;
+using Newtonsoft.Json;
using Yh.Platform.Abstractions;
using YhCore.Common;
using YhCore.Common.UserContext;
@@ -17,6 +18,9 @@ namespace YhCore.WebApi.Controllers.Api.DocPrint
/// 审核角色 + 流程配置控制器(对应旧 Areas/DocPrint/WYSHRoleController,路由 api/docprint/wyshrole)。
/// 45 action 中本批落地 39 个;Excel 导入导出(ExceltotalListSHRole/WYRDExceldaochu/UpfileExcelSHRole/
/// downMBOfSHRole/downUpfileSHRoleFK)与审批单 PDF(DwonWYSQD)依赖 NPOI/PdfHelper,延后迁移。
+ /// POST 动作一律 [FromForm]:前端 api/index.js 固定 x-www-form-urlencoded 提交([FromForm] 会 415);
+ /// 老契约"表单字段塞 JSON"的动作(WYSHRole/SHTeaTxt/listXxxTxt/data/docdata/docnumdata)
+ /// 以 [FromForm] string 接收后手动反序列化。
///
[EnableCors("default")]
[ApiController]
@@ -30,6 +34,14 @@ namespace YhCore.WebApi.Controllers.Api.DocPrint
_role = role;
}
+ /// 解析老契约"表单字段塞 JSON"的值;空串安全,非法 JSON 返回 null 由调用方判参。
+ private static T ParseFormJson(string txt) where T : class
+ {
+ if (string.IsNullOrWhiteSpace(txt)) return null;
+ try { return JsonConvert.DeserializeObject(txt); }
+ catch (JsonException) { return null; }
+ }
+
#region 审核角色管理
/// 学校是否启用审核角色(旧 getIsSHRole)。
@@ -49,18 +61,20 @@ namespace YhCore.WebApi.Controllers.Api.DocPrint
public async Task UpdateSHRoleName([FromQuery] decimal serID, [FromQuery] string sHRoleName)
=> await _role.UpdateSHRoleNameAsync(SchSerID(), UserId(), serID, sHRoleName);
- /// 新增/编辑角色(旧 EditSHRole,form: WYSHRole=JSON → [FromBody])。
+ /// 新增/编辑角色(旧 EditSHRole,form: WYSHRole=JSON 字符串)。
[HttpPost("EditSHRole")]
- public async Task EditSHRole([FromBody] WYSHRoleExt model)
+ public async Task EditSHRole([FromForm] string WYSHRole)
{
+ var model = ParseFormJson(WYSHRole);
if (model == null) throw new DException("参数错误!");
return await _role.EditSHRoleAsync(SchSerID(), UserId(), model);
}
- /// 编辑成员行(旧 editSHTeaRow,form: SHTeaTxt → [FromBody])。
+ /// 编辑成员行(旧 editSHTeaRow,form: SHTeaTxt=JSON 字符串)。
[HttpPost("editSHTeaRow")]
- public async Task EditSHTeaRow([FromBody] WY_SHRole_SHTea model)
+ public async Task EditSHTeaRow([FromForm] string SHTeaTxt)
{
+ var model = ParseFormJson(SHTeaTxt);
if (model == null) throw new DException("参数错误!");
return await _role.EditSHTeaRowAsync(SchSerID(), UserId(), model);
}
@@ -70,28 +84,34 @@ namespace YhCore.WebApi.Controllers.Api.DocPrint
public async Task DelSHTeaRow([FromQuery] decimal serID)
=> await _role.DelSHTeaRowAsync(SchSerID(), serID);
- /// 批量保存审核人(旧 editSHTea,form: SHRoleID + listSHTeaTxt → [FromBody])。
+ /// 批量保存审核人(旧 editSHTea,form: SHRoleID + listSHTeaTxt=JSON 数组字符串)。
[HttpPost("editSHTea")]
- public async Task EditSHTea([FromBody] EditSHTeaDto model)
+ public async Task EditSHTea([FromForm] decimal SHRoleID, [FromForm] string listSHTeaTxt)
{
- if (model == null) throw new DException("参数错误!");
- return await _role.EditSHTeaAsync(SchSerID(), UserId(), model.SHRoleID, model.listSHTea);
+ var list = ParseFormJson>(listSHTeaTxt) ?? new List();
+ return await _role.EditSHTeaAsync(SchSerID(), UserId(), SHRoleID, list);
}
- /// 批量保存被审核人(旧 editBSHTea,form: SHRoleID + listBSHTeaTxt → [FromBody])。
+ /// 批量保存被审核人(旧 editBSHTea,form: SHRoleID + listBSHTeaTxt=JSON 数组字符串)。
[HttpPost("editBSHTea")]
- public async Task EditBSHTea([FromBody] EditBSHTeaDto model)
+ public async Task EditBSHTea([FromForm] decimal SHRoleID, [FromForm] string listBSHTeaTxt)
{
- if (model == null) throw new DException("参数错误!");
- return await _role.EditBSHTeaAsync(SchSerID(), UserId(), model.SHRoleID, model.listBSHTea);
+ var list = ParseFormJson>(listBSHTeaTxt) ?? new List();
+ return await _role.EditBSHTeaAsync(SchSerID(), UserId(), SHRoleID, list);
}
- /// 删除角色(旧 delSHRole,form: listSHRoleIDTxt → [FromBody])。
+ /// 删除角色(旧 delSHRole,form: listSHRoleIDTxt=JSON 数组字符串,兼容逗号分隔)。
[HttpPost("delSHRole")]
- public async Task DelSHRole([FromBody] DelSHRoleDto model)
+ public async Task DelSHRole([FromForm] string listSHRoleIDTxt)
{
- if (model == null) throw new DException("参数错误!");
- return await _role.DelSHRoleAsync(SchSerID(), model.listSHRoleID);
+ var list = ParseFormJson>(listSHRoleIDTxt);
+ if (list == null)
+ {
+ list = (listSHRoleIDTxt ?? "").Split(',')
+ .Where(a => !string.IsNullOrWhiteSpace(a) && decimal.TryParse(a.Trim(), out _))
+ .Select(a => (decimal?)decimal.Parse(a.Trim())).ToList();
+ }
+ return await _role.DelSHRoleAsync(SchSerID(), list);
}
#endregion
@@ -110,7 +130,7 @@ namespace YhCore.WebApi.Controllers.Api.DocPrint
/// 新增/编辑流程(旧 EditFlow;schSerID 取当前用户)。
[HttpPost("EditFlow")]
- public async Task EditFlow([FromBody] Common_flowinfo model)
+ public async Task EditFlow([FromForm] Common_flowinfo model)
{
if (model == null) throw new DException("参数错误!");
model.schSerID = SchSerID();
@@ -119,7 +139,7 @@ namespace YhCore.WebApi.Controllers.Api.DocPrint
/// 新增步骤(旧 StepCreateOfSHRole)。
[HttpPost("StepCreateOfSHRole")]
- public async Task StepCreateOfSHRole([FromBody] Common_flowstep model)
+ public async Task StepCreateOfSHRole([FromForm] Common_flowstep model)
{
if (model == null) throw new DException("参数错误!");
return await _role.StepCreateOfSHRoleAsync(model);
@@ -180,11 +200,22 @@ namespace YhCore.WebApi.Controllers.Api.DocPrint
public async Task> GetDicInfo([FromQuery] string typeID)
=> await _role.GetDicInfoAsync(SchSerID(), typeID);
- /// 编辑文印(审核角色视角;旧 editDocPrint,form 三段 JSON → [FromBody])。
+ /// 编辑文印(审核角色视角;旧 editDocPrint,form: isedit + data/docdata/docnumdata 三段 JSON 字符串)。
[HttpPost("editDocPrint")]
- public async Task EditDocPrint([FromBody] WYSHRoleEditDocPrintDto model)
+ public async Task EditDocPrint(
+ [FromForm] int isedit,
+ [FromForm] string data,
+ [FromForm] string docdata,
+ [FromForm] string docnumdata)
{
- if (model == null) throw new DException("参数错误!");
+ var model = new WYSHRoleEditDocPrintDto
+ {
+ isedit = isedit,
+ data = ParseFormJson(data),
+ docdata = ParseFormJson(docdata),
+ docnumdata = ParseFormJson>(docnumdata) ?? new List()
+ };
+ if (model.data == null || model.docdata == null) throw new DException("参数错误!");
return await _role.EditDocPrintAsync(SchSerID(), UserId(), model);
}
@@ -259,7 +290,7 @@ namespace YhCore.WebApi.Controllers.Api.DocPrint
/// 审核确认(旧 shenheokSHRole)。
[HttpPost("shenheokSHRole")]
- public async Task ShenheOkSHRole([FromBody] FlowTranctDto model)
+ public async Task ShenheOkSHRole([FromForm] FlowTranctDto model)
{
if (model == null) throw new DException("参数错误!");
model.actionuserid = UserContextHolder.Current?.Id ?? 0;
@@ -273,9 +304,9 @@ namespace YhCore.WebApi.Controllers.Api.DocPrint
#region 签名 / 退回 / 金额重提
- /// 保存签名(旧 SaveSignature,form: pic → [FromBody])。
+ /// 保存签名(旧 SaveSignature,form: pic → [FromForm])。
[HttpPost("SaveSignature")]
- public async Task SaveSignature([FromBody] SaveSignatureDto model)
+ public async Task SaveSignature([FromForm] SaveSignatureDto model)
{
if (model == null) throw new DException("参数错误!");
return await _role.SaveSignatureAsync(SchSerID(), UserId(), model.pic);
@@ -289,9 +320,9 @@ namespace YhCore.WebApi.Controllers.Api.DocPrint
[HttpGet("DelSignature")]
public async Task DelSignature() => await _role.DelSignatureAsync(SchSerID(), UserId());
- /// 退回(旧 TuiHui,form: DocID + cont → [FromBody])。
+ /// 退回(旧 TuiHui,form: DocID + cont → [FromForm])。
[HttpPost("TuiHui")]
- public async Task TuiHui([FromBody] TuiHuiDto model)
+ public async Task TuiHui([FromForm] TuiHuiDto model)
{
if (model == null) throw new DException("参数错误!");
return await _role.TuiHuiAsync(UserId(), model.cont, model.DocID);
@@ -302,9 +333,9 @@ namespace YhCore.WebApi.Controllers.Api.DocPrint
public async Task UnTuiHui([FromQuery] decimal docID)
=> await _role.UnTuiHuiAsync(UserId(), docID);
- /// 金额重提(旧 regetJE,form: DocID 逗号分隔 + type → [FromBody])。
+ /// 金额重提(旧 regetJE,form: DocID 逗号分隔 + type → [FromForm])。
[HttpPost("regetJE")]
- public async Task RegetJE([FromBody] RegetJEDto model)
+ public async Task RegetJE([FromForm] RegetJEDto model)
{
if (model == null) throw new DException("参数错误!");
var ids = (model.DocID ?? "").Split(',')
diff --git a/src/YhCore.WebApi/Controllers/Api/DocPrint/WY_listController.cs b/src/YhCore.WebApi/Controllers/Api/DocPrint/WY_listController.cs
index 32a9747..5b74bc6 100644
--- a/src/YhCore.WebApi/Controllers/Api/DocPrint/WY_listController.cs
+++ b/src/YhCore.WebApi/Controllers/Api/DocPrint/WY_listController.cs
@@ -37,7 +37,7 @@ namespace YhCore.WebApi.Controllers.Api.DocPrint
/// 添加文印分类。
[HttpPost("AddDic")]
- public async Task AddDic([FromBody] Common_Dictionary model)
+ public async Task AddDic([FromForm] Common_Dictionary model)
{
if (model == null) throw new DException("参数错误!");
model.Schserid = SchSerID();
@@ -51,7 +51,7 @@ namespace YhCore.WebApi.Controllers.Api.DocPrint
/// 添加印制版面。
[HttpPost("AddYZBM")]
- public async Task AddYZBM([FromBody] Common_Dictionary model)
+ public async Task AddYZBM([FromForm] Common_Dictionary model)
{
if (model == null) throw new DException("参数错误!");
model.Schserid = SchSerID();
@@ -80,18 +80,20 @@ namespace YhCore.WebApi.Controllers.Api.DocPrint
[FromQuery] bool showAll = false)
=> await _classify.DictionaryTypeListAsync(SchSerID(), name, showAll, typeID);
- /// 添加公共类别(复用字典添加逻辑)。
+ /// 添加公共类别(复用字典添加逻辑)。前端 api/index.js 固定以 x-www-form-urlencoded 提交
+ /// (TypeId/Name/typeName 表单字段,大小写不敏感绑定到 typeID/Name/typeName),故用 [FromForm]——
+ /// [FromForm] 会因 Content-Type 不符返回 415。
[HttpPost("AddDictionaryType")]
- public async Task AddDictionaryType([FromBody] Common_Dictionary model)
+ public async Task AddDictionaryType([FromForm] Common_Dictionary model)
{
if (model == null) throw new DException("参数错误!");
model.Schserid = SchSerID();
await _dict.AddDicAsync(model);
}
- /// 编辑公共类别(旧调 GetSysDict.EditDic)。
+ /// 编辑公共类别(旧调 GetSysDict.EditDic)。同 AddDictionaryType:前端表单编码提交,[FromForm] 绑定。
[HttpPost("EditDictionaryType")]
- public async Task EditDictionaryType([FromBody] Common_Dictionary model)
+ public async Task EditDictionaryType([FromForm] Common_Dictionary model)
{
if (model == null) throw new DException("参数有误!");
model.Schserid = SchSerID();
@@ -169,7 +171,7 @@ namespace YhCore.WebApi.Controllers.Api.DocPrint
/// 添加文印(旧 Create;短信/待办推送已降级为纯落库)。
[HttpPost("Create")]
- public async Task Create([FromBody] WYDocPrintSaveDto model)
+ public async Task Create([FromForm] WYDocPrintSaveDto model)
{
if (model == null) throw new DException("参数错误!");
model.UserID = UserId();
@@ -179,7 +181,7 @@ namespace YhCore.WebApi.Controllers.Api.DocPrint
/// 修改文印(旧 Edit)。
[HttpPost("Edit")]
- public async Task Edit([FromBody] WYDocPrintSaveDto model)
+ public async Task Edit([FromForm] WYDocPrintSaveDto model)
{
if (model == null) throw new DException("参数错误!");
model.UserID = UserId();
@@ -189,7 +191,7 @@ namespace YhCore.WebApi.Controllers.Api.DocPrint
/// 撤销(旧 Revoke)。
[HttpPost("Revoke")]
- public async Task Revoke([FromBody] FlowTranctDto model)
+ public async Task Revoke([FromForm] FlowTranctDto model)
{
if (model == null) throw new DException("参数错误!");
model.actionuserid = UserContextHolder.Current?.Id;
@@ -259,7 +261,7 @@ namespace YhCore.WebApi.Controllers.Api.DocPrint
/// 审核确认(旧 shenheok)。
[HttpPost("shenheok")]
- public async Task ShenheOk([FromBody] FlowTranctDto model)
+ public async Task ShenheOk([FromForm] FlowTranctDto model)
{
if (model == null) throw new DException("参数错误!");
model.actionuserid = UserContextHolder.Current?.Id ?? 0;
@@ -268,7 +270,7 @@ namespace YhCore.WebApi.Controllers.Api.DocPrint
/// 领取确认(旧 AffirmApplyforOk)。
[HttpPost("AffirmApplyforOk")]
- public async Task AffirmApplyforOk([FromBody] FlowTranctDto model)
+ public async Task AffirmApplyforOk([FromForm] FlowTranctDto model)
{
if (model == null) throw new DException("参数错误!");
model.actionuserid = UserContextHolder.Current?.Id ?? 0;