Browse Source
2. 錫膏規格來源重構:將 PCSController 中的 GetSolderPasteSelect 由 Enum 改為從資料庫 (SOLDER_PASTE_SERIAL) 讀取。 3. 實作狀態過濾: - 檢視模式 (PCS001R):顯示所有規格。 - 修改模式 (PCS003/PCS034):僅顯示啟用中 (StatusNo='A') 的規格。 4. 提升程式健壯性: - 在 WipDataSelectAll 呼叫處加入 null-conditional 運算子 (?.),防止 wipBoard 為空時報錯。 - 解決規格停用導致前端選單跳掉的問題(搭配前端 jQuery 自動導向至「其他(N)」)。 ---------------------------------------------------------------------------------- DB 需異動指令 UPDATE JHAMES.WIP_BOARD SET SOLDER_PASTE ='KA' WHERE SOLDER_PASTE = 'A'; -- KOKI無鉛錫膏(S3X58-M406-3) UPDATE JHAMES.WIP_BOARD SET SOLDER_PASTE ='SA' WHERE SOLDER_PASTE = 'B'; -- SMIC無鉛錫膏(M705-221BM5-32-11.5K3) UPDATE JHAMES.WIP_BOARD SET SOLDER_PASTE ='S1' WHERE SOLDER_PASTE = 'C'; -- SMIC無鹵錫膏(M705-S101ZH-S4) UPDATE JHAMES.WIP_BOARD SET SOLDER_PASTE ='GR' WHERE SOLDER_PASTE = 'E'; -- SMIC無鉛錫膏(M705-GRN360-K2-V) UPDATE JHAMES.WIP_BOARD SET SOLDER_PASTE ='N' WHERE SOLDER_PASTE = 'D'; -- 其他master
11 changed files with 745 additions and 90 deletions
@ -0,0 +1,132 @@ |
|||||
|
@{ |
||||
|
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"> |
||||
|
<div class="layui-row"> |
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-col-sm4"> |
||||
|
<div class="layui-inline"> |
||||
|
<label class="layui-form-label" style="width:80px">錫膏代碼</label> |
||||
|
<div class="layui-input-inline" style="width:150px"> |
||||
|
<input id="serialNo" name="serialNo" autocomplete="off" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-col-sm3"> |
||||
|
<div class="layui-inline"> |
||||
|
<label class="layui-form-label" style="width:60px">規格</label> |
||||
|
<div class="layui-input-inline" style="width:150px"> |
||||
|
<input id="description" name="description" autocomplete="off" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-col-sm3"> |
||||
|
<div class="layui-inline"> |
||||
|
<label class="layui-form-label" style="width:60px">廠商</label> |
||||
|
<div class="layui-input-inline" style="width:150px"> |
||||
|
<input id="vendor" name="vendor" autocomplete="off" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-col-sm1"> |
||||
|
<div class="layui-inline layui-show-xs-block"> |
||||
|
<button class="layui-btn layui-btn-sm layui-btn-normal" lay-submit lay-filter="querysubmit"> |
||||
|
<i class="layui-icon layui-icon-sm"></i> |
||||
|
</button> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<table class="layui-hide" id="query" lay-filter="query"></table> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
@section Scripts{ |
||||
|
<script type="text/javascript"> |
||||
|
layui.use(['form', 'layer'], function () { |
||||
|
var form = layui.form; |
||||
|
}); |
||||
|
|
||||
|
// 監聽查詢 |
||||
|
hg.form.onsubmit('querysubmit', function (data) { |
||||
|
hg.msghide("重新載入資料.."); |
||||
|
table && table.reload(data); |
||||
|
}); |
||||
|
|
||||
|
var tableCols = [[ |
||||
|
{ field: 'serialNo', title: '錫膏代碼', sort: true }, |
||||
|
{ field: 'description', title: '規格' }, |
||||
|
{ field: 'alloy', title: '合金' }, |
||||
|
{ field: 'vendor', title: '廠商' }, |
||||
|
{ field: 'type', title: '種類' }, |
||||
|
{ |
||||
|
title: '操作', align: 'center', width: 160, |
||||
|
templet: function (d) { |
||||
|
var btnEdit = `<a class='layui-btn layui-btn-xs layui-icon layui-icon-edit' lay-event='edit'>修改</a>`; |
||||
|
var btnStatus = ""; |
||||
|
if (d.statusNo == 'A') { |
||||
|
btnStatus = `<a class='layui-btn layui-btn-danger layui-btn-xs layui-icon layui-icon-delete' lay-event='status'>停用</a>`; |
||||
|
} else { |
||||
|
btnStatus = `<a class='layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-ok' lay-event='status'>啟用</a>`; |
||||
|
} |
||||
|
return btnEdit + btnStatus; |
||||
|
} |
||||
|
} |
||||
|
]]; |
||||
|
|
||||
|
// 編輯 |
||||
|
function edit(obj) { |
||||
|
if (obj.data.serialNo) { |
||||
|
hg.open('修改錫膏規格', '/PCB/PCB020U?id=' + obj.data.serialNo, 500, 420); |
||||
|
} |
||||
|
} |
||||
|
// 停用/啟用 |
||||
|
function status(obj) { |
||||
|
var targetStatus = obj.data.statusNo == 'A' ? 'S' : 'A'; |
||||
|
var msg = targetStatus == 'S' ? '停用' : '啟用'; |
||||
|
hg.confirm("確定要" + msg + "錫膏代碼【" + obj.data.serialNo + "】嗎?", function () { |
||||
|
$.ajax({ |
||||
|
url: '/PCB/PCB020S', |
||||
|
data: { id: obj.data.serialNo, status: targetStatus }, |
||||
|
type: 'POST', |
||||
|
success: function (data) { |
||||
|
if (data.success) { |
||||
|
hg.msghide(msg + "成功!"); |
||||
|
var qs = $('button[lay-filter="querysubmit"]'); |
||||
|
qs.click(); |
||||
|
} else { |
||||
|
hg.msg(data.msg); |
||||
|
} |
||||
|
}, |
||||
|
error: function () { |
||||
|
hg.msg("網路請求失敗!"); |
||||
|
} |
||||
|
}); |
||||
|
}); |
||||
|
} |
||||
|
// 新增按鈕 |
||||
|
var toolbar = [{ |
||||
|
text: '新增', |
||||
|
layuiicon: '', |
||||
|
class: 'layui-btn', |
||||
|
handler: function () { |
||||
|
hg.open('新增錫膏規格', '/PCB/PCB020C', 500, 420); |
||||
|
} |
||||
|
}]; |
||||
|
// 表格 |
||||
|
var table = hg.table.datatable('query', '錫膏規格查詢', '/PCB/PCB020Query', {}, tableCols, toolbar, false, 'full-100', ['filter', 'print', 'exports']); |
||||
|
</script> |
||||
|
} |
||||
|
|
||||
@ -0,0 +1,92 @@ |
|||||
|
@model AMESCoreStudio.WebApi.Models.AMES.SolderPasteSerial |
||||
|
|
||||
|
@{ |
||||
|
Layout = "~/Views/Shared/_AMESLayout.cshtml"; |
||||
|
} |
||||
|
|
||||
|
<div class="layui-card"> |
||||
|
<div class="layui-card-body"> |
||||
|
<div class="layui-row"> |
||||
|
<div class="layui-col-md10 layui-col-md-offset1"> |
||||
|
<form enctype="multipart/form-data" method="post" asp-action="PCB020" class="layui-form" id="myForm"> |
||||
|
<input type="hidden" name="ActionType" value="Add" /> |
||||
|
<div asp-validation-summary="ModelOnly" class="text-danger"></div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label" style="width:120px; white-space:nowrap;">代碼(錫膏前兩碼)</label> |
||||
|
<div class="layui-input-block" style="margin-left:150px"> |
||||
|
<input asp-for="SerialNo" class="layui-input" autocomplete="off" placeholder="請輸入代碼(2碼大寫)" required maxlength="2" style="text-transform:uppercase;" oninput="this.value = this.value.toUpperCase()" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label" style="width:120px; white-space:nowrap;">規格</label> |
||||
|
<div class="layui-input-block" style="margin-left:150px"> |
||||
|
<input asp-for="Description" class="layui-input" autocomplete="off" placeholder="請輸入規格" required /> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label" style="width:120px; white-space:nowrap;">合金</label> |
||||
|
<div class="layui-input-block" style="margin-left:150px"> |
||||
|
<input asp-for="Alloy" class="layui-input" autocomplete="off" placeholder="請輸入合金" required /> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label" style="width:120px; white-space:nowrap;">廠商</label> |
||||
|
<div class="layui-input-block" style="margin-left:150px"> |
||||
|
<input asp-for="Vendor" class="layui-input" autocomplete="off" placeholder="請輸入廠商" required /> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label" style="width:120px; white-space:nowrap;">種類</label> |
||||
|
<div class="layui-input-block" style="margin-left:150px"> |
||||
|
<input asp-for="Type" class="layui-input" autocomplete="off" placeholder="請輸入種類" required /> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-col-md12" style="text-align:center"> |
||||
|
<input type="submit" value="儲存" class="layui-btn" lay-filter="submitBtn" lay-submit /> |
||||
|
</div> |
||||
|
</div> |
||||
|
</form> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
@section Scripts { |
||||
|
@{ |
||||
|
await Html.RenderPartialAsync("_ValidationScriptsPartial"); |
||||
|
} |
||||
|
<script type="text/javascript"> |
||||
|
layui.use(['form'], function () { |
||||
|
var form = layui.form; |
||||
|
form.on('submit(submitBtn)', function (data) { |
||||
|
$('#myForm').validate().form(); |
||||
|
if ($('#myForm').valid()) { |
||||
|
var submitButton = $('input[type="submit"][lay-filter="submitBtn"]'); |
||||
|
submitButton.addClass('layui-btn-disabled'); |
||||
|
submitButton.attr('disabled', 'disabled'); |
||||
|
$.ajax({ |
||||
|
type: "POST", |
||||
|
url: "@Url.Action("PCB020","PCB")", |
||||
|
data: $('#myForm').serialize(), |
||||
|
success: function (response) { |
||||
|
if (response.success) { |
||||
|
hg.close(); |
||||
|
hg.msg(response.msg); |
||||
|
parent.table && parent.table.reload(); |
||||
|
} else { |
||||
|
hg.msg(response.msg); |
||||
|
} |
||||
|
}, |
||||
|
complete: function () { |
||||
|
submitButton.removeClass('layui-btn-disabled'); |
||||
|
submitButton.removeAttr('disabled'); |
||||
|
} |
||||
|
}); |
||||
|
} |
||||
|
}); |
||||
|
}); |
||||
|
</script> |
||||
|
} |
||||
|
|
||||
@ -0,0 +1,94 @@ |
|||||
|
@model AMESCoreStudio.WebApi.Models.AMES.SolderPasteSerial |
||||
|
|
||||
|
@{ |
||||
|
Layout = "~/Views/Shared/_AMESLayout.cshtml"; |
||||
|
} |
||||
|
|
||||
|
<div class="layui-card"> |
||||
|
<div class="layui-card-body"> |
||||
|
<div class="layui-row"> |
||||
|
<div class="layui-col-md10 layui-col-md-offset1"> |
||||
|
<form enctype="multipart/form-data" method="post" asp-action="PCB020" class="layui-form" id="myForm"> |
||||
|
<input type="hidden" name="ActionType" value="Edit" /> |
||||
|
<div asp-validation-summary="ModelOnly" class="text-danger"></div> |
||||
|
<input type="hidden" asp-for="SerialNo" value="@Model.SerialNo" /> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label" style="width:120px; white-space:nowrap;">錫膏代碼</label> |
||||
|
<div class="layui-input-block" style="margin-left:150px"> |
||||
|
<input asp-for="SerialNo" class="layui-input layui-bg-gray" readonly /> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label" style="width:120px; white-space:nowrap;">規格</label> |
||||
|
<div class="layui-input-block" style="margin-left:150px"> |
||||
|
<input asp-for="Description" class="layui-input layui-bg-gray" readonly /> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label" style="width:120px; white-space:nowrap;">合金</label> |
||||
|
<div class="layui-input-block" style="margin-left:150px"> |
||||
|
<input asp-for="Alloy" class="layui-input" autocomplete="off" placeholder="請輸入合金" required /> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label" style="width:120px; white-space:nowrap;">廠商</label> |
||||
|
<div class="layui-input-block" style="margin-left:150px"> |
||||
|
<input asp-for="Vendor" class="layui-input layui-bg-gray" readonly /> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-form-label" style="width:120px; white-space:nowrap;">種類</label> |
||||
|
<div class="layui-input-block" style="margin-left:150px"> |
||||
|
<input asp-for="Type" class="layui-input layui-bg-gray" readonly /> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-col-md12" style="text-align:center"> |
||||
|
<input type="submit" value="儲存" class="layui-btn" lay-filter="submitBtn" lay-submit /> |
||||
|
</div> |
||||
|
</div> |
||||
|
</form> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
@section Scripts { |
||||
|
@{ |
||||
|
await Html.RenderPartialAsync("_ValidationScriptsPartial"); |
||||
|
} |
||||
|
<script type="text/javascript"> |
||||
|
layui.use(['form'], function () { |
||||
|
var form = layui.form; |
||||
|
form.on('submit(submitBtn)', function (data) { |
||||
|
$('#myForm').validate().form(); |
||||
|
if ($('#myForm').valid()) { |
||||
|
var submitButton = $('input[type="submit"][lay-filter="submitBtn"]'); |
||||
|
submitButton.addClass('layui-btn-disabled').attr('disabled', 'disabled'); |
||||
|
|
||||
|
$.ajax({ |
||||
|
type: "POST", |
||||
|
url: "@Url.Action("PCB020","PCB")", |
||||
|
data: $('#myForm').serialize(), |
||||
|
success: function (response) { |
||||
|
if (response.success) { |
||||
|
hg.msg(response.msg); |
||||
|
parent.table && parent.table.reload(); |
||||
|
hg.close(); |
||||
|
} else { |
||||
|
hg.msg(response.msg); |
||||
|
} |
||||
|
}, |
||||
|
error: function () { |
||||
|
hg.msg("網路請求失敗!"); |
||||
|
}, |
||||
|
complete: function () { |
||||
|
submitButton.removeClass('layui-btn-disabled').removeAttr('disabled'); |
||||
|
} |
||||
|
}); |
||||
|
} |
||||
|
return false; |
||||
|
}); |
||||
|
}); |
||||
|
</script> |
||||
|
} |
||||
Loading…
Reference in new issue