diff --git a/AMESCoreStudio.Web/Controllers/JIGController.cs b/AMESCoreStudio.Web/Controllers/JIGController.cs index 1126ff78..4ccf5057 100644 --- a/AMESCoreStudio.Web/Controllers/JIGController.cs +++ b/AMESCoreStudio.Web/Controllers/JIGController.cs @@ -8,6 +8,8 @@ using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.Extensions.Logging; using Newtonsoft.Json; using System.Collections.Generic; +using System.IO; +using System.Linq; using System.Threading.Tasks; namespace AMESCoreStudio.Web.Controllers @@ -137,18 +139,18 @@ namespace AMESCoreStudio.Web.Controllers } ViewBag.UserList = UserItems; } - private async Task GetFactoryUnitsList() - { - var result = await _basApi.GetFactoryUnits(); - - var UnitItems = new List<SelectListItem>(); - UnitItems.Add(new SelectListItem("NA", "0")); - for (int i = 0; i < result.Count; i++) - { - UnitItems.Add(new SelectListItem(result[i].UnitName, result[i].UnitNo.ToString())); - } - ViewBag.FactoryUnit = UnitItems; - } + //private async Task GetFactoryUnitsList() + //{ + // var result = await _basApi.GetFactoryUnits(); + + // var UnitItems = new List<SelectListItem>(); + // UnitItems.Add(new SelectListItem("NA", "0")); + // for (int i = 0; i < result.Count; i++) + // { + // UnitItems.Add(new SelectListItem(result[i].UnitName, result[i].UnitNo.ToString())); + // } + // ViewBag.FactoryUnit = UnitItems; + //} public void GetUserID() { var userID = ""; @@ -164,6 +166,18 @@ namespace AMESCoreStudio.Web.Controllers ViewBag.UserID = user_id; } + private async Task GetOutfitFactoryInfosList() //YIRU + { + var result = await _jigApi.GetOutfitFactoryInfos(); + + var GroupList = new List<SelectListItem>(); + for (int i = 0; i < result.Count; i++) + { + GroupList.Add(new SelectListItem(result[i].OutfitFactoryName, result[i].OutfitFactoryID.ToString())); + } + ViewBag.OutfitFactoryList = GroupList; + } + #endregion #region JIG001 設備種類維護相關 @@ -393,6 +407,86 @@ namespace AMESCoreStudio.Web.Controllers ; } + + //YIRU ADD + //public async Task<IActionResult> JIG002RSaveAsync(InspectionResultBlob model, IFormFile formFile) + //{ + // IResultModel result; + // var userID = ""; + // HttpContext.Request.Cookies.TryGetValue("UserID", out userID); + // int user_id = 0; + // if (userID != null) + // { + // if (int.Parse(userID.ToString()) >= 0) + // { + // user_id = int.Parse(userID.ToString()); + // } + // } + // model.CreateUserID = user_id; + // model.CreateDate = System.DateTime.Now; + // model.UpdateUserID = user_id; + // model.UpdateDate = System.DateTime.Now; + // string FileName = string.Empty; + // string NewName = string.Empty; + // string FilePath = string.Empty; + + + // if (formFile != null) + // { + // if (formFile.Length > 0) + // { + // //取得使用者上傳檔案的原始檔名 + // FileName = Path.GetFileName(formFile.FileName); + // //取原始檔名中的副檔名 + // var fileExt = Path.GetExtension(FileName); + // //為避免使用者上傳的檔案名稱發生重複,重新給一個亂數名稱 + // NewName = Path.GetRandomFileName() + fileExt; + // //指定要寫入的路徑、檔名和副檔名 + // FilePath = $"\\PCSFile\\";//本機目錄 + // using (var stream = new FileStream(_env.WebRootPath + FilePath + NewName, FileMode.Create)) + // { + // await formFile.CopyToAsync(stream); + // } + + // //var fileProvider = _fileServerProvider.GetProvider("/aa"); + // //var fileInfo = fileProvider.GetFileInfo(formFile.FileName); + // //fileInfo = fileProvider.GetFileInfo(formFile.FileName); + // ////遠端目錄 + // //using (var stream = new FileStream(fileInfo.PhysicalPath, FileMode.Create)) + // //{ + // // await formFile.CopyToAsync(stream); + + // model.ImageName = FileName; + // model.NewName = NewName; + // model.FilePath = FilePath;// fileInfo.PhysicalPath; + + // result = await _spcApi.PostInspectionResultBlob(JsonConvert.SerializeObject(model)); + // if (result.Success) + // { + // //var _msg = "上傳成功!"; + // ViewBag.ItemID = model.InspectionItemID; + // ViewBag.MasterID = model.InspectionID; + // return View("SPC005R"); + // } + // else + // { + // ModelState.AddModelError("error", result.Msg); + // } + // } + // } + // else + // { + // ModelState.AddModelError("error", "請選擇要上傳檔案"); + // } + + + // ViewBag.ItemID = model.InspectionItemID; + // ViewBag.MasterID = model.InspectionID; + + // return View("SPC005R"); + //} + + //YIRU ADD [ResponseCache(Duration = 0)] [HttpGet] public async Task<IActionResult> GetOutfitVarityInfoesAsync() @@ -447,8 +541,9 @@ namespace AMESCoreStudio.Web.Controllers } public async Task<IActionResult> JIG003DAsync(int id) { - var result = await _jigApi.DeleteOutfitVendorInfo(id); - return Json(new Result() { success = true, msg = "" }); + var result = await _jigApi.DeleteOutfitVendorInfo(id); + return Json(new Result() { success = true, msg = "" }); + } [HttpPost] public async Task<IActionResult> JIG003CSaveAsync(OutfitVendorInfo model) @@ -532,6 +627,7 @@ namespace AMESCoreStudio.Web.Controllers await GetOutfitCommodityInfoesList(); await GetOutfitVarityInfoesList(); await GetOutfitVendorInfoesList(); + await GetOutfitFactoryInfosList(); return View(); } public async Task<IActionResult> JIG004UAsync(int id) @@ -570,10 +666,30 @@ namespace AMESCoreStudio.Web.Controllers { IResultModel result; + var commodity = await _jigApi.GetOutfitCommodityInfo(model.CommodityID); model.TypeFlag = commodity[0].TypeFlag; + //yiru add 自動產生治具編碼 (取最大號 往後累加產生) + var commodityno = commodity[0].CommodityNo.PadLeft(3,'0'); //類別代號(3碼) + var varity = await _jigApi.GetOutfitVarityInfo(model.VarietyID); + var varityno = varity[0].VarityNo.PadLeft(4,'0'); //種類代號(4碼) + var outfitinfo = await _jigApi.GetOutfitInfoes(); + var outfitinfo_Max = outfitinfo.Where(w => w.OutfitNo.Contains(model.FactoryCode + commodityno + varityno)).OrderBy(o => o.OutfitNo).Select(s => s.OutfitNo).LastOrDefault(); + var outfitinfo_num = 0; + if (outfitinfo_Max!= null) + { + outfitinfo_num = int.Parse(outfitinfo_Max.Substring(outfitinfo_Max.Length -4,4)); + } + + for (int i = 0; i < model.StockQty; i++) + { + model.OutfitNo = model.FactoryCode + commodityno + varityno + (outfitinfo_num + i +1).ToString().PadLeft(4,'0'); + model.QANo = model.OutfitNo; + result = await _jigApi.PostOutfitInfo(JsonConvert.SerializeObject(model)); + } result = await _jigApi.PostOutfitInfo(JsonConvert.SerializeObject(model)); + //yiru add ==== if (result.Success) { @@ -762,8 +878,20 @@ namespace AMESCoreStudio.Web.Controllers if (result.Success) { - var _msg = "領用成功!"; - return RedirectToAction("Refresh", "Home", new { msg = _msg }); + //yiru add 更新outift_into sche + OutfitInfo[0].ScheReturnDay = model.StatusDate; + result = await _jigApi.PutOutfitInfo(model.OutfitID, JsonConvert.SerializeObject(OutfitInfo[0])); + if (result.Success) + { + + var _msg = "領用成功!"; + return RedirectToAction("Refresh", "Home", new { msg = _msg }); + } + else + { + msg = result.Msg; + } + //yiru add } else { @@ -925,5 +1053,158 @@ namespace AMESCoreStudio.Web.Controllers #endregion + #region JIG010設備未歸還查詢相關 yiru + public IActionResult JIG010() + { + return View(); + } + [HttpGet] + public async Task<IActionResult> JIG010VAsync(int id) + { + var result = await _jigApi.GetOutfitInfo(id); + ViewBag.OutfitID = id; + + if (result.Count == 0) + { + return View(); + } + + return View(result[0]); + } + + public async Task<IActionResult> GetOutfitInfoesByQuery1Async(int TypeFlag, int CommodityID, int VarityID, string Status, string QANo, string PartNo, string UseStatus) + { + + + if (string.IsNullOrWhiteSpace(PartNo)) + PartNo = "*"; + if (string.IsNullOrWhiteSpace(QANo)) + QANo = "*"; + + var result = await _jigApi.GetOutfitInfoesByQuery(TypeFlag, CommodityID, VarityID, Status, QANo, PartNo, UseStatus); + + var result_w= result.Where(p => p.UseStatusNo == "B" && p.ScheReturnDay <= System.DateTime.Now).ToList();// 未歸還 + + + + if (result.Count > 0) + { + return Json(new Table() { code = 0, msg = "", data = result_w, count = result_w.Count }); + } + + return Json(new Table() { count = 0, data = null }); + } + + + + #endregion + + #region JIG014 設備基本數據查詢 yiru + + public async Task<IActionResult> JIG014() + { + await GetOutfitCommodityInfoesList(); + return View(); + } + + #endregion + + #region JIG015設備廠區維護相關 + public IActionResult JIG015() + { + return View(); + } + //新增頁面 + public IActionResult JIG015C(int id) + { + GetUserID(); + return View(); + } + //修改页面 + [HttpGet] + public async Task<IActionResult> JIG015UAsync(int id) + { + var result = await _jigApi.GetOutfitFactoryInfo(id); + GetUserID(); + + if (result.Count == 0) + { + return View(); + } + + return View(result[0]); + } + public async Task<IActionResult> JIG015DAsync(int id) + { + var result = await _jigApi.DeleteOutfitFactoryInfo(id); + return Json(new Result() { success = true, msg = "" }); + + } + [HttpPost] + public async Task<IActionResult> JIG015CSaveAsync(OutfitFactoryInfo model) + { + var msg = ""; + GetUserID(); + if (ModelState.IsValid) + { + IResultModel result; + + result = await _jigApi.PostOutfitFactoryInfo(JsonConvert.SerializeObject(model)); + + if (result.Success) + { + var _msg = "添加成功!"; + return RedirectToAction("Refresh", "Home", new { msg = _msg }); + } + else + { + msg = result.Msg; + } + } + if (msg == "") msg = "缺少必填資料"; + ModelState.AddModelError("error", msg); + return View("JIG015C", model); + } + public async Task<IActionResult> JIG015USaveAsync(OutfitFactoryInfo model) + { + var msg = ""; + GetUserID(); + if (ModelState.IsValid) + { + IResultModel result; + + result = await _jigApi.PutOutfitFactoryInfo(model.OutfitFactoryID, JsonConvert.SerializeObject(model)); + + if (result.Success) + { + var _msg = "修改成功!"; + return RedirectToAction("Refresh", "Home", new { msg = _msg }); + } + else + { + msg = result.Msg; + } + } + if (msg == "") msg = "缺少必填資料"; + ModelState.AddModelError("error", msg); + return View("JIG003U", model); + } + + [ResponseCache(Duration = 0)] + [HttpGet] + public async Task<IActionResult> GetOutfitFactoryInfosAsync() + { + var result = await _jigApi.GetOutfitFactoryInfos(); + + if (result.Count > 0) + { + return Json(new Table() { code = 0, msg = "", data = result, count = result.Count }); + } + + return Json(new Table() { count = 0, data = null }); + } + + #endregion + } } diff --git a/AMESCoreStudio.Web/HttpApis/AMES/IJIG.cs b/AMESCoreStudio.Web/HttpApis/AMES/IJIG.cs index c2dccab8..fe7c6a43 100644 --- a/AMESCoreStudio.Web/HttpApis/AMES/IJIG.cs +++ b/AMESCoreStudio.Web/HttpApis/AMES/IJIG.cs @@ -126,8 +126,8 @@ namespace AMESCoreStudio.Web /// </summary> /// <returns></returns> [WebApiClient.Attributes.HttpDelete("api/OutfitVendorInfoes/{id}")] - ITask<string> DeleteOutfitVendorInfo(int id); - + // ITask<string> DeleteOutfitVendorInfo(int id); //修改前 + ITask<ResultModel<string>> DeleteOutfitVendorInfo(int id); //修改後 YIRU /// <summary> /// 根據ID獲取指定設備廠商資料 /// </summary> @@ -233,7 +233,52 @@ namespace AMESCoreStudio.Web #endregion + #region JIG010 設備未歸查詢 TIRU + /// <summary> + /// 獲取設備設備未歸 BY QUERY + /// </summary> + /// <returns></returns> + [WebApiClient.Attributes.HttpGet("api/OutfitInfoes/Query1/{TypeFlag}/{CommodityID}/{VarityID}/{Status}/{QANo}/{PartNo}/{UseStatus}")] + ITask<List<OutfitInfo>> GetOutfitInfoesByQuery1(int TypeFlag, int CommodityID, int VarityID, string Status, string QANo, string PartNo, string UseStatus); + #endregion + + #region JIG015 設備廠別資料維護 YIRU + + /// <summary> + /// 新增設備廠別 + /// </summary> + /// <returns></returns> + [WebApiClient.Attributes.HttpPost("api/OutfitFactoryInfos")] + ITask<ResultModel<OutfitFactoryInfo>> PostOutfitFactoryInfo([FromBody, RawJsonContent] string model); + + /// <summary> + /// 更新設備廠別 + /// </summary> + /// <returns></returns> + [WebApiClient.Attributes.HttpPut("api/OutfitFactoryInfos/{id}")] + ITask<ResultModel<OutfitFactoryInfo>> PutOutfitFactoryInfo(int id, [FromBody, RawJsonContent] string model); + + /// <summary> + /// 刪除設備廠別 + /// </summary> + /// <returns></returns> + [WebApiClient.Attributes.HttpDelete("api/OutfitFactoryInfos/{id}")] + ITask<ResultModel<string>> DeleteOutfitFactoryInfo(int id); + /// <summary> + /// 根據ID獲取指定設備廠別資料 + /// </summary> + /// <returns></returns> + [WebApiClient.Attributes.HttpGet("api/OutfitFactoryInfos/{id}")] + ITask<List<OutfitFactoryInfo>> GetOutfitFactoryInfo(int id); + + /// <summary> + /// 獲取設備廠別資料 + /// </summary> + /// <returns></returns> + [WebApiClient.Attributes.HttpGet("api/OutfitFactoryInfos")] + ITask<List<OutfitFactoryInfo>> GetOutfitFactoryInfos(); + #endregion } } diff --git a/AMESCoreStudio.Web/Views/JIG/JIG004.cshtml b/AMESCoreStudio.Web/Views/JIG/JIG004.cshtml index 6ef86cb9..5bb70071 100644 --- a/AMESCoreStudio.Web/Views/JIG/JIG004.cshtml +++ b/AMESCoreStudio.Web/Views/JIG/JIG004.cshtml @@ -150,7 +150,8 @@ //通过行tool删除,lay-event="del" function del(obj) { var status; - if (obj.data.status == "A") + // if (obj.data.status == "A") //修改前 + if (obj.data.statusNo == "A") //修改後 YIRU status = "停用"; else status = "啟用"; diff --git a/AMESCoreStudio.Web/Views/JIG/JIG004C.cshtml b/AMESCoreStudio.Web/Views/JIG/JIG004C.cshtml index 75b3f679..94c5c36b 100644 --- a/AMESCoreStudio.Web/Views/JIG/JIG004C.cshtml +++ b/AMESCoreStudio.Web/Views/JIG/JIG004C.cshtml @@ -25,7 +25,7 @@ <div class="form-group form-inline my-sm-1"> <label asp-for="FactoryCode" class="control-label col-sm-3"></label> - <select asp-for="FactoryCode" asp-items="@ViewBag.Factory" class="custom-select col-sm-9"> + <select asp-for="FactoryCode" asp-items="@ViewBag.OutfitFactoryList" class="custom-select col-sm-9"> <option value="">請選擇</option> </select> <span asp-validation-for="FactoryCode" class="text-danger offset-sm-3 my-sm-1"></span> @@ -51,7 +51,7 @@ </div> <div class="form-group form-inline my-sm-1"> <label asp-for="QANo" class="control-label col-sm-3"></label> - <input asp-for="QANo" class="form-control col-sm-9" /> + <input asp-for="QANo" class="form-control col-sm-9" value="系統自動產生" /> @* yiru *@ <span asp-validation-for="QANo" class="text-danger offset-sm-3 my-sm-1"></span> </div> <div class="form-group form-inline my-sm-1"> @@ -61,7 +61,7 @@ </div> <div class="form-group form-inline my-sm-1"> <label asp-for="OutfitNo" class="control-label col-sm-3"></label> - <input asp-for="OutfitNo" class="form-control col-sm-9" /> + <input asp-for="OutfitNo" class="form-control col-sm-9" value="系統自動產生" /> @* yiru *@ <span asp-validation-for="OutfitNo" class="text-danger offset-sm-3 my-sm-1"></span> </div> <div class="form-group form-inline my-sm-1"> @@ -165,6 +165,7 @@ $("#CommodityID").change(function () { + var data = $("#CommodityID").val(); getVarityByCommodityID(data); }); diff --git a/AMESCoreStudio.Web/Views/JIG/JIG004U.cshtml b/AMESCoreStudio.Web/Views/JIG/JIG004U.cshtml index 1e07ef55..8087ec91 100644 --- a/AMESCoreStudio.Web/Views/JIG/JIG004U.cshtml +++ b/AMESCoreStudio.Web/Views/JIG/JIG004U.cshtml @@ -52,7 +52,7 @@ </div> <div class="form-group form-inline my-sm-1"> <label asp-for="QANo" class="control-label col-sm-3"></label> - <input asp-for="QANo" class="form-control col-sm-9" /> + <input asp-for="QANo" class="form-control col-sm-9" disabled /> @* yiru *@ <span asp-validation-for="QANo" class="text-danger offset-sm-3 my-sm-1"></span> </div> <div class="form-group form-inline my-sm-1"> @@ -62,93 +62,93 @@ </div> <div class="form-group form-inline my-sm-1"> <label asp-for="OutfitNo" class="control-label col-sm-3"></label> - <input asp-for="OutfitNo" class="form-control col-sm-9" /> - <span asp-validation-for="OutfitNo" class="text-danger offset-sm-3 my-sm-1"></span> - </div> - <div class="form-group form-inline my-sm-1"> - <label asp-for="VendorID" class="control-label col-sm-3"></label> - <select asp-for="VendorID" asp-items="@ViewBag.VendorList" class="custom-select col-sm-9"> - <option value="">請選擇</option> - </select> - <span asp-validation-for="CommodityID" class="text-danger offset-sm-3 my-sm-1"></span> - </div> - <div class="form-group form-inline my-sm-1"> - <label asp-for="ModelNo" class="control-label col-sm-3"></label> - <input asp-for="ModelNo" class="form-control col-sm-9" /> - <span asp-validation-for="ModelNo" class="text-danger offset-sm-3 my-sm-1"></span> - </div> - <div class="form-group form-inline my-sm-1"> - <label asp-for="BarcodeNo" class="control-label col-sm-3"></label> - <input asp-for="BarcodeNo" class="form-control col-sm-9" /> - <span asp-validation-for="BarcodeNo" class="text-danger offset-sm-3 my-sm-1"></span> - </div> - <div class="form-group form-inline my-sm-1"> - <label asp-for="PuchaseDate" class="control-label col-sm-3"></label> - <input asp-for="PuchaseDate" type="date" class="form-control col-sm-9" /> - <span asp-validation-for="PuchaseDate" class="text-danger offset-sm-3 my-sm-1"></span> - </div> - <div class="form-group form-inline my-sm-1"> - <label asp-for="UnitPrice" class="control-label col-sm-3"></label> - <input asp-for="UnitPrice" class="form-control col-sm-9" /> - <span asp-validation-for="UnitPrice" class="text-danger offset-sm-3 my-sm-1"></span> - </div> - <div class="form-group form-inline my-sm-1"> - <label asp-for="CustodianDept" class="control-label col-sm-3"></label> - <input asp-for="CustodianDept" class="form-control col-sm-9" /> - <span asp-validation-for="CustodianDept" class="text-danger offset-sm-3 my-sm-1"></span> - </div> - <div class="form-group form-inline my-sm-1"> - <label asp-for="CustodianName" class="control-label col-sm-3"></label> - <input asp-for="CustodianName" class="form-control col-sm-9" /> - <span asp-validation-for="CustodianName" class="text-danger offset-sm-3 my-sm-1"></span> - </div> - <div class="form-group form-inline my-sm-1"> - <label asp-for="AreaNo" class="control-label col-sm-3"></label> - <input asp-for="AreaNo" class="form-control col-sm-9" /> - <span asp-validation-for="AreaNo" class="text-danger offset-sm-3 my-sm-1"></span> - </div> - <div class="form-group form-inline my-sm-1"> - <label asp-for="LocationNo" class="control-label col-sm-3"></label> - <input asp-for="LocationNo" class="form-control col-sm-9" /> - <span asp-validation-for="LocationNo" class="text-danger offset-sm-3 my-sm-1"></span> - </div> - @*<div class="form-group form-inline my-sm-1"> - <label asp-for="CheckDate" class="control-label col-sm-3"></label> - <input asp-for="CheckDate" type="date" class="form-control col-sm-9" /> - <span asp-validation-for="CheckDate" class="text-danger offset-sm-3 my-sm-1"></span> - </div> - <div class="form-group form-inline my-sm-1"> - <label asp-for="NextDate" class="control-label col-sm-3"></label> - <input asp-for="NextDate" type="date" class="form-control col-sm-9" /> - <span asp-validation-for="NextDate" class="text-danger offset-sm-3 my-sm-1"></span> - </div>*@ - <div class="form-group form-inline my-sm-1"> - <label asp-for="Remark" class="control-label col-sm-3"></label> - <input asp-for="Remark" class="form-control col-sm-9" /> - <span asp-validation-for="Remark" class="text-danger offset-sm-3 my-sm-1"></span> - </div> - <div class="form-group form-inline my-sm-1"> - <label asp-for="Master" class="control-label col-sm-3"></label> - <select asp-for="Master" class="custom-select col-sm-9"> - <option value="Y">是</option> - <option value="N">否</option> - </select> - <span asp-validation-for="Master" class="text-danger offset-sm-3 my-sm-1"></span> - </div> - <div class="form-group form-inline my-sm-1"> - <label asp-for="StatusNo" class="control-label col-sm-3"></label> - <select asp-for="StatusNo" class="custom-select col-sm-9"> - <option value="A">可用</option> - <option value="S">停用</option> - </select> - <span asp-validation-for="StatusNo" 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> + <input asp-for="OutfitNo" class="form-control col-sm-9" disabled /> @* yiru *@ + <span asp-validation-for="OutfitNo" class="text-danger offset-sm-3 my-sm-1"></span> + </div> + <div class="form-group form-inline my-sm-1"> + <label asp-for="VendorID" class="control-label col-sm-3"></label> + <select asp-for="VendorID" asp-items="@ViewBag.VendorList" class="custom-select col-sm-9"> + <option value="">請選擇</option> + </select> + <span asp-validation-for="CommodityID" class="text-danger offset-sm-3 my-sm-1"></span> + </div> + <div class="form-group form-inline my-sm-1"> + <label asp-for="ModelNo" class="control-label col-sm-3"></label> + <input asp-for="ModelNo" class="form-control col-sm-9" /> + <span asp-validation-for="ModelNo" class="text-danger offset-sm-3 my-sm-1"></span> + </div> + <div class="form-group form-inline my-sm-1"> + <label asp-for="BarcodeNo" class="control-label col-sm-3"></label> + <input asp-for="BarcodeNo" class="form-control col-sm-9" /> + <span asp-validation-for="BarcodeNo" class="text-danger offset-sm-3 my-sm-1"></span> + </div> + <div class="form-group form-inline my-sm-1"> + <label asp-for="PuchaseDate" class="control-label col-sm-3"></label> + <input asp-for="PuchaseDate" type="date" class="form-control col-sm-9" /> + <span asp-validation-for="PuchaseDate" class="text-danger offset-sm-3 my-sm-1"></span> + </div> + <div class="form-group form-inline my-sm-1"> + <label asp-for="UnitPrice" class="control-label col-sm-3"></label> + <input asp-for="UnitPrice" class="form-control col-sm-9" /> + <span asp-validation-for="UnitPrice" class="text-danger offset-sm-3 my-sm-1"></span> + </div> + <div class="form-group form-inline my-sm-1"> + <label asp-for="CustodianDept" class="control-label col-sm-3"></label> + <input asp-for="CustodianDept" class="form-control col-sm-9" /> + <span asp-validation-for="CustodianDept" class="text-danger offset-sm-3 my-sm-1"></span> + </div> + <div class="form-group form-inline my-sm-1"> + <label asp-for="CustodianName" class="control-label col-sm-3"></label> + <input asp-for="CustodianName" class="form-control col-sm-9" /> + <span asp-validation-for="CustodianName" class="text-danger offset-sm-3 my-sm-1"></span> + </div> + <div class="form-group form-inline my-sm-1"> + <label asp-for="AreaNo" class="control-label col-sm-3"></label> + <input asp-for="AreaNo" class="form-control col-sm-9" /> + <span asp-validation-for="AreaNo" class="text-danger offset-sm-3 my-sm-1"></span> + </div> + <div class="form-group form-inline my-sm-1"> + <label asp-for="LocationNo" class="control-label col-sm-3"></label> + <input asp-for="LocationNo" class="form-control col-sm-9" /> + <span asp-validation-for="LocationNo" class="text-danger offset-sm-3 my-sm-1"></span> + </div> + @*<div class="form-group form-inline my-sm-1"> + <label asp-for="CheckDate" class="control-label col-sm-3"></label> + <input asp-for="CheckDate" type="date" class="form-control col-sm-9" /> + <span asp-validation-for="CheckDate" class="text-danger offset-sm-3 my-sm-1"></span> + </div> + <div class="form-group form-inline my-sm-1"> + <label asp-for="NextDate" class="control-label col-sm-3"></label> + <input asp-for="NextDate" type="date" class="form-control col-sm-9" /> + <span asp-validation-for="NextDate" class="text-danger offset-sm-3 my-sm-1"></span> + </div>*@ + <div class="form-group form-inline my-sm-1"> + <label asp-for="Remark" class="control-label col-sm-3"></label> + <input asp-for="Remark" class="form-control col-sm-9" /> + <span asp-validation-for="Remark" class="text-danger offset-sm-3 my-sm-1"></span> + </div> + <div class="form-group form-inline my-sm-1"> + <label asp-for="Master" class="control-label col-sm-3"></label> + <select asp-for="Master" class="custom-select col-sm-9"> + <option value="Y">是</option> + <option value="N">否</option> + </select> + <span asp-validation-for="Master" class="text-danger offset-sm-3 my-sm-1"></span> + </div> + <div class="form-group form-inline my-sm-1"> + <label asp-for="StatusNo" class="control-label col-sm-3"></label> + <select asp-for="StatusNo" class="custom-select col-sm-9"> + <option value="A">可用</option> + <option value="S">停用</option> + </select> + <span asp-validation-for="StatusNo" 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> diff --git a/AMESCoreStudio.Web/Views/JIG/JIG005.cshtml b/AMESCoreStudio.Web/Views/JIG/JIG005.cshtml index 1a05a486..355e0633 100644 --- a/AMESCoreStudio.Web/Views/JIG/JIG005.cshtml +++ b/AMESCoreStudio.Web/Views/JIG/JIG005.cshtml @@ -28,7 +28,7 @@ <div class="layui-inline" style="margin-right:5px;"> <label class="layui-inline layui-form-label">設備種類</label> <div class="layui-input-inline" style="width:120px"> - <select lay-filter="Commodity" name="Commodity" id="Commodity" asp-items="@ViewBag.TypesList" style="width:120px"> + <select lay-filter="Commodity" name="Commodity" id="Commodity" asp-items="@ViewBag.TypesList" style="width:120px"> <option value="-99">全部</option> </select> </div> @@ -131,7 +131,7 @@ //通过行tool编辑,lay-event="edit" function edit(obj) { if (obj.data.outfitID) { - hg.open('領用設備', '/JIG/JIG005B/' + obj.data.outfitID, 640,480); + hg.open('領用設備', '/JIG/JIG005B/' + obj.data.outfitID, 640, 480); } } @@ -145,7 +145,7 @@ //通过行tool删除,lay-event="del" function view(obj) { if (obj.data.outfitID) { - hg.open('檢視設備基本資料', '/JIG/JIG005V/' + obj.data.outfitID, 720,520); + hg.open('檢視設備基本資料', '/JIG/JIG005V/' + obj.data.outfitID, 720, 520); } } @@ -170,7 +170,7 @@ function getCommodityByType(data) { var TypeFlag = $("#TypeFlag").val(); $.ajax({ - url: "/JIG/GetOutfitCommodityInfoesByQuery?TypeFlag=" + data +"&Status=A", + url: "/JIG/GetOutfitCommodityInfoesByQuery?TypeFlag=" + data + "&Status=A", dataType: 'json', //data: { id: data }, contentType: "application/json", @@ -208,12 +208,13 @@ $(function () { tt(); }); + //基本数据表格 function tt() { table = hg.table.datatable('test', '設備領用/歸還', '/JIG/GetOutfitInfoesByQuery?TypeFlag=' + $("#TypeFlag").val() + '&CommodityID=' + $("#Commodity").val() + '&VarityID=-99&Status=A&QANo=' + $("#QANo").val() + '&PartNo=*&UseStatus=U' , {}, tableCols, toolbar, true, 'full-100', ['filter', 'print', 'exports']); } - + </script> } \ No newline at end of file diff --git a/AMESCoreStudio.Web/Views/JIG/JIG010.cshtml b/AMESCoreStudio.Web/Views/JIG/JIG010.cshtml new file mode 100644 index 00000000..0697b60d --- /dev/null +++ b/AMESCoreStudio.Web/Views/JIG/JIG010.cshtml @@ -0,0 +1,206 @@ +@{ + 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"> + <div class="layui-form" style="margin-bottom:5px;"> + <div class="layui-form-item"> + <div class="layui-inline" style="margin-right:5px;"> + <label class="layui-inline layui-form-label">種類歸屬</label> + <div class="layui-input-inline" style="width:90px"> + <select lay-filter="TypeFlag" name="TypeFlag" id="TypeFlag" style="width:90px"> + <option value="-99">全部</option> + <option value="0">設備</option> + <option value="1">料件</option> + <option value="2">儀器</option> + </select> + </div> + </div> + <div class="layui-inline" style="margin-right:5px;"> + <label class="layui-inline layui-form-label">設備種類</label> + <div class="layui-input-inline" style="width:120px"> + <select lay-filter="Commodity" name="Commodity" id="Commodity" asp-items="@ViewBag.TypesList" style="width:120px"> + <option value="-99">全部</option> + </select> + </div> + </div> + </div> + <div class="layui-form-item"> + <div class="layui-inline" style="margin-right:5px;"> + <label class="layui-inline layui-form-label">管理編號</label> + <div class="layui-input-inline"> + <input type="text" name="QANo" id="QANo" placeholder="请输入管理編號" autocomplete="off" class="layui-input"> + </div> + </div> + <div class="layui-inline" style="margin-left:0px;"> + <div class="layui-btn-group"> + <button class="layui-btn layui-btn-sm layui-btn-normal" id="querysubmit" lay-filter="querysubmit"> + <i class="layui-icon layui-icon-sm"></i> + </button> + </div> + </div> + </div> + </div> + <table class="layui-hide" id="test" lay-filter="test"></table> + </div> +</div> + +@section Scripts{ + <script type="text/javascript"> + var tableCols = [[ + { + field: 'outfitID', + width: 80, + title: '#' + }, + { + field: 'outfitNo', + title: '設備編碼' + }, + { + field: 'qaNo', + title: '管理編號' + }, + { + field: 'partNo', + title: '財產名稱' + }, + //{ + // field: 'statusNo', + // title: '狀態', + // templet: function (d) { + // var btn ; + // if (d.statusNo == "A") + // btn = '有效'; + // else + // btn = '無效'; + // return btn + // //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>' + // } + //}, + { + field: 'useStatusNo', + title: '狀態', + templet: function (d) { + var str; + if (d.useStatusNo == "B") + str = '領用'; + else if (d.useStatusNo == "N") + str = '新設備'; + else if (d.useStatusNo == "R") + str = '歸還'; + else if (d.useStatusNo == "S") + str = '報廢'; + return str + //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>' + } + }, + { + field: 'locationNo', + title: '儲位' + }, + { + field: 'custodianName', + title: '保管人' + }, + { + field: 'right', + width: 200, + title: '操作', + fixed: 'right', + templet: function (d) { + var btn = '<a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-edit" lay-event="view">檢視</a>'; + + return btn + } + }] + ]; + + + + //通过行tool删除,lay-event="del" + function view(obj) { + if (obj.data.outfitID) { + hg.open('檢視設備基本資料', '/JIG/JIG010V/' + obj.data.outfitID, 720, 520); + } + } + + ////搜索 + $('#querysubmit').click(function () { + + hg.msghide("刷新数据!"); + tt(); + + }); + + layui.use(['form', 'layer', 'laydate'], function () { + form = layui.form; + form.on('select(TypeFlag)', function (data) { + var data = $("#TypeFlag").val(); + console.info(data); + getCommodityByType(data); + }); + + }); + + function getCommodityByType(data) { + var TypeFlag = $("#TypeFlag").val(); + $.ajax({ + url: "/JIG/GetOutfitCommodityInfoesByQuery?TypeFlag=" + data + "&Status=A", + dataType: 'json', + //data: { id: data }, + contentType: "application/json", + type: 'get', + success: function (result) { + if (result.data) { + $("#Commodity").empty(); + var count = 0; + $('#Commodity').append(new Option("全部", "-99")); + $.each(result.data, function (index, item) { + $('#Commodity').append(new Option(item.commodityName, item.commodityID)); + count = count + 1; + }); + if (count == 0) { + $("#Commodity").empty(); + $('#Commodity').append(new Option("無選項", "")); + + } + } + else { + $("#Commodity").empty(); + $('#Commodity').append(new Option("無選項", "")); + } + layui.form.render("select"); + } + }); + }; + ////搜索 + $('#querysubmit').click(function () { + hg.msghide("刷新数据!"); + tt(); + }); + + var table; + $(function () { + tt(); + }); + + //基本数据表格 + function tt() { + table = hg.table.datatable('test', '設備未歸還', + '/JIG/GetOutfitInfoesByQuery1?TypeFlag=' + $("#TypeFlag").val() + '&CommodityID=' + $("#Commodity").val() + '&VarityID=-99&Status=A&QANo=*&PartNo=*&UseStatus=B' + , {}, tableCols, toolbar, true, 'full-100', ['filter', 'print', 'exports']); + + } + + </script> +} \ No newline at end of file diff --git a/AMESCoreStudio.Web/Views/JIG/JIG010V.cshtml b/AMESCoreStudio.Web/Views/JIG/JIG010V.cshtml new file mode 100644 index 00000000..7a9e89ae --- /dev/null +++ b/AMESCoreStudio.Web/Views/JIG/JIG010V.cshtml @@ -0,0 +1,156 @@ +@model AMESCoreStudio.WebApi.Models.AMES.OutfitInfo + + +@{ ViewData["Title"] = "JIG010V"; + Layout = "~/Views/Shared/_AMESLayout.cshtml"; } + +<style> + .control-label { + justify-content: flex-end !important; + } + + .text-error { + color: #dc3545 !important; + } + + .my-read-only-class { + cursor: not-allowed; + } +</style> + +<div class="layui-card"> + <div class="layui-card-body"> + <div class="layui-form" style="margin-bottom:5px;"> + <div class="layui-form-item"> + <div class="layui-inline" style="margin-right:5px;"> + <div class="layui-inline" style="margin-right:5px;"> + <label class="layui-inline layui-form-label">是否有效</label> + <div class="layui-input-inline" style="width:80px"> + <select asp-for="StatusNo" style="width:80px" disabled> + <option value="*">全部</option> + <option value="A">有效</option> + <option value="S">無效</option> + </select> + </div> + </div> + <div class="layui-inline" style="margin-right:5px;"> + <label asp-for="UseStatusNo" class="layui-inline layui-form-label"></label> + <div class="layui-input-inline" style="width:80px"> + <select asp-for="UseStatusNo" style="width:80px" disabled> + <option value="*">全部</option> + <option value="N">新設備</option> + <option value="B">領用</option> + <option value="R">歸還</option> + <option value="F">送修</option> + <option value="S">報廢</option> + </select> + </div> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-inline layui-form-label">設備種類</label> + <div class="layui-input-inline" style="width:120px"> + <select asp-for="CommodityID" asp-items="@ViewBag.TypesList" style="width:120px" disabled> + <option value="-99">全部</option> + </select> + </div> + </div> + <div class="layui-inline" style="margin-right:5px;"> + <label asp-for="QANo" class="layui-inline layui-form-label"></label> + <div class="layui-input-inline"> + <input asp-for="QANo" class="layui-input" readonly> + </div> + </div> + <div class="layui-inline" style="margin-right:5px;"> + <label asp-for="PuchaseDate" class="layui-inline layui-form-label"></label> + <div class="layui-input-inline"> + <input asp-for="PuchaseDate" type="date" class="layui-input" readonly> + </div> + </div> + </div> + </div> + <table class="layui-hide" id="sop" lay-filter="sop"></table> + + </div> +</div> + +@section Scripts { + @{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); + await Html.RenderPartialAsync("_FileinputScriptsPartial"); } + +<script type="text/javascript"> + + var tableCols = [[ + { + field: 'createDate', + title: '狀態建立日期', + width: 120, + sort: true, + templet: '<div>{{ layui.util.toDateString(d.createDate, "yyyy/MM/dd") }}</div>' + }, + { + field: 'statusNo', + title: '設備狀態', + width: 80, + templet: function (d) { + var str; + if (d.statusNo== "N") str='新設備'; + else if (d.statusNo== "B") str = '領用'; + else if (d.statusNo=="R")str='歸還'; + else if (d.statusNo=="F")str='送修'; + else if (d.statusNo=="S")str='報廢'; + return str + } + }, + { + field: 'statusUserID', + templet: function (d) { + var str; + if (d.statusNo == "N") str = ''; + else if (d.statusNo == "B") str = '領用人員:' + d.statusUserID; + else if (d.statusNo == "R") str = '歸還人員:' + d.statusUserID; + else if (d.statusNo == "F") str = '送修人員:' + d.statusUserID; + else if (d.statusNo == "S") str = '報廢人員:' + d.statusUserID + ' 判定人員:' + d.confirmUserID; + return str + } + }, + { + field: 'statusDate', + templet: function (d) { + var str; + if (d.statusNo == "N") str = ''; + else if (d.statusNo == "B") str = '預計歸還日期:' + d.statusDate; + else if (d.statusNo == "R") str = '實際歸還日期:' + d.statusDate; + else if (d.statusNo == "F") str = '送修日期:' + d.createDate + ' 預計歸還日期:' + d.statusDate; + else if (d.statusNo == "S") str = '報廢日期:' + d.statusDate; + return str + } + }, + { + field: 'remark', + title: '備註' + + } + ]]; + //基本数据表格 + var table; + $(function () { + tt(); + }); + function tt() { + //基本数据表格 + table = hg.table.datatable('sop', '設備狀態紀錄', '/JIG/GetOutfitStatusLogDtoByOutfitID?id=' + @ViewBag.OutfitID , {}, tableCols, false, 'full-100'); + }; + + $(document).ready(function () { + var error = '@Html.ValidationMessage("error")'; + if ($(error).text() != '') { + parent.hg.msg(error); + } + }); + +</script> + + +} + diff --git a/AMESCoreStudio.Web/Views/JIG/JIG014.cshtml b/AMESCoreStudio.Web/Views/JIG/JIG014.cshtml new file mode 100644 index 00000000..388b532f --- /dev/null +++ b/AMESCoreStudio.Web/Views/JIG/JIG014.cshtml @@ -0,0 +1,237 @@ +@{ + 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"> + <div class="layui-form" style="margin-bottom:5px;"> + <div class="layui-form-item"> + <div class="layui-inline" style="margin-right:5px;"> + <label class="layui-inline layui-form-label">種類歸屬</label> + <div class="layui-input-inline" style="width:90px"> + <select lay-filter="TypeFlag" name="TypeFlag" id="TypeFlag" style="width:90px"> + <option value="-99">全部</option> + <option value="0">設備</option> + <option value="1">料件</option> + <option value="2">儀器</option> + </select> + </div> + </div> + <div class="layui-inline" style="margin-right:5px;"> + <label class="layui-inline layui-form-label">設備種類</label> + <div class="layui-input-inline" style="width:120px"> + <select lay-filter="Commodity" name="Commodity" id="Commodity" asp-items="@ViewBag.TypesList" style="width:120px"> + <option value="-99">全部</option> + </select> + </div> + </div> + <div class="layui-inline" style="margin-right:5px;"> + <label class="layui-inline layui-form-label">設備規格</label> + <div class="layui-input-inline"> + <select name="Varity" id="Varity"> + <option value="-99">全部</option> + </select> + </div> + </div> + </div> + <div class="layui-form-item"> + <div class="layui-inline" style="margin-right:5px;"> + <label class="layui-inline layui-form-label">管理編號</label> + <div class="layui-input-inline"> + <input type="text" name="QANo" id="QANo" placeholder="请输入管理編號" autocomplete="off" class="layui-input"> + </div> + </div> + <div class="layui-inline" style="margin-right:5px;"> + <label class="layui-inline layui-form-label">財產名稱</label> + <div class="layui-input-inline"> + <input type="text" name="PartNo" id="PartNo" placeholder="请输入財產名稱" autocomplete="off" class="layui-input"> + </div> + </div> + <div class="layui-inline" style="margin-right:5px;"> + <label class="layui-inline layui-form-label">是否有效</label> + <div class="layui-input-inline" style="width:80px"> + <select name="Status" id="Status" style="width:80px"> + <option value="*">全部</option> + <option value="A">有效</option> + <option value="S">無效</option> + </select> + </div> + </div> + <div class="layui-inline" style="margin-left:0px;"> + <div class="layui-btn-group"> + <button class="layui-btn layui-btn-sm layui-btn-normal" id="querysubmit" lay-filter="querysubmit"> + <i class="layui-icon layui-icon-sm"></i> + </button> + </div> + </div> + </div> + </div> + <table class="layui-hide" id="test" lay-filter="test"></table> + </div> +</div> + +@section Scripts{ + <script type="text/javascript"> + var tableCols = [[ + { + field: 'outfitID', + width: 80, + title: '#' + }, + { + field: 'outfitNo', + title: '設備編碼' + }, + { + field: 'qaNo', + title: '管理編號' + }, + { + field: 'partNo', + title: '財產名稱' + }, + { + field: 'statusNo', + title: '狀態', + templet: function (d) { + var btn; + if (d.statusNo == "A") + btn = '有效'; + else + btn = '無效'; + return btn + //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>' + } + }, + { + field: 'useTimes', + title: '使用次數' + }, + { + field: 'locationNo', + title: '儲位' + }, + { + field: 'custodianName', + title: '保管人' + }] + ]; + + + + ////搜索 + $('#querysubmit').click(function () { + + hg.msghide("刷新数据!"); + tt(); + + }); + + //$("#TypeFlag").change(function () { + // alert("123"); + // var data = $("#TypeFlag").val(); + // getCommodityByType(data); + //}); + layui.use(['form', 'layer', 'laydate'], function () { + form = layui.form; + form.on('select(TypeFlag)', function (data) { + var data = $("#TypeFlag").val(); + console.info(data); + getCommodityByType(data); + }); + form.on('select(Commodity)', function (data) { + var data = $("#Commodity").val(); + console.info(data); + getVarityByCommodityID(data); + }); + + }); + + function getCommodityByType(data) { + var TypeFlag = $("#TypeFlag").val(); + $.ajax({ + url: "/JIG/GetOutfitCommodityInfoesByQuery?TypeFlag=" + data + "&Status=A", + dataType: 'json', + //data: { id: data }, + contentType: "application/json", + type: 'get', + success: function (result) { + if (result.data) { + $("#Commodity").empty(); + var count = 0; + $('#Commodity').append(new Option("全部", "-99")); + $.each(result.data, function (index, item) { + $('#Commodity').append(new Option(item.commodityName, item.commodityID)); + count = count + 1; + }); + if (count == 0) { + $("#Commodity").empty(); + $('#Commodity').append(new Option("無選項", "")); + + } + } + else { + $("#Commodity").empty(); + $('#Commodity').append(new Option("無選項", "")); + } + layui.form.render("select"); + } + }); + }; + function getVarityByCommodityID(data) { + $.ajax({ + url: "/JIG/GetOutfitVarityInfoesByQuery?TypeFlag=*&CommodityID=" + data + "&Status=A", + dataType: 'json', + //data: { id: data }, + contentType: "application/json", + type: 'get', + success: function (result) { + if (result.data) { + $("#Varity").empty(); + var count = 0; + $('#Varity').append(new Option("全部", "-99")); + $.each(result.data, function (index, item) { + $('#Varity').append(new Option(item.varityName, item.varityID)); + count = count + 1; + }); + if (count == 0) { + $("#Varity").empty(); + $('#Varity').append(new Option("無選項", "")); + + } + } + else { + $("#Varity").empty(); + $('#Varity').append(new Option("無選項", "")); + } + layui.form.render("select"); + } + }); + }; + ////搜索 + $('#querysubmit').click(function () { + hg.msghide("刷新数据!"); + tt(); + }); + + var table; + $(function () { + tt(); + }); + //基本数据表格 + function tt() { + table = hg.table.datatable('test', '設備規格維護', + '/JIG/GetOutfitInfoesByQuery?TypeFlag=' + $("#TypeFlag").val() + '&CommodityID=' + $("#Commodity").val() + '&VarityID=' + $("#Varity").val() + '&Status=' + $("#Status").val() + '&QANo=' + $("#QANo").val() + '&PartNo=' + $("#PartNo").val() + '&UseStatus=*' + , {}, tableCols, toolbar, true, 'full-100', ['filter', 'print', 'exports']); + } + + </script> +} \ No newline at end of file diff --git a/AMESCoreStudio.Web/Views/JIG/JIG015.cshtml b/AMESCoreStudio.Web/Views/JIG/JIG015.cshtml new file mode 100644 index 00000000..a6401da7 --- /dev/null +++ b/AMESCoreStudio.Web/Views/JIG/JIG015.cshtml @@ -0,0 +1,118 @@ +@{ + 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: 'outfitFactoryID', + width: 80, + title: '#' + }, + { + field: 'outfitFactoryNo', + title: '廠別代碼' + }, + { + field: 'outfitFactoryName', + title: '廠別名稱' + }, + { + field: 'statusNo', + 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>' + var btn = '<a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-edit" lay-event="edit">修改</a>'; + if (d.statusNo == "A") + btn += ' <a class="layui-btn layui-btn-danger layui-btn-xs layui-icon layui-icon-delete" lay-event="del">停用</a>'; + else + btn += ' <a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-edit" lay-event="del">啟用</a>'; + return btn + } + }] + ]; + + //通过行tool编辑,lay-event="edit" + function edit(obj) { + //if (obj.data.outfitFactoryID) { + if (obj.data.statusNo == "A") { + hg.open('修改設備廠別', '/JIG/JIG015U/' + obj.data.outfitFactoryID, 640, 320); + } + else if (obj.data.statusNo == "S") { + hg.msghide("設備廠別已停用,不可修改!"); + } + } + + + //通过行tool删除,lay-event="del" + function del(obj) { + var status; + if (obj.data.statusNo == "A") + status = "停用"; + else + status = "啟用"; + + + if (obj.data.outfitFactoryID) { + hg.confirm("設備廠別:" + obj.data.outfitFactoryName + ",确定要" + status+"吗?", function () { + $.ajax({ + url: '/JIG/JIG015D', + data: { id: obj.data.outfitFactoryID }, + type: 'POST', + success: function (data) { + if (data.success) { + // obj.del(); //只删本地数据 + table && table.reload(data); + hg.msghide(status + "成功!"); + } + else { + hg.msg(data.msg); + } + }, + error: function () { + hg.msg("网络请求失败!"); + } + }); + }); + } + } + var toolbar = [{ + text: '新增', + layuiicon: '', + class: 'layui-btn-normal', + handler: function () { + hg.open('新增設備廠商', '/JIG/JIG015C', 640, 320); + + } + } + ]; + //基本数据表格 + var table = hg.table.datatable('test', '設備廠商維護', '/JIG/GetOutfitFactoryInfos', {}, tableCols, toolbar, true, 'full-100', ['filter', 'print', 'exports']); + </script> +} \ No newline at end of file diff --git a/AMESCoreStudio.Web/Views/JIG/JIG015C.cshtml b/AMESCoreStudio.Web/Views/JIG/JIG015C.cshtml new file mode 100644 index 00000000..7088f057 --- /dev/null +++ b/AMESCoreStudio.Web/Views/JIG/JIG015C.cshtml @@ -0,0 +1,60 @@ +@model AMESCoreStudio.WebApi.Models.AMES.OutfitFactoryInfo + + +@{ ViewData["Title"] = "JIG015C"; + 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="JIG015CSave"> + <div asp-validation-summary="ModelOnly" class="text-danger"></div> + <input type="hidden" asp-for="OutfitFactoryID" value="0" /> + <input type="hidden" asp-for="CreateUserID" value="@ViewBag.UserID" /> + <input type="hidden" asp-for="UpdateUserID" value="@ViewBag.UserID" /> + <input type="hidden" asp-for="StatusNo" value="A" /> + <input type="hidden" asp-for="CreateDate" value="@System.DateTime.Now" /> + <input type="hidden" asp-for="UpdateDate" value="@System.DateTime.Now" /> + + + <div class="form-group form-inline my-sm-1"> + <label asp-for="OutfitFactoryNo" class="control-label col-sm-3"></label> + <input asp-for="OutfitFactoryNo" class="form-control col-sm-9" /> + <span asp-validation-for="OutfitFactoryNo" class="text-danger offset-sm-3 my-sm-1"></span> + </div> + <div class="form-group form-inline my-sm-1"> + <label asp-for="OutfitFactoryName" class="control-label col-sm-3"></label> + <input asp-for="OutfitFactoryName" class="form-control col-sm-9" /> + <span asp-validation-for="OutfitFactoryName" 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> + + +} + diff --git a/AMESCoreStudio.Web/Views/JIG/JIG015U.cshtml b/AMESCoreStudio.Web/Views/JIG/JIG015U.cshtml new file mode 100644 index 00000000..289ce14a --- /dev/null +++ b/AMESCoreStudio.Web/Views/JIG/JIG015U.cshtml @@ -0,0 +1,61 @@ +@model AMESCoreStudio.WebApi.Models.AMES.OutfitFactoryInfo + + +@{ ViewData["Title"] = "JIG015U"; + 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="JIG015USave"> + <div asp-validation-summary="ModelOnly" class="text-danger"></div> + <input type="hidden" asp-for="OutfitFactoryID" /> + <input type="hidden" asp-for="StatusNo" /> + <input type="hidden" asp-for="CreateUserID" /> + <input type="hidden" asp-for="UpdateUserID" value="@ViewBag.UserID" /> + <input type="hidden" asp-for="CreateDate" /> + <input type="hidden" asp-for="UpdateDate" value="@System.DateTime.Now" /> + + <div class="form-group form-inline my-sm-1"> + <label asp-for="OutfitFactoryNo" class="control-label col-sm-3"></label> + <input asp-for="OutfitFactoryNo" class="form-control col-sm-9" /> + <span asp-validation-for="OutfitFactoryNo" class="text-danger offset-sm-3 my-sm-1"></span> + </div> + <div class="form-group form-inline my-sm-1"> + <label asp-for="OutfitFactoryName" class="control-label col-sm-3"></label> + <input asp-for="OutfitFactoryName" class="form-control col-sm-9" /> + <span asp-validation-for="OutfitFactoryName" 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> + + +} + diff --git a/AMESCoreStudio.WebApi/Controllers/AMES/OutfitFactoryInfosController.cs b/AMESCoreStudio.WebApi/Controllers/AMES/OutfitFactoryInfosController.cs new file mode 100644 index 00000000..a431020c --- /dev/null +++ b/AMESCoreStudio.WebApi/Controllers/AMES/OutfitFactoryInfosController.cs @@ -0,0 +1,208 @@ +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 OutfitFactoryInfosController : ControllerBase + { + private readonly AMESContext _context; + + /// <summary> + /// + /// </summary> + /// <param name="context"></param> + public OutfitFactoryInfosController(AMESContext context) + { + _context = context; + } + + /// <summary> + /// + /// </summary> + /// <returns></returns> + // GET: api/OutfitFactoryInfos + [HttpGet] + public async Task<ActionResult<IEnumerable<OutfitFactoryInfo>>> GetOutfitFactoryInfo() + { + IQueryable<OutfitFactoryInfo> q = _context.OutfitFactoryInfos; + + q = q.OrderBy(p => p.OutfitFactoryID); + + var OutfitFactoryInfo = await q.ToListAsync(); + + return OutfitFactoryInfo; + } + + /// <summary> + /// + /// </summary> + /// <param name="id"></param> + /// <returns></returns> + // GET: api/OutfitFactoryInfos/5 + [HttpGet("{id}")] + public async Task<ActionResult<IEnumerable<OutfitFactoryInfo>>> GetOutfitFactoryInfo(int id) + { + IQueryable<OutfitFactoryInfo> q = _context.OutfitFactoryInfos; + q = q.Where(p => p.OutfitFactoryID.Equals(id)); + + var OutfitFactoryInfo = await q.ToListAsync(); + + if (OutfitFactoryInfo == null) + { + return NotFound(); + } + + return OutfitFactoryInfo; + } + + /// <summary> + /// By 廠別代碼 查詢 + /// </summary> + /// <param name="id">廠別代碼</param> + /// <returns></returns> + [HttpGet("ByOutfitNo/{id}")] + public async Task<ActionResult<OutfitFactoryInfo>> GetOutfitFactoryInfoByOutfitFactoryNo(string id) + { + var q = await _context.OutfitFactoryInfos.Where(w => w.OutfitFactoryNo == id).FirstOrDefaultAsync(); + return q; + } + + /// <summary> + /// + /// </summary> + /// <param name="id"></param> + /// <param name="OutfitFactoryInfo"></param> + /// <returns></returns> + // PUT: api/OutfitFactoryInfos/5 + [HttpPut("{id}")] + public async Task<ResultModel<OutfitFactoryInfo>> PutOutfitFactoryInfo(int id, [FromBody] OutfitFactoryInfo OutfitFactoryInfo) + { + ResultModel<OutfitFactoryInfo> result = new ResultModel<OutfitFactoryInfo>(); + if (id != OutfitFactoryInfo.OutfitFactoryID) + { + result.Success = false; + result.Msg = "廠別ID錯誤"; + return result; + } + + _context.Entry(OutfitFactoryInfo).State = EntityState.Modified; + + try + { + await _context.SaveChangesAsync(); + } + catch (Exception ex) + { + + result.Success = false; + result.Msg = ex.Message; + return result; + + } + + result.Success = true; + result.Msg = "OK"; + return result; + } + + /// <summary> + /// 新增资料 + /// </summary> + /// <param name="OutfitFactoryInfo"></param> + /// <returns></returns> + // POST: api/OutfitFactoryInfos + [HttpPost] + public async Task<ResultModel<OutfitFactoryInfo>> PostOutfitFactoryInfo(OutfitFactoryInfo OutfitFactoryInfo) + { + ResultModel<OutfitFactoryInfo> result = new ResultModel<OutfitFactoryInfo>(); + Helper helper = new Helper(_context); + OutfitFactoryInfo.OutfitFactoryID = helper.GetIDKey("OUTFIT_FACTORY_ID").Result; + + _context.OutfitFactoryInfos.Add(OutfitFactoryInfo); + + try + { + await _context.SaveChangesAsync(); + } + catch (Exception ex) + { + + result.Success = false; + result.Msg = ex.Message; + return result; + + } + + result.Success = true; + result.Msg = "OK"; + return result; + } + + /// <summary> + /// + /// </summary> + /// <param name="id"></param> + /// <returns></returns> + // DELETE: api/OutfitFactoryInfos/5 + [HttpDelete("{id}")] + public async Task<ResultModel<OutfitFactoryInfo>> DeleteOutfitFactoryInfo(int id) + { + ResultModel<OutfitFactoryInfo> result = new ResultModel<OutfitFactoryInfo>(); + var OutfitFactoryInfo = await _context.OutfitFactoryInfos.Where(p => p.OutfitFactoryID == id).FirstOrDefaultAsync(); + if (OutfitFactoryInfo == null) + { + result.Success = false; + result.Msg = "廠別ID錯誤"; + return result; + } + + //_context.OutfitFactoryInfos.Remove(OutfitFactoryInfo); + + OutfitFactoryInfo newOutfitFactoryInfo = new OutfitFactoryInfo(); + newOutfitFactoryInfo = OutfitFactoryInfo; + + if (OutfitFactoryInfo.StatusNo == "A") + newOutfitFactoryInfo.StatusNo = "S"; + else + newOutfitFactoryInfo.StatusNo = "A"; + + _context.Entry(newOutfitFactoryInfo).State = EntityState.Modified; + + try + { + await _context.SaveChangesAsync(); + } + catch (Exception ex) + { + + result.Success = false; + result.Msg = ex.Message; + return result; + + } + + result.Success = true; + result.Msg = "OK"; + return result; + + } + + private bool OutfitFactoryInfoExists(int id) + { + return _context.OutfitFactoryInfos.Any(e => e.OutfitFactoryID == id); + } + } +} diff --git a/AMESCoreStudio.WebApi/Models/AMES/OutfitFactoryInfo.cs b/AMESCoreStudio.WebApi/Models/AMES/OutfitFactoryInfo.cs new file mode 100644 index 00000000..cea19c2d --- /dev/null +++ b/AMESCoreStudio.WebApi/Models/AMES/OutfitFactoryInfo.cs @@ -0,0 +1,83 @@ +using System; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using System.Runtime.Serialization; + + +namespace AMESCoreStudio.WebApi.Models.AMES +{ + /// <summary> + /// 設備廠別資料檔 + /// </summary> + + [Table("OUTFIT_FACTORY_INFO", Schema = "JHAMES")] + public partial class OutfitFactoryInfo + { + /// <summary> + /// 廠別ID + /// </summary> + [Key] + [Column("OUTFIT_FACTORY_ID")] + [DataMember] + [Required] + [Display(Name = "廠別ID")] + public int OutfitFactoryID { get; set; } + + /// <summary> + /// 廠別名稱 + /// </summary> + [Column("OUTFIT_FACTORY_NAME")] + [DataMember] + [Required] + [Display(Name = "廠別名稱")] + public string OutfitFactoryName { get; set; } + + /// <summary> + /// 廠別代碼 + /// </summary> + [Column("OUTFIT_FACTORY_NO")] + [StringLength(1)] + [DataMember] + [Required] + [Display(Name = "廠別代碼")] + public string OutfitFactoryNo { get; set; } + + /// <summary> + /// 廠別狀態 + /// </summary> + [Column("STATUS_NO")] + [StringLength(2)] + [DataMember] + [Required] + [Display(Name = "廠別狀態")] + public string StatusNo { get; set; } + + /// <summary> + /// 建立者 + /// </summary> + [Column("CREATE_USERID")] + [DataMember] + public int CreateUserID { get; set; } = 0; + + /// <summary> + /// 創建日期 + /// </summary> + [Column("CREATE_DATE")] + [DataMember] + public DateTime CreateDate { get; set; } = System.DateTime.Now; + + /// <summary> + /// 更新者ID + /// </summary> + [Column("UPDATE_USERID")] + [DataMember] + public int UpdateUserID { get; set; } = 0; + + /// <summary> + /// 更新日期 + /// </summary> + [Column("UPDATE_DATE", TypeName = "DATE")] + [DataMember] + public DateTime UpdateDate { get; set; } = System.DateTime.Now; + } +} diff --git a/AMESCoreStudio.WebApi/Models/AMES/OutfitVarityInfo.cs b/AMESCoreStudio.WebApi/Models/AMES/OutfitVarityInfo.cs index 1e279488..d518dbd3 100644 --- a/AMESCoreStudio.WebApi/Models/AMES/OutfitVarityInfo.cs +++ b/AMESCoreStudio.WebApi/Models/AMES/OutfitVarityInfo.cs @@ -46,7 +46,7 @@ namespace AMESCoreStudio.WebApi.Models.AMES /// 規格名稱 /// </summary> [Column("VARIETY_NAME")] - [StringLength(20)] + [StringLength(40)] //YIRU [DataMember] [Required] [Display(Name = "規格名稱")] diff --git a/AMESCoreStudio.WebApi/Models/AMESContext.cs b/AMESCoreStudio.WebApi/Models/AMESContext.cs index 77e3d34e..229e111f 100644 --- a/AMESCoreStudio.WebApi/Models/AMESContext.cs +++ b/AMESCoreStudio.WebApi/Models/AMESContext.cs @@ -99,8 +99,10 @@ namespace AMESCoreStudio.WebApi //Yiru add --------------------------------------------------------------------------------------------------------------------------- modelBuilder.Entity<WareHouseing>().HasKey(c => new { c.InhouseNo, c.SeqID, c.SerialNo }); + modelBuilder.Entity<OutfitFactoryInfo>().HasKey(c => new { c.OutfitFactoryID }); //Yiru End --------------------------------------------------------------------------------------------------------------------------- + modelBuilder.Entity<InspectionResultBlob>().HasKey(c => new { c.InspectionItemID, c.InspectionID,c.CreateDate }); modelBuilder.Entity<InspectionResultDetail>().HasKey(c => new { c.InspectionItemID, c.InspectionID }); @@ -846,6 +848,11 @@ namespace AMESCoreStudio.WebApi /// 條碼報廢轉出資料檔 /// </summary> public DbSet<BarcodeQngInfo> BarcodeQngInfos { get; set; } + + /// <summary> Yiru add --------------------------------------------------- + /// 設備廠別資料檔 + /// </summary> + public virtual DbSet<OutfitFactoryInfo> OutfitFactoryInfos { get; set; } } }