//****************************设备管理和机器管理共用*****************************************/ function getDevicePairingLogsByDevice() { $('#div_attlarge').empty(); if (deviceid) { var cid = $('#sel_contractor').val(); devicerequest('GetDevicePairingLogsByDevice', JSON.stringify([cid, deviceid, ""]), function (data) { if (data && typeof data != "string") { showDevicePairingLogs(data, 0); } }); } } function getDevicePairingLogsByAsset() { $('#div_attlarge').empty(); if (machineid) { devicerequest('GetDevicePairingLogsByAsset', JSON.stringify([contractorid, machineid, ""]), function (data) { if (data && typeof data != "string") { showDevicePairingLogs(data, 1); } }); } } function OnExpendParingInfo(e) { var t = $(e); var tid = t.attr("target"); if (t.hasClass("iconchevrondown")) { t.removeClass("iconchevrondown").addClass("iconchevronright"); $("#" + tid).hide(); } else { t.removeClass("iconchevronright").addClass("iconchevrondown"); $("#" + tid).show(); if (!t.data("loaded")) { getPairingAttachments(t); } } } function showDevicePairingLogs(logs, type) {//0.device,1.asset $('#div_attlarge').empty(); if (logs && logs.length > 0) { for (var i = 0; i < logs.length; i++) { var log = logs[i]; var trid = "paringinfo_tr" + log.Id; var tab = $('<table class="main_table maintenance"></table>'); $('#div_attlarge').append(tab); var tr = $('<tr style="line-height: 35px;"></tr>'); tab.append(tr); var td = $('<td class="subtitle"></td>'); tr.append(td); var spanexpend = $('<span class="sbutton iconchevronright woattafoldicon" target="' + trid + '" onclick="OnExpendParingInfo(this)" style="margin-left: 0; padding-right: 5px;"></span>').data('log', log).data('type', type); td.append(spanexpend); var spantitle = $('<span></span>').text(("Paired to {0} on {1} by {2}").replace('{0}', type === 0 ? log.AssetName : (log.SourceName + " " + log.SerialNumber)).replace('{1}', log.InstallTime_LocalStr).replace('{2}', log.InstallerName)); td.append(spantitle); tr = $('<tr id="' + trid + '" class="tr_intervals woattafoldtr"></tr>').hide(); tab.append(tr); td = $('<td id="paringinfo_td' + log.Id + '"></td>'); tr.append(td); } } } function getPairingAttachments(t) { var cid = $('#sel_contractor').val(); var pairinglog = $(t).data('log'); var type = $(t).data('type'); devicerequest('GetPairingAttachments', JSON.stringify([cid, pairinglog.Id]), function (data) { if (data && typeof data != "string") { $(t).data('loaded', true); showPairingAttachments(pairinglog, data, type); } }); } function arrayBufferToBase64(buffer) { var binary = ''; var bytes = new Uint8Array(buffer); var len = bytes.byteLength; for (var i = 0; i < len; i++) { binary += String.fromCharCode(bytes[i]); } return window.btoa(binary); } function getPairingSignature(pairinglogid, logtab) { devicerequest('GetPairingSignature', JSON.stringify(pairinglogid), function (data) { if (data && data != null && data.length > 0) { var logtr = $('<tr></tr>'); logtab.append(logtr); var logtd = $('<td class="label"></td>').text(GetTextByKey('P_MD_SIGNATURE_COLON', 'Signature: ')); logtr.append(logtd); logtd = $('<td colspan="3"></td>'); logtr.append(logtd); var jpeg = data; if (typeof (data) !== "string") { jpeg = arrayBufferToBase64(data); } var imgsig = $('<img style="height: 110px;" />').attr('src', 'data:image/png;base64,' + jpeg); $(logtd).append(imgsig); } }); } function getPairingAttachmentCategory(key) { switch (key) { case "Odometer": return GetTextByKey("P_MD_ODOMETER", "Odometer"); case "Engine Hours": return GetTextByKey("P_MD_ENGINEHOURS", "Engine Hours"); case "Mounting Location": return GetTextByKey("P_MD_MOUNTINGLOCATION", "Mounting Location"); case "Power Connection": return GetTextByKey("P_MD_POWERCONNECTION", "Power Connection"); case "Ground Connection": return GetTextByKey("P_MD_GROUNDCONNECTION", "Ground Connection"); case "Ignition Connection": return GetTextByKey("P_MD_IGNITIONCONNECTION", "Ignition Connection"); case "Asset Number": return GetTextByKey("P_MD_ASSETNUMBER", "Asset Number"); case "Left Front of Asset": return GetTextByKey("P_MD_LEFTFRONTOFASSET", "Left Front of Asset"); case "Right Rear of Asset": return GetTextByKey("P_MD_RIGHTFRONTOFASSET", "Right Rear of Asset"); case "VIN": return GetTextByKey("P_MD_VIN", "VIN"); case "ESN of GPS Device": return GetTextByKey("P_MD_ESNOFGPSDEVICE", "ESN of GPS Device"); default: break; } return key; } var imgTypes = [".jfif", ".jpg", ".jpeg", ".bmp", ".png", ".tiff", ".gif"]; var printTypes = ['.pdf', ".jfif", ".jpg", ".jpeg", ".bmp", ".png", ".tiff", ".gif"];//types to be loaded to print function showPairingAttachments(pairinglog, attas, type) {//0.device,1.asset var ptd = $('#paringinfo_td' + pairinglog.Id); ptd.empty(); var log = pairinglog; //Mountion Location,EngineHours,Odometer var divinfo = $('<div class="edit-content"></div>'); var logtab = $('<table class="tab_deviceparing"></table>'); divinfo.append(logtab); var logtr = $('<tr></tr>'); logtab.append(logtr); var logtd = $('<td class="label" style="width:130px;"></td>').text(GetTextByKey('P_MD_DATETIME_COLON', 'Date Time:')); logtr.append(logtd); logtd = $('<td style="width:300px;"></td>').text(log.InstallTime_LocalStr); logtr.append(logtd); logtd = $('<td class="label" style="width:130px;"></td>').text(GetTextByKey('P_MD_INSTALLER_COLON', 'Installer:')); logtr.append(logtd); logtd = $('<td></td>').text(log.InstallerName); logtr.append(logtd); logtr = $('<tr></tr>'); logtab.append(logtr); if (type == 0) { logtd = $('<td class="label" style="width:130px;"></td>').text(GetTextByKey('P_MD_VIN_COLON', 'VIN:')); logtr.append(logtd); logtd = $('<td></td>').text(log.AssetVIN); logtr.append(logtd); logtd = $('<td class="label" style="width:130px;"></td>').text(GetTextByKey('P_MD_ASSETNAME_COLON', 'Asset Name:')); logtr.append(logtd); logtd = $('<td></td>').text(log.AssetName); logtr.append(logtd); } else { logtd = $('<td class="label" style="width:130px;"></td>').text(GetTextByKey('P_MA_DEVICESN_COLON', 'Device SN:')); logtr.append(logtd); logtd = $('<td></td>').text(log.SerialNumber); logtr.append(logtd); logtd = $('<td class="label" style="width:130px;"></td>').text(GetTextByKey('P_MD_SOURCE_COLON', 'Source:')); logtr.append(logtd); logtd = $('<td></td>').text(log.SourceName); logtr.append(logtd); } logtr = $('<tr></tr>'); logtab.append(logtr); logtd = $('<td class="label"></td>').text(GetTextByKey('P_MD_ENGINEHOURS_COLON', 'Engine Hours: ')); logtr.append(logtd); logtd = $('<td></td>').text(log.EngineHours < 0 ? '' : log.EngineHours.toLocaleString()); logtr.append(logtd); logtd = $('<td class="label"></td>').text(GetTextByKey('P_MD_ODOMETER_COLON', 'Odometer: ')); logtr.append(logtd); logtd = $('<td></td>').text(log.Odometer < 0 ? '' : (log.Odometer.toLocaleString() + " " + log.OdometerUnit)); logtr.append(logtd); logtr = $('<tr></tr>'); logtab.append(logtr); logtd = $('<td class="label"></td>').text(GetTextByKey('P_MD_MOUNTINGLOCATION_COLON', 'Mounting Location:')); logtr.append(logtd); logtd = $('<td colspan="3"></td>').text(log.MountionLocation); logtr.append(logtd); logtr = $('<tr></tr>'); logtab.append(logtr); logtd = $('<td class="label"></td>').text(GetTextByKey('P_MD_NOTES_COLON', 'Notes: ')); logtr.append(logtd); logtd = $('<td colspan="3"></td>').text(log.Notes); logtr.append(logtd); getPairingSignature(log.Id, logtab); ptd.append(divinfo); if (attas && attas.length > 0) { for (var i = 0; i < attas.length; i++) { var att = attas[i]; var category_str = att.Category.replace(/\s+/g, '').toLowerCase(); var div_atts = $('#divatt_' + pairinglog.Id + "_" + category_str); if (div_atts.length == 0) { div_atts = $('<div id="divatt_' + pairinglog.Id + "_" + category_str + '" style="min-height: 80px; overflow: auto; padding-left: 20px;"></div>'); ptd.append(div_atts); var div1 = $('<div style=" margin-top: 15px;margin-bottom:5px;"></div>'); var ext_span = $('<span style="font-weight:500;font-size:16px;"></span>').text(getPairingAttachmentCategory(att.Category)); div1.append(ext_span); div_atts.append(div1); } } for (var i = 0; i < attas.length; i++) { var att = attas[i]; var category_str = att.Category.replace(/\s+/g, '').toLowerCase(); var div_atts = $('#divatt_' + pairinglog.Id + "_" + category_str); var pdiv = $('<div class="divattp"></div>'); var div = createAttaDiv(att, true); var div1 = $('<div style=" margin-top: 15px;"></div>'); var sdownload = $('<span class="attadownload"></span>').attr('title', GetTextByKey("P_WO_DOWNLOAD", 'Download')).click(att, function (e) { openDownloadFrame(e.data.FullSizeUrl + "&d=1"); }); div.append(sdownload); pdiv.append(div); var caption = att.FileName; var div3 = $('<div style="text-align:center;clear:both;"></div>'); var iptcaption = $('<input type="text" style="width: 196px;height:24px;border:1px solid #fff;" class="inp_name" maxlength="200"/>').attr('data-ori', caption).val(caption); iptcaption.data('attdata', att); div3.append(iptcaption); pdiv.append(div3); div_atts.append(pdiv); } } } function createAttaDiv(att) { var div = $('<div class="divatt"></div>').attr('title', att.FileName).attr('title', att.Notes === "" ? att.FileName : att.Notes) if (!att.FileType || att.FileType == "") att.FileType = ".jpg"; if (imgTypes.indexOf(att.FileType.toLowerCase()) >= 0) { var pic = $('<img class="picture"></img>').attr('src', att.ThumbnailUrl); pic.click(att, function (e) { window.open(e.data.FullSizeUrl, "_blank") }); div.append(pic); } else { var sdown = $('<img class="picture" />').click(att, function (e) { window.open(e.data.FullSizeUrl); }); setAttachemntIcon(att.FileType, sdown); div.append(sdown); } return div } function openPrintFrame(attatype, id) { var frame = $("<iframe style='display:none;'></iframe>"); $(document.body).after(frame); //frame.attr("src", url); frame.attr("src", _network.root + "Print.aspx?pt=3&at=" + attatype + "&id=" + id); frame.on('load', function () { setTimeout(function () { frame.contents().find("body").css("text-align", "center"); //frame.contents().find("img").css("max-height", window.screen.availHeight).css("max-width", window.screen.availWidth); frame.contents().find("img").css("max-height", "98%").css("max-width", "98%"); frame[0].contentWindow.print(); }); setTimeout(function () { frame.remove(); }, 60000); }); } function openDownloadFrame(url) { var frame = $("<iframe style='display:none;'></iframe>"); $(document.body).after(frame); frame.attr("src", url); var timer = setInterval(function () { if (frame[0].contentDocument && (frame[0].contentDocument.readyState == "complete" || frame[0].contentDocument.readyState == 4)) { frame.remove(); clearInterval(timer); } }, 5000); }