5 changed files with 596 additions and 0 deletions
@ -0,0 +1,300 @@ |
|||
@{ |
|||
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-sm3"> |
|||
<div class="layui-inline"> |
|||
<label class="layui-form-label">工單號碼:</label> |
|||
<div class="layui-input-inline" style="width:150px"> |
|||
<input id="wipNO" name="wipNo" autocomplete="off" class="layui-input" placeholder="請輸入工單號碼"> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<div class="layui-col-sm3"> |
|||
<div class="layui-inline"> |
|||
<label class="layui-form-label">料號:</label> |
|||
<div class="layui-input-inline" style="width:150px"> |
|||
<input id="itemNO" name="itemNo" autocomplete="off" class="layui-input" placeholder="請輸入料號"> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<div class="layui-row"> |
|||
<div class="layui-form-item"> |
|||
<div class="layui-col-sm5"> |
|||
<div class="layui-inline"> |
|||
<label class="layui-form-label">維修日期:</label> |
|||
<div class="layui-input-inline" style="width:150px"> |
|||
<input id="dateStart" name="dateStart" autocomplete="off" class="layui-input" readonly=""> |
|||
</div> |
|||
<div class="layui-form-mid">~</div> |
|||
<div class="layui-input-inline" style="width:150px"> |
|||
<input id="dateEnd" name="dateEnd" autocomplete="off" class="layui-input" readonly=""> |
|||
</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 class="layui-inline"> |
|||
<button type="button" id="btnExport" class="layui-btn layui-btn-normal layui-btn-sm"><i class="fa fa-file-excel-o"></i>導出全部數據</button> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
|
|||
@section Scripts{ |
|||
<script type="text/javascript"> |
|||
layui.config({ |
|||
base: '../lib/layui_ext/', |
|||
}).extend({ |
|||
excel: 'excel', |
|||
}); |
|||
</script> |
|||
<script type="text/javascript"> |
|||
|
|||
function formatJSONDate(jsonDate) { |
|||
if (jsonDate == null) { |
|||
return ""; |
|||
} |
|||
else { |
|||
var date = eval(jsonDate.replace(/\/Date\((\d+)\)\//gi, "new Date($1)")); |
|||
var myDate = new Date(date); |
|||
var yy = myDate.getFullYear(); |
|||
var mm = (myDate.getMonth() + 1 < 10 ? '0' : '') + (myDate.getMonth() + 1); |
|||
var dd = (myDate.getDate() < 10 ? '0' : '') + myDate.getDate(); |
|||
var h = (myDate.getHours() < 10 ? '0' : '') + myDate.getHours(); |
|||
var m = (myDate.getMinutes() < 10 ? '0' : '') + myDate.getMinutes(); |
|||
var s = (myDate.getSeconds() < 10 ? '0' : '') + myDate.getSeconds(); |
|||
//mm + "/" + dd + " " + |
|||
//var output = yy + "-" + mm + "-" + dd + " " + h + ":" + m + ":" + s; |
|||
var output = yy + mm + dd + h + m + s; |
|||
// myDate.getHours() + ":" + myDate.getMinutes() + ":" + myDate.getSeconds(); |
|||
return output; |
|||
} |
|||
} |
|||
|
|||
layui.use(['jquery', 'excel', 'layer'], function () { |
|||
var $ = layui.jquery; |
|||
var layer = layui.layer; |
|||
var excel = layui.excel; |
|||
|
|||
$('#btnExport').on('click', function () { |
|||
|
|||
$.ajax({ |
|||
url: '@Url.Action("REP013Query", "REP")', |
|||
dataType: 'json', |
|||
success(res) { |
|||
var data = res.data; |
|||
data = excel.filterExportData(data, [ |
|||
'unitNO', |
|||
'lineDesc', |
|||
'createDate', |
|||
'month', |
|||
'weekOfYearISO', |
|||
'stationName', |
|||
'wipNO', |
|||
'planQTY', |
|||
'barcodeNo', |
|||
'modelNO', |
|||
'itemNO', |
|||
'semiItemNo', |
|||
'oldPartNo', |
|||
'newPartNo', |
|||
'ngNo', |
|||
'reasonDesc', |
|||
'locationNo', |
|||
'changeMaterial', |
|||
'repairReason', |
|||
'repairType2', |
|||
'memo', |
|||
'repairDesc', |
|||
'ngType2', |
|||
'rrDesc', |
|||
'userNo', |
|||
'userName', |
|||
'replyDate', |
|||
'testDate', |
|||
'testUserNo', |
|||
'testUserName', |
|||
'testTypeName', |
|||
'qaTypeName', |
|||
'ngReasonDescEn', |
|||
'partNo', |
|||
'pinNo', |
|||
'reelNo', |
|||
'dateCode', |
|||
'vendorCode', |
|||
'replyReason', |
|||
'replyMeasure', |
|||
'replyUserNo', |
|||
'replyUserName', |
|||
'checkInUserName', |
|||
'checkInDate', |
|||
'checkOutUserName', |
|||
'checkOutDate', |
|||
'tat', |
|||
'stateDesc' |
|||
]); |
|||
|
|||
data.unshift({ |
|||
unitNO: "製程單位", lineDesc: "線別", createDate: "維修時間", month: "月份", weekOfYearISO: "第幾週", stationName: "站別", wipNO: "工單號碼", planQTY: "數量", barcodeNo: "條碼", modelNO: "機種", itemNO: "料號", semiItemNo: "半成品料號", oldPartNo: "舊料號", newPartNo: "新料號", |
|||
ngNo: "不良代碼", reasonDesc: "不良描述", locationNo: "維修位置", changeMaterial: "更換零件", repairReason: "維修原因", repairType2: "維修類別", memo: "維修備註", repairDesc: "維修描述", |
|||
ngType2: "不良類別", rrDesc: "不良責任類別", userNo: "維修工號", userName: "維修人員", replyDate: "回覆時間", testDate: "測試時間", testUserNo: "測試工號", testUserName: "測試人員" |
|||
, testTypeName: "測試類別", qaTypeName: "QA類別", ngReasonDescEn: "英文不良描述", partNo: "零件料號", pinNo: "腳位", reelNo: "料卷號" |
|||
, dateCode: "日期碼", vendorCode: "供應商代碼", replyReason: "回覆原因" |
|||
, replyMeasure: "回覆對策", replyUserNo: "回覆工號", replyUserName: "回覆人員" |
|||
, checkInUserName: "進站人員", checkInDate: "進站時間", checkOutUserName: "出站人員", checkOutDate: "出站時間", tat: "TAT(小時)", stateDesc: "狀態" |
|||
}); |
|||
|
|||
var timestart = Date.now(); |
|||
excel.downloadExcel(data, '維修進出統計報表' + formatJSONDate(Date.now().toString()), 'xlsx'); |
|||
var timeend = Date.now(); |
|||
|
|||
var spent = (timeend - timestart) / 1000; |
|||
layer.alert('導出全部數據耗時 ' + spent + ' s'); |
|||
} |
|||
, error() { |
|||
layer.alert('導出全部數據失敗'); |
|||
} |
|||
}); |
|||
}); |
|||
}); |
|||
|
|||
layui.use(['form', 'layer', 'laydate'], function () { |
|||
form = layui.form; |
|||
laydate = layui.laydate; |
|||
laydate.render({ |
|||
elem: '#dateStart' |
|||
, trigger: 'click' |
|||
, format: 'yyyy/MM/dd' |
|||
, theme: 'grid' |
|||
}); |
|||
|
|||
laydate.render({ |
|||
elem: '#dateEnd' |
|||
, trigger: 'click' |
|||
, format: 'yyyy/MM/dd' |
|||
, theme: 'grid' |
|||
}); |
|||
}); |
|||
|
|||
//监听表单提交事件 |
|||
hg.form.onsubmit('querysubmit', function (data) { |
|||
hg.msghide("重新載入資料.."); |
|||
table && table.reload(data); |
|||
}); |
|||
|
|||
var tableCols = [[ |
|||
{ |
|||
field: 'barcodeNo', |
|||
title: '條碼', |
|||
sort: true |
|||
}, |
|||
{ |
|||
field: 'wipNO', |
|||
width: 200, |
|||
title: '工單號碼', |
|||
sort: true |
|||
}, |
|||
{ |
|||
field: 'itemNO', |
|||
title: '料號', |
|||
width: 200, |
|||
sort: true |
|||
}, |
|||
{ |
|||
field: 'stationName', |
|||
width: 160, |
|||
title: '站別', |
|||
sort: true |
|||
}, |
|||
{ |
|||
field: 'checkInUserName', |
|||
title: '進站人員', |
|||
width: 160, |
|||
sort: true |
|||
}, |
|||
{ |
|||
field: 'checkInDate', |
|||
title: '進站時間', |
|||
width: 160, |
|||
templet: '<div>{{ layui.util.toDateString(d.testDate, "yyyy/MM/dd HH:mm") }}</div>' |
|||
}, |
|||
{ |
|||
field: 'checkOutUserName', |
|||
title: '出站人員', |
|||
width: 160, |
|||
sort: true |
|||
}, |
|||
{ |
|||
field: 'checkOutDate', |
|||
title: '出站時間', |
|||
width: 160, |
|||
templet: '<div>{{ layui.util.toDateString(d.createDate, "yyyy/MM/dd HH:mm") }}</div>' |
|||
}, |
|||
{ |
|||
field: 'tat', |
|||
title: 'TAT(Hour)', |
|||
width: 160, |
|||
sort: true |
|||
}, |
|||
{ |
|||
field: 'stateDesc', |
|||
title: '狀態', |
|||
width: 100, |
|||
sort: true |
|||
}] |
|||
]; |
|||
|
|||
//var param = productTypeNo.value + '_' + testTypeNo.value + '_' + unitNo.value + '_' + lineID.value + '_' + stationID.value + '_' + wipNO.value + '_' + itemNO.value + '_' + dateStart.value + '_' + dateEnd.value; |
|||
|
|||
//基本数据表格 |
|||
var table = hg.table.datatable('query', '維修進/出統計報表', '/REP/REP013Query', {}, tableCols, toolbar, true, 'full-100', ['filter', 'print', 'exports']); |
|||
|
|||
</script> |
|||
} |
Loading…
Reference in new issue