Browse Source

1. 新增FQC009 料號檢驗工單維護

2. 修正過站判斷 加入UserID判斷
3. 過站程式 刷料DIV 加入顏色
PTD
Ray 3 years ago
parent
commit
b69d3f16d9
  1. 118
      AMESCoreStudio.Web/Controllers/FQCController.cs
  2. 48
      AMESCoreStudio.Web/HttpApis/AMES/IFQC.cs
  3. 18
      AMESCoreStudio.Web/Views/FQC/FQC007.cshtml
  4. 280
      AMESCoreStudio.Web/Views/FQC/FQC007A.cshtml
  5. 94
      AMESCoreStudio.Web/Views/FQC/FQC007D.cshtml
  6. 297
      AMESCoreStudio.Web/Views/FQC/FQC009.cshtml
  7. 257
      AMESCoreStudio.Web/Views/FQC/FQC009C.cshtml
  8. 12
      AMESCoreStudio.WebApi/Controllers/AMES/FqcResultMasterBlobController.cs
  9. 52
      AMESCoreStudio.WebApi/Controllers/AMES/MaterialFqcItemController.cs
  10. 17
      AMESCoreStudio.WebApi/Controllers/AMES/QcItemController.cs
  11. 6
      AMESCoreStudio.WebApi/DTO/AMES/FqcDto.cs
  12. 3
      AMESCoreStudio.WebApi/DTO/AMES/QcItemDto.cs
  13. 1
      AMESCoreStudio.WebApi/Models/AMES/FqcResultMasterBlob.cs

118
AMESCoreStudio.Web/Controllers/FQCController.cs

@ -911,6 +911,61 @@ namespace AMESCoreStudio.Web.Controllers
} }
#endregion #endregion
#region 文件
[HttpGet]
public async Task<IActionResult> FQC007D(int fqc)
{
FqcDto fqcDto = new FqcDto();
var model = await _fqcApi.GetFqcResultMasterBlobByFqcID(fqc);
fqcDto.fqcResultMasterBlobs = model;
fqcDto.FqcID = fqc;
return View(fqcDto);
}
[HttpPost]
public async Task<IActionResult> FQC007DAsync(FqcResultMaster model, string Result)
{
var FqcQuery = await _fqcApi.GetFqcQuery(model.InhouseNo, model.SeqID);
var fqcItem = FqcQuery.Data.FirstOrDefault();
// 判斷狀態選擇
if (fqcItem.FailQty >= fqcItem.ReQty)
{
if (model.QaResult == "P" && string.IsNullOrWhiteSpace(model.SpecialPo))
{
ModelState.AddModelError("error", "請輸入特採單號");
return View("FQC007B", model);
}
}
var fqcResultMaster = await _fqcApi.GetFqcResultMaster(model.FqcID);
var fqcInhouseMaster = await _fqcApi.GetFqcInhouseMaster(model.InhouseNo, model.SeqID);
fqcResultMaster.QaResult = model.QaResult;
fqcResultMaster.QaMeno = model.QaMeno;
fqcResultMaster.EndTime = DateTime.Now;
fqcResultMaster.UpdateDate = DateTime.Now;
fqcResultMaster.SpecialPo = model.SpecialPo;
fqcInhouseMaster.Status = model.QaResult;
fqcInhouseMaster.UpdateDate = DateTime.Now;
IResultModel result;
result = await _fqcApi.PutFqcInhouseMaster(JsonConvert.SerializeObject(fqcInhouseMaster));
result = await _fqcApi.PutFqcResultMaster(JsonConvert.SerializeObject(fqcResultMaster));
if (result.Success)
{
var _msg = "新增成功!";
return RedirectToAction("WindowReload", "Home", new { msg = _msg });
}
else
{
ModelState.AddModelError("error", result.Msg);
}
return View("FQC007B", model);
}
#endregion
#endregion #endregion
#region FQC008 FQC查詢 #region FQC008 FQC查詢
@ -937,24 +992,75 @@ namespace AMESCoreStudio.Web.Controllers
#region FQC009 料號對應檢驗工項 #region FQC009 料號對應檢驗工項
public ActionResult FQC009C() public ActionResult FQC009()
{ {
return View(); return View();
} }
[HttpPost] [HttpPost]
public ActionResult FQC009CAsync(string ids, string itemNo) public async Task<IActionResult> FQC009Async(string itemID, string groupID, string itemNo)
{ {
return View(); var result = await _fqcApi.GetMaterialItemByItemNO(itemNo);
if (result == null)
{
var Msg = "在料號主檔找不到該筆料號【" + itemNo + "】";
return Json(new { code = 0, msg = Msg, success = false });
}
// 取料號綁定檢驗工項
var result_MasterFQC = await _fqcApi.GetMaterialFqcItemsByitemNo(itemNo);
// 有勾選的ItemID
var checkItemID = itemID.Split(',').ToList();
// 有勾選的GroupID
var checkGroupID = groupID.Split(',').ToList();
// 取勾選有的 = 新增
var insertItemID = checkItemID.Except(result_MasterFQC.Select(s => s.QcItemID.ToString()));
for (int i = 0; i < checkItemID.Count; i++)
{
if (insertItemID.Where(w => w == checkItemID[i]).Any())
{
MaterialFqcItem materialFqcItem = new MaterialFqcItem
{
ItemID = result.ItemID,
QcItemID = Int32.Parse(checkItemID[i]),
QcGroupID = Int32.Parse(checkGroupID[i]),
CreateUserID = GetLogInUserID(),
CreateDate = DateTime.Now,
UpdateUserID = GetLogInUserID(),
UpdateDate = DateTime.Now
};
await _fqcApi.PostMaterialFqcItem(JsonConvert.SerializeObject(materialFqcItem));
}
}
// 取有料號綁定 = 需要刪除
var deteleItemID = result_MasterFQC.Select(s => s.QcItemID.ToString()).Except(checkItemID);
foreach (var item in deteleItemID)
{
var masterFQCID = result_MasterFQC.Where(w => w.QcItemID == Int32.Parse(item)).FirstOrDefault().MaterialFqcitemID;
await _fqcApi.DeleteMaterialFqcItem(masterFQCID);
}
return Json(new { code = 0, msg = "", success = true });
} }
[HttpGet] [HttpGet]
public async Task<IActionResult> FQC009ItemQueryAsync(int groupID = 0, int page = 0, int limit = 1, string itemID = null) public async Task<IActionResult> FQC009ItemQueryAsync(int groupID = 0, int page = 0, int limit = 1, string itemNo = null)
{ {
var result = await _fqcApi.GetQcItemQuery(groupID, 0, limit); var msg = "";
var result = await _fqcApi.GetQcItemQuery(groupID, 0, limit, itemNo);
if (result.Data.Count() != 0) if (result.Data.Count() != 0)
{ {
return Json(new Table() { code = 0, msg = "", data = result.Data, count = result.DataTotal }); if (!string.IsNullOrWhiteSpace(itemNo))
{
var masterlItem = await _fqcApi.GetMaterialItemByItemNO(itemNo);
if (masterlItem == null)
{
msg = "在料號主檔找不到該筆料號【" + itemNo + "】";
}
}
return Json(new Table() { code = 0, msg = msg, data = result.Data, count = result.DataTotal });
} }
return Json(new Table() { count = 0, data = null }); return Json(new Table() { count = 0, data = null });

48
AMESCoreStudio.Web/HttpApis/AMES/IFQC.cs

@ -81,7 +81,7 @@ namespace AMESCoreStudio.Web
/// <param name="limit">比數</param> /// <param name="limit">比數</param>
/// <returns></returns> /// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/QcItem/QcItemQuery")] [WebApiClient.Attributes.HttpGet("api/QcItem/QcItemQuery")]
ITask<ResultModel<QcItemDto>> GetQcItemQuery(int groupID, int page, int limit); ITask<ResultModel<QcItemDto>> GetQcItemQuery(int groupID, int page, int limit,string itemNo = null);
/// <summary> /// <summary>
/// 查詢檢驗項目維護 ID /// 查詢檢驗項目維護 ID
@ -232,7 +232,7 @@ namespace AMESCoreStudio.Web
#region FQC006 FQC狀態維護 #region FQC006 FQC狀態維護
/// <summary> /// <summary>
/// 刪除過站狀態檔 /// 新增過站狀態檔
/// </summary> /// </summary>
/// <param name="model"></param> /// <param name="model"></param>
/// <returns></returns> /// <returns></returns>
@ -400,6 +400,22 @@ namespace AMESCoreStudio.Web
/// <returns></returns> /// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/FqcInhouseMaster/{inhouseNo}/{seqID}")] [WebApiClient.Attributes.HttpGet("api/FqcInhouseMaster/{inhouseNo}/{seqID}")]
ITask<FqcInhouseMaster> GetFqcInhouseMaster(string inhouseNo, int seqID); ITask<FqcInhouseMaster> GetFqcInhouseMaster(string inhouseNo, int seqID);
/// <summary>
/// 新增 檢驗結果上傳圖檔資料表
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
[WebApiClient.Attributes.HttpPost("api/FqcResultMasterBlob")]
ITask<ResultModel<FqcResultMasterBlob>> PostFqcResultMasterBlob([FromBody, RawJsonContent] string model);
/// <summary>
/// 查詢 檢驗結果上傳圖檔資料表 By FQCID
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/FqcResultMasterBlob/ByFQCID/{id}")]
ITask<List<FqcResultMasterBlob>> GetFqcResultMasterBlobByFqcID(int id);
#endregion #endregion
#region FQC008 FQC查詢 #region FQC008 FQC查詢
@ -422,5 +438,33 @@ namespace AMESCoreStudio.Web
, string status = null, int page = 0, int limit = 10); , string status = null, int page = 0, int limit = 10);
#endregion #endregion
#region FQC009
/// <summary>
/// MaterialItem 料號基本資料檔
/// </summary>
/// <param name="id">料號</param>
[WebApiClient.Attributes.HttpGet("api/MaterialItem/ByItemNO/{id}")]
ITask<MaterialItem> GetMaterialItemByItemNO(string id);
/// <summary>
/// MaterialItem 料號查詢綁定檢驗工項
/// </summary>
/// <param name="id">料號</param>
[WebApiClient.Attributes.HttpGet("api/MaterialFqcItem/ByitemNo/{id}")]
ITask<List<MaterialFqcItem>> GetMaterialFqcItemsByitemNo(string id);
/// <summary>
/// MaterialItem 新增料號綁定檢驗工項
/// </summary>
[WebApiClient.Attributes.HttpPost("api/MaterialFqcItem")]
ITask<ResultModel<MaterialFqcItem>> PostMaterialFqcItem([FromBody, RawJsonContent] string model);
/// <summary>
/// MaterialItem 刪除料號綁定檢驗工項
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpDelete("api/MaterialFqcItem/{id}")]
ITask<ResultModel<string>> DeleteMaterialFqcItem(int id);
#endregion
} }
} }

18
AMESCoreStudio.Web/Views/FQC/FQC007.cshtml

@ -26,7 +26,9 @@
<button class="layui-btn layui-btn-sm layui-btn-normal" type="submit" lay-submit lay-filter="querysubmit"> <button class="layui-btn layui-btn-sm layui-btn-normal" type="submit" lay-submit lay-filter="querysubmit">
<i class="layui-icon layui-icon-sm">&#xe615;</i> <i class="layui-icon layui-icon-sm">&#xe615;</i>
</button> </button>
<a class="layui-btn layui-btn-sm layui-btn-normal" id="attachment" title="文件上傳" lay-submit lay-filter="attachment" onclick="upload()">
<i class="layui-icon layui-icon-sm">&#xe62f;</i>
</a>
@*<i class="layui-icon layui-icon-sm">&#xe615;</i>*@ @*<i class="layui-icon layui-icon-sm">&#xe615;</i>*@
</div> </div>
@ -312,6 +314,20 @@
}); });
}; };
function upload() {
layui.use('layer', function () {
var layer = layui.layer;
layer.open({
title: '文件上傳',
type: 2,
area: ['600px', '400px'],
fixed: false, //不固定
maxmin: true,
content: '/FQC/FQC007D?fqc=@Model.FqcID'
});
});
};
$(document).ready(function () { $(document).ready(function () {
var error = '@Html.ValidationMessage("error")'; var error = '@Html.ValidationMessage("error")';
if ($(error).text() != '') { if ($(error).text() != '') {

280
AMESCoreStudio.Web/Views/FQC/FQC007A.cshtml

@ -0,0 +1,280 @@

@{ ViewData["Title"] = "工單檢驗工項維護";
Layout = "~/Views/Shared/_AMESLayout.cshtml"; }
<style>
.control-label {
justify-content: flex-end !important;
}
</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">
<input id="itemNo" name="itemNo" style="text-transform:uppercase;" autocomplete="off" class="layui-input" placeholder="請輸入料號">
<input id="itemNoOld" name="itemNoOld" type="hidden" />
</div>
</div>
<div class="layui-inline layui-show-xs-block">
<button class="layui-btn layui-btn-sm layui-btn-normal" id="querysubmit" lay-submit lay-filter="querysubmit">
<i class="layui-icon layui-icon-sm">&#xe615;</i>
</button>
</div>
</div>
</div>
</div>
<div class="layui-card-body">
<span style="color: firebrick;word-break: break-all;" class="text-danger offset-sm-3" id="error"></span>
<table class="layui-hide" id="tableQuery" name="tableQuery" lay-filter="tableQuery"></table>
</div>
</div>
<script type="text/html" id="toolbarDemo">
<div class="layui-btn-container">
<button class="layui-btn layui-btn-sm layui-btn" lay-event="add"><i class="layui-icon">&#xe640;</i>保存</button>
</div>
</script>
@section Scripts {
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial");
await Html.RenderPartialAsync("_FileinputScriptsPartial"); }
<script type="text/javascript">
//搜索
$('#querysubmit').click(function () {
hg.msghide('刷新数据!');
initQuery();
});
function initQuery(data) {
layui.use(['form', 'table'], function () {
var itemNo = $('#itemNo').val().toUpperCase();
$('#itemNoOld').val(itemNo);
//记录当前页数据的临时变量
//var $ = layui.$;
//var id_lists = [];
table = layui.table;
form = layui.form;
//方法級渲染
table.render({ //其它参数在此省略
elem: '#tableQuery',
url: "@Url.Action("FQC009ItemQuery", "FQC")",
title: '檢驗工項',
id: 'itemID',
page: false, //开启分页
toolbar: '#toolbarDemo',
limits: [20, 50, 100],
defaultToolbar: ['filter', 'print', 'exports'],
cols: tableCols,
response: { msgName: 'msg' },
where: {itemNo:itemNo},
done: function (res, curr, count) {
//
if (res.msg != '') {
hg.msg(res.msg);
$('#error').text(res.msg);
}
//迴圈所有資料,找出對應關係,設定checkbox選中狀態
for (var i = 0; i < res.data.length; i++) {
if (res.data[i].check) {
//這裡才是真正的有效勾選
res.data[i]["LAY_CHECKED"] = 'true';
//找到對應資料改變勾選樣式,呈現出選中效果
var index = res.data[i]['LAY_TABLE_INDEX'];
$('.layui-table tr[data-index=' + index + '] input[type="checkbox"]').prop('checked', true);
$('.layui-table tr[data-index=' + index + '] input[type="checkbox"]').next().addClass('layui-form-checked');
}
}
}
});
//触发事件
table.on('toolbar(tableQuery)', function (obj) {
if ($('#itemNo').val().replace(/\s+/g, '').toUpperCase() == '') {
hg.msg('請輸入料號,請再重新查詢!');
return;
}
if ($('#itemNo').val().toUpperCase() != $('#itemNoOld').val()) {
hg.msg('保存失敗,原先查詢料號有異動過,請再重新查詢!');
return;
};
var checkStatus = table.checkStatus(obj.config.id);
if (obj.event == 'add') {
if (checkStatus && checkStatus.data.length > 0) {
console.log(checkStatus.data.map(function (x) { return x.itemID }).join(','))
var itemID = checkStatus.data.map(function (x) { return x.itemID }).join(',');
var groupID = checkStatus.data.map(function (x) { return x.groupID }).join(',');
hg.confirm("確定要綁定有勾選的檢驗工項嗎?", function () {
$.ajax({
url: '/FQC/FQC009C',
data: { 'itemID': itemID, 'groupID': groupID ,'itemNo': $('#itemNo').val().toUpperCase() },
type: 'POST',
success: function (data) {
if (data.success) {
hg.msg('保存成功!');
//重载表格数据
//initQuery(data);
}
else {
//hg.msg(data.msg);
hg.msg(data.msg);
}
},
error: function () {
hg.msg("网络请求失败!");
}
});
});
} else {
hg.msg('请勾選要綁定的檢驗工項,再執行!');
}
}
});
/**
* 复选框的点击事件
* 主要操作为:
* 将所有的勾选成功的id储存传入后台拉取数据存到本地销售数据库
*/
//var id_checkeds = [];//所有選中的ID
//table.on('checkbox(tableQuery)', function (obj) {
// //console.log(obj.type); //如果触发的是全选,则为:all,如果触发的是单选,则为:one
// //var data = 'one' === obj.type ? [obj.data] : cookiePageArray;
// var is_all = obj.type == 'all' ? true : false ; // 是否全選
// var is_checked = obj.checked; // 是否選中
// if (is_all) {
// if (is_checked) id_checkeds = id_lists;
// if (!is_checked) is_checkeds = [];
// }
// if(!is_all)
// {
// var this_PKID = obj.data.itemID;
// if (!is_checked) {
// id_checkeds.splice($.inArray(this_PKID, id_checkeds), 1);
// }
// if (is_checked) {
// var index = $.inArray(this_PKID, id_checkeds);
// if (index == -1) {
// id_checkeds.push(this_PKID);
// }
// }
// }
// console.log(id_checkeds);
// ////if (obj.type == 'one') {
// ////遍历数据
// //$.each(data, function (index, item) {
// // //假设你数据中 id 是唯一关键字
// // if (obj.checked) {
// // //.增加已选中项
// // layui.data('checked', {
// // key: item.itemID, value: item
// // });
// // } else {
// // //.删除
// // layui.data('checked', {
// // key: item.itemID, remove: true
// // });
// // }
// //});
// //}
//});
});
};
$(document).ready(function () {
var error = '@Html.ValidationMessage("error")';
if ($(error).text() != '') {
parent.hg.msg(error);
}
initQuery();
});
//监听表单提交事件
////监听表单提交事件
//hg.form.onsubmit('querysubmit', function (data) {
// table && table.reload(data);
//});
var tableCols = [[
{ type: 'checkbox', title:'全選' },
{
field: 'groupNameCN',
title: '類別中文',
sort: true
},
{
field: 'groupNameEN',
title: '類別英文',
},
{
field: 'itemNameCN',
title: '項目中文',
sort: true
},
{
field: 'itemNameEN',
title: '項目英文',
},
]
];
var Toolbar = [{
text: '保存',
layuiicon: '&#xe640;',
class: 'layui-btn',
handler: function (obj, row) {
if (obj.checkstatus && obj.checkstatus.data.length > 0) {
console.log(obj.checkstatus.data.map(function (x) { return x.itemID }).join(','))
hg.confirm("確定要綁定有勾選的檢驗工項嗎?", function () {
$.ajax({
url: '/FQC/FQC009C',
data: { 'ids': obj.checkstatus.data.map(function (x) { return x.itemID }).join(','), 'itemNo':'aaa' },
type: 'POST',
success: function (data) {
if (data.success) {
hg.msg('保存成功!');
//重载表格数据
table && table.reload();
}
else {
//hg.msg(data.msg);
hg.msg('保存失败!');
}
},
error: function () {
hg.msg("网络请求失败!");
}
});
});
} else {
hg.msg('请勾選要綁定的檢驗工項,再執行!');
}
}
}
];
//基本数据表格
//var tableQuery = hg.table.datatable('tableQuery', '檢驗工項', '/FQC/FQC009ItemQuery', {}, tableCols, Toolbar, false, 'full-100', ['filter', 'print', 'exports']);
</script>
}

94
AMESCoreStudio.Web/Views/FQC/FQC007D.cshtml

@ -0,0 +1,94 @@
@model AMESCoreStudio.WebApi.DTO.AMES.FqcDto
@{ ViewData["Title"] = "FQC文件維護";
Layout = "~/Views/Shared/_AMESLayout.cshtml"; }
<style>
.control-label {
justify-content: flex-end !important;
}
</style>
<div class="layui-card">
<form enctype="multipart/form-data" method="post" asp-action="FQC007D" class="layui-form">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="layui-card-body">
<span style="color: firebrick;word-break: break-all;" class="text-danger offset-sm-3" id="error"></span>
<table lay-filter="demo" class="layui-table">
<thead>
<tr>
<th lay-data="{field:'username', width:100}">檔案名稱</th>
<th lay-data="{field:'experience', width:80, sort:true}">檔案路徑</th>
<th lay-data="{field:'right', width:80, sort:true}">預覽</th>
</tr>
</thead>
<tbody>
@foreach (var index in Model.fqcResultMasterBlobs)
{
<tr>
<td>
<span id="FileName">@index.ImageName</span>
</td>
<td>
<span id="Filepath">@index.Filepath</span>
</td>
<td>
<a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-read" onclick="show(this)">預覽</a>
</td>
</tr>
}
</tbody>
</table>
</div>
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">檔案</label>
<label class="layui-btn">
<input type="file" name="formFile">
@*<i class="layui-icon">&#xe67c;</i>上傳文件*@
</label>
<input type="hidden" asp-for="WipNo">
</div>
</div>
</form>
</div>
@section Scripts {
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial");
await Html.RenderPartialAsync("_FileinputScriptsPartial"); }
<script type="text/javascript">
layui.use(['form'], function () {
form = layui.form;
});
//通过行tool编辑,lay-event="show"
function show(obj) {
var Path = $(obj).closest("TR").find('span[id*=Filepath]').text();;
var FileName = $(obj).closest("TR").find('span[id*=FileName]').text();;
layui.use('layer', function () {
var layer = layui.layer;
layer.open({
type: 2,
title: '預覽文件',
shadeClose: true,//点击遮罩关闭层
shade: 0.8,
area: ['90%', '90%'],
zIndex: 19891014,
content: "../../" + Path + FileName
});
});
};
$(document).ready(function () {
var error = '@Html.ValidationMessage("error")';
if ($(error).text() != '') {
parent.hg.msg(error);
}
});
</script>
}

297
AMESCoreStudio.Web/Views/FQC/FQC009.cshtml

@ -1,28 +1,220 @@
@{ 
ViewData["Title"] = "料號檢驗工項維護"; @{ ViewData["Title"] = "料號檢驗工項維護";
Layout = "~/Views/Shared/_AMESLayout.cshtml"; Layout = "~/Views/Shared/_AMESLayout.cshtml"; }
}
<style>
.control-label {
justify-content: flex-end !important;
}
</style>
<div class="layui-card"> <div class="layui-card">
<div class="layui-card-header"> <div class="layui-card-header">
<div class="layui-form"> <div class="layui-form">
<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 class="layui-inline">
<label class="layui-form-label">料號:</label>
<div class="layui-input-inline">
<input id="itemNo" name="itemNo" style="text-transform:uppercase;" autocomplete="off" class="layui-input" placeholder="請輸入料號">
<input id="itemNoOld" name="itemNoOld" type="hidden" />
</div>
</div>
<div class="layui-inline layui-show-xs-block">
<button class="layui-btn layui-btn-sm layui-btn-normal" id="querysubmit" lay-submit lay-filter="querysubmit">
<i class="layui-icon layui-icon-sm">&#xe615;</i>
</button>
</div>
</div> </div>
</div> </div>
</div> </div>
<div class="layui-card-body"> <div class="layui-card-body">
<table class="layui-hide" id="test" lay-filter="test"></table> <span style="color: firebrick;word-break: break-all;" class="text-danger offset-sm-3" id="error"></span>
<table class="layui-hide" id="tableQuery" name="tableQuery" lay-filter="tableQuery"></table>
</div> </div>
</div> </div>
<script type="text/html" id="toolbarDemo">
<div class="layui-btn-container">
<button class="layui-btn layui-btn-sm layui-btn" lay-event="add"><i class="layui-icon">&#xe640;</i>保存</button>
</div>
</script>
@section Scripts {
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial");
await Html.RenderPartialAsync("_FileinputScriptsPartial"); }
@section Scripts{
<script type="text/javascript"> <script type="text/javascript">
//监听表单提交事件 //搜索
hg.form.onsubmit('querysubmit', function (data) { $('#querysubmit').click(function () {
table && table.reload(data); hg.msghide('刷新数据!');
initQuery();
});
function initQuery(data) {
layui.use(['form', 'table'], function () {
var itemNo = $('#itemNo').val().toUpperCase();
$('#itemNoOld').val(itemNo);
//记录当前页数据的临时变量
//var $ = layui.$;
//var id_lists = [];
table = layui.table;
form = layui.form;
//方法級渲染
table.render({ //其它参数在此省略
elem: '#tableQuery',
url: "@Url.Action("FQC009ItemQuery", "FQC")",
title: '檢驗工項',
id: 'itemID',
page: false, //开启分页
toolbar: '#toolbarDemo',
limits: [20, 50, 100],
defaultToolbar: ['filter', 'print', 'exports'],
cols: tableCols,
response: { msgName: 'msg' },
where: {itemNo:itemNo},
done: function (res, curr, count) {
//
if (res.msg != '') {
hg.msg(res.msg);
$('#error').text(res.msg);
}
//迴圈所有資料,找出對應關係,設定checkbox選中狀態
for (var i = 0; i < res.data.length; i++) {
if (res.data[i].check) {
//這裡才是真正的有效勾選
res.data[i]["LAY_CHECKED"] = 'true';
//找到對應資料改變勾選樣式,呈現出選中效果
var index = res.data[i]['LAY_TABLE_INDEX'];
$('.layui-table tr[data-index=' + index + '] input[type="checkbox"]').prop('checked', true);
$('.layui-table tr[data-index=' + index + '] input[type="checkbox"]').next().addClass('layui-form-checked');
}
}
}
});
//触发事件
table.on('toolbar(tableQuery)', function (obj) {
if ($('#itemNo').val().replace(/\s+/g, '').toUpperCase() == '') {
hg.msg('請輸入料號,請再重新查詢!');
return;
}
if ($('#itemNo').val().toUpperCase() != $('#itemNoOld').val()) {
hg.msg('保存失敗,原先查詢料號有異動過,請再重新查詢!');
return;
};
var checkStatus = table.checkStatus(obj.config.id);
if (obj.event == 'add') {
if (checkStatus && checkStatus.data.length > 0) {
console.log(checkStatus.data.map(function (x) { return x.itemID }).join(','))
var itemID = checkStatus.data.map(function (x) { return x.itemID }).join(',');
var groupID = checkStatus.data.map(function (x) { return x.groupID }).join(',');
hg.confirm("確定要綁定有勾選的檢驗工項嗎?", function () {
$.ajax({
url: '/FQC/FQC009C',
data: { 'itemID': itemID, 'groupID': groupID ,'itemNo': $('#itemNo').val().toUpperCase() },
type: 'POST',
success: function (data) {
if (data.success) {
hg.msg('保存成功!');
//重载表格数据
//initQuery(data);
}
else {
//hg.msg(data.msg);
hg.msg(data.msg);
}
},
error: function () {
hg.msg("网络请求失败!");
}
});
});
} else {
hg.msg('请勾選要綁定的檢驗工項,再執行!');
}
}
});
/**
* 复选框的点击事件
* 主要操作为:
* 将所有的勾选成功的id储存传入后台拉取数据存到本地销售数据库
*/
//var id_checkeds = [];//所有選中的ID
//table.on('checkbox(tableQuery)', function (obj) {
// //console.log(obj.type); //如果触发的是全选,则为:all,如果触发的是单选,则为:one
// //var data = 'one' === obj.type ? [obj.data] : cookiePageArray;
// var is_all = obj.type == 'all' ? true : false ; // 是否全選
// var is_checked = obj.checked; // 是否選中
// if (is_all) {
// if (is_checked) id_checkeds = id_lists;
// if (!is_checked) is_checkeds = [];
// }
// if(!is_all)
// {
// var this_PKID = obj.data.itemID;
// if (!is_checked) {
// id_checkeds.splice($.inArray(this_PKID, id_checkeds), 1);
// }
// if (is_checked) {
// var index = $.inArray(this_PKID, id_checkeds);
// if (index == -1) {
// id_checkeds.push(this_PKID);
// }
// }
// }
// console.log(id_checkeds);
// ////if (obj.type == 'one') {
// ////遍历数据
// //$.each(data, function (index, item) {
// // //假设你数据中 id 是唯一关键字
// // if (obj.checked) {
// // //.增加已选中项
// // layui.data('checked', {
// // key: item.itemID, value: item
// // });
// // } else {
// // //.删除
// // layui.data('checked', {
// // key: item.itemID, remove: true
// // });
// // }
// //});
// //}
//});
});
};
$(document).ready(function () {
var error = '@Html.ValidationMessage("error")';
if ($(error).text() != '') {
parent.hg.msg(error);
}
initQuery();
}); });
//监听表单提交事件
////监听表单提交事件
//hg.form.onsubmit('querysubmit', function (data) {
// table && table.reload(data);
//});
var tableCols = [[ var tableCols = [[
{ type: 'checkbox', title:'全選' },
{ {
field: 'groupNameCN', field: 'groupNameCN',
title: '類別中文', title: '類別中文',
@ -31,61 +223,58 @@
{ {
field: 'groupNameEN', field: 'groupNameEN',
title: '類別英文', title: '類別英文',
},
{
field: 'itemNameCN',
title: '項目中文',
sort: true sort: true
}, },
{ {
field: 'right', field: 'itemNameEN',
width: 200, title: '項目英文',
title: '操作', },
fixed: 'right', ]
templet: function (d) {
return '<a class="layui-btn layui-btn-xs layui-icon layui-icon-edit" lay-event="edit">修改</a> <a class="layui-btn layui-btn-danger layui-btn-xs layui-icon layui-icon-delete" lay-event="del">删除</a>'
}
}]
]; ];
//通过行tool编辑,lay-event="edit" var Toolbar = [{
function edit(obj) { text: '保存',
if (obj.data.groupID) { layuiicon: '&#xe640;',
hg.open('修改檢驗類別', '/FQC/FQC001U/' + obj.data.groupID, 400, 400); class: 'layui-btn',
} handler: function (obj, row) {
} if (obj.checkstatus && obj.checkstatus.data.length > 0) {
console.log(obj.checkstatus.data.map(function (x) { return x.itemID }).join(','))
//通过行tool删除,lay-event="del" hg.confirm("確定要綁定有勾選的檢驗工項嗎?", function () {
function del(obj) { $.ajax({
if (obj.data.groupID) { url: '/FQC/FQC009C',
hg.confirm("檢驗類別:" + obj.data.groupNameCN + "【" + obj.data.groupNameEN + "】,確定要刪除嗎?", function () { data: { 'ids': obj.checkstatus.data.map(function (x) { return x.itemID }).join(','), 'itemNo':'aaa' },
$.ajax({ type: 'POST',
url: '/FQC/FQC001D', success: function (data) {
data: { id: obj.data.groupID }, if (data.success) {
type: 'POST', hg.msg('保存成功!');
success: function (data) { //重载表格数据
if (data.success) { table && table.reload();
obj.del(); //只删本地数据 }
hg.msghide("删除成功!"); else {
} //hg.msg(data.msg);
else { hg.msg('保存失败!');
hg.msg(data.msg); }
},
error: function () {
hg.msg("网络请求失败!");
} }
}, });
error: function () {
hg.msg("網路請求失敗!");
}
}); });
}); } else {
} hg.msg('请勾選要綁定的檢驗工項,再執行!');
} }
var toolbar = [{
text: '新增',
layuiicon: '&#xe608;',
class: 'layui-btn-normal',
handler: function () {
hg.open('新增檢驗類別', '/FQC/FQC001C',400, 400);
} }
} }
]; ];
//基本数据表格 //基本数据表格
var table = hg.table.datatable('test', '檢驗類別維護', '/FQC/FQC001Query', {}, tableCols, toolbar, false, 'full-100', ['filter', 'print', 'exports']); //var tableQuery = hg.table.datatable('tableQuery', '檢驗工項', '/FQC/FQC009ItemQuery', {}, tableCols, Toolbar, false, 'full-100', ['filter', 'print', 'exports']);
</script> </script>
}
}

257
AMESCoreStudio.Web/Views/FQC/FQC009C.cshtml

@ -1,257 +0,0 @@
@model AMESCoreStudio.WebApi.Models.AMES.QcGroup
@{ ViewData["Title"] = "料號檢驗工項新增";
Layout = "~/Views/Shared/_AMESLayout.cshtml"; }
<style>
.control-label {
justify-content: flex-end !important;
}
</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">
<input id="itemNo" name="itemNo" autocomplete="off" class="layui-input" placeholder="請輸入料號">
</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">
<span style="color: firebrick;word-break: break-all;" class="text-danger offset-sm-3">@Html.ValidationMessage("error")</span>
<table class="layui-hide" id="tableQuery" name="tableQuery" lay-filter="tableQuery"></table>
</div>
</div>
<script type="text/html" id="toolbarDemo">
<div class="layui-btn-container">
<button class="layui-btn layui-btn-sm layui-btn" lay-event="add"><i class="layui-icon">&#xe640;</i>保存</button>
</div>
</script>
@section Scripts {
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial");
await Html.RenderPartialAsync("_FileinputScriptsPartial"); }
<script type="text/javascript">
hg.form.onsubmit('querysubmit', function (data) {
tableIns.reload(data);
});
layui.use(['form', 'table'], function () {
//记录当前页数据的临时变量
//var $ = layui.$;
//var id_lists = [];
table = layui.table;
form = layui.form;
//方法級渲染
var tableIns = table.render({ //其它参数在此省略
elem: '#tableQuery',
url: "@Url.Action("FQC009ItemQuery", "FQC")",
title: '檢驗工項',
id:'itemID',
page: false, //开启分页
toolbar: '#toolbarDemo',
limits: [20, 50, 100],
defaultToolbar: ['filter', 'print', 'exports'],
cols: tableCols,
done: function (res, curr, count) {
//在快取中找到PM_CODE ,然後設定data表格中的選中狀態
//迴圈所有資料,找出對應關係,設定checkbox選中狀態
for (var i = 0; i < res.data.length; i++) {
if (res.data[i].check) {
//這裡才是真正的有效勾選
res.data[i]["LAY_CHECKED"] = 'true';
//找到對應資料改變勾選樣式,呈現出選中效果
var index = res.data[i]['LAY_TABLE_INDEX'];
$('.layui-table tr[data-index=' + index + '] input[type="checkbox"]').prop('checked', true);
$('.layui-table tr[data-index=' + index + '] input[type="checkbox"]').next().addClass('layui-form-checked');
}
}
}
});
//触发事件
table.on('toolbar(tableQuery)', function (obj) {
var checkStatus = table.checkStatus(obj.config.id);
if (obj.event == 'add') {
if (checkStatus && checkStatus.data.length > 0) {
console.log(checkStatus.data.map(function (x) { return x.itemID }).join(','))
hg.confirm("確定要綁定有勾選的檢驗工項嗎?", function () {
$.ajax({
url: '/FQC/FQC009C',
data: { 'ids': checkStatus.data.map(function (x) { return x.itemID }).join(','), 'itemNo': 'aaa' },
type: 'POST',
success: function (data) {
if (data.success) {
hg.msg('保存成功!');
//重载表格数据
table && table.reload();
}
else {
//hg.msg(data.msg);
hg.msg('保存失败!');
}
},
error: function () {
hg.msg("网络请求失败!");
}
});
});
} else {
hg.msg('请勾選要綁定的檢驗工項,再執行!');
}
}
});
/**
* 复选框的点击事件
* 主要操作为:
* 将所有的勾选成功的id储存传入后台拉取数据存到本地销售数据库
*/
//var id_checkeds = [];//所有選中的ID
//table.on('checkbox(tableQuery)', function (obj) {
// //console.log(obj.type); //如果触发的是全选,则为:all,如果触发的是单选,则为:one
// //var data = 'one' === obj.type ? [obj.data] : cookiePageArray;
// var is_all = obj.type == 'all' ? true : false ; // 是否全選
// var is_checked = obj.checked; // 是否選中
// if (is_all) {
// if (is_checked) id_checkeds = id_lists;
// if (!is_checked) is_checkeds = [];
// }
// if(!is_all)
// {
// var this_PKID = obj.data.itemID;
// if (!is_checked) {
// id_checkeds.splice($.inArray(this_PKID, id_checkeds), 1);
// }
// if (is_checked) {
// var index = $.inArray(this_PKID, id_checkeds);
// if (index == -1) {
// id_checkeds.push(this_PKID);
// }
// }
// }
// console.log(id_checkeds);
// ////if (obj.type == 'one') {
// ////遍历数据
// //$.each(data, function (index, item) {
// // //假设你数据中 id 是唯一关键字
// // if (obj.checked) {
// // //.增加已选中项
// // layui.data('checked', {
// // key: item.itemID, value: item
// // });
// // } else {
// // //.删除
// // layui.data('checked', {
// // key: item.itemID, remove: true
// // });
// // }
// //});
// //}
//});
});
$(document).ready(function () {
var error = '@Html.ValidationMessage("error")';
if ($(error).text() != '') {
parent.hg.msg(error);
}
});
//监听表单提交事件
////监听表单提交事件
//hg.form.onsubmit('querysubmit', function (data) {
// table && table.reload(data);
//});
var tableCols = [[
{ type: 'checkbox', title:'全選' },
{
field: 'groupNameCN',
title: '類別中文',
sort: true
},
{
field: 'groupNameEN',
title: '類別英文',
},
{
field: 'itemNameCN',
title: '項目中文',
sort: true
},
{
field: 'itemNameEN',
title: '項目英文',
},
]
];
var Toolbar = [{
text: '保存',
layuiicon: '&#xe640;',
class: 'layui-btn',
handler: function (obj, row) {
if (obj.checkstatus && obj.checkstatus.data.length > 0) {
console.log(obj.checkstatus.data.map(function (x) { return x.itemID }).join(','))
hg.confirm("確定要綁定有勾選的檢驗工項嗎?", function () {
$.ajax({
url: '/FQC/FQC009C',
data: { 'ids': obj.checkstatus.data.map(function (x) { return x.itemID }).join(','), 'itemNo':'aaa' },
type: 'POST',
success: function (data) {
if (data.success) {
hg.msg('保存成功!');
//重载表格数据
table && table.reload();
}
else {
//hg.msg(data.msg);
hg.msg('保存失败!');
}
},
error: function () {
hg.msg("网络请求失败!");
}
});
});
} else {
hg.msg('请勾選要綁定的檢驗工項,再執行!');
}
}
}
];
//基本数据表格
//var tableQuery = hg.table.datatable('tableQuery', '檢驗工項', '/FQC/FQC009ItemQuery', {}, tableCols, Toolbar, false, 'full-100', ['filter', 'print', 'exports']);
</script>
}

12
AMESCoreStudio.WebApi/Controllers/AMES/FqcResultMasterBlobController.cs

@ -46,6 +46,18 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
return fqcResultMasterBlob; return fqcResultMasterBlob;
} }
/// <summary>
/// 檢驗結果上傳圖檔資料表 By FQCID
/// </summary>
/// <param name="id">FQCID</param>
/// <returns></returns>
[HttpGet("ByFQCID/{id}")]
public async Task<ActionResult<IEnumerable<FqcResultMasterBlob>>> GetFqcResultMasterBlobByFqcID(int id)
{
var fqcResultMasterBlobs = await _context.FqcResultMasterBlobs.Where(w => w.FqcID == id).ToListAsync();
return fqcResultMasterBlobs;
}
/// <summary> /// <summary>
/// 更新 檢驗結果上傳圖檔資料表 /// 更新 檢驗結果上傳圖檔資料表
/// </summary> /// </summary>

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

@ -46,6 +46,22 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
return materialFqcItem; return materialFqcItem;
} }
/// <summary>
/// 料號查詢綁定檢驗工項
/// </summary>
/// <param name="id">料號</param>
/// <returns></returns>
[HttpGet("ByitemNo/{id}")]
public async Task<ActionResult<IEnumerable<MaterialFqcItem>>> GetMaterialFqcItemsByitemNo(string id)
{
var itemID = 0;
var result = await _context.MaterialItems.Where(w => w.ItemNo == id).ToListAsync();
if (result.Count() != 0)
itemID = result.FirstOrDefault().ItemID;
return await _context.MaterialFqcItems.Where(w => w.ItemID == itemID).ToListAsync();
}
/// <summary> /// <summary>
/// 更新料號對應工項資料檔 /// 更新料號對應工項資料檔
/// </summary> /// </summary>
@ -99,20 +115,38 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
return result; return result;
} }
// DELETE: api/MaterialFqcItem/5 /// <summary>
/// 刪除料號對應工項資料檔
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpDelete("{id}")] [HttpDelete("{id}")]
public async Task<ActionResult<MaterialFqcItem>> DeleteMaterialFqcItem(int id) public async Task<ResultModel<string>> DeleteMaterialFqcItem(int id)
{ {
ResultModel<string> result = new ResultModel<string>();
var materialFqcItem = await _context.MaterialFqcItems.FindAsync(id); var materialFqcItem = await _context.MaterialFqcItems.FindAsync(id);
if (materialFqcItem == null)
try
{ {
return NotFound(); if (materialFqcItem == null)
{
result.Success = false;
result.Msg = "找不到要刪除資料";
}
else
{
_context.MaterialFqcItems.Remove(materialFqcItem);
await _context.SaveChangesAsync();
result.Success = true;
result.Msg = "OK";
}
} }
catch (Exception ex)
_context.MaterialFqcItems.Remove(materialFqcItem); {
await _context.SaveChangesAsync(); result.Success = false;
result.Msg = ex.InnerException.Message;
return materialFqcItem; }
return result;
} }
private bool MaterialFqcItemExists(int id) private bool MaterialFqcItemExists(int id)

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

@ -53,15 +53,16 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
/// <param name="groupID">檢驗類別ID</param> /// <param name="groupID">檢驗類別ID</param>
/// <param name="page">頁數</param> /// <param name="page">頁數</param>
/// <param name="limit">筆數</param> /// <param name="limit">筆數</param>
/// <param name="itemNo">料號</param>
/// <returns></returns> /// <returns></returns>
[HttpGet("QcItemQuery")] [HttpGet("QcItemQuery")]
public async Task<ResultModel<QcItemDto>> GetQcItemQuery(int groupID = 0, int page = 0, int limit = 10) public async Task<ResultModel<QcItemDto>> GetQcItemQuery(int groupID = 0, int page = 0, int limit = 10, string itemNo = null)
{ {
IQueryable<QcItem> q = _context.QcItems; IQueryable<QcItem> q = _context.QcItems;
ResultModel<QcItemDto> result = new ResultModel<QcItemDto>(); ResultModel<QcItemDto> result = new ResultModel<QcItemDto>();
if (groupID != 0) if (groupID != 0)
q = q.Where(w => w.GroupID == groupID); q = q.Where(w => w.GroupID == groupID);
// 紀錄筆數 // 紀錄筆數
result.DataTotal = q.Count(); result.DataTotal = q.Count();
@ -86,6 +87,18 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
GroupNameEN = s.GetQcGroup.GroupNameEN GroupNameEN = s.GetQcGroup.GroupNameEN
}).ToListAsync(); }).ToListAsync();
// 有輸入料號跟QCITEM 比對有資料打勾
var itemID = _context.MaterialItems.Where(w => w.ItemNo == itemNo).FirstOrDefault();
if (itemID != null)
{
var marterialFQCItems = _context.MaterialFqcItems.Where(w => w.ItemID == itemID.ItemID);
foreach (var item in result.Data)
{
if (marterialFQCItems.Where(w => w.QcItemID == item.ItemID).Any())
item.check = true;
}
}
return result; return result;
} }

6
AMESCoreStudio.WebApi/DTO/AMES/FqcDto.cs

@ -18,6 +18,7 @@ namespace AMESCoreStudio.WebApi.DTO.AMES
public FqcDto() public FqcDto()
{ {
fqcDetails = new List<FqcDetailDto>(); fqcDetails = new List<FqcDetailDto>();
fqcResultMasterBlobs = new List<Models.AMES.FqcResultMasterBlob>();
} }
/// <summary> /// <summary>
@ -150,6 +151,11 @@ namespace AMESCoreStudio.WebApi.DTO.AMES
public List<FqcDetailDto> fqcDetails { get; set; } public List<FqcDetailDto> fqcDetails { get; set; }
/// <summary>
/// 附件檔案
/// </summary>
public List<Models.AMES.FqcResultMasterBlob> fqcResultMasterBlobs { get; set; }
public class FqcDetailDto public class FqcDetailDto
{ {
/// <summary> /// <summary>

3
AMESCoreStudio.WebApi/DTO/AMES/QcItemDto.cs

@ -58,6 +58,9 @@ namespace AMESCoreStudio.WebApi.DTO.AMES
/// </summary> /// </summary>
public DateTime? UpdateDate { get; set; } = DateTime.Now; public DateTime? UpdateDate { get; set; } = DateTime.Now;
/// <summary>
/// 料號檢驗工項是否有資料
/// </summary>
public bool check {get;set;}= false; public bool check {get;set;}= false;
} }
} }

1
AMESCoreStudio.WebApi/Models/AMES/FqcResultMasterBlob.cs

@ -13,6 +13,7 @@ namespace AMESCoreStudio.WebApi.Models.AMES
/// 檢驗結果上傳圖檔資料表 /// 檢驗結果上傳圖檔資料表
/// </summary> /// </summary>
[Table("FQC_RESULT_MASTER_BLOB", Schema = "JHAMES")] [Table("FQC_RESULT_MASTER_BLOB", Schema = "JHAMES")]
[DataContract]
public partial class FqcResultMasterBlob public partial class FqcResultMasterBlob
{ {
/// <summary> /// <summary>

Loading…
Cancel
Save