Browse Source

1. 工單維護中 工單檔案新增檔案備註及刪除檔案

2. 工單維護中 新增按鈕與PLM的ECN比對資料提醒
PTD
Ray 2 years ago
parent
commit
b476dfcde8
  1. 241
      AMESCoreStudio.Web/Controllers/PCSController.cs
  2. 72
      AMESCoreStudio.Web/Views/PCS/PCS003.cshtml
  3. 126
      AMESCoreStudio.Web/Views/PCS/PCS034.cshtml
  4. 3
      AMESCoreStudio.WebApi/Controllers/AMES/WipInfoBlobController.cs

241
AMESCoreStudio.Web/Controllers/PCSController.cs

@ -2694,232 +2694,12 @@ namespace AMESCoreStudio.Web.Controllers
return View("PCS003", model);
}
//result = await _pcsApi.PutWipInfo(JsonConvert.SerializeObject(model.wipInfo));
//if (result.Success)
//{
// // 工單屬性
// model.wipAtt.WipNO = model.wipInfo.WipNO;
// await _pcsApi.PutWipAtt(JsonConvert.SerializeObject(model.wipAtt));
// // 標籤
// model.wipLabel.ApproveLogo = model.wipLabel.ApproveLogos == null ? null : string.Join(',', model.wipLabel.ApproveLogos);
// model.wipLabel.WipNO = model.wipInfo.WipNO;
// model.wipLabel.CreateUserID = UserID;
// model.wipLabel.UpdateUserID = UserID;
// await _pcsApi.PutWipLabel(JsonConvert.SerializeObject(model.wipLabel));
// // 安勤統一執行WIP_SYSTEM
// if (ViewBag.WipSpecial == "Y")
// {
// if (string.IsNullOrWhiteSpace(CheckWipInfoInsert_WipSystem(model.wipSystem)))
// {
// model.wipSystem.ItemNo = model.wipAtt.ItemNO;
// model.wipSystem.WipNo = model.wipInfo.WipNO;
// model.wipSystem.CreateUserID = UserID;
// model.wipSystem.UpdateUserID = UserID;
// await _pcsApi.PutWipSystem(JsonConvert.SerializeObject(model.wipSystem));
// }
// }
// else
// {
// // 系統
// if (model.wipInfo.UnitNO == "B" || model.wipInfo.UnitNO == "P" || model.wipInfo.UnitNO == "T")
// {
// if (string.IsNullOrWhiteSpace(CheckWipInfoInsert_WipSystem(model.wipSystem)))
// {
// model.wipSystem.ItemNo = model.wipAtt.ItemNO;
// model.wipSystem.WipNo = model.wipInfo.WipNO;
// model.wipSystem.CreateUserID = UserID;
// model.wipSystem.UpdateUserID = UserID;
// await _pcsApi.PutWipSystem(JsonConvert.SerializeObject(model.wipSystem));
// }
// }
// else
// // 板卡
// {
// if (string.IsNullOrWhiteSpace(CheckWipInfoInsert_WipBoard(model.wipBoard)))
// {
// model.wipBoard.Smd = model.wipBoard.SMDs == null ? null : string.Join(',', model.wipBoard.SMDs);
// model.wipBoard.SmdSolderMask = model.wipBoard.SmdSolderMasks == null ? null : string.Join(',', model.wipBoard.SmdSolderMasks);
// model.wipBoard.DipSide = model.wipBoard.DipSides == null ? null : string.Join(',', model.wipBoard.DipSides);
// model.wipBoard.ItemNo = model.wipAtt.ItemNO;
// model.wipBoard.WipNo = model.wipInfo.WipNO;
// model.wipBoard.CreateUserID = UserID;
// model.wipBoard.UpdateUserID = UserID;
// await _pcsApi.PutWipBoard(JsonConvert.SerializeObject(model.wipBoard));
// }
// }
// }
// // 內部條碼
// if (!string.IsNullOrWhiteSpace(model.wipBarcode.Remarks))
// {
// model.wipBarcode.WipID = model.wipInfo.WipID;
// model.wipBarcode.WipNO = model.wipInfo.WipNO;
// model.wipBarcode.UnitNO = model.wipInfo.UnitNO;
// model.wipBarcode.CreateUserID = UserID;
// result = await _pcsApi.PutWipBarcode(JsonConvert.SerializeObject(model.wipBarcode));
// }
// // MAC
// if (!string.IsNullOrWhiteSpace(model.wipMAC.StartNO) && !string.IsNullOrWhiteSpace(model.wipMAC.EndNO))
// {
// if (model.wipMAC.StartNO.Length == 12)
// {
// model.wipMAC.Title = model.wipMAC.StartNO.Substring(0, 6).ToUpper();
// model.wipMAC.StartNO = model.wipMAC.StartNO.Substring(model.wipMAC.StartNO.Length - 6, 6).ToUpper();
// model.wipMAC.EndNO = model.wipMAC.EndNO.Substring(model.wipMAC.EndNO.Length - 6, 6).ToUpper();
// // 確認MAC Table是否有料號資料
// var mACInfo = await _pcsApi.GetMACInfo(model.wipAtt.ItemNO);
// if (mACInfo != null)
// {
// model.wipMAC.ClassGroup = mACInfo.ClassGroup;
// }
// if (!string.IsNullOrWhiteSpace(model.wipMAC.WipNO))
// result = await _pcsApi.PutWipMAC(JsonConvert.SerializeObject(model.wipMAC));
// else
// {
// model.wipMAC.WipNO = model.wipInfo.WipNO;
// model.wipMAC.CreateUserID = UserID;
// result = await _pcsApi.PostWipMAC(JsonConvert.SerializeObject(model.wipMAC));
// }
// }
// }
// // KeyParts
// // 判斷料號KP有資料 沒有資料時 一起新增到料號KP
// // 2022.10.12 取消判斷 刪除料號KP,在逐一新增
// var materialItem = await _pcsApi.GetMaterialItemByItemNO(model.wipAtt.ItemNO);
// if (materialItem != null)
// {
// await _pcsApi.DeleteMaterialKpByItem(materialItem.ItemID);
// }
// // 先比對新舊ID 當舊ID有 新的沒有代表已刪除
// var resultOld_WipKp = await _pcsApi.GetWipKpByWipNo(model.wipInfo.WipNO);
// var delete_WipKpID = resultOld_WipKp.Select(s => s.WipKpID).Except(model.WipKps.Select(s => s.WipKpID));
// foreach (var id in delete_WipKpID)
// {
// await _pcsApi.DeleteWipKp(id);
// }
// foreach (var item in model.WipKps.Where(w => w.WipKpID != -1))
// {
// item.WipNo = model.wipInfo.WipNO;
// item.ItemNo = model.wipAtt.ItemNO;
// item.CreateUserID = UserID;
// item.UpdateUserID = UserID;
// if (item.WipKpID == 0)
// await _pcsApi.PostWipKp(JsonConvert.SerializeObject(item));
// else
// await _pcsApi.PutWipKp(JsonConvert.SerializeObject(item));
// // 新增到料號KP檔
// await _pcsApi.PostMaterialKp(JsonConvert.SerializeObject(new MaterialKp
// {
// ItemID = materialItem.ItemID,
// KpName = item.KpName,
// KpNo = item.KpNo,
// KpSeq = Convert.ToInt32(item.KpSeq),
// Length = item.Length,
// StationType = item.UnitNo,
// IsRepeat = "N",
// Title = item.Title,
// CreateUserID = UserID,
// UpdateUserID = UserID
// }));
// }
// model.WipKps = model.WipKps.Where(w => w.WipKpID != -1).ToList();
// // 治具
// // 先比對新舊ID 當舊ID有 新的沒有代表已刪除
// var resultOld_WipOutfit = await _pcsApi.GetWipOutfitByWipNo(model.wipInfo.WipNO);
// var delete_WipOutfit = resultOld_WipOutfit.Select(s => s.WipOutfitID).Except(model.WipOutfits.Select(s => s.WipOutfitID));
// foreach (var id in delete_WipOutfit)
// {
// await _pcsApi.DeleteWipOutfit(id);
// }
// foreach (var item in model.WipOutfits.Where(w => w.WipOutfitID != -1))
// {
// item.WipNo = model.wipInfo.WipNO;
// item.ItemNo = model.wipAtt.ItemNO;
// item.UpdateUserID = UserID;
// item.CreateUserID = UserID;
// item.OutfitNo = ".";
// if (item.WipOutfitID == 0)
// await _pcsApi.PostWipOutfit(JsonConvert.SerializeObject(item));
// else
// await _pcsApi.PutWipOutfit(JsonConvert.SerializeObject(item));
// }
// model.WipOutfits = model.WipOutfits.Where(w => w.WipOutfitID != -1);
// // SOP
// // 先比對新舊ID 當舊ID有 新的沒有代表已刪除
// var resultOld_WipSop = await _pcsApi.GetWipSopByWipNo(model.wipInfo.WipNO);
// var delete_WipSop = resultOld_WipSop.Select(s => s.WipSOPID).Except(model.WipSops.Select(s => s.WipSOPID));
// foreach (var id in delete_WipSop)
// {
// await _pcsApi.DeleteWipSop(id);
// }
// foreach (var item in model.WipSops.Where(w => w.WipSOPID != -1))
// {
// item.WipNo = model.wipInfo.WipNO;
// item.ItemNo = model.wipAtt.ItemNO;
// item.CreateUserID = UserID;
// item.UpdateUserID = UserID;
// if (item.WipSOPID == 0)
// await _pcsApi.PostWipSop(JsonConvert.SerializeObject(item));
// else
// await _pcsApi.PutWipSop(JsonConvert.SerializeObject(item));
// }
// model.WipSops = model.WipSops.Where(w => w.WipSOPID != -1);
// // 檔案上傳
// 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 = $@"{_env.WebRootPath}\UploadFolder\{model.wipInfo.WipNO}";
// var path = $@"{FilePath}\{FileName}";
// if (!System.IO.Directory.Exists(FilePath))
// {
// System.IO.Directory.CreateDirectory(FilePath);
// }
// using (var stream = new FileStream(path, FileMode.Create))
// {
// await formFile.CopyToAsync(stream);
// }
// model.wipInfoBlob.WipNo = model.wipInfo.WipNO;
// model.wipInfoBlob.ImageName = FileName;
// model.wipInfoBlob.Filepath = $@"\UploadFolder\{model.wipInfo.WipNO}\";
// model.wipInfoBlob.CreateUserID = UserID;
// model.wipInfoBlob.UpdateUserID = UserID;
// result = await _pcsApi.PostWipInfoBlob(JsonConvert.SerializeObject(model.wipInfoBlob));
// }
// }
//}
WipCheck wipCheck = new WipCheck
{
WipNo = model.wipInfo.WipNO
};
if (action == "生管確認")
if (action == "通知PE")
{
wipCheck.PMCUserID = UserID;
await CheckPCS003ToMail(model.wipInfo.WipNO, model.wipAtt.ItemNO, model.wipInfo.UnitNO, model.wipInfo.WipScheduleDate.ToString(), action);
@ -2937,6 +2717,10 @@ namespace AMESCoreStudio.Web.Controllers
await _pcsApi.PutWipCheckByMF(JsonConvert.SerializeObject(wipCheck));
}
// 儲存後將最新資料都回前端
model.wipMACs = await _pcsApi.GetWipMAC(model.wipInfo.WipNO);
model.wipInfoBlobs = await _pcsApi.GetWipInfoBlob(model.wipInfo.WipNO);
var _msg = "修改成功!";
ModelState.AddModelError("error", _msg);
return View("PCS003", model);
@ -3251,7 +3035,7 @@ namespace AMESCoreStudio.Web.Controllers
{
WipNo = model.wipInfo.WipNO
};
if (action == "生管確認")
if (action == "通知PE")
{
wipCheck.PMCUserID = UserID;
await CheckPCS003ToMail(model.wipInfo.WipNO, model.wipAtt.ItemNO, model.wipInfo.UnitNO, model.wipInfo.WipScheduleDate.ToString(), action);
@ -3269,6 +3053,10 @@ namespace AMESCoreStudio.Web.Controllers
await _pcsApi.PutWipCheckByMF(JsonConvert.SerializeObject(wipCheck));
}
// 儲存後將最新資料都回前端
model.wipMACs = await _pcsApi.GetWipMAC(model.wipInfo.WipNO);
model.wipInfoBlobs = await _pcsApi.GetWipInfoBlob(model.wipInfo.WipNO);
var _msg = "修改成功!";
ModelState.AddModelError("error", _msg);
return View("PCS034", model);
@ -3298,15 +3086,16 @@ namespace AMESCoreStudio.Web.Controllers
//工單Review,工程確認,完成後通知製造,mail群組名稱,請建立為[WOVIEW_MF]
string MailGroup = string.Empty;
string SubjectGroup = "製造單位";
if (ReviewType == "生管確認")
if (ReviewType == "通知PE")
{
SubjectGroup = "工程單位";
MailGroup = "WOVIEW_PE";
ReviewType = "生管單位";
}
else
{
MailGroup = "WOVIEW_MF";
SubjectGroup = "製造單位";
MailGroup = "WOVIEW_MF";
}
var result = await _basApi.GetFactoryUnits();
@ -3318,7 +3107,7 @@ namespace AMESCoreStudio.Web.Controllers
{Material}<br/>
{Process}<br/>
{StrDate}<br/>
<br/>{ReviewType}review完畢";
<br/>{ReviewType}review完畢";
await _bllApi.PostToMail(Subject, Body, MailGroup, "", false);

72
AMESCoreStudio.Web/Views/PCS/PCS003.cshtml

@ -198,6 +198,7 @@
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-inline">
<label asp-for="wipAtt.ECN" class="layui-form-label"></label>
@ -501,18 +502,9 @@
<label class="layui-form-label">DIP</label>
<div class="layui-input-block">
<cl-checkbox asp-items="@ViewBag.GetCheckboxDIP" asp-for="wipBoard.DipSides" asp-skin="defult"></cl-checkbox>
<input @if (Model.wipBoard != null)
{
@(Model.wipBoard.DipCarrier == "Y" ? "checked" : "")
} type="checkbox" title="CARRIER" name="wipBoard.DipCarrier" />
<input @if (Model.wipBoard != null)
{
@(Model.wipBoard.DipTape == "Y" ? "checked" : "")
} type="checkbox" title="貼付膠帶" name="wipBoard.DipTape" />
<input @if (Model.wipBoard != null)
{
@(Model.wipBoard.DipSolderMask == "Y" ? "checked" : "")
} type="checkbox" title="點防焊膠" name="wipBoard.DipSolderMask" />
<input @if (Model.wipBoard != null) { @(Model.wipBoard.DipCarrier == "Y" ? "checked" : "") } type="checkbox" title="CARRIER" name="wipBoard.DipCarrier" />
<input @if (Model.wipBoard != null) { @(Model.wipBoard.DipTape == "Y" ? "checked" : "") } type="checkbox" title="貼付膠帶" name="wipBoard.DipTape" />
<input @if (Model.wipBoard != null) { @(Model.wipBoard.DipSolderMask == "Y" ? "checked" : "") } type="checkbox" title="點防焊膠" name="wipBoard.DipSolderMask" />
</div>
</div>
</div>
@ -528,10 +520,7 @@
<div class="layui-inline">
<label class="layui-form-label">燒錄</label>
<div class="layui-input-inline">
<input @if (Model.wipBoard != null)
{
@(Model.wipBoard.Burn == "Y" ? "checked" : "")
} type="checkbox" title="是否燒入" name="wipBoard.Burn" />
<input @if (Model.wipBoard != null) { @(Model.wipBoard.Burn == "Y" ? "checked" : "") } type="checkbox" title="是否燒入" name="wipBoard.Burn" />
</div>
<label class="layui-form-label">燒機位置</label>
@ -552,10 +541,7 @@
<div class="layui-inline">
<label class="layui-form-label">零件烘烤</label>
<div class="layui-input-inline">
<input @if (Model.wipBoard != null)
{
@(Model.wipBoard.ISPartsBake == "Y" ? "checked" : "")
} type="checkbox" title="零件是否需要烘烤" name="wipBoard.ISPartsBake" />
<input @if (Model.wipBoard != null) { @(Model.wipBoard.ISPartsBake == "Y" ? "checked" : "") } type="checkbox" title="零件是否需要烘烤" name="wipBoard.ISPartsBake" />
</div>
<label class="layui-form-label">零件烘烤溫度</label>
<div class="layui-input-inline" style="width:100px">
@ -568,10 +554,7 @@
</div>
<div class="layui-input-inline">
<input @if (Model.wipBoard != null)
{
@(Model.wipBoard.PartsBakeOvertime == "Y" ? "checked" : "")
} type="checkbox" title="零件烘烤超過48hrs" name="wipBoard.PartsBakeOvertime" />
<input @if (Model.wipBoard != null) { @(Model.wipBoard.PartsBakeOvertime == "Y" ? "checked" : "") } type="checkbox" title="零件烘烤超過48hrs" name="wipBoard.PartsBakeOvertime" />
</div>
</div>
</div>
@ -587,10 +570,7 @@
<div class="layui-inline">
<label class="layui-form-label">PCB烘烤</label>
<div class="layui-input-inline">
<input @if (Model.wipBoard != null)
{
@(Model.wipBoard.ISPcbBake == "Y" ? "checked" : "")
} type="checkbox" title="PCB是否需要烘烤" name="wipBoard.ISPcbBake" />
<input @if (Model.wipBoard != null) { @(Model.wipBoard.ISPcbBake == "Y" ? "checked" : "") } type="checkbox" title="PCB是否需要烘烤" name="wipBoard.ISPcbBake" />
</div>
<div class="layui-input-inline">
<select asp-items="@ViewBag.GetPCBBakeTypeSelect" asp-for="wipBoard.PcbBake" class=""></select>
@ -896,10 +876,7 @@
<div class="layui-inline">
<label class="layui-form-label">FINE_PACKAGE</label>
<div class="layui-input-inline">
<input @if (Model.wipSystem != null)
{
@(Model.wipSystem.FinePackage == "Y" ? "checked" : "")
} type="checkbox" title="是否為精裝" name="wipSystem.FinePackage" />
<input @if (Model.wipSystem != null) { @(Model.wipSystem.FinePackage == "Y" ? "checked" : "") } type="checkbox" title="是否為精裝" name="wipSystem.FinePackage" />
</div>
</div>
</div>
@ -1106,7 +1083,6 @@
<table lay-filter="demo" class="layui-table">
<thead>
<tr>
Remark
<th lay-data="{field:'username'}">檔案名稱</th>
<th lay-data="{field:'experience', sort:true}">檔案路徑</th>
<th lay-data="{field:'remark'}">備註</th>
@ -1146,6 +1122,12 @@
<input type="hidden" asp-for="wipInfoBlob.ImageName">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">檔案備註</label>
<div class="layui-input-block">
<textarea asp-for="wipInfoBlob.Remark" class="layui-textarea" type="text"></textarea>
</div>
</div>
</div>
</div>
</div>
@ -1492,13 +1474,13 @@
// 檔案刪除
function deleteFile(obj) {
layer.confirm('確定是否要刪除該筆檔案?', {
var FileName = $(obj).closest("TR").find('span[id*=FileName]').text();
layer.confirm(`確定是否要刪除【${FileName}】檔案?`, {
btn: ['確定', '取消']
}, function () {
layer.closeAll('dialog');
var FileName = $(obj).closest("TR").find('span[id*=FileName]').text();
$.ajax({
url: '@Url.Action("DeleteWipInfoBlobByFileName", "PCS")',
url: '@Url.Action("DeleteWipInfoBlob", "PCS")',
dataType: 'json',
data: { "wipNo": '@Model.wipInfo.WipNO', "fileName": FileName },
cache: false,
@ -1509,8 +1491,8 @@
parent.hg.msg(result.msg);
}
else {
$("#wipBarcodeOther_StartNO").val('');
$("#wipBarcodeOther_EndNO").val('');
var row = $(obj).closest("TR");
row.hide();
}
},
error: function (jqXHR, textStatus, errorThrown) {
@ -1518,10 +1500,6 @@
}
});
})
var Path = $(obj).closest("TR").find('span[id*=Filepath]').text();
var FileName = $(obj).closest("TR").find('span[id*=FileName]').text();
filePath = `/PCS/FileDownload?Path=${Path}&FileName=${FileName}`;
$(obj).attr("href", filePath);
}
function getFlowRuleList(data) {
@ -1960,7 +1938,6 @@
});
});
// 更新ECN or ECR
function GetPLM_ECN() {
$.ajax({
@ -1970,15 +1947,20 @@
success: function (result) {
if (result.success) {
var result_msg = result.msg;
if ('@Model.wipAtt.ItemNO')
console.log(result_msg);
console.log('@Model.wipAtt.ECN');
if ('@Model.wipAtt.ECN' != result_msg) {
layer.confirm('比對與PLM ECN/ECR不一樣,確定更新ECN/ECR嗎?', {
btn: ['確定', '取消']
},
}, function () {
layer.closeAll('dialog');
$("#wipAtt_ECN").val(result_msg);
})
}
else {
parent.hg.msg(result.msg);
}
}
},
error: function (result) {
parent.hg.msg(`呼叫API失敗`);

126
AMESCoreStudio.Web/Views/PCS/PCS034.cshtml

@ -205,7 +205,10 @@
<div class="layui-inline">
<label asp-for="wipAtt.ECN" class="layui-form-label"></label>
<div class="layui-input-inline">
<input asp-for="wipAtt.ECN" class="layui-input" />
<input asp-for="wipAtt.ECN" style="width: 150px; display: initial" class="layui-input" />
<a onclick="GetPLM_ECN();" class="layui-btn layui-btn-sm layui-btn-normal" style="padding: 0 5px;" title="更新ECN/ECR">
<i class="layui-icon layui-icon-sm">&#xe669;</i>
</a>
</div>
<label asp-for="wipAtt.EAN" class="layui-form-label"></label>
<div class="layui-input-inline">
@ -482,9 +485,18 @@
<label class="layui-form-label">DIP</label>
<div class="layui-input-block">
<cl-checkbox asp-items="@ViewBag.GetCheckboxDIP" asp-for="wipBoard.DipSides" asp-skin="defult"></cl-checkbox>
<input @if (Model.wipBoard != null) { @(Model.wipBoard.DipCarrier == "Y" ? "checked" : "") } type="checkbox" title="CARRIER" name="wipBoard.DipCarrier" />
<input @if (Model.wipBoard != null) { @(Model.wipBoard.DipTape == "Y" ? "checked" : "") } type="checkbox" title="貼付膠帶" name="wipBoard.DipTape" />
<input @if (Model.wipBoard != null) { @(Model.wipBoard.DipSolderMask == "Y" ? "checked" : "") } type="checkbox" title="點防焊膠" name="wipBoard.DipSolderMask" />
<input @if (Model.wipBoard != null)
{
@(Model.wipBoard.DipCarrier == "Y" ? "checked" : "")
} type="checkbox" title="CARRIER" name="wipBoard.DipCarrier" />
<input @if (Model.wipBoard != null)
{
@(Model.wipBoard.DipTape == "Y" ? "checked" : "")
} type="checkbox" title="貼付膠帶" name="wipBoard.DipTape" />
<input @if (Model.wipBoard != null)
{
@(Model.wipBoard.DipSolderMask == "Y" ? "checked" : "")
} type="checkbox" title="點防焊膠" name="wipBoard.DipSolderMask" />
</div>
</div>
</div>
@ -500,7 +512,10 @@
<div class="layui-inline">
<label class="layui-form-label">燒錄</label>
<div class="layui-input-inline">
<input @if (Model.wipBoard != null) { @(Model.wipBoard.Burn == "Y" ? "checked" : "") } type="checkbox" title="是否燒入" name="wipBoard.Burn" />
<input @if (Model.wipBoard != null)
{
@(Model.wipBoard.Burn == "Y" ? "checked" : "")
} type="checkbox" title="是否燒入" name="wipBoard.Burn" />
</div>
<label class="layui-form-label">燒機位置</label>
@ -521,7 +536,10 @@
<div class="layui-inline">
<label class="layui-form-label">零件烘烤</label>
<div class="layui-input-inline">
<input @if (Model.wipBoard != null) { @(Model.wipBoard.ISPartsBake == "Y" ? "checked" : "") } type="checkbox" title="零件是否需要烘烤" name="wipBoard.ISPartsBake" />
<input @if (Model.wipBoard != null)
{
@(Model.wipBoard.ISPartsBake == "Y" ? "checked" : "")
} type="checkbox" title="零件是否需要烘烤" name="wipBoard.ISPartsBake" />
</div>
<label class="layui-form-label">零件烘烤溫度</label>
<div class="layui-input-inline" style="width:100px">
@ -534,7 +552,10 @@
</div>
<div class="layui-input-inline">
<input @if (Model.wipBoard != null) { @(Model.wipBoard.PartsBakeOvertime == "Y" ? "checked" : "") } type="checkbox" title="零件烘烤超過48hrs" name="wipBoard.PartsBakeOvertime" />
<input @if (Model.wipBoard != null)
{
@(Model.wipBoard.PartsBakeOvertime == "Y" ? "checked" : "")
} type="checkbox" title="零件烘烤超過48hrs" name="wipBoard.PartsBakeOvertime" />
</div>
</div>
</div>
@ -550,7 +571,10 @@
<div class="layui-inline">
<label class="layui-form-label">PCB烘烤</label>
<div class="layui-input-inline">
<input @if (Model.wipBoard != null) { @(Model.wipBoard.ISPcbBake == "Y" ? "checked" : "") } type="checkbox" title="PCB是否需要烘烤" name="wipBoard.ISPcbBake" />
<input @if (Model.wipBoard != null)
{
@(Model.wipBoard.ISPcbBake == "Y" ? "checked" : "")
} type="checkbox" title="PCB是否需要烘烤" name="wipBoard.ISPcbBake" />
</div>
<div class="layui-input-inline">
<select asp-items="@ViewBag.GetPCBBakeTypeSelect" asp-for="wipBoard.PcbBake" class=""></select>
@ -854,7 +878,10 @@
<div class="layui-inline">
<label class="layui-form-label">FINE_PACKAGE</label>
<div class="layui-input-inline">
<input @if (Model.wipSystem != null) { @(Model.wipSystem.FinePackage == "Y" ? "checked" : "") } type="checkbox" title="是否為精裝" name="wipSystem.FinePackage" />
<input @if (Model.wipSystem != null)
{
@(Model.wipSystem.FinePackage == "Y" ? "checked" : "")
} type="checkbox" title="是否為精裝" name="wipSystem.FinePackage" />
</div>
</div>
</div>
@ -1061,10 +1088,10 @@
<table lay-filter="demo" class="layui-table">
<thead>
<tr>
<th lay-data="{field:'username', width:100}">檔案名稱</th>
<th lay-data="{field:'experience', width:80, sort:true}">檔案路徑</th>
<th lay-data="{field:'right', width:80, sort:true}">預覽</th>
<th lay-data="{field:'right', width:80, sort:true}">下載</th>
<th lay-data="{field:'username'}">檔案名稱</th>
<th lay-data="{field:'experience', sort:true}">檔案路徑</th>
<th lay-data="{field:'remark'}">備註</th>
<th lay-data="{field:'right', width:120, sort:true}"></th>
</tr>
</thead>
<tbody>
@ -1078,10 +1105,13 @@
<span id="Filepath">@index.Filepath</span>
</td>
<td>
<a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-read" onclick="show(this)">預覽</a>
<span id="Remark">@index.Remark</span>
</td>
<td>
<a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-read" onclick="show(this)">預覽</a>
<a class="layui-btn layui-btn-normal layui-btn-xs" onclick="filedownload(this)">下載</a>
<a class="layui-btn layui-btn-normal layui-btn-xs layui-btn-danger" onclick="deleteFile(this)">刪除</a>
</td>
</tr>
}
@ -1097,6 +1127,12 @@
<input type="hidden" asp-for="wipInfoBlob.ImageName">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">檔案備註</label>
<div class="layui-input-block">
<textarea asp-for="wipInfoBlob.Remark" class="layui-textarea" type="text"></textarea>
</div>
</div>
</div>
</div>
</div>
@ -1228,7 +1264,7 @@
$.ajax({
url: '@Url.Action("GetMAC", "PCS")',
dataType: 'json',
data: { "itemno": $("#wipAtt_ItemNO").val(), "wipNo": $('#wipInfo_WipNO').val() ,"planQTY": $('#wipInfo_PlanQTY').val() },
data: { "itemno": $("#wipAtt_ItemNO").val(), "wipNo": $('#wipInfo_WipNO').val(), "planQTY": $('#wipInfo_PlanQTY').val() },
cache: false,
type: "POST",
success: function (data, textStatus, jqXHR) {
@ -1352,6 +1388,36 @@
$(obj).attr("href", filePath);
};
// 檔案刪除
function deleteFile(obj) {
var FileName = $(obj).closest("TR").find('span[id*=FileName]').text();
layer.confirm(`確定是否要刪除【${FileName}】檔案?`, {
btn: ['確定', '取消']
}, function () {
layer.closeAll('dialog');
$.ajax({
url: '@Url.Action("DeleteWipInfoBlob", "PCS")',
dataType: 'json',
data: { "wipNo": '@Model.wipInfo.WipNO', "fileName": FileName },
cache: false,
type: "POST",
success: function (result) {
// 錯誤訊息
if (!result.success) {
parent.hg.msg(result.msg);
}
else {
var row = $(obj).closest("TR");
row.hide();
}
},
error: function (jqXHR, textStatus, errorThrown) {
alert("檔案刪除失敗,請洽系統管理員!!");
}
});
})
}
function getFlowRuleList(data) {
$.ajax(
{
@ -1708,6 +1774,36 @@
});
return b;
}
// 更新ECN or ECR
function GetPLM_ECN() {
$.ajax({
url: "@Url.Action("FQC007GetPLMECN", "FQC")",
type: "Post",
data: { "ItemNo": '@Model.wipAtt.ItemNO' },
success: function (result) {
if (result.success) {
var result_msg = result.msg;
console.log(result_msg);
console.log('@Model.wipAtt.ECN');
if ('@Model.wipAtt.ECN' != result_msg) {
layer.confirm('比對與PLM ECN/ECR不一樣,確定更新ECN/ECR嗎?', {
btn: ['確定', '取消']
}, function () {
layer.closeAll('dialog');
$("#wipAtt_ECN").val(result_msg);
})
}
else {
parent.hg.msg(result.msg);
}
}
},
error: function (result) {
parent.hg.msg(`呼叫API失敗`);
}
});
}
</script>
}

3
AMESCoreStudio.WebApi/Controllers/AMES/WipInfoBlobController.cs

@ -137,7 +137,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
public async Task<ResultModel<WipInfoBlob>> DeleteWipInfoBlobByFileName(string wipNo, string fileName)
{
ResultModel<WipInfoBlob> result = new ResultModel<WipInfoBlob>();
if (!string.IsNullOrWhiteSpace(wipNo) && !string.IsNullOrWhiteSpace(fileName))
if (string.IsNullOrWhiteSpace(wipNo) || string.IsNullOrWhiteSpace(fileName))
{
result.Success = false;
result.Msg = "請輸入要刪除的資料";
@ -160,7 +160,6 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
{
result.Success = false;
result.Msg = ex.InnerException.Message;
}
}
}

Loading…
Cancel
Save