Browse Source

1.修改流程页面BAS009,BAS010,BAS011

2.修改异常页面PPS006,PPS007
3.新增不良现象页面PPS008,PPS009,PPS010
PTD
marvinhong 3 years ago
parent
commit
43f797be99
  1. 14
      AMESCoreStudio.Web/Controllers/BASController.cs
  2. 433
      AMESCoreStudio.Web/Controllers/PPSController.cs
  3. 131
      AMESCoreStudio.Web/HttpApis/AMES/IPPS.cs
  4. 8
      AMESCoreStudio.Web/Views/BAS/BAS009.cshtml
  5. 2
      AMESCoreStudio.Web/Views/BAS/BAS009C.cshtml
  6. 2
      AMESCoreStudio.Web/Views/BAS/BAS009U.cshtml
  7. 12
      AMESCoreStudio.Web/Views/BAS/BAS010.cshtml
  8. 4
      AMESCoreStudio.Web/Views/BAS/BAS011.cshtml
  9. 9
      AMESCoreStudio.Web/Views/Home/Framework.cshtml
  10. 6
      AMESCoreStudio.Web/Views/PPS/PPS006.cshtml
  11. 12
      AMESCoreStudio.Web/Views/PPS/PPS007.cshtml
  12. 90
      AMESCoreStudio.Web/Views/PPS/PPS008.cshtml
  13. 53
      AMESCoreStudio.Web/Views/PPS/PPS008C.cshtml
  14. 53
      AMESCoreStudio.Web/Views/PPS/PPS008U.cshtml
  15. 124
      AMESCoreStudio.Web/Views/PPS/PPS009.cshtml
  16. 58
      AMESCoreStudio.Web/Views/PPS/PPS009C.cshtml
  17. 58
      AMESCoreStudio.Web/Views/PPS/PPS009U.cshtml
  18. 169
      AMESCoreStudio.Web/Views/PPS/PPS010.cshtml
  19. 68
      AMESCoreStudio.Web/Views/PPS/PPS010C.cshtml
  20. 68
      AMESCoreStudio.Web/Views/PPS/PPS010U.cshtml
  21. 10
      AMESCoreStudio.WebApi/Controllers/AMES/ErrorClassesController.cs
  22. 225
      AMESCoreStudio.WebApi/Controllers/AMES/NGClassesController.cs
  23. 195
      AMESCoreStudio.WebApi/Controllers/AMES/NGGroupsController.cs
  24. 225
      AMESCoreStudio.WebApi/Controllers/AMES/NGReasonsController.cs
  25. 2
      AMESCoreStudio.WebApi/Controllers/BAS/FlowRulesController.cs
  26. 7
      AMESCoreStudio.WebApi/Controllers/BAS/RulesController.cs
  27. 48
      AMESCoreStudio.WebApi/Models/AMES/NGClass.cs
  28. 37
      AMESCoreStudio.WebApi/Models/AMES/NGGroup.cs
  29. 66
      AMESCoreStudio.WebApi/Models/AMES/NGReason.cs

14
AMESCoreStudio.Web/Controllers/BASController.cs

@ -117,12 +117,23 @@ namespace AMESCoreStudio.Web.Controllers
ViewBag.TestTypeList = TestTypeItems;
}
private async Task GetUnitList()
{
var result = await _basApi.GetFactoryUnits();
var UnitItems = new List<SelectListItem>();
for (int i = 0; i < result.Count; i++)
{
UnitItems.Add(new SelectListItem(result[i].UnitName, result[i].UnitNo.ToString()));
}
ViewBag.UnitList = UnitItems;
}
private async Task GetFlowRuleList()
{
var result = await _basApi.GetFlowRules();
var FlowRuleItems = new List<SelectListItem>();
FlowRuleItems.Add(new SelectListItem("全部", "0"));
for (int i = 0; i < result.Count; i++)
{
FlowRuleItems.Add(new SelectListItem(result[i].UnitNo + result[i].FlowRuleName, result[i].FlowRuleID.ToString()));
@ -172,7 +183,6 @@ namespace AMESCoreStudio.Web.Controllers
var result = await _basApi.GetFlowRulesByUnit(unit_no);
var item = new List<SelectListItem>();
item.Add(new SelectListItem("全部", "0"));
for (int i = 0; i < result.Count; i++)
{

433
AMESCoreStudio.Web/Controllers/PPSController.cs

@ -51,12 +51,11 @@ namespace AMESCoreStudio.Web.Controllers
ViewBag.SectionList = SectionList;
}
private async Task GetErrorGroupListAll()
private async Task GetErrorGroupList()
{
var result = await _ppsApi.GetErrorGroups();
var ErrorGroupList = new List<SelectListItem>();
ErrorGroupList.Add(new SelectListItem("全部", "*"));
for (int i = 0; i < result.Count; i++)
{
@ -65,56 +64,69 @@ namespace AMESCoreStudio.Web.Controllers
ViewBag.ErrorGroupList = ErrorGroupList;
}
private async Task GetErrorGroupList()
private async Task GetErrorClassList(string no)
{
var result = await _ppsApi.GetErrorGroups();
var ErrorGroupList = new List<SelectListItem>();
var result = await _ppsApi.GetErrorClassesByGroup(no);
var ErrorClassList = new List<SelectListItem>();
for (int i = 0; i < result.Count; i++)
{
ErrorGroupList.Add(new SelectListItem(result[i].GroupName, result[i].GroupNo.ToString()));
ErrorClassList.Add(new SelectListItem(result[i].ClassName, result[i].ClassNo.ToString()));
}
ViewBag.ErrorGroupList = ErrorGroupList;
ViewBag.ErrorClassList = ErrorClassList;
}
private async Task GetErrorClassListAll(string groupNo)
[HttpPost]
public async Task<JsonResult> GetErrorClassJson(string group_no)
{
var result = await _ppsApi.GetErrorClassesByGroup(groupNo);
var result = await _ppsApi.GetErrorClassesByGroup(group_no);
var ErrorClassList = new List<SelectListItem>();
ErrorClassList.Add(new SelectListItem("全部", "*"));
var item = new List<SelectListItem>();
item.Add(new SelectListItem("全部", "*"));
for (int i = 0; i < result.Count; i++)
{
ErrorClassList.Add(new SelectListItem(result[i].ClassName, result[i].ClassNo.ToString()));
item.Add(new SelectListItem(result[i].ClassName, result[i].ClassNo.ToString()));
}
ViewBag.ErrorClassList = ErrorClassList;
//将数据Json化并传到前台视图
return Json(new { data = item });
}
private async Task GetErrorClassList(string no)
private async Task GetNGGroupList()
{
var result = await _ppsApi.GetErrorClassesByGroup(no);
var result = await _ppsApi.GetNGGroups();
var ErrorClassList = new List<SelectListItem>();
var NGGroupList = new List<SelectListItem>();
for (int i = 0; i < result.Count; i++)
{
ErrorClassList.Add(new SelectListItem(result[i].ClassName, result[i].ClassNo.ToString()));
NGGroupList.Add(new SelectListItem(result[i].NGGroupName, result[i].NGGroupNo.ToString()));
}
ViewBag.ErrorClassList = ErrorClassList;
ViewBag.NGGroupList = NGGroupList;
}
private async Task GetNGClassList(string no)
{
var result = await _ppsApi.GetNGClassesByGroup(no);
var NGClassList = new List<SelectListItem>();
for (int i = 0; i < result.Count; i++)
{
NGClassList.Add(new SelectListItem(result[i].NGClassName, result[i].NGClassNo.ToString()));
}
ViewBag.NGClassList = NGClassList;
}
[HttpPost]
public async Task<JsonResult> GetErrorClassJson(string group_no)
public async Task<JsonResult> GetNGClassJson(string group_no)
{
var result = await _ppsApi.GetErrorClassesByGroup(group_no);
var result = await _ppsApi.GetNGClassesByGroup(group_no);
var item = new List<SelectListItem>();
item.Add(new SelectListItem("全部", "*"));
for (int i = 0; i < result.Count; i++)
{
item.Add(new SelectListItem(result[i].ClassName, result[i].ClassNo.ToString()));
item.Add(new SelectListItem(result[i].NGClassName, result[i].NGClassNo.ToString()));
}
//将数据Json化并传到前台视图
return Json(new { data = item });
@ -444,7 +456,7 @@ namespace AMESCoreStudio.Web.Controllers
public async Task<IActionResult> PPS006()
{
await GetErrorGroupListAll();
await GetErrorGroupList();
return View();
}
@ -569,8 +581,8 @@ namespace AMESCoreStudio.Web.Controllers
public async Task<IActionResult> PPS007(string groupNo)
{
await GetErrorGroupListAll();
await GetErrorClassListAll(groupNo);
await GetErrorGroupList();
await GetErrorClassList(groupNo);
return View();
}
@ -684,7 +696,7 @@ namespace AMESCoreStudio.Web.Controllers
[HttpGet]
public async Task<IActionResult> GetErrorReasonsByClassAsync(string errorClassNo)
{
if (errorClassNo == null || errorClassNo == "0")
if (errorClassNo == null)
{
errorClassNo = "*";
}
@ -700,5 +712,374 @@ namespace AMESCoreStudio.Web.Controllers
#endregion
#region PPS008不良現象群組維護相關
public IActionResult PPS008()
{
return View();
}
//新增頁面
public IActionResult PPS008C()
{
return View();
}
//修改页面
[HttpGet]
public async Task<IActionResult> PPS008UAsync(string id)
{
var result = await _ppsApi.GetNGGroup(id);
if (result.Count == 0)
{
return View();
}
return View(result[0]);
}
public async Task<IActionResult> PPS008DAsync(string id)
{
var result = await _ppsApi.DeleteNGGroup(id);
return Json(new Result() { success = true, msg = "" });
}
//頁面提交,id=0 添加,id>0 修改
[HttpPost]
public async Task<IActionResult> PPS008CSaveAsync(NGGroup model)
{
if (ModelState.IsValid)
{
IResultModel result;
result = await _ppsApi.PostNGGroup(JsonConvert.SerializeObject(model));
if (result.Success)
{
var _msg = "添加成功!";
return RedirectToAction("Refresh", "Home", new { msg = _msg });
}
else
{
if (result.Errors.Count > 0)
{
ModelState.AddModelError(result.Errors[0].Id, result.Errors[0].Msg);
}
else
{
ModelState.AddModelError("error", result.Msg);
}
}
}
return View("PPS008C", model);
}
public async Task<IActionResult> PPS008USaveAsync(NGGroup model)
{
if (ModelState.IsValid)
{
IResultModel result;
result = await _ppsApi.PutNGGroup(model.NGGroupNo, JsonConvert.SerializeObject(model));
if (result.Success)
{
var _msg = "修改成功!";
return RedirectToAction("Refresh", "Home", new { msg = _msg });
}
else
{
if (result.Errors.Count > 0)
{
ModelState.AddModelError(result.Errors[0].Id, result.Errors[0].Msg);
}
else
{
ModelState.AddModelError("error", result.Msg);
}
}
}
return View("PPS008U", model);
}
[ResponseCache(Duration = 0)]
[HttpGet]
public async Task<IActionResult> GetNGGroupsAsync(int page = 1, int limit = 10)
{
var result_total = await _ppsApi.GetNGGroups(page, limit);
var result = await _ppsApi.GetNGGroups(page, limit);
if (result.Count > 0)
{
return Json(new Table() { code = 0, msg = "", data = result, count = result_total.Count });
}
return Json(new Table() { count = 0, data = null });
}
#endregion
#region PPS009異常類別維護相關
public async Task<IActionResult> PPS009()
{
await GetNGGroupList();
return View();
}
//新增頁面
public async Task<IActionResult> PPS009C(string id)
{
await GetNGGroupList();
var model = new NGClass();
if (id != null)
{
if (id != "")
{
model.NGGroupNo = id;
}
}
return View(model);
}
//修改页面
[HttpGet]
public async Task<IActionResult> PPS009UAsync(string id)
{
await GetNGGroupList();
var result = await _ppsApi.GetNGClass(id);
if (result.Count == 0)
{
return View();
}
return View(result[0]);
}
public async Task<IActionResult> PPS009DAsync(string id)
{
var result = await _ppsApi.DeleteNGClass(id);
return Json(new Result() { success = true, msg = "" });
}
//頁面提交,id=0 添加,id>0 修改
[HttpPost]
public async Task<IActionResult> PPS009CSaveAsync(NGClass model)
{
if (ModelState.IsValid)
{
IResultModel result;
result = await _ppsApi.PostNGClass(JsonConvert.SerializeObject(model));
if (result.Success)
{
var _msg = "添加成功!";
return RedirectToAction("Refresh", "Home", new { msg = _msg });
}
else
{
if (result.Errors.Count > 0)
{
ModelState.AddModelError(result.Errors[0].Id, result.Errors[0].Msg);
}
else
{
ModelState.AddModelError("error", result.Msg);
}
}
}
return View("PPS009C", model);
}
public async Task<IActionResult> PPS009USaveAsync(NGClass model)
{
if (ModelState.IsValid)
{
IResultModel result;
result = await _ppsApi.PutNGClass(model.NGClassNo, JsonConvert.SerializeObject(model));
if (result.Success)
{
var _msg = "修改成功!";
return RedirectToAction("Refresh", "Home", new { msg = _msg });
}
else
{
if (result.Errors.Count > 0)
{
ModelState.AddModelError(result.Errors[0].Id, result.Errors[0].Msg);
}
else
{
ModelState.AddModelError("error", result.Msg);
}
}
}
return View("PPS009U", model);
}
[ResponseCache(Duration = 0)]
[HttpGet]
public async Task<IActionResult> GetNGClassesByGroupAsync(string ngGroupNo, int page = 1, int limit = 10)
{
if (ngGroupNo == null)
{
ngGroupNo = "*";
}
var result = await _ppsApi.GetNGClassesByGroup(ngGroupNo, page, limit);
var result_total = await _ppsApi.GetNGClassesByGroup(ngGroupNo, 0, limit);
if (result.Count > 0)
{
return Json(new Table() { code = 0, msg = "", data = result, count = result_total.Count });
}
return Json(new Table() { count = 0, data = null });
}
#endregion
#region PPS007異常原因維護相關
public async Task<IActionResult> PPS010(string groupNo)
{
await GetNGGroupList();
await GetNGClassList(groupNo);
return View();
}
//新增頁面
public async Task<IActionResult> PPS010C(string id)
{
string[] param = id.Split(',');
await GetNGClassList(param[1]);
await GetResponseDeptList();
var model = new NGReason();
if (id != null)
{
if (id != "")
{
model.NGClassNo = id;
}
}
return View(model);
}
//修改页面
[HttpGet]
public async Task<IActionResult> PPS010UAsync(string id)
{
string[] param = id.Split(',');
await GetNGClassList(param[1]);
await GetResponseDeptList();
var result = await _ppsApi.GetNGReason(param[0]);
if (result.Count == 0)
{
return View();
}
return View(result[0]);
}
public async Task<IActionResult> PPS010DAsync(string id)
{
var result = await _ppsApi.DeleteNGReason(id);
return Json(new Result() { success = true, msg = "" });
}
//頁面提交,id=0 添加,id>0 修改
[HttpPost]
public async Task<IActionResult> PPS010CSaveAsync(NGReason model)
{
if (ModelState.IsValid)
{
IResultModel result;
result = await _ppsApi.PostNGReason(JsonConvert.SerializeObject(model));
if (result.Success)
{
var _msg = "添加成功!";
return RedirectToAction("Refresh", "Home", new { msg = _msg });
}
else
{
if (result.Errors.Count > 0)
{
ModelState.AddModelError(result.Errors[0].Id, result.Errors[0].Msg);
}
else
{
ModelState.AddModelError("error", result.Msg);
}
}
}
return View("PPS010C", model);
}
public async Task<IActionResult> PPS010USaveAsync(NGReason model)
{
if (ModelState.IsValid)
{
IResultModel result;
result = await _ppsApi.PutNGReason(model.NGReasonNo, JsonConvert.SerializeObject(model));
if (result.Success)
{
var _msg = "修改成功!";
return RedirectToAction("Refresh", "Home", new { msg = _msg });
}
else
{
if (result.Errors.Count > 0)
{
ModelState.AddModelError(result.Errors[0].Id, result.Errors[0].Msg);
}
else
{
ModelState.AddModelError("error", result.Msg);
}
}
}
return View("PPS010U", model);
}
[ResponseCache(Duration = 0)]
[HttpGet]
public async Task<IActionResult> GetNGReasonsByClassAsync(string ngClassNo, int page = 1, int limit = 10)
{
if (ngClassNo == null || ngClassNo == "0")
{
ngClassNo = "*";
}
var result_total = await _ppsApi.GetNGReasonsByClass(ngClassNo, 0, limit);
var result = await _ppsApi.GetNGReasonsByClass(ngClassNo, page,limit);
if (result.Count > 0)
{
return Json(new Table() { code = 0, msg = "", data = result, count = result_total.Count });
}
return Json(new Table() { count = 0, data = null });
}
#endregion
}
}

131
AMESCoreStudio.Web/HttpApis/AMES/IPPS.cs

@ -220,5 +220,136 @@ namespace AMESCoreStudio.Web
ITask<List<ErrorReason>> GetErrorReasonsByClass(string no);
#endregion
#region PPS008 不良現象群組維護
/// <summary>
/// 新增不良現象群組
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpPost("api/NGGroups")]
ITask<ResultModel<ErrorGroup>> PostNGGroup([FromBody, RawJsonContent] string model);
/// <summary>
/// 更新不良現象群組
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpPut("api/NGGroups/{id}")]
ITask<ResultModel<ErrorGroup>> PutNGGroup(string id, [FromBody, RawJsonContent] string model);
/// <summary>
/// 刪除不良現象群組
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpDelete("api/NGGroups/{id}")]
ITask<ResultModel<NGGroup>> DeleteNGGroup(string id);
/// <summary>
/// 根據ID獲取指定不良現象群組資料
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/NGGroups/{id}")]
ITask<List<NGGroup>> GetNGGroup(string id);
/// <summary>
/// 獲取不良現象群組資料
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/NGGroups")]
ITask<List<NGGroup>> GetNGGroups(int page = 1, int limit = 10);
#endregion
#region PPS009 不良現象類別維護
/// <summary>
/// 新增不良現象類別
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpPost("api/NGClasses")]
ITask<ResultModel<NGClass>> PostNGClass([FromBody, RawJsonContent] string model);
/// <summary>
/// 更新不良現象類別
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpPut("api/NGClasses/{id}")]
ITask<ResultModel<NGClass>> PutNGClass(string id, [FromBody, RawJsonContent] string model);
/// <summary>
/// 刪除不良現象類別
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpDelete("api/NGClasses/{id}")]
ITask<ResultModel<NGClass>> DeleteNGClass(string id);
/// <summary>
/// 根據ID獲取指定不良現象類別資料
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/NGClasses/{id}")]
ITask<List<NGClass>> GetNGClass(string id);
/// <summary>
/// 獲取不良現象類別資料
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/NGClasses")]
ITask<List<NGClass>> GetNGClasses();
/// <summary>
/// 根据群組代碼獲取不良現象類別資料
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/NGClasses/Group/{no}")]
ITask<List<NGClass>> GetNGClassesByGroup(string no, int page = 1, int limit = 10);
#endregion
#region PPS010 不良現象原因維護
/// <summary>
/// 新增不良現象原因
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpPost("api/NGReasons")]
ITask<ResultModel<NGReason>> PostNGReason([FromBody, RawJsonContent] string model);
/// <summary>
/// 更新不良現象原因
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpPut("api/NGReasons/{id}")]
ITask<ResultModel<NGReason>> PutNGReason(string id, [FromBody, RawJsonContent] string model);
/// <summary>
/// 刪除不良現象原因
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpDelete("api/NGReasons/{id}")]
ITask<ResultModel<NGReason>> DeleteNGReason(string id);
/// <summary>
/// 根據ID獲取指定不良現象原因資料
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/NGReasons/{id}")]
ITask<List<NGReason>> GetNGReason(string id);
/// <summary>
/// 獲取不良現象原因資料
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/NGReasons")]
ITask<List<NGReason>> GetNGReasons();
/// <summary>
/// 根据類別代碼獲取不良現象原因資料
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/NGReasons/Class/{no}")]
ITask<List<NGReason>> GetNGReasonsByClass(string no, int page = 1, int limit = 10);
#endregion
}
}

8
AMESCoreStudio.Web/Views/BAS/BAS009.cshtml

@ -35,10 +35,11 @@
<div class="layui-inline">
<label class="layui-form-label">請選擇製程</label>
<div class="layui-input-inline">
<select id="unit" lay-filter="unit" lay-verify="required" lay-submit asp-items="@ViewBag.FactoryUnit">
<select id="unit" lay-filter="unit" lay-verify="required" lay-submit asp-items="@ViewBag.UnitList">
<option value="*">全部</option>
</select>
</div>
<input id="unitNo" type="hidden" name="unitNo" value="0" />
<input id="unitNo" type="hidden" name="unitNo" value="*" />
</div>
<div class="layui-inline layui-show-xs-block">
<button class="layui-btn layui-btn-sm layui-btn-normal" lay-submit lay-filter="querysubmit">
@ -63,9 +64,6 @@
var qs = $('button[lay-filter="querysubmit"]');
qs.click();
hg.msghide("刷新数据!");
table && table.reload();
});
});

2
AMESCoreStudio.Web/Views/BAS/BAS009C.cshtml

@ -18,7 +18,7 @@
<div class="form-group form-inline my-sm-1">
<label asp-for="UnitNo" class="control-label col-sm-3"></label>
<select asp-for="UnitNo" asp-items="@ViewBag.FactoryUnit" class="custom-select col-sm-9"></select>
<select asp-for="UnitNo" asp-items="@ViewBag.UnitList" class="custom-select col-sm-9"></select>
<span asp-validation-for="UnitNo" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">

2
AMESCoreStudio.Web/Views/BAS/BAS009U.cshtml

@ -21,7 +21,7 @@
<div class="form-group form-inline my-sm-1">
<label asp-for="UnitNo" class="control-label col-sm-3"></label>
<select asp-for="UnitNo" asp-items="@ViewBag.FactoryUnit" class="custom-select col-sm-9"></select>
<select asp-for="UnitNo" asp-items="@ViewBag.UnitList" class="custom-select col-sm-9"></select>
<span asp-validation-for="UnitNo" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">

12
AMESCoreStudio.Web/Views/BAS/BAS010.cshtml

@ -35,13 +35,15 @@
<div class="layui-inline">
<label class="layui-form-label">請選擇製程</label>
<div class="layui-input-inline">
<select id="unit" lay-filter="unit" lay-verify="required" lay-submit asp-items="@ViewBag.FactoryUnit">
<select id="unit" lay-filter="unit" lay-verify="required" lay-submit asp-items="@ViewBag.UnitList">
<option value="*">全部</option>
</select>
</div>
<input id="unitNo" type="hidden" name="unitNo" value="0" />
<input id="unitNo" type="hidden" name="unitNo" value="*" />
<label class="layui-form-label">請選擇流程</label>
<div class="layui-input-inline">
<select id="flow" lay-filter="flow" lay-verify="required" lay-submit asp-items="@ViewBag.FlowRuleList">
<option value="0">全部</option>
</select>
</div>
<input id="flowId" type="hidden" name="flowId" value="0" />
@ -97,9 +99,6 @@
var qs = $('button[lay-filter="querysubmit"]');
qs.click();
hg.msghide("刷新数据!");
table && table.reload();
});
form.on('select(flow)', function (data) {
@ -107,9 +106,6 @@
var qs = $('button[lay-filter="querysubmit"]');
qs.click();
hg.msghide("刷新数据!");
table && table.reload();
});
});

4
AMESCoreStudio.Web/Views/BAS/BAS011.cshtml

@ -36,6 +36,7 @@
<label class="layui-form-label">請選擇流程</label>
<div class="layui-input-inline">
<select id="flow" lay-filter="flow" lay-verify="required" lay-submit asp-items="@ViewBag.FlowRuleList">
<option value="0">全部</option>
</select>
</div>
<input id="flowId" type="hidden" name="flowId" value="0" />
@ -63,9 +64,6 @@
var qs = $('button[lay-filter="querysubmit"]');
qs.click();
hg.msghide("刷新数据!");
table && table.reload();
});
});

9
AMESCoreStudio.Web/Views/Home/Framework.cshtml

@ -180,6 +180,15 @@
<li class="sub-tab" hg-title="異常原因維護" hg-nav="/PPS/PPS007">
<a><i class="fa fa-comment-o fa-fw"></i><cite>異常原因維護</cite></a>
</li>
<li class="sub-tab" hg-title="不良現象群組維護" hg-nav="/PPS/PPS008">
<a><i class="fa fa-comment-o fa-fw"></i><cite>不良現象群組維護</cite></a>
</li>
<li class="sub-tab" hg-title="不良現象類別維護" hg-nav="/PPS/PPS009">
<a><i class="fa fa-comment-o fa-fw"></i><cite>不良現象類別維護</cite></a>
</li>
<li class="sub-tab" hg-title="不良現象原因維護" hg-nav="/PPS/PPS010">
<a><i class="fa fa-comment-o fa-fw"></i><cite>不良現象原因維護</cite></a>
</li>
</ul>
</li>
<li>

6
AMESCoreStudio.Web/Views/PPS/PPS006.cshtml

@ -14,9 +14,10 @@
<label class="layui-form-label">請選擇群組</label>
<div class="layui-input-inline">
<select id="errorGroup" lay-filter="errorGroup" lay-verify="required" lay-submit asp-items="@ViewBag.ErrorGroupList">
<option value="*">全部</option>
</select>
</div>
<input id="errorGroupNo" type="hidden" name="errorGroupNo" value="0" />
<input id="errorGroupNo" type="hidden" name="errorGroupNo" value="*" />
</div>
<div class="layui-inline layui-show-xs-block">
<button class="layui-btn layui-btn-sm layui-btn-normal" lay-submit lay-filter="querysubmit">
@ -42,9 +43,6 @@
var qs = $('button[lay-filter="querysubmit"]');
qs.click();
hg.msghide("刷新数据!");
table && table.reload();
});
});

12
AMESCoreStudio.Web/Views/PPS/PPS007.cshtml

@ -14,15 +14,17 @@
<label class="layui-form-label">請選擇群組</label>
<div class="layui-input-inline">
<select id="errorGroup" lay-filter="errorGroup" lay-verify="required" lay-submit asp-items="@ViewBag.ErrorGroupList">
<option value="*">全部</option>
</select>
</div>
<input id="errorGroupNo" type="hidden" name="errorGroupNo" value="0" />
<input id="errorGroupNo" type="hidden" name="errorGroupNo" value="*" />
<label class="layui-form-label">請選擇類別</label>
<div class="layui-input-inline">
<select id="errorClass" lay-filter="errorClass" lay-verify="required" lay-submit asp-items="@ViewBag.ErrorClassList">
<option value="*">全部</option>
</select>
</div>
<input id="errorClassNo" type="hidden" name="errorClassNo" value="0" />
<input id="errorClassNo" type="hidden" name="errorClassNo" value="*" />
</div>
<div class="layui-inline layui-show-xs-block">
<button class="layui-btn layui-btn-sm layui-btn-normal" lay-submit lay-filter="querysubmit">
@ -77,9 +79,6 @@
var qs = $('button[lay-filter="querysubmit"]');
qs.click();
hg.msghide("刷新数据!");
table && table.reload();
});
form.on('select(errorClass)', function (data) {
@ -87,9 +86,6 @@
var qs = $('button[lay-filter="querysubmit"]');
qs.click();
hg.msghide("刷新数据!");
table && table.reload();
});
});

90
AMESCoreStudio.Web/Views/PPS/PPS008.cshtml

@ -0,0 +1,90 @@
@{
ViewData["Title"] = "不良現象群組維護";
Layout = "~/Views/Shared/_AMESLayout.cshtml";
}
<div class="layui-card">
<div class="layui-card-header">
<div class="layui-form">
<div class="layui-form-item ">
<div class="layui-inline"><i class="fa fa-file-text-o fa-fw"></i> @ViewBag.Title</div>
</div>
</div>
</div>
<div class="layui-card-body">
<table class="layui-hide" id="test" lay-filter="test"></table>
</div>
</div>
@section Scripts{
<script type="text/javascript">
//监听表单提交事件
hg.form.onsubmit('querysubmit', function (data) {
table && table.reload(data);
});
var tableCols = [[
{
field: 'ngGroupNo',
width: 200,
title: '不良現象群組代碼'
},
{
field: 'ngGroupName',
title: '不良現象群組名稱'
},
{
field: 'right',
width: 200,
title: '操作',
fixed: 'right',
templet: function (d) {
return '<a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-edit" lay-event="edit">修改</a> <a class="layui-btn layui-btn-danger layui-btn-xs layui-icon layui-icon-delete" lay-event="del">删除</a>'
}
}]
];
//通过行tool编辑,lay-event="edit"
function edit(obj) {
if (obj.data.ngGroupNo) {
hg.open('修改不良現象群組', '/PPS/PPS008U/' + obj.data.ngGroupNo, 800,320);
}
}
//通过行tool删除,lay-event="del"
function del(obj) {
if (obj.data.ngGroupNo) {
hg.confirm("不良現象群組:" + obj.data.ngGroupName + ",确定要删除吗?", function () {
$.ajax({
url: '/PPS/PPS008D',
data: { id: obj.data.ngGroupNo },
type: 'POST',
success: function (data) {
if (data.success) {
obj.del(); //只删本地数据
hg.msghide("删除成功!");
}
else {
hg.msg(data.msg);
}
},
error: function () {
hg.msg("网络请求失败!");
}
});
});
}
}
var toolbar = [{
text: '新增',
layuiicon: '&#xe608;',
class: 'layui-btn-normal',
handler: function () {
hg.open('新增不良現象群組', '/PPS/PPS008C', 800, 320);
}
}
];
//基本数据表格
var table = hg.table.datatable('test', '不良現象群組維護', '/PPS/GetNGGroups', {}, tableCols, toolbar, true, 'full-100', ['filter', 'print', 'exports']);
</script>
}

53
AMESCoreStudio.Web/Views/PPS/PPS008C.cshtml

@ -0,0 +1,53 @@
@model AMESCoreStudio.WebApi.Models.AMES.NGGroup
@{ ViewData["Title"] = "PPS008C";
Layout = "~/Views/Shared/_FormLayout.cshtml"; }
<style>
.control-label {
justify-content: flex-end !important;
}
</style>
<div class="row">
<div class="col-sm-12">
<form enctype="multipart/form-data" method="post" asp-action="PPS008CSave">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group form-inline my-sm-1">
<label asp-for="NGGroupNo" class="control-label col-sm-3"></label>
<input asp-for="NGGroupNo" class="form-control col-sm-9" placeholder="請輸入不良現象群組代碼" />
<span asp-validation-for="NGGroupNo" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="NGGroupName" class="control-label col-sm-3"></label>
<input asp-for="NGGroupName" class="form-control col-sm-9" placeholder="請輸入不良現象群組名稱" />
<span asp-validation-for="NGGroupName" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<span style="color: firebrick;word-break: break-all;" class="text-danger offset-sm-3">@Html.ValidationMessage("error")</span>
<div class="form-group">
<input type="submit" value="保存" class="btn btn-primary offset-sm-3" />
</div>
</form>
</div>
</div>
@section Scripts {
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial");
await Html.RenderPartialAsync("_FileinputScriptsPartial"); }
<script type="text/javascript">
$(document).ready(function () {
var error = '@Html.ValidationMessage("error")';
if ($(error).text() != '') {
parent.hg.msg(error);
}
});
</script>
}

53
AMESCoreStudio.Web/Views/PPS/PPS008U.cshtml

@ -0,0 +1,53 @@
@model AMESCoreStudio.WebApi.Models.AMES.NGGroup
@{ ViewData["Title"] = "PPS008U";
Layout = "~/Views/Shared/_FormLayout.cshtml"; }
<style>
.control-label {
justify-content: flex-end !important;
}
</style>
<div class="row">
<div class="col-sm-12">
<form enctype="multipart/form-data" method="post" asp-action="PPS008USave">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group form-inline my-sm-1">
<label asp-for="NGGroupNo" class="control-label col-sm-3"></label>
<input asp-for="NGGroupNo" class="form-control col-sm-9" readonly="readonly" />
<span asp-validation-for="NGGroupNo" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="NGGroupName" class="control-label col-sm-3"></label>
<input asp-for="NGGroupName" class="form-control col-sm-9" placeholder="請輸入不良現象群組名稱" />
<span asp-validation-for="NGGroupName" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<span style="color: firebrick;word-break: break-all;" class="text-danger offset-sm-3">@Html.ValidationMessage("error")</span>
<div class="form-group">
<input type="submit" value="保存" class="btn btn-primary offset-sm-3" />
</div>
</form>
</div>
</div>
@section Scripts {
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial");
await Html.RenderPartialAsync("_FileinputScriptsPartial"); }
<script type="text/javascript">
$(document).ready(function () {
var error = '@Html.ValidationMessage("error")';
if ($(error).text() != '') {
parent.hg.msg(error);
}
});
</script>
}

124
AMESCoreStudio.Web/Views/PPS/PPS009.cshtml

@ -0,0 +1,124 @@
@{
ViewData["Title"] = "不良現象類別維護";
Layout = "~/Views/Shared/_AMESLayout.cshtml";
}
<div class="layui-card">
<div class="layui-card-header">
<div class="layui-form">
<div class="layui-form-item ">
<div class="layui-inline"><i class="fa fa-file-text-o fa-fw"></i> @ViewBag.Title</div>
</div>
<div class="layui-form-item layui-layout-left">
<div class="layui-inline">
<label class="layui-form-label">請選擇群組</label>
<div class="layui-input-inline">
<select id="ngGroup" lay-filter="ngGroup" lay-verify="required" lay-submit asp-items="@ViewBag.NGGroupList">
<option value="*">全部</option>
</select>
</div>
<input id="ngGroupNo" type="hidden" name="ngGroupNo" value="*" />
</div>
<div class="layui-inline layui-show-xs-block">
<button class="layui-btn layui-btn-sm layui-btn-normal" lay-submit lay-filter="querysubmit">
<i class="layui-icon layui-icon-sm">&#xe615;</i>
</button>
</div>
</div>
</div>
</div>
<div class="layui-card-body">
<table class="layui-hide" id="test" lay-filter="test"></table>
</div>
</div>
@section Scripts{
<script type="text/javascript">
layui.use(['form', 'layer'], function () {
form = layui.form;
form.on('select(ngGroup)', function (data) {
$("#ngGroupNo").val(data.value);
var qs = $('button[lay-filter="querysubmit"]');
qs.click();
});
});
//监听表单提交事件
hg.form.onsubmit('querysubmit', function (data) {
table && table.reload(data);
});
var tableCols = [[
{
field: 'ngClassNo',
width: 200,
title: '不良現象類別代碼'
},
{
field: 'ngGroupNo',
width: 200,
title: '不良現象群組代碼'
},
{
field: 'ngClassName',
title: '不良現象類別名稱'
},
{
field: 'right',
width: 200,
title: '操作',
fixed: 'right',
templet: function (d) {
return '<a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-edit" lay-event="edit">修改</a> <a class="layui-btn layui-btn-danger layui-btn-xs layui-icon layui-icon-delete" lay-event="del">删除</a>'
}
}]
];
//通过行tool编辑,lay-event="edit"
function edit(obj) {
if (obj.data.ngClassNo) {
hg.open('修改不良現象類別', '/PPS/PPS009U/' + obj.data.ngClassNo, 800,320);
}
}
//通过行tool删除,lay-event="del"
function del(obj) {
if (obj.data.ngClassNo) {
hg.confirm("不良現象類別:" + obj.data.ngClassName + ",确定要删除吗?", function () {
$.ajax({
url: '/PPS/PPS009D',
data: { id: obj.data.ngClassNo },
type: 'POST',
success: function (data) {
if (data.success) {
obj.del(); //只删本地数据
hg.msghide("删除成功!");
}
else {
hg.msg(data.msg);
}
},
error: function () {
hg.msg("网络请求失败!");
}
});
});
}
}
var toolbar = [{
text: '新增',
layuiicon: '&#xe608;',
class: 'layui-btn-normal',
handler: function () {
var id = ngGroupNo.value;
hg.open('新增不良現象類別', '/PPS/PPS009C/' + id, 800, 320);
}
}
];
//基本数据表格
var table = hg.table.datatable('test', '不良現象類別維護', '/PPS/GetNGClassesByGroup/' + ngGroupNo.value, {}, tableCols, toolbar, true, 'full-100', ['filter', 'print', 'exports']);
</script>
}

58
AMESCoreStudio.Web/Views/PPS/PPS009C.cshtml

@ -0,0 +1,58 @@
@model AMESCoreStudio.WebApi.Models.AMES.NGClass
@{ ViewData["Title"] = "PPS009C";
Layout = "~/Views/Shared/_FormLayout.cshtml"; }
<style>
.control-label {
justify-content: flex-end !important;
}
</style>
<div class="row">
<div class="col-sm-12">
<form enctype="multipart/form-data" method="post" asp-action="PPS009CSave">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group form-inline my-sm-1">
<label asp-for="NGClassNo" class="control-label col-sm-3"></label>
<input asp-for="NGClassNo" class="form-control col-sm-9" placeholder="請輸入不良現象類別代碼" />
<span asp-validation-for="NGClassNo" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="NGGroupNo" class="control-label col-sm-3"></label>
<select asp-for="NGGroupNo" asp-items="@ViewBag.NGGroupList" class="custom-select col-sm-9"></select>
<span asp-validation-for="NGGroupNo" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="NGClassName" class="control-label col-sm-3"></label>
<input asp-for="NGClassName" class="form-control col-sm-9" placeholder="請輸入不良現象類別名稱" />
<span asp-validation-for="NGClassName" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<span style="color: firebrick;word-break: break-all;" class="text-danger offset-sm-3">@Html.ValidationMessage("error")</span>
<div class="form-group">
<input type="submit" value="保存" class="btn btn-primary offset-sm-3" />
</div>
</form>
</div>
</div>
@section Scripts {
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial");
await Html.RenderPartialAsync("_FileinputScriptsPartial"); }
<script type="text/javascript">
$(document).ready(function () {
var error = '@Html.ValidationMessage("error")';
if ($(error).text() != '') {
parent.hg.msg(error);
}
});
</script>
}

58
AMESCoreStudio.Web/Views/PPS/PPS009U.cshtml

@ -0,0 +1,58 @@
@model AMESCoreStudio.WebApi.Models.AMES.NGClass
@{ ViewData["Title"] = "PPS009U";
Layout = "~/Views/Shared/_FormLayout.cshtml"; }
<style>
.control-label {
justify-content: flex-end !important;
}
</style>
<div class="row">
<div class="col-sm-12">
<form enctype="multipart/form-data" method="post" asp-action="PPS009USave">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group form-inline my-sm-1">
<label asp-for="NGClassNo" class="control-label col-sm-3"></label>
<input asp-for="NGClassNo" class="form-control col-sm-9" placeholder="請輸入不良現象類別代碼" readonly="readonly" />
<span asp-validation-for="NGClassNo" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="NGGroupNo" class="control-label col-sm-3"></label>
<select asp-for="NGGroupNo" asp-items="@ViewBag.NGGroupList" class="custom-select col-sm-9"></select>
<span asp-validation-for="NGGroupNo" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="NGClassName" class="control-label col-sm-3"></label>
<input asp-for="NGClassName" class="form-control col-sm-9" placeholder="請輸入不良現象類別名稱" />
<span asp-validation-for="NGClassName" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<span style="color: firebrick;word-break: break-all;" class="text-danger offset-sm-3">@Html.ValidationMessage("error")</span>
<div class="form-group">
<input type="submit" value="保存" class="btn btn-primary offset-sm-3" />
</div>
</form>
</div>
</div>
@section Scripts {
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial");
await Html.RenderPartialAsync("_FileinputScriptsPartial"); }
<script type="text/javascript">
$(document).ready(function () {
var error = '@Html.ValidationMessage("error")';
if ($(error).text() != '') {
parent.hg.msg(error);
}
});
</script>
}

169
AMESCoreStudio.Web/Views/PPS/PPS010.cshtml

@ -0,0 +1,169 @@
@{
ViewData["Title"] = "不良現象原因維護";
Layout = "~/Views/Shared/_AMESLayout.cshtml";
}
<div class="layui-card">
<div class="layui-card-header">
<div class="layui-form">
<div class="layui-form-item ">
<div class="layui-inline"><i class="fa fa-file-text-o fa-fw"></i> @ViewBag.Title</div>
</div>
<div class="layui-form-item layui-layout-left">
<div class="layui-inline">
<label class="layui-form-label">請選擇群組</label>
<div class="layui-input-inline">
<select id="ngGroup" lay-filter="ngGroup" lay-verify="required" lay-submit asp-items="@ViewBag.NGGroupList">
<option value="*">全部</option>
</select>
</div>
<input id="ngGroupNo" type="hidden" name="ngGroupNo" value="*" />
<label class="layui-form-label">請選擇類別</label>
<div class="layui-input-inline">
<select id="ngClass" lay-filter="ngClass" lay-verify="required" lay-submit asp-items="@ViewBag.NGClassList" >
<option value="*">全部</option>
</select>
</div>
<input id="ngClassNo" type="hidden" name="ngClassNo" value="*" />
</div>
<div class="layui-inline layui-show-xs-block">
<button class="layui-btn layui-btn-sm layui-btn-normal" lay-submit lay-filter="querysubmit">
<i class="layui-icon layui-icon-sm">&#xe615;</i>
</button>
</div>
</div>
</div>
</div>
<div class="layui-card-body">
<table class="layui-hide" id="test" lay-filter="test"></table>
</div>
</div>
@section Scripts{
<script type="text/javascript">
function getNGClassList(data)
{
$.ajax(
{
url: "@Url.Action("GetNGClassJson", "PPS")",
dataType: 'json',
data: { "group_no": $("#ngGroupNo").val()},
//contentType: "application/json",
type: 'post',
success: function (result)
{
console.info(result.data);
$("#ngClass").empty();//清空下拉框的值
$.each(result.data, function (index, item) {
$("#ngClass").append(new Option(item.text, item.value));// 下拉菜单里添加元素
//$("#errorClass").append($("<option>").text(item.text).val(item.value))
});
layui.form.render("select");//重新渲染 固定写法
},
error: function (result)
{
alert(result);
}
});
};
layui.use(['form', 'layer'], function () {
form = layui.form;
form.on('select(ngGroup)', function (data) {
$("#ngGroupNo").val(data.value);
getNGClassList(data.value);
var qs = $('button[lay-filter="querysubmit"]');
qs.click();
});
form.on('select(ngClass)', function (data) {
$("#ngClassNo").val(data.value);
var qs = $('button[lay-filter="querysubmit"]');
qs.click();
});
});
//监听表单提交事件
hg.form.onsubmit('querysubmit', function (data) {
table && table.reload(data);
});
var tableCols = [[
{
field: 'ngReasonNo',
width: 200,
title: '不良現象原因代碼'
},
{
field: 'ngReasonDesc',
width: 400,
title: '不良現象原因描述'
},
{
field: 'ngReasonDescEn',
title: '不良現象原因英文描述'
},
{
field: 'right',
width: 200,
title: '操作',
fixed: 'right',
templet: function (d) {
return '<a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-edit" lay-event="edit">修改</a> <a class="layui-btn layui-btn-danger layui-btn-xs layui-icon layui-icon-delete" lay-event="del">删除</a>'
}
}]
];
//通过行tool编辑,lay-event="edit"
function edit(obj) {
if (obj.data.ngReasonNo) {
var no = ngGroupNo.value;
hg.open('修改不良現象原因', '/PPS/PPS010U/' + obj.data.ngReasonNo + ',' + no, 800, 640);
}
}
//通过行tool删除,lay-event="del"
function del(obj) {
if (obj.data.ngReasonNo) {
hg.confirm("不良現象原因:" + obj.data.ngReasonDesc + ",确定要删除吗?", function () {
$.ajax({
url: '/PPS/PPS010D',
data: { id: obj.data.ngReasonNo },
type: 'POST',
success: function (data) {
if (data.success) {
obj.del(); //只删本地数据
hg.msghide("删除成功!");
}
else {
hg.msg(data.msg);
}
},
error: function () {
hg.msg("网络请求失败!");
}
});
});
}
}
var toolbar = [{
text: '新增',
layuiicon: '&#xe608;',
class: 'layui-btn-normal',
handler: function () {
var id = ngClassNo.value;
var no = ngGroupNo.value;
hg.open('新增不良現象原因', '/PPS/PPS010C/' + id + ',' + no, 800, 640);
}
}
];
//基本数据表格
var table = hg.table.datatable('test', '不良現象原因維護', '/PPS/GetNGReasonsByClass/' + ngClassNo.value, {}, tableCols, toolbar, true, 'full-100', ['filter', 'print', 'exports']);
</script>
}

68
AMESCoreStudio.Web/Views/PPS/PPS010C.cshtml

@ -0,0 +1,68 @@
@model AMESCoreStudio.WebApi.Models.AMES.NGReason
@{ ViewData["Title"] = "PPS010C";
Layout = "~/Views/Shared/_FormLayout.cshtml"; }
<style>
.control-label {
justify-content: flex-end !important;
}
</style>
<div class="row">
<div class="col-sm-12">
<form enctype="multipart/form-data" method="post" asp-action="PPS010CSave">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group form-inline my-sm-1">
<label asp-for="NGReasonNo" class="control-label col-sm-3"></label>
<input asp-for="NGReasonNo" class="form-control col-sm-9" placeholder="請輸入不良現象原因代碼" />
<span asp-validation-for="NGReasonNo" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="NGClassNo" class="control-label col-sm-3"></label>
<select asp-for="NGClassNo" asp-items="@ViewBag.NGClassList" class="custom-select col-sm-9"></select>
<span asp-validation-for="NGClassNo" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="NGReasonDesc" class="control-label col-sm-3"></label>
<input asp-for="NGReasonDesc" class="form-control col-sm-9" placeholder="請輸入不良現象原因描述" />
<span asp-validation-for="NGReasonDesc" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="NGReasonDescEn" class="control-label col-sm-3"></label>
<input asp-for="NGReasonDescEn" class="form-control col-sm-9" placeholder="請輸入不良現象原因英文描述" />
<span asp-validation-for="NGReasonDescEn" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="ResponseDept" class="control-label col-sm-3"></label>
<select asp-for="ResponseDept" asp-items="@ViewBag.ResponseDeptList" class="custom-select col-sm-9"></select>
<span asp-validation-for="ResponseDept" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<span style="color: firebrick;word-break: break-all;" class="text-danger offset-sm-3">@Html.ValidationMessage("error")</span>
<div class="form-group">
<input type="submit" value="保存" class="btn btn-primary offset-sm-3" />
</div>
</form>
</div>
</div>
@section Scripts {
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial");
await Html.RenderPartialAsync("_FileinputScriptsPartial"); }
<script type="text/javascript">
$(document).ready(function () {
var error = '@Html.ValidationMessage("error")';
if ($(error).text() != '') {
parent.hg.msg(error);
}
});
</script>
}

68
AMESCoreStudio.Web/Views/PPS/PPS010U.cshtml

@ -0,0 +1,68 @@
@model AMESCoreStudio.WebApi.Models.AMES.NGReason
@{ ViewData["Title"] = "PPS007U";
Layout = "~/Views/Shared/_FormLayout.cshtml"; }
<style>
.control-label {
justify-content: flex-end !important;
}
</style>
<div class="row">
<div class="col-sm-12">
<form enctype="multipart/form-data" method="post" asp-action="PPS010USave">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group form-inline my-sm-1">
<label asp-for="NGReasonNo" class="control-label col-sm-3"></label>
<input asp-for="NGReasonNo" class="form-control col-sm-9" placeholder="請輸入不良現象原因代碼" readonly="readonly" />
<span asp-validation-for="NGReasonNo" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="NGClassNo" class="control-label col-sm-3"></label>
<select asp-for="NGClassNo" asp-items="@ViewBag.NGClassList" class="custom-select col-sm-9"></select>
<span asp-validation-for="NGClassNo" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="NGReasonDesc" class="control-label col-sm-3"></label>
<input asp-for="NGReasonDesc" class="form-control col-sm-9" placeholder="請輸入不良現象原因描述" />
<span asp-validation-for="NGReasonDesc" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="NGReasonDescEn" class="control-label col-sm-3"></label>
<input asp-for="NGReasonDescEn" class="form-control col-sm-9" placeholder="請輸入不良現象原因英文描述" />
<span asp-validation-for="NGReasonDescEn" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="ResponseDept" class="control-label col-sm-3"></label>
<select asp-for="ResponseDept" asp-items="@ViewBag.ResponseDeptList" class="custom-select col-sm-9"></select>
<span asp-validation-for="ResponseDept" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<span style="color: firebrick;word-break: break-all;" class="text-danger offset-sm-3">@Html.ValidationMessage("error")</span>
<div class="form-group">
<input type="submit" value="保存" class="btn btn-primary offset-sm-3" />
</div>
</form>
</div>
</div>
@section Scripts {
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial");
await Html.RenderPartialAsync("_FileinputScriptsPartial"); }
<script type="text/javascript">
$(document).ready(function () {
var error = '@Html.ValidationMessage("error")';
if ($(error).text() != '') {
parent.hg.msg(error);
}
});
</script>
}

10
AMESCoreStudio.WebApi/Controllers/AMES/ErrorClassesController.cs

@ -45,13 +45,13 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
}
/// <summary>
/// 根据製程單位代碼NO獲取該製程流程資料
/// 根据異常群組代碼NO獲取該群組異常類別資料
/// </summary>
/// <param name="no"></param>
/// <returns></returns>
// GET: api/ErrorClasses/Group/S
[HttpGet("Group/{no}")]
public async Task<ActionResult<IEnumerable<ErrorClass>>> GetErrorGroupByGroup(string no)
public async Task<ActionResult<IEnumerable<ErrorClass>>> GetErrorClassByGroup(string no)
{
IQueryable<ErrorClass> q = _context.ErrorClasses;
@ -64,14 +64,14 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
}
q = q.OrderBy(p => p.GroupNo + p.ClassNo);
var errorGroup = await q.ToListAsync();
var errorClass = await q.ToListAsync();
if (errorGroup == null)
if (errorClass == null)
{
return NotFound();
}
return errorGroup;
return errorClass;
}
/// <summary>

225
AMESCoreStudio.WebApi/Controllers/AMES/NGClassesController.cs

@ -0,0 +1,225 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using AMESCoreStudio.WebApi;
using AMESCoreStudio.WebApi.Models.AMES;
using AMESCoreStudio.CommonTools.Result;
namespace AMESCoreStudio.WebApi.Controllers.AMES
{
/// <summary>
/// 不良現象類別維護
/// </summary>
[Route("api/[controller]")]
[ApiController]
public class NGClassesController : ControllerBase
{
private readonly AMESContext _context;
/// <summary>
///
/// </summary>
/// <param name="context"></param>
public NGClassesController(AMESContext context)
{
_context = context;
}
/// <summary>
///
/// </summary>
/// <returns></returns>
// GET: api/NGClasses
[HttpGet]
public async Task<ActionResult<IEnumerable<NGClass>>> GetNGClass()
{
IQueryable<NGClass> q = _context.NGClasses;
q = q.OrderBy(p => p.NGClassNo);
var ngClass = await q.ToListAsync();
return ngClass;
}
/// <summary>
/// 根据不良現象群組代碼NO獲取該群組不良現象類別資料
/// </summary>
/// <param name="no"></param>
/// <param name="page"></param>
/// <param name="limit"></param>
/// <returns></returns>
// GET: api/NGClasses/Group/S
[HttpGet("Group/{no}")]
public async Task<ActionResult<IEnumerable<NGClass>>> GetNGClassByGroup(string no, int page = 1, int limit = 10)
{
IQueryable<NGClass> q = _context.NGClasses;
if (no != null)
{
if (no != "*")
{
q = q.Where(p => p.NGGroupNo.Equals(no));
}
}
if (page > 0)
{
q = q.OrderBy(p => p.NGGroupNo + p.NGClassNo).Skip((page - 1) * limit).Take(limit);
}
else
{
q = q.OrderBy(p => p.NGGroupNo + p.NGClassNo);
}
var ngClass = await q.ToListAsync();
if (ngClass == null)
{
return NotFound();
}
return ngClass;
}
/// <summary>
///
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
// GET: api/NGClasses/5
[HttpGet("{id}")]
public async Task<ActionResult<IEnumerable<NGClass>>> GetNGClass(string id)
{
IQueryable<NGClass> q = _context.NGClasses;
q = q.Where(p => p.NGClassNo.Equals(id));
var ngClass = await q.ToListAsync();
if (ngClass == null)
{
return NotFound();
}
return ngClass;
}
/// <summary>
///
/// </summary>
/// <param name="id"></param>
/// <param name="nGClass"></param>
/// <returns></returns>
// PUT: api/NGClasses/5
// To protect from overposting attacks, enable the specific properties you want to bind to, for
// more details, see https://go.microsoft.com/fwlink/?linkid=2123754.
[HttpPut("{id}")]
public async Task<ResultModel<NGClass>> PutNGClass(string id, [FromBody] NGClass nGClass)
{
ResultModel<NGClass> result = new ResultModel<NGClass>();
if (id != nGClass.NGClassNo)
{
result.Success = false;
result.Msg = "类别代碼錯誤";
return result;
}
_context.Entry(nGClass).State = EntityState.Modified;
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!NGClassExists(id))
{
result.Success = false;
result.Msg = "类别代碼不存在";
return result;
}
else
{
throw;
}
}
result.Success = true;
result.Msg = "OK";
return result;
}
/// <summary>
///
/// </summary>
/// <param name="nGClass"></param>
/// <returns></returns>
// POST: api/NGClasses
// To protect from overposting attacks, enable the specific properties you want to bind to, for
// more details, see https://go.microsoft.com/fwlink/?linkid=2123754.
[HttpPost]
public async Task<ResultModel<NGClass>> PostNGClass([FromBody] NGClass nGClass)
{
ResultModel<NGClass> result = new ResultModel<NGClass>();
_context.NGClasses.Add(nGClass);
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateException)
{
if (NGClassExists(nGClass.NGClassNo))
{
result.Success = false;
result.Msg = "类别代碼重複";
return result;
}
else
{
throw;
}
}
result.Success = true;
result.Msg = "OK";
return result;
}
/// <summary>
///
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
// DELETE: api/NGClasses/5
[HttpDelete("{id}")]
public async Task<ResultModel<NGClass>> DeleteNGClass(string id)
{
ResultModel<NGClass> result = new ResultModel<NGClass>();
var nGClass = await _context.NGClasses.FindAsync(id);
if (nGClass == null)
{
result.Success = false;
result.Msg = "类别代碼不存在";
return result;
}
_context.NGClasses.Remove(nGClass);
await _context.SaveChangesAsync();
result.Success = true;
result.Msg = "OK";
return result;
}
private bool NGClassExists(string id)
{
return _context.NGClasses.Any(e => e.NGClassNo == id);
}
}
}

195
AMESCoreStudio.WebApi/Controllers/AMES/NGGroupsController.cs

@ -0,0 +1,195 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using AMESCoreStudio.WebApi;
using AMESCoreStudio.WebApi.Models.AMES;
using AMESCoreStudio.CommonTools.Result;
namespace AMESCoreStudio.WebApi.Controllers.AMES
{
/// <summary>
/// 不良現象群組維護
/// </summary>
[Route("api/[controller]")]
[ApiController]
public class NGGroupsController : ControllerBase
{
private readonly AMESContext _context;
/// <summary>
///
/// </summary>
/// <param name="context"></param>
public NGGroupsController(AMESContext context)
{
_context = context;
}
/// <summary>
///
/// </summary>
/// <param name="page"></param>
/// <param name="limit"></param>
/// <returns></returns>
// GET: api/NGGroups
[HttpGet]
public async Task<ActionResult<IEnumerable<NGGroup>>> GetNGGroup(int page = 1, int limit = 10)
{
IQueryable<NGGroup> q = _context.NGGroups;
if (page > 0)
{
q = q.OrderBy(p => p.NGGroupNo).Skip((page - 1) * limit).Take(limit);
}
else
{
q = q.OrderBy(p => p.NGGroupNo);
}
var ngGroup = await q.ToListAsync();
return ngGroup;
}
/// <summary>
///
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
// GET: api/NGGroups/5
[HttpGet("{id}")]
public async Task<ActionResult<IEnumerable<NGGroup>>> GetNGGroup(string id)
{
IQueryable<NGGroup> q = _context.NGGroups;
q = q.Where(p => p.NGGroupNo.Equals(id));
var ngGroup = await q.ToListAsync();
if (ngGroup == null)
{
return NotFound();
}
return ngGroup;
}
/// <summary>
///
/// </summary>
/// <param name="id"></param>
/// <param name="nGGroup"></param>
/// <returns></returns>
// PUT: api/NGGroups/5
// To protect from overposting attacks, enable the specific properties you want to bind to, for
// more details, see https://go.microsoft.com/fwlink/?linkid=2123754.
[HttpPut("{id}")]
public async Task<ResultModel<NGGroup>> PutNGGroup(string id, [FromBody] NGGroup nGGroup)
{
ResultModel<NGGroup> result = new ResultModel<NGGroup>();
if (id != nGGroup.NGGroupNo)
{
result.Success = false;
result.Msg = "群組代碼錯誤";
return result;
}
_context.Entry(nGGroup).State = EntityState.Modified;
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!NGGroupExists(id))
{
result.Success = false;
result.Msg = "群組代碼不存在";
return result;
}
else
{
throw;
}
}
result.Success = true;
result.Msg = "OK";
return result;
}
/// <summary>
///
/// </summary>
/// <param name="nGGroup"></param>
/// <returns></returns>
// POST: api/NGGroups
// To protect from overposting attacks, enable the specific properties you want to bind to, for
// more details, see https://go.microsoft.com/fwlink/?linkid=2123754.
[HttpPost]
public async Task<ResultModel<NGGroup>> PostNGGroup([FromBody] NGGroup nGGroup)
{
ResultModel<NGGroup> result = new ResultModel<NGGroup>();
_context.NGGroups.Add(nGGroup);
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateException)
{
if (NGGroupExists(nGGroup.NGGroupNo))
{
result.Success = false;
result.Msg = "群組代碼重複";
return result;
}
else
{
throw;
}
}
result.Success = true;
result.Msg = "OK";
return result;
}
/// <summary>
///
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
// DELETE: api/NGGroups/5
[HttpDelete("{id}")]
public async Task<ResultModel<NGGroup>> DeleteNGGroup(string id)
{
ResultModel<NGGroup> result = new ResultModel<NGGroup>();
var nGGroup = await _context.NGGroups.FindAsync(id);
if (nGGroup == null)
{
result.Success = false;
result.Msg = "群組代碼不存在";
return result;
}
_context.NGGroups.Remove(nGGroup);
await _context.SaveChangesAsync();
result.Success = true;
result.Msg = "OK";
return result;
}
private bool NGGroupExists(string id)
{
return _context.NGGroups.Any(e => e.NGGroupNo == id);
}
}
}

225
AMESCoreStudio.WebApi/Controllers/AMES/NGReasonsController.cs

@ -0,0 +1,225 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using AMESCoreStudio.WebApi;
using AMESCoreStudio.WebApi.Models.AMES;
using AMESCoreStudio.CommonTools.Result;
namespace AMESCoreStudio.WebApi.Controllers.AMES
{
/// <summary>
/// 不良現象原因代碼維護
/// </summary>
[Route("api/[controller]")]
[ApiController]
public class NGReasonsController : ControllerBase
{
private readonly AMESContext _context;
/// <summary>
///
/// </summary>
/// <param name="context"></param>
public NGReasonsController(AMESContext context)
{
_context = context;
}
/// <summary>
///
/// </summary>
/// <returns></returns>
// GET: api/NGReasons
[HttpGet]
public async Task<ActionResult<IEnumerable<NGReason>>> GetNGReason()
{
IQueryable<NGReason> q = _context.NGReasons;
q = q.OrderBy(p => p.NGClassNo + p.NGReasonNo);
var ngReason = await q.ToListAsync();
return ngReason;
}
/// <summary>
/// 根据不良現象類別代碼NO獲取該類別不良現象原因代碼資料
/// </summary>
/// <param name="no"></param>
/// <param name="page"></param>
/// <param name="limit"></param>
/// <returns></returns>
// GET: api/NGReasons/Class/S
[HttpGet("Class/{no}")]
public async Task<ActionResult<IEnumerable<NGReason>>> GetNGReasonByClass(string no, int page = 1, int limit = 10)
{
IQueryable<NGReason> q = _context.NGReasons;
if (no != null)
{
if (no != "*")
{
q = q.Where(p => p.NGClassNo.Equals(no));
}
}
if (page > 0)
{
q = q.OrderBy(p => p.NGClassNo + p.NGReasonNo).Skip((page - 1) * limit).Take(limit);
}
else
{
q = q.OrderBy(p => p.NGClassNo + p.NGReasonNo);
}
var ngReason = await q.ToListAsync();
if (ngReason == null)
{
return NotFound();
}
return ngReason;
}
/// <summary>
///
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
// GET: api/NGReasons/5
[HttpGet("{id}")]
public async Task<ActionResult<IEnumerable<NGReason>>> GetNGReason(string id)
{
IQueryable<NGReason> q = _context.NGReasons;
q = q.Where(p => p.NGReasonNo.Equals(id));
var ngReason = await q.ToListAsync();
if (ngReason == null)
{
return NotFound();
}
return ngReason;
}
/// <summary>
///
/// </summary>
/// <param name="id"></param>
/// <param name="nGReason"></param>
/// <returns></returns>
// PUT: api/NGReasons/5
// To protect from overposting attacks, enable the specific properties you want to bind to, for
// more details, see https://go.microsoft.com/fwlink/?linkid=2123754.
[HttpPut("{id}")]
public async Task<ResultModel<NGReason>> PutNGReason(string id, [FromBody] NGReason nGReason)
{
ResultModel<NGReason> result = new ResultModel<NGReason>();
if (id != nGReason.NGReasonNo)
{
result.Success = false;
result.Msg = "原因代碼錯誤";
return result;
}
_context.Entry(nGReason).State = EntityState.Modified;
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!NGReasonExists(id))
{
result.Success = false;
result.Msg = "原因代碼不存在";
return result;
}
else
{
throw;
}
}
result.Success = true;
result.Msg = "OK";
return result;
}
/// <summary>
///
/// </summary>
/// <param name="nGReason"></param>
/// <returns></returns>
// POST: api/NGReasons
// To protect from overposting attacks, enable the specific properties you want to bind to, for
// more details, see https://go.microsoft.com/fwlink/?linkid=2123754.
[HttpPost]
public async Task<ResultModel<NGReason>> PostNGReason([FromBody] NGReason nGReason)
{
ResultModel<NGReason> result = new ResultModel<NGReason>();
_context.NGReasons.Add(nGReason);
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateException)
{
if (NGReasonExists(nGReason.NGReasonNo))
{
result.Success = false;
result.Msg = "原因代碼重複";
return result;
}
else
{
throw;
}
}
result.Success = true;
result.Msg = "OK";
return result;
}
/// <summary>
///
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
// DELETE: api/NGReasons/5
[HttpDelete("{id}")]
public async Task<ResultModel<NGReason>> DeleteNGReason(string id)
{
ResultModel<NGReason> result = new ResultModel<NGReason>();
var nGReason = await _context.NGReasons.FindAsync(id);
if (nGReason == null)
{
result.Success = false;
result.Msg = "原因代碼不存在";
return result;
}
_context.NGReasons.Remove(nGReason);
await _context.SaveChangesAsync();
result.Success = true;
result.Msg = "OK";
return result;
}
private bool NGReasonExists(string id)
{
return _context.NGReasons.Any(e => e.NGReasonNo == id);
}
}
}

2
AMESCoreStudio.WebApi/Controllers/BAS/FlowRulesController.cs

@ -62,7 +62,7 @@ namespace AMESCoreStudio.WebApi.Controllers.BAS
if (no != null)
{
if (no != "")
if (no != "*")
{
q = q.Where(p => p.UnitNo.Equals(no));
}

7
AMESCoreStudio.WebApi/Controllers/BAS/RulesController.cs

@ -65,15 +65,18 @@ namespace AMESCoreStudio.WebApi.Controllers.BAS
var query = from q1 in _context.Ruleses
join q2 in _context.RuleStations on q1.RuleStationID equals q2.RuleStationID
join q3 in _context.Stationses on q1.NextStationID equals q3.StationID
where q2.FlowRuleID.Equals(id)
select new {
q2.FlowRuleID,
q1.RuleStationID,
q1.RuleSeq,
q1.RuleStatus,
CurrStationId = q2.StationID,
NextStationId = q3.StationID
};
//query = query.OrderBy(p => p.RuleStationID + p.RuleSeq);
if (id > 0)
{
query = query.Where(p => p.FlowRuleID.Equals(id));
}
query = query.OrderBy(p => p.RuleSeq);
var qdata = await query.ToListAsync();

48
AMESCoreStudio.WebApi/Models/AMES/NGClass.cs

@ -0,0 +1,48 @@
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Runtime.Serialization;
namespace AMESCoreStudio.WebApi.Models.AMES
{
/// <summary>
/// 不良現象类别资料表
/// </summary>
[Table("NG_CLASS", Schema = "JHAMES")]
[DataContract]
public class NGClass
{
/// <summary>
/// 不良現象類別代碼
/// </summary>
[Key]
[Column("NG_CLASS_NO")]
[Required(ErrorMessage = "{0},不能空白")]
[Display(Name = "不良類別代碼")]
[StringLength(6, ErrorMessage = "{0},不能大于{1}")]
[DataMember]
public string NGClassNo { get; set; }
/// <summary>
/// 不良現象群組代碼
/// </summary>
[Column("NG_GROUP_NO")]
[Required(ErrorMessage = "{0},不能空白")]
[Display(Name = "不良群組代碼")]
[StringLength(6, ErrorMessage = "{0},不能大于{1}")]
[DataMember]
public string NGGroupNo { get; set; }
/// <summary>
/// 不良現象類別名稱
/// </summary>
[Column("NG_CLASS_NAME")]
[DataMember]
[Required(ErrorMessage = "{0},不能空白")]
[Display(Name = "不良類別名稱")]
[StringLength(50, ErrorMessage = "{0},不能大于{1}")]
public string NGClassName { get; set; }
}
}

37
AMESCoreStudio.WebApi/Models/AMES/NGGroup.cs

@ -0,0 +1,37 @@
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Runtime.Serialization;
namespace AMESCoreStudio.WebApi.Models.AMES
{
/// <summary>
/// 不良現象群组资料表
/// </summary>
[Table("NG_GROUP", Schema = "JHAMES")]
[DataContract]
public class NGGroup
{
/// <summary>
/// 不良現象代碼
/// </summary>
[Key]
[Column("NG_GROUP_NO")]
[Required(ErrorMessage = "{0},不能空白")]
[Display(Name = "不良群组代碼")]
[StringLength(10, ErrorMessage = "{0},不能大于{1}")]
[DataMember]
public string NGGroupNo { get; set; }
/// <summary>
/// 不良現象名稱
/// </summary>
[Column("NG_GROUP_NAME")]
[DataMember]
[Required(ErrorMessage = "{0},不能空白")]
[Display(Name = "不良群组名稱")]
[StringLength(50, ErrorMessage = "{0},不能大于{1}")]
public string NGGroupName { get; set; }
}
}

66
AMESCoreStudio.WebApi/Models/AMES/NGReason.cs

@ -0,0 +1,66 @@
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Runtime.Serialization;
namespace AMESCoreStudio.WebApi.Models.AMES
{
/// <summary>
/// 不良代码资料表
/// </summary>
[Table("NG_REASON", Schema = "JHAMES")]
[DataContract]
public class NGReason
{
/// <summary>
/// 不良現象原因代碼
/// </summary>
[Key]
[Column("NG_REASON_NO")]
[Required(ErrorMessage = "{0},不能空白")]
[Display(Name = "不良原因代碼")]
[StringLength(6, ErrorMessage = "{0},不能大于{1}")]
[DataMember]
public string NGReasonNo { get; set; }
/// <summary>
/// 不良現象類別代碼
/// </summary>
[Column("NG_CLASS_NO")]
[Required(ErrorMessage = "{0},不能空白")]
[Display(Name = "不良類別代碼")]
[StringLength(6, ErrorMessage = "{0},不能大于{1}")]
[DataMember]
public string NGClassNo { get; set; }
/// <summary>
/// 不良現象原因描述
/// </summary>
[Column("NG_REASON_DESC")]
[Required(ErrorMessage = "{0},不能空白")]
[Display(Name = "不良原因描述")]
[StringLength(100, ErrorMessage = "{0},不能大于{1}")]
[DataMember]
public string NGReasonDesc { get; set; }
/// <summary>
/// 不良現象原因英文描述
/// </summary>
[Column("NG_REASON_DESC_EN")]
[Required(ErrorMessage = "{0},不能空白")]
[Display(Name = "不良原因英文描述")]
[StringLength(100, ErrorMessage = "{0},不能大于{1}")]
[DataMember]
public string NGReasonDescEn { get; set; }
/// <summary>
/// 責任單位
/// </summary>
[Column("RESPONSE_DEPT")]
[DataMember]
[Required]
[Display(Name = "責任單位")]
public int ResponseDept { get; set; }
}
}
Loading…
Cancel
Save