You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
278 lines
11 KiB
278 lines
11 KiB
@using Microsoft.AspNetCore.Mvc.Localization
|
|
@inject IViewLocalizer Localizer
|
|
|
|
@{
|
|
ViewData["Title"] = @Localizer["PCS002"];
|
|
Layout = "~/Views/Shared/_AMESLayout.cshtml";
|
|
}
|
|
|
|
<style>
|
|
/* 停用工單行樣式 */
|
|
.layui-table-view[lay-id="query"] .layui-table-main table tbody tr.layui-table-gray-row,
|
|
.layui-table-view[lay-id="query"] .layui-table-main table tbody tr.layui-table-gray-row td,
|
|
.layui-table-view[lay-id="query"] .layui-table-main table tbody tr.layui-table-gray-row .layui-table-cell,
|
|
.layui-table-view[lay-id="query"] .layui-table-fixed table tbody tr.layui-table-gray-row,
|
|
.layui-table-view[lay-id="query"] .layui-table-fixed table tbody tr.layui-table-gray-row td,
|
|
.layui-table-view[lay-id="query"] .layui-table-fixed table tbody tr.layui-table-gray-row .layui-table-cell {
|
|
background-color: #e4e4e4 !important;
|
|
color: #11151a !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>
|
|
</div>
|
|
</div>
|
|
<div class="layui-card-body">
|
|
<div class="layui-form">
|
|
<div class="layui-row">
|
|
<div class="layui-form-item">
|
|
<div class="layui-col-sm4">
|
|
<div class="layui-inline">
|
|
<label class="layui-form-label">@Localizer["WipNo"]:</label>
|
|
<div class="layui-input-inline" style="width:150px">
|
|
<input id="wipNo" name="wipNo" oninput="let p=this.selectionStart;this.value=this.value.toUpperCase();this.setSelectionRange(p, p);" autocomplete="off" class="layui-input">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="layui-col-sm4">
|
|
<div class="layui-inline">
|
|
<label class="layui-form-label">@Localizer["ItemNo"]:</label>
|
|
<div class="layui-input-inline" style="width:150px">
|
|
<input id="itemNo" name="itemNo" oninput="let p=this.selectionStart;this.value=this.value.toUpperCase();this.setSelectionRange(p, p);" autocomplete="off" class="layui-input">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="layui-col-sm4">
|
|
<div class="layui-inline">
|
|
<label class="layui-form-label">@Localizer["UnitNo"]:</label>
|
|
<div class="layui-input-inline" style="width:150px">
|
|
<select id="unit" lay-filter="unit" name="unit" lay-submit asp-items="@ViewBag.FactoryUnitList">
|
|
</select>
|
|
<input id="unitNo" type="hidden" name="unitNo" value="@ViewBag.UnitNo" />
|
|
</div>
|
|
<button class="layui-btn layui-btn-sm layui-btn-normal" lay-submit lay-filter="querysubmit">
|
|
<i class="layui-icon layui-icon-sm"></i>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<table class="layui-hide" id="query" lay-filter="query"></table>
|
|
</div>
|
|
</div>
|
|
|
|
@section Scripts{
|
|
<script type="text/javascript">
|
|
layui.use(['table', 'form'], function () {
|
|
var form = layui.form;
|
|
|
|
form.on('select(unit)', function (data) {
|
|
$("#unitNo").val(data.value);
|
|
var qs = $('button[lay-filter="querysubmit"]');
|
|
qs.click();
|
|
});
|
|
|
|
var table = layui.table;
|
|
|
|
});
|
|
|
|
//监听表单提交事件
|
|
hg.form.onsubmit('querysubmit', function (data) {
|
|
table && table.reload(data);
|
|
});
|
|
var tableCols = [[
|
|
{
|
|
field: 'wipNo',
|
|
width: 100,
|
|
title: '@Localizer["WipNo"]',
|
|
sort: true
|
|
},
|
|
{
|
|
field: 'itemNo',
|
|
title: '@Localizer["ItemNo"]',
|
|
width: 150,
|
|
sort: true,
|
|
expandedMode: 'tips'
|
|
},
|
|
{
|
|
field: 'description',
|
|
title: '@Localizer["WipDescription"]',
|
|
width: 100,
|
|
expandedMode: 'tips'
|
|
},
|
|
{
|
|
field: 'planQTY',
|
|
title: '@Localizer["PlanQty"]'
|
|
},
|
|
{
|
|
field: 'lineDesc',
|
|
title: '@Localizer["Lineid"]',
|
|
sort: true
|
|
},
|
|
{
|
|
field: 'unitName',
|
|
title: '@Localizer["UnitNo"]',
|
|
width: 100,
|
|
sort: true
|
|
},
|
|
{
|
|
field: 'factoryNameCh',
|
|
title: '@Localizer["Werks"]',
|
|
sort: true
|
|
},
|
|
{
|
|
field: 'wipScheduleDate',
|
|
title: '@Localizer["WipScheduleDate"]',
|
|
sort: true,
|
|
templet: '<div>{{ layui.util.toDateString(d.wipScheduleDate, "yyyy/MM/dd") }}</div>'
|
|
},
|
|
{
|
|
field: 'workDate',
|
|
title: '@Localizer["StartDate"]',
|
|
sort: true
|
|
},
|
|
{
|
|
field: 'wipDueDate',
|
|
title: '@Localizer["WipDueDate"]',
|
|
sort: true,
|
|
templet: '<div>{{ layui.util.toDateString(d.wipDueDate, "yyyy/MM/dd") }}</div>'
|
|
},
|
|
{
|
|
field: 'wipCheck',
|
|
title: '@Localizer["SendNotification"]'
|
|
},
|
|
{
|
|
field: 'fqcDate',
|
|
title: '@Localizer["FQCDate"]'
|
|
},
|
|
{
|
|
field: 'statusNo',
|
|
title: '狀態',
|
|
hide: true
|
|
},
|
|
{
|
|
field: 'right',
|
|
width: 200,
|
|
title: '@Localizer["Action"]',
|
|
fixed: 'right',
|
|
templet: function (d) {
|
|
var editBtn = '';
|
|
var detailBtn = '<a class="layui-btn layui-btn-warm layui-icon layui-icon-list layui-btn-xs" lay-event="detail">@Localizer["View"]</a>';
|
|
var toggleBtn = '';
|
|
|
|
// 狀態為停用(D)時隱藏修改按鈕
|
|
if (d.statusNo !== 'D') {
|
|
editBtn = '<a class="layui-btn layui-btn-xs layui-icon layui-icon-edit" lay-event="edit">@Localizer["Edit"]</a> ';
|
|
} else {
|
|
// 如果是停用狀態,嘗試設置整行樣式
|
|
setTimeout(function() {
|
|
var index = d.LAY_TABLE_INDEX;
|
|
// 同時套用到主表格與固定欄位的行
|
|
$('.layui-table-view[lay-id="query"] tr[data-index="' + index + '"]').addClass('layui-table-gray-row');
|
|
}, 100);
|
|
}
|
|
|
|
if (d.statusNo === 'D') {
|
|
// 狀態為 D(停用)時顯示啟用按鈕
|
|
toggleBtn = '<a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-play" lay-event="enable">啟用</a>';
|
|
} else if (d.statusNo === 'A' || d.statusNo === 'N' || d.statusNo === 'S') {
|
|
// 狀態為 A、N 或 S 時顯示停用按鈕
|
|
toggleBtn = '<a class="layui-btn layui-btn-danger layui-btn-xs layui-icon layui-icon-pause" lay-event="disable">停用</a>';
|
|
}
|
|
return editBtn + detailBtn + ' ' + toggleBtn;
|
|
}
|
|
}
|
|
]
|
|
];
|
|
|
|
//通过行tool編輯,lay-event="edit"
|
|
function edit(obj) {
|
|
if (obj.data.wipID) {
|
|
hg.open('@Localizer["PCS002"]', '/PCS/PCS003/' + obj.data.wipID, '', '', true);
|
|
}
|
|
}
|
|
|
|
function del(obj) {
|
|
hg.confirm("確定要刪除工單號碼【" + obj.data.wipNo + "】嗎?", function () {
|
|
$.ajax({
|
|
url: '/PCS/PCS005D',
|
|
data: { id: obj.data.wipID },
|
|
type: 'POST',
|
|
success: function (data) {
|
|
if (data.success) {
|
|
hg.msghide('@Localizer["DeleteOk"]');
|
|
var qs = $('button[lay-filter="querysubmit"]');
|
|
qs.click();
|
|
}
|
|
else {
|
|
hg.msg(data.msg);
|
|
}
|
|
},
|
|
error: function () {
|
|
hg.msg("網路請求失敗!");
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
//通过行tool檢視,lay-event="detail"
|
|
function detail(obj) {
|
|
if (obj.data.wipID) {
|
|
hg.open('@Localizer["PCS001R"]', '/PCS/PCS001R/' + obj.data.wipID, '', '', true);
|
|
}
|
|
}
|
|
|
|
// 停用/啟用工單
|
|
function toggleStatus(obj, targetStatus) {
|
|
var action = targetStatus === 'D' ? '停用' : '啟用';
|
|
var confirmMsg = '確定要' + action + '工單號碼【' + obj.data.wipNo + '】嗎?';
|
|
|
|
hg.confirm(confirmMsg, function () {
|
|
$.ajax({
|
|
url: '/PCS/PCS002ToggleStatus',
|
|
data: {
|
|
wipID: obj.data.wipID,
|
|
currentStatus: obj.data.statusNo,
|
|
targetStatus: targetStatus
|
|
},
|
|
type: 'POST',
|
|
success: function (data) {
|
|
if (data.success) {
|
|
hg.msghide(action + '成功!');
|
|
// 重新載入表格
|
|
layui.use('table', function () {
|
|
var table = layui.table;
|
|
table.reload('query');
|
|
});
|
|
}
|
|
else {
|
|
hg.msg(data.msg);
|
|
}
|
|
},
|
|
error: function () {
|
|
hg.msg("網路請求失敗!");
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
//通过行tool停用,lay-event="disable"
|
|
function disable(obj) {
|
|
toggleStatus(obj, 'D');
|
|
}
|
|
|
|
//通过行tool啟用,lay-event="enable"
|
|
function enable(obj) {
|
|
toggleStatus(obj, 'N');
|
|
}
|
|
|
|
//基本資料表格
|
|
var table = hg.table.datatable('query', '工單資料修改', '/PCS/PCS002Query/' + unitNo.value, {}, tableCols, {}, true, 'full-100', ['filter', 'print', 'exports']);
|
|
</script>
|
|
}
|