initial add

This commit is contained in:
Jonathan Ouellette
2022-09-27 14:10:30 -07:00
parent 91fd8a50a9
commit 580e90f6a2
3941 changed files with 954648 additions and 19 deletions

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,761 @@
@model Fab2ApprovalSystem.Models.LTLotTravelerHeaderViewModel
@{
ViewBag.Title = "LotTraveler - Execute";
}
@{
Layout = "_LotTravelerLayout.cshtml";
}
<link rel="stylesheet" href="/Content/kendo/kendo.blueopal.min.css" />
<style>
.k-header .k-link {
text-align: center;
}
.k-grid tbody tr td {
vertical-align: top;
}
</style>
<body onload="StartTimers();" onmousemove="ResetTimers();" onkeydown="ResetTimers();">
@using (Html.BeginForm())
{
<input type="hidden" id="LTWorkRequestID" value="@Model.LTWorkRequestID" />
<input type="hidden" id="ReturnURL" value="@Url.Action("LotTravelerExecute", "LotTraveler", new { ltLotID = Model.ID })" />
@Html.AntiForgeryToken()
<div class="panel panel-default" style="font-size: 10px">
<div class="panel-body bg-warning">
<div class="row">
<div class="col-sm-12 text-center">
<label id="RevNumber" style="font-size: large; font-weight: bold; color: blue; font-family: 'Times New Roman';">
Fab2 Electronic Lot Traveler - Lot# @Model.LotNumber Rev @Model.LotTravCurrentRevision &nbsp;&nbsp;[Mode : Execution]
</label>
</div>
</div>
</div>
</div>
<div class="panel panel-default" style="font-size: 10px">
<div class="panel-body bg-warning">
<div class="row">
<div class="col-sm-12">
<input type="button" value="Print PDF" class="btn btn-warning btn-xs" id="PrintTravelerPDF" style="font-size: 10px" />
<input type="button" value="Back to Work Request" class="btn btn-warning btn-xs" id="BackToRequestID" style="font-size: 10px" />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<label class="control-label">Lot Numbers:</label>
@(Html.Kendo().DropDownList()
.Name("LotList")
.BindTo(new SelectList(ViewBag.LotList, "LotID", "LotNumber"))
.OptionLabel("Select")
)
<input type="button" value="Display Traveler" class="btn btn-warning btn-xs" id="GetTraveler" style="font-size: 10px" />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<label class="control-label">Revisions:</label>
@(Html.Kendo().DropDownList()
.Name("Revisions")
.BindTo(new SelectList(ViewBag.LotTravRevisionList, "ID", "RevisionNumber"))
.OptionLabel("Select")
)
<input type="button" value="Display Revision" class="btn btn-warning btn-xs" id="GetRevision" style="font-size: 10px" />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="button" value="Revision History" class="btn btn-warning btn-xs" id="RevisionHistoryData" style="font-size: 10px" />
</div>
</div>
</div>
</div>
<div class="panel panel-default" style="font-size: 10px">
<div class="panel-body bg-warning">
<div class="row">
<div class="col-sm-2">
<div class="row">
<div class="col-sm-3">
<label class="control-label pull-right">SWR #:</label>
</div>
<div class="col-sm-9">
@Html.TextBoxFor(model => model.SWRNumber, new { @class = "k-textbox", Readonly = "Readonly", style = "background-color:lightblue" })
</div>
</div>
</div>
<div class="col-sm-2">
<div class="row">
<div class="col-sm-3">
<label class="control-label pull-right">Last Update:</label>
</div>
<div class="col-sm-9">
@Html.TextBoxFor(model => model.LastUpdate, new { id = "txtLastUpdate", @class = "k-textbox", Readonly = "Readonly", style = "background-color:lightblue" })
</div>
</div>
</div>
<div class="col-sm-2">
<div class="row">
<div class="col-sm-3">
<label class="control-label pull-right">Title</label>
</div>
<div class="col-sm-9">
@Html.TextBoxFor(model => model.Title, new { @class = "k-textbox", Readonly = "Readonly" })
</div>
</div>
</div>
<div class="col-sm-2">
<div class="row">
<div class="col-sm-3">
<label class="control-label pull-right">Status:</label>
</div>
<div class="col-sm-9">
@Html.TextBoxFor(model => model.Status, new { @class = "k-textbox", Readonly = "Readonly", style = "background-color:lightblue" })
</div>
</div>
</div>
<div class="col-sm-2">
</div>
<div class="col-sm-2">
</div>
</div>
<div class="row">
<div class="col-sm-2">
<div class="row">
<div class="col-sm-3">
<label class="control-label pull-right">Originator:</label>
</div>
<div class="col-sm-9">
@Html.TextBoxFor(model => model.Originator, new { @class = "k-textbox", Readonly = "Readonly", style = "background-color:lightblue" })
@if (Session[GlobalVars.IS_ADMIN] != null)
{
<a href="javascript:undefined" id="lnkReassignOriginator" class="linkbutton edit" title="Re-assign Originator"></a>
}
</div>
</div>
</div>
<div class="col-sm-2">
<div class="row">
<div class="col-sm-3">
<label class="control-label pull-right">Updated By:</label>
</div>
<div class="col-sm-9">
@Html.TextBoxFor(model => model.LastUpdatedBy, new { id = "txtUpdatedBy", @class = "k-textbox", Readonly = "Readonly", style = "background-color:lightblue" })
</div>
</div>
</div>
<div class="col-sm-2">
<div class="row">
<div class="col-sm-3">
<label class="control-label pull-right">WIP PN#:</label>
</div>
<div class="col-sm-9">
@Html.TextBoxFor(model => model.WIPPartNumber, new { @class = "k-textbox", Readonly = "Readonly" })
</div>
</div>
</div>
<div class="col-sm-2">
<div class="row">
<div class="col-sm-3">
<label class="control-label pull-right">Part Desc:</label>
</div>
<div class="col-sm-9">
@Html.TextBoxFor(model => model.PartDescription, new { @class = "k-textbox", Readonly = "Readonly", style = "background-color:lightblue;width:100%" })
</div>
</div>
</div>
<div class="col-sm-2">
<div class="row">
<div class="col-sm-3">
<label class="control-label pull-right">Base Flow:</label>
</div>
<div class="col-sm-9">
@Html.TextBoxFor(model => model.BaseFlow, new { id = "txtProcessFlow", @class = "k-textbox", Readonly = "Readonly", style = "background-color:lightblue" })
</div>
</div>
</div>
<div class="col-sm-2">
<div class="row">
<div class="col-sm-3">
<label class="control-label pull-right">ITAR:</label>
</div>
<div class="col-sm-9">
@Html.TextBoxFor(model => model.IsITAR, new { @class = "k-textbox", Readonly = "Readonly", style = "background-color:lightblue" })
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-1">
<label class="control-label pull-right">Purpose Of Lot/Change Description:</label>
</div>
<div class="col-sm-11">
@Html.TextAreaFor(model => model.PurposeOfRequest, 5, 100, new { @class = "k-textbox", Readonly = "Readonly", style = "width:100%" })
</div>
</div>
</div>
</div>
<div class="panel panel-default" style="font-size: 10px">
<!-- NEW PANEL ===============================================================-->
<div class="panel-body bg-info">
<h5>
<font style="color:crimson; font-weight:bold">
OLHold Steps - Completed
</font>
<a class="btn btn-xs pull-right alert-danger" id="aSection2" role="button" data-toggle="collapse" href="#collapseSection2" aria-expanded="true" aria-controls="collapseExample">
Expand/Collpase
</a>
</h5>
</div>
<div class="collapse" id="collapseSection2">
<div class="panel-body bg-warning">
<div class="col-sm-offset-0">
@(Html.Kendo().Grid<Fab2ApprovalSystem.Models.LTLotTravelerHoldSteps>()
.Name("CompletedTasks")
.Columns(columns =>
{
columns.Bound(a => a.ID).Visible(false);
columns.Bound(a => a.LotTravelerRevisionID).Visible(false);
columns.Bound(a => a.Location).Width("50px");
columns.Bound(a => a.Operation).Width("50px");
columns.Bound(a => a.OperationDescription).Width("100px");
columns.Bound(a => a.ChangeInstructions).ClientTemplate("#=changeNewLine(ChangeInstructions)#").Width("250px");
columns.Bound(a => a.FileNames).ClientTemplate("#=buildLinks(FileNames, SWRNumber)#").Width("100px");
columns.Bound(a => a.ExecutionTaskComments).ClientTemplate("#=changeNewLine(ExecutionTaskComments)#").Width("250px");
columns.Bound(a => a.SignedOffByName).Width("50px");
columns.Bound(a => a.SignOffTime).Format("{0:MM/dd/yy hh:mm:ss}").Width("50px");
columns.Bound(a => a.Completed).ClientTemplate("<input type='checkbox' disabled #= Completed ? checked='checked':'' # class='chkbx' />").Width("50px");
})
.Resizable(e => e.Columns(true))
.Events(e => e.DataBound("onHoldStepsDataBound"))
.Sortable()
.Scrollable()
.HtmlAttributes(new { style = "height:250; width:100%; font-size: 10px" })
.DataSource(dataSource => dataSource
.Ajax()
.ServerOperation(false)
.Model(model =>
{
model.Id(p => p.ID);
})
.PageSize(50)
.Read(read => read.Action("GetLotTravHoldStepsCompleted", "LotTraveler", new { LotID = Model.ID }))
)
)
</div>
</div>
</div>
</div>
<div class="panel panel-default" style="font-size: 10px">
<!-- NEW PANEL ===============================================================-->
<div class="panel-body bg-info">
<h5>
<font style="color:crimson; font-weight:bold">
OLHold Steps - Pending
</font>
<a class="btn btn-xs pull-right alert-danger" id="aSection3" role="button" data-toggle="collapse" href="#collapseSection3" aria-expanded="true" aria-controls="collapseExample">
Expand/Collpase
</a>
</h5>
</div>
<div class="collapse" id="collapseSection3">
<div class="panel-body bg-info">
<div class="pull-left">
<button class="btn btn-warning btn-xs" data-toggle="modal" id="UploadWRAttachment" style="font-size:x-small">
Upload Files
</button>
</div>
</div>
<div class="panel-body bg-warning">
@(Html.Kendo().Grid<Fab2ApprovalSystem.Models.LTLotTravelerHoldSteps>()
.Name("PendingTasks")
.Columns(columns =>
{
columns.Bound(a => a.ID).Visible(false);
columns.Bound(a => a.LotTravelerRevisionID).Visible(false);
columns.Bound(a => a.Location).Width("50px");
columns.Bound(a => a.Operation).Width("50px");
columns.Bound(a => a.OperationDescription).Width("100px");
columns.Bound(a => a.ChangeInstructions).ClientTemplate("#=changeNewLine(ChangeInstructions)#").Width("250px");
columns.Bound(a => a.FileNames).ClientTemplate("#=buildLinks(FileNames, SWRNumber)#").Width("100px");
columns.Bound(a => a.ExecutionTaskComments).ClientTemplate("#=changeNewLine(ExecutionTaskComments)#").Width("250px");
columns.Bound(a => a.SignedOffByName).Width("50px");
columns.Bound(a => a.SignOffTime).Format("{0:MM/dd/yy hh:mm:ss}").Width("50px");
columns.Bound(a => a.Completed).ClientTemplate("<input type='checkbox' disabled #= Completed ? checked='checked':'' # class='chkbx' />").Width("50px");
columns.Command(c => c.Custom("Edit").Click("ExecuteHoldStep")).Width("50px");
})
.Resizable(e => e.Columns(true))
.Events(e => e.DataBound("onHoldStepsDataBound"))
.Sortable()
.Scrollable()
.HtmlAttributes(new { style = "height:250; width:100%; font-size: 10px" })
.DataSource(dataSource => dataSource
.Ajax()
.ServerOperation(false)
.Model(model =>
{
model.Id(p => p.ID);
})
.PageSize(50)
.Read(read => read.Action("GetLotTravHoldStepsPending", "LotTraveler", new { LotID = Model.ID }))
)
)
</div>
</div>
</div>
}
<div class="modal fade" id="timeout" tabindex="0" role="dialog" aria-hidden="true" data-backdrop="static">
<div class="modal-dialog modal-lg" style="width:500px;">
<div class="modal-content">
<div class="modal-header" style="background-color: #fce0a3;">
<h3 class="modal-title">Page About To Timeout</h3>
</div>
<div class="modal-body" style="background-color: crimson; font-size: 20px; color:white">
You will be automatically be redirected to Special Request List page in 1 minute.<br />
To remain on this page please close this window or press the ESC key.
</div>
<div class="modal-footer" style="background-color: #fce0a3; ">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="AddTaskCommentsForm" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="static">
<div class="modal-dialog">
<div class="modal-content" style="width: 800px">
<div class="modal-header" style="background-color: #fce0a3;">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h4 class="modal-title" id="myModalLabel">Execute Tasks/Comments:</h4>
</div>
<div class="modal-body" style="background-color: #a5c9eb; font-size: 12px">
<div class="row">
<div class="col-sm-2">
<div class="control-group">
<label for="BaseFlow">Base Flow:</label>
<div class="controls k-textbox" style="width:100px; font-size: 10px">
<input type="text" class="form-control" id="txtBaseFlow" readonly="Readonly">
</div>
</div>
</div>
<div class="col-sm-2">
<div class="control-group">
<label for="Location">Location:</label>
<div class="controls k-textbox" style="width:100px; font-size: 10px">
<input type="text" class="form-control" id="txtLocation" readonly="Readonly">
</div>
</div>
</div>
<div class="col-sm-2">
<div class="control-group">
<label for="Operation">Operation:</label>
<div class="controls k-textbox" style="width:100px; font-size: 10px">
<input type="text" class="form-control" id="txtOperation" disabled="disabled">
</div>
</div>
</div>
<div class="col-sm-6">
<div class="control-group">
<label for="Description">Description:</label>
<div class="controls k-textbox" style="width:365px; font-size: 10px">
<input type="text" class="form-control" id="txtOperationDesc" style="font-size: 10px" readonly="Readonly">
</div>
</div>
</div>
</div>
<div class="row">
<div class="control-group">
<div class="col-sm-12">
<label for="Instructions">Instructions:</label>
<textarea class="form-control" rows="15" id="txtChangeInstructions" style="font-size: 10px" readonly="Readonly"></textarea>
</div>
</div>
</div>
<div class="row">
<div class="control-group">
<div class="col-sm-12">
<label for="txtTaskComments">Tasks/Comments:</label>
<textarea class="form-control" rows="5" id="txtTaskComments" style="font-size: 10px"></textarea>
</div>
</div>
</div>
<br />
<div class="row">
<div class="control-group">
<div class="col-sm-12">
<label for="Instructions">Completed:</label>
<input type="checkbox" id="taskCompletedFlag" />
</div>
</div>
</div>
</div>
<div class="modal-footer" style="background-color: #fce0a3; ">
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
<button type="button" class="btn btn-primary" id="SaveTaskCommentsHoldStep">Save</button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="RevisionHistoryWin" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="static">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="myModalLabel">Revision History</h4>
</div>
<div class="modal-body">
@(Html.Kendo().Grid<Fab2ApprovalSystem.Models.RevisionHistory>()
.Name("RevisionHistory")
.Columns(columns =>
{
columns.Bound(a => a.ID).Visible(false);
columns.Bound(a => a.RevisionedBy);
columns.Bound(a => a.Comments);
columns.Bound(a => a.RevisionCreateDate).Format("{0:MM/dd/yy hh:mm:ss}");
})
.Sortable()
.Scrollable()
.HtmlAttributes(new { style = "height:300px; width:100%; font-size: 12px" })
.DataSource(dataSource => dataSource
.Ajax()
.ServerOperation(false)
.Model(model =>
{
model.Id(p => p.ID);
})
.PageSize(50)
.Read(read => read.Action("GetLotTravelerRevisionHistory", "LotTraveler", new { lotID = Model.ID }))
)
)
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="WinAttachDocuments" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="static">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h4 class="modal-title" id="myModalLabel">Select File:</h4>
</div>
<div class="modal-body">
<div class="row">
<div class="col-sm-12">
<label for="WRAttachmentComments">Comments:</label>
<textarea class="form-control" rows="3" id="WRAttachmentComments"></textarea>
</div>
</div>
<div class="row">
<div class="col-sm-4">
<div class="control-group">
<label for="DocumentType">Document Type:</label>
<div class="controls" style="width:200px; font-size: 10px">
<div id="ex" class="k-content">
@(Html.Kendo().DropDownList()
.Name("WRAttachDocType")
.DataTextField("Text")
.DataValueField("Value")
.BindTo(new List<SelectListItem>() {
new SelectListItem() {
Text = "Select",
Value = "Select"
},
new SelectListItem() {
Text = "Instructions",
Value = "Instructions"
},
new SelectListItem() {
Text = "Traveler",
Value = "Traveler"
},
new SelectListItem() {
Text = "Other",
Value = "Other"
}
})
.Value("1")
.HtmlAttributes(new { style = "width:100px;" })
)
</div>
</div>
</div>
</div>
<div class="col-sm-8">
@(Html.Kendo().Upload()
.Name("files")
.Async(a => a
.Save("AttachSaveWorkRequest", "LotTraveler", new { workRequestID = Model.LTWorkRequestID, currentRevision = Model.WorkReqRevision, swrNo = Model.SWRNumber })
.AutoUpload(true)
)
.Events(events => events.Upload("UploadAdditionalData"))
.ShowFileList(false)
)
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
</body>
@Html.Partial("_LTReassignOriginator")
<script type="text/javascript">
var holdStepOperation;
var currentHoldStepID;
var currentLotTravRevisionID;
var newSession = true;
$(document).ready(function () {
$('#collapseSection3').collapse({
toggle: true
})
$("#files").on('click', function (e) {
if ($("#WRAttachDocType").data("kendoDropDownList").value() == "Select" ||
$("#WRAttachmentComments").val() == '') {
alert('Document Type and Comments both needs to filled in before uploading a a file')
e.preventDefault();
}
});
})
function onHoldStepsDataBound(arg) {
var myElem = document.getElementById('trParentHeader');
if (myElem == null) {
$("#HoldSteps").find("th.k-header").parent().before("<tr id='trParentHeader'> <th align='center' colspan='3' class='k-header' style='color:red'></th> <th align='center' colspan='2' class='k-header' style='font-size:12px;color:red'><strong>Change Instructions/File </strong></th> </th> <th align='center' colspan='4' class='k-header' style='font-size:12px;color:red'><strong>Execution </strong></th></tr>");
}
}
function buildLinks(fileNames, swrNumber) {
var template = "";
//var fileName = 4;
//alert(workRequestID);
if (fileNames != null) {
var tempValue = fileNames.split(',');
for (var i = 0; i < tempValue.length; i++) {
var tempValue2 = tempValue[i].split('~');
var fileName = tempValue2[0];
var fileGuid = tempValue2[1];
var tempFile = fileName.split('.');
var fileExtension = tempFile[tempFile.length - 1];
//template += "<a href='@GlobalVars.AttachmentUrl" + "LotTraveler/" + swrNumber + "/" + fileGuid + "." + fileExtension + "'>" + fileName + "</a><BR>" + " ";
template += "<a href='/LotTraveler/DownloadFile?fileGuid=" + fileGuid + "&swrNumber=" + @Model.SWRNumber + "&typeOfDoc=2" + "'>" + fileName + "</a><BR>" + " ";
}
}
return template;
}
$("#GetRevision").on('click', function (e) {
e.preventDefault();
var revid = $("#Revisions").data("kendoDropDownList").text();
var url = '@Url.Action("LotTravelerReadonly", "LotTraveler", new { ltLotID = "__id__", revisionNumber = "__revID__" })';
url = url.replace('__revID__', revid);
url = url.replace('amp;', '');
window.location.href = url.replace('__id__', '@Model.ID');
})
$("#GetTraveler").on('click', function (e) {
e.preventDefault();
var lotid = $("#LotList").data("kendoDropDownList").value();
var url = '@Url.Action("LotTravelerUpdate", "LotTraveler", new { ltLotID = "__id__" })';
url = url.replace('amp;', '');
window.location.href = url.replace('__id__', lotid);
})
function ExecuteHoldStep(e) {
e.preventDefault();
holdStepOperation = "Update";
var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
currentHoldStepID = dataItem.ID;
currentLotTravRevisionID = dataItem.LotTravelerRevisionID
$("#txtBaseFlow").val($("#txtProcessFlow").val());
$("#txtLocation").val(dataItem.Location);
$("#txtOperation").val(dataItem.Operation);
$("#txtOperationDesc").val(dataItem.OperationDescription);
$("#txtChangeInstructions").val(dataItem.ChangeInstructions);
$("#taskCompletedFlag").attr('checked', false);
$("#txtTaskComments").val('');
$("#AddTaskCommentsForm").modal('show');
}
$("#SaveTaskCommentsHoldStep").on('click', function (e) {
e.preventDefault();
var completedFlag;
if ($("#taskCompletedFlag").is(":checked"))
completedFlag = true;
else
completedFlag = false;
var urlString = "/LotTraveler/UpdateLotTravlerExecution"
$.ajax({
url: urlString,
type: "POST",
data: {
currentHoldStepID: currentHoldStepID,
taskComments: $("#txtTaskComments").val(),
taskcompleted: completedFlag
},
success: function (data) {
$("#AddTaskCommentsForm").modal('hide');
var grid = $("#PendingTasks").data("kendoGrid");
grid.dataSource.read('@Model.ID');
var grid = $("#CompletedTasks").data("kendoGrid");
grid.dataSource.read('@Model.ID');
},
error: function (result) {
alert("Failed " + result);
}
});
})
function changeNewLine(text) {
if (text != null) {
var regexp = new RegExp('\n', 'g');
return text.replace(regexp, '<br>');
}
else
return '';
}
function checkBoxTemplate(dataVal) {
'<input type="checkbox" #= dataVal ? \'checked="checked"\' : "" # class="chkbx" />'
}
$("#PrintTravelerPDF").on('click', function (e) {
e.preventDefault();
var url = '@Url.Action("DisplayLotTravlerPdf", "LotTraveler", new { ltLotID = "__id__", revisionNumber = "__revid__" })';
url = url.replace("__revid__", '@Model.LotTravCurrentRevision')
url = url.replace('amp;', '');
window.open(url.replace('__id__', '@Model.ID', '_blank'));
})
$("#BackToRequestID").on('click', function (e) {
e.preventDefault();
var url = '@Url.Action("Edit", "LotTraveler", new { IssueID = "__id__"})';
url = url.replace('amp;', '');
window.location.href = url.replace('__id__', $("#LTWorkRequestID").val());
})
$('#RevisionHistoryData').on('click', function () {
$("#RevisionHistoryWin").modal('show');
return false;
})
$(window).bind("beforeunload", function (e) {
//return confirm("Do you really want to close?");
var url;
$.ajax({
url: "/LotTraveler/ReleaseLockOnLotTravelerUpdateDoc",
type: "GET",
datatype: "json",
data: {
lotID: ("@Model.ID")
},
success: function () {
},
error: function (result) {
alert("Failed " + result);
}
});
})
$("#UploadWRAttachment").on('click', function (e) {
e.preventDefault();
$("#WinAttachDocuments").modal('show');
})
function UploadAdditionalData(e)
{
fileData = e;
var files = e.files;
$.each(files, function () {
if (!this.extension.toLowerCase().match(/^(.doc|.docx|.ppt|.pptx|.xls|.xlsx|.xlsm|.pdf|.gif|.jpeg|.jpg|.bmp|.png|.txt)$/)) {
alert("Only Word/PowerPoint/Excel/PDF/Image/Text files can be uploaded!")
e.preventDefault();
}
});
e.data = {
comments: $("#WRAttachmentComments").val(),
docType : $("#WRAttachDocType").data("kendoDropDownList").value()
};
}
@*function IdleTimeout() {
//window.location = logoutUrl;
var url = '@Url.Action("SpecialWorkRequest", "Home")';
window.location.href = url;
}*@
</script>

View File

@ -0,0 +1,169 @@
@model Fab2ApprovalSystem.ViewModels.LotTravelerPdf
@{
ViewBag.Title = "LotTravelerPDF";
}
<table width="100%" border="1" style="font-size:6px;">
<tr style="color:black; font-family:'Times New Roman'">
<td colspan="7" align="center" style="font-size: 10px; font-weight: bold; background-color: #e5e0e0">
Fab2 Electronic Lot Traveler - Lot# @Model.LotNumber
</td>
<td bgcolor="#e5e0e0">
Version
</td>
<td>
<font style="font-style:italic">
Rev @Model.LotTravCurrentRevision
</font>
</td>
</tr>
<tr>
<td bgcolor="#e5e0e0">
SWR#
</td>
<td colspan="2">
@Model.SWRNumber
</td>
<td bgcolor="#e5e0e0">
Title
</td>
<td colspan="5">
@Model.Title
</td>
</tr>
<tr>
<td bgcolor="#e5e0e0">
Originator
</td>
<td colspan="2">
@Model.Originator
</td>
<td bgcolor="#e5e0e0">
Last Update
</td>
<td colspan="2">
@Model.LastUpdate
</td>
<td bgcolor="#e5e0e0">
Updated By
</td>
<td colspan="2">
@Model.LastUpdatedBy
</td>
</tr>
<tr>
<td bgcolor="#e5e0e0">
WIP PN#
</td>
<td colspan="2">
@Model.WIPPartNumber
</td>
<td bgcolor="#e5e0e0">
Description
</td>
<td colspan="2">
@Model.PartDescription
</td>
<td bgcolor="#e5e0e0">
Base Flow
</td>
<td colspan="2">
@Model.BaseFlow
</td>
</tr>
<tr>
<td bgcolor="#e5e0e0">
Purpose of Lot / Change Description
</td>
<td colspan="4">
@Html.Raw(@Model.PurposeOfRequest)
</td>
<td bgcolor="#e5e0e0">
Status
</td>
<td >
Approved
</td>
<td bgcolor="#e5e0e0">
ITAR
</td>
<td >
@(Model.IsITAR ? "Yes" : "No")
</td>
</tr>
</table>
<br />
<table width="100%" border="1">
<tr bgcolor="#e5e0e0" style="font-weight: bold; font-size: 5px;">
<td>
Location
</td>
<td>
Operation
</td>
<td colspan="2">
Description
</td>
<td colspan="3">
Instruction Details
</td>
<td colspan="3">
File Names
</td>
<td colspan="3">
Tasks/Comments
</td>
<td>
Signed-Off By
</td>
<td>
Signed-Off Time
</td>
<td>
Completed
</td>
</tr>
@foreach (Fab2ApprovalSystem.Models.LTLotTravelerHoldSteps task in Model.Tasklist)
{
<tr style="font-size: 5px;">
<td>
@task.Location
</td>
<td>
@task.Operation
</td>
<td colspan="2">
@task.OperationDescription
</td>
<td colspan="3">
@Html.Raw(@task.ChangeInstructions)
</td>
<td colspan="3">
@Html.Raw(@task.FileNames)
</td>
<td colspan="3">
@Html.Raw(@task.ExecutionTaskComments)
</td>
<td>
@task.SignedOffByName
</td>
<td>
@task.SignOffTime
</td>
<td>
@(task.Completed ? "Yes" : "No")
</td>
</tr>
}
</table>

View File

@ -0,0 +1,453 @@
@model Fab2ApprovalSystem.Models.LTLotTravelerHeaderViewModel
@{
ViewBag.Title = "LotTraveler - Readonly";
}
@{
Layout = "_LotTravelerLayout.cshtml";
}
<link rel="stylesheet" href="/Content/kendo/kendo.blueopal.min.css" />
<style>
.k-header .k-link {
text-align: center;
}
</style>
@using (Html.BeginForm())
{
<input type="hidden" id="LTWorkRequestID" value="@Model.LTWorkRequestID" />
<input type="hidden" id="ReturnURL" value="@Url.Action("LotTravelerReadonly", "LotTraveler", new { ltLotID = Model.ID, revisionNumber = Model.LotTravCurrentRevision })" />
@Html.AntiForgeryToken()
<div class="panel panel-default" style="font-size: 10px">
<div class="panel-body bg-warning">
<div class="row">
@*<div class="col-sm-4">
<div class="row">
<div class="col-sm-3">
</div>
<div class="col-sm-3">
</div>
<div class="col-sm-6">
</div>
</div>
</div>*@
<div class="col-sm-12">
<div class="row">
<div class="col-sm-12 text-center">
<font style="color:crimson">
<label id="RevNumber" style="font-size: large; font-weight: bold; color: blue; ">
Fab2 Electronic Lot Traveler - Lot# @Model.LotNumber
Rev @Model.LotTravCurrentRevision &nbsp;&nbsp;
[Mode : Readonly]
</label>
@*<font style="color: blue; font-weight:bold">@Model.LotNumber</font> <font style="color: green; font-weight:bold; font-style:italic">Rev @Model.LotTravCurrentRevision</font><font style="color: red; font-weight:bold;" > [Mode : Readonly]</font>*@
</font>
</div>
</div>
</div>
<div class="col-sm-4">
<div class="row">
<div class="col-sm-3">
</div>
<div class="col-sm-3">
</div>
<div class="col-sm-6">
</div>
</div>
</div>
</div>
</div>
</div>
<div class="panel panel-default" style="font-size: 10px">
<div class="panel-body bg-warning">
<div class="row">
<div class="col-sm-12">
<input type="button" value="Print PDF" class="btn btn-warning btn-xs" id="PrintTravelerPDF" style="font-size: 10px" />
<input type="button" value="Back to Work Request" class="btn btn-warning btn-xs" id="BackToRequestID" style="font-size: 10px" />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<label class="control-label">Lot Numbers:</label>
@(Html.Kendo().DropDownList()
.Name("LotList")
.BindTo(new SelectList(ViewBag.LotList, "LotID", "LotNumber"))
.OptionLabel("Select")
)
<input type="button" value="Display Traveler" class="btn btn-warning btn-xs" id="GetTraveler" style="font-size: 10px" />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<label class="control-label">Revisions:</label>
@(Html.Kendo().DropDownList()
.Name("Revisions")
.BindTo(new SelectList(ViewBag.LotTravRevisionList, "ID", "RevisionNumber"))
.OptionLabel("Select")
)
<input type="button" value="Display Revision" class="btn btn-warning btn-xs" id="GetRevision" style="font-size: 10px" />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="button" value="Revision History" class="btn btn-warning btn-xs" id="RevisionHistoryData" style=" font-size: 10px" />
</div>
</div>
</div>
</div>
<div class="panel panel-default" style="font-size: 10px">
<div class="panel-body bg-warning">
<div class="row">
<div class="col-sm-2">
<div class="row">
<div class="col-sm-3">
<label class="control-label pull-right">SWR #:</label>
</div>
<div class="col-sm-9">
@Html.TextBoxFor(model => model.SWRNumber, new { @class = "k-textbox", Readonly = "Readonly", style = "background-color:lightblue" })
</div>
</div>
</div>
<div class="col-sm-2">
<div class="row">
<div class="col-sm-3">
<label class="control-label pull-right">Last Update:</label>
</div>
<div class="col-sm-9">
@Html.TextBoxFor(model => model.LastUpdate, new { id = "txtLastUpdate", @class = "k-textbox", Readonly = "Readonly", style = "background-color:lightblue" })
</div>
</div>
</div>
<div class="col-sm-2">
<div class="row">
<div class="col-sm-3">
<label class="control-label pull-right">Title</label>
</div>
<div class="col-sm-9">
@Html.TextBoxFor(model => model.Title, new { @class = "k-textbox", Readonly = "Readonly" })
</div>
</div>
</div>
<div class="col-sm-2">
<div class="row">
<div class="col-sm-3">
<label class="control-label pull-right">Closed Reason:</label>
</div>
<div class="col-sm-9">
@Html.TextBoxFor(model => model.TravelerClosedReason, new { @class = "k-textbox", Readonly = "Readonly", style = "background-color:lightblue" })
</div>
</div>
</div>
<div class="col-sm-2">
<div class="row">
<div class="col-sm-3">
<label class="control-label pull-right">Closed By:</label>
</div>
<div class="col-sm-9">
@Html.TextBoxFor(model => model.TravelerClosedBy, new { @class = "k-textbox", Readonly = "Readonly", style = "background-color:lightblue" })
</div>
</div>
</div>
<div class="col-sm-2">
<div class="row">
<div class="col-sm-3">
<label class="control-label pull-right">Closed Date:</label>
</div>
<div class="col-sm-9">
@Html.TextBoxFor(model => model.TravelerClosedDate, new { @class = "k-textbox", Readonly = "Readonly", style = "background-color:lightblue" })
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-2">
<div class="row">
<div class="col-sm-3">
<label class="control-label pull-right">Originator:</label>
</div>
<div class="col-sm-9">
@Html.TextBoxFor(model => model.Originator, new { @class = "k-textbox", Readonly = "Readonly", style = "background-color:lightblue" })
@if (Session[GlobalVars.IS_ADMIN] != null)
{
<a href="javascript:undefined" id="lnkReassignOriginator" class="linkbutton edit" title="Re-assign Originator"></a>
}
</div>
</div>
</div>
<div class="col-sm-2">
<div class="row">
<div class="col-sm-3">
<label class="control-label pull-right">Updated By:</label>
</div>
<div class="col-sm-9">
@Html.TextBoxFor(model => model.LastUpdatedBy, new { id = "txtUpdatedBy", @class = "k-textbox", Readonly = "Readonly", style = "background-color:lightblue" })
</div>
</div>
</div>
<div class="col-sm-2">
<div class="row">
<div class="col-sm-3">
<label class="control-label pull-right">WIP PN#:</label>
</div>
<div class="col-sm-9">
@Html.TextBoxFor(model => model.WIPPartNumber, new { @class = "k-textbox", Readonly = "Readonly"})
</div>
</div>
</div>
<div class="col-sm-2">
<div class="row">
<div class="col-sm-3">
<label class="control-label pull-right">Part Desc:</label>
</div>
<div class="col-sm-9">
@Html.TextBoxFor(model => model.PartDescription, new { @class = "k-textbox", Readonly = "Readonly", style = "background-color:lightblue;width:100%" })
</div>
</div>
</div>
<div class="col-sm-2">
<div class="row">
<div class="col-sm-3">
<label class="control-label pull-right">Base Flow:</label>
</div>
<div class="col-sm-9">
@Html.TextBoxFor(model => model.BaseFlow, new { id = "txtProcessFlow", @class = "k-textbox", Readonly = "Readonly", style = "background-color:lightblue" })
</div>
</div>
</div>
<div class="col-sm-2">
<div class="row">
<div class="col-sm-3">
<label class="control-label pull-right">ITAR:</label>
</div>
<div class="col-sm-9">
@Html.TextBoxFor(model => model.IsITAR, new { @class = "k-textbox", Readonly = "Readonly", style = "background-color:lightblue" })
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-1">
<label class="control-label pull-right">Purpose Of Lot/Change Description:</label>
</div>
<div class="col-sm-11">
@Html.TextAreaFor(model => model.PurposeOfRequest, 5, 100, new { @class = "k-textbox", Readonly = "Readonly", style = "width:100%" })
</div>
</div>
</div>
</div>
<div class="panel panel-default" style="font-size: 10px">
<!-- NEW PANEL ===============================================================-->
<div class="panel-body bg-info">
<h5>
<font style="color:crimson; font-weight:bold">
OLHold Steps
</font>
<a class="btn btn-xs pull-right alert-danger" id="aSection2" role="button" data-toggle="collapse" href="#collapseSection2" aria-expanded="true" aria-controls="collapseExample">
Expand/Collpase
</a>
</h5>
</div>
<div class="collapse" id="collapseSection2">
<div class="panel-body bg-warning">
<div class="col-sm-offset-0">
@(Html.Kendo().Grid<Fab2ApprovalSystem.Models.LTLotTravelerHoldSteps>()
.Name("HoldSteps")
.Columns(columns =>
{
columns.Bound(a => a.ID).Visible(false);
columns.Bound(a => a.LotTravelerRevisionID).Visible(false);
columns.Bound(a => a.Location).Width("50px");
columns.Bound(a => a.Operation).Width("50px");
columns.Bound(a => a.OperationDescription).Width("100px");
columns.Bound(a => a.ChangeInstructions).ClientTemplate("#=changeNewLine(ChangeInstructions)#").Width("250px");
columns.Bound(a => a.FileNames).ClientTemplate("#=buildLinks(FileNames, SWRNumber)#").Width("100px");
columns.Bound(a => a.ExecutionTaskComments).ClientTemplate("#=changeNewLine(ExecutionTaskComments)#").Width("250px");
columns.Bound(a => a.SignedOffByName).Width("50px");
columns.Bound(a => a.SignOffTime).Format("{0:MM/dd/yy hh:mm:ss}").Width("50px");
columns.Bound(a => a.Completed).ClientTemplate("<input type='checkbox' disabled #= Completed ? checked='checked':'' # class='chkbx' />").Width("50px");
})
.Resizable(e => e.Columns(true))
.Events(e => e.DataBound("onHoldStepsDataBound"))
.Sortable()
.Scrollable()
.HtmlAttributes(new { style = "height:250; width:100%; font-size: 10px" })
.DataSource(dataSource => dataSource
.Ajax()
.ServerOperation(false)
.Model(model =>
{
model.Id(p => p.ID);
})
.PageSize(50)
.Read(read => read.Action("GetLotTravHoldStepsByRevision", "LotTraveler", new { LotID = Model.ID, revisionNumber = Model.LotTravCurrentRevision }))
)
)
</div>
</div>
</div>
</div>
}
<div class="modal fade" id="RevisionHistoryWin" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="static">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="myModalLabel">Revision History</h4>
</div>
<div class="modal-body">
@(Html.Kendo().Grid<Fab2ApprovalSystem.Models.RevisionHistory>()
.Name("RevisionHistory")
.Columns(columns =>
{
columns.Bound(a => a.ID).Visible(false);
columns.Bound(a => a.RevisionedBy);
columns.Bound(a => a.Comments);
columns.Bound(a => a.RevisionCreateDate).Format("{0:MM/dd/yy hh:mm:ss}");
})
.Sortable()
.Scrollable()
.HtmlAttributes(new { style = "height:300px; width:100%; font-size: 12px" })
.DataSource(dataSource => dataSource
.Ajax()
.ServerOperation(false)
.Model(model =>
{
model.Id(p => p.ID);
})
.PageSize(50)
.Read(read => read.Action("GetLotTravelerRevisionHistory", "LotTraveler", new { lotID = Model.ID }))
)
)
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
@Html.Partial("_LTReassignOriginator")
<script type="text/javascript">
var holdStepOperation;
var currentHoldStepID;
var currentLotTravRevisionID;
var newSession = true;
$(document).ready(function () {
$('#collapseSection2').collapse({
toggle: true
})
})
function onHoldStepsDataBound(arg) {
var myElem = document.getElementById('trParentHeader');
if (myElem == null) {
$("#HoldSteps").find("th.k-header").parent().before("<tr id='trParentHeader'> <th align='center' colspan='3' class='k-header' style='color:red'></th> <th align='center' colspan='2' class='k-header' style='font-size:12px;color:red'><strong>Change Instructions/File </strong></th> </th> <th align='center' colspan='4' class='k-header' style='font-size:12px;color:red'><strong>Execution </strong></th></tr>");
}
}
function buildLinks(fileNames, swrNumber) {
var template = "";
//var fileName = 4;
//alert(workRequestID);
if (fileNames != null) {
var tempValue = fileNames.split(',');
for (var i = 0; i < tempValue.length; i++) {
var tempValue2 = tempValue[i].split('~');
var fileName = tempValue2[0];
var fileGuid = tempValue2[1];
var tempFile = fileName.split('.');
var fileExtension = tempFile[tempFile.length - 1];
//template += "<a href='@GlobalVars.AttachmentUrl" + "LotTraveler/" + swrNumber + "/" + fileGuid + "." + fileExtension + "'>" + fileName + "</a><BR>" + " ";
template += "<a href='/LotTraveler/DownloadFile?fileGuid=" + fileGuid + "&swrNumber=" + @Model.SWRNumber + "&typeOfDoc=2" + "'>" + fileName + "</a><BR>" + " ";
}
}
return template;
}
$("#GetRevision").on('click', function (e) {
e.preventDefault();
var revid = $("#Revisions").data("kendoDropDownList").text();
if (revid != "Select") {
var url = "@Html.Raw(@Url.Action("LotTravelerReadonly", "LotTraveler", new { ltLotID = "__id__", revisionNumber = "__revID__" }))";
url = url.replace('__revID__', revid);
url = url.replace('amp;', '');
window.location.href = url.replace('__id__', '@Model.ID');
}
else {
alert('Please select a Revision Number');
}
})
$("#GetTraveler").on('click', function () {
var lotid = $("#LotList").data("kendoDropDownList").value();
var url = "@Html.Raw(@Url.Action("LotTravelerUpdate", "LotTraveler", new { ltLotID = "__id__" }))";
//url = url.replace('amp;', '');
window.location.href = url.replace('__id__', lotid);
})
$("#PrintTravelerPDF").on('click', function (e) {
e.preventDefault();
var url = "@Html.Raw(@Url.Action("DisplayLotTravlerPdf", "LotTraveler", new { ltLotID = "__id__", revisionNumber = "__revid__" }))";
url = url.replace("__revid__", '@Model.LotTravCurrentRevision')
window.open(url.replace('__id__', '@Model.ID', '_blank'));
})
$("#BackToRequestID").on('click', function (e) {
e.preventDefault();
var url = "@Html.Raw(@Url.Action("Edit", "LotTraveler", new { IssueID = "__id__"}))";
window.location.href = url.replace('__id__', $("#LTWorkRequestID").val());
})
$('#RevisionHistoryData').on('click', function () {
$("#RevisionHistoryWin").modal('show');
return false;
})
function changeNewLine(text) {
if (text != null) {
var regexp = new RegExp('\n', 'g');
return text.replace(regexp, '<br>');
}
else
return '';
}
</script>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,426 @@
@model Fab2ApprovalSystem.ViewModels.WorkRequestPdf
@{
ViewBag.Title = "WorkRequestPDF";
}
<table width="100%" border="1" style="font-size:6px;">
<tr style="color:black; font-family:'Times New Roman'">
<td colspan="10" align="center" style="font-size: 10px; font-weight: bold; background-color: #e5e0e0">
Fab2 Lot Traveler Special Request - SWR# @Model.SWRNumber
</td>
<td bgcolor="#e5e0e0">
Version
</td>
<td>
<font style="font-style:italic">
Rev @Model.Revision
</font>
</td>
</tr>
<tr>
<td colspan="12" bgcolor="#e5e0e0" style="font-size: 8px; font-weight: bold">
Section 1:Work Request
</td>
</tr>
<tr>
<td bgcolor="#e5e0e0">
SWR#
</td>
<td colspan="3">
@Model.SWRNumber
</td>
<td bgcolor="#e5e0e0">
Title
</td>
<td colspan="7">
@Model.Title
</td>
</tr>
<tr>
<td bgcolor="#e5e0e0">
Originator
</td>
<td colspan="3">
@Model.OriginatorName
</td>
<td bgcolor="#e5e0e0">
Last Lot Type
</td>
<td colspan="3">
@Model.LotType
</td>
<td bgcolor="#e5e0e0">
PCRB#
</td>
<td colspan="3">
@Model.PCRBNumber
</td>
</tr>
<tr>
<td bgcolor="#e5e0e0">
Submit Date
</td>
<td colspan="3">
@Model.SubmitedDate
</td>
<td bgcolor="#e5e0e0">
Affected Departments
</td>
<td colspan="7">
@Model.AffectedDepartments
</td>
</tr>
<tr>
<td bgcolor="#e5e0e0">
Status
</td>
<td colspan="3">
@(Model.Status == 1 ? "Approved" : "Pending")
</td>
<td bgcolor="#e5e0e0">
Affected Modules
</td>
<td colspan="7">
@Model.AffectedModules
</td>
</tr>
<tr>
<td bgcolor="#e5e0e0">
ITAR
</td>
<td colspan="3">
@(Model.IsITAR ? "Yes" : "No")
</td>
<td bgcolor="#e5e0e0">
Engineering Lot Start Required
</td>
<td colspan="2">
@(Model.EngLotStartRequired == 1 ? "Yes": "No")
</td>
<td bgcolor="#e5e0e0">
Lot Type Conversion
</td>
<td colspan="2">
@(Model.LotTypeConversion == 1 ? "Yes": "No")
</td>
<td bgcolor="#e5e0e0">
Qual Lot
</td>
<td>
@(Model.QualLot == 1 ? "Yes" : "No")
</td>
</tr>
<tr>
<td bgcolor="#e5e0e0">
Purpose of Lot / Change Description
</td>
<td colspan="11">
@Html.Raw(@Model.PurposeOfRequest)
</td>
</tr>
</table>
<br/>
<table width="100%" border="1" style="font-size:6px;">
<tr>
<td colspan="9" bgcolor="#e5e0e0" style="font-size: 8px; font-weight: bold">
Section 1-A:Engineering Wafer Lot Start
</td>
</tr>
<tr>
<td bgcolor="#e5e0e0">
WIP Lot#
</td>
<td colspan="2">
@Model.LotNumber
</td>
<td bgcolor="#e5e0e0">
Start Date
</td>
<td colspan="2">
@Model.PlannedLotStartDate
</td>
<td bgcolor="#e5e0e0">
Sch. Close Date
</td>
<td colspan="2">
@Model.PlannedScheduledCloseDate
</td>
</tr>
<tr>
<td bgcolor="#e5e0e0">
Lot Start Charge Dept#
</td>
<td colspan="2">
@Model.ChargeDepartment
</td>
<td bgcolor="#e5e0e0">
Allocation to Use
</td>
<td colspan="2">
@Model.AllocationToUse
</td>
<td bgcolor="#e5e0e0">
Predicted Cycle Time
</td>
<td >
@Model.PredictedCyleTime
</td>
<td bgcolor="#e5e0e0">
Days
</td>
</tr>
</table>
<table width="100%" border="1" style="font-size:6px;">
<tr>
<td colspan="5">
Starting Material
</td>
<td>
Total Qty: @Model.TotalQty
</td>
</tr>
<tr >
<td width="10%" bgcolor="#e5e0e0">WIP PN#</td>
<td width="30%" bgcolor="#e5e0e0">Description</td>
<td width="10%" bgcolor="#e5e0e0">EPI Silicon Part#</td>
<td width="10%" bgcolor="#e5e0e0">Qty</td>
<td width="20%" bgcolor="#e5e0e0">Supplier</td>
<td width="20%" bgcolor="#e5e0e0">Source</td>
</tr>
@foreach (Fab2ApprovalSystem.Models.LTMaterial material in Model.LTMaterial)
{
<tr>
<td width="10%">
@material.WIPPartNumber
</td>
<td width="30%">
@Model.PartDescription
</td>
<td width="10%">
@material.EPISiliconPartNumber
</td>
<td width="10%">
@material.Quantity
</td>
<td width="20%">
@material.Supplier
</td>
<td width="20%">
@material.Source
</td>
</tr>
}
</table>
<table border="1" width="100%" style="font-size:6px;">
<tr>
<td width="10%" colspan="7" bgcolor="#e5e0e0">
Lot Start Check List
</td>
</tr>
<tr>
<td bgcolor="#e5e0e0">
OnHand/Existing
</td>
<td>
Silicon: &nbsp;
@(Model.SiliconOnHand ? "Yes" : "No")
</td>
<td>
Reticle Set: &nbsp;
@(Model.ReticleOnHand ? "Yes" : "No")
</td>
<td>
SPN transfer: &nbsp;
@(Model.SPNTransferOnHand ? "Yes" : "No")
</td>
</tr>
<tr>
<td></td>
<td>
Probe Card: &nbsp;
@(Model.ProbeCardOnHand ? "Yes" : "No")
</td>
<td>
Probe Recipe: &nbsp;
@(Model.ProbeRecipeOnHand ? "Yes" : "No")
</td>
<td bgcolor="#e5e0e0">
Process Change Details: &nbsp;
@(Model.ProcessChangeDetailsOnHand ? "Yes" : "No")
</td>
</tr>
<tr>
<td>
Comments
</td>
<td colspan="6">
@Model.LotStartCheckListComments
</td>
</tr>
</table>
<table border="1" width="100%" style="font-size:6px;">
<tr>
<td colspan="6" bgcolor="#e5e0e0">
Lot Start in SPN
</td>
</tr>
<tr>
<td bgcolor="#e5e0e0">
SIGNON
</td>
<td colspan="2">
SURP
</td>
<td bgcolor="#e5e0e0">
WIP AREA
</td>
<td colspan="2">
@Model.WIPArea
</td>
</tr>
<tr>
<td bgcolor="#e5e0e0">
VERB
</td>
<td colspan="2">
START
</td>
<td bgcolor="#e5e0e0">
Start Date
</td>
<td colspan="2">
@Model.PlannedLotStartDate
</td>
</tr>
<tr>
<td bgcolor="#e5e0e0">
WIP Lot#
</td>
<td colspan="2">
@Model.LotNumber
</td>
<td bgcolor="#e5e0e0">
WIP PN#
</td>
<td colspan="2">
@Model.WIPPartNumber
</td>
</tr>
<tr>
<td bgcolor="#e5e0e0">
Type
</td>
<td colspan="2">
@Model.LotType
</td>
<td bgcolor="#e5e0e0">
Process Flow
</td>
<td colspan="2">
@Model.ProcessFlow
</td>
</tr>
<tr>
<td bgcolor="#e5e0e0">
Start Qty
</td>
<td colspan="2">
@Model.StartQty
</td>
<td bgcolor="#e5e0e0">
Qual Lot
</td>
<td colspan="2">
@(Model.QualLot == 1 ? "Y" : "")
</td>
</tr>
<tr>
<td bgcolor="#e5e0e0">
VERB
</td>
<td bgcolor="#e5e0e0">
COMMENT
</td>
<td colspan="4">
@Model.VerbComment
</td>
</tr>
<tr>
<td bgcolor="e5e0e0" colspan="3">
Record Silicon Lot #s in SPN and tape tags to Traveler
</td>
<td colspan="3">
@(Model.RecordSiliconLotInSPNTapeTagTotrav == 1 ? "Yes" : "No")
</td>
</tr>
<tr>
<td colspan="2" bgcolor="e5e0e0">
Silicon Lot#s: Cassette 1
</td>
<td colspan="4">
@Model.SiliconLotNoCassette1
</td>
</tr>
</table>
<br />
<table width="100%" border="1" style="font-size:6px;">
<tr width="100%">
<td colspan="6" bgcolor="#e5e0e0" style="font-size: 8px; font-weight: bold">
Section 2: OLHOLD and Engineering Deviation Specified by Originator
</td>
</tr>
<tr >
<td width="10%" bgcolor="#e5e0e0">Base Flow</td>
<td width="10%" bgcolor="#e5e0e0">Locn</td>
<td width="10%" bgcolor="#e5e0e0">Operation</td>
<td width="40%" bgcolor="#e5e0e0">Description</td>
<td width="10%" bgcolor="#e5e0e0">Change Instuctions</td>
<td width="10%" bgcolor="#e5e0e0">File Names</td>
</tr>
@foreach (Fab2ApprovalSystem.Models.LTHoldStep holStep in Model.LTHoldStep)
{
<tr>
<td width="10%">
@holStep.BaseFlow
</td>
<td width="10%">
@holStep.Location
</td>
<td width="10%">
@holStep.Operation
</td>
<td width="20%">
@Html.Raw(@holStep.OperationDescription)
</td>
<td width="40%">
@Html.Raw(@holStep.ChangeInstructions)
</td>
<td width="10%">
@holStep.FileNames
</td>
</tr>
}
</table>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,208 @@
@model Fab2ApprovalSystem.Models.LTHoldStep
@Html.HiddenFor(model => model.LTWorkRequestID, new { id = "workRequestID" })
@Html.HiddenFor(model => model.ID, new { id = "holdStepID" })
@Html.HiddenFor(model => model.SWRNumber, new { id = "swrNumber" })
@Html.HiddenFor(model => model.Revision, new { id = "currentRevision" })
@Html.HiddenFor(model => model.currentStep, new { id = "currentStep" })
<div class="row">
<div class="col-sm-2">
<div class="control-group">
<label for="DocumentType">Document Type:</label>
<div class="controls" style="width:200px; font-size: 10px">
<div id="ex" class="k-content">
@(Html.Kendo().DropDownList()
.Name("HoldStepAttachDocType")
.DataTextField("Text")
.DataValueField("Value")
.BindTo(new List<SelectListItem>() {
new SelectListItem() {
Text = "Select",
Value = "Select"
},
new SelectListItem() {
Text = "Instructions",
Value = "Instructions"
},
new SelectListItem() {
Text = "Traveler",
Value = "Traveler"
},
new SelectListItem() {
Text = "Other",
Value = "Other"
}
})
.Value("1")
.HtmlAttributes(new { style= "width:100px;" })
)
</div>
</div>
</div>
</div>
<div class="col-sm-10">
<div class="control-group">
@if (@Model.currentStep != 3)
{
@(Html.Kendo().Upload()
.Name("HoldStepAttachment")
.Async(a => a
.Save("HoldStepAttachSave", "LotTraveler")
.AutoUpload(true)
)
.ShowFileList(false)
.Events(events => events.Success("SetDocType").Upload("UploadData")
)
)
}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12">
<label for="HoldStepAttachmentComments">Comments:</label>
<textarea class="form-control" rows="3" id="HoldStepAttachmentComments"></textarea>
</div>
</div>
<!--.Save("AttachSave", "LotTraveler", new { holdStepID = Model.ID, currentRevision = Model.Revision, swrNo = Model.SWRNumber })-->
<div class="row">
@if (@Model.currentStep != 3)
{
@(Html.Kendo().Grid<Fab2ApprovalSystem.Models.LTWorkRequestAttachment>()
.Name("HoldStepAttachments")
.Columns(columns =>
{
columns.Bound(a => a.ID).Visible(false);
columns.Bound(a => a.FileGUID).Visible(false);
columns.Bound(a => a.LTHoldStepID).Visible(false);
columns.Bound(a => a.FileName).Template(@<text> @Html.ActionLink(@item.FileName.ToString(), null)</text>).Width("100px");
//.ClientTemplate("<a href='" + GlobalVars.AttachmentUrl + "LotTraveler/#=SWRNumber#/#=FileGUID#.#=FileExtension#' target='_blank'>#=FileName#</a>");
columns.Bound(a => a.DocType);
columns.Bound(a => a.UploadedByName);
columns.Bound(a => a.UploadDateTime).Format("{0:MM/dd/yy hh:mm:ss}");
columns.Command(c => c.Destroy());
columns.Command(c => c.Custom("View").Click("DownloadAttachment")).Width("100px");
})
.Sortable()
.Scrollable()
.HtmlAttributes(new { style = "height:125; width:100%; font-size: 10px" })
.DataSource(dataSource => dataSource
.Ajax()
.ServerOperation(false)
.Model(model =>
{
model.Id(p => p.ID);
})
.PageSize(50)
.Read(read => read.Action("GetHoldStepAttachments", "LotTraveler", new { holdStepID = Model.ID }))
.Destroy(destroy => destroy.Action("DeleteHoldStepAttachment", "LotTraveler"))
)
)
}
else
{
@(Html.Kendo().Grid<Fab2ApprovalSystem.Models.LTWorkRequestAttachment>()
.Name("HoldStepAttachments")
.Columns(columns =>
{
columns.Bound(a => a.ID).Visible(false);
columns.Bound(a => a.FileGUID).Visible(false);
columns.Bound(a => a.LTHoldStepID).Visible(false);
columns.Bound(a => a.FileName).Template(@<text> @Html.ActionLink(@item.FileName.ToString(), null)</text>).Width("100px");
//.ClientTemplate("<a href='" + GlobalVars.AttachmentUrl + "LotTraveler/#=SWRNumber#/Rev#=Revision#/#=FileGUID#.#=FileExtension#' target='_blank'>#=FileName#</a>");
columns.Bound(a => a.DocType);
columns.Bound(a => a.UploadedByName);
columns.Bound(a => a.UploadDateTime).Format("{0:MM/dd/yy hh:mm:ss}");
columns.Command(c => c.Custom("View").Click("DownloadAttachment")).Width("100px"); ;
})
.Sortable()
.Scrollable()
.HtmlAttributes(new { style = "height:125; width:100%; font-size: 10px" })
.DataSource(dataSource => dataSource
.Ajax()
.ServerOperation(false)
.Model(model =>
{
model.Id(p => p.ID);
})
.PageSize(50)
.Read(read => read.Action("GetHoldStepAttachments", "LotTraveler", new { holdStepID = Model.ID }))
)
)
}
</div>
<script type="text/javascript">
$("#HoldStepAttachment").on('click', function (e) {
if ($("#HoldStepAttachDocType").data("kendoDropDownList").value() == "Select" ||
$("#HoldStepAttachmentComments").val() == '') {
alert('Document Type and Comments both needs to filled in before uploading a a file')
e.preventDefault();
}
});
function SetDocType(e) {
var grid = $("#HoldStepAttachments").data("kendoGrid");
grid.dataSource.read($("#holdStepID").val());
RefreshHoldStepGrid();
RefreshWorkReqAttachmentsGrid();
}
function UploadData(e)
{
var files = e.files;
$.each(files, function () {
if (!this.extension.toLowerCase().match(/^(.doc|.docx|.ppt|.pptx|.xls|.xlsx|.xlsm|.pdf|.gif|.jpeg|.jpg|.bmp|.png|.txt|.slddrw|.sldprt)$/)) {
alert("Only Word/PowerPoint/Excel/PDF/Image/Text files can be uploaded!")
e.preventDefault();
}
});
e.data = {
holdStepID: $("#holdStepID").val(),
currentRevision: $("#currentRevision").val(),
swrNo: $("#swrNumber").val(),
docType: $("#HoldStepAttachDocType").data("kendoDropDownList").value(),
comments: $("#HoldStepAttachmentComments").val()
};
}
function RefreshHoldStepGrid()
{
var grid = $("#HoldSteps").data("kendoGrid");
grid.dataSource.read($("#workRequestID").val());
}
function DownloadAttachment(e) {
e.preventDefault();
var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
var fileGUID = dataItem.FileGUID;
var attachmentID = dataItem.AttachmentID;
window.location = '/LotTraveler/DownloadFile?fileGuid=' + fileGUID + '&swrNumber=' + "@Model.SWRNumber" + "&typeOfDoc=1";
}
</script>

View File

@ -0,0 +1,226 @@
@model Fab2ApprovalSystem.Models.LTHoldStep
@Html.HiddenFor(model => model.LTWorkRequestID, new { id = "workRequestID" })
@Html.HiddenFor(model => model.ID, new { id = "holdStepID" })
@Html.HiddenFor(model => model.SWRNumber, new { id = "swrNumber" })
@Html.HiddenFor(model => model.Revision, new { id = "currentRevision" })
@Html.HiddenFor(model => model.currentStep, new { id = "currentStep" })
<div class="row">
<div class="col-sm-2">
<div class="control-group">
<label for="DocumentType">Document Type:</label>
<div class="controls" style="width:200px; font-size: 10px">
<div id="ex" class="k-content">
@(Html.Kendo().DropDownList()
.Name("HoldStepAttachDocType")
.DataTextField("Text")
.DataValueField("Value")
.BindTo(new List<SelectListItem>() {
new SelectListItem() {
Text = "Select",
Value = "Select"
},
new SelectListItem() {
Text = "Instructions",
Value = "Instructions"
},
new SelectListItem() {
Text = "Traveler",
Value = "Traveler"
},
new SelectListItem() {
Text = "Other",
Value = "Other"
}
})
.Value("1")
.HtmlAttributes(new { style = "width:100px;" })
)
</div>
</div>
</div>
</div>
<div class="col-sm-10">
<div class="control-group">
@(Html.Kendo().Upload()
.Name("HoldStepAttachment")
.Async(a => a
.Save("HoldStepAttachSaveRev", "LotTraveler")
.AutoUpload(true)
)
.ShowFileList(false)
.Events(events => events.Success("SetDocType").Upload("UploadData")
)
)
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12">
<label for="HoldStepAttachmentComments">Comments:</label>
<textarea class="form-control" rows="3" id="HoldStepAttachmentComments"></textarea>
</div>
</div>
<!--.Save("AttachSave", "LotTraveler", new { holdStepID = Model.ID, currentRevision = Model.Revision, swrNo = Model.SWRNumber })-->
<div class="row">
@(Html.Kendo().Grid<Fab2ApprovalSystem.Models.LTWorkRequestAttachment>()
.Name("HoldStepAttachments")
.Columns(columns =>
{
columns.Bound(a => a.ID).Visible(false);
columns.Bound(a => a.FileGUID).Visible(false);
columns.Bound(a => a.LTHoldStepID).Visible(false);
columns.Bound(a => a.FileName).Template(@<text> @Html.ActionLink(@item.FileName.ToString(), null)</text>).Width("100px");
//.ClientTemplate("<a href='" + GlobalVars.AttachmentUrl + "LotTraveler/#=SWRNumber#/Rev#=Revision#/#=FileGUID#.#=FileExtension#' target='_blank'>#=FileName#</a>");
columns.Bound(a => a.DocType);
columns.Bound(a => a.UploadedByName);
columns.Bound(a => a.UploadDateTime).Format("{0:MM/dd/yy hh:mm:ss}");
columns.Command(c => c.Custom("View").Click("DownloadAttachment")).Width("100px"); ;
})
.Sortable()
.Scrollable()
.HtmlAttributes(new { style = "height:125; width:100%; font-size: 10px" })
.DataSource(dataSource => dataSource
.Ajax()
.ServerOperation(false)
.Model(model =>
{
model.Id(p => p.ID);
})
.PageSize(50)
.Read(read => read.Action("GetHoldStepAttachments", "LotTraveler", new { holdStepID = Model.ID }))
)
)
</div>
<script type="text/javascript">
var fileData;
$("#HoldStepAttachment").on('click', function (e) {
if ($("#HoldStepAttachDocType").data("kendoDropDownList").value() == "Select" ||
$("#HoldStepAttachmentComments").val() == '') {
alert('Document Type and Comments both needs to filled in before uploading a a file')
e.preventDefault();
}
});
function SetDocType(e) {
var model = "@Session["CreateNewRevision"]";
if (model == "true") {
$.ajax({
url: '/LotTraveler/GetRevisedWrkReqIDFromHoldStepID',
type: "GET",
datatype: "json",
data: { prevHoldStepID: parseInt($("#holdStepID").val()) },
success: function (data) {
$("#AddHoldStepAttachmentFormRevision").modal('hide');
var url = '@Url.Action("WorkRequestRevision", "LotTraveler", new { workRequestID = "__id__" })';
url = url.replace('amp;', '');
window.location.href = url.replace('__id__', parseInt(data));
}
})
}
else {
var grid = $("#HoldStepAttachments").data("kendoGrid");
grid.dataSource.read($("#holdStepID").val());
RefreshHoldStepGrid();
RefreshWorkReqAttachmentsGrid();
}
}
function UploadData(e) {
fileData = e;
var files = e.files;
$.each(files, function () {
if (!this.extension.toLowerCase().match(/^(.doc|.docx|.ppt|.pptx|.xls|.xlsx|.xlsm|.pdf|.gif|.jpeg|.jpg|.bmp|.png|.txt)$/)) {
alert("Only Word/PowerPoint/Excel/PDF/Image/Text files can be uploaded!")
e.preventDefault();
}
});
//var baseFlowLocation = $("#BaseFlowLocations").data("kendoDropDownList").value();
//var baseFlowOperation = $("#BaseFlowOperations").data("kendoDropDownList").text();
//var baseFlowOperDesc = $("#txtOperationDesc").val();
//var changeInstructions = $("#ChangeInstructions").val();
//var data = ReturnModelObject();
////data.LTHoldStep = holdStepItem;
//data.RevisionComments = $("#revisionHoldStepComments").val();
e.data = {
workRequestID: $("#workRequestID").val(),
holdStepID: $("#holdStepID").val(),
currentRevision: $("#currentRevision").val(),
swrNo: $("#swrNumber").val(),
docType: $("#HoldStepAttachDocType").data("kendoDropDownList").value(),
revComments: $("#revisionHoldStepAttComments").val(),
comments: $("#HoldStepAttachmentComments").val()
};
}
function RefreshHoldStepGrid() {
var grid = $("#HoldSteps").data("kendoGrid");
grid.dataSource.read($("#workRequestID").val());
}
function RefreshWorkReqAttachmentsGrid() {
var grid = $("#WorkRequestAttachments").data("kendoGrid");
grid.dataSource.read($("@Model.ID").val());
}
//$("#submitHoldStepAttRevComments").on('click', function () {
// $.ajax({
// url: '/LotTraveler/HoldStepAttachSave',
// type: "POST",
// contentType: "application/json; charset=utf-8",
// data: { HoldStepAttachment: fileData, holdStepID: $("#holdStepID").val(), currentRevision: $("#currentRevision").val(), swrNo: $("#swrNumber").val(), docType: $("#docType").data("kendoDropDownList").value() },
// //data: JSON.stringify(fileData),
// success: function (data) {
// $("#WinHoldStepAttRevComments").modal('hide');
// }
// })
//})
function DownloadAttachment(e) {
e.preventDefault();
var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
var fileGUID = dataItem.FileGUID;
var attachmentID = dataItem.AttachmentID;
window.location = '/LotTraveler/DownloadFile?fileGuid=' + fileGUID + '&swrNumber=' + "@Model.SWRNumber" + "&typeOfDoc=1";
}
</script>

View File

@ -0,0 +1,110 @@
<div class="modal fade" id="ReAssignOriginator" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="static">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h4 class="modal-title" id="myModalLabel">Re-Assign Originator From: <label class="bg-danger" id="ReAssignOriginatorFromLabel">Me</label></h4>
</div>
<div class="modal-body">
<div class="control-group">
<div class="row">
<div class="col-sm-5">
<h4 class="modal-title" id="myModalLabel">Re-Assign Originator to:</h4>
<div id='lstReAssignOriginator'>
</div>
</div>
<div class="col-sm-7">
<h4 class="modal-title">Comments (Required):</h4>
<textarea class="form-control" rows="5" id="comments" style="resize: none;"></textarea>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
<button type="button" class="btn btn-primary" id="ConfirmOriginatorReAssignment">Confirm Re-assignment</button>
</div>
</div>
</div>
</div>
<script language="javascript" type="text/javascript">
$(document).ready(function () {
$("#lnkReassignOriginator").click(function (e) {
if ($("#Originator").length > 0)
$("#ReAssignOriginatorFromLabel").text($("#Originator").val());
else
$("#ReAssignOriginatorFromLabel").text($("#txtOriginatorName").val());
$("#comments").val("");
var dataAdapter = new $.jqx.dataAdapter({
datatype: "json",
datafields: [
{ name: "UserID" },
{ name: "FullName" }
],
id: 'id',
url: "/LotTraveler/GetAllUsersList",
});
$("#lstReAssignOriginator").jqxListBox({
multipleextended: false,
theme: "arctic",
source: dataAdapter,
displayMember: "FullName",
valueMember: "UserID",
width: 200,
height: 200
});
$("#ReAssignOriginator").modal('show');
});
$('#ConfirmOriginatorReAssignment').on('click', function () {
if ($('#lstReAssignOriginator').jqxListBox('getSelectedItem') == null) {
alert("You must select a new originator");
return;
}
if ($("#comments").val() == "") {
alert("Comments are required");
return;
}
$('#ConfirmOriginatorReAssignment').attr("disabled", true);
$.ajax({
url: "/LotTraveler/ReAssignOriginatorByAdmin",
type: "POST",
datatype: "json",
data: {
workRequestID: $("#LTWorkRequestID").val(),
comments: $("#comments").val(),
newOriginatorId: $("#lstReAssignOriginator").jqxListBox("getSelectedItem").value,
},
success: function (data) {
$("#ReAssignOriginator").modal('hide');
var url = '@Url.Action("Edit", "LotTraveler", new { issueID = "__id__" })';
url = url.replace('amp;', '');
if ($("#ReturnURL").length > 0)
url = $("#ReturnURL").val();
window.location.href = url.replace('__id__', $("#LTWorkRequestID").val());
},
error: function (result) {
$('#ConfirmOriginatorReAssignment').attr("disabled", false);
alert("Server error while changing originator");
}
});
});
});
</script>

View File

@ -0,0 +1,230 @@
@model Fab2ApprovalSystem.Models.LTLotTravelerHoldSteps
@Html.HiddenFor(model => model.LTLotID, new { id = "LotID" })
@Html.HiddenFor(model => model.ID, new { id = "ltHoldStepID" })
@Html.HiddenFor(model => model.SWRNumber, new { id = "swrNumber" })
@Html.HiddenFor(model => model.CurrentRevision, new { id = "currentRevision" })
@Html.HiddenFor(model => model.WorkRequestID, new { id = "workRequestID" })
@*@Html.HiddenFor(model => model.currentStep, new { id = "currentStep" })*@
<div class="row">
<div class="col-sm-2">
<div class="control-group">
<label for="BaseFlow">Document Type:</label>
<div class="controls" style="width:200px; font-size: 10px">
<div id="ex" class="k-content">
@(Html.Kendo().DropDownList()
.Name("docType")
.DataTextField("Text")
.DataValueField("Value")
.BindTo(new List<SelectListItem>() {
new SelectListItem() {
Text = "Instructions",
Value = "Instructions"
},
new SelectListItem() {
Text = "Traveler",
Value = "Traveler"
},
new SelectListItem() {
Text = "Other",
Value = "Other"
}
})
.Value("1")
.HtmlAttributes(new { style = "width:100px;" })
)
</div>
</div>
</div>
</div>
<div class="col-sm-10">
<div class="control-group">
@(Html.Kendo().Upload()
.Name("LotTravHoldStepAttachment")
.Async(a => a
.Save("LotTravHoldStepAttachSaveRev", "LotTraveler")
.AutoUpload(true)
)
.ShowFileList(false)
.Events(events => events.Success("SetDocType").Upload("UploadData")
)
)
</div>
</div>
</div>
<!--.Save("AttachSave", "LotTraveler", new { ltHoldStepID = Model.ID, currentRevision = Model.Revision, swrNo = Model.SWRNumber })-->
<div class="row">
@(Html.Kendo().Grid<Fab2ApprovalSystem.Models.LTLotTravAttachment>()
.Name("LTHoldStepAttachments")
.Columns(columns =>
{
columns.Bound(a => a.ID).Visible(false);
columns.Bound(a => a.FileGUID).Visible(false);
columns.Bound(a => a.LTLotTravHoldStepID).Visible(false);
columns.Bound(a => a.FileName).Template(@<text> @Html.ActionLink(@item.FileName.ToString(), null)</text>).Width("100px");
//.ClientTemplate("<a href='" + GlobalVars.AttachmentUrl + "LotTraveler/#=SWRNumber#/Rev#=Revision#/#=FileGUID#.#=FileExtension#' target='_blank'>#=FileName#</a>");
columns.Bound(a => a.DocType);
columns.Bound(a => a.UploadedByName);
columns.Bound(a => a.UploadTime).Format("{0:MM/dd/yy hh:mm:ss}");
columns.Command(c => c.Custom("View").Click("DownloadAttachment")).Width("100px");
})
.Sortable()
.Scrollable()
.HtmlAttributes(new { style = "height:125; width:100%; font-size: 10px" })
.DataSource(dataSource => dataSource
.Ajax()
.ServerOperation(false)
.Model(model =>
{
model.Id(p => p.ID);
})
.PageSize(50)
.Read(read => read.Action("GetLTHoldStepAttachments", "LotTraveler", new { ltHoldStepID = Model.ID }))
)
)
</div>
<script type="text/javascript">
var fileData;
function SetDocType(e) {
//alert(newSession);
if (newSession) {
newSession = false;
grid = $("#HoldSteps").data("kendoGrid");
grid.dataSource.read($("#LotID").val());
$("#AddLTHoldStepAttachmentFormRevision").modal('hide');
// update the header and the Revision
var urlString = '/LotTraveler/GetLotTravelerHeader'
$.ajax({
type: "Post",
url: urlString,
type: "GET",
contentType: "application/json; charset=utf-8",
data: { ltLotID: $("#LotID").val() },
success: function (data) {
// update the header and the Revision
//alert(data.LastUpdate);
$("#txtUpdatedBy").val(data.LastUpdatedBy);
$("#txtLastUpdate").val((formatJSONDate(data.LastUpdate)))
$("#RevNumber").text("Fab2 Electronic Lot Traveler - Lot#" + data.LotNumber + " Rev " + data.LotTravCurrentRevision)
$("#RevNumber").css("color", "blue");
var url = "/LotTraveler/GetLotTravRevisions";
$.ajax({
url: url,
type: "GET",
datatype: "json",
data: {
ltLotID: $("#LotID").val()
},
success: function (data) {
$("#Revisions").data("kendoDropDownList").dataSource.data(data);
},
error: function (result) {
alert("Failed " + result);
}
});
},
error: function (result) {
alert("Failed " + result);
}
});
}
else {
var grid = $("#LTHoldStepAttachments").data("kendoGrid");
grid.dataSource.read($("#ltHoldStepID").val());
grid = $("#HoldSteps").data("kendoGrid");
grid.dataSource.read($("#workRequestID").val());
}
}
function UploadData(e) {
fileData = e;
var files = e.files;
$.each(files, function () {
if (!this.extension.toLowerCase().match(/^(.doc|.docx|.ppt|.pptx|.xls|.xlsx|.xlsm|.pdf|.gif|.jpeg|.jpg|.bmp|.png|.txt)$/)) {
alert("Only Word/PowerPoint/Excel/PDF/Image/Text files can be uploaded!")
e.preventDefault();
}
});
e.data = {
// workRequestID: $("#workRequestID").val(),
ltHoldStepID: $("#ltHoldStepID").val(),
currentWRRevision: $("#currentRevision").val(),
swrNo: $("#swrNumber").val(),
docType: $("#docType").data("kendoDropDownList").value(),
revComments: $("#revisionHoldStepAttComments").val()
};
}
function RefreshHoldStepGrid() {
var grid = $("#HoldSteps").data("kendoGrid");
grid.dataSource.read($("#ltHoldStepID").val());
}
@*function RefreshWorkReqAttachmentsGrid() {
var grid = $("#WorkRequestAttachments").data("kendoGrid");
grid.dataSource.read($("@Model.ID").val());
}*@
function DownloadAttachment(e) {
e.preventDefault();
var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
var fileGUID = dataItem.FileGUID;
var attachmentID = dataItem.AttachmentID;
window.location = '/LotTraveler/DownloadFile?fileGuid=' + fileGUID + '&swrNumber=' + "@Model.SWRNumber" + "&typeOfDoc=1";
}
//$("#submitHoldStepAttRevComments").on('click', function () {
// $.ajax({
// url: '/LotTraveler/HoldStepAttachSave',
// type: "POST",
// contentType: "application/json; charset=utf-8",
// data: { HoldStepAttachment: fileData, ltHoldStepID: $("#ltHoldStepID").val(), currentRevision: $("#currentRevision").val(), swrNo: $("#swrNumber").val(), docType: $("#docType").data("kendoDropDownList").value() },
// //data: JSON.stringify(fileData),
// success: function (data) {
// $("#WinHoldStepAttRevComments").modal('hide');
// }
// })
//})
</script>

View File

@ -0,0 +1,61 @@

@{
ViewBag.Title = "_LotTravelerLayout";
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>@ViewBag.Title - Fab2Approval</title>
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/kendo")
@Styles.Render("~/Content/kendo/css")
@Styles.Render("~/Content/css")
@Scripts.Render("~/Content/jqw/jq")
@Styles.Render("~/Content/jqw/css")
@Scripts.Render("~/bundles/modernizr")
@Scripts.Render("~/bundles/bootstrap")
</head>
<body class="navbar-inner">
<div class=" navbar navbar-inverse navbar-fixed-top">
<div>
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
@*@Html.ActionLink("My Tasks", "Index", "Home", new { tabName = "MyTasks" }, new { @class = "navbar-brand" })
@Html.ActionLink("All Tasks", "Index", "Home", new { tabName = "AllTasks" }, new { @class = "navbar-brand" })*@
@Html.ActionLink("My Tasks", "MyTasks", "Home", null, new { @class = "navbar-brand" })
@Html.ActionLink("All Documents", "AllDocuments", "Home", null, new { @class = "navbar-brand" })
@Html.ActionLink("Special Work Request", "SpecialWorkRequestList", "Home",null, new { @class = "navbar-brand" })
</div>
<div class="navbar-collapse collapse">
@Html.Partial("_LoginPartial")
</div>
</div>
</div>
<div>
@RenderBody()
@*<hr />*@
<footer>
<p>&copy; @DateTime.Now.Year - Infineon Technologies</p>
</footer>
</div>
@RenderSection("scripts", required: false)
</body>
</html>