21 changed files with 2430 additions and 128 deletions
@ -0,0 +1,218 @@ |
|||||
|
@{ |
||||
|
ViewData["Title"] = "設備領用/歸還"; |
||||
|
Layout = "~/Views/Shared/_AMESLayout.cshtml"; |
||||
|
} |
||||
|
|
||||
|
<div class="layui-card"> |
||||
|
<div class="layui-card-header"> |
||||
|
<div class="layui-form"> |
||||
|
<div class="layui-form-item "> |
||||
|
<div class="layui-inline"><i class="fa fa-file-text-o fa-fw"></i> @ViewBag.Title</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-card-body"> |
||||
|
<div class="layui-form" style="margin-bottom:5px;"> |
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-inline" style="margin-right:5px;"> |
||||
|
<label class="layui-inline layui-form-label">種類歸屬</label> |
||||
|
<div class="layui-input-inline" style="width:90px"> |
||||
|
<select lay-filter="TypeFlag" name="TypeFlag" id="TypeFlag" style="width:90px"> |
||||
|
<option value="-99">全部</option> |
||||
|
<option value="0">設備</option> |
||||
|
<option value="1">料件</option> |
||||
|
</select> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-inline" style="margin-right:5px;"> |
||||
|
<label class="layui-inline layui-form-label">設備種類</label> |
||||
|
<div class="layui-input-inline" style="width:120px"> |
||||
|
<select lay-filter="Commodity" name="Commodity" id="Commodity" asp-items="@ViewBag.TypesList" style="width:120px"> |
||||
|
<option value="-99">全部</option> |
||||
|
</select> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-inline" style="margin-right:5px;"> |
||||
|
<label class="layui-inline layui-form-label">管理編號</label> |
||||
|
<div class="layui-input-inline"> |
||||
|
<input type="text" name="QANo" id="QANo" placeholder="请输入管理編號" autocomplete="off" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-inline" style="margin-left:0px;"> |
||||
|
<div class="layui-btn-group"> |
||||
|
<button class="layui-btn layui-btn-sm layui-btn-normal" id="querysubmit" lay-filter="querysubmit"> |
||||
|
<i class="layui-icon layui-icon-sm"></i> |
||||
|
</button> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<table class="layui-hide" id="test" lay-filter="test"></table> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
@section Scripts{ |
||||
|
<script type="text/javascript"> |
||||
|
var tableCols = [[ |
||||
|
{ |
||||
|
field: 'outfitID', |
||||
|
width: 80, |
||||
|
title: '#' |
||||
|
}, |
||||
|
{ |
||||
|
field: 'outfitNo', |
||||
|
title: '設備編碼' |
||||
|
}, |
||||
|
{ |
||||
|
field: 'qaNo', |
||||
|
title: '管理編號' |
||||
|
}, |
||||
|
{ |
||||
|
field: 'partNo', |
||||
|
title: '財產名稱' |
||||
|
}, |
||||
|
//{ |
||||
|
// field: 'statusNo', |
||||
|
// title: '狀態', |
||||
|
// templet: function (d) { |
||||
|
// var btn ; |
||||
|
// if (d.statusNo == "A") |
||||
|
// btn = '有效'; |
||||
|
// else |
||||
|
// btn = '無效'; |
||||
|
// return btn |
||||
|
// //return '<a class="layui-btn layui-btn-normal 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>' |
||||
|
// } |
||||
|
//}, |
||||
|
{ |
||||
|
field: 'useStatusNo', |
||||
|
title: '狀態', |
||||
|
templet: function (d) { |
||||
|
var str; |
||||
|
if (d.useStatusNo == "B") |
||||
|
str = '領用'; |
||||
|
else if (d.useStatusNo == "N") |
||||
|
str = '新設備'; |
||||
|
else if (d.useStatusNo == "R") |
||||
|
str = '歸還'; |
||||
|
else if (d.useStatusNo == "S") |
||||
|
str = '報廢'; |
||||
|
return str |
||||
|
//return '<a class="layui-btn layui-btn-normal 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>' |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
field: 'locationNo', |
||||
|
title: '儲位' |
||||
|
}, |
||||
|
{ |
||||
|
field: 'custodianName', |
||||
|
title: '保管人' |
||||
|
}, |
||||
|
{ |
||||
|
field: 'right', |
||||
|
width: 200, |
||||
|
title: '操作', |
||||
|
fixed: 'right', |
||||
|
templet: function (d) { |
||||
|
var btn = '<a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-edit" lay-event="view">檢視</a>'; |
||||
|
if (d.useStatusNo == "B") |
||||
|
btn += ' <a class="layui-btn layui-btn-xs layui-icon layui-icon-edit" lay-event="re">歸還</a>'; |
||||
|
else |
||||
|
btn += ' <a class="layui-btn layui-btn-xs layui-icon layui-icon-edit" lay-event="edit">領用</a>'; |
||||
|
return btn |
||||
|
} |
||||
|
}] |
||||
|
]; |
||||
|
|
||||
|
//通过行tool编辑,lay-event="edit" |
||||
|
function edit(obj) { |
||||
|
if (obj.data.outfitID) { |
||||
|
hg.open('領用設備', '/JIG/JIG005B/' + obj.data.outfitID, 640,480); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
//通过行tool删除,lay-event="del" |
||||
|
function re(obj) { |
||||
|
if (obj.data.outfitID) { |
||||
|
hg.open('歸還設備', '/JIG/JIG005R/' + obj.data.outfitID, 640, 480); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
//通过行tool删除,lay-event="del" |
||||
|
function view(obj) { |
||||
|
if (obj.data.outfitID) { |
||||
|
hg.open('檢視設備基本資料', '/JIG/JIG005V/' + obj.data.outfitID, 720,520); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
////搜索 |
||||
|
$('#querysubmit').click(function () { |
||||
|
|
||||
|
hg.msghide("刷新数据!"); |
||||
|
tt(); |
||||
|
|
||||
|
}); |
||||
|
|
||||
|
layui.use(['form', 'layer', 'laydate'], function () { |
||||
|
form = layui.form; |
||||
|
form.on('select(TypeFlag)', function (data) { |
||||
|
var data = $("#TypeFlag").val(); |
||||
|
console.info(data); |
||||
|
getCommodityByType(data); |
||||
|
}); |
||||
|
|
||||
|
}); |
||||
|
|
||||
|
function getCommodityByType(data) { |
||||
|
var TypeFlag = $("#TypeFlag").val(); |
||||
|
$.ajax({ |
||||
|
url: "/JIG/GetOutfitCommodityInfoesByQuery?TypeFlag=" + data +"&Status=A", |
||||
|
dataType: 'json', |
||||
|
//data: { id: data }, |
||||
|
contentType: "application/json", |
||||
|
type: 'get', |
||||
|
success: function (result) { |
||||
|
if (result.data) { |
||||
|
$("#Commodity").empty(); |
||||
|
var count = 0; |
||||
|
$('#Commodity').append(new Option("全部", "-99")); |
||||
|
$.each(result.data, function (index, item) { |
||||
|
$('#Commodity').append(new Option(item.commodityName, item.commodityID)); |
||||
|
count = count + 1; |
||||
|
}); |
||||
|
if (count == 0) { |
||||
|
$("#Commodity").empty(); |
||||
|
$('#Commodity').append(new Option("無選項", "")); |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
else { |
||||
|
$("#Commodity").empty(); |
||||
|
$('#Commodity').append(new Option("無選項", "")); |
||||
|
} |
||||
|
layui.form.render("select"); |
||||
|
} |
||||
|
}); |
||||
|
}; |
||||
|
////搜索 |
||||
|
$('#querysubmit').click(function () { |
||||
|
hg.msghide("刷新数据!"); |
||||
|
tt(); |
||||
|
}); |
||||
|
|
||||
|
var table; |
||||
|
$(function () { |
||||
|
tt(); |
||||
|
}); |
||||
|
//基本数据表格 |
||||
|
function tt() { |
||||
|
table = hg.table.datatable('test', '設備領用/歸還', |
||||
|
'/JIG/GetOutfitInfoesByQuery?TypeFlag=' + $("#TypeFlag").val() + '&CommodityID=' + $("#Commodity").val() + '&VarityID=-99&Status=A&QANo=' + $("#QANo").val() + '&PartNo=*&UseStatus=U' |
||||
|
, {}, tableCols, toolbar, true, 'full-100', ['filter', 'print', 'exports']); |
||||
|
} |
||||
|
|
||||
|
</script> |
||||
|
} |
@ -0,0 +1,119 @@ |
|||||
|
@model AMESCoreStudio.WebApi.Models.AMES.OutfitStatusLog |
||||
|
|
||||
|
|
||||
|
@{ ViewData["Title"] = "SPC005B"; |
||||
|
Layout = "~/Views/Shared/_FormLayout.cshtml"; } |
||||
|
|
||||
|
|
||||
|
<style> |
||||
|
.control-label { |
||||
|
justify-content: flex-end !important; |
||||
|
} |
||||
|
</style> |
||||
|
|
||||
|
<div class="row"> |
||||
|
<div class="col-sm-12"> |
||||
|
<form enctype="multipart/form-data" method="post" asp-action="JIG005BSave"> |
||||
|
<div asp-validation-summary="ModelOnly" class="text-danger"></div> |
||||
|
<input type="hidden" asp-for="OutfitLogID" value="0" /> |
||||
|
<input type="hidden" asp-for="OutfitID" value="@ViewBag.OutfitID" /> |
||||
|
<input type="hidden" asp-for="CreateUserID" value="@ViewBag.UserID" /> |
||||
|
<input type="hidden" asp-for="CreateDate" value="@System.DateTime.Now" /> |
||||
|
<input type="hidden" asp-for="StatusNo" value="B" /> |
||||
|
<input type="hidden" asp-for="StatusQty" value="1" /> |
||||
|
|
||||
|
|
||||
|
<div class="form-group form-inline my-sm-1"> |
||||
|
<label class="control-label col-sm-3">管理編號</label> |
||||
|
<input value="@ViewBag.QANo" class="form-control col-sm-9" readonly /> |
||||
|
</div> |
||||
|
<div class="form-group form-inline my-sm-1"> |
||||
|
<label class="control-label col-sm-3">人員部門</label> |
||||
|
<select id="Dept" asp-items="@ViewBag.DeptList" class="custom-select col-sm-9"> |
||||
|
<option value="">請選擇</option> |
||||
|
</select> |
||||
|
</div> |
||||
|
<div class="form-group form-inline my-sm-1"> |
||||
|
<label class="control-label col-sm-3">領用人</label> |
||||
|
<select id="StatusUserID" asp-for="StatusUserID" asp-items="@ViewBag.UserList" class="custom-select col-sm-9"> |
||||
|
<option value="">請選擇</option> |
||||
|
</select> |
||||
|
<span asp-validation-for="StatusUserID" class="text-danger offset-sm-3 my-sm-1"></span> |
||||
|
</div> |
||||
|
<div class="form-group form-inline my-sm-1"> |
||||
|
<label class="control-label col-sm-3">預計歸還日期</label> |
||||
|
<input asp-for="StatusDate" type="date" class="form-control col-sm-9" /> |
||||
|
<span asp-validation-for="StatusDate" class="text-danger offset-sm-3 my-sm-1"></span> |
||||
|
</div> |
||||
|
<div class="form-group form-inline my-sm-1"> |
||||
|
<label asp-for="WipNo" class="control-label col-sm-3"></label> |
||||
|
<input asp-for="WipNo" class="form-control col-sm-9" /> |
||||
|
<span asp-validation-for="WipNo" class="text-danger offset-sm-3 my-sm-1"></span> |
||||
|
</div> |
||||
|
<div class="form-group form-inline my-sm-1"> |
||||
|
<label asp-for="Remark" class="control-label col-sm-3"></label> |
||||
|
<input asp-for="Remark" class="form-control col-sm-9" /> |
||||
|
<span asp-validation-for="Remark" class="text-danger offset-sm-3 my-sm-1"></span> |
||||
|
</div> |
||||
|
<span style="color: firebrick;word-break: break-all;" class="text-danger offset-sm-3">@Html.ValidationMessage("error")</span> |
||||
|
<div class="form-group"> |
||||
|
<input type="submit" value="保存" class="btn btn-primary offset-sm-3" /> |
||||
|
</div> |
||||
|
|
||||
|
</form> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
@section Scripts { |
||||
|
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); |
||||
|
await Html.RenderPartialAsync("_FileinputScriptsPartial"); } |
||||
|
|
||||
|
<script type="text/javascript"> |
||||
|
$(document).ready(function () { |
||||
|
var error = '@Html.ValidationMessage("error")'; |
||||
|
if ($(error).text() != '') { |
||||
|
parent.hg.msg(error); |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
|
||||
|
$("#Dept").change(function () { |
||||
|
var data = $("#Dept").val(); |
||||
|
getUserInfoes(data); |
||||
|
}); |
||||
|
function getUserInfoes(data) { |
||||
|
$.ajax({ |
||||
|
url: "/SYS/GetUserInfoes", |
||||
|
dataType: 'json', |
||||
|
contentType: "application/json", |
||||
|
type: 'get', |
||||
|
success: function (result) { |
||||
|
if (result.data) { |
||||
|
$("#StatusUserID").empty(); |
||||
|
$('#StatusUserID').append(new Option("請選擇", "")); |
||||
|
var count = 0; |
||||
|
$.each(result.data, function (index, item) { |
||||
|
if (item.deptID == data) { |
||||
|
$('#StatusUserID').append(new Option(item.userName, item.userID)); |
||||
|
count = count + 1; |
||||
|
} |
||||
|
}); |
||||
|
if (count == 0) { |
||||
|
$("#StatusUserID").empty(); |
||||
|
$('#StatusUserID').append(new Option("無選項", "")); |
||||
|
} |
||||
|
} |
||||
|
else { |
||||
|
$("#StatusUserID").empty(); |
||||
|
$('#StatusUserID').append(new Option("無選項", "")); |
||||
|
} |
||||
|
layui.form.render("select"); |
||||
|
} |
||||
|
}); |
||||
|
}; |
||||
|
|
||||
|
</script> |
||||
|
|
||||
|
|
||||
|
} |
||||
|
|
@ -0,0 +1,114 @@ |
|||||
|
@model AMESCoreStudio.WebApi.Models.AMES.OutfitStatusLog |
||||
|
|
||||
|
|
||||
|
@{ ViewData["Title"] = "SPC005R"; |
||||
|
Layout = "~/Views/Shared/_FormLayout.cshtml"; } |
||||
|
|
||||
|
|
||||
|
<style> |
||||
|
.control-label { |
||||
|
justify-content: flex-end !important; |
||||
|
} |
||||
|
</style> |
||||
|
|
||||
|
<div class="row"> |
||||
|
<div class="col-sm-12"> |
||||
|
<form enctype="multipart/form-data" method="post" asp-action="JIG005RSave"> |
||||
|
<div asp-validation-summary="ModelOnly" class="text-danger"></div> |
||||
|
<input type="hidden" asp-for="OutfitLogID" value="0" /> |
||||
|
<input type="hidden" asp-for="OutfitID" value="@ViewBag.OutfitID" /> |
||||
|
<input type="hidden" asp-for="CreateUserID" value="@ViewBag.UserID" /> |
||||
|
<input type="hidden" asp-for="CreateDate" value="@System.DateTime.Now" /> |
||||
|
<input type="hidden" asp-for="StatusNo" value="R" /> |
||||
|
<input type="hidden" asp-for="StatusQty" value="1" /> |
||||
|
|
||||
|
|
||||
|
<div class="form-group form-inline my-sm-1"> |
||||
|
<label class="control-label col-sm-3">管理編號</label> |
||||
|
<input value="@ViewBag.QANo" class="form-control col-sm-9" readonly /> |
||||
|
</div> |
||||
|
<div class="form-group form-inline my-sm-1"> |
||||
|
<label class="control-label col-sm-3">人員部門</label> |
||||
|
<select id="Dept" asp-items="@ViewBag.DeptList" class="custom-select col-sm-9"> |
||||
|
<option value="">請選擇</option> |
||||
|
</select> |
||||
|
</div> |
||||
|
<div class="form-group form-inline my-sm-1"> |
||||
|
<label class="control-label col-sm-3">歸還人員</label> |
||||
|
<select id="StatusUserID" asp-for="StatusUserID" asp-items="@ViewBag.UserList" class="custom-select col-sm-9"> |
||||
|
<option value="">請選擇</option> |
||||
|
</select> |
||||
|
<span asp-validation-for="StatusUserID" class="text-danger offset-sm-3 my-sm-1"></span> |
||||
|
</div> |
||||
|
<div class="form-group form-inline my-sm-1"> |
||||
|
<label class="control-label col-sm-3">歸還日期</label> |
||||
|
<input asp-for="StatusDate" value="@ViewBag.StatusDate" type="date" class="form-control col-sm-9" readonly/> |
||||
|
<span asp-validation-for="StatusDate" class="text-danger offset-sm-3 my-sm-1"></span> |
||||
|
</div> |
||||
|
<div class="form-group form-inline my-sm-1"> |
||||
|
<label asp-for="Remark" class="control-label col-sm-3"></label> |
||||
|
<input asp-for="Remark" class="form-control col-sm-9" /> |
||||
|
<span asp-validation-for="Remark" class="text-danger offset-sm-3 my-sm-1"></span> |
||||
|
</div> |
||||
|
<span style="color: firebrick;word-break: break-all;" class="text-danger offset-sm-3">@Html.ValidationMessage("error")</span> |
||||
|
<div class="form-group"> |
||||
|
<input type="submit" value="保存" class="btn btn-primary offset-sm-3" /> |
||||
|
</div> |
||||
|
|
||||
|
</form> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
@section Scripts { |
||||
|
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); |
||||
|
await Html.RenderPartialAsync("_FileinputScriptsPartial"); } |
||||
|
|
||||
|
<script type="text/javascript"> |
||||
|
$(document).ready(function () { |
||||
|
var error = '@Html.ValidationMessage("error")'; |
||||
|
if ($(error).text() != '') { |
||||
|
parent.hg.msg(error); |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
|
||||
|
$("#Dept").change(function () { |
||||
|
var data = $("#Dept").val(); |
||||
|
getUserInfoes(data); |
||||
|
}); |
||||
|
function getUserInfoes(data) { |
||||
|
$.ajax({ |
||||
|
url: "/SYS/GetUserInfoes", |
||||
|
dataType: 'json', |
||||
|
contentType: "application/json", |
||||
|
type: 'get', |
||||
|
success: function (result) { |
||||
|
if (result.data) { |
||||
|
$("#StatusUserID").empty(); |
||||
|
$('#StatusUserID').append(new Option("請選擇", "")); |
||||
|
var count = 0; |
||||
|
$.each(result.data, function (index, item) { |
||||
|
if (item.deptID == data) { |
||||
|
$('#StatusUserID').append(new Option(item.userName, item.userID)); |
||||
|
count = count + 1; |
||||
|
} |
||||
|
}); |
||||
|
if (count == 0) { |
||||
|
$("#StatusUserID").empty(); |
||||
|
$('#StatusUserID').append(new Option("無選項", "")); |
||||
|
} |
||||
|
} |
||||
|
else { |
||||
|
$("#StatusUserID").empty(); |
||||
|
$('#StatusUserID').append(new Option("無選項", "")); |
||||
|
} |
||||
|
layui.form.render("select"); |
||||
|
} |
||||
|
}); |
||||
|
}; |
||||
|
|
||||
|
</script> |
||||
|
|
||||
|
|
||||
|
} |
||||
|
|
@ -0,0 +1,156 @@ |
|||||
|
@model AMESCoreStudio.WebApi.Models.AMES.OutfitInfo |
||||
|
|
||||
|
|
||||
|
@{ ViewData["Title"] = "JIG005V"; |
||||
|
Layout = "~/Views/Shared/_AMESLayout.cshtml"; } |
||||
|
|
||||
|
<style> |
||||
|
.control-label { |
||||
|
justify-content: flex-end !important; |
||||
|
} |
||||
|
|
||||
|
.text-error { |
||||
|
color: #dc3545 !important; |
||||
|
} |
||||
|
|
||||
|
.my-read-only-class { |
||||
|
cursor: not-allowed; |
||||
|
} |
||||
|
</style> |
||||
|
|
||||
|
<div class="layui-card"> |
||||
|
<div class="layui-card-body"> |
||||
|
<div class="layui-form" style="margin-bottom:5px;"> |
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-inline" style="margin-right:5px;"> |
||||
|
<div class="layui-inline" style="margin-right:5px;"> |
||||
|
<label class="layui-inline layui-form-label">是否有效</label> |
||||
|
<div class="layui-input-inline" style="width:80px"> |
||||
|
<select asp-for="StatusNo" style="width:80px" disabled> |
||||
|
<option value="*">全部</option> |
||||
|
<option value="A">有效</option> |
||||
|
<option value="S">無效</option> |
||||
|
</select> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-inline" style="margin-right:5px;"> |
||||
|
<label asp-for="UseStatusNo" class="layui-inline layui-form-label"></label> |
||||
|
<div class="layui-input-inline" style="width:80px"> |
||||
|
<select asp-for="UseStatusNo" style="width:80px" disabled> |
||||
|
<option value="*">全部</option> |
||||
|
<option value="N">新設備</option> |
||||
|
<option value="B">領用</option> |
||||
|
<option value="R">歸還</option> |
||||
|
<option value="F">送修</option> |
||||
|
<option value="S">報廢</option> |
||||
|
</select> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<label class="layui-inline layui-form-label">設備種類</label> |
||||
|
<div class="layui-input-inline" style="width:120px"> |
||||
|
<select asp-for="CommodityID" asp-items="@ViewBag.TypesList" style="width:120px" disabled> |
||||
|
<option value="-99">全部</option> |
||||
|
</select> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-inline" style="margin-right:5px;"> |
||||
|
<label asp-for="QANo" class="layui-inline layui-form-label"></label> |
||||
|
<div class="layui-input-inline"> |
||||
|
<input asp-for="QANo" class="layui-input" readonly> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-inline" style="margin-right:5px;"> |
||||
|
<label asp-for="PuchaseDate" class="layui-inline layui-form-label"></label> |
||||
|
<div class="layui-input-inline"> |
||||
|
<input asp-for="PuchaseDate" type="date" class="layui-input" readonly> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<table class="layui-hide" id="sop" lay-filter="sop"></table> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
@section Scripts { |
||||
|
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); |
||||
|
await Html.RenderPartialAsync("_FileinputScriptsPartial"); } |
||||
|
|
||||
|
<script type="text/javascript"> |
||||
|
|
||||
|
var tableCols = [[ |
||||
|
{ |
||||
|
field: 'createDate', |
||||
|
title: '狀態建立日期', |
||||
|
width: 120, |
||||
|
sort: true, |
||||
|
templet: '<div>{{ layui.util.toDateString(d.createDate, "yyyy/MM/dd") }}</div>' |
||||
|
}, |
||||
|
{ |
||||
|
field: 'statusNo', |
||||
|
title: '設備狀態', |
||||
|
width: 80, |
||||
|
templet: function (d) { |
||||
|
var str; |
||||
|
if (d.statusNo== "N") str='新設備'; |
||||
|
else if (d.statusNo== "B") str = '領用'; |
||||
|
else if (d.statusNo=="R")str='歸還'; |
||||
|
else if (d.statusNo=="F")str='送修'; |
||||
|
else if (d.statusNo=="S")str='報廢'; |
||||
|
return str |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
field: 'statusUserID', |
||||
|
templet: function (d) { |
||||
|
var str; |
||||
|
if (d.statusNo == "N") str = ''; |
||||
|
else if (d.statusNo == "B") str = '領用人員:' + d.statusUserID; |
||||
|
else if (d.statusNo == "R") str = '歸還人員:' + d.statusUserID; |
||||
|
else if (d.statusNo == "F") str = '送修人員:' + d.statusUserID; |
||||
|
else if (d.statusNo == "S") str = '報廢人員:' + d.statusUserID + ' 判定人員:' + d.confirmUserID; |
||||
|
return str |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
field: 'statusDate', |
||||
|
templet: function (d) { |
||||
|
var str; |
||||
|
if (d.statusNo == "N") str = ''; |
||||
|
else if (d.statusNo == "B") str = '預計歸還日期:' + d.statusDate; |
||||
|
else if (d.statusNo == "R") str = '實際歸還日期:' + d.statusDate; |
||||
|
else if (d.statusNo == "F") str = '送修日期:' + d.createDate + ' 預計歸還日期:' + d.statusDate; |
||||
|
else if (d.statusNo == "S") str = '報廢日期:' + d.statusDate; |
||||
|
return str |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
field: 'remark', |
||||
|
title: '備註' |
||||
|
|
||||
|
} |
||||
|
]]; |
||||
|
//基本数据表格 |
||||
|
var table; |
||||
|
$(function () { |
||||
|
tt(); |
||||
|
}); |
||||
|
function tt() { |
||||
|
//基本数据表格 |
||||
|
table = hg.table.datatable('sop', '設備狀態紀錄', '/JIG/GetOutfitStatusLogDtoByOutfitID?id=' + @ViewBag.OutfitID , {}, tableCols, false, 'full-100'); |
||||
|
}; |
||||
|
|
||||
|
$(document).ready(function () { |
||||
|
var error = '@Html.ValidationMessage("error")'; |
||||
|
if ($(error).text() != '') { |
||||
|
parent.hg.msg(error); |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
</script> |
||||
|
|
||||
|
|
||||
|
} |
||||
|
|
@ -0,0 +1,242 @@ |
|||||
|
@{ |
||||
|
ViewData["Title"] = "設備基本數據維護"; |
||||
|
Layout = "~/Views/Shared/_AMESLayout.cshtml"; |
||||
|
} |
||||
|
|
||||
|
<div class="layui-card"> |
||||
|
<div class="layui-card-header"> |
||||
|
<div class="layui-form"> |
||||
|
<div class="layui-form-item "> |
||||
|
<div class="layui-inline"><i class="fa fa-file-text-o fa-fw"></i> @ViewBag.Title</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-card-body"> |
||||
|
<div class="layui-form" style="margin-bottom:5px;"> |
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-inline" style="margin-right:5px;"> |
||||
|
<label class="layui-inline layui-form-label">種類歸屬</label> |
||||
|
<div class="layui-input-inline" style="width:90px"> |
||||
|
<select lay-filter="TypeFlag" name="TypeFlag" id="TypeFlag" style="width:90px"> |
||||
|
<option value="-99">全部</option> |
||||
|
<option value="0">設備</option> |
||||
|
<option value="1">料件</option> |
||||
|
</select> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-inline" style="margin-right:5px;"> |
||||
|
<label class="layui-inline layui-form-label">設備種類</label> |
||||
|
<div class="layui-input-inline" style="width:120px"> |
||||
|
<select lay-filter="Commodity" name="Commodity" id="Commodity" asp-items="@ViewBag.TypesList" style="width:120px"> |
||||
|
<option value="-99">全部</option> |
||||
|
</select> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-form-item"> |
||||
|
<div class="layui-inline" style="margin-right:5px;"> |
||||
|
<label class="layui-inline layui-form-label">管理編號</label> |
||||
|
<div class="layui-input-inline"> |
||||
|
<input type="text" name="QANo" id="QANo" placeholder="请输入管理編號" autocomplete="off" class="layui-input"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-inline" style="margin-right:5px;"> |
||||
|
<label class="layui-inline layui-form-label">是否有效</label> |
||||
|
<div class="layui-input-inline" style="width:80px"> |
||||
|
<select name="Status" id="Status" style="width:80px"> |
||||
|
<option value="*">全部</option> |
||||
|
<option value="A">有效</option> |
||||
|
<option value="S">無效</option> |
||||
|
</select> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="layui-inline" style="margin-left:0px;"> |
||||
|
<div class="layui-btn-group"> |
||||
|
<button class="layui-btn layui-btn-sm layui-btn-normal" id="querysubmit" lay-filter="querysubmit"> |
||||
|
<i class="layui-icon layui-icon-sm"></i> |
||||
|
</button> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<table class="layui-hide" id="test" lay-filter="test"></table> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
@section Scripts{ |
||||
|
<script type="text/javascript"> |
||||
|
var tableCols = [[ |
||||
|
{ |
||||
|
field: 'outfitID', |
||||
|
width: 80, |
||||
|
title: '#' |
||||
|
}, |
||||
|
{ |
||||
|
field: 'outfitNo', |
||||
|
title: '設備編碼' |
||||
|
}, |
||||
|
{ |
||||
|
field: 'qaNo', |
||||
|
title: '管理編號' |
||||
|
}, |
||||
|
{ |
||||
|
field: 'partNo', |
||||
|
title: '財產名稱' |
||||
|
}, |
||||
|
{ |
||||
|
field: 'statusNo', |
||||
|
title: '狀態', |
||||
|
templet: function (d) { |
||||
|
var btn ; |
||||
|
if (d.statusNo == "A") |
||||
|
btn = '有效'; |
||||
|
else |
||||
|
btn = '無效'; |
||||
|
return btn |
||||
|
//return '<a class="layui-btn layui-btn-normal 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>' |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
field: 'useStatusNo', |
||||
|
title: '狀態', |
||||
|
templet: function (d) { |
||||
|
var str; |
||||
|
if (d.useStatusNo == "B") |
||||
|
str = '領用'; |
||||
|
else if (d.useStatusNo == "N") |
||||
|
str = '新設備'; |
||||
|
else if (d.useStatusNo == "R") |
||||
|
str = '歸還'; |
||||
|
else if (d.useStatusNo == "S") |
||||
|
str = '報廢'; |
||||
|
else if (d.useStatusNo == "F") |
||||
|
str = '送修'; |
||||
|
return str |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
field: 'locationNo', |
||||
|
title: '儲位' |
||||
|
}, |
||||
|
{ |
||||
|
field: 'custodianName', |
||||
|
title: '保管人' |
||||
|
}, |
||||
|
{ |
||||
|
field: 'right', |
||||
|
width: 200, |
||||
|
title: '操作', |
||||
|
fixed: 'right', |
||||
|
templet: function (d) { |
||||
|
var btn = '<a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-edit" lay-event="view">檢視</a>'; |
||||
|
|
||||
|
if (d.statusNo == "A") { |
||||
|
if (d.useStatusNo == "N" || d.useStatusNo == "R") { |
||||
|
btn += ' <a class="layui-btn layui-btn-xs layui-icon layui-icon-edit" lay-event="fix">送修</a>'; |
||||
|
btn += ' <a class="layui-btn layui-btn-danger layui-btn-xs layui-icon layui-icon-edit" lay-event="del">報廢</a>'; |
||||
|
} |
||||
|
else |
||||
|
btn += ' <a class="layui-btn layui-btn-xs layui-icon layui-icon-edit" lay-event="re">歸還</a>'; |
||||
|
} |
||||
|
|
||||
|
return btn |
||||
|
} |
||||
|
}] |
||||
|
]; |
||||
|
|
||||
|
//通过行tool编辑,lay-event="del" |
||||
|
function del(obj) { |
||||
|
if (obj.data.outfitID) { |
||||
|
hg.open('設備', '/JIG/JIG006S/' + obj.data.outfitID, 640, 480); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
//通过行tool删除,lay-event="re" |
||||
|
function fix(obj) { |
||||
|
if (obj.data.outfitID) { |
||||
|
hg.open('設備送修', '/JIG/JIG006F/' + obj.data.outfitID, 640, 480); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
//通过行tool删除,lay-event="re" |
||||
|
function re(obj) { |
||||
|
if (obj.data.outfitID) { |
||||
|
hg.open('設備歸還', '/JIG/JIG005R/' + obj.data.outfitID, 640, 480); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
//通过行tool删除,lay-event="del" |
||||
|
function view(obj) { |
||||
|
if (obj.data.outfitID) { |
||||
|
hg.open('檢視設備基本資料', '/JIG/JIG005V/' + obj.data.outfitID, 720, 520); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
////搜索 |
||||
|
$('#querysubmit').click(function () { |
||||
|
|
||||
|
hg.msghide("刷新数据!"); |
||||
|
tt(); |
||||
|
|
||||
|
}); |
||||
|
|
||||
|
layui.use(['form', 'layer', 'laydate'], function () { |
||||
|
form = layui.form; |
||||
|
form.on('select(TypeFlag)', function (data) { |
||||
|
var data = $("#TypeFlag").val(); |
||||
|
console.info(data); |
||||
|
getCommodityByType(data); |
||||
|
}); |
||||
|
|
||||
|
}); |
||||
|
|
||||
|
function getCommodityByType(data) { |
||||
|
var TypeFlag = $("#TypeFlag").val(); |
||||
|
$.ajax({ |
||||
|
url: "/JIG/GetOutfitCommodityInfoesByQuery?TypeFlag=" + data + "&Status=A", |
||||
|
dataType: 'json', |
||||
|
//data: { id: data }, |
||||
|
contentType: "application/json", |
||||
|
type: 'get', |
||||
|
success: function (result) { |
||||
|
if (result.data) { |
||||
|
$("#Commodity").empty(); |
||||
|
var count = 0; |
||||
|
$('#Commodity').append(new Option("全部", "-99")); |
||||
|
$.each(result.data, function (index, item) { |
||||
|
$('#Commodity').append(new Option(item.commodityName, item.commodityID)); |
||||
|
count = count + 1; |
||||
|
}); |
||||
|
if (count == 0) { |
||||
|
$("#Commodity").empty(); |
||||
|
$('#Commodity').append(new Option("無選項", "")); |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
else { |
||||
|
$("#Commodity").empty(); |
||||
|
$('#Commodity').append(new Option("無選項", "")); |
||||
|
} |
||||
|
layui.form.render("select"); |
||||
|
} |
||||
|
}); |
||||
|
}; |
||||
|
////搜索 |
||||
|
$('#querysubmit').click(function () { |
||||
|
hg.msghide("刷新数据!"); |
||||
|
tt(); |
||||
|
}); |
||||
|
|
||||
|
var table; |
||||
|
$(function () { |
||||
|
tt(); |
||||
|
}); |
||||
|
//基本数据表格 |
||||
|
function tt() { |
||||
|
table = hg.table.datatable('test', '設備送修/領用', |
||||
|
'/JIG/GetOutfitInfoesByQuery?TypeFlag=' + $("#TypeFlag").val() + '&CommodityID=' + $("#Commodity").val() + '&VarityID=-99&Status=' + $("#Status").val() + '&QANo=' + $("#QANo").val() + '&PartNo=*&UseStatus=*' |
||||
|
, {}, tableCols, toolbar, true, 'full-100', ['filter', 'print', 'exports']); |
||||
|
} |
||||
|
|
||||
|
</script> |
||||
|
} |
@ -0,0 +1,118 @@ |
|||||
|
@model AMESCoreStudio.WebApi.Models.AMES.OutfitStatusLog |
||||
|
|
||||
|
|
||||
|
@{ ViewData["Title"] = "SPC006F"; |
||||
|
Layout = "~/Views/Shared/_FormLayout.cshtml"; } |
||||
|
|
||||
|
|
||||
|
<style> |
||||
|
.control-label { |
||||
|
justify-content: flex-end !important; |
||||
|
} |
||||
|
</style> |
||||
|
|
||||
|
<div class="row"> |
||||
|
<div class="col-sm-12"> |
||||
|
<form enctype="multipart/form-data" method="post" asp-action="JIG006FSave"> |
||||
|
<div asp-validation-summary="ModelOnly" class="text-danger"></div> |
||||
|
<input type="hidden" asp-for="OutfitLogID" value="0" /> |
||||
|
<input type="hidden" asp-for="OutfitID" value="@ViewBag.OutfitID" /> |
||||
|
<input type="hidden" asp-for="CreateUserID" value="@ViewBag.UserID" /> |
||||
|
<input type="hidden" asp-for="StatusNo" value="F" /> |
||||
|
<input type="hidden" asp-for="StatusQty" value="1" /> |
||||
|
|
||||
|
|
||||
|
<div class="form-group form-inline my-sm-1"> |
||||
|
<label class="control-label col-sm-3">管理編號</label> |
||||
|
<input value="@ViewBag.QANo" class="form-control col-sm-9" readonly /> |
||||
|
</div> |
||||
|
<div class="form-group form-inline my-sm-1"> |
||||
|
<label class="control-label col-sm-3">送修日期</label> |
||||
|
<input asp-for="CreateDate" class="form-control col-sm-9" value="@ViewBag.CreateDate" type="date" readonly /> |
||||
|
<span asp-validation-for="CreateDate" class="text-danger offset-sm-3 my-sm-1"></span> |
||||
|
</div> |
||||
|
<div class="form-group form-inline my-sm-1"> |
||||
|
<label class="control-label col-sm-3">部門</label> |
||||
|
<select id="Dept" asp-items="@ViewBag.DeptList" class="custom-select col-sm-9"> |
||||
|
<option value="">請選擇</option> |
||||
|
</select> |
||||
|
</div> |
||||
|
<div class="form-group form-inline my-sm-1"> |
||||
|
<label class="control-label col-sm-3">送修人員</label> |
||||
|
<select id="StatusUserID" asp-for="StatusUserID" asp-items="@ViewBag.UserList" class="custom-select col-sm-9"> |
||||
|
<option value="">請選擇</option> |
||||
|
</select> |
||||
|
<span asp-validation-for="StatusUserID" class="text-danger offset-sm-3 my-sm-1"></span> |
||||
|
</div> |
||||
|
<div class="form-group form-inline my-sm-1"> |
||||
|
<label class="control-label col-sm-3">預計歸還日期</label> |
||||
|
<input asp-for="StatusDate" type="date" class="form-control col-sm-9" /> |
||||
|
<span asp-validation-for="StatusDate" class="text-danger offset-sm-3 my-sm-1"></span> |
||||
|
</div> |
||||
|
<div class="form-group form-inline my-sm-1"> |
||||
|
<label asp-for="Remark" class="control-label col-sm-3"></label> |
||||
|
<input asp-for="Remark" class="form-control col-sm-9" /> |
||||
|
<span asp-validation-for="Remark" class="text-danger offset-sm-3 my-sm-1"></span> |
||||
|
</div> |
||||
|
<span style="color: firebrick;word-break: break-all;" class="text-danger offset-sm-3">@Html.ValidationMessage("error")</span> |
||||
|
<div class="form-group"> |
||||
|
<input type="submit" value="保存" class="btn btn-primary offset-sm-3" /> |
||||
|
</div> |
||||
|
|
||||
|
</form> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
@section Scripts { |
||||
|
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); |
||||
|
await Html.RenderPartialAsync("_FileinputScriptsPartial"); } |
||||
|
|
||||
|
<script type="text/javascript"> |
||||
|
$(document).ready(function () { |
||||
|
var error = '@Html.ValidationMessage("error")'; |
||||
|
if ($(error).text() != '') { |
||||
|
parent.hg.msg(error); |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
|
||||
|
$("#Dept").change(function () { |
||||
|
var data = $("#Dept").val(); |
||||
|
getUserInfoes(data); |
||||
|
}); |
||||
|
function getUserInfoes(data) { |
||||
|
$.ajax({ |
||||
|
url: "/SYS/GetUserInfoes", |
||||
|
dataType: 'json', |
||||
|
contentType: "application/json", |
||||
|
type: 'get', |
||||
|
success: function (result) { |
||||
|
if (result.data) { |
||||
|
$("#StatusUserID").empty(); |
||||
|
$('#StatusUserID').append(new Option("請選擇", "")); |
||||
|
var count = 0; |
||||
|
$.each(result.data, function (index, item) { |
||||
|
if (item.deptID == data) { |
||||
|
$('#StatusUserID').append(new Option(item.userName, item.userID)); |
||||
|
count = count + 1; |
||||
|
} |
||||
|
}); |
||||
|
if (count == 0) { |
||||
|
$("#StatusUserID").empty(); |
||||
|
$('#StatusUserID').append(new Option("無選項", "")); |
||||
|
} |
||||
|
} |
||||
|
else { |
||||
|
$("#StatusUserID").empty(); |
||||
|
$('#StatusUserID').append(new Option("無選項", "")); |
||||
|
} |
||||
|
layui.form.render("select"); |
||||
|
} |
||||
|
}); |
||||
|
}; |
||||
|
|
||||
|
</script> |
||||
|
|
||||
|
|
||||
|
} |
||||
|
|
@ -0,0 +1,167 @@ |
|||||
|
@model AMESCoreStudio.WebApi.Models.AMES.OutfitStatusLog |
||||
|
|
||||
|
|
||||
|
@{ ViewData["Title"] = "SPC006S"; |
||||
|
Layout = "~/Views/Shared/_FormLayout.cshtml"; } |
||||
|
|
||||
|
|
||||
|
<style> |
||||
|
.control-label { |
||||
|
justify-content: flex-end !important; |
||||
|
} |
||||
|
</style> |
||||
|
|
||||
|
<div class="row"> |
||||
|
<div class="col-sm-12"> |
||||
|
<form enctype="multipart/form-data" method="post" asp-action="JIG006SSave"> |
||||
|
<div asp-validation-summary="ModelOnly" class="text-danger"></div> |
||||
|
<input type="hidden" asp-for="OutfitLogID" value="0" /> |
||||
|
<input type="hidden" asp-for="OutfitID" value="@ViewBag.OutfitID" /> |
||||
|
<input type="hidden" asp-for="CreateUserID" value="@ViewBag.UserID" /> |
||||
|
<input type="hidden" asp-for="CreateDate" value="@System.DateTime.Now" /> |
||||
|
<input type="hidden" asp-for="StatusNo" value="S" /> |
||||
|
<input type="hidden" asp-for="StatusQty" value="1" /> |
||||
|
|
||||
|
|
||||
|
<div class="form-group form-inline my-sm-1"> |
||||
|
<label class="control-label col-sm-3">管理編號</label> |
||||
|
<input value="@ViewBag.QANo" class="form-control col-sm-9" readonly /> |
||||
|
</div> |
||||
|
<div class="form-group form-inline my-sm-1"> |
||||
|
<label class="control-label col-sm-3">部門</label> |
||||
|
<select id="Dept" asp-items="@ViewBag.DeptList" class="custom-select col-sm-9"> |
||||
|
<option value="">請選擇</option> |
||||
|
</select> |
||||
|
</div> |
||||
|
<div class="form-group form-inline my-sm-1"> |
||||
|
<label class="control-label col-sm-3">報廢人員</label> |
||||
|
<select id="StatusUserID" asp-for="StatusUserID" asp-items="@ViewBag.UserList" class="custom-select col-sm-9"> |
||||
|
<option value="">請選擇</option> |
||||
|
</select> |
||||
|
<span asp-validation-for="StatusUserID" class="text-danger offset-sm-3 my-sm-1"></span> |
||||
|
</div>ConfirmUserID |
||||
|
<div class="form-group form-inline my-sm-1"> |
||||
|
<label class="control-label col-sm-3">報廢日期</label> |
||||
|
<input asp-for="StatusDate" value="@ViewBag.StatusDate" type="date" class="form-control col-sm-9" readonly /> |
||||
|
<span asp-validation-for="StatusDate" class="text-danger offset-sm-3 my-sm-1"></span> |
||||
|
</div> |
||||
|
<div class="form-group form-inline my-sm-1"> |
||||
|
<label class="control-label col-sm-3">判定部門</label> |
||||
|
<select id="pDept" asp-items="@ViewBag.DeptList" class="custom-select col-sm-9"> |
||||
|
<option value="">請選擇</option> |
||||
|
</select> |
||||
|
</div> |
||||
|
<div class="form-group form-inline my-sm-1"> |
||||
|
<label class="control-label col-sm-3">判定人員</label> |
||||
|
<select id="ConfirmUserID" asp-for="ConfirmUserID" asp-items="@ViewBag.UserList" class="custom-select col-sm-9"> |
||||
|
<option value="">請選擇</option> |
||||
|
</select> |
||||
|
<span asp-validation-for="ConfirmUserID" class="text-danger offset-sm-3 my-sm-1"></span> |
||||
|
</div> |
||||
|
<div class="form-group form-inline my-sm-1"> |
||||
|
<label asp-for="Duty" class="control-label col-sm-3"></label> |
||||
|
<input asp-for="Duty" class="form-control col-sm-9" /> |
||||
|
<span asp-validation-for="Duty" class="text-danger offset-sm-3 my-sm-1"></span> |
||||
|
</div> |
||||
|
<div class="form-group form-inline my-sm-1"> |
||||
|
<label asp-for="Remark" class="control-label col-sm-3"></label> |
||||
|
<input asp-for="Remark" class="form-control col-sm-9" /> |
||||
|
<span asp-validation-for="Remark" class="text-danger offset-sm-3 my-sm-1"></span> |
||||
|
</div> |
||||
|
<span style="color: firebrick;word-break: break-all;" class="text-danger offset-sm-3">@Html.ValidationMessage("error")</span> |
||||
|
<div class="form-group"> |
||||
|
<input type="submit" value="保存" class="btn btn-primary offset-sm-3" /> |
||||
|
</div> |
||||
|
|
||||
|
</form> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
@section Scripts { |
||||
|
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); |
||||
|
await Html.RenderPartialAsync("_FileinputScriptsPartial"); } |
||||
|
|
||||
|
<script type="text/javascript"> |
||||
|
$(document).ready(function () { |
||||
|
var error = '@Html.ValidationMessage("error")'; |
||||
|
if ($(error).text() != '') { |
||||
|
parent.hg.msg(error); |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
|
||||
|
$("#Dept").change(function () { |
||||
|
var data = $("#Dept").val(); |
||||
|
getUserInfoes(data); |
||||
|
}); |
||||
|
function getUserInfoes(data) { |
||||
|
$.ajax({ |
||||
|
url: "/SYS/GetUserInfoes", |
||||
|
dataType: 'json', |
||||
|
contentType: "application/json", |
||||
|
type: 'get', |
||||
|
success: function (result) { |
||||
|
if (result.data) { |
||||
|
$("#StatusUserID").empty(); |
||||
|
$('#StatusUserID').append(new Option("請選擇", "")); |
||||
|
var count = 0; |
||||
|
$.each(result.data, function (index, item) { |
||||
|
if (item.deptID == data) { |
||||
|
$('#StatusUserID').append(new Option(item.userName, item.userID)); |
||||
|
count = count + 1; |
||||
|
} |
||||
|
}); |
||||
|
if (count == 0) { |
||||
|
$("#StatusUserID").empty(); |
||||
|
$('#StatusUserID').append(new Option("無選項", "")); |
||||
|
} |
||||
|
} |
||||
|
else { |
||||
|
$("#StatusUserID").empty(); |
||||
|
$('#StatusUserID').append(new Option("無選項", "")); |
||||
|
} |
||||
|
layui.form.render("select"); |
||||
|
} |
||||
|
}); |
||||
|
}; |
||||
|
|
||||
|
$("#pDept").change(function () { |
||||
|
var data = $("#pDept").val(); |
||||
|
getCUserInfoes(data); |
||||
|
}); |
||||
|
function getCUserInfoes(data) { |
||||
|
$.ajax({ |
||||
|
url: "/SYS/GetUserInfoes", |
||||
|
dataType: 'json', |
||||
|
contentType: "application/json", |
||||
|
type: 'get', |
||||
|
success: function (result) { |
||||
|
if (result.data) { |
||||
|
$("#ConfirmUserID").empty(); |
||||
|
$('#ConfirmUserID').append(new Option("請選擇", "")); |
||||
|
var count = 0; |
||||
|
$.each(result.data, function (index, item) { |
||||
|
if (item.deptID == data) { |
||||
|
$('#ConfirmUserID').append(new Option(item.userName, item.userID)); |
||||
|
count = count + 1; |
||||
|
} |
||||
|
}); |
||||
|
if (count == 0) { |
||||
|
$("#ConfirmUserID").empty(); |
||||
|
$('#ConfirmUserID').append(new Option("無選項", "")); |
||||
|
} |
||||
|
} |
||||
|
else { |
||||
|
$("#ConfirmUserID").empty(); |
||||
|
$('#ConfirmUserID').append(new Option("無選項", "")); |
||||
|
} |
||||
|
layui.form.render("select"); |
||||
|
} |
||||
|
}); |
||||
|
}; |
||||
|
|
||||
|
</script> |
||||
|
|
||||
|
|
||||
|
} |
||||
|
|
@ -0,0 +1,261 @@ |
|||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Linq; |
||||
|
using System.Threading.Tasks; |
||||
|
using Microsoft.AspNetCore.Http; |
||||
|
using Microsoft.AspNetCore.Mvc; |
||||
|
using Microsoft.EntityFrameworkCore; |
||||
|
using AMESCoreStudio.WebApi; |
||||
|
using AMESCoreStudio.WebApi.Models.AMES; |
||||
|
using AMESCoreStudio.CommonTools.Result; |
||||
|
using AMESCoreStudio.WebApi.DTO.AMES; |
||||
|
|
||||
|
namespace AMESCoreStudio.WebApi.Controllers.AMES |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// 設備狀態紀錄維護
|
||||
|
/// </summary>
|
||||
|
[Route("api/[controller]")]
|
||||
|
[ApiController] |
||||
|
public class OutfitStatusLogsController : ControllerBase |
||||
|
{ |
||||
|
private readonly AMESContext _context; |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 設備狀態紀錄維護
|
||||
|
/// </summary>
|
||||
|
/// <param name="context"></param>
|
||||
|
public OutfitStatusLogsController(AMESContext context) |
||||
|
{ |
||||
|
_context = context; |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
///
|
||||
|
/// </summary>
|
||||
|
/// <returns></returns>
|
||||
|
// GET: api/OutfitStatusLogs
|
||||
|
[HttpGet] |
||||
|
public async Task<ActionResult<IEnumerable<OutfitStatusLog>>> GetOutfitStatusLog() |
||||
|
{ |
||||
|
IQueryable<OutfitStatusLog> q = _context.OutfitStatusLogs; |
||||
|
|
||||
|
q = q.OrderBy(p => p.OutfitLogID); |
||||
|
|
||||
|
var OutfitStatusLog = await q.ToListAsync(); |
||||
|
|
||||
|
return OutfitStatusLog; |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
///
|
||||
|
/// </summary>
|
||||
|
/// <param name="id"></param>
|
||||
|
/// <returns></returns>
|
||||
|
// GET: api/OutfitStatusLogs/5
|
||||
|
[HttpGet("{id}")] |
||||
|
public async Task<ActionResult<IEnumerable<OutfitStatusLog>>> GetOutfitStatusLog(int id) |
||||
|
{ |
||||
|
IQueryable<OutfitStatusLog> q = _context.OutfitStatusLogs; |
||||
|
q = q.Where(p => p.OutfitLogID.Equals(id)); |
||||
|
|
||||
|
var OutfitStatusLog = await q.ToListAsync(); |
||||
|
|
||||
|
if (OutfitStatusLog == null) |
||||
|
{ |
||||
|
return NotFound(); |
||||
|
} |
||||
|
|
||||
|
return OutfitStatusLog; |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
///
|
||||
|
/// </summary>
|
||||
|
/// <param name="id"></param>
|
||||
|
/// <returns></returns>
|
||||
|
// GET: api/OutfitStatusLogs/5
|
||||
|
[HttpGet("Outfit/{id}")] |
||||
|
public async Task<ActionResult<IEnumerable<OutfitStatusLog>>> GetOutfitStatusLogByOutfitID(int id) |
||||
|
{ |
||||
|
IQueryable<OutfitStatusLog> q = _context.OutfitStatusLogs; |
||||
|
q = q.Where(p => p.OutfitID.Equals(id)); |
||||
|
|
||||
|
var OutfitStatusLog = await q.ToListAsync(); |
||||
|
|
||||
|
if (OutfitStatusLog == null) |
||||
|
{ |
||||
|
return NotFound(); |
||||
|
} |
||||
|
|
||||
|
return OutfitStatusLog; |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
///
|
||||
|
/// </summary>
|
||||
|
/// <param name="id"></param>
|
||||
|
/// <returns></returns>
|
||||
|
// GET: api/OutfitStatusLogs/5
|
||||
|
[HttpGet("OutfitDto/{id}")] |
||||
|
public async Task<ActionResult<IEnumerable<OutfitStatusLogDto>>> GetOutfitStatusLogDtoByOutfitID(int id) |
||||
|
{ |
||||
|
IQueryable<OutfitStatusLog> q = _context.OutfitStatusLogs; |
||||
|
q = q.Where(p => p.OutfitID.Equals(id)); |
||||
|
|
||||
|
var OutfitStatusLog = await q.ToListAsync(); |
||||
|
|
||||
|
if (OutfitStatusLog == null) |
||||
|
{ |
||||
|
return NotFound(); |
||||
|
} |
||||
|
|
||||
|
var outfitStatusLogDtos = await q.Select(s => new OutfitStatusLogDto |
||||
|
{ |
||||
|
OutfitID = _context.OutfitInfoes.Where(p1 => p1.OutfitID.Equals(s.OutfitID)).FirstOrDefault().QANo, |
||||
|
OutfitLogID = s.OutfitLogID, |
||||
|
CreateUserID = _context.UserInfoes.Where(p1 => p1.UserID.Equals(s.CreateUserID)).FirstOrDefault().UserName, |
||||
|
ConfirmUserID = _context.UserInfoes.Where(p1 => p1.UserID.Equals(s.ConfirmUserID)).FirstOrDefault().UserName, |
||||
|
StatusUserID = _context.UserInfoes.Where(p1 => p1.UserID.Equals(s.StatusUserID)).FirstOrDefault().UserName, |
||||
|
StatusDate = s.StatusDate.ToString("yyyy-MM-dd"), |
||||
|
Duty = s.Duty, |
||||
|
WipNo = s.WipNo, |
||||
|
StatusNo = s.StatusNo, |
||||
|
Remark = s.Remark, |
||||
|
CreateDate = s.CreateDate.ToString("yyyy-MM-dd") |
||||
|
}).ToListAsync(); |
||||
|
|
||||
|
return outfitStatusLogDtos; |
||||
|
|
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
///
|
||||
|
/// </summary>
|
||||
|
/// <param name="id"></param>
|
||||
|
/// <param name="OutfitStatusLog"></param>
|
||||
|
/// <returns></returns>
|
||||
|
// PUT: api/OutfitStatusLogs/5
|
||||
|
// To protect from overposting attacks, enable the specific properties you want to bind to, for
|
||||
|
// more details, see https://go.microsoft.com/fwlink/?linkid=2123754.
|
||||
|
[HttpPut("{id}")] |
||||
|
public async Task<ResultModel<OutfitStatusLog>> PutOutfitStatusLog(int id, [FromBody] OutfitStatusLog OutfitStatusLog) |
||||
|
{ |
||||
|
ResultModel<OutfitStatusLog> result = new ResultModel<OutfitStatusLog>(); |
||||
|
if (id != OutfitStatusLog.OutfitLogID) |
||||
|
{ |
||||
|
result.Success = false; |
||||
|
result.Msg = "序號錯誤"; |
||||
|
return result; |
||||
|
} |
||||
|
|
||||
|
_context.Entry(OutfitStatusLog).State = EntityState.Modified; |
||||
|
|
||||
|
try |
||||
|
{ |
||||
|
await _context.SaveChangesAsync(); |
||||
|
} |
||||
|
catch (Exception ex) |
||||
|
{ |
||||
|
|
||||
|
result.Success = false; |
||||
|
result.Msg = ex.Message; |
||||
|
return result; |
||||
|
|
||||
|
} |
||||
|
|
||||
|
result.Success = true; |
||||
|
result.Msg = "OK"; |
||||
|
return result; |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 新增资料
|
||||
|
/// </summary>
|
||||
|
/// <param name="OutfitStatusLog"></param>
|
||||
|
/// <returns></returns>
|
||||
|
// POST: api/OutfitStatusLogs
|
||||
|
// To protect from overposting attacks, enable the specific properties you want to bind to, for
|
||||
|
// more details, see https://go.microsoft.com/fwlink/?linkid=2123754.
|
||||
|
[HttpPost] |
||||
|
public async Task<ResultModel<OutfitStatusLog>> PostOutfitStatusLog(OutfitStatusLog OutfitStatusLog) |
||||
|
{ |
||||
|
ResultModel<OutfitStatusLog> result = new ResultModel<OutfitStatusLog>(); |
||||
|
Helper helper = new Helper(_context); |
||||
|
OutfitStatusLog.OutfitLogID = helper.GetIDKey("OUTFITLOG_ID").Result; |
||||
|
|
||||
|
_context.OutfitStatusLogs.Add(OutfitStatusLog); |
||||
|
|
||||
|
try |
||||
|
{ |
||||
|
await _context.SaveChangesAsync(); |
||||
|
} |
||||
|
catch (Exception ex) |
||||
|
{ |
||||
|
|
||||
|
result.Success = false; |
||||
|
result.Msg = ex.Message; |
||||
|
return result; |
||||
|
|
||||
|
} |
||||
|
|
||||
|
result.Success = true; |
||||
|
result.Msg = "OK"; |
||||
|
return result; |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
///
|
||||
|
/// </summary>
|
||||
|
/// <param name="id"></param>
|
||||
|
/// <returns></returns>
|
||||
|
// DELETE: api/OutfitStatusLogs/5
|
||||
|
[HttpDelete("{id}")] |
||||
|
public async Task<ResultModel<OutfitStatusLog>> DeleteOutfitStatusLog(int id) |
||||
|
{ |
||||
|
ResultModel<OutfitStatusLog> result = new ResultModel<OutfitStatusLog>(); |
||||
|
var OutfitStatusLog = await _context.OutfitStatusLogs.Where(p => p.OutfitLogID == id).FirstOrDefaultAsync(); |
||||
|
if (OutfitStatusLog == null) |
||||
|
{ |
||||
|
result.Success = false; |
||||
|
result.Msg = "序號錯誤"; |
||||
|
return result; |
||||
|
} |
||||
|
|
||||
|
//_context.OutfitStatusLogs.Remove(OutfitStatusLog);
|
||||
|
|
||||
|
OutfitStatusLog newOutfitStatusLog = new OutfitStatusLog(); |
||||
|
newOutfitStatusLog = OutfitStatusLog; |
||||
|
|
||||
|
if (OutfitStatusLog.StatusNo == "A") |
||||
|
newOutfitStatusLog.StatusNo = "S"; |
||||
|
else |
||||
|
newOutfitStatusLog.StatusNo = "A"; |
||||
|
|
||||
|
_context.Entry(newOutfitStatusLog).State = EntityState.Modified; |
||||
|
|
||||
|
try |
||||
|
{ |
||||
|
await _context.SaveChangesAsync(); |
||||
|
} |
||||
|
catch (Exception ex) |
||||
|
{ |
||||
|
|
||||
|
result.Success = false; |
||||
|
result.Msg = ex.Message; |
||||
|
return result; |
||||
|
|
||||
|
} |
||||
|
|
||||
|
result.Success = true; |
||||
|
result.Msg = "OK"; |
||||
|
return result; |
||||
|
|
||||
|
} |
||||
|
|
||||
|
private bool OutfitStatusLogExists(int id) |
||||
|
{ |
||||
|
return _context.OutfitStatusLogs.Any(e => e.OutfitLogID == id); |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,86 @@ |
|||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Linq; |
||||
|
using System.Threading.Tasks; |
||||
|
|
||||
|
namespace AMESCoreStudio.WebApi.DTO.AMES |
||||
|
{ |
||||
|
public class OutfitStatusLogDtos |
||||
|
{ |
||||
|
public List<OutfitStatusLogDto> outfitStatusLogDtos { get; set; } |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// MaterialKpDtp Select Dto
|
||||
|
/// </summary>
|
||||
|
public class OutfitStatusLogDto |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// 料號KP_ID
|
||||
|
/// </summary>
|
||||
|
|
||||
|
public int OutfitLogID { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 料號Name
|
||||
|
/// </summary>
|
||||
|
|
||||
|
public string OutfitID { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// KP料號名稱
|
||||
|
/// </summary>
|
||||
|
|
||||
|
public string StatusNo { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// KP料號NO
|
||||
|
/// </summary>
|
||||
|
|
||||
|
public string StatusUserID { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// KP料號NO
|
||||
|
/// </summary>
|
||||
|
|
||||
|
public string StatusDate { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// KP料號NO
|
||||
|
/// </summary>
|
||||
|
|
||||
|
public string Remark { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 前置碼
|
||||
|
/// </summary>
|
||||
|
|
||||
|
public string ConfirmUserID { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 站(前段)
|
||||
|
/// </summary>
|
||||
|
|
||||
|
public string Duty { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 創建者ID
|
||||
|
/// </summary>
|
||||
|
|
||||
|
public string CreateUserID { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 創建日期
|
||||
|
/// </summary>
|
||||
|
|
||||
|
public string WipNo { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 創建者ID
|
||||
|
/// </summary>
|
||||
|
|
||||
|
public string CreateDate { get; set; } |
||||
|
|
||||
|
|
||||
|
} |
||||
|
} |
@ -0,0 +1,143 @@ |
|||||
|
using System; |
||||
|
using System.ComponentModel.DataAnnotations; |
||||
|
using System.ComponentModel.DataAnnotations.Schema; |
||||
|
using System.Runtime.Serialization; |
||||
|
using AMESCoreStudio.WebApi.Models.SYS; |
||||
|
|
||||
|
#nullable disable |
||||
|
|
||||
|
namespace AMESCoreStudio.WebApi.Models.AMES |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// 設備記錄檔
|
||||
|
/// </summary>
|
||||
|
|
||||
|
[Table("OUTFIT_STATUS_LOG", Schema = "JHAMES")] |
||||
|
public partial class OutfitStatusLog |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// 設備狀態ID
|
||||
|
/// </summary>
|
||||
|
[Key] |
||||
|
[Column("OUTFIT_LOG_ID")] |
||||
|
[DataMember] |
||||
|
[Required] |
||||
|
public int OutfitLogID { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 設備ID
|
||||
|
/// </summary>
|
||||
|
[Column("OUTFIT_ID")] |
||||
|
[DataMember] |
||||
|
[Required] |
||||
|
[Display(Name = "使用設備")] |
||||
|
public int OutfitID { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 設備狀態
|
||||
|
/// </summary>
|
||||
|
[Column("STATUS_NO")] |
||||
|
[StringLength(2)] |
||||
|
[DataMember] |
||||
|
[Required] |
||||
|
[Display(Name = "設備狀態")] |
||||
|
public string StatusNo { get; set; }//
|
||||
|
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 狀態人工號
|
||||
|
/// </summary>
|
||||
|
[Column("STATUS_USERID")] |
||||
|
[DataMember] |
||||
|
[Required] |
||||
|
[Display(Name = "狀態人工號")] |
||||
|
public int StatusUserID { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 狀態預計日期(送修/領用)
|
||||
|
/// </summary>
|
||||
|
[Column("STATUS_DATE")] |
||||
|
[DataMember] |
||||
|
[Required] |
||||
|
[Display(Name = "狀態預計日期")] |
||||
|
public DateTime StatusDate { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 備註
|
||||
|
/// </summary>
|
||||
|
[Column("REMARK")] |
||||
|
[StringLength(50)] |
||||
|
[DataMember] |
||||
|
[Display(Name = "備註")] |
||||
|
public string Remark { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 判定者
|
||||
|
/// </summary>
|
||||
|
[Column("CONFIRM_USERID")] |
||||
|
[DataMember] |
||||
|
[Display(Name = "判定者")] |
||||
|
public int ConfirmUserID { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 責任人/製程
|
||||
|
/// </summary>
|
||||
|
[Column("DUTY")] |
||||
|
[StringLength(300)] |
||||
|
[DataMember] |
||||
|
[Display(Name = "責任人/製程")] |
||||
|
public string Duty { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 原因
|
||||
|
/// </summary>
|
||||
|
[Column("REASON")] |
||||
|
[StringLength(100)] |
||||
|
[DataMember] |
||||
|
[Display(Name = "原因")] |
||||
|
public string Reason { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 狀態數量
|
||||
|
/// </summary>
|
||||
|
[Column("STATUS_QTY")] |
||||
|
[DataMember] |
||||
|
[Display(Name = "數量")] |
||||
|
public decimal StatusQty { get; set; } = 1; |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 工單
|
||||
|
/// </summary>
|
||||
|
[Column("WIP_NO")] |
||||
|
[StringLength(100)] |
||||
|
[DataMember] |
||||
|
[Display(Name = "工單")] |
||||
|
public string WipNo { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 創建者ID
|
||||
|
/// </summary>
|
||||
|
[Column("CREATE_USERID")] |
||||
|
[DataMember] |
||||
|
public int CreateUserID { get; set; } = 0; |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 創建日期
|
||||
|
/// </summary>
|
||||
|
[Column("CREATE_DATE")] |
||||
|
[DataMember] |
||||
|
public DateTime CreateDate { get; set; } = System.DateTime.Now; |
||||
|
|
||||
|
/// <summary>
|
||||
|
///
|
||||
|
/// </summary>
|
||||
|
//[ForeignKey("StatusUserID")]
|
||||
|
//public virtual UserInfo StatusUser { get; set; }
|
||||
|
//
|
||||
|
/// <summary>
|
||||
|
///
|
||||
|
/// </summary>
|
||||
|
//[ForeignKey("ConfirmUserID")]
|
||||
|
//public virtual UserInfo ConfirmUser { get; set; }
|
||||
|
} |
||||
|
} |
Loading…
Reference in new issue