<%@ Page Title="" Language="C#" MasterPageFile="~/Maintenance/MaintenanceBase.master" AutoEventWireup="true" CodeFile="WorkOrderMaintenance.aspx.cs" Inherits="Maintenance_WorkOrderMaintenance" %> <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server"> <link href="<%=GetFileUrlWithVersion("css/maintenance.css")%>" rel="stylesheet" /> <style type="text/css"> ::-ms-clear, ::-ms-reveal { display: none; } .selectinput { width: 150px; margin-right: 10px; } .a { text-decoration: none; color: #2140fb; } .ctl_button { font-family: 'CalciteWebCoreIcons'; display: block; margin: 6px auto; width: 60px; height: 22px; line-height: 21px; padding: 0; } #dialog_description { padding: 2px; height: 60px; } #dialogdatatb td { padding-top: 30px; } .a { text-decoration: none; color: #2140fb; } .group_table .main_table { table-layout: fixed; } .group_table .main_table thead tr { /*display: block;*/ } .group_table .main_table tbody { /*height: 280px;*/ /*display: block;*/ /*overflow: auto;*/ } .group_table .main_table th { /*width: 120px;*/ } .group_table .main_table td { /*width: 120px;*/ white-space: nowrap; /*word-break: keep-all;*/ text-overflow: ellipsis; overflow: hidden; } .group_table .main_table td div { /*width: 120px;*/ overflow: hidden; white-space: nowrap; word-break: keep-all; text-overflow: ellipsis; } .td_controller { vertical-align: middle; padding: 40px 8px; /*border-left: 1px solid #b0b0b0; border-right: 1px solid #b0b0b0;*/ } .ctl_button { font-family: 'CalciteWebCoreIcons'; display: block; margin: 6px auto; width: 60px; height: 22px; line-height: 21px; padding: 0; } .div_filter .dropdown { width: 100px; } .statussetting:before { font-family: CalciteWebCoreIcons, FontAwesome; content: '\e670'; } .data-grid .data-grid-header .data-column-header .data-column-header-text { white-space: unset; overflow: unset; text-overflow: unset; } .ui-popup-mask .ui-popup-container .ui-popup-body .class-content { overflow: auto; height: 100%; } .ui-popup-mask .ui-popup-container .ui-popup-body .class-content > .comm { border: none; height: 100%; margin-left: 0; width: initial; } .ui-popup-mask .ui-popup-container .ui-popup-body .class-content > .comm .title-bar { display: none; } .ui-popup-mask .ui-popup-container .ui-popup-header > label { flex: 0 0 auto; margin: 0 4px; box-sizing: border-box; cursor: pointer; width: 30px; height: 30px; background-color: #fff; border-radius: 15px; display: flex; align-items: center; justify-content: center; transition: background-color .2s } .ui-popup-mask .ui-popup-container .ui-popup-header > label > svg { fill: #333; width: 14px; height: 14px; transition: opacity .2s } .ui-popup-mask .ui-popup-container .ui-popup-header > label:hover { background-color: rgba(255, 255, 255, .6) } .ui-popup-mask .ui-popup-container .ui-popup-header > label:hover > svg { opacity: .6 } .ui-popup-mask .ui-popup-container .ui-popup-header > label.disabled { cursor: default; opacity: .6 } .ui-popup-mask .ui-popup-container .ui-popup-header > label.disabled:hover { background-color: #fff } .ui-popup-mask .ui-popup-container .ui-popup-header > label.disabled:hover > svg { opacity: 1; opacity: initial } </style> <link href="<%=GetFileUrlWithVersion("../css/panel.css")%>" rel="stylesheet" /> <link href="<%=GetFileUrlWithVersion("../css/jquery.datetimepicker.css")%>" rel="stylesheet" /> <link href="<%=GetFileUrlWithVersion("../fic/css/datepicker.min.css")%>" rel="stylesheet" /> <script type="text/javascript" src="<%=GetFileUrlWithVersion("../js/vue.min.js")%>"></script> <script>Vue.config.productionTip = false; Vue.config.silent = true;</script> <script type="text/javascript" src="<%=GetFileUrlWithVersion("../js/components/datagrid.js")%>"></script> <script src="<%=GetFileUrlWithVersion("../Security/js/controls.js")%>" type="text/javascript"></script> <script src="<%=GetFileUrlWithVersion("js/inputdatactr.js")%>" type="text/javascript"></script> <script src="<%=GetFileUrlWithVersion("../js/jquery.datetimepicker.full.js")%>"></script> <script src="<%=GetFileUrlWithVersion("../fic/js/datepicker.min.js")%>"></script> <script src="<%=GetFileUrlWithVersion("../js/editmultiselect.js")%>" type="text/javascript"></script> <script src="<%=GetFileUrlWithVersion("../js/editableselect.js")%>" type="text/javascript"></script> <script src="<%=GetFileUrlWithVersion("../js/gridlayout.js")%>" type="text/javascript"></script> <script src="<%=GetFileUrlWithVersion("js/manageworkorder.js")%>" type="text/javascript"></script> <script src="<%=GetFileUrlWithVersion("js/workordersendemail.js")%>" type="text/javascript"></script> <script src="<%=GetFileUrlWithVersion("js/workordertabitems.js")%>" type="text/javascript"></script> <script src="<%=GetFileUrlWithVersion("js/workorderwidgets.js")%>" type="text/javascript"></script> <script type="text/javascript"> var workOrders = []; var workOrderStatus = []; var workOrderTypes = []; var woAdvisors = []; //var contactparam; var statusparam; var CID = "<%=CID %>"; var assetid = "<%=AssetID %>"; var gridLayoutID = "WorkOrder"; var IsCustomerRecordAllow = <%=IsCustomerRecordAllow ?"true":"false"%>; var IsAdmin =<%=IsAdmin ?"true":"false"%>; var IsAdvisor =<%=IsAdvisor ?"true":"false"%>; var AllowReopenWorkorders = <%=AllowReopenWorkorders ?"true":"false"%>; var AllowWorkOrderSurveys = <%=AllowWorkOrderSurveys ?"true":"false"%>; var AllowCommunicate =<%=AllowCommunicate ?"true":"false"%>; var AllowInspection =<%=AllowInspection ?"true":"false"%>; var AllowCustomer =<%=AllowCustomer ?"true":"false"%>; var WOReadOnly = <%=WOReadOnly ?"true":"false"%>; var CRReadOnly =<%=CRReadOnly ?"true":"false"%>; var COMMReadOnly = <%=COMMReadOnly ?"true":"false"%>; var AllowReassignWorkorders = <%=AllowReassignWorkorders ?"true":"false"%>; var AllowDeleteAtta = <%=AllowDeleteAtta ?"true":"false"%>; var WorkorderParams = {}; var wowidgetobj = null; var widgetdata = []; if (AllowCommunicate) { widgetdata.push({ Values: { Category: 'WorkOrder', WidgetId: 'CustomerCommunication', WidgetName: GetTextByKey('P_WO_CUSTOMERCOMMUNICATION', 'Customer Communication'), Visible: false } }); } widgetdata.push({ Values: { Category: 'WorkOrder', WidgetId: 'InternalComments', WidgetName: GetTextByKey('P_WO_INTERNALCOMMENTS', 'Internal Comments'), Visible: false } }, { Values: { Category: 'WorkOrder', WidgetId: 'Alerts', WidgetName: GetTextByKey('P_WO_ALERTS', 'Alerts'), Visible: false } }, { Values: { Category: 'WorkOrder', WidgetId: 'Segments', WidgetName: GetTextByKey('P_WO_SEGMENTS', 'Segments'), Visible: false } }, { Values: { Category: 'WorkOrder', WidgetId: 'Attachments', WidgetName: GetTextByKey('P_WO_ATTACHMENTS', 'Attachments'), Visible: false } }); if (AllowInspection) { widgetdata.push({ Values: { Category: 'WorkOrder', WidgetId: 'Inspections', WidgetName: GetTextByKey('P_WO_INSPECTIONS', 'Inspections'), Visible: false } }); } if (AllowCustomer) { widgetdata.push( { Values: { Category: 'WorkOrder', WidgetId: 'Estimates', WidgetName: GetTextByKey('P_WO_ESTIMATES', 'Estimates'), Visible: false } }, { Values: { Category: 'WorkOrder', WidgetId: 'Invoices', WidgetName: GetTextByKey('P_WO_INVOICES', 'Invoices'), Visible: false } }); } var MSGWebSocketURL = "<%=MSGWebSocketURL%>"; var nowDate = new DateFormatter().formatDate(new Date("<%=NowDate %>"), 'm/d/Y'); var currentdate = "<%=NowDate %>"; const ui = window['lib-ui']; function worequest(method, param, callback, error) { _network.request("Maintenance/WorkOrderMaintenance.aspx", -1, method, param, callback, error || function (e) { showmaskbg(false, true); showAlert(GetTextByKey('P_WO_PAGEERROR', 'An unknown error occurred. Please refresh page.'), GetTextByKey('P_WO_QUERY', 'Query')); }); } function crrequest(method, param, callback, error) { _network.request("Maintenance/AddCustomerRecord.aspx", -1, method, param, callback, error || function (e) { showmaskbg(false, true); showAlert(GetTextByKey('P_UM_PAGEERROR', 'An unknown error occurred. Please refresh page.'), GetTextByKey('P_UM_QUERY', 'Query')); }); } function alertrequest(method, param, callback, error) { _network.request("Maintenance/AlertsManagement.aspx", -1, method, param, callback, error || function (e) { showmaskbg(false, true); showAlert(GetTextByKey('P_WO_PAGEERROR', 'An unknown error occurred. Please refresh page.'), GetTextByKey('P_WO_QUERY', 'Query')); }); } function showConfirm1(msg, title, fok, fcancel) { $('#dialog_statuschange .maskbg').css('display', ''); _dialog.showConfirm(msg, title, function (e) { $('#dialog_statuschange .maskbg').css('display', 'none'); if (typeof fok === 'function') { fok(e); } }, function () { $('#dialog_statuschange .maskbg').css('display', 'none'); }); } function getWorkorderParams() { worequest("GetWorkorderParams", null, function (data) { if (!data || typeof (data) === "string") { return; } WorkorderParams = data; }, function (err) { }); } function OnDelete() { var index = grid_dt.selectedIndex; if (index < 0) { showAlert(GetTextByKey("P_WO_PLEASESELECTAWORKORDER", "Please select a work order."), GetTextByKey("P_WORKORDER", "Work Order")); return; } var wo = grid_dt.source[index].Values; if (!wo) { workOrderID = undefined; return; } var alerttitle = GetTextByKey("P_WO_DELETEWORKORDER", "Delete Work Order"); showConfirm(GetTextByKey("P_WO_DOYOUWANTTODELETETHEWORKORDER", 'Do you want to delete the work order?'), alerttitle, function () { worequest("DeleteWorkOrder", wo.Id.Value, function (data) { if (data == "-1") showAlert(GetTextByKey("P_WO_WORKORDERCANNOTBEDELETEDBECAUSEITISINUSE", 'Work order can not be deleted because it is in use.'), alerttitle); else OnRefresh(); }, function (err) { showAlert(GetTextByKey("P_WO_FAILEDTODELETETHISWORKORDER", 'Failed to delete this work order.'), alerttitle); }); }); } function CloseDialog(type) { $('#dialog_maintenancerecord').hideDialog(); $('#dialog_workorder').hideDialog(); showmaskbg(false); setPageTitle(GetTextByKey("P_WORKORDER", "Work Order"), true); } function ShowWorkOrderDialog(type) { //$('#dialog_workorder .dialog-title span.title').text(type === "add" ? "Add Work Order" : "Edit Work Order"); showmaskbg(true); $('#dialog_workorder') .attr('act', type) .showDialogRight(); } function OnAdd() { $('#iframeworkorder').attr('src', 'AddWorkOrder.aspx?mid=' + assetid); setPageTitle(GetTextByKey("P_WO_ADDWORKORDER", "Add Work Order"), true); ShowWorkOrderDialog(); } var workOrderID; function OnEdit() { var index = grid_dt.selectedIndex; if (index < 0) { showAlert(GetTextByKey("P_WO_PLEASESELECTAWORKORDER", "Please select a work order."), GetTextByKey("P_WORKORDER", "Work Order")); return; } var wo = grid_dt.source[index].Values; if (!wo) { workOrderID = undefined; return; } workOrderID = wo.Id.Value; if (wo.MaintenanceID) { execIframeFunc("init", [wo.AssetId, wo.MaintenanceID], "iframemaintenancerecord"); showmaskbg(true); $('#dialog_maintenancerecord') .attr('act', 'edit') .showDialogRight(); } else { if (!$("#iframeworkorder").attr("src")) { $("#iframeworkorder").attr("src", 'AddWorkOrder.aspx?woid=' + workOrderID); } else { execIframeFunc("loadworkorder", [workOrderID], "iframeworkorder"); } ShowWorkOrderDialog(); } } var loading = false; function OnRefresh(serchbtn) { if (loading) return; loading = true; showloading(true); var locations = $('#div_locations').dropdownVals(); var departments = $('#div_departments').dropdownVals(); var advisors = $('#div_advisors').dropdownVals(); var ordertypes = $('#div_ordertypes').dropdownVals(); var statuses = $('#div_statuses').dropdownVals(); var p = { AssetID: assetid == "" ? -1 : eval(assetid), SearchText: $.trim($('#searchinputtxt').val()), Contacts: [], OrderTypes: ordertypes, Statuses: statuses, AssetGroups: [], Locations: locations, Departments: departments, Advisors: advisors }; //if (contactparam) // p.Contacts = contactparam.selectedvalue; if (statusparam) p.Status = statusparam.selectedvalue; p.AssetGroups = $('#div_assetgroup').dropdownVals(); var showmaintenance = $('#chkshowmaintenance').prop("checked"); p.ShowMaintenance = showmaintenance; p.Completed = $('#selcompleted').val(); saveTempFilters(); worequest("GetWorkOrders", htmlencode(JSON.stringify(p)), function (data) { loading = false; if (!$("#dialog_workorder").is(':visible') && !$("#dialog_maintenancerecord").is(':visible') && !$("#dialog_alerts").is(':visible') && !$("#dialog_workorderstatus").is(':visible')) showloading(false); $('#tbody_workorder').empty(); currentShownIndex = -1; if (typeof (data) === "string") { showAlert(data, GetTextByKey("P_WO_ERROR", 'Error')); return; } if (data) { workOrders = data.WorkOrders; workOrderStatus = data.WorkOrderStatus; workOrderTypes = data.WorkOrderTypes; woAdvisors = data.Advisors; if (serchbtn) { ManageDeleteAndRestore(p.SearchText, data.DeleteAndRestoreWorkOrder); } } else workOrders = []; showWorkOrders(workOrders); //if (manageWorkorderCtrl) { // manageWorkorderCtrl.setData(workOrders); //} }, function (err) { loading = false; if (!$("#dialog_workorder").is(':visible') && !$("#dialog_maintenancerecord").is(':visible') && !$("#dialog_alerts").is(':visible') && !$("#dialog_workorderstatus").is(':visible')) showloading(false); }); } function ManageDeleteAndRestore(wonumber, kv) { if (!kv) return; if (kv.Key !== "") { var canrestore = parseInt(kv.Value); var alerttitle = GetTextByKey("P_WORKORDER", "Work Order"); if (canrestore == 0) { showAlert(GetTextByKey('P_WO_XXX', 'Work Order {0} has been deleted.Contact Administrator to restore.').replace('{0}', wonumber), alerttitle); } else { showConfirm(GetTextByKey("P_WO_XXX", 'Work Order {0} has been deleted.Would you like to restore it?').replace('{0}', wonumber), alerttitle, function () { worequest("RestoreDeleteWorkOrder", kv.Key, function (data) { if (data == "OK") OnRefresh(); }, function (err) { showAlert(GetTextByKey("P_WO_XXX", 'Failed to restore this work order.'), alerttitle); }); }); } } } function OnPrint() { var index = grid_dt.selectedIndex; if (index < 0) { showAlert(GetTextByKey("P_WO_PLEASESELECTAWORKORDER", "Please select a work order."), GetTextByKey("P_WORKORDER", "Work Order")); return; } var wo = grid_dt.source[index].Values; if (!wo) { workOrderID = undefined; return; } workOrderID = wo.Id.Value; window.open("../Print.aspx?pt=1&wo=" + workOrderID); } /**************************Start Manage Alert********************************/ /*****************************************************************************/ var workorder; function ManageAlerts(wo) { if (!wo) { workOrderID = undefined; return; } workorder = wo; workOrderID = wo.Id.Value; showmaskbg(true); $('#dialog_alerts') .attr('act', 'add') .css({ 'top': (document.documentElement.clientHeight - $('#dialog_alerts').height()) / 3, 'left': (document.documentElement.clientWidth - $('#dialog_alerts').width()) / 2 }) .showDialog(); $('#editor_mgroups').empty(); $('#editor_availables').empty(); // 加载alert信息 $('#dialog_alerts .maskbg').css('display', ''); worequest('GetAlertsForWorkOrder', JSON.stringify([workOrderID, workorder.AssetId]), function (data) { if (data && typeof (data) !== "string") { showSelectedMachine(!data.Alerts ? [] : data.Alerts); getMatchAvailableMachines(!data.AssetAlerts ? [] : data.AssetAlerts); } $('#dialog_alerts .maskbg').css('display', 'none'); }, function (err) { showAlert(GetTextByKey("P_WO_FAILEDTOLOADALERTS", 'Failed to load alerts.'), GetTextByKey("P_WO_MANAGEALERTS", 'Manage Alerts')); }); } function getMatchAvailableMachines(assetAlerts) { var selected = []; for (var i = 0; i < grid_dtsm.source.length; i++) { var m = grid_dtsm.source[i].Values; selected.push(m.AlertID); } var _availableMachines = []; for (var i = 0; i < assetAlerts.length; i++) { var m = assetAlerts[i]; if (m.WorkOrderID == 0 && workorder.AssetId == m.MachineID && $.inArray(m.AlertID, selected) < 0) { var has = false; for (var j = 0; j < grid_dtsm.source.length; j++) { var m1 = grid_dtsm.source[j]; if (m1.AlertID == m.AlertID) { has = true; break; } } if (!has) { _availableMachines.push(m); } } } showAvailableMachine(_availableMachines); } function showAvailableMachine(data) { var rows = []; for (var i = 0; i < data.length; i++) { var r = data[i]; for (var j in r) { if (j === "Completed" && typeof r[j] !== "object") { r[j] = { DisplayValue: r.Completed ? "Yes" : "No", Value: r[j] }; } } var fr = { Values: r }; rows.push(fr); } grid_dtam.setData(rows); } var grid_dtam; function InitGridAvailableMachines() { grid_dtam = new GridView('#availablemachinelist'); grid_dtam.lang = { all: GetTextByKey("P_GRID_ALL", "(All)"), ok: GetTextByKey("P_GRID_OK", "OK"), reset: GetTextByKey("P_GRID_RESET", "Reset") }; var list_columns = [ { name: 'AlertID', caption: GetTextByKey("P_WO_ALERTID", "Alert ID"), valueIndex: 'AlertID', css: { 'width': 70, 'text-align': 'left' } }, { name: 'Completed', caption: GetTextByKey("P_WO_COMPLETED", "Completed"), valueIndex: 'Completed', css: { 'width': 90, 'text-align': 'left' } }, { name: 'Description', caption: GetTextByKey("P_WO_DESCRIPTION", "Description"), valueIndex: 'Description', css: { 'width': 145, 'text-align': 'right' } }, { name: 'ServiceDescription', caption: GetTextByKey("P_WO_SERVICEDESCRIPTION", "Service Description"), valueIndex: 'ServiceDescription', css: { 'width': 145, 'text-align': 'right' } } ]; var columns = []; // head for (var hd in list_columns) { var col = {}; col.name = list_columns[hd].name; col.caption = list_columns[hd].caption; col.visible = true; col.sortable = true; col.width = list_columns[hd].css.width; col.align = list_columns[hd].css["text-align"] col.key = list_columns[hd].valueIndex; columns.push(col); } grid_dtam.canMultiSelect = true; grid_dtam.columns = columns; grid_dtam.init(); grid_dtam.rowdblclick = function (rowindex) { var rowdata = grid_dtam.source[rowindex]; if (rowdata) { grid_dtam.source.splice(rowindex, 1); grid_dtam.setData(grid_dtam.source); grid_dtsm.source.push(rowdata); grid_dtsm.setData(grid_dtsm.source); } }; grid_dtam.selectedrowchanged = function (rowindex) { var rowdata = grid_dtam.source[rowindex]; if (rowdata) { } } } function showSelectedMachine(data) { var rows = []; for (var i = 0; i < data.length; i++) { var r = data[i]; for (var j in r) { if (j === "Completed" && typeof r[j] !== "object") { r[j] = { DisplayValue: r.Completed ? "Yes" : "No", Value: r[j] }; } } var fr = { Values: r }; rows.push(fr); } grid_dtsm.setData(rows); } var grid_dtsm; function InitGridSelectedMachines() { grid_dtsm = new GridView('#selectedmachinelist'); grid_dtsm.lang = { all: GetTextByKey("P_GRID_ALL", "(All)"), ok: GetTextByKey("P_GRID_OK", "OK"), reset: GetTextByKey("P_GRID_RESET", "Reset") }; var list_columns = [ { name: 'AlertID', caption: GetTextByKey("P_WO_ALERTID", "Alert ID"), valueIndex: 'AlertID', css: { 'width': 70, 'text-align': 'left' } }, { name: 'Completed', caption: GetTextByKey("P_WO_COMPLETED", "Completed"), valueIndex: 'Completed', css: { 'width': 90, 'text-align': 'left' } }, { name: 'Description', caption: GetTextByKey("P_WO_DESCRIPTION", "Description"), valueIndex: 'Description', css: { 'width': 145, 'text-align': 'right' } }, { name: 'ServiceDescription', caption: GetTextByKey("P_WO_SERVICEDESCRIPTION", "Service Description"), valueIndex: 'ServiceDescription', css: { 'width': 145, 'text-align': 'right' } } ]; var columns = []; // head for (var hd in list_columns) { var col = {}; col.name = list_columns[hd].name; col.caption = list_columns[hd].caption; col.visible = true; col.sortable = true; col.width = list_columns[hd].css.width; col.align = list_columns[hd].css["text-align"] col.key = list_columns[hd].valueIndex; if (list_columns[hd].type) { col.type = list_columns[hd].type; } columns.push(col); } grid_dtsm.canMultiSelect = true; grid_dtsm.columns = columns; grid_dtsm.init(); grid_dtsm.rowdblclick = function (rowindex) { var rowdata = grid_dtsm.source[rowindex]; if (rowdata) { grid_dtsm.source.splice(rowindex, 1); grid_dtsm.setData(grid_dtsm.source); grid_dtam.source.push(rowdata); grid_dtam.setData(grid_dtam.source); } }; grid_dtsm.selectedrowchanged = function (rowindex) { var rowdata = grid_dtsm.source[rowindex]; if (rowdata) { } } } function OnEditorAdd() { var indexs = grid_dtam.selectedIndexes; if (indexs.length <= 0) return; var rowstemp = []; for (var i = 0; i < indexs.length; i++) { var rowindex = indexs[i]; var rowdata = grid_dtam.source[rowindex]; rowstemp.push(rowdata); } var index = grid_dtsm.source.length; for (var i = 0; i < rowstemp.length; i++) { var rowdata = rowstemp[i]; grid_dtam.source.splice(grid_dtam.source.indexOf(rowdata), 1); grid_dtsm.source.splice(index, 0, rowdata); index++; } grid_dtam.setData(grid_dtam.source); grid_dtsm.setData(grid_dtsm.source); } function OnEditorAddAll() { for (var i = 0; i < grid_dtam.source.length; i++) { var rowindex = grid_dtam.source[i]; var rowdata = grid_dtam.source[i]; grid_dtsm.source.push(rowdata); } grid_dtsm.setData(grid_dtsm.source); grid_dtam.source = []; grid_dtam.setData(grid_dtam.source); } function OnEditorRemove() { var indexs = grid_dtsm.selectedIndexes; if (indexs.length <= 0) return; var rowstemp = []; for (var i = 0; i < indexs.length; i++) { var rowindex = indexs[i]; var rowdata = grid_dtsm.source[rowindex]; rowstemp.push(rowdata); } var index = grid_dtam.source.length; for (var i = 0; i < rowstemp.length; i++) { var rowdata = rowstemp[i]; grid_dtsm.source.splice(grid_dtsm.source.indexOf(rowdata), 1); grid_dtam.source.splice(index, 0, rowdata); index++; } grid_dtsm.setData(grid_dtsm.source); grid_dtam.setData(grid_dtam.source); } function OnEditorRemoveAll() { for (var i = 0; i < grid_dtsm.source.length; i++) { var rowindex = grid_dtsm.source[i]; var rowdata = grid_dtsm.source[i]; grid_dtam.source.push(rowdata); } grid_dtam.setData(grid_dtam.source); grid_dtsm.source = []; grid_dtsm.setData(grid_dtsm.source); } function AssignedAlertsToWorkOrder() { if (!workOrderID) return; var alertids = []; for (var i = 0; i < grid_dtsm.source.length; i++) { var m = grid_dtsm.source[i].Values; alertids.push(m.AlertID); } $('#dialog_alerts .maskbg').css('display', ''); alertrequest("AssignedAlertsToWorkOrder", workOrderID + String.fromCharCode(170) + JSON.stringify(alertids), function (data) { if (data !== 'OK') { showAlert(data, GetTextByKey("P_WO_SAVEALERTS", 'Save alerts')); } else { $('#dialog_alerts').hideDialog(); showmaskbg(false) } $('#dialog_alerts .maskbg').css('display', 'none'); showmaskbg(false); }, function (err) { showAlert(GetTextByKey("P_WO_FAILEDTOSAVEALERTS", 'Failed to save alerts.'), GetTextByKey("P_WO_SAVEALERTS", 'Save alerts')); $('#dialog_alerts .maskbg').css('display', 'none'); showmaskbg(false); }); } /**************************End Manage Alert********************************/ /*****************************************************************************/ //function GetContacts() { // worequest('GetContacts', '', function (data) { // if (typeof (data) === "string") { // showAlert(data, 'Error'); // return; // } // var contactdata = []; // for (var i = 0; i < data.length; i++) { // var contact = { // Key: data[i].IID, Value: data[i].DisplayName // }; // contactdata.push(contact); // } // contactparam = { // items: contactdata, // selectedvalue: [] // }; // var iptalertype = editmultiselect(contactparam); // $('#div_contact').append(iptalertype); // }); //} //function GetStatus() { // var items = []; // items.push({ Key: "Assigned", Value: "Assigned" }); // items.push({ Key: "Unassigned", Value: "Unassigned" }); // items.push({ Key: "In Progress", Value: "In Progress" }); // items.push({ Key: "Completed", Value: "Completed" }); // statusparam = { // items: items, // selectedvalue: [] // }; // var iptalertype = editmultiselect(statusparam); // $('#div_status').append(iptalertype); //} //function GetAssetGroups() { // alertrequest('GetAssetGroups', '', function (data) { // if (typeof (data) === "string") { // showAlert(data, GetTextByKey("P_WO_ERROR", 'Error')); // return; // } // $('#div_assetgroup').css('width', 120).dropdown(data, { // search: true, // multiselect: true, // textKey: 'Value', // valueKey: 'Key' // }); // var p = getCookie("WorkOrderFilters"); // if (!p) { // var data = JSON.parse(htmldecode(decodeURIComponent(p))); // if (data) { // $('#div_assetgroup').dropdownVals(data.AssetGroups || []); // } // } // }); //} //*********************************Begin Detault**************************************************// function GetLocationsAndDepartments() { $('#div_assetgroup').empty(); $('#div_locations').empty(); $('#div_departments').empty(); $('#div_advisors').empty(); $('#div_ordertypes').empty(); $('#div_statuses').empty(); worequest('GetFilterDataSource', '', function (data) { if (typeof (data) === "string") { showAlert(data, GetTextByKey("P_AM_ERROR", 'Error')); return; } $('#div_assetgroup').css('width', 120).dropdown(data.AssetGroups, { search: true, multiselect: true, textKey: 'Value', valueKey: 'Key' }); for (var i = 0; i < data.Locations.length; i++) { var loc = data.Locations[i]; if (loc.PId > 0) { loc.html = ' ' + loc.Name; } } $('#div_locations').css('width', 120).dropdown(data.Locations, { search: true, multiselect: true, valueKey: 'ID', textKey: 'Name' }); for (var i = 0; i < data.Departments.length; i++) { var dep = data.Departments[i]; if (dep.PId > 0) { dep.html = ' ' + dep.Name; } } //items: JSON.parse(JSON.stringify(data.Departments)), $('#div_departments').css('width', 120).dropdown(data.Departments, { search: true, multiselect: true, valueKey: 'Id', textKey: 'Name' }); //items: JSON.parse(JSON.stringify(data.Advisors)), $('#div_advisors').css('width', 120).dropdown(data.Advisors, { search: true, multiselect: true, textKey: 'Value', valueKey: 'Key' }); $('#div_ordertypes').css('width', 120).dropdown(data.OrderTypes, { search: true, multiselect: true, textKey: 'Value', valueKey: 'Key' }); $('#div_statuses').css('width', 120).dropdown(data.Statuses, { search: true, multiselect: true, textKey: 'Value', valueKey: 'Key' }); getWorkOrderDefault(); }, function () { }); } function getWorkOrderDefault() { if (getTempFilters()) { OnRefresh(); return; } worequest("GetWorkOrderDefault", '', function (data) { if (typeof (data) === "string") { showAlert(data, GetTextByKey('P_JS_ERROR', 'Error')); return; } if (data) { $('#div_locations').dropdownVals(data.Locations || []); $('#div_departments').dropdownVals(data.Departments || []); $('#div_advisors').dropdownVals(data.Advisors || []); $('#div_ordertypes').dropdownVals(data.OrderTypes || []); } OnRefresh(); }, function (err) { }); } function onSaveDefault() { var locations = $('#div_locations').dropdownVals(); var departments = $('#div_departments').dropdownVals(); var advisors = $('#div_advisors').dropdownVals(); var ordertypes = $('#div_ordertypes').dropdownVals(); var item = { 'Locations': locations, 'Departments': departments, 'Advisors': advisors, 'OrderTypes': ordertypes }; var alerttitle = GetTextByKey("P_WO_SAVEDEFAULT", "Save Default"); var param = JSON.stringify(item); param = htmlencode(param); worequest("SetWorkOrderDefault", param, function (data) { if (data !== 'OK') { showAlert(data, alerttitle); } else { showAlert(GetTextByKey("P_WO_SAVSUCCESSFULLY", 'Saved successfully.'), alerttitle); } }, function (err) { }); } function saveTempFilters() { var locations = $('#div_locations').dropdownVals(); var departments = $('#div_departments').dropdownVals(); var advisors = $('#div_advisors').dropdownVals(); var ordertypes = $('#div_ordertypes').dropdownVals(); var statuses = $('#div_statuses').dropdownVals(); var p = { AssetID: assetid == "" ? -1 : eval(assetid), SearchText: $.trim($('#searchinputtxt').val()), Contacts: [], Status: [], AssetGroups: [], Locations: locations, Departments: departments, Advisors: advisors, OrderTypes: ordertypes, Statuses: statuses }; p.AssetGroups = $('#div_assetgroup').dropdownVals(); var showmaintenance = $('#chkshowmaintenance').prop("checked"); p.ShowMaintenance = showmaintenance; p.Completed = $('#selcompleted').val(); var filters = JSON.stringify(p); filters = htmlencode(filters); setCookie("WorkOrderFilters_" + CID, "1");//filters太长在cookie中会丢失,此处只存标识,filters存在localStorage中 window.localStorage["WorkOrderFilters_" + CID] = filters; } function getTempFilters() { var p = getCookie("WorkOrderFilters_" + CID); if (!p) return false; p = window.localStorage["WorkOrderFilters_" + CID]; try { var data = JSON.parse(htmldecode(decodeURIComponent(p))); if (data) { $('#div_assetgroup').dropdownVals(data.AssetGroups || []); $('#div_locations').dropdownVals(data.Locations || []); $('#div_departments').dropdownVals(data.Departments || []); $('#div_advisors').dropdownVals(data.Advisors || []); $('#div_ordertypes').dropdownVals(data.OrderTypes || []); $('#div_statuses').dropdownVals(data.Statuses || []); $('#searchinputtxt').val(data.SearchText || ""); $('#chkshowmaintenance').prop("checked", data.ShowMaintenance === true); $('#selcompleted').val(data.Completed); if ($('#selcompleted').val() === null) $('#selcompleted').val(0); return true; } } catch { return false; } return false; } //*********************************End Detault**************************************************// var dialogWidgets; $(function () { setPageTitle(GetTextByKey("P_WORKORDER", "Work Order"), true); $('.iconlayout').on('click', function (ev) { CreateLayoutMenus(ev.target, gridLayoutID, grid_dt); return false; }); //manageWorkorderCtrl = new $manageWorkorderCtrl(); //manageWorkorderCtrl.Init($("#workorderlist")); InitGridData(); InitGridAvailableMachines(); InitGridSelectedMachines(); dialogWidgets = new $wowidgetselector('dialog_widgets'); dialogWidgets.onDialogClosed = function () { showmaskbg(false); }; dialogWidgets.onOK = function (source) { wowidgetobj && wowidgetobj.reloadWidgets(); }; $("#spWdigets").click(function () { showmaskbg(true); dialogWidgets.showSelector(); }); showmaskbg(true); getWorkorderParams(); //GetContacts(); //GetStatus(); //GetAssetGroups(); $('#searchinputtxt').keydown(searchEnter); $('#dialog_completeddate').datetimepicker({ timepicker: false, format: 'm/d/Y', enterLikeTab: false, onSelectDate: function (v, inp) { var date = new DateFormatter().formatDate(v, 'm/d/Y 00:00:00'); inp.parent().data('val', [date]); } }); $('#dialog_metertype').change(function () { meterType = $('#dialog_metertype').val(); setMeterType(); }); $(window).resize(function () { $("#workorderlist").css("height", $(window).height() - $("#workorderlist").offset().top - 10); grid_dt && grid_dt.resize(); }).resize(); $('#dialog_alerts').prop('iframe', true).dialog(function () { showmaskbg(false); }); $('#dialog_alerts').dialog(function () { showmaskbg(false); }); $('#dialog_statuschange').dialog(function () { var cancel = $('#dialog_statuschange').data("cancel"); if (cancel) cancel(); showmaskbg(false); }); $('#dialog_chksendtextmsg').change(function () { var checked = $('#dialog_chksendtextmsg').prop('checked'); $('#txtphonenum').prop('disabled', !checked); $('#dialog_chkIncludeStatusLink').prop('disabled', !checked); $('#dialog_textmsg').prop('disabled', !checked); $('#dialog_variables').prop('disabled', !checked); $('#dialog_insertfield').prop('disabled', !checked); }); $('#dialog_edittext').dialog(function () { showmaskbg(false); }); $('#dialog_sendwosurveys').dialog(function () { showmaskbg(false); }); if (!canExport) { $('#spExport').hide(); } openmsgwebsocket(); }); var meterType = ""; function setMeterType() { $('#tr_hourmeter').css('display', 'none'); $('#tr_odometer').css('display', 'none'); if (!meterType || meterType == "") meterType = "HourMeter"; if (meterType == "HourMeter" || meterType == "Both") { $('#tr_hourmeter').css('display', ''); } if (meterType == "Odometer" || meterType == "Both") { $('#tr_odometer').css('display', ''); } } function searchEnter(e) { if (e.keyCode == 13 || e.keyCode == 9) { OnRefresh(true); } } function changeasset(aid) { assetid = aid; OnRefresh(); } function OnExit() { window.parent.CloseWorkOrderDialog(); } function CloseWOStatusDialog(type) { $('#dialog_workorderstatus').hideDialog(); OnRefresh(); execIframeFunc("refreshstatus", [], "iframeworkorder"); } function ShowWOStatusDialog(type) { showmaskbg(true); $('#dialog_workorderstatus') .attr('act', type) .showDialogRight(); } function openWOStatus() { $('#iframeworkorderstatus').attr('src', 'WorkOrderStatusManagement.aspx'); ShowWOStatusDialog(); } function insertfield() { var field = $("#dialog_variables").find("option:selected").text(); $("#dialog_textmsg").focus(); document.execCommand('insertText', false, field); } function OnExport() { var locations = $('#div_locations').dropdownVals(); var departments = $('#div_departments').dropdownVals(); var advisors = $('#div_advisors').dropdownVals(); var ordertypes = $('#div_ordertypes').dropdownVals(); var statuses = $('#div_statuses').dropdownVals(); var p = { AssetID: assetid == "" ? -1 : eval(assetid), SearchText: $.trim($('#searchinputtxt').val()), Contacts: [], OrderTypes: ordertypes, Statuses: statuses, AssetGroups: [], Locations: locations, Departments: departments, Advisors: advisors }; p.AssetGroups = $('#div_assetgroup').dropdownVals(); var showmaintenance = $('#chkshowmaintenance').prop("checked"); p.ShowMaintenance = showmaintenance; p.Completed = $('#selcompleted').val(); var layout = getLayoutOnGrid(grid_dt); var ps = ["workorders", JSON.stringify(p), JSON.stringify(layout)]; var data = new FormData(); data.append('type', 'set'); data.append('ClientData', JSON.stringify(ps)); $.ajax({ url: "../ExportToFile.aspx", type: 'POST', dataType: 'json', processData: false, contentType: false, data: data, success: function (data) { if (data && data != "") window.open("../ExportToFile.aspx?type=exp&key=" + data); }, error: function (err) { } }); //var param = htmlencode(JSON.stringify(p)); //window.open("../ExportToFile.aspx?type=workorders¶m=" + param); } var loadingWorkOrderItem = false; var notificationWorkOrderQueue = []; function getWorkOrderItem(woid) { if (!grid_dt) return; if (loadingWorkOrderItem) { if (notificationWorkOrderQueue.indexOf(woid) < 0) notificationWorkOrderQueue.push(woid); return; } loadingWorkOrderItem = true; var locations = $('#div_locations').dropdownVals(); var departments = $('#div_departments').dropdownVals(); var advisors = $('#div_advisors').dropdownVals(); var ordertypes = $('#div_ordertypes').dropdownVals(); var statuses = $('#div_statuses').dropdownVals(); var p = { WorkOrderID: woid, SearchText: $.trim($('#searchinputtxt').val()), Contacts: [], OrderTypes: ordertypes, Status: statuses, AssetGroups: [], Locations: locations, Departments: departments, Advisors: advisors }; p.AssetGroups = $('#div_assetgroup').dropdownVals(); p.Completed = $('#selcompleted').val(); worequest("GetWorkOrderListItem", htmlencode(JSON.stringify(p)), function (data) { loadingWorkOrderItem = false; if (data) { var r = data; for (var j in r) { if (j === "Id") { r[j] = { DisplayValue: r["Id"] > 0 ? r["Id"] : "MR", Value: r[j] }; } else if (j === "WorkOrderNumber") { r[j] = { DisplayValue: r["WorkOrderNumber"], Value: pad(r[j], 50) }; } else if (j === "DueDate") { r[j] = { DisplayValue: r["DueDateStr"], Value: r[j] }; } else if (j === "CompleteDate") { r[j] = { DisplayValue: r["CompleteDateStr"], Value: r[j] }; } else if (j === "NextFollowUpDate") { r[j] = { DisplayValue: r["NextFollowUpDateStr"], Value: r[j] }; } else if (j === "CreateDate") { r[j] = { DisplayValue: r["CreateDateStr"], Value: r[j] }; } else if (j === "CreationDate") { r[j] = { DisplayValue: r["CreationDateStr"], Value: r[j] }; } else if (j === "LastCommunicationDate") { r[j] = { DisplayValue: r["LastCommunicationDateStr"], Value: r[j] }; } else if (j === "LastInternalCommunicationDate") { r[j] = { DisplayValue: r["LastInternalCommunicationDateStr"], Value: r[j] }; } else if (j === "PartsExpectedDate") { r[j] = { DisplayValue: r["PartsExpectedDateStr"], Value: r[j] }; } else if (j === "LastLaborDate") { r[j] = { DisplayValue: r["LastLaborDateStr"], Value: r[j] }; } else if (j === "InspectionRequired") { r[j] = { DisplayValue: r["InspectionRequired"] ? "Yes" : "No", Value: r[j] }; } else if (j === "AutoText") { r[j] = { DisplayValue: r["AutoText"] ? "Yes" : "No", Value: r[j] }; } else if (j === "WorkOrderType") { var wotype = r[j]; if (wotype == "Maintenance Expense") wotype = GetTextByKey("P_WO_MAINTENANCEEXPENSE", "Maintenance Expense"); else if (wotype == "Repair Expense") wotype = GetTextByKey("P_WO_REPAIREXPENSE", "Repair Expense"); else if (wotype == "Capitalized Expense") wotype = GetTextByKey("P_WO_CAPITALIZEDEXPENSE", "Capitalized Expense"); r[j] = wotype; } else if (j === "EstimateStatus") { r[j] = getEstimateStatus(r[j]); } else if (j === "Billable") { r[j] = { DisplayValue: r["Billable"] ? "Yes" : "No", Value: r[j] }; } } var shown = false; for (var i = 0; i < grid_dt.source.length; i++) { var wo = grid_dt.source[i].Values; if (wo.Id.Value == r.Id.Value) { grid_dt.source[i].Values = r; shown = true; break; } } if (!shown) grid_dt.source.push({ Values: r }); if (grid_dt.selectedIndex >= 0) grid_dt.source[grid_dt.selectedIndex].__selected = true grid_dt && grid_dt.reload(); } else { removeWorkOrderItem(woid); } if (notificationWorkOrderQueue.length > 0) getWorkOrderItem(notificationWorkOrderQueue.shift()); }, function (err) { loadingWorkOrderItem = false; if (notificationWorkOrderQueue.length > 0) getWorkOrderItem(notificationWorkOrderQueue.shift()); }); } function removeWorkOrderItem(woid) { for (var i = 0; i < grid_dt.source.length; i++) { var wo = grid_dt.source[i].Values; if (wo.Id.Value == woid) { grid_dt.source.splice(i, 1); grid_dt && grid_dt.reload(); return; } } } var loadingCount = 0; function showLoading() { loadingCount++; if (window.parent && typeof window.parent.onmaskbg == 'function') { window.parent.onmaskbg(true, true); } $("#dialogattmask").show(); } function hideLoading() { loadingCount--; if (loadingCount === 0) { $("#dialogattmask").hide(); if (window.parent && typeof window.parent.onmaskbg == 'function') { window.parent.onmaskbg(false, true); } } } var _websocket; function openmsgwebsocket() { _websocket = new $websocket(MSGWebSocketURL); _websocket.onreceive = onmsgreceived; _websocket.connect(); } function onmsgreceived(data) { if (data) { if (data.Code == "500" || data.Code == "501" || data.Code == "503" || data.Code == "505")//add, update, sms getWorkOrderItem(data.Message); else if (data.Code == "502")//delete removeWorkOrderItem(data.Message); wowidgetobj?.onmsgreceived(data); if ($("#dialog_workorder").is(":visible")) { var fn = document.getElementById("iframeworkorder").contentWindow["onmsgreceived"]; if (fn) fn.apply(this, [data]); } } } </script> </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server"> <div id="recordcontent" style="padding: 0px; margin: 0px; min-width: 1650px;"> <div class="page_title"> <span data-lgid="P_WORKORDER">Work Order</span> <span class="sbutton iconexit" style="<%=InDialog?"": "display:none;"%>; float: right; font-size: 14px; margin-right: 15px; cursor: pointer;" onclick="OnExit();"> <label data-lgid="P_WO_EXIT">Exit</label> </span> <%if (AllowWorkOrderConfiguration) {%> <span class="sbutton iconcog" style="float: right; font-size: 14px; cursor: pointer;" onclick="openWOStatus();"> <label data-lgid="P_WO_WORKORDERCONFIGURATION">Work Order Configuration</label></span> <%}%> <div style="clear: both;"></div> </div> <div class="search_bar" style="<%=InDialog?"display:none;": ""%>"> <input type="password" autocomplete="new-password" style="display: none" /> <span data-lgid="P_WO_ASSETGROUP_COLON">Asset Group:</span> <div id="div_assetgroup"></div> <span data-lgid="P_WO_LOCATION_COLON">Location:</span> <div id="div_locations"></div> <span data-lgid="P_WO_DEPARTMENT_COLON">Department:</span> <div id="div_departments"></div> <span data-lgid="P_WO_ADVISOR_COLON">Advisor:</span> <div id="div_advisors"></div> <span data-lgid="P_WO_XXXXXX">Order Type:</span> <div id="div_ordertypes"></div> <span data-lgid="P_WO_STATUS_COLON">Status:</span> <div id="div_statuses"></div> <input style="margin-left: 8px; width: 100px;" type="text" id="searchinputtxt" autocomplete="off" /> <input class="search" type="button" style="margin-left: 5px;" onclick="OnRefresh(true);" value="Search" data-lgid="P_WO_SEARCH" /> <%if (CanViewMR) {%> <input id="chkshowmaintenance" type="checkbox" onclick="OnRefresh();" /><label for="chkshowmaintenance" data-lgid="P_WO_VIEWMAINTENANCERECORDS">View Maintenance Records</label> <%}%> <select id="selcompleted" onchange="OnRefresh();" style="margin-left: 5px; width: 160px;"> <option value="0" data-lgid="P_WO_XXXXXX">Open Work Orders Only</option> <option value="1" data-lgid="P_WO_XXXXXX">Completed Work Orders Only</option> <option value="-1" data-lgid="P_WO_XXXXXX">Active & Completed Work Orders</option> </select> <span class="sbutton iconsave" onclick="onSaveDefault();" style="margin-left: 8px; padding-right: 0;" data-title-lgid="P_WO_SAVELOCATIONANDDEPARTMENTSEARCH" title="Save Location, Department, Advisor and Order type Search"></span> </div> <div class="function_title"> <span class="sbutton iconadd" onclick="OnAdd();" data-lgid="P_WO_ADD">Add</span> <span class="sbutton iconedit" onclick="OnEdit();" data-lgid="P_WO_EDIT">Edit</span> <span class="sbutton iconrefresh" onclick="OnRefresh();" data-lgid="P_WO_REFRESH">Refresh</span> <span id="spExport" class="sbutton iconexport" onclick="OnExport();" data-lgid="P_UTILITY_EXPORTTOEXCEL">Export to Excel</span> <span class="sbutton iconlayout iconmenu" data-lgid="P_MR_LAYOUT">Layout</span> <span class="sbutton iconfilter" onclick="OnResetPivots();" data-lgid="P_JS_XXX">Reset Pivots</span> <span id="spWdigets" class="sbutton iconwidget" data-lgid="P_JS_XXX">Widgets</span> </div> <div class="clear"></div> <div id="workorderlist"></div> <div id="workorderdetail"></div> </div> <div id="mask_bg" style="display: none;"> <div class="loading c-spin"></div> </div> <div class="dialog" id="dialog_alerts" style="display: none;"> <div class="dialog-title"><span class="title" data-lgid="P_WO_MANAGEALERTS">Manage Alerts</span><em class="dialog-close"></em></div> <div> <table class="group_table" style="min-height: 480px;"> <thead> <tr> <td data-lgid="P_WO_AVAILABLEALERTS">Available Alerts</td> <td></td> <td data-lgid="P_WO_SELECTEDALERTS">Selected Alerts</td> </tr> </thead> <tbody> <tr> <td> <div id="availablemachinelist" style="height: 450px; width: 480px;"></div> </td> <td class="td_controller"> <input class="ctl_button" type="button" value="" onclick="OnEditorAdd();" tabindex="23" /> <input class="ctl_button" type="button" value="" onclick="OnEditorAddAll();" tabindex="24" /> <input class="ctl_button" type="button" value="" onclick="OnEditorRemove();" tabindex="25" /> <input class="ctl_button" type="button" value="" onclick="OnEditorRemoveAll();" tabindex="26" /> </td> <td> <div id="selectedmachinelist" style="height: 450px; width: 480px;"></div> </td> </tr> </tbody> </table> </div> <div class="dialog-func"> <input type="button" value="Cancel" data-lgid="P_WO_CANCEL" class="dialog-close" tabindex="18" /> <input type="button" onclick="AssignedAlertsToWorkOrder();" value="OK" data-lgid="P_WO_OK" tabindex="17" /> <div class="clear"></div> </div> <div class="maskbg" style="display: none;"></div> </div> <div class="dialog" id="dialog_statuschange" style="display: none;"> <div class="dialog-title"><span class="title" data-lgid="P_WO_STATUSCHANGE">Status Change</span><em class="dialog-close"></em></div> <div class="dialog-content"> <table style="line-height: 30px; margin-left: 10px; margin-right: 10px;"> <tr class="statuscompleted" style="display: none;"> <td class="label" data-lgid="P_WO_METERTYPE_COLON">Meter Type:</td> <td class="cont"> <select id="dialog_metertype" tabindex="1" style="height: 22px; width: 324px;"> <option value="HourMeter" data-lgid="P_WO_HOURMETER">Hour Meter</option> <option value="Odometer" data-lgid="P_WO_ODOMETER">Odometer</option> <option value="Both" data-lgid="P_WO_BOTH">Both</option> </select></td> </tr> <tr class="statuscompleted" id="tr_hourmeter" style="display: none;"> <td class="label"> <span data-lgid="P_WO_HOURMETER_COLON">Hour Meter:</span><span class="span_required redasterisk">*</span></td> <td> <input type="text" id="dialog_hourmeter" maxlength="12" tabindex="1" autocomplete="off" style="width: 320px;" /></td> </tr> <tr class="statuscompleted" id="tr_odometer" style="display: none;"> <td class="label"> <span data-lgid="P_WO_ODOMETER_COLON">Odometer:</span><span class="span_required redasterisk">*</span></td> <td> <input type="text" id="dialog_odometer" maxlength="12" tabindex="1" style="width: 227px;" autocomplete="off" /> <select id="dig_odometeruom" style="width: 90px; height: 22px;" tabindex="1"> <option value="Mile" data-lgid="P_WO_MILE">Mile</option> <option value="Kilometre" data-lgid="P_WO_KILOMETER">Kilometer</option> </select> </td> </tr> <tr class="statuscompleted" style="display: none;"> <td class="label"> <span data-lgid="P_WO_COMPLETEDDATE_COLON">Completed Date:</span><span class="span_required redasterisk">*</span> </td> <td> <input type="text" id="dialog_completeddate" maxlength="200" tabindex="1" autocomplete="off" style="width: 320px;" /></td> </tr> <tr class="tr_sendmsg" style="display: none;"> <td style="text-align: right;"> <input id="dialog_chksendtextmsg" type="checkbox" style="width: unset;" /></td> <td style="text-align: left;"> <label for="dialog_chksendtextmsg" data-lgid="P_WO_SENDUPDATETOCUSTOMER" style="user-select: none;">Send Update To Customer</label></td> </tr> <tr class="tr_sendmsg" style="display: none;"> <td> <div style="font-size: 20px; margin-right: 5px; float: right;"><em class="spanbtn iconmobile" style="font-weight: 900; font-size: 14px; cursor: default; padding-left: 0; padding-right: 3px; padding-top: 0;"></em></div> </td> <td> <input type="text" id="txtphonenum" tabindex="1" autocomplete="off" maxlength="100" style="width: 320px;" /> </td> </tr> <tr class="tr_sendmsg" style="display: none;"> <td style="text-align: right;"> <input id="dialog_chkIncludeStatusLink" type="checkbox" style="width: unset;" /></td> <td style="text-align: left;"> <label for="dialog_chkIncludeStatusLink" data-lgid="P_WO_INCLUDESTATUSLINK" style="user-select: none;">Include Status Link</label></td> </tr> <tr class="tr_sendmsg" style="display: none;"> <td class="label"><span data-lgid="P_WO_MESSAGE_COLON">Message:</span></td> <td> <select id="dialog_variables" style="width: 156px;"> <option value="0">[Site_Name]</option> <option value="1">[Location]</option> <option value="13">[Asset]</option> <option value="4">[VIN]</option> <option value="2">[Make]</option> <option value="3">[Model]</option> <option value="5">[Id_Phone]</option> <option value="6">[Advisor]</option> <option value="7">[Company_Name]</option> <option value="8">[Contact_Name]</option> <option value="9">[Contact_First_Name]</option> <option value="10">[Status_Link]</option> <option value="11">[Technician_Name]</option> <option value="12">[Work_Order_Number]</option> <option value="13">[Parts_Order_Number]</option> </select> <input type="button" id="dialog_insertfield" onclick="insertfield();" data-lgid="P_WO_ADD" style="width: 35px; height: auto; margin-left: 5px;" tabindex="1" /> <br /> <textarea id="dialog_textmsg" tabindex="1" style="width: 320px; height: 120px; margin-top: 6px;" maxlength="2000"></textarea></td> </tr> </table> </div> <div class="dialog-func"> <input type="button" value="Cancel" data-lgid="P_WO_CANCEL" class="dialog-close" tabindex="1" /> <input type="button" id="btn_save" onclick="SaveStatusChange(0);" value="Save" data-lgid="P_WO_SAVE" style="width: unset;" tabindex="1" /> <%--<input type="button" id="btn_sendtextandsave" onclick="SaveStatusChange(1);" style="width: unset;" value="Send And Save" data-lgid="P_WO_SENDANDSAVE" tabindex="17" /> <input type="button" id="btn_sendtext" onclick="SaveStatusChange(2);" style="width: unset;" value="Send" data-lgid="P_WO_SEND" tabindex="17" />--%> <div class="clear"></div> </div> <div class="maskbg" style="display: none;"></div> </div> <div class="dialog" id="dialog_edittext" style="display: none;"> <div class="dialog-title"><span class="title" data-lgid="P_WO_EDITDESCRIPTION">Edit Description</span><em class="dialog-close"></em></div> <div class="dialog-content"> <table style="line-height: 30px;"> <tr> <td> <textarea id="dialog_text" tabindex="1" style="width: 480px; height: 200px; margin-top: 6px;" maxlength="2000"></textarea></td> </tr> </table> </div> <div class="dialog-func"> <input type="button" value="Cancel" data-lgid="P_WO_CANCEL" class="dialog-close" tabindex="18" /> <input type="button" onclick="SaveText();" value="Save" data-lgid="P_WO_SAVE" tabindex="17" /> <div class="clear"></div> </div> </div> <div class="dialog" id="dialog_sendwosurveys" style="display: none;"> <div class="dialog-title"><span class="title" data-lgid="P_WO_EDITDESCRIPTION">Edit Description</span><em class="dialog-close"></em></div> <div class="dialog-content"> <table style="line-height: 30px; margin-left: 10px; margin-right: 10px;"> <tr> <td class="label" data-lgid="P_WO_TEMPLATES_COLON">Templates:</td> <td class="cont"> <select id="dialog_wosurveytemplates" tabindex="1" style="height: 22px; width: 324px;"> </select></td> </tr> <tr> <td class="label" style="vertical-align: top;"> <span data-lgid="P_WO_CONTACTS_COLON">Contacts:</span></td> <td> <div id="dialog_wosurveyscontacts" style="max-height: 150px; overflow: auto;"></div> </td> </tr> </table> </div> <div class="dialog-func"> <input type="button" value="Cancel" data-lgid="P_WO_CANCEL" class="dialog-close" tabindex="18" /> <input type="button" onclick="SendWOSurveys();" value="Send" data-lgid="P_WO_SEND" tabindex="17" /> <div class="clear"></div> </div> </div> <div class="dialog" id="sendicemailpopupdialog" style="display: none; width: 485px;"> <div class="dialog-title"><span class="title" data-lgid="P_WO_SENDINTERNALCOMMENTS">Send Internal Comments</span><em class="dialog-close"></em></div> <div class="dialog-content"> <table style="line-height: 25px;"> <tr> <td data-lgid="P_WO_SENDTHISTO">Who do you want to send this to? Select from existing relationships or manual entry.</td> </tr> <tr> <td colspan="2"> <input type="text" id="sendinternalcomments_search" style="width: 445px; margin-left: 10px;" placeholder="Search" /></td> </tr> <tr> <td> <div id="iccontactlist" style="height: 240px; width: 440px; margin-left: 10px; margin-right: 10px;"></div> </td> </tr> <tr> <td data-lgid="P_WO_EMAILADDRESSESTIPS">Separate multiple manually entered email addresses with a semi-colon (;).</td> </tr> <tr> <td><span data-lgid="P_WO_OTHEREMAILADDRESS">Other Email Address</span> <input type="text" id="sendic_otheremailaddress" style="width: 332px;" autocomplete="off" /></td> </tr> <tr> <td><span data-lgid="P_WO_PHONENUMBER">Phone Number</span> <input type="text" id="sendic_phonenumber" style="width: 353px; margin-left: 7px;" autocomplete="off" /> </td> </tr> </table> </div> <div class="dialog-func"> <input type="button" value="Cancel" data-lgid="P_WO_CANCEL" class="dialog-close" tabindex="153" /> <input type="button" onclick="onSendInternalComments();" value="OK" data-lgid="P_WO_OK" tabindex="152" /> <div class="clear"></div> </div> </div> <div class="dialog" id="dialog_workorder" style="display: none; height: 100%; border-bottom: 0; border-top: 0;"> <%--<div class="dialog-title"><span class="title">Add Work Order</span></div>--%> <iframe id="iframeworkorder" style="width: 100%; height: 100%; display: block; border: none;"></iframe> <div class="maskbg" style="display: none;"></div> </div> <div class="dialog" id="dialog_maintenancerecord" style="display: none; height: 100%; border-bottom: 0; border-top: 0;"> <iframe id="iframemaintenancerecord" style="width: 100%; height: 100%; display: block; border: none;"></iframe> <div class="maskbg" style="display: none;"></div> </div> <div class="dialog" id="dialog_workorderstatus" style="display: none; height: 100%; border-bottom: 0; border-top: 0;"> <%--<div class="dialog-title"><span class="title">Add Work Order</span></div>--%> <iframe id="iframeworkorderstatus" style="width: 100%; height: 100%; display: block; border: none;"></iframe> <div class="maskbg" style="display: none;"></div> </div> <div id="dialogattmask" class="maskbg" style="display: none;"> <%-- 放到最后 Widget中上传WorkOrder附件是使用--%> <div class="loading c-spin"></div> <lable class="lable_attuploadname"></lable> </div> </asp:Content>