Browse Source

1. 工單資訊-板卡增加欄位

2. FQC查詢-外包查詢修正
3. 生產進度表查詢UI畫面調整
4. 工單資料-修改 調整 測試備註為空時,將工單描述資料補進去 
           委外廠編號直接抓委外廠的代碼
PTD
Ray 2 years ago
parent
commit
bd8aadfd0f
  1. 1527
      AMESCoreStudio.Web/Controllers/PCSController.cs
  2. 68
      AMESCoreStudio.Web/Views/FQC/FQC008.cshtml
  3. 46
      AMESCoreStudio.Web/Views/PCS/PCS001R.cshtml
  4. 69
      AMESCoreStudio.Web/Views/PCS/PCS003.cshtml
  5. 350
      AMESCoreStudio.Web/Views/PCS/PCS034.cshtml
  6. 22
      AMESCoreStudio.Web/Views/QRS/QRS011.cshtml
  7. 29
      AMESCoreStudio.WebApi/Controllers/AMES/WipInfosController.cs
  8. 8
      AMESCoreStudio.WebApi/Models/AMES/WipBoard.cs

1527
AMESCoreStudio.Web/Controllers/PCSController.cs

File diff suppressed because it is too large

68
AMESCoreStudio.Web/Views/FQC/FQC008.cshtml

@ -7,27 +7,27 @@
/*.layui-table-main .layui-table-cell {*/
/*height: auto !important;*/
/*white-space: normal;
}
}
.layui-table img {
max-width: 60px;
max-height: 28px;
}
.layui-table img {
max-width: 60px;
max-height: 28px;
}
.layui-tree-main {
cursor: pointer;
padding-right: 10px;
float: left;
border-width: 1px;
border-style: solid;
border-color: #e6e6e6;
margin: 10px 0;
}
.layui-tree-main {
cursor: pointer;
padding-right: 10px;
float: left;
border-width: 1px;
border-style: solid;
border-color: #e6e6e6;
margin: 10px 0;
}
.layui-table-cell {
height: auto;
white-space: normal;
}*/
.layui-table-cell {
height: auto;
white-space: normal;
}*/
</style>
@ -47,11 +47,14 @@
<div class="layui-inline">
<label class="layui-form-label">委外廠商:</label>
<div class="layui-input-inline" style="width:140px">
<select id="factory" lay-filter="factory" name="factory" asp-items="@ViewBag.FactoryInfoList" class="">
<option value="">全部</option>
<select id="factoryID" lay-filter="factory" name="factoryID" asp-items="@ViewBag.FactoryInfoList" class="">
@if (ViewBag.UserFactory == null)
{
<option value="">全部</option>
}
</select>
</div>
<input id="factoryID" type="hidden" name="factoryID" value="" />
@* <input id="factoryID" type="hidden" name="factoryID" />*@
<input id="factoryNo" type="hidden" name="factoryNo" value="@ViewBag.UserFactory" />
</div>
</div>
@ -135,7 +138,6 @@
@section Scripts{
<script type="text/javascript">
layui.use(['form', 'layer', 'laydate', 'table'], function () {
var table1 = layui.table;
form = layui.form;
laydate = layui.laydate;
laydate.render({
@ -153,7 +155,7 @@
});
form.on('select(factory)', function (data) {
$("#factoryID").val(data.value);
//$("#factoryID").val(data.value);
//roleName = data.elem[data.elem.selectedIndex].text;
var qs = $('button[lay-filter="querysubmit"]');
qs.click();
@ -168,9 +170,7 @@
//$("#status").val(data.value);
var qs = $('button[lay-filter="querysubmit"]');
qs.click();
});
});
//监听表单提交事件
@ -250,7 +250,7 @@
}
else {
aa = '<a class="layui-btn layui-btn-warm layui-icon layui-icon-list layui-btn-xs" lay-event="edit">檢視</a>\
<a class="layui-btn layui-btn-xs" lay-event="PDF">PDF</a> <a class="layui-btn layui-btn-xs" lay-event="Excel">Excel</a>'
<a class="layui-btn layui-btn-xs" lay-event="PDF">PDF</a> <a class="layui-btn layui-btn-xs" lay-event="Excel">Excel</a>'
}
return aa;
}
@ -260,11 +260,12 @@
//var param = barcodeNo.value + '_' + wipNo.value + '_' + boxNo.value + '_' + inhouseNo.value + '_' + dateStr.value + '_' + dateEnd.value + '_' + $("#status").val() + '_' + factoryID.value + '_' + factoryNo.value;
var param = barcodeNo.value + '_' + wipNo.value + '_' + boxNo.value + '_' + inhouseNo.value + '_' + dateStr.value + '_' + dateEnd.value + '_' + statusNo.value + '_' + factoryID.value + '_' + factoryNo.value;
//$("#factoryID").val($("#factory").val());
//console.log($("#factoryID").val());
//alert(param);
//基本数据表格
//var table = hg.table.datatable('query', 'FQC查詢', '/FQC/FQC008Query2/' + param, {}, tableCols, '', true, 'full-100', ['filter', 'print', 'exports']);
var table = hg.table.datatable('query', 'FQC查詢', '/FQC/FQC008Query2', {}, tableCols, '', true, 'full-100', ['filter', 'print', 'exports']);
var table = hg.table.datatable('query', 'FQC查詢', '/FQC/FQC008Query2', { factoryID: $("#factoryID").val() }, tableCols, '', true, 'full-100', ['filter', 'print', 'exports']);
//通过行tool编辑,lay-event="edit"
function edit(obj) {
@ -292,17 +293,6 @@
}
}
//alert("1" + barcodeNo.value);
//alert("2" + wipNo.value);
//alert("3" + boxNo.value);
//alert("4" + inhouseNo.value);
//alert("5" + dateStr.value);
//alert("6" + dateEnd.value);
//alert("7" + $("#status").val());
//alert("8" + factoryID.value);
//alert("9" + factoryNo.value);
</script>
<script type="text/html" id="statusName">

46
AMESCoreStudio.Web/Views/PCS/PCS001R.cshtml

@ -474,9 +474,6 @@
<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.SmdSolderMask" />
@*<input asp-for="wipBoard.DipCarrier" type="checkbox" title="CARRIER" />
<input asp-for="wipBoard.DipTape" type="checkbox" title="貼付膠帶" />
<input asp-for="wipBoard.SmdSolderMask" type="checkbox" title="點防焊膠" />*@
</div>
</div>
</div>
@ -492,16 +489,15 @@
<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 asp-for="wipBoard.Burn" type="checkbox" title="是否燒入" />*@
<input @if (Model.wipBoard != null) {
@(Model.wipBoard.Burn == "Y" ? "checked" : "")
} type="checkbox" title="是否燒入" name="wipBoard.Burn" />
</div>
<label class="layui-form-label">燒機位置</label>
<div class="layui-input-inline">
<label asp-for="wipBoard.BurnLocation" class="layui-form-label"></label>
<div class="layui-input-block">
<input asp-for="wipBoard.BurnLocation" class="layui-input" />
</div>
<input asp-for="wipBoard.BurnLocation" class="layui-input" />
</div>
</div>
</div>
@ -512,21 +508,28 @@
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-item">
<div class="layui-inline">
<input @if (Model.wipBoard != null) { @(Model.wipBoard.ISPartsBake == "Y" ? "checked" : "") } type="checkbox" title="零件是否需要烘烤" name="wipBoard.ISPartsBake" />
</div>
<div class="layui-inline">
<label class="layui-form-label">零件烘烤溫度</label>
<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" />
</div>
<label class="layui-form-label">零件烘烤溫度</label>
<div class="layui-input-inline" style="width:100px">
<select disabled asp-items="@ViewBag.GetPartsBakeTypeList" asp-for="wipBoard.PartsBake" class=""></select>
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">零件烘烤時間</label>
<div class="layui-input-block">
<div class="layui-input-inline" style="width:100px">
<input asp-for="wipBoard.PartsBakeTime" class="layui-input" />
<span asp-validation-for="wipBoard.PartsBakeTime" class="layui-bg-red"></span>
</div>
<div class="layui-input-inline">
<input @if (Model.wipBoard != null) {
@(Model.wipBoard.PartsBakeOvertime == "Y" ? "checked" : "")
} type="checkbox" title="零件烘烤超過48hrs" name="wipBoard.PartsBakeOvertime" />
</div>
</div>
</div>
@ -541,6 +544,11 @@
<div class="layui-form-item">
<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" />
</div>
<div class="layui-input-inline">
<select disabled asp-items="@ViewBag.GetPCBBakeTypeSelect" asp-for="wipBoard.PcbBake" class=""></select>
</div>

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

@ -27,7 +27,7 @@
<input asp-for="wipInfo.WipID" type="hidden" value="@Model.wipInfo.WipID" />
<input asp-for="wipInfo.WipNO" type="hidden" value="@Model.wipInfo.WipNO" />
<input asp-for="wipAtt.ItemNO" type="hidden" value="@Model.wipAtt.ItemNO" />
@*<input asp-for="wipInfo.FlowRuleID" type="hidden" value="@Model.wipInfo.FlowRuleID" />*@
<input asp-for="wipInfo.WipType" type="hidden" value="@Model.wipInfo.WipType" />
<input asp-for="wipBarcodeOther.OtherID" type="hidden" value="@if(Model.wipBarcodeOther != null){
@Model.wipBarcodeOther.OtherID
}" />
@ -493,17 +493,14 @@
<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" />
@(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" />
@(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.SmdSolderMask" />
@*<input asp-for="wipBoard.DipCarrier" type="checkbox" title="CARRIER" />
<input asp-for="wipBoard.DipTape" type="checkbox" title="貼付膠帶" />
<input asp-for="wipBoard.SmdSolderMask" type="checkbox" title="點防焊膠" />*@
@(Model.wipBoard.DipSolderMask == "Y" ? "checked" : "")
} type="checkbox" title="點防焊膠" name="wipBoard.DipSolderMask" />
</div>
</div>
</div>
@ -520,17 +517,14 @@
<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 asp-for="wipBoard.Burn" type="checkbox" title="是否燒入" />*@
@(Model.wipBoard.Burn == "Y" ? "checked" : "")
} type="checkbox" title="是否燒入" name="wipBoard.Burn" />
</div>
<label class="layui-form-label">燒機位置</label>
<div class="layui-input-inline">
<label asp-for="wipBoard.BurnLocation" class="layui-form-label"></label>
<div class="layui-input-block">
<input asp-for="wipBoard.BurnLocation" class="layui-input" />
</div>
<input asp-for="wipBoard.BurnLocation" class="layui-input" />
</div>
</div>
</div>
@ -543,21 +537,27 @@
<div class="layui-form-item">
<div class="layui-inline">
<input @if (Model.wipBoard != null) {
@(Model.wipBoard.ISPartsBake == "Y" ? "checked" : "")
} type="checkbox" title="零件是否需要烘烤" name="wipBoard.ISPartsBake" />
</div>
<div class="layui-inline">
<label class="layui-form-label">零件烘烤溫度</label>
<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" />
</div>
<label class="layui-form-label">零件烘烤溫度</label>
<div class="layui-input-inline" style="width:100px">
<select asp-items="@ViewBag.GetPartsBakeTypeList" asp-for="wipBoard.PartsBake" class=""></select>
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">零件烘烤時間</label>
<div class="layui-input-block">
<div class="layui-input-inline" style="width:100px">
<input asp-for="wipBoard.PartsBakeTime" class="layui-input" />
</div>
<div class="layui-input-inline">
<input @if (Model.wipBoard != null) {
@(Model.wipBoard.PartsBakeOvertime == "Y" ? "checked" : "")
} type="checkbox" title="零件烘烤超過48hrs" name="wipBoard.PartsBakeOvertime" />
</div>
</div>
</div>
@ -571,6 +571,11 @@
<div class="layui-form-item">
<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" />
</div>
<div class="layui-input-inline">
<select asp-items="@ViewBag.GetPCBBakeTypeSelect" asp-for="wipBoard.PcbBake" class=""></select>
</div>
@ -587,7 +592,7 @@
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label" asp-for="wipBoard.SolderPaste"></label>
<div class="layui-input-block">
<div class="layui-input-inline" style="width:500px;">
<select asp-items="@ViewBag.GetSolderPasteSelect" asp-for="wipBoard.SolderPaste"></select>
</div>
</div>
@ -876,8 +881,8 @@
<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" />
@(Model.wipSystem.FinePackage == "Y" ? "checked" : "")
} type="checkbox" title="是否為精裝" name="wipSystem.FinePackage" />
</div>
</div>
</div>
@ -1116,8 +1121,6 @@
<label class="layui-form-label" asp-for="wipInfoBlob.ImageName">檔案</label>
<label class="layui-btn">
<input type="file" name="formFile">
@*<i class="layui-icon">&#xe67c;</i>上傳文件*@
</label>
<input type="hidden" asp-for="wipInfoBlob.ImageName">
</div>
@ -1441,7 +1444,6 @@
data: { "itemno": $("#wipAtt_ItemNO").val(), "unit_no": $("#wipInfo_UnitNO").val() },
type: 'post',
success: function (result) {
console.info(result.data);
$("#wipInfo_FlowRuleID").empty();//清空下拉框的值
$.each(result.data, function (index, item) {
$("#wipInfo_FlowRuleID").append($("<option>").text(item.text).val(item.value))
@ -1464,7 +1466,6 @@
data: { "unit_no": $("#wipInfo_UnitNO").val() },
type: 'post',
success: function (result) {
console.info(result.data);
var value = $("#wipInfo_LineID").val();
$("#wipInfo_LineID").empty();//清空下拉框的值
$.each(result.data, function (index, item) {

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

@ -1,8 +1,10 @@
@model AMESCoreStudio.Web.ViewModels.PCS.WipDataViewModel
@{ ViewData["Title"] = "PCS034";
Layout = "~/Views/Shared/_AMESLayout.cshtml"; }
@{
ViewData["Title"] = "PCS034";
Layout = "~/Views/Shared/_AMESLayout.cshtml";
}
<style>
.control-label {
@ -25,12 +27,14 @@
<input asp-for="wipInfo.WipID" type="hidden" value="@Model.wipInfo.WipID" />
<input asp-for="wipInfo.UnitNO" type="hidden" value="@Model.wipInfo.UnitNO" />
<input asp-for="wipInfo.WipNO" type="hidden" value="@Model.wipInfo.WipNO" />
@* <input asp-for="wipInfo.PlanQTY" type="hidden" value="@Model.wipInfo.PlanQTY" />*@
<input asp-for="wipInfo.WipType" type="hidden" value="@Model.wipInfo.WipType" />
@* <input asp-for="wipInfo.FlowRuleID" type="hidden" value="@Model.wipInfo.FlowRuleID" />*@
<input asp-for="wipAtt.ItemNO" type="hidden" value="@Model.wipAtt.ItemNO" />
<input asp-for="wipBarcodeOther.OtherID" type="hidden" value="@if(Model.wipBarcodeOther != null){ @Model.wipBarcodeOther.OtherID }" />
<input asp-for="wipMAC.WipNO" type="hidden" value="@if(Model.wipMAC != null){ @Model.wipMAC.WipNO }" />
<input asp-for="wipBarcodeOther.OtherID" type="hidden" value="@if(Model.wipBarcodeOther != null){
@Model.wipBarcodeOther.OtherID
}" />
<input asp-for="wipMAC.WipNO" type="hidden" value="@if(Model.wipMAC != null){
@Model.wipMAC.WipNO
}" />
<div class="layui-form-item " style="padding-left:30px">
<input @(Model.wipInfo.InputFlag == "Y" ? "checked" : "") type="checkbox" name="wipInfo.InputFlag" title="判斷前製程是否已經投入" />
</div>
@ -257,20 +261,20 @@
</tbody>
</table>
@*<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">生產序號</label>
<div class="layui-input-inline">
<input asp-for="wipBarcode.StartNO" class="layui-input" />
</div>
<div class="layui-form-mid">-</div>
<div class="layui-input-inline">
<input asp-for="wipBarcode.EndNO" class="layui-input" />
</div>
<div class="layui-input-inline">
<input id="GetBarCode" class="layui-btn layui-btn-primary layui-border-blue layui-btn-sm" type="button" value="產生條碼" />
</div>
</div>
</div>*@
<div class="layui-inline">
<label class="layui-form-label">生產序號</label>
<div class="layui-input-inline">
<input asp-for="wipBarcode.StartNO" class="layui-input" />
</div>
<div class="layui-form-mid">-</div>
<div class="layui-input-inline">
<input asp-for="wipBarcode.EndNO" class="layui-input" />
</div>
<div class="layui-input-inline">
<input id="GetBarCode" class="layui-btn layui-btn-primary layui-border-blue layui-btn-sm" type="button" value="產生條碼" />
</div>
</div>
</div>*@
<div class="layui-form-item">
<div class="layui-inline">
@ -323,7 +327,9 @@
<a id="KPTableAdd" class="layui-btn layui-btn-xs layui-icon layui-icon-add-circle">新增</a>
<input type="hidden" value=@Model.WipKps.Count() id="WipKpCount" />
<table id="KPTable" class="layui-table">
@{int k = 0;}
@{
int k = 0;
}
<thead>
<tr>
<th>
@ -472,12 +478,15 @@
<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.SmdSolderMask" />
@*<input asp-for="wipBoard.DipCarrier" type="checkbox" title="CARRIER" />
<input asp-for="wipBoard.DipTape" type="checkbox" title="貼付膠帶" />
<input asp-for="wipBoard.SmdSolderMask" type="checkbox" title="點防焊膠" />*@
<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>
@ -493,16 +502,15 @@
<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 asp-for="wipBoard.Burn" type="checkbox" title="是否燒入" />*@
<input @if (Model.wipBoard != null) {
@(Model.wipBoard.Burn == "Y" ? "checked" : "")
} type="checkbox" title="是否燒入" name="wipBoard.Burn" />
</div>
<label class="layui-form-label">燒機位置</label>
<div class="layui-input-inline">
<label asp-for="wipBoard.BurnLocation" class="layui-form-label"></label>
<div class="layui-input-block">
<input asp-for="wipBoard.BurnLocation" class="layui-input" />
</div>
<input asp-for="wipBoard.BurnLocation" class="layui-input" />
</div>
</div>
</div>
@ -515,19 +523,27 @@
<div class="layui-form-item">
<div class="layui-inline">
<input @if (Model.wipBoard != null) { @(Model.wipBoard.ISPartsBake == "Y" ? "checked" : "") } type="checkbox" title="零件是否需要烘烤" name="wipBoard.ISPartsBake" />
</div>
<div class="layui-inline">
<label class="layui-form-label">零件烘烤溫度</label>
<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" />
</div>
<label class="layui-form-label">零件烘烤溫度</label>
<div class="layui-input-inline" style="width:100px">
<select asp-items="@ViewBag.GetPartsBakeTypeList" asp-for="wipBoard.PartsBake" class=""></select>
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">零件烘烤時間</label>
<div class="layui-input-block">
<div class="layui-input-inline" style="width:100px">
<input asp-for="wipBoard.PartsBakeTime" class="layui-input" />
</div>
<div class="layui-input-inline">
<input @if (Model.wipBoard != null) {
@(Model.wipBoard.PartsBakeOvertime == "Y" ? "checked" : "")
} type="checkbox" title="零件烘烤超過48hrs" name="wipBoard.PartsBakeOvertime" />
</div>
</div>
</div>
@ -541,6 +557,11 @@
<div class="layui-form-item">
<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" />
</div>
<div class="layui-input-inline">
<select asp-items="@ViewBag.GetPCBBakeTypeSelect" asp-for="wipBoard.PcbBake" class=""></select>
</div>
@ -557,7 +578,7 @@
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label" asp-for="wipBoard.SolderPaste"></label>
<div class="layui-input-block">
<div class="layui-input-inline" style="width:500px;">
<select asp-items="@ViewBag.GetSolderPasteSelect" asp-for="wipBoard.SolderPaste"></select>
</div>
</div>
@ -700,13 +721,11 @@
<div class="layui-form-item">
<div class="layui-inline">
<label asp-for="wipSystem.BiRatio" class="layui-form-label"></label>
<div class="layui-input-inline">
<input style="background-color: #acdbe36b" asp-for="wipSystem.BiRatio" class="layui-input" />
</div>
<label asp-for="wipSystem.BiTime" class="layui-form-label"></label>
<div class="layui-input-inline">
<input asp-for="wipSystem.BiTime" class="layui-input" />
@ -845,7 +864,9 @@
<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>
@ -897,7 +918,9 @@
<a id="OutfitTableAdd" class="layui-btn layui-btn-xs layui-icon layui-icon-add-circle">新增</a>
<input type="hidden" value=@Model.WipOutfits.Count() id="WipOutfitCount" />
<table id="OutfitTable" class="layui-table">
@{int l = 0;}
@{
int l = 0;
}
<thead>
<tr>
<th>
@ -945,15 +968,17 @@
<a id="SopTableAdd" class="layui-btn layui-btn-xs layui-icon layui-icon-add-circle">新增</a>
<input type="hidden" value=@Model.WipSops.Count() id="WipSopCount" />
<table id="SopTable" class="layui-table">
@{int i = 0;}
@{
int i = 0;
}
<thead>
<tr>
<th style="width:50%;">
SOP文件敘述
</th>
@*<th>
檔案路徑
</th>*@
檔案路徑
</th>*@
<th>
SOP類型
</th>
@ -974,8 +999,8 @@
<input onkeypress="if( event.keyCode == 13 ) { return false; }" class="layui-input" asp-for="@index.SOPName" name="WipSops[@i].SOPName" />
</td>
@*<td>
<input onkeypress="if( event.keyCode == 13 ) { return false; }" class="layui-input" asp-for="@index.SOPPath" name="WipSops[@i].SOPPath" />
</td>*@
<input onkeypress="if( event.keyCode == 13 ) { return false; }" class="layui-input" asp-for="@index.SOPPath" name="WipSops[@i].SOPPath" />
</td>*@
<td>
<select asp-for="@index.SOPType" name="WipSops[@i].SOPType" asp-items="@ViewBag.GetSOPTypeSelect" class=""></select>
</td>
@ -1042,52 +1067,50 @@
</div>
@* 上傳資料sheet *@
<div class="layui-tab-item">
<span style="color:red">**預覽只能顯示圖檔、PDF、文字檔**</span>
<div class="layui-form-item">
<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>
</tr>
</thead>
<tbody>
@foreach (var index in Model.wipInfoBlobs)
{
<div class="layui-tab-item">
<span style="color:red">**預覽只能顯示圖檔、PDF、文字檔**</span>
<div class="layui-form-item">
<table lay-filter="demo" class="layui-table">
<thead>
<tr>
<td>
<span id="FileName">@index.ImageName</span>
</td>
<td>
<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>
</td>
<td>
<a class="layui-btn layui-btn-normal layui-btn-xs" onclick="filedownload(this)">下載</a>
</td>
<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>
</tr>
}
</tbody>
</table>
</div>
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label" asp-for="wipInfoBlob.ImageName">檔案</label>
<label class="layui-btn">
<input type="file" name="formFile">
@*<i class="layui-icon">&#xe67c;</i>上傳文件*@
</label>
<input type="hidden" asp-for="wipInfoBlob.ImageName">
</thead>
<tbody>
@foreach (var index in Model.wipInfoBlobs)
{
<tr>
<td>
<span id="FileName">@index.ImageName</span>
</td>
<td>
<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>
</td>
<td>
<a class="layui-btn layui-btn-normal layui-btn-xs" onclick="filedownload(this)">下載</a>
</td>
</tr>
}
</tbody>
</table>
</div>
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label" asp-for="wipInfoBlob.ImageName">檔案</label>
<label class="layui-btn">
<input type="file" name="formFile">
</label>
<input type="hidden" asp-for="wipInfoBlob.ImageName">
</div>
</div>
</div>
</div>
</div>
</div>
<span style="color: firebrick;word-break: break-all;" class="text-danger offset-sm-3">@Html.ValidationMessage("error")</span>
@ -1176,7 +1199,7 @@
parent.hg.msg("請確認計畫數量");
return;
}
if (wipShcDate == '') {
if (wipShcDate == '') {
parent.hg.msg("請確認預計開工日期有填寫");
return;
}
@ -1187,7 +1210,7 @@
$.ajax({
url: '@Url.Action("GetBarcodeOther", "PCS")',
dataType: 'json',
data: { "itemNo": itemNo, "lotNo": lotNo, "num": planQTY ,"wipNo":'@Model.wipInfo.WipNO', "wipShcDate": wipShcDate},
data: { "itemNo": itemNo, "lotNo": lotNo, "num": planQTY, "wipNo": '@Model.wipInfo.WipNO', "wipShcDate": wipShcDate },
cache: false,
type: "POST",
success: function (result) {
@ -1229,8 +1252,7 @@
if (data._msg != undefined) {
parent.hg.msg(data._msg);
}
else
{
else {
$("#wipMAC_StartNO").val(data.mix);
$("#wipMAC_EndNO").val(data.max);
$("#wipMAC_StartNO").attr("readonly", "readonly");
@ -1246,7 +1268,7 @@
function PrefixInteger(num, length) {
return (Array(length).join('0') + num).slice(-length);
};
});
});
layui.config({
base: '/js/' //假设这是test.js所在的目录
@ -1341,16 +1363,14 @@
$(obj).attr("href", filePath);
};
function getFlowRuleList(data)
{
function getFlowRuleList(data) {
$.ajax(
{
url: "@Url.Action("GetMaterialFlowRuleJson", "PCS")",
dataType: 'json',
data: { "itemno": $("#wipAtt_ItemNO").val(), "unit_no": $("#wipInfo_UnitNO").val()},
data: { "itemno": $("#wipAtt_ItemNO").val(), "unit_no": $("#wipInfo_UnitNO").val() },
type: 'post',
success: function (result)
{
success: function (result) {
console.info(result.data);
$("#wipInfo_FlowRuleID").empty();//清空下拉框的值
$.each(result.data, function (index, item) {
@ -1360,23 +1380,20 @@
layui.form.render("select");//重新渲染 固定写法
},
error: function (result)
{
error: function (result) {
alert(result);
}
});
};
function getLineInfoList(data)
{
function getLineInfoList(data) {
$.ajax(
{
url: "@Url.Action("GetUnitLineJson", "BAS")",
dataType: 'json',
data: { "unit_no": $("#wipInfo_UnitNO").val()},
data: { "unit_no": $("#wipInfo_UnitNO").val() },
type: 'post',
success: function (result)
{
success: function (result) {
console.info(result.data);
var value = $("#wipInfo_LineID").val();
$("#wipInfo_LineID").empty();//清空下拉框的值
@ -1385,11 +1402,10 @@
});
//$("#wipInfo_LineID option:eq(1)").attr("selected", 'selected'); //默认选择第一个选项
$("#wipInfo_LineID option[value=" + value+"]").prop("selected", true);
$("#wipInfo_LineID option[value=" + value + "]").prop("selected", true);
layui.form.render("select");//重新渲染 固定写法
},
error: function (result)
{
error: function (result) {
alert(result);
}
});
@ -1398,38 +1414,34 @@
//UserName
function getUserName(val) {
if (val.value.length != 0) {
$.ajax(
{
url: "@Url.Action("getUserName", "SYS")",
dataType: 'json',
data: { "userNo": val.value},
type: 'post',
success: function (result)
{
$(val).closest('div.layui-inline').find('input[id*=' + val.id + '_Name]').val(result.data);
},
error: function (result)
$.ajax(
{
alert(result);
}
});
url: "@Url.Action("getUserName", "SYS")",
dataType: 'json',
data: { "userNo": val.value },
type: 'post',
success: function (result) {
$(val).closest('div.layui-inline').find('input[id*=' + val.id + '_Name]').val(result.data);
},
error: function (result) {
alert(result);
}
});
}
};
// RuleStation 備註
function RuleStation(NewID) {
$.ajax(
$.ajax(
{
url: "@Url.Action("getMaterialFlowRuleRemark", "PCS")",
dataType: 'json',
data: { "itemno": $("#wipAtt_ItemNO").val(), "unit_no": $("#wipInfo_UnitNO").val(), "flowID": NewID },
data: { "itemno": $("#wipAtt_ItemNO").val(), "unit_no": $("#wipInfo_UnitNO").val(), "flowID": NewID },
type: 'post',
success: function (result)
{
success: function (result) {
$("#wipInfo_FlowRemark").val(result.data);
},
error: function (result)
{
error: function (result) {
alert(result);
}
});
@ -1471,7 +1483,7 @@
sort: true
},]
];
var tableruleStation = hg.table.datatable('ruleStation', '', '/PCS/GetRuleStationByWipNo?wipNo=' + $("#wipInfo_WipNO").val() + '&newID='+NewID+'&oldID='+OldID , {}, tableCols_rule, '', false, 'full-100');
var tableruleStation = hg.table.datatable('ruleStation', '', '/PCS/GetRuleStationByWipNo?wipNo=' + $("#wipInfo_WipNO").val() + '&newID=' + NewID + '&oldID=' + OldID, {}, tableCols_rule, '', false, 'full-100');
tableruleStation;
}
@ -1494,8 +1506,8 @@
var contactdiv = '<tr>' +
'<td><input type="hidden" value="" name="WipKps[' + No + '].WipKpID" />' +
'<input onkeypress="if( event.keyCode == 13 ) { return false; }" class="layui-input" name="WipKps[' + No + '].KpName" /></td>' +
'<td>'+SelectKPNo+'</td>' +
'<td><input onkeypress="if( event.keyCode == 13 ) { return false; }" class="layui-input" name="WipKps[' + No + '].KpSeq" value=' + (No+1)+' /></td>' +
'<td>' + SelectKPNo + '</td>' +
'<td><input onkeypress="if( event.keyCode == 13 ) { return false; }" class="layui-input" name="WipKps[' + No + '].KpSeq" value=' + (No + 1) + ' /></td>' +
'<td><input onkeypress="if( event.keyCode == 13 ) { return false; }" class="layui-input" name="WipKps[' + No + '].Title" /></td>' +
'<td><input onkeypress="if( event.keyCode == 13 ) { return false; }" class="layui-input" name="WipKps[' + No + '].Length" /></td>' +
'<td>' + Select + '</td>' +
@ -1523,7 +1535,7 @@
var SelectPartNo = "<select name=WipOutfits[" + No + "].PartNo>";
$.each(OutfitCommodity, function (index, item) {
SelectPartNo += '<option value=' + item.value + '>' + item.text + '</option>';
});
});
SelectPartNo += '</select>';
var RuleStation = getRuleStationByFlowID();
@ -1535,7 +1547,7 @@
var contactdiv = '<tr>' +
'<td><input type="hidden" value="" name="WipOutfits[' + No + '].WipOutfitID" />'+ SelectPartNo+'</td>'+
'<td><input type="hidden" value="" name="WipOutfits[' + No + '].WipOutfitID" />' + SelectPartNo + '</td>' +
'<td>' + Select + '</td>' +
'<td>' + SelectStation + '</td>' +
'<td><a class="layui-btn layui-btn-danger layui-btn-xs layui-icon layui-icon-delete" onclick="Remove(this);">刪除</a></td>' +
@ -1565,7 +1577,7 @@
var contactdiv = '<tr>' +
'<td><input type="hidden" value="" name="WipSops[' + No + '].WipSOPID" />' +
'<input onkeypress="if( event.keyCode == 13 ) { return false; }" class="layui-input" name="WipSops[' + No + '].SOPName" /></td>' +
/* '<td><input onkeypress="if( event.keyCode == 13 ) { return false; }" class="layui-input" name="WipSops[' + No + '].SOPPath" /></td>' +*/
/* '<td><input onkeypress="if( event.keyCode == 13 ) { return false; }" class="layui-input" name="WipSops[' + No + '].SOPPath" /></td>' +*/
'<td>' + SelectSOPType + '</td>' +
'<td>' + Select + '</td>' +
'<td><a class="layui-btn layui-btn-danger layui-btn-xs layui-icon layui-icon-delete" onclick="Remove(this);">刪除</a></td>' +
@ -1575,7 +1587,7 @@
layui.form.render("select");//重新渲染 固定写法
});
// Table 刪除
// Table 刪除
function Remove(button) {
//Determine the reference of the Row using the Button.
hg.confirm("確認要刪除此筆資料嗎?", function () {
@ -1589,22 +1601,19 @@
};
//生產單位By工單號碼選單
function getFactoryUnitByWipNoList()
{
function getFactoryUnitByWipNoList() {
var a;
$.ajax(
{
url: "@Url.Action("GetFactoryUnitByWipNoJson", "PCS")",
dataType: 'json',
data: { "wipNo": $("#wipInfo_WipNO").val()},
async:false,
data: { "wipNo": $("#wipInfo_WipNO").val() },
async: false,
type: 'post',
success: function (result)
{
success: function (result) {
a = result.data;
},
error: function (result)
{
error: function (result) {
alert(result);
}
});
@ -1612,22 +1621,19 @@
};
//KP Items 選單
function getItemsList()
{
function getItemsList() {
var b;
$.ajax(
{
url: "@Url.Action("getKpItemsJson", "PCS")",
dataType: 'json',
data: {},
async:false,
async: false,
type: 'post',
success: function (result)
{
success: function (result) {
b = result.data;
},
error: function (result)
{
error: function (result) {
alert(result);
}
});
@ -1635,22 +1641,19 @@
};
//治具種類
function getOutfitCommodityList()
{
function getOutfitCommodityList() {
var a;
$.ajax(
{
url: "@Url.Action("GetOutfitCommodityInfoJson", "PCS")",
dataType: 'json',
data: {},
async:false,
async: false,
type: 'post',
success: function (result)
{
success: function (result) {
a = result.data;
},
error: function (result)
{
error: function (result) {
alert(result);
}
});
@ -1658,22 +1661,19 @@
};
//流程ID對應作業站
function getRuleStationByFlowID(data)
{
function getRuleStationByFlowID(data) {
var b;
$.ajax(
{
url: "@Url.Action("GetRuleStationByWipNoUnitNoJson", "PCS")",
dataType: 'json',
data: { "wipNo": $("#wipInfo_WipNO").val()},
async:false,
data: { "wipNo": $("#wipInfo_WipNO").val() },
async: false,
type: 'post',
success: function (result)
{
success: function (result) {
b = result.data;
},
error: function (result)
{
error: function (result) {
alert(result);
}
});
@ -1682,20 +1682,18 @@
//SOPType
function getSOPType() {
var a;
var a;
$.ajax(
{
url: "@Url.Action("GetSOPTypeJson", "PCS")",
dataType: 'json',
data: {},
async:false,
async: false,
type: 'post',
success: function (result)
{
success: function (result) {
a = result.data;
},
error: function (result)
{
error: function (result) {
alert(result);
}
});
@ -1709,7 +1707,7 @@
url: "@Url.Action("GetFactoryInfoes", "BAS")",
dataType: 'json',
data: {},
async:false,
async: false,
type: 'get',
success: function (result) {
$.each(result.data, function (index, item) {

22
AMESCoreStudio.Web/Views/QRS/QRS011.cshtml

@ -15,10 +15,10 @@
<div class="layui-form">
<div class="layui-row">
<div class="layui-form-item">
<div class="layui-col-sm2">
<div class="layui-col">
<div class="layui-inline">
<label class="layui-form-label">工單狀態:</label>
<div class="layui-input-inline" style="width:100px">
<div class="layui-input-inline" >
<select id="wipStatus" lay-filter="wipStatus" lay-verify="required" lay-submit>
<option value="A">未完工</option>
<option value="E">已完工</option>
@ -26,10 +26,10 @@
</div>
</div>
</div>
<div class="layui-col-sm3">
<div class="layui-col">
<div class="layui-inline">
<label class="layui-form-label">生產單位:</label>
<div class="layui-input-inline" >
<div class="layui-input-inline">
<select id="unit" lay-filter="unit" lay-verify="required" lay-submit asp-items="@ViewBag.UnitList">
<option value="*">全部</option>
</select>
@ -37,23 +37,24 @@
<input id="unitNo" type="hidden" name="unitNo" value="*" />
</div>
</div>
<div class="layui-col-sm3">
<div class="layui-col">
<div class="layui-inline">
<label class="layui-form-label">料號:</label>
<div class="layui-input-inline" style="width:150px">
<div class="layui-input-inline">
<input id="itemNO" name="itemNo" autocomplete="off" class="layui-input" placeholder="請輸入料號">
</div>
</div>
</div>
<div class="layui-col-sm3">
<div class="layui-col">
<div class="layui-inline">
<label class="layui-form-label">工單號碼:</label>
<div class="layui-input-inline" style="width:150px">
<div class="layui-input-inline" >
<input id="wipNO" name="wipNo" autocomplete="off" class="layui-input" placeholder="請輸入工單號碼">
</div>
</div>
</div>
<div class="layui-col-sm1">
<div class="layui-col" style="text-align:center">
<div class="layui-inline layui-show-xs-block">
<button class="layui-btn layui-btn-sm layui-btn-normal" lay-submit onclick="result()" lay-filter="querysubmit">
<i class="layui-icon layui-icon-sm">&#xe615;</i>
@ -82,8 +83,7 @@
console.log(wipNO);
// 工單狀態選已完工 必須要有工單號碼
if (wipStatus == "E" && wipNO == '')
{
if (wipStatus == "E" && wipNO == '') {
layer.alert('要查詢工單狀態已完工,必須要輸入工單號碼');
return;
}

29
AMESCoreStudio.WebApi/Controllers/AMES/WipInfosController.cs

@ -13,6 +13,7 @@ using System.Data;
using System.Dynamic;
using Microsoft.Extensions.Configuration;
using Microsoft.EntityFrameworkCore.SqlServer;
using AMESCoreStudio.WebApi.Controllers.BAS;
namespace AMESCoreStudio.WebApi.Controllers.AMES
{
@ -1574,14 +1575,16 @@ and b.item_no = '{0}' and a.barcode_no = '{1}'", kp_no, barcode_no);
ResultModel<WipInfo> result = new ResultModel<WipInfo>();
Helper helper = new Helper(_context);
WipInfo.WipID = helper.GetIDKey("WIP_ID").Result;
//HttpContext.Request.Cookies.TryGetValue("UserID", out string userID);
//if (userID != null)
//{
// if (int.Parse(userID.ToString()) >= 0)
// {
// WipInfo.CreateUserID = int.Parse(userID.ToString());
// }
//}
// 工單號碼去空白
WipInfo.WipNO = WipInfo.WipNO.Trim().ToUpper();
// 委外廠編號抓WERKS廠別代碼
var q = _context.FactoryInfos.Where(w => w.FactoryID.ToString() == WipInfo.Werks).ToList();
if (q.Count() !=0)
{
WipInfo.WerksNO = q.FirstOrDefault().FactoryNo;
}
_context.WipInfos.Add(WipInfo);
try
@ -1647,6 +1650,16 @@ and b.item_no = '{0}' and a.barcode_no = '{1}'", kp_no, barcode_no);
public async Task<ResultModel<WipInfo>> PutWipinfo([FromBody] WipInfo wipInfo)
{
ResultModel<WipInfo> result = new ResultModel<WipInfo>();
// 工單號碼去空白
wipInfo.WipNO = wipInfo.WipNO.Trim().ToUpper();
// 委外廠編號抓WERKS廠別代碼
var q = _context.FactoryInfos.Where(w => w.FactoryID.ToString() == wipInfo.Werks).ToList();
if (q.Count() != 0)
{
wipInfo.WerksNO = q.FirstOrDefault().FactoryNo;
}
_context.Entry(wipInfo).State = EntityState.Modified;
_context.Entry<WipInfo>(wipInfo).Property("CompleteQTY").IsModified = false;
_context.Entry<WipInfo>(wipInfo).Property("StatusNO").IsModified = false;

8
AMESCoreStudio.WebApi/Models/AMES/WipBoard.cs

@ -169,6 +169,14 @@ namespace AMESCoreStudio.WebApi.Models.AMES
[Display(Name = "零件烘烤時間")]
public decimal PartsBakeTime { get; set; }
/// <summary>
/// 零件烘烤超過48hrs(Y/N)
/// </summary>
[Column("PARTS_BAKE_OVERTIME")]
[DataMember]
[Display(Name = "零件烘烤超過48hrs(Y/N)")]
public string PartsBakeOvertime { get; set; }
/// <summary>
/// 零件烘烤備註
/// </summary>

Loading…
Cancel
Save