From e6068da47c1bef5517c9e5fdc8c726766867ad4e Mon Sep 17 00:00:00 2001 From: buli <137736985@qq.com> Date: 星期五, 14 七月 2023 15:10:02 +0800 Subject: [PATCH] Merge branch 'master' into LEXUpgrade2023-Deloitte --- force-app/main/default/pages/BatchSelectRepairPage.page | 399 +++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 292 insertions(+), 107 deletions(-) diff --git a/force-app/main/default/pages/BatchSelectRepairPage.page b/force-app/main/default/pages/BatchSelectRepairPage.page index 3902036..f140b90 100644 --- a/force-app/main/default/pages/BatchSelectRepairPage.page +++ b/force-app/main/default/pages/BatchSelectRepairPage.page @@ -1,12 +1,11 @@ -<apex:page id="Page" showHeader="false" sidebar="false" controller="BatchSelectRepairPageController" applyBodyTag="false" applyHtmlTag="false" action="{!init}"> -<head> - <apex:stylesheet value="{!URLFOR($Resource.blockUIcss)}"/> - <apex:includeScript value="{!URLFOR($Resource.jquery183minjs)}"/> - <apex:includeScript value="{!URLFOR($Resource.PleaseWaitDialog)}"/> - <!-- <apex:stylesheet value="{!URLFOR($Resource.jquerysuggestcss)}"/> - <apex:includeScript value="{!URLFOR($Resource.jquerysuggestjs)}"/> --> - <apex:includeScript value="{!URLFOR($Resource.connection20)}"/> - <apex:includeScript value="{!URLFOR($Resource.apex20)}"/> +<apex:page id="Page" showHeader="false" sidebar="false" controller="BatchSelectRepairPageController" applyBodyTag="false" applyHtmlTag="false" action="{!init}" lightningStylesheets="true" > +<apex:stylesheet value="{!URLFOR($Resource.blockUIcss)}"/> +<apex:includeScript value="{!URLFOR($Resource.jquery183minjs)}"/> +<apex:includeScript value="{!URLFOR($Resource.PleaseWaitDialog)}"/> +<apex:includeScript value="{!URLFOR($Resource.CommonUtilJs)}"/> +<apex:includeScript value="{!URLFOR($Resource.connection20)}"/> +<apex:includeScript value="{!URLFOR($Resource.apex20)}"/> +<apex:includeScript value="{!URLFOR($Resource.xlsxCoreMinJs)}"/> <title>鎵归噺閫夋嫨淇悊鍔熻兘</title> <style type="text/css"> .pure-table { @@ -16,7 +15,7 @@ border: 1px solid #cbcbcb; width: 100%; } - + .pure-table caption { color: #000; font: italic 85%/1 arial,sans-serif; @@ -39,6 +38,10 @@ text-align: center; vertical-align: bottom; } + + .bPageBlock{ + border-top: 3px solid #3044b5; + } .pure-table td { background-color: transparent; @@ -57,114 +60,296 @@ //鍏ㄩ�夊姛鑳� function checkAll() { var cnt = j$(escapeVfId('raCnt')).val(); - if (j$(escapeVfId('Page:Form:Block:j_id47:checkAll')).attr('checked') == 'checked') { + // alert(jQuery('input[id$=checklist]').length); + if (jQuery('input[id$=checkAll]').attr('checked') === 'checked') { + // alert(j$('input[id$=checklist]')[0].checked); for (var i = 0; i < cnt; i++) { - j$(escapeVfId('Page:Form:Block:j_id47:records:' + i + ':checklist')).attr('checked',true); + j$('input[id$=checklist]')[i].checked = true; } - } else { + } else { for (var i = 0; i < cnt; i++) { - j$(escapeVfId('Page:Form:Block:j_id47:records:' + i + ':checklist')).attr('checked',false); + j$('input[id$=checklist]')[i].checked = false; } - } + } } - //妫�绱㈠姛鑳� - // function RetrievalBtnJS() { - // var RepairName = j$(escapeVfId("Page:Form:Block:RAInfoList:0:RepairName")).value(); - // var SAPRepairNo = j$(escapeVfId("Page:Form:Block:RAInfoList:0:SAPRepairNo")).value(); - // var HospitalName = j$(escapeVfId("Page:Form:Block:RAInfoList:0:HospitalName")).value(); - // blockme(); - // RetrievalBtn(); - // } - //璺宠浆鎵撳嵃PDF椤甸潰 - // function showPDFJS() { - // blockme(); - // showPDF(); - // var raIdList = j$(escapeVfId('raIdList')).val(); - // if(raIdList != null && raIdList != ''){ - // var Id = raIdList.split(); - // for(var i = 0; i < Id.size(); i++){ - // window.open('apex/MaintenanceCommissionPDF?id=' + Id[i]); - // } - // } - // } + + //璺宠浆鍒皃df椤甸潰 + function skipPage() { + var pdfURL = j$(escapeVfId('pdfURL')).val(); + window.open(pdfURL, "缁翠慨濮旀墭涔DF", ""); + } + + // table杞珽xcel鏂囦欢 + function exportExcel() { + var csv = table2csv(j$(escapeVfId('theTable table'))[0]); + // console.log(csv) + var sheet = csv2sheet(csv); + var blob = sheet2blob(sheet); + openDownloadDialog(blob,'淇悊鏄庣粏琛�.xlsx'); + } + + function table2csv(table) { + var csv = []; + var trSize = j$(j$(escapeVfId('theTable table'))[0]).find('tr').length; + var spanSize = j$(j$(escapeVfId('theTable table'))[0]).find('tr td span').length; + var aSize = j$(j$(escapeVfId('theTable table'))[0]).find('tr td span a').length; + var fixSize = 0; + var g = 0; + var nbsp = '&nb' + 'sp;'; + for(var i = 0; i < trSize; i++){ + var temp = []; + // 鏍囬鍒楃敤td + if(i == 0){ + for(var j = 0; j < 15; j++){ + temp.push(j$(table).find('tr td')[j].innerHTML); + } + temp.shift(); // 绉婚櫎绗竴涓叏閫夋寜閽� + } else{ + for(var k = fixSize; k < fixSize + 14; k++){ + var htmlText = j$(table).find('tr td span')[k].innerHTML; + if(htmlText.slice(1,2) == 'a' && htmlText.slice(htmlText.length-2,htmlText.length-1) == 'a'){ + temp.push(j$(table).find('tr td span a')[g].innerHTML); + g++; + } else{ + if(j$(table).find('tr td span')[k].innerHTML == nbsp){ + temp.push(''); + }else{ + temp.push(j$(table).find('tr td span')[k].innerHTML); + } + } + } + if(fixSize < spanSize){ + fixSize += 14; + } + } + csv.push(temp.join(';')); + } + temp.push(''); + csv.push(temp.join(';')); + // csv.shift(); + return csv.join('\n'); + } + + function csv2sheet(csv) { + var sheet = {}; // 灏嗚鐢熸垚鐨剆heet + csv = csv.split('\n'); + csv.forEach(function(row, i) { + row = row.split(';'); + if(i == 0) sheet['!ref'] = 'A1:'+String.fromCharCode(65+row.length-1)+(csv.length-1); + row.forEach(function(col, j) { + sheet[String.fromCharCode(65+j)+(i+1)] = {v: col}; + }); + }); + return sheet; + } + + function sheet2blob(sheet, sheetName) { + sheetName = sheetName || 'sheet1'; + var workbook = { + SheetNames: [sheetName], + Sheets: {} + }; + workbook.Sheets[sheetName] = sheet; + // 鐢熸垚excel鐨勯厤缃」 + var wopts = { + bookType: 'xlsx', // 瑕佺敓鎴愮殑鏂囦欢绫诲瀷 + bookSST: false, // 鏄惁鐢熸垚Shared String Table锛屽畼鏂硅В閲婃槸锛屽鏋滃紑鍚敓鎴愰�熷害浼氫笅闄嶏紝浣嗗湪浣庣増鏈琁OS璁惧涓婃湁鏇村ソ鐨勫吋瀹规�� + type: 'binary' + }; + var wbout = XLSX.write(workbook, wopts); + var blob = new Blob([s2ab(wbout)], {type:"application/octet-stream"}); + // 瀛楃涓茶浆ArrayBuffer + function s2ab(s) { + var buf = new ArrayBuffer(s.length*2); // 姣忎釜瀛楃鍗犫饯2涓瓧鑺� + var view = new Uint8Array(buf); + for (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF; + return buf; + } + return blob; + } + + /** + * 閫氱敤鐨勬墦寮�涓嬭浇瀵硅瘽妗嗘柟娉曪紝娌℃湁娴嬭瘯杩囧叿浣撳吋瀹规�� + * @param url 涓嬭浇鍦板潃锛屼篃鍙互鏄竴涓猙lob瀵硅薄锛屽繀閫� + * @param saveName 淇濆瓨鏂囦欢鍚嶏紝鍙�� + */ + function openDownloadDialog(url, saveName) { + if(typeof url == 'object' && url instanceof Blob) { + url = URL.createObjectURL(url); // 鍒涘缓blob鍦板潃 + } + var aLink = document.createElement('a'); + aLink.href = url; + aLink.download = saveName || ''; // HTML5鏂板鐨勫睘鎬э紝鎸囧畾淇濆瓨鏂囦欢鍚嶏紝鍙互涓嶈鍚庣紑锛屾敞鎰忥紝file:///妯″紡涓嬩笉浼氱敓鏁� + var event; + if(window.MouseEvent) event = new MouseEvent('click'); + else { + event = document.createEvent('MouseEvents'); + event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); + } + aLink.dispatchEvent(event); + } </script> -</head> -<body> - <apex:form id="Form" style="margin:10px 10px;"> - <apex:actionFunction name="RetrievalBtn" action="{!RetrievalBtn}" rerender="Form, message" onComplete="unblockUI();"/> - <!-- <apex:actionFunction name="showPDF" action="{!showPDF}" rerender="Form, message" onComplete="unblockUI();" /> --> + <apex:form id="allForm" style="margin: 10px 10px;"> + <!-- <apex:actionFunction name="RetrievalBtn" action="{!RetrievalBtn}" rerender="allForm, message" onComplete="unblockUI();"/> --> + <!-- <apex:actionFunction name="showPDF" action="{!showPDF}" rerender="allForm, message" onComplete="skipPage();unblockUI();"/> --> <!-- 鍚庡彴鎶ラ敊淇℃伅鏄剧ず鐨勫叧閿� --> <apex:outputPanel id="message"> <apex:pageMessages ></apex:pageMessages> </apex:outputPanel> - <apex:pageBlock mode="maindetail" Id="Block"> - <div style="position: relative;top:0;width:100%;"> - <table> - <tr> - <td><apex:outputLabel value="妫�绱㈤儴" style="font-size:18px;font-weight:bold;padding-right: 5px;"/></td> - </tr> - <apex:repeat value="{!RevalInfoList}" var="reval" id="RevalInfoList"> - <tr> - <td style="text-align: center;padding-right: 100px;"> </td> - <td style="text-align: center;padding-right: 100px;"> - <apex:outputLabel style="font-weight: bold; padding-right: 5px;" value="淇悊鍗曞彿"/> - <apex:inputText id="RepairName" value="{!reval.RepairName}"/> - </td> - <td style="text-align: center;padding-right: 100px;"> - <apex:outputLabel style="font-weight: bold; padding-right: 5px;" value="SAP鍗曞彿"/> - <apex:inputText id="SAPRepairNo" value="{!reval.SAPRepairNo}"/> - </td> - <td style="text-align: center;padding-right: 100px;"> - <apex:outputLabel style="font-weight: bold; padding-right: 5px;" value="鍖婚櫌/绉戝"/> - <apex:inputText id="HospitalName" value="{!reval.HospitalName}"/> - </td> - <td style="text-align: center;padding-right: 100px;"> - <apex:commandButton style="width:80px;" value="妫�绱�" action="{!RetrievalBtn}" onclick="blockme();" reRender="Form,message" onComplete="unblockUI();"/> - </td> - </tr> - </apex:repeat> - </table> - <div style="font-size:12px; margin-top:10px"> - <apex:pageBlockSection title="璇︾粏淇℃伅" columns="1"> + <apex:outputPanel id="allPanel"> + <input type="hidden" id="pdfURL" value="{!pdfURL}" /> + <apex:pageBlock mode="maindetail" Id="allBlock"> + <div style="position: relative; width:100%; "> + <apex:pageBlock title="妫�绱㈠垪" id="Editable"> + <table> + <!--<tr><td> </td></tr>--> + <tr> + <td style="text-align: left; position: relative; top: 7px; padding-left: 50px;"> + <apex:outputLabel style="font-weight: bold; padding-right: 25px;" value="鐘舵��1"/> + <apex:selectList value="{!RevalInfo.Status1}" size="1" style="width: 150px; height: 24px;"> + <apex:selectOptions value="{!StatusItems1}"/> + </apex:selectList><p/> + </td> + <td style="text-align: left; position: relative; top: 7px; padding-left: 50px;"> + <apex:outputLabel style="font-weight: bold; padding-right: 25px;" value="鐘舵��2"/> + <apex:selectList value="{!RevalInfo.Status2}" size="1" style="width: 150px; height: 24px;"> + <apex:selectOptions value="{!StatusItems}"/> + </apex:selectList><p/> + </td> + <td style="text-align: left;padding-left: 50px;"> + <apex:outputLabel style="font-weight: bold; padding-right: 5px;" value="RS淇悊鍗曞彿"/> + <apex:inputText id="RepairName" value="{!RevalInfo.RepairName}"/> + </td> + <td style="text-align: left;padding-left: 50px;"> + <apex:outputLabel style="font-weight: bold; padding-right: 6px;" value="SAP淇悊鍗曞彿"/> + <apex:inputText id="SAPRepairNo" value="{!RevalInfo.SAPRepairNo}"/> + </td> + </tr> + <!--<tr><td> </td></tr>--> + <tr> + <td style="text-align: left; padding-left: 50px;"> + <apex:outputLabel style="font-weight: bold; padding-right: 5px;" value="鏈鸿韩缂栫爜"/> + <apex:inputText id="SerialNumber" value="{!RevalInfo.SerialNumber}"/> + </td> + <td style="text-align: left; padding-left: 50px;"> + <apex:outputLabel style="font-weight: bold; padding-right: 50px;" value="鐪佷唤"/> + <apex:inputText id="State_Hospital" value="{!RevalInfo.State_Hospital}"/> + </td> + <td style="text-align: left; padding-left: 50px;"> + <apex:outputLabel style="font-weight: bold; padding-right: 50px;" value="鍖婚櫌鍚嶇О"/> + <apex:inputText id="HP_Name" value="{!RevalInfo.HospitalName}"/> + </td> + <td style="text-align: left; padding-left: 50px;" > + <apex:outputLabel style="font-weight: bold; padding-right: 22px;" value="FSE鐢宠鏃�"/> + <apex:inputField id="FSE_ApplyForRepair_Day" value="{!RevalInfo.repair.Aware_date__c}"/>锛�<apex:inputField value="{!RevalInfo.repair.Aware_date2__c}"/> + </td> + </tr> + <!--<tr><td> </td></tr>--> + <tr> + <td style="text-align: left; position: relative; top: 7px;padding-left: 50px;"> + <apex:outputLabel style="font-weight: bold; padding-right: 5px;" value="鏈嶅姟鏂瑰紡"/> + <apex:selectList value="{!RevalInfo.onSiteRepair}" size="1" style="width: 150px; height: 24px;"> + <apex:selectOptions value="{!SiteRepairItems}"/> + </apex:selectList><p/> + </td> + <td style="text-align: left; padding-left: 50px;"> + <apex:outputLabel style="font-weight: bold; padding-right: 22px;" value="缁翠慨涓績"/> + <apex:inputText id="workLocationSelect" value="{!RevalInfo.workLocationSelect}"/> + <!-- <apex:selectList value="{!RevalInfo.workLocationSelect}" size="1" style="width: 150px; height: 24px;"> + <apex:selectOptions value="{!workLocationSelect}"/> + </apex:selectList><p/> --> + </td> + <td style="text-align: left;padding-left: 50px;"> + <div style="float:left;padding-right: 22px;"><apex:outputLabel style="font-weight: bold; " value="淇悊濮旀墭鑰�"/></div> + <div style="float:left"><apex:inputField id="InchargeStaffName" value="{!RevalInfo.repair.Incharge_Staff__c}"/></div> + </td> + </tr> + <tr> + <td style="text-align: center;" colspan="6"> + <apex:commandButton style="width:80px;" value="妫�绱�" action="{!RetrievalBtn}" onclick="blockme();" reRender="allForm,message" onComplete="unblockUI();"/> + </td> + </tr> + </table> + </apex:pageBlock> + <apex:pageBlock title="璇︾粏淇℃伅" > <input type="hidden" id="raCnt" value="{!RACount}" /> - <!-- <input type="hidden" id="raIdList" value="{!repairIdList}" /> --> - <apex:outputPanel > - <div style="text-align: center;"><apex:commandButton style="width:80px;" value="鎵撳嵃PDF" action="{!showPDF}" onclick="blockme();" reRender="Form,message" onComplete="unblockUI();"/></div> - <div style="width:700px; height:700px; margin-left:100px; margin-top:10px;"> - <table class="pure-table pure-table-horizontal" id="theTable_header"> - <tr style="background-color:#f2f3f3;"> - <th style="align:left; width:10%"><apex:inputCheckbox id="checkAll" onclick="checkAll();" style="text-align:left;"/></th> - <th style="text-align:left; width:30%">淇悊鍗曞彿</th> - <th style="text-align:left; width:30%">绉戝</th> - <th style="text-align:left; width:30%">鍖婚櫌</th> - </tr> - </table> - <div style="height:500px; overflow:auto;"> - <table class="pure-table pure-table-horizontal" id="theTable_header" style="width: 100%"> - <apex:repeat value="{!RAInfoList}" var="ra" id="records"> - <tr> - <td align="left" width="10%"> - <apex:inputCheckbox style="text-align:left;" id="checklist" value="{!ra.IFCheck}" /> - </td> - <td align="left" width="30%"> - <apex:outputField id="OTCode" value="{!ra.repair.Name}"/> - </td> - <td align="left" width="30%"> - <apex:outputField id="Samplename" value="{!ra.repair.HP_Name__c}"/> - </td> - <td align="left" width="30%"> - <apex:outputField id="Specs" value="{!ra.repair.Department_Name__c}"/> - </td> - </tr> - </apex:repeat> - </table> - </div> - </div> - </apex:outputPanel> - </apex:pageBlockSection> + <apex:commandButton style="width:80px;" value="鎵撳嵃PDF" action="{!showPDF}" onclick="blockme();" reRender="allForm,message" onComplete="unblockUI();skipPage();"/> + <apex:commandButton style="width:80px;" value="瀵煎嚭Excel" onclick="exportExcel();"/> + <div id="theTable" style="width:100%;height:385px;overflow:auto;"> + <!-- <table class="pure-table pure-table-horizontal" id="theTable_header" style="width:99%; margin-top:10px;border-collapse: collapse;table-layout:fixed;font-weight:bold;word-break:break-all;word-break:break-all;"> + </table> --> + <table class="pure-table pure-table-horizontal" id="theTable_header" style="margin-top:10px; width:99%; border-collapse: collapse;table-layout:fixed;"> + <tr style="background-color:#f2f3f3;font-weight:bold;"> + <td style="align:left; width:2%"><apex:inputCheckbox id="checkAll" onclick="checkAll();" style="text-align:left;"/></td> + <td style="text-align:center; width:6%">鐘舵��1</td> + <td style="text-align:center; width:6%">鐘舵��2</td> + <td style="text-align:center; width:8%">RS淇悊鍗曞彿</td> + <td style="text-align:center; width:9%">SAP淇悊鍗曞彿</td> + <td style="text-align:center; width:10%">鍨嬪彿</td> + <td style="text-align:center; width:6%">鏈鸿韩缂栧彿</td> + <td style="text-align:center; width:8%">鍖婚櫌鍚嶇О</td> + <td style="text-align:center; width:5%">鐪佷唤</td> + <td style="text-align:center; width:5%">淇悊濮旀墭鑰�</td> + <td style="text-align:center; width:7%">FSE鐢宠鏃ユ湡</td> + <td style="text-align:center; width:6%">缁翠慨涓績</td> + <td style="text-align:center; width:6%">鏈嶅姟鏂瑰紡</td> + <td style="text-align:center; width:8%;">鏈夋棤缁翠慨鍚堝悓瀵硅薄</td> + <td style="text-align:center; width:6%">鏃犲伩鍖哄埆鏍囧織</td> + </tr> + <apex:repeat value="{!RAInfoList}" var="ra" id="records"> + <tr> + <td align="center" width="2%"> + <apex:inputCheckbox style="text-align:left;" id="checklist" value="{!ra.IFCheck}" /> + </td> + <td align="center" width="6%"> + <apex:outputField id="Status1" value="{!ra.repair.Status1__c}"/> + </td> + <td align="center" width="6%"> + <apex:outputField id="Status2" value="{!ra.repair.Status2__c}"/> + </td> + <td align="center" width="8%"> + <apex:outputField id="OTCode" value="{!ra.repair.Name}"/> + </td> + <td align="center" width="9%"> + <apex:outputField id="SAP_Service_Repair_No" value="{!ra.repair.SAP_Service_Repair_No__c}"/> + </td> + <td align="center" width="10%"> + <apex:outputField id="Delivered_Product" value="{!ra.repair.Delivered_Product__c}"/> + </td> + <td align="center" width="6%" style="word-wrap:break-word;word-break:break-all;"> + <apex:outputField id="SerialNumber" value="{!ra.repair.SerialNumber__c}"/> + </td> + <td align="center" width="8%"> + <apex:outputField id="HP_Name" value="{!ra.repair.HP_Name__c}"/> + </td> + <td align="center" width="5%"> + <apex:outputField id="State_Hospital" value="{!ra.repair.State_Hospital__c}"/> + </td> + <td align="center" width="5%"> + <apex:outputField id="Incharge_Staff" value="{!ra.repair.Incharge_Staff__c}"/> + </td> + <td align="center" width="7%"> + <apex:outputField id="FSE_ApplyForRepair_Day" value="{!ra.repair.FSE_ApplyForRepair_Day__c}"/> + </td> + <td align="center" width="6%"> + <apex:outputField id="work_location_select" value="{!ra.repair.work_location_select__c}"/> + </td> + <td align="center" width="6%"> + <apex:outputField id="On_site_repair" value="{!ra.repair.On_site_repair__c}"/> + </td> + <td align="center" width="8%"> + <apex:outputField id="Number_of_EffectiveContract" value="{!ra.repair.Number_of_EffectiveContract__c}"/> + </td> + <td align="center" width="6%"> + <apex:outputField id="NewProductGuaranteeObject" value="{!ra.repair.NewProductGuaranteeObject__c}"/> + </td> + </tr> + </apex:repeat> + </table> + </div> + </apex:pageBlock> </div> - </div> - </apex:pageBlock> + </apex:pageBlock> + </apex:outputPanel> </apex:form> -</body> </apex:page> \ No newline at end of file -- Gitblit v1.9.1