Browse Source

1. 新增FQC006-FQC007

PTD
Ray 3 years ago
parent
commit
80434c8a12
  1. 93
      AMESCoreStudio.Web/Controllers/FQCController.cs
  2. 38
      AMESCoreStudio.Web/HttpApis/AMES/IFQC.cs
  3. 11
      AMESCoreStudio.Web/Views/FQC/FQC005.cshtml
  4. 54
      AMESCoreStudio.Web/Views/FQC/FQC005C.cshtml
  5. 56
      AMESCoreStudio.Web/Views/FQC/FQC005U.cshtml
  6. 91
      AMESCoreStudio.Web/Views/FQC/FQC006.cshtml
  7. 63
      AMESCoreStudio.Web/Views/FQC/FQC006C.cshtml
  8. 63
      AMESCoreStudio.Web/Views/FQC/FQC006U.cshtml
  9. 285
      AMESCoreStudio.Web/Views/FQC/FQC007.cshtml
  10. 93
      AMESCoreStudio.Web/Views/FQC/FQC007C.cshtml
  11. 4
      AMESCoreStudio.Web/Views/PCS/PCS021.cshtml
  12. 21
      AMESCoreStudio.WebApi/Controllers/AMES/QcCriterionController.cs
  13. 158
      AMESCoreStudio.WebApi/Controllers/AMES/StatusTypeController.cs
  14. 61
      AMESCoreStudio.WebApi/DTO/AMES/QcCriterionDto.cs
  15. 13
      AMESCoreStudio.WebApi/Models/AMES/QcCriterion.cs
  16. 2
      AMESCoreStudio.WebApi/Models/AMES/QcQuot.cs
  17. 70
      AMESCoreStudio.WebApi/Models/AMES/StatusType.cs
  18. 4
      AMESCoreStudio.WebApi/Models/AMESContext.cs

93
AMESCoreStudio.Web/Controllers/FQCController.cs

@ -464,11 +464,104 @@ namespace AMESCoreStudio.Web.Controllers
#endregion
#region FQC006 FQC狀態維護
public IActionResult FQC006()
{
return View();
}
//新增頁面
public IActionResult FQC006C()
{
return View();
}
//修改页面
[HttpGet]
public async Task<IActionResult> FQC006UAsync(string id)
{
var result = await _fqcApi.GetStatusType(id);
return View(result);
}
public async Task<IActionResult> FQC006DAsync(string id)
{
var result = await _fqcApi.DeleteStatusType(id);
return Json(new Result() { success = result.Success, msg = result.Msg });
}
// 添加
[HttpPost]
public async Task<IActionResult> FQC006CAsync(StatusType model)
{
if (ModelState.IsValid)
{
IResultModel result;
result = await _fqcApi.PostStatusType(JsonConvert.SerializeObject(model));
if (result.Success)
{
var _msg = "新增成功!";
return RedirectToAction("Refresh", "Home", new { msg = _msg });
}
else
{
ModelState.AddModelError("error", result.Msg);
}
}
return View("FQC006C", model);
}
// 修改
[HttpPost]
public async Task<IActionResult> FQC006UAsync(StatusType model)
{
if (ModelState.IsValid)
{
IResultModel result;
result = await _fqcApi.PutStatusType(JsonConvert.SerializeObject(model));
if (result.Success)
{
var _msg = "修改成功!";
return RedirectToAction("Refresh", "Home", new { msg = _msg });
}
else
{
ModelState.AddModelError("error", result.Msg);
}
}
return View("FQC006U", model);
}
[ResponseCache(Duration = 0)]
[HttpGet]
public async Task<IActionResult> FQC006QueryAsync(int page = 1, int limit = 10)
{
var result = await _fqcApi.GetStatusTypeQuery(page, limit);
if (result.Data.Count() != 0)
{
return Json(new Table() { code = 0, msg = "", data = result.Data, count = result.DataTotal });
}
return Json(new Table() { count = 0, data = null });
}
#endregion
#region FQC007 FQC抽驗作業
public IActionResult FQC007()
{
return View();
}
public IActionResult FQC007C()
{
return View();
}
#endregion
#region FQC008 FQC查詢

38
AMESCoreStudio.Web/HttpApis/AMES/IFQC.cs

@ -206,7 +206,7 @@ namespace AMESCoreStudio.Web
/// <param name="limit"></param>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/QcCriterion/QcCriterionQuery")]
ITask<ResultModel<QcCriterion>> GetQcCriterionQuery(int quotID, int page, int limit);
ITask<ResultModel<QcCriterionDto>> GetQcCriterionQuery(int quotID, int page, int limit);
/// <summary>
/// 查詢抽驗標準維護 ID
@ -224,7 +224,43 @@ namespace AMESCoreStudio.Web
#endregion
#region FQC006 FQC狀態維護
/// <summary>
/// 刪除過站狀態檔
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
[WebApiClient.Attributes.HttpPost("api/StatusType")]
ITask<ResultModel<StatusType>> PostStatusType([FromBody, RawJsonContent] string model);
/// <summary>
/// 更新過站狀態檔
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpPut("api/StatusType")]
ITask<ResultModel<StatusType>> PutStatusType([FromBody, RawJsonContent] string model);
/// <summary>
/// 刪除過站狀態檔
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpDelete("api/StatusType/{id}")]
ITask<ResultModel<string>> DeleteStatusType(string id);
/// <summary>
/// 查詢過站狀態檔
/// </summary>
/// <param name="page">頁數</param>
/// <param name="limit"></param>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/StatusType/StatusTypeQuery")]
ITask<ResultModel<StatusType>> GetStatusTypeQuery(int page = 1, int limit = 10);
/// <summary>
/// 查詢過站狀態檔 ID
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/StatusType/{id}")]
ITask<StatusType> GetStatusType(string id);
#endregion
#region FQC007 FQC抽驗作業

11
AMESCoreStudio.Web/Views/FQC/FQC005.cshtml

@ -50,13 +50,18 @@
table && table.reload(data);
});
var tableCols = [[
{
field: 'quotName',
title: '係數名稱',
sort: true
},
{
field: 'critNo',
title: '抽樣代碼',
sort: true
},
{
field: 'itemNameCN',
field: 'intervalNumber',
title: '抽樣點數',
sort: true
},
@ -89,7 +94,7 @@
//通过行tool编辑,lay-event="edit"
function edit(obj) {
if (obj.data.critID) {
hg.open('修改抽驗標準', '/FQC/FQC005U/' + obj.data.critID, 400, 400);
hg.open('修改抽驗標準', '/FQC/FQC005U/' + obj.data.critID, 500, 500);
}
}
@ -122,7 +127,7 @@
layuiicon: '&#xe608;',
class: 'layui-btn-normal',
handler: function () {
hg.open('新增抽驗標準', '/FQC/FQC005C', 400, 400);
hg.open('新增抽驗標準', '/FQC/FQC005C', 500, 500);
}
}

54
AMESCoreStudio.Web/Views/FQC/FQC005C.cshtml

@ -1,7 +1,7 @@
@model AMESCoreStudio.WebApi.Models.AMES.QcItem
@model AMESCoreStudio.WebApi.Models.AMES.QcCriterion
@{ ViewData["Title"] = "FQC001C";
@{
Layout = "~/Views/Shared/_AMESLayout.cshtml"; }
<style>
@ -13,28 +13,60 @@
<div class="layui-card">
<div class="row">
<div class="col-sm-12">
<form enctype="multipart/form-data" method="post" asp-action="FQC002" class="layui-form">
<form enctype="multipart/form-data" method="post" asp-action="FQC005" class="layui-form">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="layui-form-item">
<label class="layui-form-label">抽驗項目類別</label>
<label class="layui-form-label">抽驗係數名稱</label>
<div class="layui-input-block">
<select asp-for="GroupID" asp-items="@ViewBag.QCGroupSelect" class=""></select>
<select asp-for="QuotID" asp-items="@ViewBag.QcQuotSelect" class=""></select>
</div>
</div>
<div class="layui-form-item">
<label asp-for="ItemNameCN" class="layui-form-label"></label>
<label asp-for="CritNo" class="layui-form-label"></label>
<div class="layui-input-block">
<input asp-for="ItemNameCN" class="layui-input" autocomplete="off" placeholder="請輸入檢驗項目中文" />
<span asp-validation-for="ItemNameCN" class="layui-bg-red"></span>
<input asp-for="CritNo" class="layui-input" autocomplete="off" />
<span asp-validation-for="CritNo" class="layui-bg-red"></span>
</div>
</div>
<div class="layui-form-item">
<label asp-for="ItemNameEN" class="layui-form-label"></label>
<div class="layui-input-block">
<input asp-for="ItemNameEN" class="layui-input" placeholder="請輸入檢驗項目英文" />
<div class="layui-inline">
<label class="layui-form-label">抽樣範圍</label>
<div class="layui-input-inline" style="width: 100px;">
<input asp-for="QcStart" class="layui-input" autocomplete="off" />
<span asp-validation-for="QcStart" class="layui-bg-red"></span>
</div>
<div class="layui-form-mid">-</div>
<div class="layui-input-inline" style="width: 100px;">
<input asp-for="QcEnd" class="layui-input" autocomplete="off" />
<span asp-validation-for="QcEnd" class="layui-bg-red"></span>
</div>
</div>
</div>
<div class="layui-form-item">
<label asp-for="QcQty" class="layui-form-label"></label>
<div class="layui-input-block" style="width: 100px;">
<input asp-for="QcQty" class="layui-input" autocomplete="off" />
<span asp-validation-for="QcQty" class="layui-bg-red"></span>
</div>
</div>
<div class="layui-form-item">
<label asp-for="AcQty" class="layui-form-label"></label>
<div class="layui-input-block" style="width: 100px;">
<input asp-for="AcQty" class="layui-input" autocomplete="off" />
<span asp-validation-for="AcQty" class="layui-bg-red"></span>
</div>
</div>
<div class="layui-form-item">
<label asp-for="ReQty" class="layui-form-label"></label>
<div class="layui-input-block" style="width: 100px;">
<input asp-for="ReQty" class="layui-input" autocomplete="off" />
<span asp-validation-for="ReQty" class="layui-bg-red"></span>
</div>
</div>

56
AMESCoreStudio.Web/Views/FQC/FQC005U.cshtml

@ -1,7 +1,7 @@
@model AMESCoreStudio.WebApi.Models.AMES.QcItem
@model AMESCoreStudio.WebApi.Models.AMES.QcCriterion
@{ ViewData["Title"] = "FQC002U";
@{
Layout = "~/Views/Shared/_AMESLayout.cshtml"; }
<style>
@ -13,29 +13,61 @@
<div class="layui-card">
<div class="row">
<div class="col-sm-12">
<form enctype="multipart/form-data" method="post" asp-action="FQC002" class="layui-form">
<form enctype="multipart/form-data" method="post" asp-action="FQC005" class="layui-form">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<input type="hidden" asp-for="ItemID" value="@Model.ItemID" />
<input type="hidden" asp-for="CritID" value="@Model.CritID" />
<div class="layui-form-item">
<label class="layui-form-label">抽驗項目類別</label>
<label class="layui-form-label">抽驗係數名稱</label>
<div class="layui-input-block">
<select asp-for="GroupID" asp-items="@ViewBag.QCGroupSelect" class=""></select>
<select asp-for="QuotID" asp-items="@ViewBag.QcQuotSelect" class=""></select>
</div>
</div>
<div class="layui-form-item">
<label asp-for="ItemNameCN" class="layui-form-label"></label>
<label asp-for="CritNo" class="layui-form-label"></label>
<div class="layui-input-block">
<input asp-for="ItemNameCN" class="layui-input" autocomplete="off" placeholder="請輸入檢驗項目中文" />
<span asp-validation-for="ItemNameCN" class="layui-bg-red"></span>
<input asp-for="CritNo" class="layui-input" autocomplete="off" />
<span asp-validation-for="CritNo" class="layui-bg-red"></span>
</div>
</div>
<div class="layui-form-item">
<label asp-for="ItemNameEN" class="layui-form-label"></label>
<div class="layui-input-block">
<input asp-for="ItemNameEN" class="layui-input" placeholder="請輸入檢驗項目英文" />
<div class="layui-inline">
<label class="layui-form-label">抽樣範圍</label>
<div class="layui-input-inline" style="width: 100px;">
<input asp-for="QcStart" class="layui-input" autocomplete="off" />
<span asp-validation-for="QcStart" class="layui-bg-red"></span>
</div>
<div class="layui-form-mid">-</div>
<div class="layui-input-inline" style="width: 100px;">
<input asp-for="QcEnd" class="layui-input" autocomplete="off" />
<span asp-validation-for="QcEnd" class="layui-bg-red"></span>
</div>
</div>
</div>
<div class="layui-form-item">
<label asp-for="QcQty" class="layui-form-label"></label>
<div class="layui-input-block" style="width: 100px;">
<input asp-for="QcQty" class="layui-input" autocomplete="off" />
<span asp-validation-for="QcQty" class="layui-bg-red"></span>
</div>
</div>
<div class="layui-form-item">
<label asp-for="AcQty" class="layui-form-label"></label>
<div class="layui-input-block" style="width: 100px;">
<input asp-for="AcQty" class="layui-input" autocomplete="off" />
<span asp-validation-for="AcQty" class="layui-bg-red"></span>
</div>
</div>
<div class="layui-form-item">
<label asp-for="ReQty" class="layui-form-label"></label>
<div class="layui-input-block" style="width: 100px;">
<input asp-for="ReQty" class="layui-input" autocomplete="off" />
<span asp-validation-for="ReQty" class="layui-bg-red"></span>
</div>
</div>

91
AMESCoreStudio.Web/Views/FQC/FQC006.cshtml

@ -0,0 +1,91 @@
@{
ViewData["Title"] = "FQC狀態維護";
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: 'statusNo',
title: '過站狀態',
sort: true
},
{
field: 'statusName',
title: '狀態名稱',
sort: true
},
{
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.statusNo) {
hg.open('修改FQC狀態維護', '/FQC/FQC006U/' + obj.data.statusNo, 400, 300);
}
}
//通过行tool删除,lay-event="del"
function del(obj) {
if (obj.data.statusNo) {
hg.confirm("過站狀態:" + obj.data.statusNo + ",確定要刪除嗎?", function () {
$.ajax({
url: '/FQC/FQC006D',
data: { id: obj.data.statusNo },
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('新增FQC狀態維護', '/FQC/FQC006C',400, 300);
}
}
];
//基本数据表格
var table = hg.table.datatable('test', 'FQC狀態維護', '/FQC/FQC006Query', {}, tableCols, toolbar, false, 'full-100', ['filter', 'print', 'exports']);
</script>
}

63
AMESCoreStudio.Web/Views/FQC/FQC006C.cshtml

@ -0,0 +1,63 @@
@model AMESCoreStudio.WebApi.Models.AMES.StatusType
@{
Layout = "~/Views/Shared/_AMESLayout.cshtml"; }
<style>
.control-label {
justify-content: flex-end !important;
}
</style>
<div class="layui-card">
<div class="row">
<div class="col-sm-12">
<form enctype="multipart/form-data" method="post" asp-action="FQC006C" class="layui-form">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="layui-form-item">
<label asp-for="StatusNo" class="layui-form-label"></label>
<div class="layui-input-block">
<input asp-for="StatusNo" class="layui-input" autocomplete="off" placeholder="請輸入狀態代碼" />
<span asp-validation-for="StatusNo" class="layui-bg-red"></span>
</div>
</div>
<div class="layui-form-item">
<label asp-for="StatusName" class="layui-form-label"></label>
<div class="layui-input-block">
<input asp-for="StatusName" class="layui-input" placeholder="請輸入狀態名稱" />
<span asp-validation-for="StatusName" class="layui-bg-red"></span>
</div>
</div>
<span style="color: firebrick;word-break: break-all;" class="text-danger offset-sm-3">@Html.ValidationMessage("error")</span>
<div class="layui-row" style="text-align:center">
<div class="layui-col-md12">
<input type="submit" value="保存" class="layui-btn" />
</div>
</div>
</form>
</div>
</div>
</div>
@section Scripts {
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial");
await Html.RenderPartialAsync("_FileinputScriptsPartial"); }
<script type="text/javascript">
layui.use(['form'], function () {
form = layui.form;
});
$(document).ready(function () {
var error = '@Html.ValidationMessage("error")';
if ($(error).text() != '') {
parent.hg.msg(error);
}
});
</script>
}

63
AMESCoreStudio.Web/Views/FQC/FQC006U.cshtml

@ -0,0 +1,63 @@
@model AMESCoreStudio.WebApi.Models.AMES.StatusType
@{
Layout = "~/Views/Shared/_AMESLayout.cshtml"; }
<style>
.control-label {
justify-content: flex-end !important;
}
</style>
<div class="layui-card">
<div class="row">
<div class="col-sm-12">
<form enctype="multipart/form-data" method="post" asp-action="FQC006U" class="layui-form">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="layui-form-item">
<label asp-for="StatusNo" class="layui-form-label"></label>
<div class="layui-input-block">
<input asp-for="StatusNo" class="layui-input" autocomplete="off" readonly/>
<span asp-validation-for="StatusNo" class="layui-bg-red"></span>
</div>
</div>
<div class="layui-form-item">
<label asp-for="StatusName" class="layui-form-label"></label>
<div class="layui-input-block">
<input asp-for="StatusName" class="layui-input" placeholder="請輸入狀態名稱" />
<span asp-validation-for="StatusName" class="layui-bg-red"></span>
</div>
</div>
<span style="color: firebrick;word-break: break-all;" class="text-danger offset-sm-3">@Html.ValidationMessage("error")</span>
<div class="layui-row" style="text-align:center">
<div class="layui-col-md12">
<input type="submit" value="保存" class="layui-btn" />
</div>
</div>
</form>
</div>
</div>
</div>
@section Scripts {
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial");
await Html.RenderPartialAsync("_FileinputScriptsPartial"); }
<script type="text/javascript">
layui.use(['form'], function () {
form = layui.form;
});
$(document).ready(function () {
var error = '@Html.ValidationMessage("error")';
if ($(error).text() != '') {
parent.hg.msg(error);
}
});
</script>
}

285
AMESCoreStudio.Web/Views/FQC/FQC007.cshtml

@ -0,0 +1,285 @@
@{
ViewData["Title"] = "FQC抽驗作業";
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">
<div class="layui-row">
<div class="layui-col-xs2">
<label class="layui-form-label-col" style="text-align:right;">入庫單號:</label>
</div>
<div class="layui-col-xs2">
<div class="layui-form-item">
<div class="layui-input-block" style="margin-left:auto;">
<input type="text" name="title" lay-verify="title" autocomplete="off" placeholder="请输入标题" class="layui-input">
</div>
</div>
</div>
<div class="layui-col-xs2">
<label class="layui-form-label-col" style="text-align:right;">抽樣點數:</label>
</div>
<div class="layui-col-xs2">
<div class="layui-form-item">
<div class="layui-input-block" style="margin-left:auto;">
<input type="text" name="title" lay-verify="title" autocomplete="off" placeholder="请输入标题" class="layui-input">
</div>
</div>
</div>
<div class="layui-col-xs2">
<label class="layui-form-label-col" style="text-align:right;">抽驗PASS數量:</label>
</div>
<div class="layui-col-xs2">
<div class="layui-form-item">
<div class="layui-input-block" style="margin-left:auto;">
<input type="text" name="title" lay-verify="title" autocomplete="off" placeholder="请输入标题" class="layui-input">
</div>
</div>
</div>
</div>
<div class="layui-row">
<div class="layui-col-xs2">
<label class="layui-form-label-col" style="text-align:right;">本批完成量:</label>
</div>
<div class="layui-col-xs2">
<div class="layui-form-item">
<div class="layui-input-block" style="margin-left:auto;">
<input type="text" name="title" lay-verify="title" autocomplete="off" placeholder="请输入标题" class="layui-input">
</div>
</div>
</div>
<div class="layui-col-xs2">
<label class="layui-form-label-col" style="text-align:right;">拒收點數:</label>
</div>
<div class="layui-col-xs2">
<div class="layui-form-item">
<div class="layui-input-block" style="margin-left:auto;">
<input type="text" name="title" lay-verify="title" autocomplete="off" placeholder="请输入标题" class="layui-input">
</div>
</div>
</div>
<div class="layui-col-xs2">
<label class="layui-form-label-col" style="text-align:right;">不良數:</label>
</div>
<div class="layui-col-xs2">
<div class="layui-form-item">
<div class="layui-input-block" style="margin-left:auto;">
<input type="text" name="title" lay-verify="title" autocomplete="off" placeholder="请输入标题" class="layui-input">
</div>
</div>
</div>
</div>
<div class="layui-row">
<div class="layui-col-xs2">
<label class="layui-form-label-col" style="text-align:right;">工單號碼:</label>
</div>
<div class="layui-col-xs2">
<div class="layui-form-item">
<div class="layui-input-block" style="margin-left:auto;">
<input type="text" name="title" lay-verify="title" autocomplete="off" placeholder="请输入标题" class="layui-input">
</div>
</div>
</div>
<div class="layui-col-xs2">
<label class="layui-form-label-col" style="text-align:right;">料號:</label>
</div>
<div class="layui-col-xs2">
<div class="layui-form-item">
<div class="layui-input-block" style="margin-left:auto;">
<input type="text" name="title" lay-verify="title" autocomplete="off" placeholder="请输入标题" class="layui-input">
</div>
</div>
</div>
<div class="layui-col-xs2">
<label class="layui-form-label-col" style="text-align:right;">品名:</label>
</div>
<div class="layui-col-xs2">
<div class="layui-form-item">
<div class="layui-input-block" style="margin-left:auto;">
<input type="text" name="title" lay-verify="title" autocomplete="off" placeholder="请输入标题" class="layui-input">
</div>
</div>
</div>
</div>
<div class="layui-row">
<div class="layui-col-xs2">
<label class="layui-form-label-col" style="text-align:right;">抽樣結果:</label>
</div>
<div class="layui-col-xs2">
<div class="layui-form-item">
<div class="layui-input-block" style="margin-left:auto;">
<input type="text" name="title" lay-verify="title" autocomplete="off" placeholder="请输入标题" class="layui-input">
</div>
</div>
</div>
<div class="layui-col-xs2">
<label class="layui-form-label-col" style="text-align:right;">判定備註:</label>
</div>
<div class="layui-col-xs2">
<div class="layui-form-item">
<div class="layui-input-block" style="margin-left:auto;">
<input type="text" name="title" lay-verify="title" autocomplete="off" placeholder="请输入标题" class="layui-input">
</div>
</div>
</div>
<div class="layui-col-xs2">
<label class="layui-form-label-col" style="text-align:right;">料號屬性:</label>
</div>
<div class="layui-col-xs2">
<div class="layui-form-item">
<div class="layui-input-block" style="margin-left:auto;">
<input type="text" name="title" lay-verify="title" autocomplete="off" placeholder="请输入标题" class="layui-input">
</div>
</div>
</div>
</div>
<div class="layui-row">
<div class="layui-col-xs2">
<label class="layui-form-label-col" style="text-align:right;">不良品數量:</label>
</div>
<div class="layui-col-xs2">
<div class="layui-form-item">
<div class="layui-input-block" style="margin-left:auto;">
<input type="text" name="title" lay-verify="title" autocomplete="off" placeholder="请输入标题" class="layui-input">
</div>
</div>
</div>
<div class="layui-col-xs2">
<label class="layui-form-label-col" style="text-align:right;">手動批退備註:</label>
</div>
<div class="layui-col-xs2">
<div class="layui-form-item">
<div class="layui-input-block" style="margin-left:auto;">
<input type="text" name="title" lay-verify="title" autocomplete="off" placeholder="请输入标题" class="layui-input">
</div>
</div>
</div>
<div class="layui-col-xs2">
</div>
<div class="layui-col-xs2">
</div>
</div>
<div class="layui-row">
<div class="layui-col-xs2">
<label class="layui-form-label-col" style="text-align:right;">入庫單備註描述:</label>
</div>
<div class="layui-col-xs10">
<div class="layui-form-item">
<div class="layui-input-block" style="margin-left:auto;">
<input type="text" name="title" lay-verify="title" autocomplete="off" placeholder="请输入标题" class="layui-input">
</div>
</div>
</div>
</div>
<div class="layui-row">
<div class="layui-col-xs10">
</div>
<div class="layui-col-xs1">
<a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-edit" lay-event="edit">抽驗</a>
</div>
<div class="layui-col-xs1">
<a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-edit" lay-event="result">結果判定</a>
</div>
</div>
<table class="layui-hide" id="test" lay-filter="test"></table>
</div>
</div>
@section Scripts{
<script type="text/javascript">
layui.use(['form', 'laydate'], function () {
var form = layui.form;
});
//监听表单提交事件
hg.form.onsubmit('querysubmit', function (data) {
table && table.reload(data);
});
var tableCols = [[
{
field: 'groupNameCN',
title: '箱號',
sort: true
},
{
field: 'groupNameEN',
title: '總數量',
sort: true
},
{
field: 'groupNameEN',
title: '已抽數量',
sort: true
},
{
field: 'groupNameEN',
title: '抽驗PASS數量',
sort: true
},
{
field: 'groupNameEN',
title: '抽驗FAIL數量',
sort: true
},
{
field: 'right',
width: 100,
title: '操作',
fixed: 'right',
templet: function (d) {
return '<a class="layui-btn layui-btn-warm layui-icon layui-icon-list layui-btn-xs" lay-event="detail">檢視</a>'
}
}]
];
//通过行tool编辑,lay-event="edit"
function edit(){
hg.open('抽驗', '/FQC/FQC007C/', 400, 400);
}
//通过行tool删除,lay-event="del"
function del(obj) {
if (obj.data.groupID) {
hg.confirm("檢驗類別:" + obj.data.groupNameCN + "【" + obj.data.groupNameEN + "】,確定要刪除嗎?", function () {
$.ajax({
url: '/FQC/FQC001D',
data: { id: obj.data.groupID },
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('新增檢驗類別', '/FQC/FQC001C', 400, 400);
}
}
];
//基本数据表格
var table = hg.table.datatable('test', '檢驗類別維護', '/FQC/FQC001Query', {}, tableCols, '', false, 'full-100', []);
</script>
}

93
AMESCoreStudio.Web/Views/FQC/FQC007C.cshtml

@ -0,0 +1,93 @@
@model AMESCoreStudio.WebApi.Models.AMES.FqcResultDetail
@{
Layout = "~/Views/Shared/_AMESLayout.cshtml"; }
<style>
.control-label {
justify-content: flex-end !important;
}
</style>
<div class="layui-card">
<div class="row">
<div class="col-sm-12">
<form enctype="multipart/form-data" method="post" asp-action="FQC006C" class="layui-form">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="layui-form-item">
<label asp-for="BarcodeNo" class="layui-form-label"></label>
<div class="layui-input-block">
<input asp-for="BarcodeNo" class="layui-input" autocomplete="off" />
<span asp-validation-for="BarcodeNo" class="layui-bg-red"></span>
</div>
</div>
<div class="layui-form-item">
<label asp-for="ExtraBarcodeNo" class="layui-form-label"></label>
<div class="layui-input-block">
<input asp-for="ExtraBarcodeNo" class="layui-input" />
<span asp-validation-for="ExtraBarcodeNo" class="layui-bg-red"></span>
</div>
</div>
<div class="layui-form-item">
<label asp-for="BoxNo" class="layui-form-label"></label>
<div class="layui-input-block">
<input asp-for="BoxNo" class="layui-input" />
<span asp-validation-for="BoxNo" class="layui-bg-red"></span>
</div>
</div>
<div class="layui-form-item">
<label asp-for="StatusNo" class="layui-form-label"></label>
<div class="layui-input-block">
<input asp-for="BoxNo" class="layui-input" />
<span asp-validation-for="BoxNo" class="layui-bg-red"></span>
</div>
</div>
<div class="layui-form-item">
<label asp-for="NgReasonNo" class="layui-form-label"></label>
<div class="layui-input-block">
<input asp-for="BoxNo" class="layui-input" />
</div>
</div>
<div class="layui-form-item">
<label asp-for="NgMemo" class="layui-form-label"></label>
<div class="layui-input-block">
<input asp-for="BoxNo" class="layui-input" />
</div>
</div>
<span style="color: firebrick;word-break: break-all;" class="text-danger offset-sm-3">@Html.ValidationMessage("error")</span>
<div class="layui-row" style="text-align:center">
<div class="layui-col-md12">
<input type="submit" value="保存" class="layui-btn" />
</div>
</div>
</form>
</div>
</div>
</div>
@section Scripts {
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial");
await Html.RenderPartialAsync("_FileinputScriptsPartial"); }
<script type="text/javascript">
layui.use(['form'], function () {
form = layui.form;
});
$(document).ready(function () {
var error = '@Html.ValidationMessage("error")';
if ($(error).text() != '') {
parent.hg.msg(error);
}
});
</script>
}

4
AMESCoreStudio.Web/Views/PCS/PCS021.cshtml

@ -106,12 +106,12 @@
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">料號:</label>
<label class="layui-form-label" style="text-align:left;">@Model.ItemNO</label>
<label class="layui-form-label" style="text-align: left; width: 150px;">@Model.ItemNO</label>
</div>
</div>
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label" style="width: 100px;text-align:left; padding: 9px 10px">已刷數/工單數:</label>
<label class="layui-form-label" style="width:100px;text-align:left; padding: 9px 10px">已刷數/工單數:</label>
<label class="layui-form-label" style="width:150px;text-align:left">1/100</label>
</div>
</div>

21
AMESCoreStudio.WebApi/Controllers/AMES/QcCriterionController.cs

@ -7,6 +7,7 @@ using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using AMESCoreStudio.WebApi;
using AMESCoreStudio.WebApi.Models.AMES;
using AMESCoreStudio.WebApi.DTO.AMES;
using AMESCoreStudio.CommonTools.Result;
namespace AMESCoreStudio.WebApi.Controllers.AMES
@ -47,10 +48,10 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
}
[HttpGet("QcCriterionQuery")]
public async Task<ResultModel<QcCriterion>> GetQcCriterionQuery(int quotID = 0,int page = 1, int limit = 10)
public async Task<ResultModel<QcCriterionDto>> GetQcCriterionQuery(int quotID = 0,int page = 1, int limit = 10)
{
IQueryable<QcCriterion> q = _context.QcCriteria;
ResultModel<QcCriterion> result = new ResultModel<QcCriterion>();
ResultModel<QcCriterionDto> result = new ResultModel<QcCriterionDto>();
if (quotID != 0)
q = q.Where(w => w.QuotID == quotID);
@ -63,7 +64,21 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
{
q = q.Skip((page - 1) * limit).Take(limit);
}
result.Data = await q.ToListAsync();
result.Data = await q.Select(s => new QcCriterionDto
{
CritID = s.CritID,
CritNo = s.CritNo,
AcQty = s.AcQty,
ReQty = s.ReQty,
QcQty = s.QcQty,
IntervalNumber = s.QcStart + " ~ " + s.QcEnd,
QuotName = s.GetQcQuot.QuotName,
CreateDate = s.CreateDate,
UpdateUserID = s.UpdateUserID,
UpdateDate = s.UpdateDate
}).ToListAsync();
return result;
}

158
AMESCoreStudio.WebApi/Controllers/AMES/StatusTypeController.cs

@ -0,0 +1,158 @@
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 StatusTypeController : ControllerBase
{
private readonly AMESContext _context;
public StatusTypeController(AMESContext context)
{
_context = context;
}
// GET: api/StatusType
[HttpGet]
public async Task<ActionResult<IEnumerable<StatusType>>> GetStatusTypes()
{
return await _context.StatusTypes.ToListAsync();
}
// GET: api/StatusType/5
[HttpGet("{id}")]
public async Task<ActionResult<StatusType>> GetStatusType(string id)
{
var statusType = await _context.StatusTypes.FindAsync(id);
if (statusType == null)
{
return NotFound();
}
return statusType;
}
[HttpGet("StatusTypeQuery")]
public async Task<ResultModel<StatusType>> GetStatusTypeQuery(int page = 1, int limit = 10)
{
IQueryable<StatusType> q = _context.StatusTypes;
ResultModel<StatusType> result = new ResultModel<StatusType>();
// 紀錄筆數
result.DataTotal = q.Count();
// Table 頁數
if (page > 0)
{
q = q.Skip((page - 1) * limit).Take(limit);
}
result.Data = await q.ToListAsync();
return result;
}
/// <summary>
/// 更新過站狀態
/// </summary>
/// <param name="statusType"></param>
/// <returns></returns>
[HttpPut]
public async Task<ResultModel<StatusType>> PutStatusType(StatusType statusType)
{
ResultModel<StatusType> result = new ResultModel<StatusType>();
_context.Entry(statusType).State = EntityState.Modified;
statusType.UpdateDate = DateTime.Now;
statusType.UpdateUserID = 0;
try
{
await _context.SaveChangesAsync();
result.Success = true;
result.Msg = "OK";
}
catch (Exception ex)
{
result.Success = false;
result.Msg = "更新失敗!,錯誤訊息:" + ex.InnerException.Message;
}
return result;
}
/// <summary>
/// 新增過站狀態
/// </summary>
/// <param name="statusType"></param>
/// <returns></returns>
[HttpPost]
public async Task<ResultModel<StatusType>> PostStatusType(StatusType statusType)
{
ResultModel<StatusType> result = new ResultModel<StatusType>();
_context.StatusTypes.Add(statusType);
try
{
await _context.SaveChangesAsync();
result.Success = true;
result.Msg = "OK";
}
catch (Exception ex)
{
result.Success = false;
//result.Msg = ex.Message;
result.Msg = "新增失敗!,錯誤訊息:" + ex.InnerException.Message;
}
return result;
}
/// <summary>
/// 刪除過站狀態
/// </summary>
/// <param name="id">STATUS_NO</param>
/// <returns></returns>
[HttpDelete("{id}")]
public async Task<ResultModel<string>> DeleteStatusType(string id)
{
ResultModel<string> result = new ResultModel<string>();
var statusType = await _context.StatusTypes.FindAsync(id);
try
{
if (statusType == null)
{
result.Success = false;
result.Msg = "找不到要刪除資料";
}
else
{
_context.StatusTypes.Remove(statusType);
await _context.SaveChangesAsync();
result.Success = true;
result.Msg = "刪除成功!";
}
}
catch (Exception ex)
{
result.Success = false;
result.Msg = ex.Message;
}
return result;
}
private bool StatusTypeExists(string id)
{
return _context.StatusTypes.Any(e => e.StatusNo == id);
}
}
}

61
AMESCoreStudio.WebApi/DTO/AMES/QcCriterionDto.cs

@ -0,0 +1,61 @@
using System;
namespace AMESCoreStudio.WebApi.DTO.AMES
{
/// <summary>
/// 抽驗標準資料檔 DTO
/// </summary>
public partial class QcCriterionDto
{
/// <summary>
/// 抽驗標準ID
/// </summary>
public int CritID { get; set; }
/// <summary>
/// 係數名稱
/// </summary>
public string QuotName { get; set; }
/// <summary>
/// 抽樣代碼
/// </summary>
public string CritNo { get; set; }
/// <summary>
/// 抽樣點數
/// </summary>
public string IntervalNumber { get; set; }
/// <summary>
/// 抽樣數量
/// </summary>
public int QcQty { get; set; }
/// <summary>
/// 允收數量
/// </summary>
public int AcQty { get; set; }
/// <summary>
/// 拒收數量
/// </summary>
public int ReQty { get; set; }
/// <summary>
/// 建立日期
/// </summary>
public DateTime CreateDate { get; set; } = DateTime.Now;
/// <summary>
/// 更新UserID
/// </summary>
public int UpdateUserID { get; set; } = 0;
/// <summary>
/// 更新日期
/// </summary>
public DateTime? UpdateDate { get; set; } = DateTime.Now;
}
}

13
AMESCoreStudio.WebApi/Models/AMES/QcCriterion.cs

@ -37,6 +37,7 @@ namespace AMESCoreStudio.WebApi.Models.AMES
[DataMember]
[Display(Name = "起始數量")]
[Required(ErrorMessage = "{0},不能空白")]
[RegularExpression("^[0-9]*$",ErrorMessage = "0")]
[Column("QC_START")]
public int QcStart { get; set; }
@ -46,6 +47,7 @@ namespace AMESCoreStudio.WebApi.Models.AMES
[DataMember]
[Display(Name = "結束數量")]
[Required(ErrorMessage = "{0},不能空白")]
[RegularExpression("^[0-9]*$", ErrorMessage = "0")]
[Column("QC_END")]
public int QcEnd { get; set; }
@ -57,7 +59,7 @@ namespace AMESCoreStudio.WebApi.Models.AMES
[Required(ErrorMessage = "{0},不能空白")]
[Column("CRIT_NO")]
[StringLength(3)]
public int CritNo { get; set; }
public string CritNo { get; set; }
/// <summary>
/// 抽樣數量
@ -65,6 +67,7 @@ namespace AMESCoreStudio.WebApi.Models.AMES
[DataMember]
[Display(Name = "抽樣數量")]
[Required(ErrorMessage = "{0},不能空白")]
[RegularExpression("^[0-9]*$", ErrorMessage = "0")]
[Column("QC_QTY")]
public int QcQty { get; set; }
@ -74,6 +77,7 @@ namespace AMESCoreStudio.WebApi.Models.AMES
[DataMember]
[Display(Name = "允收數量")]
[Required(ErrorMessage = "{0},不能空白")]
[RegularExpression("^[0-9]*$", ErrorMessage = "0")]
[Column("AC_QTY")]
public int AcQty { get; set; }
@ -83,6 +87,7 @@ namespace AMESCoreStudio.WebApi.Models.AMES
[DataMember]
[Display(Name = "拒收數量")]
[Required(ErrorMessage = "{0},不能空白")]
[RegularExpression("^[0-9]*$", ErrorMessage = "0")]
[Column("RE_QTY")]
public int ReQty { get; set; }
@ -115,5 +120,11 @@ namespace AMESCoreStudio.WebApi.Models.AMES
[Column("UPDATE_DATE")]
[DataMember]
public DateTime? UpdateDate { get; set; } = DateTime.Now;
/// <summary>
/// 抽驗係數資料
/// </summary>
[ForeignKey("QuotID")]
public virtual QcQuot GetQcQuot { get; set; }
}
}

2
AMESCoreStudio.WebApi/Models/AMES/QcQuot.cs

@ -10,7 +10,7 @@ using System.Runtime.Serialization;
namespace AMESCoreStudio.WebApi.Models.AMES
{
/// <summary>
/// 抽驗係資料檔
/// 抽驗係資料檔
/// </summary>
[Table("QC_QUOT", Schema = "JHAMES")]
public partial class QcQuot

70
AMESCoreStudio.WebApi/Models/AMES/StatusType.cs

@ -0,0 +1,70 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.EntityFrameworkCore;
using System.Runtime.Serialization;
#nullable disable
namespace AMESCoreStudio.WebApi.Models.AMES
{
/// <summary>
/// 過站狀態檔
/// </summary>
[Table("STATUS_TYPE", Schema = "JHAMES")]
[Index(nameof(StatusName), Name = "STATUS_TYPE_AK2", IsUnique = true)]
public partial class StatusType
{
/// <summary>
/// 狀態代碼
/// </summary>
[Key]
[Column("STATUS_NO")]
[StringLength(2)]
[DataMember]
[Display(Name = "狀態代碼")]
[Required(ErrorMessage = "{0},不能空白")]
public string StatusNo { get; set; }
/// <summary>
/// 狀態名稱
/// </summary>
[Display(Name = "狀態名稱")]
[Required(ErrorMessage = "{0},不能空白")]
[DataMember]
[Column("STATUS_NAME")]
[StringLength(20)]
public string StatusName { get; set; }
/// <summary>
/// 建立UserID
/// </summary>
[Column("CREATE_USERID")]
[Required]
[DataMember]
public int CreateUserID { get; set; } = 0;
/// <summary>
/// 建立日期
/// </summary>
[Required]
[Column("CREATE_DATE")]
[DataMember]
public DateTime CreateDate { get; set; } = DateTime.Now;
/// <summary>
/// 更新UserID
/// </summary>
[Column("UPDATE_USERID")]
[DataMember]
public int UpdateUserID { get; set; } = 0;
/// <summary>
/// 更新日期
/// </summary>
[Column("UPDATE_DATE")]
[DataMember]
public DateTime? UpdateDate { get; set; } = DateTime.Now;
}
}

4
AMESCoreStudio.WebApi/Models/AMESContext.cs

@ -609,6 +609,10 @@ namespace AMESCoreStudio.WebApi
/// 維修解碼上傳圖檔資料表
/// </summary>
public DbSet<NgRepairBlob> NgRepairBlobs { get; set; }
/// 過站狀態檔
/// </summary>
public virtual DbSet<StatusType> StatusTypes { get; set; }
}
}

Loading…
Cancel
Save