vick_wang419@hotmail.com.tw 1 year ago
parent
commit
28d681fd75
  1. BIN
      .vs/AMESCoreStudio/DesignTimeBuild/.dtbcache.v2
  2. BIN
      .vs/AMESCoreStudio/v16/.suo
  3. 57
      AMESCoreStudio.Web/Controllers/LABController.cs
  4. 1088
      AMESCoreStudio.Web/Controllers/QRSController.cs
  5. 20
      AMESCoreStudio.Web/Controllers/RPTController.cs
  6. 11
      AMESCoreStudio.Web/HttpApis/AMES/ILAB.cs
  7. 11
      AMESCoreStudio.Web/HttpApis/AMES/IRPT.cs
  8. 19
      AMESCoreStudio.Web/Views/LAB/LAB001.cshtml
  9. 36
      AMESCoreStudio.Web/Views/LAB/LAB002.cshtml
  10. 146
      AMESCoreStudio.Web/Views/LAB/LAB002C.cshtml
  11. 164
      AMESCoreStudio.Web/Views/LAB/LAB002U.cshtml
  12. 81
      AMESCoreStudio.Web/Views/LAB/LAB003.cshtml
  13. 106
      AMESCoreStudio.Web/Views/LAB/LAB003U.cshtml
  14. 19
      AMESCoreStudio.Web/Views/LAB/LAB004.cshtml
  15. 22
      AMESCoreStudio.Web/Views/PCS/PCS037.cshtml
  16. 2
      AMESCoreStudio.Web/Views/RPT/RPT001.cshtml
  17. 149
      AMESCoreStudio.Web/Views/RPT/RPT006.cshtml
  18. 30
      AMESCoreStudio.WebApi/AMESCoreStudio.WebApi/AMESCoreStudio.WebApi.xml
  19. 17
      AMESCoreStudio.WebApi/Controllers/AMES/ExceptionWorktimesController.cs
  20. 52
      AMESCoreStudio.WebApi/Controllers/AMES/LabelItemController.cs
  21. 25
      AMESCoreStudio.WebApi/Controllers/AMES/LabelParamController.cs
  22. 2
      AMESCoreStudio.WebApi/Controllers/AMES/LabelTemplateMasterController.cs
  23. 230
      AMESCoreStudio.WebApi/Controllers/BLL/RPTController.cs
  24. 108
      AMESCoreStudio.WebApi/DTO/AMES/RPT006VIiewDto.cs

BIN
.vs/AMESCoreStudio/DesignTimeBuild/.dtbcache.v2

Binary file not shown.

BIN
.vs/AMESCoreStudio/v16/.suo

Binary file not shown.

57
AMESCoreStudio.Web/Controllers/LABController.cs

@ -147,9 +147,9 @@ namespace AMESCoreStudio.Web.Controllers
[ResponseCache(Duration = 0)] [ResponseCache(Duration = 0)]
[HttpGet] [HttpGet]
public async Task<IActionResult> GetLabParamsAsync(int page = 0, int limit = 10) public async Task<IActionResult> GetLabParamsAsync(string status = "*" ,int page = 0, int limit = 10)
{ {
var result = await _labApi.GetLabParamsByLabelID(page, limit); var result = await _labApi.GetLabParamsByStatus(status,page, limit);
if (result.Data.Count() > 0) if (result.Data.Count() > 0)
{ {
@ -191,7 +191,32 @@ namespace AMESCoreStudio.Web.Controllers
return Json(new Table() { count = 0, data = null }); return Json(new Table() { count = 0, data = null });
} }
public IActionResult LAB002_COPY(string ImgFile, string LabMatnr)
{
if (System.IO.File.Exists(ImgFile))
{
var FileName = Path.GetFileName(ImgFile);
//指定要寫入的路徑、檔名和副檔名
var FilePath = $"\\LABFile\\" + LabMatnr + "\\";//本機目錄
if (!System.IO.Directory.Exists(_env.WebRootPath + FilePath))
{
System.IO.Directory.CreateDirectory(_env.WebRootPath + FilePath);
}
var targetFilePath = _env.WebRootPath + FilePath + FileName;
System.IO.File.Copy(ImgFile, targetFilePath, true);
return Json(new Result() { success = true, msg = FilePath + FileName });
}
else
{
return Json(new Result() { success = false, msg = "圖片檔案不存在" });
}
}
//新增頁面 //新增頁面
@ -489,13 +514,13 @@ namespace AMESCoreStudio.Web.Controllers
} }
[HttpGet] [HttpGet]
public async Task<IActionResult> GetLab004(string OrderNo, string ModelNo, DateTime? strdate, DateTime? enddate, string UserNo) public async Task<IActionResult> GetLab004(string OrderNo, string ModelNo, DateTime? strdate, DateTime? enddate, string UserNo,string Status)
{ {
List<dynamic> xx = new List<dynamic>(); List<dynamic> xx = new List<dynamic>();
UserInfo User = new UserInfo(); UserInfo User = new UserInfo();
if (UserNo != null) if (UserNo != null)
User = await _sysApi.GetUserInfoByUserNo(UserNo); User = await _sysApi.GetUserInfoByUserNo(UserNo);
var result = await _labApi.GetLabelItemMaster(OrderNo, ModelNo, strdate, enddate, User.UserID); var result = await _labApi.GetLabelItemMaster(OrderNo, ModelNo, strdate, enddate, User.UserID, Status);
if (result != null) if (result != null)
{ {
@ -508,8 +533,22 @@ namespace AMESCoreStudio.Web.Controllers
public async Task<IActionResult> LAB003P(string LabMat) public async Task<IActionResult> LAB003P(string LabMat)
{ {
var result = await _labApi.GetLabelPicture(LabMat); var result = await _labApi.GetLabelPicture(LabMat);
var x = result.Data.FirstOrDefault(); var ImgFile = result.Data.FirstOrDefault();
ViewBag.Picture = x; var FileName = Path.GetFileName(ImgFile);
//指定要寫入的路徑、檔名和副檔名
var FilePath = $"\\LABFile\\" + LabMat + "\\";//本機目錄
if (!System.IO.Directory.Exists(_env.WebRootPath + FilePath))
{
System.IO.Directory.CreateDirectory(_env.WebRootPath + FilePath);
}
var targetFilePath = _env.WebRootPath + FilePath + FileName;
System.IO.File.Copy(ImgFile, targetFilePath, true);
// var x = result.Data.FirstOrDefault();
ViewBag.Picture = FilePath + FileName;
return View(result.Data); return View(result.Data);
} }
@ -541,10 +580,10 @@ namespace AMESCoreStudio.Web.Controllers
} }
[HttpGet] [HttpGet]
public async Task<JsonResult> GetLabelField(string Labmat) public async Task<JsonResult> GetLabelField(string Labmat,string ItemNo)
{ {
ResultModel<dynamic> result = new ResultModel<dynamic>(); ResultModel<dynamic> result = new ResultModel<dynamic>();
result = await _labApi.GetLabelField(Labmat); result = await _labApi.GetLabelField(Labmat, ItemNo);
if(result.Data.Count()>0) if(result.Data.Count()>0)
return Json(new Result() { success = result.Success, msg = result.Msg, data = result.Data }); return Json(new Result() { success = result.Success, msg = result.Msg, data = result.Data });
else else
@ -558,7 +597,7 @@ namespace AMESCoreStudio.Web.Controllers
{ {
int Sn = 1; int Sn = 1;
ResultModel<dynamic> result = new ResultModel<dynamic>(); ResultModel<dynamic> result = new ResultModel<dynamic>();
result = await _labApi.GetLabelItemMaster(OrderNo, null, null, null, -1); result = await _labApi.GetLabelItemMaster(OrderNo, null, null, null, -1,"A");
if (result.Data.Any()) if (result.Data.Any())
{ {
var r2 = result.Data.Max(x => x.ordeR_NO).ToString(); var r2 = result.Data.Max(x => x.ordeR_NO).ToString();

1088
AMESCoreStudio.Web/Controllers/QRSController.cs

File diff suppressed because it is too large

20
AMESCoreStudio.Web/Controllers/RPTController.cs

@ -2529,6 +2529,26 @@ namespace AMESCoreStudio.Web.Controllers
#endregion #endregion
#region RPT006 生產效率報表
public IActionResult RPT006()
{
return View();
}
public async Task<IActionResult> RPT006Query(string strDate, string endDate)
{
var result = await _rptApi.GetRPT006View(strDate, endDate);
if (result.Any())
{
return Json(new Table() { code = 0, msg = "", data = result, count = result.Count });
}
return Json(new Table() { count = 0, data = null });
}
#endregion
/// <summary> /// <summary>
/// 登入UserID /// 登入UserID
/// </summary> /// </summary>

11
AMESCoreStudio.Web/HttpApis/AMES/ILAB.cs

@ -23,7 +23,7 @@ namespace AMESCoreStudio.Web
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/LabelItem/GetLabelField")] [WebApiClient.Attributes.HttpGet("api/LabelItem/GetLabelField")]
ITask<ResultModel<dynamic>> GetLabelField(string LabMat); ITask<ResultModel<dynamic>> GetLabelField(string LabMat,string ItemNo);
[WebApiClient.Attributes.HttpGet("api/LabelItem/GetLabel")] [WebApiClient.Attributes.HttpGet("api/LabelItem/GetLabel")]
ITask<ResultModel<dynamic>> GetLabel(string Model); ITask<ResultModel<dynamic>> GetLabel(string Model);
@ -32,7 +32,7 @@ namespace AMESCoreStudio.Web
ITask<ResultModel<dynamic>> GetMetInfo(string Model); ITask<ResultModel<dynamic>> GetMetInfo(string Model);
[WebApiClient.Attributes.HttpGet("api/LabelItem/GetLabelItemMaster")] [WebApiClient.Attributes.HttpGet("api/LabelItem/GetLabelItemMaster")]
ITask<ResultModel<dynamic>> GetLabelItemMaster(string OrderNo, string ModelNo, DateTime? strdate, DateTime? enddate, int UserId); ITask<ResultModel<dynamic>> GetLabelItemMaster(string OrderNo, string ModelNo, DateTime? strdate, DateTime? enddate, int UserId,string Status);
[WebApiClient.Attributes.HttpPost("api/LabelItem")] [WebApiClient.Attributes.HttpPost("api/LabelItem")]
ITask<ResultModel<LabelItemMaster>> PostLabelItemMaster([FromBody, RawJsonContent] string model); ITask<ResultModel<LabelItemMaster>> PostLabelItemMaster([FromBody, RawJsonContent] string model);
@ -98,6 +98,13 @@ namespace AMESCoreStudio.Web
[WebApiClient.Attributes.HttpGet("api/LabelParam/byLabelID/{id}")] [WebApiClient.Attributes.HttpGet("api/LabelParam/byLabelID/{id}")]
ITask<ResultModel<LabelParam>> GetLabParamsByLabelID(int page = 0, int limit = 10); ITask<ResultModel<LabelParam>> GetLabParamsByLabelID(int page = 0, int limit = 10);
/// <summary>
/// 獲取Label 全部參數資料
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/LabelParam/byStatus/{status}")]
ITask<ResultModel<LabelParam>> GetLabParamsByStatus(string status,int page = 0, int limit = 10);
/// <summary> /// <summary>
/// Label 參數儲存 /// Label 參數儲存
/// </summary> /// </summary>

11
AMESCoreStudio.Web/HttpApis/AMES/IRPT.cs

@ -98,5 +98,16 @@ namespace AMESCoreStudio.Web
ITask<RPT004ViewDto> GetRPT004View(string unitNo, int lineId); ITask<RPT004ViewDto> GetRPT004View(string unitNo, int lineId);
#endregion #endregion
#region RPT006 生產效率報表
/// <summary>
/// 生產效率報表
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/RPT/GetRPT006View")]
ITask<List<RPT006ViewDto>> GetRPT006View(string strDate, string endDate);
#endregion
} }
} }

19
AMESCoreStudio.Web/Views/LAB/LAB001.cshtml

@ -9,6 +9,23 @@
<div class="layui-form-item "> <div class="layui-form-item ">
<div class="layui-inline"><i class="fa fa-file-text-o fa-fw"></i> @ViewBag.Title</div> <div class="layui-inline"><i class="fa fa-file-text-o fa-fw"></i> @ViewBag.Title</div>
</div> </div>
<div class="layui-form-item layui-layout-left">
<div class="layui-inline">
<label class="layui-form-label">狀態</label>
<div class="layui-input-inline" style="width:100px">
<select id="status" name="status" lay-filter="status" lay-submit>
<option value="*">全部</option>
<option value="Y">啟用</option>
<option value="N">停用</option>
</select>
</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">&#xe615;</i>
</button>
</div>
</div>
</div> </div>
</div> </div>
<div class="layui-card-body"> <div class="layui-card-body">
@ -73,7 +90,7 @@
} }
]; ];
//基本数据表格 //基本数据表格
var table = hg.table.datatable('test', 'Label 需填寫欄位', '/LAB/GetLabParams', {}, tableCols, toolbar, true, 'full-100', ['filter', 'print', 'exports']); var table = hg.table.datatable('test', 'Label 需填寫欄位', '/LAB/GetLabParams' , {}, tableCols, toolbar, true, 'full-100', ['filter', 'print', 'exports']);
</script> </script>
} }

36
AMESCoreStudio.Web/Views/LAB/LAB002.cshtml

@ -132,7 +132,7 @@
} }
//通过行tool编辑,lay-event="show" //通过行tool编辑,lay-event="show"
function Show(obj) { function Show1(obj) {
layui.use('layer', function () { layui.use('layer', function () {
var layer = layui.layer; var layer = layui.layer;
@ -153,6 +153,40 @@
}; };
function Show(obj) {
$.ajax({
url: '/LAB/LAB002_COPY',
method: 'POST',
data: { ImgFile: obj.data.imagE_NAME, LabMatnr: obj.data.labeL_MATNR},
success: function (data) {
if (data.success) {
layui.use('layer', function () {
var layer = layui.layer;
layer.open({
type: 2,
title: '預覽文件',
shadeClose: true,//点击遮罩关闭层
shade: 0.8,
area: ['90%', '90%'],
content: data.msg, // 图片路径作为内容, // 完整的图片路径
zIndex: 19891014
});
});
}
else {
hg.msg(data.msg);
}
},
error: function () {
hg.msg("网络请求失败!");
}
});
};
//通过行tool删除,lay-event="del" //通过行tool删除,lay-event="del"
function del(obj) { function del(obj) {
var status; var status;

146
AMESCoreStudio.Web/Views/LAB/LAB002C.cshtml

@ -19,6 +19,7 @@
white-space: normal white-space: normal
} }
</style> </style>
<form enctype="multipart/form-data" method="post" id="modelform"> <form enctype="multipart/form-data" method="post" id="modelform">
<div class="layui-card"> <div class="layui-card">
<div class="layui-card-header"> <div class="layui-card-header">
@ -41,47 +42,51 @@
<div class="layui-inline" style="margin-right: 5px; margin-left: 5px;"> <div class="layui-inline" style="margin-right: 5px; margin-left: 5px;">
<div class="layui-inline"> <div class="layui-inline">
<label asp-for="LABEL_MATNR" class="layui-form-label"></label> <label asp-for="LABEL_MATNR" class="layui-form-label"></label>
<input asp-for="LABEL_MATNR" type="text" style="width: 250px;" class="layui-input" onkeydown="input(event);" /> <input asp-for="LABEL_MATNR" type="text" style="width: 450px;" class="layui-input" onkeydown="input(event);" />
<span asp-validation-for="LABEL_MATNR" class="text-danger offset-sm-3 my-sm-1"></span> <span asp-validation-for="LABEL_MATNR" class="text-danger offset-sm-3 my-sm-1"></span>
</div> </div>
</div> </div>
<div class="layui-inline" style="margin-right: 5px; margin-left: 5px;"> <div class="layui-inline" style="margin-right: 5px; margin-left: 5px; display: inline-block;">
<div class="layui-inline"> <div class="layui-inline" style="display: inline-block;">
<label asp-for="LABEL_FILE" class="layui-form-label"></label> <label asp-for="LABEL_FILE" class="layui-form-label"></label>
<input asp-for="LABEL_FILE" type="text" style="width: 250px;" class="layui-input" readonly/> <input id="LF1" type="text" style="width: 270px; display: inline-block;" class="layui-input" placeholder="請輸入檔案路徑" />
<input id="LF2" type="text" style="width: 170px; display: inline-block; margin-left: 10px;" class="layui-input" placeholder="請輸入檔案名稱"/>
<input asp-for="LABEL_FILE" type="hidden" />
<span asp-validation-for="LABEL_FILE" class="text-danger offset-sm-3 my-sm-1"></span> <span asp-validation-for="LABEL_FILE" class="text-danger offset-sm-3 my-sm-1"></span>
</div> </div>
</div> </div>
<div class="layui-inline" style="margin-right: 5px; margin-left: 5px;"> @*<div class="layui-inline" style="margin-right: 5px; margin-left: 5px;">
<div class="layui-inline"> <div class="layui-inline">
<label class="layui-form-label"></label> <label class="layui-form-label"></label>
<input type="file" id="fileInput" onchange="validateFileExtensionbtw()"> <input type="file" id="fileInput" onchange="validateFileExtensionbtw()">
<div id="errorContainer1" style="color: red;"></div> <div id="errorContainer1" style="color: red;"></div>
</div> </div>
</div> </div>*@
<div class="layui-inline" style="margin-right: 5px; margin-left: 5px;"> <div class="layui-inline" style="margin-right: 5px; margin-left: 5px;">
<div class="layui-inline"> <div class="layui-inline">
<label asp-for="REMARK" class="layui-form-label"></label> <label asp-for="REMARK" class="layui-form-label"></label>
<input asp-for="REMARK" type="text" style="width: 250px;" class="layui-input" /> <textarea asp-for="REMARK" style="width: 450px;" class="layui-textarea"></textarea>
<span asp-validation-for="REMARK" class="text-danger offset-sm-3 my-sm-1"></span> <span asp-validation-for="REMARK" class="text-danger offset-sm-3 my-sm-1"></span>
</div> </div>
</div> </div>
<div class="layui-inline" style="margin-right: 5px; margin-left: 5px;"> <div class="layui-inline" style="margin-right: 5px; margin-left: 5px; display: inline-block;">
<div class="layui-inline"> <div class="layui-inline" style="display: inline-block;">
<label asp-for="IMAGE_NAME" class="layui-form-label"></label> <label asp-for="IMAGE_NAME" class="layui-form-label"></label>
<input asp-for="IMAGE_NAME" type="text" style="width: 250px;" class="layui-input" readonly/> <input id="IMAGE1" type="text" style="width: 270px; display: inline-block;" class="layui-input" placeholder="請輸入檔案路徑" />
<input id="IMAGE2" type="text" style="width: 170px; display: inline-block; margin-left: 10px;" class="layui-input" placeholder="請輸入檔案名稱" />
<input asp-for="IMAGE_NAME" type="hidden" />
<span asp-validation-for="IMAGE_NAME" class="text-danger offset-sm-3 my-sm-1"></span> <span asp-validation-for="IMAGE_NAME" class="text-danger offset-sm-3 my-sm-1"></span>
</div> </div>
</div> </div>
<div class="layui-inline" style="margin-right: 5px; margin-left: 5px;"> @*<div class="layui-inline" style="margin-right: 5px; margin-left: 5px;">
<div class="layui-inline"> <div class="layui-inline">
<label class="layui-form-label"></label> <label class="layui-form-label"></label>
<input type="file" id="fileInputimage" name="formFile" onchange="validateFileExtensionPIC()"> <input type="file" id="fileInputimage" name="formFile" onchange="validateFileExtensionPIC()">
<div id="errorContainer" style="color: red;"></div> <div id="errorContainer" style="color: red;"></div>
</div> </div>
</div> </div>*@
<div class="layui-inline"> <div class="layui-inline">
<label class="layui-form-label"></label> <label class="layui-form-label"></label>
<div class="layui-input-inline" style="width:auto"> <div class="layui-input-inline" style="width:auto">
@ -93,11 +98,8 @@
<div class="layui-inline"> <div class="layui-inline">
<div id="errorMSG" style="color: red;"></div> <div id="errorMSG" style="color: red;"></div>
</div> </div>
</div> </div>
</div> </div>
<div class="layui-inline" style="margin-right: 5px; margin-left: 5px;"> <div class="layui-inline" style="margin-right: 5px; margin-left: 5px;">
<div class="layui-form-item"> <div class="layui-form-item">
<div class="layui-inline"> <div class="layui-inline">
@ -112,6 +114,7 @@
</div> </div>
</div> </div>
</div>
</form> </form>
<form id="modeltable" method="post"> <form id="modeltable" method="post">
<table class="layui-hide" id="test" lay-filter="test" lay-data="{id:'test'}"></table> <table class="layui-hide" id="test" lay-filter="test" lay-data="{id:'test'}"></table>
@ -121,6 +124,8 @@
@section Scripts{ @section Scripts{
<script type="text/javascript"> <script type="text/javascript">
$('#querysubmit1').click(function () { $('#querysubmit1').click(function () {
CheckMatnr($("#LABEL_MATNR").val()); CheckMatnr($("#LABEL_MATNR").val());
}); });
@ -150,11 +155,30 @@
success: function (result) { success: function (result) {
if (!result.data) { if (!result.data) {
// alert("查無此Label料號:" + Matnr); // alert("查無此Label料號:" + Matnr);
alert(Matnr +" error : "+ result.msg); alert(Matnr + " error : " + result.msg);
}
else
{
var Finish = CheckListCheck();
if (Finish == 'N') {
alert("至少需勾選一項欄位名稱!");
}
else {
var PIC = CheckPICForamt();
if (PIC != 'Y') {
alert(PIC);
}
else {
var BTW = CheckBTWForamt();
if (BTW != 'Y') {
alert(BTW);
} }
else { else {
insertMaster2("T"); insertMaster2("T");
} }
}
}
}
} }
@ -162,11 +186,45 @@
} }
else { else {
alert("請輸入Label料號!" ); alert("請輸入Label料號!");
} }
}; };
function CheckListCheck() {
var tableData = layui.table.cache['test']; // 这里的 'test' 是表格的 id 属性值
var Finish = 'N';
for (var i = 0; i < tableData.length; i++) {
var rowData = tableData[i];
for (var field in rowData) {
if (rowData.hasOwnProperty(field)) {
var value = rowData[field];
if (field.includes('datA_V')) {
var isChecked = $("input[name='templateCheckbox" + field[field.length - 1])[i].checked;
if (isChecked) {
Finish = 'Y';
return Finish;
}
}
}
}
}
return Finish;
};
function insertMaster2(status) { function insertMaster2(status) {
if ($("#IMAGE1").val().trim != "" && $("#IMAGE2").val().trim() != "") {
FullFile = $("#IMAGE1").val() + "\\" + $("#IMAGE2").val();
$("#IMAGE_NAME").val(FullFile);
}
if ($("#LF1").val().trim != "" && $("#LF2").val().trim() != "") {
FullFile = $("#LF1").val() + "\\" + $("#LF2").val();
$("#LABEL_FILE").val(FullFile);
}
var labelFile = $("#LABEL_FILE").val(); var labelFile = $("#LABEL_FILE").val();
if (labelFile) { if (labelFile) {
@ -403,8 +461,9 @@
var fileInput = document.getElementById('fileInputimage'); var fileInput = document.getElementById('fileInputimage');
var errorContainer = document.getElementById('errorContainer'); var errorContainer = document.getElementById('errorContainer');
// 允许的文件后缀名 // 允许的文件后缀名
var allowedExtensions = ['.jpg', '.jpeg', '.png','.bmp']; var allowedExtensions = ['.jpg', '.jpeg', '.png', '.bmp'];
// 获取文件名 // 获取文件名
var fileName = fileInput.value.split('\\').pop(); var fileName = fileInput.value.split('\\').pop();
@ -423,6 +482,57 @@
} }
} }
function CheckPICForamt() {
var image1Value = $("#IMAGE1").val().trim().toLowerCase();
var image2Value = $("#IMAGE2").val().trim().toLowerCase();
// 檢查如果其中一個不為空白,另一個也不可為空白
if ((image1Value !== "" && image2Value === "") || (image1Value === "" && image2Value !== "")) {
return "圖檔的路徑與檔案名稱請輸入完整";
}
else {
if (image2Value != "") {
var allowedExtensions = [".jpg", ".jpeg", ".png", ".bmp"];
var fileExtension = '.' + image2Value.split('.').pop();
// 檢查檔案名稱是否以圖片擴展名結尾
if (allowedExtensions.includes(fileExtension.toLowerCase())) {
return "Y";
} else {
return "圖檔的檔案名稱請為 .jpg, .jpeg, .png, .bmp 結尾";
}
}
return "Y";
}
}
function CheckBTWForamt() {
var image1Value = $("#LF1").val().trim().toLowerCase();
var image2Value = $("#LF2").val().trim().toLowerCase();
// 檢查如果其中一個不為空白,另一個也不可為空白
if ((image1Value !== "" && image2Value === "") || (image1Value === "" && image2Value !== "")) {
return "標籤檔名的路徑與檔案名稱請輸入完整";
}
else {
if (image2Value != "") {
// 檢查檔案名稱是否以圖片擴展名結尾
if (image2Value.endsWith(".btw")) {
return "Y";
} else {
return "標籤檔名的檔案名稱請為 .btw結尾";
}
}
else
return "Y";
}
}
layui.use(['form', 'layer', 'table', 'laytpl', 'laydate'], function () { layui.use(['form', 'layer', 'table', 'laytpl', 'laydate'], function () {
var layer = layui.layer, var layer = layui.layer,
$ = layui.jquery, $ = layui.jquery,

164
AMESCoreStudio.Web/Views/LAB/LAB002U.cshtml

@ -38,49 +38,54 @@
<input type="hidden" asp-for="UPDATE_USERID" value="@ViewBag.UserID" /> <input type="hidden" asp-for="UPDATE_USERID" value="@ViewBag.UserID" />
<input type="hidden" asp-for="CREATE_DATE" /> <input type="hidden" asp-for="CREATE_DATE" />
<input type="hidden" asp-for="UPDATE_DATE" value="@System.DateTime.Now" /> <input type="hidden" asp-for="UPDATE_DATE" value="@System.DateTime.Now" />
<div class="layui-inline" style="margin-right: 5px; margin-left: 5px;"> <div class="layui-inline" style="margin-right: 5px; margin-left: 5px;">
<div class="layui-inline"> <div class="layui-inline">
<label asp-for="LABEL_MATNR" class="layui-form-label"></label> <label asp-for="LABEL_MATNR" class="layui-form-label"></label>
<input asp-for="LABEL_MATNR" type="text" style="width: 250px;" class="layui-input" readonly /> <input asp-for="LABEL_MATNR" type="text" style="width: 450px;" class="layui-input" readonly />
<span asp-validation-for="LABEL_MATNR" class="text-danger offset-sm-3 my-sm-1"></span> <span asp-validation-for="LABEL_MATNR" class="text-danger offset-sm-3 my-sm-1"></span>
</div> </div>
</div> </div>
<div class="layui-inline" style="margin-right: 5px; margin-left: 5px;"> <div class="layui-inline" style="margin-right: 5px; margin-left: 5px; display: inline-block;">
<div class="layui-inline"> <div class="layui-inline" style="display: inline-block;">
<label asp-for="LABEL_FILE" class="layui-form-label"></label> <label asp-for="LABEL_FILE" class="layui-form-label"></label>
<input asp-for="LABEL_FILE" type="text" style="width: 250px;" class="layui-input" readonly/> <input id="LF1" type="text" style="width: 270px; display: inline-block;" class="layui-input" placeholder="請輸入檔案路徑"/>
<input id="LF2" type="text" style="width: 170px; display: inline-block; margin-left: 10px;" class="layui-input" placeholder="請輸入檔案名稱"/>
<input asp-for="LABEL_FILE" type="hidden" />
<span asp-validation-for="LABEL_FILE" class="text-danger offset-sm-3 my-sm-1"></span> <span asp-validation-for="LABEL_FILE" class="text-danger offset-sm-3 my-sm-1"></span>
</div> </div>
</div> </div>
<div class="layui-inline" style="margin-right: 5px; margin-left: 5px;"> @*<div class="layui-inline" style="margin-right: 5px; margin-left: 5px;">
<div class="layui-inline"> <div class="layui-inline">
<label class="layui-form-label"></label> <label class="layui-form-label"></label>
<input type="file" id="fileInput" onchange="validateFileExtensionbtw()"> <input type="file" id="fileInput" onchange="validateFileExtensionbtw()">
<div id="errorContainer1" style="color: red;"></div> <div id="errorContainer1" style="color: red;"></div>
</div> </div>
</div> </div>*@
<div class="layui-inline" style="margin-right: 5px; margin-left: 5px;"> <div class="layui-inline" style="margin-right: 5px; margin-left: 5px;">
<div class="layui-inline"> <div class="layui-inline">
<label asp-for="REMARK" class="layui-form-label"></label> <label asp-for="REMARK" class="layui-form-label"></label>
<input asp-for="REMARK" type="text" style="width: 250px;" class="layui-input" /> <textarea asp-for="REMARK" style="width: 450px;" class="layui-textarea"></textarea>
<span asp-validation-for="REMARK" class="text-danger offset-sm-3 my-sm-1"></span> <span asp-validation-for="REMARK" class="text-danger offset-sm-3 my-sm-1"></span>
</div> </div>
</div> </div>
<div class="layui-inline" style="margin-right: 5px; margin-left: 5px;"> <div class="layui-inline" style="margin-right: 5px; margin-left: 5px; display: inline-block;">
<div class="layui-inline"> <div class="layui-inline" style="display: inline-block;">
<label asp-for="IMAGE_NAME" class="layui-form-label"></label> <label asp-for="IMAGE_NAME" class="layui-form-label"></label>
<input asp-for="IMAGE_NAME" type="text" style="width: 250px;" class="layui-input" readonly /> <input id="IMAGE1" type="text" style="width: 270px; display: inline-block;" class="layui-input" placeholder="請輸入檔案路徑"/>
<input id="IMAGE2" type="text" style="width: 170px; display: inline-block; margin-left: 10px;" class="layui-input" placeholder="請輸入檔案名稱" />
<input asp-for="IMAGE_NAME" type="hidden" />
<span asp-validation-for="IMAGE_NAME" class="text-danger offset-sm-3 my-sm-1"></span> <span asp-validation-for="IMAGE_NAME" class="text-danger offset-sm-3 my-sm-1"></span>
</div> </div>
</div> </div>
<div class="layui-inline" style="margin-right: 5px; margin-left: 5px;"> @*<div class="layui-inline" style="margin-right: 5px; margin-left: 5px;">
<div class="layui-inline"> <div class="layui-inline">
<label class="layui-form-label"></label> <label class="layui-form-label"></label>
<input type="file" id="fileInputimage" name="formFile" onchange="validateFileExtensionPIC()"> <input type="file" id="fileInputimage" name="formFile" onchange="validateFileExtensionPIC()">
<div id="errorContainer" style="color: red;"></div> <div id="errorContainer" style="color: red;"></div>
</div> </div>
</div> </div>*@
<div class="layui-inline"> <div class="layui-inline">
<label class="layui-form-label"></label> <label class="layui-form-label"></label>
<div class="layui-input-inline" style="width:auto"> <div class="layui-input-inline" style="width:auto">
@ -128,27 +133,94 @@
@section Scripts{ @section Scripts{
<script type="text/javascript"> <script type="text/javascript">
var imageName = document.getElementById('IMAGE_NAME').value;
var lastSlashIndex = imageName.lastIndexOf('\\') !== -1 ? imageName.lastIndexOf('\\') : imageName.lastIndexOf('\\');
if (lastSlashIndex != -1 && imageName.length > 1) {
var path = imageName.substring(0, lastSlashIndex);
var filename = imageName.substring(lastSlashIndex + 1, imageName.length);
document.getElementById('IMAGE1').value = path;
document.getElementById('IMAGE2').value = filename;
}
else if (imageName.length > 1) {
document.getElementById('IMAGE2').value = imageName;
}
var labelFile = document.getElementById('LABEL_FILE').value;
var lastSlashIndex = labelFile.lastIndexOf('\\') !== -1 ? labelFile.lastIndexOf('\\') : labelFile.lastIndexOf('\\');
if (lastSlashIndex != -1 && labelFile.length >1) {
var path = labelFile.substring(0, lastSlashIndex);
var filename = labelFile.substring(lastSlashIndex + 1, labelFile.length);
document.getElementById('LF1').value = path;
document.getElementById('LF2').value = filename;
}
else if (labelFile.length > 1) {
document.getElementById('LF2').value = labelFile;
}
$('#querysubmit1').click(function () { $('#querysubmit1').click(function () {
insertMaster2("T"); // insertMaster2("T");
// insertList1(); // insertList1();
var Finish = CheckListCheck();
if (Finish == 'N') {
alert("至少需勾選一項欄位名稱!");
}
else {
var PIC = CheckPICForamt();
if (PIC != 'Y') {
alert(PIC);
}
else {
var BTW = CheckBTWForamt();
if (BTW != 'Y') {
alert(BTW);
}
else {
insertMaster2("T");
}
}
}
}); });
function input(e) { function CheckListCheck() {
if (e.keyCode == 13) { var tableData = layui.table.cache['test']; // 这里的 'test' 是表格的 id 属性值
var data = $("#LABEL_MATNR").val(); var Finish = 'N';
if (data) { for (var i = 0; i < tableData.length; i++) {
var rowData = tableData[i];
for (var field in rowData) {
if (rowData.hasOwnProperty(field)) {
var value = rowData[field];
CheckMatnr(data); if (field.includes('datA_V')) {
event.preventDefault(); var isChecked = $("input[name='templateCheckbox" + field[field.length - 1])[i].checked;
return false; if (isChecked) {
Finish = 'Y';
return Finish;
}
} }
} }
}; }
}
return Finish;
};
function insertMaster2(status) { function insertMaster2(status) {
if ($("#IMAGE1").val().trim != "" && $("#IMAGE2").val().trim() != "") {
FullFile = $("#IMAGE1").val() + "\\" + $("#IMAGE2").val();
$("#IMAGE_NAME").val(FullFile);
}
if ($("#LF1").val().trim != "" && $("#LF2").val().trim() != "") {
FullFile = $("#LF1").val() + "\\" + $("#LF2").val();
$("#LABEL_FILE").val(FullFile);
}
var labelFile = $("#LABEL_FILE").val(); var labelFile = $("#LABEL_FILE").val();
if (labelFile) { if (labelFile) {
var formData = new FormData($("#modelform")[0]); var formData = new FormData($("#modelform")[0]);
var templateID = $("#TEMPLATE_ID").val(); var templateID = $("#TEMPLATE_ID").val();
@ -287,7 +359,6 @@
} }
} }
} }
function insertList1(id) { function insertList1(id) {
var tableData = layui.table.cache['test']; // 这里的 'test' 是表格的 id 属性值 var tableData = layui.table.cache['test']; // 这里的 'test' 是表格的 id 属性值
@ -397,6 +468,55 @@
} }
} }
function CheckPICForamt() {
var image1Value = $("#IMAGE1").val().trim().toLowerCase();
var image2Value = $("#IMAGE2").val().trim().toLowerCase();
// 檢查如果其中一個不為空白,另一個也不可為空白
if ((image1Value !== "" && image2Value === "") || (image1Value === "" && image2Value !== "")) {
return "圖檔的路徑與檔案名稱請輸入完整";
}
else {
if (image2Value != "") {
var allowedExtensions = [".jpg", ".jpeg", ".png", ".bmp"];
var fileExtension = '.' + image2Value.split('.').pop();
// 檢查檔案名稱是否以圖片擴展名結尾
if (allowedExtensions.includes(fileExtension.toLowerCase())) {
return "Y";
} else {
return "圖檔的檔案名稱請為 .jpg, .jpeg, .png, .bmp 結尾";
}
}
return "Y";
}
}
function CheckBTWForamt() {
var image1Value = $("#LF1").val().trim().toLowerCase();
var image2Value = $("#LF2").val().trim().toLowerCase();
// 檢查如果其中一個不為空白,另一個也不可為空白
if ((image1Value !== "" && image2Value === "") || (image1Value === "" && image2Value !== "")) {
return "標籤檔名的路徑與檔案名稱請輸入完整";
}
else {
if (image2Value != "") {
// 檢查檔案名稱是否以圖片擴展名結尾
if (image2Value.endsWith(".btw")) {
return "Y";
} else {
return "標籤檔名的檔案名稱請為 .btw結尾";
}
}
else
return "Y";
}
}
layui.use(['form', 'layer', 'table', 'laytpl', 'laydate'], function () { layui.use(['form', 'layer', 'table', 'laytpl', 'laydate'], function () {
var layer = layui.layer, var layer = layui.layer,
$ = layui.jquery, $ = layui.jquery,

81
AMESCoreStudio.Web/Views/LAB/LAB003.cshtml

@ -39,24 +39,24 @@
<div class="layui-col-sm4"> <div class="layui-col-sm4">
<div class="layui-inline"> <div class="layui-inline">
<label class="layui-form-label">單號:</label> <label class="layui-form-label">單號:</label>
<div class="layui-input-inline" style="width:150px"> <div class="layui-input-inline" style="width:180px">
<input id="OrderNo" name="OrderNo" autocomplete="off" class="layui-input" readonly="readonly"> <input id="OrderNo" name="OrderNo" autocomplete="off" class="layui-input" readonly="readonly">
</div> </div>
</div> </div>
</div> </div>
<div class="layui-col-sm4"> <div class="layui-col-sm4">
<div class="layui-inline"> <div class="layui-inline" style="right:100px">
<label class="layui-form-label">申請人:</label> <label class="layui-form-label">申請人:</label>
<div class="layui-input-inline" style="width:150px"> <div class="layui-input-inline" style="width:100px">
<input id="USER" name="USER" autocomplete="off" class="layui-input" value="@ViewBag.UserName" readonly="readonly"> <input id="USER" name="USER" autocomplete="off" class="layui-input" value="@ViewBag.UserName" readonly="readonly">
</div> </div>
</div> </div>
</div> </div>
<div class="layui-col-sm4"> <div class="layui-col-sm4">
<div class="layui-inline"> <div class="layui-inline" style="right:250px">
<label class="layui-form-label">申請日期:</label> <label class="layui-form-label">申請日期:</label>
<div class="layui-input-inline" style="width:150px"> <div class="layui-input-inline" style="width:100px">
<input id="OrderTime" name="OrderTime" autocomplete="off" class="layui-input" readonly="readonly"> <input id="OrderTime" name="OrderTime" autocomplete="off" class="layui-input" readonly="readonly">
</div> </div>
</div> </div>
@ -68,7 +68,7 @@
<div class="layui-col-sm4"> <div class="layui-col-sm4">
<div class="layui-inline"> <div class="layui-inline">
<label class="layui-form-label">機種名稱:</label> <label class="layui-form-label">機種名稱:</label>
<div class="layui-input-inline" style="width:150px"> <div class="layui-input-inline" style="width:180px">
<input id="Model" name="Model" autocomplete="off" class="layui-input" onkeydown="GetLab()" placeholder="請輸入機種名稱"> <input id="Model" name="Model" autocomplete="off" class="layui-input" onkeydown="GetLab()" placeholder="請輸入機種名稱">
</div> </div>
</div> </div>
@ -76,16 +76,16 @@
<div class="layui-col-sm4"> <div class="layui-col-sm4">
<div class="layui-inline"> <div class="layui-inline">
@*<label class="layui-form-label"></label>*@ @*<label class="layui-form-label"></label>*@
<div class="layui-input-inline" style="width:150px"> <!--<div class="layui-input-inline" style="width:20px">-->
@*<input id="itemNO" name="itemNo" autocomplete="off" class="layui-input" placeholder="請輸入料號">*@ @*<input id="itemNO" name="itemNo" autocomplete="off" class="layui-input" placeholder="請輸入料號">*@
</div> <!--</div>-->
</div> </div>
</div> </div>
<div class="layui-col-sm4"> <div class="layui-col-sm4">
<div class="layui-inline"> <div class="layui-inline" style="right:250px">
<label class="layui-form-label">品名描述1:</label> <label class="layui-form-label">品名描述1:</label>
<div class="layui-input-inline" style="width:300px"> <div class="layui-input-inline">
<input id="Des1" name="Des1" autocomplete="off" class="layui-input" readonly="readonly"> <input id="Des1" name="Des1" autocomplete="off" class="layui-input" style="width:500px">
</div> </div>
</div> </div>
</div> </div>
@ -97,7 +97,7 @@
<div class="layui-col-sm4"> <div class="layui-col-sm4">
<div class="layui-inline"> <div class="layui-inline">
<label class="layui-form-label">取貨方式:</label> <label class="layui-form-label">取貨方式:</label>
<div class="layui-input-inline" style="width:150px"> <div class="layui-input-inline" style="width:30%">
@*<input id="Takeway" name="Takeway" autocomplete="off" class="layui-input" placeholder="請輸入料號">*@ @*<input id="Takeway" name="Takeway" autocomplete="off" class="layui-input" placeholder="請輸入料號">*@
<input type="radio" name="Takeway" lay-filter="Takeway" value="1" title="傳遞" checked="checked"> <input type="radio" name="Takeway" lay-filter="Takeway" value="1" title="傳遞" checked="checked">
<input type="radio" name="Takeway" lay-filter="Takeway" value="2" title="自取"> <input type="radio" name="Takeway" lay-filter="Takeway" value="2" title="自取">
@ -105,18 +105,18 @@
</div> </div>
</div> </div>
<div class="layui-col-sm4"> <div class="layui-col-sm4">
<div class="layui-inline"> <div class="layui-inline" style="right:100px">
<label class="layui-form-label">需求日期</label> <label class="layui-form-label">需求日期</label>
<div class="layui-input-inline" style="width:150px"> <div class="layui-input-inline" style="width:100px">
<input id="DemDate" name="DemDate" autocomplete="off" class="layui-input"> <input id="DemDate" name="DemDate" autocomplete="off" class="layui-input">
</div> </div>
</div> </div>
</div> </div>
<div class="layui-col-sm4"> <div class="layui-col-sm4">
<div class="layui-inline"> <div class="layui-inline" style="right:250px">
<label class="layui-form-label">品名描述2:</label> <label class="layui-form-label">品名描述2:</label>
<div class="layui-input-inline" style="width:300px"> <div class="layui-input-inline" >
<input id="Des2" name="Des2" autocomplete="off" class="layui-input" readonly="readonly"> <input id="Des2" name="Des2" autocomplete="off" class="layui-input" style="width:500px">
</div> </div>
</div> </div>
</div> </div>
@ -125,20 +125,20 @@
</div> </div>
<div class="layui-row"> <div class="layui-row">
<div class="layui-form-item"> <div class="layui-form-item">
<div class="layui-col-sm4"> <div class="layui-col-sm8">
<div class="layui-inline"> <div class="layui-inline">
<label class="layui-form-label">備註:</label> <label class="layui-form-label">備註:</label>
<div class="layui-input-inline" style="width:300px"> <div class="layui-input-inline">
<input id="Memo" name="Memo" autocomplete="off" class="layui-input" placeholder="請輸入備註"> <input id="Memo" name="Memo" autocomplete="off" class="layui-input" placeholder="請輸入備註" style="width:600px">
</div> </div>
</div> </div>
</div> </div>
<div class="layui-col-sm4"> <div class="layui-col-sm1">
<div class="layui-inline layui-show-xs-block layui-col-md-offset8"> <div class="layui-inline layui-show-xs-block layui-col-md-offset8" style="width:180px">
<button class="layui-btn layui-btn-sm layui-btn-normal" onclick="Applyfor('T');"> <button class="layui-btn layui-btn-sm layui-btn-normal" style="width:60px" onclick="Applyfor('T');">
<i class="layui-icon layui-icon-sm">暫存</i> <i class="layui-icon layui-icon-sm">暫存</i>
</button> </button>
<button class="layui-btn layui-btn-sm btn-primary" onclick="Applyfor('C');"> <button class="layui-btn layui-btn-sm btn-primary" style="width:60px" onclick="Applyfor('C');">
<i class="layui-icon layui-icon-sm">申請</i> <i class="layui-icon layui-icon-sm">申請</i>
</button> </button>
</div> </div>
@ -220,7 +220,6 @@
<button class="layui-btn layui-btn-sm layui-btn-normal" id="addButton"> <button class="layui-btn layui-btn-sm layui-btn-normal" id="addButton">
<i class="layui-icon layui-icon-sm">新增</i> <i class="layui-icon layui-icon-sm">新增</i>
</button> </button>
</div> </div>
</div> </div>
</div> </div>
@ -279,16 +278,17 @@
'<input type="text"' + '<input type="text"' +
' name="LabMat' + newCount + '" id="LabMat' + newCount + '"' + ' name="LabMat' + newCount + '" id="LabMat' + newCount + '"' +
' value="" class="layui-input" onkeydown="GetParam(' + newCount + ')">' + '</div></div></div>' + ' value="" class="layui-input" onkeydown="GetParam(' + newCount + ')">' + '</div></div></div>' +
'<div class="layui-col-sm4"><div class="layui-inline">' + '<div class="layui-col-sm3"><div class="layui-inline">' +
'<label class="layui-form-label">數量: #' + newCount + ' : </label>' + '<label class="layui-form-label">數量: #' + newCount + ' : </label>' +
'<div class="layui-input-inline" style="width:150px">' + '<div class="layui-input-inline" style="width:100px">' +
'<input type="number"' + '<input type="number"' +
' name="Qty' + newCount + '" id="Qty' + newCount + '"' + ' name="Qty' + newCount + '" id="Qty' + newCount + '"' +
' value="" class="layui-input">' + '</div></div></div>' + ' value="" class="layui-input">' + '</div></div></div>' +'<div class="layui-col-sm2" style="left:60px">'+
'<a href="javascript: GetPicture(' + newCount+')" >檢視圖片</a>'+ '<a class="layui-btn layui-btn-warm layui-btn-radius" href="javascript: GetPicture(' + newCount + ')" >檢視圖片</a>' +
'<div class="layui-col-sm4"><div class="layui-inline layui-show-xs-block layui-col-md-offset6">' +
'<button class="layui-btn layui-btn-sm layui-btn-normal" onclick="remove(' + newCount + ')">' + '<button class="layui-btn layui-btn-sm layui-btn-normal" onclick="remove(' + newCount + ')">' +
'<i class="layui-icon layui-icon-sm">刪除</i></button></div></div></div>' + '<i class="layui-icon layui-icon-sm">刪除</i></button>' +'</div>'+
// '<div class="layui-col-sm4"><div class="layui-inline layui-show-xs-block layui-col-md-offset6">' +
//+'</div></div></div>' +
'<input type="hidden" id="qty' + newCount+'" value="">'); '<input type="hidden" id="qty' + newCount+'" value="">');
newColumnDiv.appendTo("#group_title"); newColumnDiv.appendTo("#group_title");
@ -346,7 +346,7 @@
qty++; qty++;
newListBoxDiv.after().html( newListBoxDiv.after().html(
'<div class="layui-col-sm4">' + '<div class="layui-col-sm4">' +
'<div class="layui-inline">' + '<div class="layui-inline" style="width:500px">' +
'<label class="layui-form-label" id="' + labmat + 'Par' + con + '" >' + value.labeL_FIELD_NAME + ' </label>' + '<label class="layui-form-label" id="' + labmat + 'Par' + con + '" >' + value.labeL_FIELD_NAME + ' </label>' +
'<div class="layui-input-inline" style="width:300px">' + '<div class="layui-input-inline" style="width:300px">' +
'<input type="text"' + '<input type="text"' +
@ -365,11 +365,11 @@
'<div class="layui-input-inline" >' + '<div class="layui-input-inline" >' +
'<input type="text"' + '<input type="text"' +
' name="' + labmat + con + '" id="' + labmat + con + '"' + ' name="' + labmat + con + '" id="' + labmat + con + '"' +
' value="" class="layui-input" readonly="readonly">' +'</div>'+ ' value="" class="layui-input" >' +'</div>'+
'<div class="layui-input-inline">'+ '<div class="layui-input-inline">'+
'<input type="text"' + '<input type="text"' +
' name="' + labmat + con2 + '" id="' + labmat + con2 + '"' + ' name="' + labmat + con2 + '" id="' + labmat + con2 + '"' +
' value="" class="layui-input" readonly="readonly" >' +'</div></div>'+ ' value="" class="layui-input" >' +'</div></div>'+
'<div class="layui-inline layui-show-xs-block">' + '<div class="layui-inline layui-show-xs-block">' +
'<button class="layui-btn layui-btn-sm layui-btn-normal" onclick="num_new(' + con + ',' + currentCount + ')">' + '<button class="layui-btn layui-btn-sm layui-btn-normal" onclick="num_new(' + con + ',' + currentCount + ')">' +
'<i class="layui-icon layui-icon-sm">樣品序號取得</i>' + '<i class="layui-icon layui-icon-sm">樣品序號取得</i>' +
@ -385,7 +385,7 @@
if (value.value != "") { if (value.value != "") {
var ii = con - 1; var ii = con - 1;
document.getElementById(labmat + ii).value = value.value; document.getElementById(labmat + ii).value = value.value;
document.getElementById(labmat + ii).readOnly = true; // document.getElementById(labmat + ii).readOnly = true;
} }
}); });
@ -545,7 +545,8 @@
type: "GET", type: "GET",
url: '@Url.Action("GetLabelField", "LAB")', url: '@Url.Action("GetLabelField", "LAB")',
data: { data: {
LabMat: function () { return $("#LabMat"+x).val(); } LabMat: function () { return $("#LabMat" + x).val(); },
ItemNo: function () { return $("#Model").val(); }
}, },
contentType: "application/json; charset=utf-8", contentType: "application/json; charset=utf-8",
DataType: 'json', DataType: 'json',
@ -573,7 +574,7 @@
qty++; qty++;
newListBoxDiv.after().html( newListBoxDiv.after().html(
'<div class="layui-col-sm4">' + '<div class="layui-col-sm4">' +
'<div class="layui-inline">' + '<div class="layui-inline" style="width:500px">' +
'<label class="layui-form-label" id="' + labmat + 'Par' + y + '" >' + value.labeL_FIELD_NAME + ' </label>' + '<label class="layui-form-label" id="' + labmat + 'Par' + y + '" >' + value.labeL_FIELD_NAME + ' </label>' +
'<div class="layui-input-inline" style="width:300px">' + '<div class="layui-input-inline" style="width:300px">' +
'<input type="text"' + '<input type="text"' +
@ -592,11 +593,11 @@
'<div class="layui-input-inline" >' + '<div class="layui-input-inline" >' +
'<input type="text"' + '<input type="text"' +
' name="' + labmat + y + '" id="' + labmat + y + '"' + ' name="' + labmat + y + '" id="' + labmat + y + '"' +
' value="" class="layui-input" readonly="readonly">' +'</div>'+ ' value="" class="layui-input" >' +'</div>'+
'<div class="layui-input-inline">'+ '<div class="layui-input-inline">'+
'<input type="text"' + '<input type="text"' +
' name="' + labmat + y2 + '" id="' + labmat + y2 + '"' + ' name="' + labmat + y2 + '" id="' + labmat + y2 + '"' +
' value="" class="layui-input" readonly="readonly" >' +'</div></div>'+ ' value="" class="layui-input" >' +'</div></div>'+
'<div class="layui-inline layui-show-xs-block">' + '<div class="layui-inline layui-show-xs-block">' +
'<button class="layui-btn layui-btn-sm layui-btn-normal" onclick="num_new('+ index + ',' + x + ')">' + '<button class="layui-btn layui-btn-sm layui-btn-normal" onclick="num_new('+ index + ',' + x + ')">' +
'<i class="layui-icon layui-icon-sm">樣品序號取得</i>' + '<i class="layui-icon layui-icon-sm">樣品序號取得</i>' +
@ -610,7 +611,7 @@
if (value.value != "") { if (value.value != "") {
var ii = y - 1; var ii = y - 1;
document.getElementById(labmat + ii).value = value.value; document.getElementById(labmat + ii).value = value.value;
document.getElementById(labmat + ii).readOnly = true; // document.getElementById(labmat + ii).readOnly = true;
} }
}); });

106
AMESCoreStudio.Web/Views/LAB/LAB003U.cshtml

@ -41,24 +41,24 @@
<div class="layui-col-sm4"> <div class="layui-col-sm4">
<div class="layui-inline"> <div class="layui-inline">
<label class="layui-form-label">單號:</label> <label class="layui-form-label">單號:</label>
<div class="layui-input-inline" style="width:150px"> <div class="layui-input-inline" style="width:180px">
<input id="OrderNo" asp-for="ORDER_NO" name="OrderNo" autocomplete="off" class="layui-input" disabled="disabled"> <input id="OrderNo" asp-for="ORDER_NO" name="OrderNo" autocomplete="off" class="layui-input" disabled="disabled">
</div> </div>
</div> </div>
</div> </div>
<div class="layui-col-sm4"> <div class="layui-col-sm4">
<div class="layui-inline"> <div class="layui-inline" style="right:100px">
<label class="layui-form-label">申請人:</label> <label class="layui-form-label">申請人:</label>
<div class="layui-input-inline" style="width:150px"> <div class="layui-input-inline" style="width:100px">
<input id="USER" asp-for="USERNO" name="USER" autocomplete="off" class="layui-input" disabled="disabled"> <input id="USER" asp-for="USERNO" name="USER" autocomplete="off" class="layui-input" disabled="disabled">
</div> </div>
</div> </div>
</div> </div>
<div class="layui-col-sm4"> <div class="layui-col-sm4">
<div class="layui-inline"> <div class="layui-inline" style="right:250px">
<label class="layui-form-label">申請日期:</label> <label class="layui-form-label">申請日期:</label>
<div class="layui-input-inline" style="width:150px"> <div class="layui-input-inline" style="width:100px">
<input id="OrderTime" asp-for="ORDER_TIME" name="OrderTime" autocomplete="off" class="layui-input" disabled="disabled"> <input id="OrderTime" asp-for="ORDER_TIME" name="OrderTime" autocomplete="off" class="layui-input" disabled="disabled">
</div> </div>
</div> </div>
@ -70,7 +70,7 @@
<div class="layui-col-sm4"> <div class="layui-col-sm4">
<div class="layui-inline"> <div class="layui-inline">
<label class="layui-form-label">機種名稱:</label> <label class="layui-form-label">機種名稱:</label>
<div class="layui-input-inline" style="width:150px"> <div class="layui-input-inline" style="width:180px">
@{ if (ViewBag.Operate == "d") @{ if (ViewBag.Operate == "d")
{ {
<input id="Model" asp-for="MODEL" name="Model" autocomplete="off" class="layui-input" disabled="disabled"> <input id="Model" asp-for="MODEL" name="Model" autocomplete="off" class="layui-input" disabled="disabled">
@ -85,21 +85,20 @@
</div> </div>
<div class="layui-col-sm4"> <div class="layui-col-sm4">
<div class="layui-inline"> <div class="layui-inline">
<div class="layui-input-inline" style="width:150px">
</div>
</div> </div>
</div> </div>
<div class="layui-col-sm4"> <div class="layui-col-sm4">
<div class="layui-inline"> <div class="layui-inline" style="right:250px">
<label class="layui-form-label">品名描述1:</label> <label class="layui-form-label">品名描述1:</label>
<div class="layui-input-inline" style="width:300px"> <div class="layui-input-inline" >
@{ if (ViewBag.Operate == "d") @{ if (ViewBag.Operate == "d")
{ {
<input id="Des1" asp-for="DESCRIPTION1" name="Des1" autocomplete="off" class="layui-input" disabled="disabled"> <input id="Des1" asp-for="DESCRIPTION1" name="Des1" autocomplete="off" class="layui-input" disabled="disabled" style="width:500px">
} }
else else
{ {
<input id="Des1" asp-for="DESCRIPTION1" name="Des1" autocomplete="off" class="layui-input" readonly="readonly"> <input id="Des1" asp-for="DESCRIPTION1" name="Des1" autocomplete="off" class="layui-input" style="width:500px">
} }
} }
</div> </div>
@ -113,7 +112,7 @@
<div class="layui-col-sm4"> <div class="layui-col-sm4">
<div class="layui-inline"> <div class="layui-inline">
<label class="layui-form-label">取貨方式:</label> <label class="layui-form-label">取貨方式:</label>
<div class="layui-input-inline" style="width:150px"> <div class="layui-input-inline" style="width:30%">
@{ @{
if (ViewBag.Operate == "d") if (ViewBag.Operate == "d")
{ {
@ -148,9 +147,9 @@
</div> </div>
</div> </div>
<div class="layui-col-sm4"> <div class="layui-col-sm4">
<div class="layui-inline"> <div class="layui-inline" style="right:100px">
<label class="layui-form-label">需求日期</label> <label class="layui-form-label">需求日期</label>
<div class="layui-input-inline" style="width:150px"> <div class="layui-input-inline" style="width:100px">
@{ if (ViewBag.Operate == "d") @{ if (ViewBag.Operate == "d")
{ {
<input id="DemDate" asp-for="DEMAND_DATE" name="DemDate" autocomplete="off" class="layui-input" disabled="disabled"> <input id="DemDate" asp-for="DEMAND_DATE" name="DemDate" autocomplete="off" class="layui-input" disabled="disabled">
@ -164,16 +163,16 @@
</div> </div>
</div> </div>
<div class="layui-col-sm4"> <div class="layui-col-sm4">
<div class="layui-inline"> <div class="layui-inline" style="right:250px">
<label class="layui-form-label">品名描述2:</label> <label class="layui-form-label">品名描述2:</label>
<div class="layui-input-inline" style="width:300px"> <div class="layui-input-inline">
@{ if (ViewBag.Operate == "d") @{ if (ViewBag.Operate == "d")
{ {
<input id="Des2" asp-for="DESCRIPTION2" name="Des2" autocomplete="off" class="layui-input" disabled="disabled"> <input id="Des2" asp-for="DESCRIPTION2" name="Des2" autocomplete="off" class="layui-input" disabled="disabled" style="width:500px">
} }
else else
{ {
<input id="Des2" asp-for="DESCRIPTION2" name="Des2" autocomplete="off" class="layui-input" readonly="readonly"> <input id="Des2" asp-for="DESCRIPTION2" name="Des2" autocomplete="off" class="layui-input" style="width:500px">
} }
} }
</div> </div>
@ -184,38 +183,38 @@
</div> </div>
<div class="layui-row"> <div class="layui-row">
<div class="layui-form-item"> <div class="layui-form-item">
<div class="layui-col-sm4"> <div class="layui-col-sm8">
<div class="layui-inline"> <div class="layui-inline">
<label class="layui-form-label">備註:</label> <label class="layui-form-label">備註:</label>
<div class="layui-input-inline" style="width:300px"> <div class="layui-input-inline">
@{ if (ViewBag.Operate == "d") @{ if (ViewBag.Operate == "d")
{ {
<input id="Memo" asp-for="MEMO" name="Memo" autocomplete="off" class="layui-input" disabled="disabled"> <input id="Memo" asp-for="MEMO" name="Memo" autocomplete="off" class="layui-input" disabled="disabled" style="width:600px">
} }
else else
{ {
<input id="Memo" asp-for="MEMO" name="Memo" autocomplete="off" class="layui-input" placeholder="請輸入備註"> <input id="Memo" asp-for="MEMO" name="Memo" autocomplete="off" class="layui-input" placeholder="請輸入備註" style="width:600px">
} }
} }
</div> </div>
</div> </div>
</div> </div>
<div class="layui-col-sm4"> <div class="layui-col-sm1">
<div class="layui-inline layui-show-xs-block layui-col-md-offset8"> <div class="layui-inline layui-show-xs-block layui-col-md-offset8" style="width:180px">
@{ if (ViewBag.Operate == "d") @{ if (ViewBag.Operate == "d")
{ {
<button disabled class="layui-btn layui-btn-sm layui-btn-disabled"> <button disabled class="layui-btn layui-btn-sm layui-btn-disabled" style="width:60px">
<i class="layui-icon layui-icon-sm">暫存</i> <i class="layui-icon layui-icon-sm">暫存</i>
</button> </button>
<button disabled class="layui-btn layui-btn-sm layui-btn-disabled" > <button disabled class="layui-btn layui-btn-sm layui-btn-disabled" style="width:60px">
<i class="layui-icon layui-icon-sm">申請</i> <i class="layui-icon layui-icon-sm">申請</i>
</button> } </button> }
else else
{ {
<button class="layui-btn layui-btn-sm layui-btn-normal" onclick="Applyfor('T');"> <button class="layui-btn layui-btn-sm layui-btn-normal" onclick="Applyfor('T');" style="width:60px">
<i class="layui-icon layui-icon-sm">暫存</i> <i class="layui-icon layui-icon-sm">暫存</i>
</button> </button>
<button class="layui-btn layui-btn-sm btn-primary" onclick="Applyfor('C');"> <button class="layui-btn layui-btn-sm btn-primary" onclick="Applyfor('C');" style="width:60px">
<i class="layui-icon layui-icon-sm">申請</i> <i class="layui-icon layui-icon-sm">申請</i>
</button> </button>
} }
@ -228,7 +227,6 @@
</div> </div>
@*<table class="layui-hide" id="query" lay-filter="query"></table>*@ @*<table class="layui-hide" id="query" lay-filter="query"></table>*@
<div style="page-break-before:always">&nbsp;</div>
@*<div class="layui-row"> @*<div class="layui-row">
@ -371,16 +369,17 @@
'<input type="text"' + '<input type="text"' +
' name="LabMat' + newCount + '" id="LabMat' + newCount + '"' + ' name="LabMat' + newCount + '" id="LabMat' + newCount + '"' +
' value="" class="layui-input" onkeydown="GetParam(' + newCount + ')">' + '</div></div></div>' + ' value="" class="layui-input" onkeydown="GetParam(' + newCount + ')">' + '</div></div></div>' +
'<div class="layui-col-sm4"><div class="layui-inline">' + '<div class="layui-col-sm3"><div class="layui-inline">' +
'<label class="layui-form-label">數量: #' + newCount + ' : </label>' + '<label class="layui-form-label">數量: #' + newCount + ' : </label>' +
'<div class="layui-input-inline" style="width:150px">' + '<div class="layui-input-inline" style="width:100px">' +
'<input type="number"' + '<input type="number"' +
' name="Qty' + newCount + '" id="Qty' + newCount + '"' + ' name="Qty' + newCount + '" id="Qty' + newCount + '"' +
' value="" class="layui-input">' + '</div></div></div>' + ' value="" class="layui-input">' + '</div></div></div>' +'<div class="layui-col-sm2" style="left:60px">' +
'<a href="javascript: GetPicture(' + newCount+')" >檢視圖片</a>'+ '<a class="layui-btn layui-btn-warm layui-btn-radius" href="javascript: GetPicture(' + newCount + ')" >檢視圖片</a>' +
'<div class="layui-col-sm4"><div class="layui-inline layui-show-xs-block layui-col-md-offset6">' + '<button class= "layui-btn layui-btn-sm layui-btn-normal" id = "del' + newCount+'" onclick = "remove(' + newCount + ')" > ' +
'<button class="layui-btn layui-btn-sm layui-btn-normal" id="del' + newCount+'" onclick="remove(' + newCount + ')">' + '<i class="layui-icon layui-icon-sm">刪除</i></button>'+'</div>' +
'<i class="layui-icon layui-icon-sm">刪除</i></button></div></div></div>' + // '<div class="layui-col-sm4"><div class="layui-inline layui-show-xs-block layui-col-md-offset6">' +
//'</div></div></div>' +
'<input type="hidden" id="qty' + newCount+'" value="">'); '<input type="hidden" id="qty' + newCount+'" value="">');
newColumnDiv.appendTo("#group_title"); newColumnDiv.appendTo("#group_title");
@ -442,7 +441,7 @@
if (x == "d") { if (x == "d") {
newListBoxDiv.after().html( newListBoxDiv.after().html(
'<div class="layui-col-sm4">' + '<div class="layui-col-sm4">' +
'<div class="layui-inline">' + '<div class="layui-inline" style="width:500px">' +
'<label class="layui-form-label" id="' + labmat + 'Par' + con + '" >' + value.labeL_FIELD_NAME + ' </label>' + '<label class="layui-form-label" id="' + labmat + 'Par' + con + '" >' + value.labeL_FIELD_NAME + ' </label>' +
'<div class="layui-input-inline" style="width:300px">' + '<div class="layui-input-inline" style="width:300px">' +
'<input type="text"' + '<input type="text"' +
@ -453,9 +452,9 @@
} else { } else {
newListBoxDiv.after().html( newListBoxDiv.after().html(
'<div class="layui-col-sm4">' + '<div class="layui-col-sm4">' +
'<div class="layui-inline">' + '<div class="layui-inline" style="width:300px">' +
'<label class="layui-form-label" id="' + labmat + 'Par' + con + '" >' + value.labeL_FIELD_NAME + ' </label>' + '<label class="layui-form-label" id="' + labmat + 'Par' + con + '" >' + value.labeL_FIELD_NAME + ' </label>' +
'<div class="layui-input-inline" style="width:300px">' + '<div class="layui-input-inline" style="width:180px">' +
'<input type="text"' + '<input type="text"' +
' name="' + labmat + con + '" id="' + labmat + con + '"' + ' name="' + labmat + con + '" id="' + labmat + con + '"' +
' value="" class="layui-input">' + '</div></div></div>' ' value="" class="layui-input">' + '</div></div></div>'
@ -474,7 +473,7 @@
'<div class="layui-input-inline" >' + '<div class="layui-input-inline" >' +
'<input type="text"' + '<input type="text"' +
' name="' + labmat + con + '" id="' + labmat + con + '"' + ' name="' + labmat + con + '" id="' + labmat + con + '"' +
' value="" class="layui-input" disabled="disabled">' + '</div>' + ' value="" class="layui-input" disabled="disabled" >' + '</div>' +
'<div class="layui-input-inline">' + '<div class="layui-input-inline">' +
'<input type="text"' + '<input type="text"' +
' name="' + labmat + con2 + '" id="' + labmat + con2 + '"' + ' name="' + labmat + con2 + '" id="' + labmat + con2 + '"' +
@ -494,11 +493,11 @@
'<div class="layui-input-inline" >' + '<div class="layui-input-inline" >' +
'<input type="text"' + '<input type="text"' +
' name="' + labmat + con + '" id="' + labmat + con + '"' + ' name="' + labmat + con + '" id="' + labmat + con + '"' +
' value="" class="layui-input" readonly="readonly">' + '</div>' + ' value="" class="layui-input" >' + '</div>' +
'<div class="layui-input-inline">' + '<div class="layui-input-inline">' +
'<input type="text"' + '<input type="text"' +
' name="' + labmat + con2 + '" id="' + labmat + con2 + '"' + ' name="' + labmat + con2 + '" id="' + labmat + con2 + '"' +
' value="" class="layui-input" readonly="readonly" >' + '</div></div>' + ' value="" class="layui-input" >' + '</div></div>' +
'<div class="layui-inline layui-show-xs-block">' + '<div class="layui-inline layui-show-xs-block">' +
'<button class="layui-btn layui-btn-sm layui-btn-normal" onclick="num_new(' + con + ',' + currentCount + ')">' + '<button class="layui-btn layui-btn-sm layui-btn-normal" onclick="num_new(' + con + ',' + currentCount + ')">' +
'<i class="layui-icon layui-icon-sm">樣品序號取得</i>' + '<i class="layui-icon layui-icon-sm">樣品序號取得</i>' +
@ -573,7 +572,7 @@
qty++; qty++;
newListBoxDiv.after().html( newListBoxDiv.after().html(
'<div class="layui-col-sm4">' + '<div class="layui-col-sm4">' +
'<div class="layui-inline">' + '<div class="layui-inline" style="width:500px">' +
'<label class="layui-form-label" id="' + labmat + 'Par' + con + '" >' + value.labeL_FIELD_NAME + ' </label>' + '<label class="layui-form-label" id="' + labmat + 'Par' + con + '" >' + value.labeL_FIELD_NAME + ' </label>' +
'<div class="layui-input-inline" style="width:300px">' + '<div class="layui-input-inline" style="width:300px">' +
'<input type="text"' + '<input type="text"' +
@ -592,11 +591,11 @@
'<div class="layui-input-inline" >' + '<div class="layui-input-inline" >' +
'<input type="text"' + '<input type="text"' +
' name="' + labmat + con + '" id="' + labmat + con + '"' + ' name="' + labmat + con + '" id="' + labmat + con + '"' +
' value="" class="layui-input" readonly="readonly">' +'</div>'+ ' value="" class="layui-input" >' +'</div>'+
'<div class="layui-input-inline">'+ '<div class="layui-input-inline">'+
'<input type="text"' + '<input type="text"' +
' name="' + labmat + con2 + '" id="' + labmat + con2 + '"' + ' name="' + labmat + con2 + '" id="' + labmat + con2 + '"' +
' value="" class="layui-input" readonly="readonly" >' +'</div></div>'+ ' value="" class="layui-input" >' +'</div></div>'+
'<div class="layui-inline layui-show-xs-block">' + '<div class="layui-inline layui-show-xs-block">' +
'<button class="layui-btn layui-btn-sm layui-btn-normal" onclick="num_new(' + con + ',' + currentCount + ')">' + '<button class="layui-btn layui-btn-sm layui-btn-normal" onclick="num_new(' + con + ',' + currentCount + ')">' +
'<i class="layui-icon layui-icon-sm">樣品序號取得</i>' + '<i class="layui-icon layui-icon-sm">樣品序號取得</i>' +
@ -611,7 +610,7 @@
if (value.value != "") { if (value.value != "") {
var ii = con - 1; var ii = con - 1;
document.getElementById(labmat + ii).value = value.value; document.getElementById(labmat + ii).value = value.value;
document.getElementById(labmat + ii).readOnly = true; // document.getElementById(labmat + ii).readOnly = true;
} }
}); });
@ -774,7 +773,8 @@
type: "GET", type: "GET",
url: '@Url.Action("GetLabelField", "LAB")', url: '@Url.Action("GetLabelField", "LAB")',
data: { data: {
LabMat: function () { return $("#LabMat"+x).val(); } LabMat: function () { return $("#LabMat" + x).val(); },
ItemNo: function () { return $("#Model").val(); }
}, },
contentType: "application/json; charset=utf-8", contentType: "application/json; charset=utf-8",
DataType: 'json', DataType: 'json',
@ -801,9 +801,9 @@
qty++; qty++;
newListBoxDiv.after().html( newListBoxDiv.after().html(
'<div class="layui-col-sm4">' + '<div class="layui-col-sm4">' +
'<div class="layui-inline">' + '<div class="layui-inline" style="width:300px">' +
'<label class="layui-form-label" id="' + labmat + 'Par' + y + '" >' + value.labeL_FIELD_NAME + ' </label>' + '<label class="layui-form-label" id="' + labmat + 'Par' + y + '" >' + value.labeL_FIELD_NAME + ' </label>' +
'<div class="layui-input-inline" style="width:300px">' + '<div class="layui-input-inline" style="width:180px">' +
'<input type="text"' + '<input type="text"' +
' name="' + labmat + y + '" id="' + labmat + y + '"' + ' name="' + labmat + y + '" id="' + labmat + y + '"' +
' value="" class="layui-input">' + '</div></div></div>' ' value="" class="layui-input">' + '</div></div></div>'
@ -820,11 +820,11 @@
'<div class="layui-input-inline" >' + '<div class="layui-input-inline" >' +
'<input type="text"' + '<input type="text"' +
' name="' + labmat + y + '" id="' + labmat + y + '"' + ' name="' + labmat + y + '" id="' + labmat + y + '"' +
' value="" class="layui-input" readonly="readonly">' +'</div>'+ ' value="" class="layui-input" >' +'</div>'+
'<div class="layui-input-inline">'+ '<div class="layui-input-inline">'+
'<input type="text"' + '<input type="text"' +
' name="' + labmat + y2 + '" id="' + labmat + y2 + '"' + ' name="' + labmat + y2 + '" id="' + labmat + y2 + '"' +
' value="" class="layui-input" readonly="readonly" >' +'</div></div>'+ ' value="" class="layui-input" >' +'</div></div>'+
'<div class="layui-inline layui-show-xs-block">' + '<div class="layui-inline layui-show-xs-block">' +
'<button class="layui-btn layui-btn-sm layui-btn-normal" onclick="num_new('+ index + ',' + x + ')">' + '<button class="layui-btn layui-btn-sm layui-btn-normal" onclick="num_new('+ index + ',' + x + ')">' +
'<i class="layui-icon layui-icon-sm">樣品序號取得</i>' + '<i class="layui-icon layui-icon-sm">樣品序號取得</i>' +
@ -838,7 +838,7 @@
if (value.value != "") { if (value.value != "") {
var ii = y - 1; var ii = y - 1;
document.getElementById(labmat + ii).value = value.value; document.getElementById(labmat + ii).value = value.value;
document.getElementById(labmat + ii).readOnly = true; // document.getElementById(labmat + ii).readOnly = true;
} }
}); });
document.getElementById('qty'+x).value = qty; document.getElementById('qty'+x).value = qty;

19
AMESCoreStudio.Web/Views/LAB/LAB004.cshtml

@ -14,7 +14,7 @@
<div class="layui-col-sm3"> <div class="layui-col-sm3">
<div class="layui-inline"> <div class="layui-inline">
<label class="layui-form-label">申請單號:</label> <label class="layui-form-label">申請單號:</label>
<div class="layui-input-inline" style="width:150px"> <div class="layui-input-inline" style="width:40%">
<input id="OrderNo" name="OrderNo" class="layui-input"> <input id="OrderNo" name="OrderNo" class="layui-input">
</div> </div>
</div> </div>
@ -22,7 +22,7 @@
<div class="layui-col-sm3"> <div class="layui-col-sm3">
<div class="layui-inline"> <div class="layui-inline">
<label class="layui-form-label">機種料號:</label> <label class="layui-form-label">機種料號:</label>
<div class="layui-input-inline" style="width:150px"> <div class="layui-input-inline" style="width:40%">
<input id="ModelNo" name="ModelNo" class="layui-input"> <input id="ModelNo" name="ModelNo" class="layui-input">
</div> </div>
</div> </div>
@ -30,12 +30,20 @@
<div class="layui-col-sm3"> <div class="layui-col-sm3">
<div class="layui-inline"> <div class="layui-inline">
<label class="layui-form-label">申請者:</label> <label class="layui-form-label">申請者:</label>
<div class="layui-input-inline" style="width:150px"> <div class="layui-input-inline" style="width:40%">
<input id="UserNo" name="UserNo" class="layui-input" p> <input id="UserNo" name="UserNo" class="layui-input" p>
</div> </div>
</div> </div>
</div> </div>
<label class="layui-inline layui-form-label" style="width:80px">狀態:</label>
<div class="layui-input-inline" style="width:80px;">
<select name="Status" id="Status" lay-search>
<option value="A">ALL</option>
<option value="F">完成</option>
<option value="T">暫存</option>
<option value="C">已送出</option>
</select>
</div>
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
@ -208,7 +216,8 @@
ModelNo: $("#ModelNo").val(), ModelNo: $("#ModelNo").val(),
strdate: $("#strdate").val(), strdate: $("#strdate").val(),
enddate: $("#enddate").val(), enddate: $("#enddate").val(),
UserNo: $("#UserNo").val() UserNo: $("#UserNo").val(),
Status: $("#Status").val()
} }
}); });
return false; return false;

22
AMESCoreStudio.Web/Views/PCS/PCS037.cshtml

@ -137,7 +137,14 @@
field: 'directorCheckDate', field: 'directorCheckDate',
title: '主管確認日期', title: '主管確認日期',
width: 160, width: 160,
templet: '<div>{{ layui.util.toDateString(d.directorCheckDate, "yyyy/MM/dd HH:mm") }}</div>' templet: function(d) {
if (d.directorCheckFlag != 'Y') {
return ''
}
else {
return layui.util.toDateString(d.directorCheckDate, "yyyy/MM/dd HH:mm")
}
}
}, },
{ {
field: 'center', field: 'center',
@ -145,16 +152,27 @@
title: '操作', title: '操作',
templet: function (d) { templet: function (d) {
//return '<a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-form" lay-event="detail">明細</a> <a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-edit" lay-event="check">確認</a> <a class="layui-btn layui-btn-danger layui-btn-xs layui-icon layui-icon-delete" lay-event="del">删除</a>' //return '<a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-form" lay-event="detail">明細</a> <a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-edit" lay-event="check">確認</a> <a class="layui-btn layui-btn-danger layui-btn-xs layui-icon layui-icon-delete" lay-event="del">删除</a>'
if (d.headmanCheckFlag == 'Y' && d.directorCheckFlag != 'Y') { if (d.headmanCheckFlag == 'Y' && d.directorCheckFlag != 'Y')
{
if (d.detailQty == 0) {
return '<a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-form" lay-event="detail">明細</a> '
}
else {
return '<a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-form" lay-event="detail">明細</a> <a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-edit" lay-event="check">確認</a> ' return '<a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-form" lay-event="detail">明細</a> <a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-edit" lay-event="check">確認</a> '
} }
}
else if (d.headmanCheckFlag == 'Y'&& d.directorCheckFlag == 'Y') else if (d.headmanCheckFlag == 'Y'&& d.directorCheckFlag == 'Y')
{ {
return '<a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-form" lay-event="detail">明細</a> ' return '<a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-form" lay-event="detail">明細</a> '
} }
else else
{ {
if (d.detailQty == 0) {
return '<a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-form" lay-event="detail">明細</a> <a class="layui-btn layui-btn-danger layui-btn-xs layui-icon layui-icon-delete" lay-event="del">删除</a>'
}
else {
return '<a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-form" lay-event="detail">明細</a> <a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-edit" lay-event="check">確認</a> <a class="layui-btn layui-btn-danger layui-btn-xs layui-icon layui-icon-delete" lay-event="del">删除</a>' return '<a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-form" lay-event="detail">明細</a> <a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-edit" lay-event="check">確認</a> <a class="layui-btn layui-btn-danger layui-btn-xs layui-icon layui-icon-delete" lay-event="del">删除</a>'
}
//return ""; //return "";
} }
} }

2
AMESCoreStudio.Web/Views/RPT/RPT001.cshtml

@ -182,7 +182,7 @@
</div> </div>
</div> </div>
<div class="layui-col-md4"> <div class="layui-col-md4">
<div class="layui-col-md12 spanDetailTitleClass ColTitle"><a style="color:white" href="javascript:hg.open('按月份統計資料','/RPT/RPT001A/05_@ViewBag.QueryDate2',900,810)">無效工時</a></div> <div class="layui-col-md12 spanDetailTitleClass ColTitle"><a style="color:white" href="javascript:hg.open('按月份統計資料','/RPT/RPT001A/05_@ViewBag.QueryDate2',900,810)">除外工時</a></div>
<div class="layui-col-md12 spanDetailNumberClass" style="color: #A84CA8"> <div class="layui-col-md12 spanDetailNumberClass" style="color: #A84CA8">
@Model.invalidHours @Model.invalidHours
<p class="spanUnitClass">H</p> <p class="spanUnitClass">H</p>

149
AMESCoreStudio.Web/Views/RPT/RPT006.cshtml

@ -0,0 +1,149 @@
@{
ViewData["Title"] = "生產效率報表";
Layout = "~/Views/Shared/_AMESLayout.cshtml";
}
@using Microsoft.AspNetCore.Mvc.Localization
@inject IHtmlLocalizer<AMESCoreStudio.Web.SharedResource> sharedLocalizer
<style>
/* .layui-table-col-special .layui-table-cell {
height:auto;
overflow:visible;
text-overflow:inherit;
white-space: normal;
}*/
</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 class="layui-inline">
<label class="layui-form-label">日期區間:</label>
<div class="layui-input-inline" style="width:150px">
<input id="strDate" name="strDate" autocomplete="off" class="layui-input" readonly="">
</div>
<div class="layui-form-mid">~</div>
<div class="layui-input-inline" style="width:150px">
<input id="endDate" name="endDate" autocomplete="off" class="layui-input" readonly="">
</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">&#xe615;</i>
</button>
</div>
</div>
</div>
</div>
<div class="layui-card-body">
<table class="layui-hide" id="query" lay-filter="query"></table>
</div>
</div>
@section Scripts{
<script type="text/javascript">
layui.use(['table', 'laydate'], function () {
form = layui.form;
laydate = layui.laydate;
laydate.render({
elem: '#strDate'
, trigger: 'click'
, format: 'yyyy/MM/dd'
, theme: 'grid'
, value: new Date() // 設置為當前日期
});
laydate.render({
elem: '#endDate'
, trigger: 'click'
, format: 'yyyy/MM/dd'
, theme: 'grid'
, value: new Date() // 設置為當前日期
});
});
//监听表单提交事件
hg.form.onsubmit('querysubmit', function (data) {
table && table.reload(data);
});
var tableCols = [[
{
field: 'wip_No',
width: 100,
title: '工單號碼',
sort: true
},
{
field: 'item_No',
title: '料號',
width: 150
},
{
field: 'workDate',
title: '生產日期',
sort: true,
templet: '<div>{{ layui.util.toDateString(d.workDate, "yyyy/MM/dd") }}</div>'
},
{
field: 'plan_Qty',
title: '工單數量'
},
{
field: 'qty',
title: '生產數量',
},
{
field: 'total_Ct',
title: '標準工時',
},
{
field: 'op_Cnt',
title: '人數',
},
{
field: 'station_Id',
title: '作業站',
},
{
field: 'unitNo',
title: '製程',
},
{
field: 'earliest',
title: '第一台',
templet: '<div>{{ layui.util.toDateString(d.earliest, "yyyy/MM/dd HH:mm:ss") }}</div>'
},
{
field: 'latest',
title: '最後一台',
templet: '<div>{{ layui.util.toDateString(d.latest, "yyyy/MM/dd HH:mm:ss") }}</div>'
},
{
field: 'workTime',
title: '實際作業時間',
},
{
field: 'restTime',
title: '休息時間',
},
{
field: 'abnormalTime',
title: '異常時間',
},
{
field: 'alltotal_Ct',
title: '總標準工時'
},
{
field: 'efficiency',
title: '生產效率'
}
]
];
var table = hg.table.datatable('query', '工單資料查詢', '/RPT/RPT006Query', {}, tableCols, {}, false, 'full-100', ['filter', 'print', 'exports']);
</script>
}

30
AMESCoreStudio.WebApi/AMESCoreStudio.WebApi/AMESCoreStudio.WebApi.xml

@ -48,6 +48,33 @@
Swagger:隐藏属性 Swagger:隐藏属性
</summary> </summary>
</member> </member>
<member name="T:AMESCoreStudio.WebApi.Controllers.AMES.ActualTimeController">
<summary>
報工資料檔
</summary>
</member>
<member name="M:AMESCoreStudio.WebApi.Controllers.AMES.ActualTimeController.#ctor(AMESCoreStudio.WebApi.AMESContext)">
<summary>
</summary>
<param name="context"></param>
</member>
<member name="M:AMESCoreStudio.WebApi.Controllers.AMES.ActualTimeController.GetActualTimeDetail(System.String,System.Int32,System.Int32)">
<summary>
</summary>
<param name="ActualDate"></param>
<param name="page"></param>
<param name="limit"></param>
<returns></returns>
</member>
<member name="M:AMESCoreStudio.WebApi.Controllers.AMES.ActualTimeController.DataReaderToDataTable(System.Data.Common.DbDataReader)">
<summary>
</summary>
<param name="reader"></param>
<returns></returns>
</member>
<member name="T:AMESCoreStudio.WebApi.Controllers.AMES.BarcodeChangeController"> <member name="T:AMESCoreStudio.WebApi.Controllers.AMES.BarcodeChangeController">
<summary> <summary>
條碼變更資料表 條碼變更資料表
@ -2189,10 +2216,11 @@
</summary> </summary>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:AMESCoreStudio.WebApi.Controllers.AMES.InspectionResultMastersController.GetInspectionResultMastersByQueryAll(System.Int32,System.String,System.String,System.String,System.String,System.String,System.String,System.Int32,System.Int32)"> <member name="M:AMESCoreStudio.WebApi.Controllers.AMES.InspectionResultMastersController.GetInspectionResultMastersByQueryAll(System.Int32,System.Int32,System.String,System.String,System.String,System.String,System.String,System.String,System.Int32,System.Int32)">
<summary> <summary>
用FormID获取该巡檢結果资料 用FormID获取该巡檢結果资料
</summary> </summary>
<param name="type"></param>
<param name="id"></param> <param name="id"></param>
<param name="WipNo"></param> <param name="WipNo"></param>
<param name="ItemNo"></param> <param name="ItemNo"></param>

17
AMESCoreStudio.WebApi/Controllers/AMES/ExceptionWorktimesController.cs

@ -351,14 +351,29 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
public async Task<ResultModel<dynamic>> GetExceptionWorktime4RPT001(string sdate, string edate) public async Task<ResultModel<dynamic>> GetExceptionWorktime4RPT001(string sdate, string edate)
{ {
ResultModel<dynamic> result = new ResultModel<dynamic>(); ResultModel<dynamic> result = new ResultModel<dynamic>();
//---------------------------------------------------------------------------
//var q = from q1 in _context.ExceptionWorktimes
// select new
// {
// q1.ExceptionID,
// q1.ExceptionDate,
// q1.Time
// };
//---------------------------------------------------------------------------
var q = from q1 in _context.ExceptionWorktimes var q = from q1 in _context.ExceptionWorktimes
join q2 in _context.ExceptionCodes on q1.ExceptionNo equals q2.ExceptionNo
join q3 in _context.ExceptionClasses on q2.ExceptionClassNo equals q3.ExceptionClassNo
select new select new
{ {
q1.ExceptionID, q1.ExceptionID,
q1.ExceptionDate, q1.ExceptionDate,
q1.Time q1.Time,
q1.ExceptionNo,
q3.ExceptionClassNo
}; };
//---------------------------------------------------------------------------
DateTime dateValue; DateTime dateValue;
if (sdate != "*") if (sdate != "*")

52
AMESCoreStudio.WebApi/Controllers/AMES/LabelItemController.cs

@ -36,7 +36,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
[Route("[action]")] [Route("[action]")]
[HttpGet] [HttpGet]
public async Task<ResultModel<dynamic>> GetLabelField(string LabMat) public async Task<ResultModel<dynamic>> GetLabelField(string LabMat,string ItemNo)
{ {
ResultModel<dynamic> result = new ResultModel<dynamic>(); ResultModel<dynamic> result = new ResultModel<dynamic>();
@ -58,7 +58,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
LABEL_FIELD_ID =x.LABEL_FIELD_ID, LABEL_FIELD_ID =x.LABEL_FIELD_ID,
LABEL_FIELD_NAME=x.LABEL_FIELD_NAME, LABEL_FIELD_NAME=x.LABEL_FIELD_NAME,
PARAM_NAME=x.PARAM_NAME, PARAM_NAME=x.PARAM_NAME,
value= GetParamValue(x.LABEL_FIELD_ID, x.LABEL_MATNR).ToString() value= GetParamValue(x.LABEL_FIELD_ID, ItemNo).ToString()
}); });
@ -109,7 +109,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
LABEL_FIELD_ID = x.LABEL_FIELD_ID, LABEL_FIELD_ID = x.LABEL_FIELD_ID,
LABEL_FIELD_NAME = x.LABEL_FIELD_NAME, LABEL_FIELD_NAME = x.LABEL_FIELD_NAME,
PARAM_NAME = x.PARAM_NAME, PARAM_NAME = x.PARAM_NAME,
value = GetParamValue(x.LABEL_FIELD_ID, x.LABEL_MATNR).ToString() value = GetParamValue(x.LABEL_FIELD_ID, Model).ToString()
}); });
//q = q.Where(x => w.Contains(x.LABEL_MATNR)).OrderBy(x => x.LABEL_MATNR); //q = q.Where(x => w.Contains(x.LABEL_MATNR)).OrderBy(x => x.LABEL_MATNR);
@ -160,7 +160,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
[Route("[action]")] [Route("[action]")]
[HttpGet] [HttpGet]
public async Task<ResultModel<dynamic>> GetLabelItemMaster(string OrderNo,string ModelNo,DateTime strdate, DateTime enddate,int UserId) public async Task<ResultModel<dynamic>> GetLabelItemMaster(string OrderNo,string ModelNo,DateTime strdate, DateTime enddate,int UserId,string Status)
{ {
ResultModel<dynamic> result = new ResultModel<dynamic>(); ResultModel<dynamic> result = new ResultModel<dynamic>();
IQueryable<LabelItemMaster> q = _context.LabelItemMaster; IQueryable<LabelItemMaster> q = _context.LabelItemMaster;
@ -172,6 +172,9 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
if (OrderNo != null || OrderNo == "") if (OrderNo != null || OrderNo == "")
q = q.Where(x => x.ORDER_NO.Contains(OrderNo)); q = q.Where(x => x.ORDER_NO.Contains(OrderNo));
if (Status != "A")
q = q.Where(x => x.STATUS == Status);
if (ModelNo != null || ModelNo == "") if (ModelNo != null || ModelNo == "")
q = q.Where(x => x.MODEL == ModelNo); q = q.Where(x => x.MODEL == ModelNo);
@ -631,6 +634,8 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
private string GetParamValue(int LabelFieldID,string ItemNo) private string GetParamValue(int LabelFieldID,string ItemNo)
{ {
IQueryable<PlmMeterialInfo> pmi = _context.PlmMeterialInfos; IQueryable<PlmMeterialInfo> pmi = _context.PlmMeterialInfos;
IQueryable<SampleSipmentSN> ssn = _context.SampleSipmentSNs;
IQueryable<WipAtt> wa = _context.WipAtts;
string Data = string.Empty; string Data = string.Empty;
switch (LabelFieldID) switch (LabelFieldID)
@ -642,7 +647,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
case 1002: //ModelName case 1002: //ModelName
if (pmi.Where(x => x.MeterialNo == ItemNo).Any()) if (pmi.Where(x => x.MeterialNo == ItemNo).Any())
{ {
Data = pmi.Where(x => x.MeterialNo == ItemNo).Select(x => x.ModelName).FirstOrDefault(); Data = pmi.Where(x => x.MeterialNo == ItemNo).Select(x => x.MeterialNo).FirstOrDefault();
} }
else else
{ {
@ -669,13 +674,50 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
{ {
Data = ""; //無資料,不給值 Data = ""; //無資料,不給值
} }
break;
case 1005://EAN
if (pmi.Where(x => x.MeterialNo == ItemNo).Any())
{
Data = pmi.Where(x => x.MeterialNo == ItemNo).Select(x => x.EAN).FirstOrDefault();
}
else
{
Data = ""; //無資料,不給值
}
break;
case 1006://ECN
if (ssn.Where(x => x.ItemNo == ItemNo).Any())
{
var wip = ssn.Where(x => x.ItemNo == ItemNo)
.OrderByDescending(x => x.CreateDate).Select(x => x.SampleWipNo).FirstOrDefault();
Data = wa.Where(x => x.WipNO == wip).Select(x => x.ECN).FirstOrDefault();
}
else
{
Data = ""; //無資料,不給值
}
break;
case 1007://BIOSVS
if (pmi.Where(x => x.MeterialNo == ItemNo).Any())
{
Data = pmi.Where(x => x.MeterialNo == ItemNo).Select(x => x.BiosVer).FirstOrDefault();
}
else
{
Data = ""; //無資料,不給值
}
break; break;
default: default:
Data = ""; Data = "";
break; break;
} }
if(Data==null)
{
Data = "";
}
return Data; return Data;
} }

25
AMESCoreStudio.WebApi/Controllers/AMES/LabelParamController.cs

@ -73,6 +73,31 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
} }
// GET: api/LabelParam/5
[HttpGet("byStatus/{status}")]
public async Task<ResultModel<LabelParam>> GetLabelParambyStatus(string status, int page = 0, int limit = 10)
{
ResultModel<LabelParam> result = new ResultModel<LabelParam>();
IQueryable<LabelParam> q = _context.LabelParam;
if (status != "*")
{
q = q.Where(w => w.STATUS_NO == status);
}
result.DataTotal = q.Count();
// Table 頁數
if (page > 0)
{
q = q.Skip((page - 1) * limit).Take(limit);
}
result.Data = await q.ToListAsync();
return result;
}
/// <summary> /// <summary>
/// 更新Label參數檔 /// 更新Label參數檔
/// </summary> /// </summary>

2
AMESCoreStudio.WebApi/Controllers/AMES/LabelTemplateMasterController.cs

@ -145,7 +145,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
if (!string.IsNullOrEmpty(LabelMatnr) && LabelMatnr != "*") if (!string.IsNullOrEmpty(LabelMatnr) && LabelMatnr != "*")
{ {
q = q.Where(w => w.LABEL_MATNR.StartsWith(LabelMatnr)); q = q.Where(w => w.LABEL_MATNR.Contains(LabelMatnr));
} }
result.DataTotal = q.Count(); result.DataTotal = q.Count();

230
AMESCoreStudio.WebApi/Controllers/BLL/RPTController.cs

@ -109,7 +109,7 @@ namespace AMESCoreStudio.WebApi.Controllers.BLL
double errTime = 0.00; double errTime = 0.00;
if (c.DataTotal > 0) if (c.DataTotal > 0)
{ {
foreach (var item in c.Data) foreach (var item in c.Data.Where(w => w.ExceptionClassNo == "O"))
{ {
string str = item.ToString(); string str = item.ToString();
string[] str2 = str.Replace("{", "").Replace("}", "").Split(','); string[] str2 = str.Replace("{", "").Replace("}", "").Split(',');
@ -135,11 +135,12 @@ namespace AMESCoreStudio.WebApi.Controllers.BLL
var d = await new WipStationController(_context).GetWipStation4QRS014GroupALL(null, sDate, eDate, null, "YS00", "FqcDate"); var d = await new WipStationController(_context).GetWipStation4QRS014GroupALL(null, sDate, eDate, null, "YS00", "FqcDate");
if (d.DataTotal > 0) if (d.DataTotal > 0)
{ {
//2024-04-11 Marvin 修正,安勤品管Jeason提出,直通率改回原先系統算法,各站良率相乘
//2024-03-26 BB.Wang Modify 修正良率(代小平) //2024-03-26 BB.Wang Modify 修正良率(代小平)
//double sum_rate = 100.0; double sum_rate = 100.0;
//int sum_idx = 1; int sum_idx = 1;
double sum_rate = 0.0; //double sum_rate = 0.0;
int sum_idx = 0; //int sum_idx = 0;
DataTable dtRate = new DataTable(); DataTable dtRate = new DataTable();
@ -228,9 +229,10 @@ namespace AMESCoreStudio.WebApi.Controllers.BLL
if (rate > 0) if (rate > 0)
{ {
//sum_rate = sum_rate * (rate / 100.0); //2024-04-11 Marvin 修正,安勤品管Jeason提出,直通率改回原先系統算法,各站良率相乘
sum_idx = sum_idx + 1; sum_rate = sum_rate * (rate / 100.0);
sum_rate = sum_rate + rate; //sum_idx = sum_idx + 1;
//sum_rate = sum_rate + rate;
} }
} }
} }
@ -1266,11 +1268,12 @@ namespace AMESCoreStudio.WebApi.Controllers.BLL
var f_FPYBoard_LEI = await new WipStationController(_context).GetWipStation4QRS014GroupS(null, sDate, sEnd_Date, null, "YS00", "FqcDate"); var f_FPYBoard_LEI = await new WipStationController(_context).GetWipStation4QRS014GroupS(null, sDate, sEnd_Date, null, "YS00", "FqcDate");
if (f_FPYBoard_LEI.DataTotal > 0) if (f_FPYBoard_LEI.DataTotal > 0)
{ {
//2024-04-11 Marvin 修正,安勤品管Jeason提出,直通率改回原先系統算法,各站良率相乘
//2024-03-26 BB.Wang Modify 修正良率(代小平) //2024-03-26 BB.Wang Modify 修正良率(代小平)
//double sum_rate = 100.0; double sum_rate = 100.0;
//int sum_idx = 1; int sum_idx = 1;
double sum_rate = 0.0; //double sum_rate = 0.0;
int sum_idx = 0; //int sum_idx = 0;
DataTable dtRate = new DataTable(); DataTable dtRate = new DataTable();
dtRate.Columns.Add("STATION_ID"); dtRate.Columns.Add("STATION_ID");
@ -1358,9 +1361,10 @@ namespace AMESCoreStudio.WebApi.Controllers.BLL
if (rate > 0) if (rate > 0)
{ {
//sum_rate = sum_rate * (rate / 100.0); //2024-04-11 Marvin 修正,安勤品管Jeason提出,直通率改回原先系統算法,各站良率相乘
sum_idx = sum_idx + 1; sum_rate = sum_rate * (rate / 100.0);
sum_rate = sum_rate + rate; //sum_idx = sum_idx + 1;
//sum_rate = sum_rate + rate;
} }
} }
} }
@ -1376,11 +1380,12 @@ namespace AMESCoreStudio.WebApi.Controllers.BLL
var f_FPYSystem_LEI = await new WipStationController(_context).GetWipStation4QRS014GroupB(null, sDate, sEnd_Date, null, "YS00", "FqcDate"); var f_FPYSystem_LEI = await new WipStationController(_context).GetWipStation4QRS014GroupB(null, sDate, sEnd_Date, null, "YS00", "FqcDate");
if (f_FPYSystem_LEI.DataTotal > 0) if (f_FPYSystem_LEI.DataTotal > 0)
{ {
//2024-04-11 Marvin 修正,安勤品管Jeason提出,直通率改回原先系統算法,各站良率相乘
//2024-03-26 BB.Wang Modify 修正良率(代小平) //2024-03-26 BB.Wang Modify 修正良率(代小平)
//double sum_rate = 100.0; double sum_rate = 100.0;
//int sum_idx = 1; int sum_idx = 1;
double sum_rate = 0.0; //double sum_rate = 0.0;
int sum_idx = 0; //int sum_idx = 0;
DataTable dtRate = new DataTable(); DataTable dtRate = new DataTable();
dtRate.Columns.Add("STATION_ID"); dtRate.Columns.Add("STATION_ID");
@ -1468,9 +1473,10 @@ namespace AMESCoreStudio.WebApi.Controllers.BLL
if (rate > 0) if (rate > 0)
{ {
//sum_rate = sum_rate * (rate / 100.0); //2024-04-11 Marvin 修正,安勤品管Jeason提出,直通率改回原先系統算法,各站良率相乘
sum_idx = sum_idx + 1; sum_rate = sum_rate * (rate / 100.0);
sum_rate = sum_rate + rate; //sum_idx = sum_idx + 1;
//sum_rate = sum_rate + rate;
} }
} }
} }
@ -1486,11 +1492,12 @@ namespace AMESCoreStudio.WebApi.Controllers.BLL
var f_FPYMedical_LEI = await new WipStationController(_context).GetWipStation4QRS014GroupM(null, sDate, sEnd_Date, null, "YS00", "FqcDate"); var f_FPYMedical_LEI = await new WipStationController(_context).GetWipStation4QRS014GroupM(null, sDate, sEnd_Date, null, "YS00", "FqcDate");
if (f_FPYMedical_LEI.DataTotal > 0) if (f_FPYMedical_LEI.DataTotal > 0)
{ {
//2024-04-11 Marvin 修正,安勤品管Jeason提出,直通率改回原先系統算法,各站良率相乘
//2024-03-26 BB.Wang Modify 修正良率(代小平) //2024-03-26 BB.Wang Modify 修正良率(代小平)
//double sum_rate = 100.0; double sum_rate = 100.0;
//int sum_idx = 1; int sum_idx = 1;
double sum_rate = 0.0; //double sum_rate = 0.0;
int sum_idx = 0; //int sum_idx = 0;
DataTable dtRate = new DataTable(); DataTable dtRate = new DataTable();
dtRate.Columns.Add("STATION_ID"); dtRate.Columns.Add("STATION_ID");
@ -1578,9 +1585,10 @@ namespace AMESCoreStudio.WebApi.Controllers.BLL
if (rate > 0) if (rate > 0)
{ {
//sum_rate = sum_rate * (rate / 100.0); //2024-04-11 Marvin 修正,安勤品管Jeason提出,直通率改回原先系統算法,各站良率相乘
sum_idx = sum_idx + 1; sum_rate = sum_rate * (rate / 100.0);
sum_rate = sum_rate + rate; //sum_idx = sum_idx + 1;
//sum_rate = sum_rate + rate;
} }
} }
} }
@ -1596,11 +1604,12 @@ namespace AMESCoreStudio.WebApi.Controllers.BLL
var f_FPYBoard = await new WipStationController(_context).GetWipStation4QRS014GroupS(null, sDate, sEnd_Date, null, werksNo, "FqcDate"); var f_FPYBoard = await new WipStationController(_context).GetWipStation4QRS014GroupS(null, sDate, sEnd_Date, null, werksNo, "FqcDate");
if (f_FPYBoard.DataTotal > 0) if (f_FPYBoard.DataTotal > 0)
{ {
//2024-04-11 Marvin 修正,安勤品管Jeason提出,直通率改回原先系統算法,各站良率相乘
//2024-03-26 BB.Wang Modify 修正良率(代小平) //2024-03-26 BB.Wang Modify 修正良率(代小平)
//double sum_rate = 100.0; double sum_rate = 100.0;
//int sum_idx = 1; int sum_idx = 1;
double sum_rate = 0.0; //double sum_rate = 0.0;
int sum_idx = 0; //int sum_idx = 0;
DataTable dtRate = new DataTable(); DataTable dtRate = new DataTable();
dtRate.Columns.Add("STATION_ID"); dtRate.Columns.Add("STATION_ID");
@ -1688,9 +1697,10 @@ namespace AMESCoreStudio.WebApi.Controllers.BLL
if (rate > 0) if (rate > 0)
{ {
//sum_rate = sum_rate * (rate / 100.0); //2024-04-11 Marvin 修正,安勤品管Jeason提出,直通率改回原先系統算法,各站良率相乘
sum_idx = sum_idx + 1; sum_rate = sum_rate * (rate / 100.0);
sum_rate = sum_rate + rate; //sum_idx = sum_idx + 1;
//sum_rate = sum_rate + rate;
} }
} }
} }
@ -1706,11 +1716,12 @@ namespace AMESCoreStudio.WebApi.Controllers.BLL
var f_FPYSystem = await new WipStationController(_context).GetWipStation4QRS014GroupB(null, sDate, sEnd_Date, null, werksNo, "FqcDate"); var f_FPYSystem = await new WipStationController(_context).GetWipStation4QRS014GroupB(null, sDate, sEnd_Date, null, werksNo, "FqcDate");
if (f_FPYSystem.DataTotal > 0) if (f_FPYSystem.DataTotal > 0)
{ {
//2024-04-11 Marvin 修正,安勤品管Jeason提出,直通率改回原先系統算法,各站良率相乘
//2024-03-26 BB.Wang Modify 修正良率(代小平) //2024-03-26 BB.Wang Modify 修正良率(代小平)
//double sum_rate = 100.0; double sum_rate = 100.0;
//int sum_idx = 1; int sum_idx = 1;
double sum_rate = 0.0; //double sum_rate = 0.0;
int sum_idx = 0; //int sum_idx = 0;
DataTable dtRate = new DataTable(); DataTable dtRate = new DataTable();
dtRate.Columns.Add("STATION_ID"); dtRate.Columns.Add("STATION_ID");
@ -1798,9 +1809,10 @@ namespace AMESCoreStudio.WebApi.Controllers.BLL
if (rate > 0) if (rate > 0)
{ {
//sum_rate = sum_rate * (rate / 100.0); //2024-04-11 Marvin 修正,安勤品管Jeason提出,直通率改回原先系統算法,各站良率相乘
sum_idx = sum_idx + 1; sum_rate = sum_rate * (rate / 100.0);
sum_rate = sum_rate + rate; //sum_idx = sum_idx + 1;
//sum_rate = sum_rate + rate;
} }
} }
} }
@ -1816,11 +1828,12 @@ namespace AMESCoreStudio.WebApi.Controllers.BLL
var f_FPYMedical = await new WipStationController(_context).GetWipStation4QRS014GroupM(null, sDate, sEnd_Date, null, werksNo, "FqcDate"); var f_FPYMedical = await new WipStationController(_context).GetWipStation4QRS014GroupM(null, sDate, sEnd_Date, null, werksNo, "FqcDate");
if (f_FPYMedical.DataTotal > 0) if (f_FPYMedical.DataTotal > 0)
{ {
//2024-04-11 Marvin 修正,安勤品管Jeason提出,直通率改回原先系統算法,各站良率相乘
//2024-03-26 BB.Wang Modify 修正良率(代小平) //2024-03-26 BB.Wang Modify 修正良率(代小平)
//double sum_rate = 100.0; double sum_rate = 100.0;
//int sum_idx = 1; int sum_idx = 1;
double sum_rate = 0.0; //double sum_rate = 0.0;
int sum_idx = 0; //int sum_idx = 0;
DataTable dtRate = new DataTable(); DataTable dtRate = new DataTable();
dtRate.Columns.Add("STATION_ID"); dtRate.Columns.Add("STATION_ID");
@ -1908,9 +1921,10 @@ namespace AMESCoreStudio.WebApi.Controllers.BLL
if (rate > 0) if (rate > 0)
{ {
//sum_rate = sum_rate * (rate / 100.0); //2024-04-11 Marvin 修正,安勤品管Jeason提出,直通率改回原先系統算法,各站良率相乘
sum_idx = sum_idx + 1; sum_rate = sum_rate * (rate / 100.0);
sum_rate = sum_rate + rate; //sum_idx = sum_idx + 1;
//sum_rate = sum_rate + rate;
} }
} }
} }
@ -2098,6 +2112,122 @@ namespace AMESCoreStudio.WebApi.Controllers.BLL
return result; return result;
} }
/// <summary>
/// 生產效率報表
/// </summary>
/// <returns></returns>
[HttpGet("GetRPT006View")]
public async Task<List<RPT006ViewDto>> GetRPT006View(string strDate, string endDate)
{
if (string.IsNullOrWhiteSpace(strDate) || string.IsNullOrWhiteSpace(endDate))
{
strDate = DateTime.Now.ToString("yyyy/MM/dd");
endDate = DateTime.Now.ToString("yyyy/MM/dd");
}
var query = @$" SELECT I.WIP_NO , I.PLAN_QTY , A.ITEM_NO , S.TOTAL_CT , S.OP_CNT ,
E.START_TIME AS EXCEPTIONSTRTIME , E.END_TIME AS EXCEPTIONENDTIME ,
M.* FROM(
SELECT WIP_ID , STATION_ID ,
TO_CHAR(CREATE_DATE, 'YYYY/MM/DD') AS WORKDATE,
COUNT(DISTINCT BARCODE_ID) AS QTY ,
MIN(CREATE_DATE) AS EARLIEST,
MAX(CREATE_DATE) AS LATEST
FROM JHAMES.BARCODE_STATION
WHERE CREATE_DATE BETWEEN TO_DATE(:StrDate, 'YYYY/MM/DD HH24:MI:SS')
AND TO_DATE(:EndDate, 'YYYY/MM/DD HH24:MI:SS')
AND STATION_ID IN ('1096','1099','1105')
GROUP BY WIP_ID , STATION_ID , TO_CHAR(CREATE_DATE, 'YYYY/MM/DD')
)M
INNER JOIN JHAMES.WIP_INFO I ON I.WIP_ID = M.WIP_ID
INNER JOIN JHAMES.WIP_ATT A ON A.WIP_NO = I.WIP_NO
LEFT JOIN JHAMES.STANDARD_WORKTIME S ON S.ITEM_NO = A.ITEM_NO AND S.STATION_ID = M.STATION_ID
LEFT JOIN JHAMES.EXCEPTION_WORKTIME E ON I.WIP_NO = E.WIP_NO AND M.STATION_ID = E.STATION_ID
AND TO_CHAR(E.EXCEPTION_DATE, 'YYYY/MM/DD') = M.WORKDATE
ORDER BY I.WIP_NO , M.WORKDATE , M.STATION_ID ";
DynamicParameters p = new DynamicParameters();
p.Add("StrDate", strDate + " 00:00:00");
p.Add("EndDate", endDate + " 23:59:59");
try
{
var result = await _context.Database.DapperQueryAsync<RPT006ViewDto>(query, p);
foreach (var item in result)
{
// 計算作業時間
DateTime str = Convert.ToDateTime(item.earliest);
DateTime end = Convert.ToDateTime(item.latest);
TimeSpan ts = end.Subtract(str);
// 實際工時
item.workTime = (double)Math.Abs(Math.Round(ts.TotalMinutes, 2));
// 加一台標工時間
item.workTime += item.total_Ct;
// 總標工時數 標工 * 生產數量 / 人數
item.alltotal_Ct = item.total_Ct == 0 ? 0 :
Math.Round((item.total_Ct * item.qty / item.op_Cnt), 2);
// 製程判定 1096 1099 1105
item.unitNo = item.station_Id == "1096" ? "組裝" :
item.station_Id == "1105" ? "測試" :
item.station_Id == "1099" ? "包裝" :
"";
// 中午休息時間 12:00 ~ 13:00
if (str.TimeOfDay < TimeSpan.Parse("12:10:00") && TimeSpan.Parse("12:20:00") < end.TimeOfDay)
item.restTime += 60;
// 早上休息時間 10:00 ~ 10:10
if (str.TimeOfDay < TimeSpan.Parse("10:02:00") && TimeSpan.Parse("10:04:00") < end.TimeOfDay)
item.restTime += 10;
// 下午休息時間 15:00 ~ 15:10
if (str.TimeOfDay < TimeSpan.Parse("15:02:00") && TimeSpan.Parse("15:04:00") < end.TimeOfDay)
item.restTime += 10;
// 加班休息時間 17:15 ~ 17:45
if (str.TimeOfDay < TimeSpan.Parse("17:20:00") && TimeSpan.Parse("17:30:00") < end.TimeOfDay)
item.restTime += 30;
// 異常工時
if (item.exceptionStrTime != null && item.exceptionEndTime != null)
{
DateTime exceptionStr = Convert.ToDateTime(item.exceptionStrTime);
DateTime exceptionEnd = Convert.ToDateTime(item.exceptionEndTime);
TimeSpan exceptionTs = exceptionEnd.Subtract(exceptionStr);
item.abnormalTime = (double)Math.Abs(Math.Round(exceptionTs.TotalMinutes, 2));
// 中午休息時間 12:00 ~ 13:00
if (exceptionStr.TimeOfDay < TimeSpan.Parse("12:10:00") && TimeSpan.Parse("12:20:00") < exceptionEnd.TimeOfDay)
item.abnormalTime += 60;
// 早上休息時間 10:00 ~ 10:10
if (exceptionStr.TimeOfDay < TimeSpan.Parse("10:02:00") && TimeSpan.Parse("10:04:00") < exceptionEnd.TimeOfDay)
item.abnormalTime += 10;
// 下午休息時間 15:00 ~ 15:10
if (exceptionStr.TimeOfDay < TimeSpan.Parse("15:02:00") && TimeSpan.Parse("15:04:00") < exceptionEnd.TimeOfDay)
item.abnormalTime += 10;
// 加班休息時間 17:15 ~ 17:45
if (exceptionStr.TimeOfDay < TimeSpan.Parse("17:20:00") && TimeSpan.Parse("17:30:00") < exceptionEnd.TimeOfDay)
item.abnormalTime += 30;
}
// 計算效率
// 總標準工時 / 實際工時 - 休息時間 - 異常工時
item.efficiency = item.alltotal_Ct / (item.workTime - item.restTime - item.abnormalTime);
item.efficiency = Math.Round((item.efficiency * 100), 2);
}
return result.ToList();
}
catch (Exception ex)
{
return new List<RPT006ViewDto>();
}
}
#endregion #endregion
} }
} }

108
AMESCoreStudio.WebApi/DTO/AMES/RPT006VIiewDto.cs

@ -0,0 +1,108 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
#nullable disable
namespace AMESCoreStudio.WebApi.DTO.AMES
{
public partial class RPT006ViewDto
{
public RPT006ViewDto()
{
}
/// <summary>
/// 工單號碼
/// </summary>
public string wip_No { get; set; }
/// <summary>
/// 料號
/// </summary>
public string item_No { get; set; }
/// <summary>
/// 生產日期
/// </summary>
public DateTime workDate { get; set; }
/// <summary>
/// 工單數量
/// </summary>
public int plan_Qty { get; set; }
/// <summary>
/// 生產數量
/// </summary>
public int qty { get; set; }
/// <summary>
/// 標準工時
/// </summary>
public double total_Ct { get; set; } = 0;
/// <summary>
/// 人數
/// </summary>
public int op_Cnt { get; set; } = 0;
/// <summary>
/// 作業站ID
/// </summary>
public string station_Id { get; set; }
/// <summary>
/// 製程
/// </summary>
public string unitNo { get; set; }
/// <summary>
/// 當天最早產出時間
/// </summary>
public DateTime earliest { get; set; }
/// <summary>
/// 當天最後產出時間
/// </summary>
public DateTime latest { get; set; }
/// <summary>
/// 實際作業時間
/// </summary>
public double workTime { get; set; } = 0;
/// <summary>
/// 休息時間
/// </summary>
public double restTime { get; set; } = 0;
/// <summary>
/// 異常報工 開始時間
/// </summary>
public DateTime? exceptionStrTime { get; set; }
/// <summary>
/// 異常報工 結束時間
/// </summary>
public DateTime? exceptionEndTime { get; set; }
/// <summary>
/// 異常時間
/// </summary>
public double abnormalTime { get; set; } = 0;
/// <summary>
/// 總標準工時
/// </summary>
public double alltotal_Ct { get; set; } = 0;
/// <summary>
/// 生產效率
/// </summary>
public double efficiency { get; set; } = 0;
}
}
Loading…
Cancel
Save