7 changed files with 1256 additions and 26 deletions
@ -0,0 +1,573 @@ |
|||||
|
@{ |
||||
|
ViewData["Title"] = "備貨作業"; |
||||
|
Layout = "~/Views/Shared/_AMESLayout.cshtml"; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
<style type="text/css"> |
||||
|
.layui-table-main .layui-table-cell { |
||||
|
/*height: auto !important;*/ |
||||
|
white-space: normal; |
||||
|
} |
||||
|
|
||||
|
.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; |
||||
|
} |
||||
|
|
||||
|
.green-background { |
||||
|
background-color: lightgreen; |
||||
|
} |
||||
|
</style> |
||||
|
|
||||
|
|
||||
|
<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-md10"> |
||||
|
<label class="layui-form-label">Record Type:</label> |
||||
|
<div class="layui-input-inline" style="width:150px"> |
||||
|
<select id="recordType" lay-event="RecordType" lay-filter="RecordType" name="recordType" lay-submit asp-items="@ViewBag.RecordType" lay-search> |
||||
|
</select> |
||||
|
</div> |
||||
|
<div class="layui-input-inline" style="width:100px"> |
||||
|
<input id="WorkCenter" name="WorkCenter" autocomplete="off" class="layui-input green-background" value="@ViewBag.WorkCenter"> |
||||
|
</div> |
||||
|
<div class="layui-input-inline" style="width:100px"> |
||||
|
<input id="RBU" name="RBU" autocomplete="off" class="layui-input green-background" value="@ViewBag.RBU"> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-row"> |
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-col-md10"> |
||||
|
<div class="layui-inline"> |
||||
|
<label class="layui-form-label">RecordNumber:</label> |
||||
|
<div class="layui-input-inline" style="width:150px"> |
||||
|
<input id="recordNumber" name="RecordNumber" autocomplete="off" class="layui-input" value="@ViewBag.RecordNumber"> |
||||
|
</div> |
||||
|
<label class="layui-form-label">Line NO:</label> |
||||
|
<div class="layui-input-inline" style="width:150px"> |
||||
|
<input id="lineNo" name="LineNo" autocomplete="off" class="layui-input" value="@ViewBag.LineNo"> |
||||
|
</div> |
||||
|
<label class="layui-form-label">Location:</label> |
||||
|
<div class="layui-input-inline" style="width:120px"> |
||||
|
<input id="Location" name="Location" autocomplete="off" class="layui-input" value="@ViewBag.Location"> |
||||
|
</div> |
||||
|
<label class="layui-form-label">Customer:</label> |
||||
|
<div class="layui-input-inline" style="width:120px"> |
||||
|
<input id="Customer" name="Customer" autocomplete="off" class="layui-input green-background" value="@ViewBag.Customer"> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-row"> |
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-inline"> |
||||
|
<label class="layui-form-label">料號:</label> |
||||
|
<div class="layui-input-inline" style="width:150px"> |
||||
|
<input id="PartNumber" name="PartNumber" autocomplete="off" class="layui-input" value="@ViewBag.PartNumber"> |
||||
|
</div> |
||||
|
<div class="layui-input-inline" style="width:500px"> |
||||
|
<input id="PartDesc" name="PartDesc" autocomplete="off" class="layui-input green-background" placeholder="料號說明" value="@ViewBag.PartDesc"> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-row"> |
||||
|
<div class="layui-form-item"> |
||||
|
|
||||
|
<div class="layui-inline" style="margin-right: 100px;"> |
||||
|
<label class="layui-form-label">資料群組:</label> |
||||
|
<input type="radio" name="StockUnit" id="box" value="1" title="Box No(安勤或昶亨生產)" lay-filter="radio-filter" checked /> |
||||
|
<input type="radio" name="StockUnit" id="pcs" value="0" title="PCS" lay-filter="radio-filter" /> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-inline" style="margin-right: 150px;"> |
||||
|
<div class="layui-input-inline" style="width:100px"> |
||||
|
<input type="checkbox" id="PCSUnit" lay-skin="primary" title="Begin=End" lay-filter="check-filter" disabled /> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-row"> |
||||
|
<div class="layui-card-body"> |
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-inline"> |
||||
|
<div class="layui-input-inline" style="text-align:left;"> |
||||
|
<input type="radio" name="select" value="1" title="Scanner" /> |
||||
|
</div> |
||||
|
<div class="layui-input-inline" style="margin-left: 0;"> |
||||
|
<input class="layui-input" id="frontSN" autocomplete="off" /> |
||||
|
</div> |
||||
|
<div class="layui-form-mid">~</div> |
||||
|
<div class="layui-input-inline"> |
||||
|
<input class="layui-input" id="endSN" autocomplete="off" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-inline"> |
||||
|
<label class="layui-form-label">備貨量:</label> |
||||
|
<div class="layui-input-inline" style="width:70px"> |
||||
|
<input id="StockQty" name="StockQty" autocomplete="off" class="layui-input" value="@ViewBag.StockQty"> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-inline"> |
||||
|
<div class="layui-input-inline layui-col-sm4" style="text-align:left;"> |
||||
|
<input type="radio" name="select" value="0" title="Data" checked="" /> |
||||
|
</div> |
||||
|
<div class="layui-input-inline"> |
||||
|
<textarea class="layui-textarea" id="SNData"></textarea> |
||||
|
</div> |
||||
|
<input type="file" id="excelFileInput" style="display: none;" /> |
||||
|
<button class="layui-btn" onclick="importExcel()">匯入</button> |
||||
|
</div> |
||||
|
<div class="layui-inline"> |
||||
|
<label class="layui-form-label">作業備註</label> |
||||
|
<div class="layui-input-block"> |
||||
|
<textarea placeholder="作業人員輸入備註" class="layui-textarea"></textarea> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-inline" style="flex: 1; width: 100%; text-align: right;"> |
||||
|
<label id="rowCount" class="layui-inline layui-form-label" style="width: 50%; color: red; text-align: left;">應出貨數量: 0 pcs,目前刷入數量: 0 pcs</label> |
||||
|
</div> |
||||
|
<table class="layui-hide" id="query" lay-filter="query"></table> |
||||
|
<div class="layui-form-item" style="text-align: right;"> |
||||
|
<div class="layui-input-block"> |
||||
|
<input type="submit" id="commit" value="確認扣帳" class="layui-btn" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
@section Scripts{ |
||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.17.4/xlsx.full.min.js"></script> |
||||
|
<script type="text/javascript"> |
||||
|
layui.use(['form', 'layer', 'laydate','table'], function () { |
||||
|
laydate = layui.laydate; |
||||
|
laydate.render({ |
||||
|
elem: '#recordDate' |
||||
|
, trigger: 'click' |
||||
|
, format: 'yyyy/MM/dd' |
||||
|
, theme: 'grid' |
||||
|
}); |
||||
|
|
||||
|
form.on('radio(radio-filter)', function (data) { |
||||
|
var elem = data.elem; // 获得 radio 原始 DOM 对象 |
||||
|
var checked = elem.checked; // 获得 radio 选中状态 |
||||
|
var value = elem.value; // 获得 radio 值 |
||||
|
var othis = data.othis; // 获得 radio 元素被替换后的 jQuery 对象 |
||||
|
var checkboxElem = layui.$('input[lay-filter="check-filter"]'); |
||||
|
if (value == 0 && checked) { |
||||
|
checkboxElem.prop('disabled', false); |
||||
|
checkboxElem.prop('checked', true); |
||||
|
// 重新渲染表单元素 |
||||
|
layui.form.render('checkbox'); |
||||
|
} else { |
||||
|
// 如果radio按钮未选中 |
||||
|
checkboxElem.prop('disabled', true); |
||||
|
checkboxElem.prop('checked', false); |
||||
|
// 重新渲染表单元素 |
||||
|
layui.form.render('checkbox'); |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
}); |
||||
|
</script> |
||||
|
<script type="text/javascript"> |
||||
|
//控項event |
||||
|
$('#recordNumber').on('keypress', function (event) { |
||||
|
if (event.keyCode == 13) { |
||||
|
var recordNumber = document.getElementById('recordNumber').value; |
||||
|
var recordType = document.getElementById('recordType').value; |
||||
|
var recordTypeInfo = @Html.Raw(Json.Serialize(ViewBag.RecordTypeInfo)); |
||||
|
var filteredInfo = recordTypeInfo.find(function (info) { |
||||
|
return info.id === recordType; |
||||
|
}); |
||||
|
console.log(filteredInfo); |
||||
|
//check recordNumber |
||||
|
if (recordNumber.length !== filteredInfo.length) { |
||||
|
layer.msg('請確認recordNumber碼長!', { icon: 2 }); |
||||
|
$("#recordNumber").val(''); |
||||
|
return; |
||||
|
} |
||||
|
// Check if recordNumber starts with prefixCode |
||||
|
var prefixCode = filteredInfo.prefixCode; |
||||
|
if (!recordNumber.startsWith(prefixCode)) { |
||||
|
layer.msg('recordNumber開頭必須是:' + prefixCode, { icon: 2 }); |
||||
|
$("#recordNumber").val(''); |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
layui.table.reload('query', { |
||||
|
where: { |
||||
|
recordNumber: recordNumber |
||||
|
}, |
||||
|
page: { |
||||
|
curr: 1 |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
var lineNo = document.getElementById('lineNo'); |
||||
|
lineNo.focus(); |
||||
|
} |
||||
|
}); |
||||
|
$('#lineNo').on('keypress', function (event) { |
||||
|
|
||||
|
if (event.keyCode == 13) { |
||||
|
// 获取 recordNumber 和 lineNo 的值 |
||||
|
var recordNumber = document.getElementById('recordNumber').value; |
||||
|
var lineNo = document.getElementById('lineNo').value; |
||||
|
|
||||
|
// 发送 AJAX 请求到 Controller |
||||
|
$.ajax({ |
||||
|
url: '@Url.Action("GetZDNDetailJson", "PTD")', |
||||
|
type: 'POST', |
||||
|
data: { recordNumber: recordNumber, lineNo: lineNo }, |
||||
|
success: function (result) { |
||||
|
// 处理成功的情况 |
||||
|
if (result.data.data.length > 0) { |
||||
|
$.each(result.data.data, function (index, item) { |
||||
|
$("#Customer").val(item.soldCustomerID); |
||||
|
$('#PartNumber').val(item.productID); |
||||
|
getItemDesc(document.getElementById('PartNumber').value); |
||||
|
}); |
||||
|
} |
||||
|
}, |
||||
|
error: function (error) { |
||||
|
// 处理错误的情况 |
||||
|
console.log(error); |
||||
|
} |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
}); |
||||
|
$('#PartNumber').on('keypress', function (event) { |
||||
|
if (event.keyCode == 13) { |
||||
|
getItemDesc(document.getElementById('PartNumber').value); |
||||
|
} |
||||
|
}); |
||||
|
$('#frontSN').on('keypress', function (event) { |
||||
|
if (event.keyCode == 13) { |
||||
|
var endSN = document.getElementById('endSN'); |
||||
|
var frontSN = document.getElementById('frontSN'); |
||||
|
|
||||
|
endSN.focus(); |
||||
|
endSN.select(); |
||||
|
|
||||
|
if (document.getElementById('PCSUnit').checked) { |
||||
|
endSN.value = frontSN.value; |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
}); |
||||
|
$('#endSN').on('keypress', function (event) { |
||||
|
if (event.keyCode == 13) { |
||||
|
var recordType = document.getElementById('recordType'); |
||||
|
var frontSN = document.getElementById('frontSN'); |
||||
|
var endSN = document.getElementById('endSN'); |
||||
|
var dnNo = document.getElementById('recordNumber'); |
||||
|
var lineNo = document.getElementById('lineNo'); |
||||
|
var material = document.getElementById('PartNumber'); |
||||
|
var table = layui.table; |
||||
|
var rowAmount = table.cache['query'].length; |
||||
|
|
||||
|
var prefixCode = frontSN.value.slice(0, -5); |
||||
|
var currentSN = parseInt(frontSN.value.slice(-5)); |
||||
|
|
||||
|
while (currentSN <= parseInt(endSN.value.slice(-5))) { |
||||
|
rowAmount++; |
||||
|
var newRowData = { |
||||
|
recordType: recordType.value, |
||||
|
dnNo: dnNo.value, |
||||
|
lineNo: lineNo.value, |
||||
|
material: material.value, |
||||
|
sn: prefixCode + currentSN.toString().padStart(5, "0") |
||||
|
}; |
||||
|
// Add the new row data to the table |
||||
|
hg.table.addRow('query', newRowData); |
||||
|
currentSN++; |
||||
|
} |
||||
|
|
||||
|
frontSN.focus(); |
||||
|
frontSN.select(); |
||||
|
|
||||
|
} |
||||
|
}); |
||||
|
$('#SNData').on('keypress', function (event) { |
||||
|
if (event.keyCode == 13) { |
||||
|
var recordType = document.getElementById('recordType'); |
||||
|
var SNData = document.getElementById('SNData'); |
||||
|
var dnNo = document.getElementById('recordNumber'); |
||||
|
var lineNo = document.getElementById('lineNo'); |
||||
|
var material = document.getElementById('PartNumber'); |
||||
|
var table = layui.table; |
||||
|
var rowAmount = table.cache['query'].length; |
||||
|
|
||||
|
var arr = SNData.value.split('\n'); |
||||
|
$.each(arr, function (index, SN) { |
||||
|
rowAmount++; |
||||
|
var newRowData = { |
||||
|
recordType: recordType.value, |
||||
|
dnNo: dnNo.value, |
||||
|
lineNo: lineNo.value, |
||||
|
material: material.value, |
||||
|
sn: SN |
||||
|
}; |
||||
|
// Add the new row data to the table |
||||
|
hg.table.addRow('query', newRowData); |
||||
|
}); |
||||
|
|
||||
|
SNData.select(); |
||||
|
event.preventDefault(); |
||||
|
} |
||||
|
}); |
||||
|
$('#commit').on('click', function () { |
||||
|
var recordType = document.getElementById('recordType').value; |
||||
|
var workCenter = document.getElementById('WorkCenter').value; |
||||
|
var rbu = document.getElementById('RBU').value; |
||||
|
var location = document.getElementById('Location').value; |
||||
|
var customer = document.getElementById('Customer').value; |
||||
|
|
||||
|
var tableData = layui.table.cache['query']; |
||||
|
|
||||
|
var postData = { |
||||
|
recordType: recordType, |
||||
|
workCenter: workCenter, |
||||
|
rbu: rbu, |
||||
|
location: location, |
||||
|
customer: customer, |
||||
|
|
||||
|
tableData: tableData |
||||
|
}; |
||||
|
|
||||
|
console.log(JSON.stringify(postData)); |
||||
|
|
||||
|
$.ajax({ |
||||
|
url: '@Url.Action("PTD002_Commit", "PTD")', |
||||
|
dataType: 'json', |
||||
|
data: { data: JSON.stringify(postData) }, |
||||
|
type: 'POST', |
||||
|
success: function (result) { |
||||
|
console.log("扣帳結果:"); |
||||
|
console.log(result); |
||||
|
if (result.data.success) { |
||||
|
$.each(result.data.data, function (index, value) { |
||||
|
// 找到要删除的行的索引 |
||||
|
var rowIndex = tableData.findIndex(function (row) { |
||||
|
return row.sn === value; |
||||
|
}); |
||||
|
|
||||
|
// 从表格数据中删除该行 |
||||
|
if (rowIndex !== -1) { |
||||
|
tableData.splice(rowIndex, 1); |
||||
|
|
||||
|
// 重新加载表格数据 |
||||
|
layui.table.reload('query', { |
||||
|
data: tableData, |
||||
|
page: false, |
||||
|
limit: 2000 |
||||
|
}); |
||||
|
|
||||
|
calculateRowCount(tableData); |
||||
|
} else { |
||||
|
layer.msg('未找到要刪除的數據', { icon: 2 }); |
||||
|
} |
||||
|
}); |
||||
|
layer.msg('扣帳成功!', { icon: 1 }); |
||||
|
} else { |
||||
|
layer.msg('扣帳失敗,原因:' + result.data.msg, { icon: 2 }); |
||||
|
} |
||||
|
}, |
||||
|
error: function (error) { |
||||
|
layer.msg('扣帳失敗!原因:' + error.msg, { icon: 2 }); |
||||
|
} |
||||
|
}); |
||||
|
}); |
||||
|
|
||||
|
function getItemDesc(itemNo) { |
||||
|
$.ajax({ |
||||
|
url: "/BAS/GetMaterialItemByItemNO", |
||||
|
data: { id: itemNo }, |
||||
|
dataType: 'json', |
||||
|
contentType: "application/json", |
||||
|
type: 'get', |
||||
|
success: function (result) { |
||||
|
if (result.data) { |
||||
|
$("#PartDesc").val(result.data.itemDesc); |
||||
|
} |
||||
|
else { |
||||
|
$("#PartDesc").val(''); |
||||
|
} |
||||
|
} |
||||
|
}); |
||||
|
}; |
||||
|
function isSNAlreadyExist(tableId, sn) { |
||||
|
var table = layui.table; |
||||
|
var currentData = table.cache[tableId]; |
||||
|
|
||||
|
// Check if SN already exists in the table |
||||
|
var isExist = currentData.some(function (row) { |
||||
|
return row.sn === sn; |
||||
|
}); |
||||
|
|
||||
|
return isExist; |
||||
|
} |
||||
|
function calculateRowCount(table) { |
||||
|
var RowCount = table.length; |
||||
|
$("#rowCount").html("應出貨數量: 0 pcs,目前刷入數量: " + RowCount + " pcs"); |
||||
|
} |
||||
|
hg.table.addRow = function (tableId, rowData) { |
||||
|
// Get the table instance |
||||
|
var table = layui.table; |
||||
|
console.log(table); |
||||
|
if (isSNAlreadyExist(tableId, rowData.sn)) { |
||||
|
// Handle the case where SN already exists |
||||
|
layer.msg('SN 已存在!', { icon: 2 }); |
||||
|
return; // Do not add the row |
||||
|
} |
||||
|
// Add the new row data to the table |
||||
|
table.reload(tableId, { |
||||
|
data: [rowData].concat(table.cache[tableId]), |
||||
|
page: false, |
||||
|
limit: 2000 |
||||
|
}); |
||||
|
|
||||
|
calculateRowCount(table.cache[tableId]); |
||||
|
}; |
||||
|
function del(obj) { |
||||
|
if (obj.data.itemNo) { |
||||
|
hg.confirm("SN:" + obj.data.sn + ",確定要刪除嗎?", function () { |
||||
|
// 获取表格数据 |
||||
|
var tableData = layui.table.cache['query']; |
||||
|
|
||||
|
// 找到要删除的行的索引 |
||||
|
var rowIndex = tableData.findIndex(function (row) { |
||||
|
return row.sn === obj.data.sn; |
||||
|
}); |
||||
|
|
||||
|
// 从表格数据中删除该行 |
||||
|
if (rowIndex !== -1) { |
||||
|
tableData.splice(rowIndex, 1); |
||||
|
|
||||
|
// 重新加载表格数据 |
||||
|
layui.table.reload('query', { |
||||
|
data: tableData, |
||||
|
page: false, |
||||
|
limit: 2000 |
||||
|
}); |
||||
|
|
||||
|
layer.msg('刪除成功', { icon: 1 }); |
||||
|
calculateRowCount(tableData); |
||||
|
} else { |
||||
|
layer.msg('未找到要刪除的數據', { icon: 2 }); |
||||
|
} |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
//Excel匯入 |
||||
|
function importExcel() { |
||||
|
// Trigger click on the hidden file input |
||||
|
document.getElementById('excelFileInput').click(); |
||||
|
} |
||||
|
document.getElementById('excelFileInput').addEventListener('change', handleFileSelect); |
||||
|
function handleFileSelect(event) { |
||||
|
var file = event.target.files[0]; |
||||
|
|
||||
|
if (file) { |
||||
|
var reader = new FileReader(); |
||||
|
|
||||
|
reader.onload = function (e) { |
||||
|
var data = new Uint8Array(e.target.result); |
||||
|
var workbook = XLSX.read(data, { type: 'array' }); |
||||
|
|
||||
|
// Assuming the SNs are in the first sheet of the workbook |
||||
|
var sheet = workbook.Sheets[workbook.SheetNames[0]]; |
||||
|
var snData = XLSX.utils.sheet_to_json(sheet); |
||||
|
console.log(snData); |
||||
|
// Process SN data and update textarea |
||||
|
updateTextareaWithExcel(snData); |
||||
|
}; |
||||
|
|
||||
|
reader.readAsArrayBuffer(file); |
||||
|
} |
||||
|
} |
||||
|
function updateTextareaWithExcel(snData) { |
||||
|
var textarea = document.getElementById('SNData'); // Replace with your actual textarea id |
||||
|
var snValues = snData.map(function (obj) { |
||||
|
return obj.SN; |
||||
|
}); |
||||
|
// Combine existing data and imported SNs |
||||
|
textarea.value = snValues.join('\n'); |
||||
|
} |
||||
|
|
||||
|
var tableCols = [[ |
||||
|
{ |
||||
|
field: 'recordType', |
||||
|
minWidth: 150, |
||||
|
title: 'Type' |
||||
|
}, |
||||
|
{ |
||||
|
field: 'dnNo', |
||||
|
minWidth: 150, |
||||
|
title: 'DN單號' |
||||
|
}, |
||||
|
{ |
||||
|
field: 'lineNo', |
||||
|
title: 'LineNo', |
||||
|
width: 100 |
||||
|
}, |
||||
|
{ |
||||
|
field: 'material', |
||||
|
title: 'Material(料號)', |
||||
|
width: 150 |
||||
|
}, |
||||
|
{ |
||||
|
field: 'sn', |
||||
|
title: 'SN', |
||||
|
width: 150 |
||||
|
}, |
||||
|
{ |
||||
|
field: 'delete', |
||||
|
width: 100, |
||||
|
title: '刪除', |
||||
|
templet: function (item) { |
||||
|
var btn = ' <a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-edit" lay-event="del">刪除</a>'; |
||||
|
return btn |
||||
|
} |
||||
|
} |
||||
|
]]; |
||||
|
//基本数据表格 |
||||
|
var table = hg.table.datatable('query', '備貨資訊', '/PTD/PTD006Query', {recordNumber: $('#recordNumber').val() }, tableCols, "", true, 'full-100', ['filter', 'print', 'exports']); |
||||
|
|
||||
|
</script> |
||||
|
} |
@ -0,0 +1,215 @@ |
|||||
|
@{ |
||||
|
ViewData["Title"] = "扣帳作業"; |
||||
|
Layout = "~/Views/Shared/_AMESLayout.cshtml"; |
||||
|
} |
||||
|
|
||||
|
<style type="text/css"> |
||||
|
.layui-table-main .layui-table-cell { |
||||
|
/*height: auto !important;*/ |
||||
|
white-space: normal; |
||||
|
} |
||||
|
|
||||
|
.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; |
||||
|
} |
||||
|
</style> |
||||
|
|
||||
|
<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-md9"> |
||||
|
<label class="layui-form-label">Record Type:</label> |
||||
|
<div class="layui-input-inline" style="width:150px"> |
||||
|
<select id="recordType" lay-event="RecordType" lay-filter="RecordType" name="recordType" lay-submit asp-items="@ViewBag.RecordType" lay-search> |
||||
|
</select> |
||||
|
</div> |
||||
|
<div class="layui-input-inline" style="width:100px"> |
||||
|
<input id="WorkCenter" name="WorkCenter" autocomplete="off" class="layui-input green-background" value="@ViewBag.WorkCenter"> |
||||
|
</div> |
||||
|
<div class="layui-input-inline" style="width:100px"> |
||||
|
<input id="RBU" name="RBU" autocomplete="off" class="layui-input" value="@ViewBag.RBU"> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-row"> |
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-col-md9"> |
||||
|
<div class="layui-inline"> |
||||
|
<label class="layui-form-label">交易單據:</label> |
||||
|
<div class="layui-input-inline" style="width:150px"> |
||||
|
<input id="recordNumber" name="RecordNumber" autocomplete="off" class="layui-input" value="@ViewBag.RecordNumber"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<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 class="layui-inline" style="flex: 1; width: 100%; text-align: right;"> |
||||
|
<label id="rowCount" class="layui-inline layui-form-label" style="width: 50%; color: red; text-align: left;">目前勾選項次 0 項,數量共 0 pcs</label> |
||||
|
|
||||
|
<div class="layui-input-inline" style="width:100px"> |
||||
|
<label class="layui-inline layui-form-label" style="text-align: right;">Record Date:</label> |
||||
|
</div> |
||||
|
<div class="layui-input-inline" style="width:150px"> |
||||
|
<input id="recordDate" name="RecordDate" autocomplete="off" class="layui-input" value="@ViewBag.RecordDate"> |
||||
|
</div> |
||||
|
<div class="layui-input-inline" style="width:100px"> |
||||
|
<input type="submit" id="commit" value="確認扣帳" class="layui-btn" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<table class="layui-hide" id="query" lay-filter="query" lay-check="true"></table> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
@section Scripts{ |
||||
|
<script type="text/javascript"> |
||||
|
layui.use(['laydate','table', 'form'], function () { |
||||
|
var table = layui.table; |
||||
|
laydate = layui.laydate; |
||||
|
laydate.render({ |
||||
|
elem: '#recordDate' |
||||
|
, trigger: 'click' |
||||
|
, format: 'yyyy/MM/dd' |
||||
|
, theme: 'grid' |
||||
|
}); |
||||
|
|
||||
|
// 監聽表格中checkbox的勾選狀態變化 |
||||
|
table.on('checkbox(query)', function () { |
||||
|
var checkedData = table.checkStatus('query').data; |
||||
|
var checkedCount = checkedData.length; |
||||
|
var totalQty = 0; |
||||
|
$.each(checkedData, function (index, DN) { |
||||
|
totalQty += DN.qty; |
||||
|
}); |
||||
|
$("#rowCount").html("目前勾選項次 " + checkedCount + " 項,數量共 " + totalQty + " pcs"); |
||||
|
}); |
||||
|
|
||||
|
// 確認扣帳按鈕事件 |
||||
|
$('#commit').on('click', function () { |
||||
|
var recordType = document.getElementById('recordType').value; |
||||
|
var workCenter = document.getElementById('WorkCenter').value; |
||||
|
var rbu = document.getElementById('RBU').value; |
||||
|
var recordDate = document.getElementById('recordDate').value; |
||||
|
|
||||
|
var tableData = table.checkStatus('query').data; |
||||
|
|
||||
|
var postData = { |
||||
|
recordType: recordType, |
||||
|
workCenter: workCenter, |
||||
|
rbu: rbu, |
||||
|
recordDate: recordDate, |
||||
|
|
||||
|
tableData: tableData |
||||
|
}; |
||||
|
|
||||
|
$.ajax({ |
||||
|
url: '@Url.Action("PTD007_Commit", "PTD")', |
||||
|
dataType: 'json', |
||||
|
data: { data: JSON.stringify(postData) }, |
||||
|
type: 'POST', |
||||
|
success: function (result) { |
||||
|
console.log("扣帳結果:"); |
||||
|
console.log(result); |
||||
|
if (result.data.success) { |
||||
|
layer.msg('扣帳成功!', { icon: 1 }); |
||||
|
// 重新加载表格数据 |
||||
|
layui.table.reload('query', { |
||||
|
data: tableData, |
||||
|
page: false, |
||||
|
limit: 2000 |
||||
|
}); |
||||
|
} else { |
||||
|
layer.msg('扣帳失敗,原因:' + result.data.msg, { icon: 2 }); |
||||
|
} |
||||
|
}, |
||||
|
error: function (error) { |
||||
|
layer.msg('扣帳失敗!原因:' + error.msg, { icon: 2 }); |
||||
|
} |
||||
|
}); |
||||
|
}); |
||||
|
|
||||
|
}); |
||||
|
//监听表单提交事件 |
||||
|
hg.form.onsubmit('querysubmit', function (data) { |
||||
|
table && table.reload(data); |
||||
|
}); |
||||
|
|
||||
|
|
||||
|
var tableCols = [[ |
||||
|
{ |
||||
|
type: 'checkbox', |
||||
|
fixed: 'left', |
||||
|
event: 'checkbox' |
||||
|
}, |
||||
|
{ |
||||
|
field: 'dnno', |
||||
|
width: 150, |
||||
|
title: 'DN單號', |
||||
|
sort: true |
||||
|
}, |
||||
|
{ |
||||
|
field: 'dnLineNO', |
||||
|
title: 'LineNo', |
||||
|
width: 100 |
||||
|
}, |
||||
|
{ |
||||
|
field: 'productID', |
||||
|
title: 'Material(料號)', |
||||
|
width: 150 |
||||
|
}, |
||||
|
{ |
||||
|
field: 'soldCustomerID', |
||||
|
title: 'Customer', |
||||
|
width: 150 |
||||
|
}, |
||||
|
{ |
||||
|
field: 'expectShipDate', |
||||
|
title: '預計出貨日', |
||||
|
sort: true, |
||||
|
templet: '<div>{{ layui.util.toDateString(d.expectShipDate, "yyyy/MM/dd") }}</div>', |
||||
|
width: 150 |
||||
|
}, |
||||
|
{ |
||||
|
field: 'shipQty', |
||||
|
title: '預計Qty', |
||||
|
width: 100 |
||||
|
}, |
||||
|
{ |
||||
|
field: 'qty', |
||||
|
title: '出貨Qty', |
||||
|
width: 100 |
||||
|
} |
||||
|
] |
||||
|
]; |
||||
|
var table = hg.table.datatable('query', '扣帳資料查詢', '/PTD/PTD007Query', { recordType: $("#recordType").val(), recordNumber: $('#recordNumber').val() }, tableCols, "", false, 'full-100', ['filter', 'print', 'exports']); |
||||
|
</script> |
||||
|
} |
Loading…
Reference in new issue