diff --git a/AMESCoreStudio.Web/Controllers/PCSController.cs b/AMESCoreStudio.Web/Controllers/PCSController.cs index 8f2d2c09..d0436487 100644 --- a/AMESCoreStudio.Web/Controllers/PCSController.cs +++ b/AMESCoreStudio.Web/Controllers/PCSController.cs @@ -1539,6 +1539,35 @@ namespace AMESCoreStudio.Web.Controllers return Json(new Result() { success = true, data = result.Count() }); } + + /// <summary> + /// 判斷治具總類 + /// </summary> + /// <param name="outfitNo">治具編號</param> + /// <param name="partNo">設備名稱(No)</param> + /// <returns></returns> + [HttpPost] + public async Task<JsonResult> CheckOutfitInfoPartNo(string outfitNo, string partNo) + { + string msg = string.Empty; + if (!string.IsNullOrWhiteSpace(outfitNo)) + { + var q = await _pcsApi.GetOutfitInfoByOutfitNo(outfitNo); + if (q != null) + { + var OutfitCommodityInfos = await _pcsApi.GetOutfitCommodityInfo(); + if (!OutfitCommodityInfos.Where(w => w.CommodityID == q.CommodityID && w.CommodityNo == partNo).Any()) + msg = "刷入的治具總類不一致,請確認"; + } + else + { + msg = $"找不到這筆【{outfitNo}】治具編號相關資料,請確認"; + } + + } + return Json(new { data = msg }); + } + #endregion ///// <summary> @@ -3627,15 +3656,27 @@ namespace AMESCoreStudio.Web.Controllers await GetFlowRuleList(); // 起訖序號沒填寫 或者 綁定序號沒填寫 - if ((string.IsNullOrWhiteSpace(model.WipBarcode.StartNO) || string.IsNullOrWhiteSpace(model.WipBarcode.EndNO)) - && string.IsNullOrWhiteSpace(model.BarcodeNo)) + if (model.Type1 == "LIMIT") { - ModelState.AddModelError("error", "請確認新增的條碼是否有填寫?"); - return View(model); + if ((string.IsNullOrWhiteSpace(model.WipBarcode.StartNO) || string.IsNullOrWhiteSpace(model.WipBarcode.EndNO)) + && string.IsNullOrWhiteSpace(model.BarcodeNo)) + { + ModelState.AddModelError("error", "請確認新增的條碼是否有填寫?"); + return View(model); + } + } + else if (model.Type1 == "SOLO") + { + if (string.IsNullOrWhiteSpace(model.WipBarcode.StartNO)) + { + ModelState.AddModelError("error", "請確認新增的條碼是否有填寫?"); + return View(model); + } + model.WipBarcode.EndNO = model.WipBarcode.StartNO; } if ((!string.IsNullOrWhiteSpace(model.WipBarcode.StartNO) || !string.IsNullOrWhiteSpace(model.WipBarcode.EndNO)) - && !string.IsNullOrWhiteSpace(model.BarcodeNo)) + && !string.IsNullOrWhiteSpace(model.BarcodeNo)) { ModelState.AddModelError("error", "請則一選擇要新增條碼的方式?"); return View(model); diff --git a/AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs b/AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs index c6b85537..c34e0a72 100644 --- a/AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs +++ b/AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs @@ -1720,5 +1720,16 @@ namespace AMESCoreStudio.Web //YIRU End ---------------------------------------------------------------------------------------- #endregion + #region OutfitInfoes 設備資料檔 + + /// <summary> + /// By 治具編號 查詢 + /// </summary> + /// <returns></returns> + [WebApiClient.Attributes.HttpGet("api/OutfitInfoes/ByOutfitNo/{id}")] + ITask<OutfitInfo> GetOutfitInfoByOutfitNo(string id); + + #endregion + } } diff --git a/AMESCoreStudio.Web/ViewModels/PCS/PCS004CViewModel.cs b/AMESCoreStudio.Web/ViewModels/PCS/PCS004CViewModel.cs index 7d05e58d..6794c6d9 100644 --- a/AMESCoreStudio.Web/ViewModels/PCS/PCS004CViewModel.cs +++ b/AMESCoreStudio.Web/ViewModels/PCS/PCS004CViewModel.cs @@ -26,6 +26,9 @@ namespace AMESCoreStudio.Web.ViewModels.PCS // 序號綁定 Type SN:內部序號 SSN:出貨序號 public string Type { get; set; } + // 內部條碼綁定類型 Type1 LIMIT:設定區間 SOLO:單一條碼 + public string Type1 { get; set; } + // 綁定條碼 public string BarcodeNo { get; set; } } diff --git a/AMESCoreStudio.Web/Views/PCS/PCS004C.cshtml b/AMESCoreStudio.Web/Views/PCS/PCS004C.cshtml index c2aee0aa..75eb970a 100644 --- a/AMESCoreStudio.Web/Views/PCS/PCS004C.cshtml +++ b/AMESCoreStudio.Web/Views/PCS/PCS004C.cshtml @@ -137,23 +137,23 @@ <tbody> @if (Model.WipBarcodes != null) { - @foreach (var index in Model.WipBarcodes) - { - <tr> - <td> - <input type="text" class="layui-input" asp-for="@index.StartNO" name="WipBarcodes[@i].StartNO" readonly="readonly" /> - - </td> - <td> - <input type="text" class="layui-input" asp-for="@index.EndNO" name="WipBarcodes[@i].EndNO" readonly="readonly" /> - - </td> - <td> - <a class="layui-btn layui-btn-danger layui-btn-xs layui-icon layui-icon-delete" onclick="Remove(this, '@index.StartNO', '@index.EndNO');">刪除</a> - </td> - </tr> - i++; - } + @foreach (var index in Model.WipBarcodes) + { + <tr> + <td> + <input type="text" class="layui-input" asp-for="@index.StartNO" name="WipBarcodes[@i].StartNO" readonly="readonly" /> + + </td> + <td> + <input type="text" class="layui-input" asp-for="@index.EndNO" name="WipBarcodes[@i].EndNO" readonly="readonly" /> + + </td> + <td> + <a class="layui-btn layui-btn-danger layui-btn-xs layui-icon layui-icon-delete" onclick="Remove(this, '@index.StartNO', '@index.EndNO');">刪除</a> + </td> + </tr> + i++; + } } </tbody> </table> @@ -162,6 +162,10 @@ <fieldset class="layui-elem-field layui-field-title"> <legend>新增內部條碼</legend> <div class="layui-form-item"> + <div class="layui-input-inline" style="width:220px"> + <input type="radio" lay-filter="Type1" asp-for="Type1" id="Type1" name="Type1" value="LIMIT" title="設定區間" checked> + <input type="radio" lay-filter="Type1" asp-for="Type1" id="Type1" name="Type1" value="SOLO" title="單一條碼"> + </div> <div class="layui-inline"> <label asp-for="WipBarcode.StartNO" class="layui-form-label"></label> <div class="layui-input-inline"> @@ -175,12 +179,14 @@ </div> </div> </div> + </fieldset> + <fieldset class="layui-elem-field layui-field-title"> + <legend>既有條碼綁定內部條碼</legend> <div class="layui-form-item"> - <label class="layui-form-label">既有條碼綁定內部條碼</label> <div class="layui-input-inline" style="width:220px"> - <input type="radio" name="Type" value="SN" title="內部條碼" checked> - <input type="radio" name="Type" value="SSN" title="出貨條碼"> + <input type="radio" asp-for="Type" id="Type" name="Type" value="SN" title="內部條碼" checked> + <input type="radio" asp-for="Type" id="Type" name="Type" value="SSN" title="出貨條碼"> </div> <div class="layui-input-inline"> <input asp-for="BarcodeNo" class="layui-input" /> @@ -201,6 +207,11 @@ <script type="text/javascript"> layui.use(['form'], function () { var form = layui.form; + form.on('radio(Type1)', function (data) { + console.log('aaaa'); + $("#WipBarcode_StartNO").val(''); + $("#WipBarcode_EndNO").val(''); + }); }); // Table 刪除 diff --git a/AMESCoreStudio.Web/Views/PCS/PCS021.cshtml b/AMESCoreStudio.Web/Views/PCS/PCS021.cshtml index 54196778..6feaa5d3 100644 --- a/AMESCoreStudio.Web/Views/PCS/PCS021.cshtml +++ b/AMESCoreStudio.Web/Views/PCS/PCS021.cshtml @@ -307,6 +307,8 @@ <tr> <td> <input type="text" class="layui-input" asp-for="@index.PartNoName" name="wipOutfits[@k].PartNoName" readonly="readonly" /> + <input type="hidden" asp-for="@index.PartNo" value="@index.PartNo" name="wipOutfits[@k].PartNo" /> + </td> <td> <input type="text" class="layui-input" asp-for="@index.UnitNoName" name="wipOutfits[@k].UnitNoName" readonly="readonly" /> @@ -315,7 +317,7 @@ <input type="text" class="layui-input" asp-for="@index.StationName" name="wipOutfits[@k].StationName" readonly="readonly" /> </td> <td> - <input onkeypress="if( event.keyCode == 13 ) { return false; }" asp-for="@index.Inputs" name="wipOutfits[@k].Inputs" class="layui-input" /> + <input onkeypress="if( event.keyCode == 13 ) { checkOutfit(this); return false; }" onchange="checkOutfit(this);" asp-for="@index.Inputs" name="wipOutfits[@k].Inputs" class="layui-input" /> </td> </tr> k++; @@ -603,7 +605,6 @@ } function AdminInit() { - var hgfull = function () { var layfull = $('[lay-height]'); if (layfull.attr('lay-height')) { @@ -659,5 +660,29 @@ background: '#db4444', }) } + + // 確認治具 + function checkOutfit(val) { + console.log(val.value); + var partNo = $(val).closest('tr').find('input:hidden[id*=PartNo]').val(); + if (val.value.length != 0) { + $.ajax( + { + url: "@Url.Action("CheckOutfitInfoPartNo", "PCS")", + dataType: 'json', + data: { "outfitNo": val.value, "partNo": partNo }, + type: 'post', + success: function (result) { + if (result.data.length != 0) { + ShowInputError(result.data); + } + }, + error: function (result) { + alert(result); + } + }); + } + } + </script> }