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">&#xe615;</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">&#xe615;</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: '&#xe608;',
+            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; }
     }
 
 }