From 2bb4a2bc34048f49815846db354b5c8994669a3c Mon Sep 17 00:00:00 2001
From: buli <137736985@qq.com>
Date: 星期一, 09 五月 2022 17:48:43 +0800
Subject: [PATCH] SF PIPL Page Backup

---
 force-app/main/default/pages/QuotePDF.page |  553 ++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 342 insertions(+), 211 deletions(-)

diff --git a/force-app/main/default/pages/QuotePDF.page b/force-app/main/default/pages/QuotePDF.page
index d8564a8..103cf6e 100644
--- a/force-app/main/default/pages/QuotePDF.page
+++ b/force-app/main/default/pages/QuotePDF.page
@@ -1,225 +1,356 @@
-<apex:page standardController="Quote" extensions="QuotePDFExtensionController" showHeader="false" sidebar="false" renderAs="pdf" action="{!startQuote}">
-<apex:stylesheet value="{!URLFOR($Resource.quotepdf)}"/>
+<apex:page Controller="QuotePDFController" showHeader="false" sidebar="false" id="allPage" action="{!init}" >
+    <!-- <apex:page Controller="QuotePDFController" showHeader="false" sidebar="false" id="allPage" action="{!init}" renderAs="pdf"> -->
 <head>
-
-<style>
-
-</style>
-
+    <style>
+        @page {
+            size: A4;
+            margin: 1mm 1mm 1mm 1mm;
+        }
+    </style>
 </head>
-
-<body style="font-family: Arial Unicode MS;">
-
-    <!-- 銉氥兗銈哥暘鍙枫伄瀹氱京 -->  
-    <apex:variable var="count" value="{!0}"/>
-    
-    <!-- 銉氥兗銈搞伄銉償銉笺儓 -->
-    <apex:repeat value="{!printRecords}" var="items" id="thePage">
-
-    <!-- 銉氥兗銈搞偔銉c兂銉愩偣 -->        
-    <div class="pageCanvas">
-    
-        <!-- 銉氥兗銈哥暘鍙枫偆銉炽偗銉儭銉炽儓 -->
-        <apex:variable var="count" value="{!count + 1}"/>
+<body style="font-family: Arial Unicode MS; page-break-inside: auto">
+    <div id="pdf-wrapper">
+        <div class="pdf-page">
+            <table border="0" width="100%" style="border-collapse: collapse;">
+                <tr>
+                    <td style="text-align:right;">{!quoteInfo.quoteDate}</td>
+                </tr>
+                <tr>
+                    <td style="text-align:right;">{!$ObjectType.Quote.label}#{!quoteInfo.quoteNo}</td>
+                </tr>
+                <tr>
+                    <td style="text-align:right;">{!$Label.Label_Total_pages}锛歿!pageCnt}</td>
+                </tr>
+                <tr>
+                    <td style="text-align:left;">{!$Label.Label_From}锛歿!quoteInfo.dealerName}</td>
+                </tr>
+                <tr>
+                    <td style="text-align:left;">{!$ObjectType.Contact.label}锛�<span id="dealerContactName">{!quoteInfo.dealerContactName}</span>&nbsp;&nbsp;&nbsp;&nbsp;{!$ObjectType.Contact.fields.MobilePhone.label}锛�<span>{!quoteInfo.dealerContactPhone}</span></td>
+                </tr>
+                <tr>
+                    <td style="text-align:left;">{!$ObjectType.Account.fields.Address1__c.label}锛歿!quoteInfo.dealerAddress}</td>
+                </tr>
+                <tr>
+                    <td style="text-align:left;">{!$ObjectType.Contact.fields.Phone.label}锛歿!quoteInfo.dealerPhone}&nbsp;&nbsp;&nbsp;&nbsp;{!$ObjectType.Contact.fields.Fax.label}锛歿!quoteInfo.dealerFax}</td>
+                </tr>
+                <tr>
+                    <td style="text-align:left;">{!$ObjectType.Contact.fields.Email.label}锛歿!quoteInfo.dealerEmail}</td>
+                </tr>
+                <tr>
+                    <td style="text-align:left;">&nbsp;</td>
+                </tr>
+                <tr>
+                    <td style="text-align:left;">{!$Label.Label_To}锛歿!quoteInfo.accountName}</td>
+                </tr>
+                <tr>
+                    <td style="text-align:left;" id="accountContactName">{!quoteInfo.accountContactName}</td>
+                </tr>
+                <tr>
+                    <td style="text-align:left;">{!$ObjectType.Contact.fields.Phone.label}锛�<span id="accountContactPhone">{!quoteInfo.accountContactPhone}</span>&nbsp;&nbsp;&nbsp;&nbsp;{!$ObjectType.Contact.fields.Email.label}锛�<span id="accountContactEmail">{!quoteInfo.accountContactEmail}</span></td>
+                </tr>
+            </table>
         
-        <!-- 鍚勩儦銉笺偢銇偪銈ゃ儓銉� -->
-        <div class="quoteTitle">{!$Label.Quote_Title}</div>
-        <!-- 鍚勩儦銉笺偢銇儤銉冦儉銈儯銉炽儛銈� -->
-        <div class="headerCanvas">
-            <table style="border-style:none; border-color:red;">
-                <tr>
-                    <td>
-                        <div>Quotation</div>
-                        <div>&nbsp;</div>
-                        <div>{!$Label.Quote_Client_Name}</div>
-                        <div><apex:outputpanel rendered="{!params.Agent1Name!=null}">{!$Label.Contract_Detail_Dealer_Name}</apex:outputpanel><apex:outputpanel rendered="{!params.Agent1Name==null}">&nbsp;</apex:outputpanel></div>
-                        <div><apex:outputpanel rendered="{!params.Agent2Name!=null}">{!$Label.Contract_Detail_Dealer_Name}</apex:outputpanel><apex:outputpanel rendered="{!params.Agent2Name==null}">&nbsp;</apex:outputpanel></div>
-                    </td>
-                    <td>
-                        <div>:&nbsp;</div>
-                        <div>&nbsp;</div>
-                        <div>:&nbsp;</div>
-                        <div><apex:outputpanel rendered="{!params.Agent1Name!=null}">:</apex:outputpanel>&nbsp;</div>
-                        <div><apex:outputpanel rendered="{!params.Agent2Name!=null}">:</apex:outputpanel>&nbsp;</div>
-                    </td>
-                    <td>
-                        <div>&nbsp;{!params.quoteNo}</div>
-                        <div>&nbsp;</div>
-                        <div>&nbsp;{!params.clientName}</div>
-                        <div>&nbsp;<apex:outputpanel rendered="{!params.Agent1Name!=null}">{!params.agent1Name}</apex:outputpanel></div>
-                        <div>&nbsp;<apex:outputpanel rendered="{!params.Agent2Name!=null}">{!params.agent2Name}</apex:outputpanel></div>
-                    </td>
+            <br/>
+            Quotation Sheet(Quotation #{!quoteInfo.quoteNo})<br/>
+        
+            <table border="1" width="100%" style="border-collapse: collapse;table-layout: fixed;">
+                <colgroup>
+                    <col width="10%" />
+                    <col width="60%" />
+                    <col width="10%" />
+                    <col width="20%" />
+                </colgroup>
+                <tr style="text-align: center;">
+                    <th>{!$Label.Label_Units}</th>
+                    <th>{!$Label.Label_Description}</th>
+                    <th>{!$ObjectType.QuoteLineItem.fields.Quantity.label}</th>
+                    <th>{!$ObjectType.QuoteLineItem.fields.TotalPrice.label}{!currencyIsoCode}</th>
                 </tr>
-            </table>
-            <table style="border-style:none; top:0px; right:0px; position:absolute;">
+                <apex:repeat value="{!printRecords}" var="set">
                 <tr>
-                    <td>
-                        <div style="text-align:right;">鎶ヤ环鏃ユ湡 :&nbsp;&nbsp;{!params.quoteDateString}</div>
-                        <div>姝ゆ姤浠峰崟鑷姤浠锋棩璧蜂笁涓湀鍐呮湁鏁�</div>
-                    </td>
+                    <td style="text-align: center;"><apex:outputText value="{!set.units}" /></td>
+                    <td><apex:outputText value="{!set.description}" /></td>
+                    <td style="text-align: right;"><apex:outputText value="{!set.qty}" /></td>
+                    <td style="text-align: right;"><apex:outputText value="{!set.total}" /></td>
                 </tr>
+                </apex:repeat>
             </table>
-            <table style="border-style:none; border-color:green; top:36px; right:0px; position:absolute;">
-                <tr>
-                    <td>
-                        <div>&nbsp;{!$Label.Quote_Department}</div>
-                        <div>&nbsp;<apex:outputpanel rendered="{!params.Agent1Name!=null}">{!$Label.phone}</apex:outputpanel></div>
-                        <div>&nbsp;<apex:outputpanel rendered="{!params.Agent2Name!=null}">{!$Label.phone}</apex:outputpanel></div>
-                    </td>
-                    <td>
-                        <div>:&nbsp;</div>
-                        <div><apex:outputpanel rendered="{!params.Agent1Name!=null}">:</apex:outputpanel>&nbsp;</div>
-                        <div><apex:outputpanel rendered="{!params.Agent2Name!=null}">:</apex:outputpanel>&nbsp;</div>
-                    </td>
-                    <td>
-                        <div>&nbsp;{!params.departmentName}</div>
-                        <div>&nbsp;<apex:outputpanel rendered="{!params.Agent1Name!=null}">{!params.agent1Phone}</apex:outputpanel></div>
-                        <div>&nbsp;<apex:outputpanel rendered="{!params.Agent2Name!=null}">{!params.agent2Phone}</apex:outputpanel></div>
-                    </td>
-                    <td>
-                        <div style="width:40px; border-style:none;"></div>
-                    </td>
-                    <td>
-                        <div>&nbsp;</div>
-                        <div>&nbsp;<apex:outputpanel rendered="{!params.Agent1Name!=null}">{!$Label.fax}</apex:outputpanel></div>
-                        <div>&nbsp;<apex:outputpanel rendered="{!params.Agent2Name!=null}">{!$Label.fax}</apex:outputpanel></div>
-                    </td>
-                    <td>
-                        <div>&nbsp;</div>
-                        <div><apex:outputpanel rendered="{!params.Agent1Name!=null}">:</apex:outputpanel>&nbsp;</div>
-                        <div><apex:outputpanel rendered="{!params.Agent2Name!=null}">:</apex:outputpanel>&nbsp;</div>
-                    </td>
-                    <td>
-                        <div>&nbsp;</div>
-                        <div>&nbsp;<apex:outputpanel rendered="{!params.Agent1Name!=null}">{!params.agent1Fax}</apex:outputpanel></div>
-                        <div>&nbsp;<apex:outputpanel rendered="{!params.Agent2Name!=null}">{!params.agent2Fax}</apex:outputpanel></div>
-                    </td>
-                </tr>
-            </table>
+        
+            <br/>
+        
+            Note:<br/>
+        <!--     1)  The payment terms are {!quoteInfo.note1} .<br/>
+            浠樻鏂瑰紡 {!quoteInfo.note2} 銆�<br/>
+            2)  Quoation valid until {!quoteInfo.note3} .<br/>
+            鎶ヤ环鏈夋晥鏈熷埌 {!quoteInfo.note3} 銆�<br/>
+            3)  All the commodoties come with {!quoteInfo.note4} year's manufacturer warranty.<br/>
+            鎵�鏈夊晢鍝佸惈 {!quoteInfo.note4} 骞村巶瀹朵繚淇��<br/>
+            4)  The above quotations are {!quoteInfo.note5} prices, Commodoties shipped to the clien's requirements.<br/>
+            涓婅堪鎶ヤ环涓� {!quoteInfo.note5} 浠凤紝鍟嗗搧閫佽嚦瀹㈡埛鎸囧畾鍦扮偣銆�<br/>
+            5)  The above quotations are all {!quoteInfo.note6}.<br/>
+            涓婅堪鎶ヤ环鍧囦负 {!quoteInfo.note7} 浠枫��<br/>
+            6)  Configuration as per attached.<br/>
+            閰嶇疆娓呭崟璇﹁闄勪欢銆�<br/> -->
+            <apex:outputText value="{!quoteInfo.comment}" escape="false"/>
+        <!--     1)  The above quotations are CIP prices, Commodities shipped to the client鈥檚 requirements.<br/>
+            2)  The above quotations are all tax {!quoteInfo.note2}.<br/>
+            3)  The payment terms are {!quoteInfo.note3}.<br/>
+            4)  Quotation valid until {!quoteInfo.note4}.<br/>
+            5)  All the commodities come with {!quoteInfo.note5} year鈥檚 manufacturer warranty.<br/>
+            6)  Configuration as per attached.<br/>
+            7)  Delivery lead time is {!quoteInfo.note7} days after receipt of payment.<br/> -->
+            
         </div>
-        
-        <!-- 瑭崇窗閮ㄥ垎銇儤銉冦儉 -->
-        <div class="currencyType">鍗樹綅: {!params.trade}</div>
-        
-        <!-- 銉氥兗銈稿唴銇┏绱般伄REPEAT -->
-        <div class="detailCanvas">
-            <apex:dataTable value="{!items}" var="item" id="dataTable" styleClass="detailTable" headerClass="detailTableHeader" columnClasses="detailTableCols">
-                <apex:column styleClass="detailRowNumber" style="vertical-align:text-top; text-align: center;">
-                        <apex:facet name="header">{!$Label.Quote_Product_Code}</apex:facet>
-                        <apex:outputText value="{!item.qli.Item_Order__c}"/>
-                </apex:column>
-                <apex:column styleClass="detailRowString" style="vertical-align:text-top;">
-                        <apex:facet name="header"></apex:facet>
-                        <apex:outputText value="{!item.qli.Asset_Model_No_forPrint__c}"/>
-                </apex:column>
-                <apex:column styleClass="detailRowString" style="vertical-align:text-top;">
-                        <apex:facet name="header"></apex:facet>
-                        <apex:outputText value="{!item.qli.NameForPrintDelimiter__c}"/>
-                </apex:column>
-                <apex:column styleClass="detailRowString" style="vertical-align:text-top;">
-                        <apex:facet name="header">{!$Label.Quote_Product_Name}</apex:facet>
-                        <!-- CHAN-BC6AFM LHJ 20190515 Start-->
-                        <!-- <apex:outputText value="{!item.qli.NameForPrint__c}"/> -->
-                        <c:PDFWbr targetStr="{!item.qli.NameForPrint__c}"/>
-                        <!-- CHAN-BC6AFM LHJ 20190515 End-->
-                </apex:column>
-                <apex:column styleClass="detailRowNumeric" style="vertical-align:text-top;" rendered="{!params.isUnitPrice==true}">
-                        <apex:facet name="header">{!$Label.Detail_Price}</apex:facet>
-                        <apex:outputText value="{0, number, ###,##0.00}">
-                            <apex:param value="{!item.UnitPrice_c}" />
-                        </apex:outputText>
-                </apex:column>
-                <apex:column styleClass="detailRowNumeric" style="vertical-align:text-top;">
-                        <apex:facet name="header">{!$Label.Quantity}</apex:facet>
-                        <apex:outputText value="{0, number, ###,###}">
-                            <apex:param value="{!item.qli.Quantity}" />
-                        </apex:outputText>
-                </apex:column>
-                <!-- 2021/01/18 liying start -->
-                <apex:column styleClass="detailRowNumeric" style="text-align: center; vertical-align:text-top;" rendered="{!IF(params.isGuranteePeriod, true, false)}">
-                        <apex:facet name="header">鐗规畩淇濅慨骞撮檺</apex:facet>    
-                        <apex:outputText value="{!item.qli.GuaranteePeriod__c}"/>                  
-                </apex:column>
-                <!-- 2021/01/18 liying end -->
-                <apex:column styleClass="detailRowNumeric"  style="vertical-align:text-top;" rendered="{!params.isOfferAmount==true}">
-                        <apex:facet name="header">{!$Label.Detail_Sum}</apex:facet>
-                        <apex:outputText value="{0, number, ###,##0.00}">
-                            <apex:param value="{!item.TotalPrice_c}" />
-                        </apex:outputText>
-                </apex:column>
-            </apex:dataTable>
-        </div>
-        
-        <!-- 鏈�绲傘儦銉笺偢銇仩銇戣〃绀恒仚銈嬪悎瑷堟瑒 -->
-        <apex:outputPanel rendered="{!count==maxPageNumber}">
-            <div class="totalCanvas">
-                <div style="width:120px;">
-                    <apex:outputPanel rendered="{!params.iSTotalPrice}"><div class="totalLabel">鎶ヤ环鎬婚 : </div></apex:outputPanel>
-                    <!-- <apex:outputPanel rendered="{!params.isMultiYearPrice && IF(params.trade == 'RMB', true, false)}"><div class="totalLabel">鏈嶅姟鎶ヤ环鎬婚 : </div></apex:outputPanel> -->
-                    <apex:outputPanel rendered="{!params.isDiscountRate}"><div class="totalLabel">{!$Label.Total_Discount_Percent} : </div></apex:outputPanel>
-                    <apex:outputPanel rendered="{!params.isDiscountAmount}"><div class="totalLabel">{!$Label.Discount_Amount} : </div></apex:outputPanel>
-                    <apex:outputPanel rendered="{!params.isTradingPrice}"><div class="totalLabel">{!$Label.Row_Total_Sum} : </div></apex:outputPanel>
-                </div>
-                <div style="position: absolute; top: 0px; right: 0px; padding-right:5px;">
-                    <div class="totalValue"><apex:outputText rendered="{!params.iSTotalPrice}" value="{0, number, ###,##0.00}"><apex:param value="{!params.totalPrice}"/></apex:outputText></div>
-                   <!--  <div class="totalValue"><apex:outputText rendered="{!params.isDiscountAmount}" value="{0, number, ###,##0.00}"><apex:param value="{!params.MultiYearWarrantyTotalPrice}"/></apex:outputText></div> -->
-                   <!-- <div class="totalValue"><apex:outputText rendered="{!params.isMultiYearPrice && IF(params.trade == 'RMB', true, false)}" value="{0, number, ###,##0.00}"><apex:param value="{!params.MultiYearWarrantyTotalPrice}"/></apex:outputText></div> -->
-                    <div class="totalValue"><apex:outputText rendered="{!params.isDiscountRate}">{!params.discountRate}%</apex:outputText></div>
-                    <div class="totalValue"><apex:outputText rendered="{!params.isDiscountAmount}" value="{0, number, ###,##0.00}"><apex:param value="{!params.discountAmount}"/></apex:outputText></div>
-                    <div class="totalValue"><apex:outputText rendered="{!params.isTradingPrice}"   value="{0, number, ###,##0.00}"><apex:param value="{!params.tradingPrice}"  /></apex:outputText></div>
-                </div>
-            </div>
+        <apex:outputPanel rendered="{!pageCnt > 1}" layout="none">
+            <div style="page-break-after: always;"/>
         </apex:outputPanel>
-              
-        <br />
         
-        <!-- 鍚勩儦銉笺偢銇儠銉冦偪銈儯銉炽儛銈� -->
-        <apex:outputPanel rendered="{!count==maxPageNumber}">
-            <div class="footerCanvas">
-                <div class="footerSignLast">
-                    {!$Label.Quote_OWner} : {!params.ownerName}銆�{!$Label.Quote_Mobile_Phone} : {!params.mobilePhone}<br />
-                    <br />
-                    锛坽!$Label.Quote_Owner_Signature}锛�<br />
-                    
+        <apex:variable value="{!1}" var="cnt1" />
+        <apex:repeat value="{!printRecords}" var="set">
+            <!-- <apex:variable value="{!1}" var="cnt2" /> -->
+            <apex:repeat value="{!set.setPage}" var="sp">
+                <div class="pdf-page">
+                    <table border="1" width="100%" style="border-collapse: collapse;table-layout: fixed; font-size: 12px;">
+                        <colgroup>
+                            <col width="3%" />
+                            <col width="10%" />
+                            <col width="15%" />
+                            <col width="{!IF(isPrintPrice=='true', 23, 33)}%" />
+                            <col width="{!IF(isPrintPrice=='true', 20, 33)}%" />
+                            <col width="5%" />
+                            <apex:outputPanel rendered="{!isPrintPrice=='true'}" layout="none">
+                            <col width="12%" />
+                            <col width="12%" />
+                            </apex:outputPanel>
+                        </colgroup>
+                        <!-- <apex:outputPanel rendered="{!cnt2 == 1}" layout="none"> -->
+                        <tr style="text-align: center;">
+                            <td colspan="{!IF(isPrintPrice=='true', 8, 6)}">{!set.description}{!$Label.Label_Set_detail}</td>
+                        </tr>
+                        <!-- </apex:outputPanel> -->
+                        <tr style="text-align: center;">
+                            <td>{!$Label.Label_No}</td>
+                            <td>{!$ObjectType.Product2.fields.ProductCode.label}</td>
+                            <td>{!$ObjectType.Product2.fields.Product_ECCode__c.label}</td>
+                            <td>{!$ObjectType.Product2.fields.Description.label}</td>
+                            <td>{!$ObjectType.QuoteLineItem.fields.Description.label}</td>
+                            <td>{!$ObjectType.QuoteLineItem.fields.Quantity.label}</td>
+                            <apex:outputPanel rendered="{!isPrintPrice=='true'}" layout="none">
+                            <td>{!$ObjectType.QuoteLineItem.fields.UnitPrice.label}{!currencyIsoCode}</td>
+                            <td>{!$ObjectType.QuoteLineItem.fields.TotalPrice.label}{!currencyIsoCode}</td>
+                            </apex:outputPanel>
+                        </tr>
+                        <apex:repeat value="{!sp}" var="line">
+                        <tr>
+                            <td style="text-align: center;"><apex:outputText value="{!line.lineNo}" /></td>
+                            <td><apex:outputText escape="false" value="{!line.productCode}" /></td>
+                            <td><apex:outputText escape="false" value="{!line.productEC}" /></td>
+                            <td><apex:outputText escape="false" value="{!line.description}" /></td>
+                            <td><apex:outputText escape="false" value="{!line.comment}" /></td>
+                            <td style="text-align: right;"><apex:outputText value="{!line.quantity}" /></td>
+                            <apex:outputPanel rendered="{!isPrintPrice=='true'}" layout="none">
+                            <td style="text-align: right;"><apex:outputText value="{!line.price}" /></td>
+                            <td style="text-align: right;"><apex:outputText value="{!line.totalPrice}" /></td>
+                            </apex:outputPanel>
+                        </tr>
+                        </apex:repeat>
+                    </table>
                 </div>
-                
-                <div class="footerAddress">
-                    
-                    <div>
-                        鈻!params.addressName}銆�銆�銆�<br />
-                        {!params.address}锛堥偖缂栵細{!params.postCode}锛�
-                    </div>
-                    <!-- <div style="height: 10px;"></div>
-                    <div>
-                        鈻″ゥ鏋楀反鏂紙鍖椾含锛夐攢鍞湇鍔℃湁闄愬叕鍙镐笂娴峰垎鍏徃銆�銆�銆�<br />
-                        &nbsp;&nbsp;{!params.address}锛堥偖缂栵細{!params.postCode}锛�
-                    </div>
-                    <div style="height: 10px;"></div>
-                    <div>
-                        鈻″ゥ鏋楀反鏂紙鍖椾含锛夐攢鍞湇鍔℃湁闄愬叕鍙稿箍宸炲垎鍏徃銆�銆�銆�<br />
-                        &nbsp;&nbsp;{!params.address}锛堥偖缂栵細{!params.postCode}锛�
-                    </div> -->
-
-                </div>
-            </div>
-        </apex:outputPanel>
-        <apex:outputPanel rendered="{!count!=maxPageNumber}">
-            <div class="footerSign"  style="position:absolute; top:880px;">
-                {!$Label.Quote_OWner} : {!params.ownerName}銆�{!$Label.Quote_Mobile_Phone} : {!params.mobilePhone}<br />
-                <br />
-                锛坽!$Label.Quote_Owner_Signature}锛�<br />
-            </div>
-        </apex:outputPanel>
-     
-     </div>
-        
-        <!-- 鍚勩儦銉笺偢銈掑尯鍒囥倠鏀广儦銉笺偢銆佹渶绲傘儦銉笺偢銇伅鍑恒仌銇亜銈堛亞銇仐銇︺亜銈� -->
-        <apex:outputpanel rendered="{!count<maxPageNumber}">
-        <div style="page-break-after: always;"/>
-        </apex:outputpanel>
-        
-    </apex:repeat>
-
+            
+    
+            <apex:outputPanel rendered="{!cnt1 < pageCnt - 1}" layout="none">
+                <div style="page-break-after: always;"/>
+            </apex:outputPanel>
+    
+            <!-- <apex:variable value="{!cnt2 + 1}" var="cnt2" /> -->
+            <apex:variable value="{!cnt1 + 1}" var="cnt1" />
+            </apex:repeat>
+        </apex:repeat>
+    </div>
 </body>
+<style>
+    /* 20220221 PI鏀归�� by 寰愪寒 start */
+    body{margin: 0 auto;width: 780px;}
+    .title1{height: 30px;}
+    .title2{height: 110px;}
+    /* 20220221 PI鏀归�� by 寰愪寒 end */
+</style>
+<!-- 20220221 PI鏀归�� by 寰愪寒 start  -->
+<apex:includeScript value="{! URLFOR($Resource.AWSService, 'AWSService.js') }" />
+<script src="../../soap/ajax/53.0/connection.js" type="text/javascript"></script>
+<apex:stylesheet value="{!URLFOR($Resource.blockUIcss)}"/>
+<apex:includeScript value="{!URLFOR($Resource.jquery183minjs)}"/>
+<apex:includeScript value="{!URLFOR($Resource.PleaseWaitDialog)}"/>
+<apex:includeScript value="{!URLFOR($Resource.jspdf)}"/>
+<apex:includeScript value="{!URLFOR($Resource.html2canvas)}"/>
 
+<!-- 20220221 PI鏀归�� by 寰愪寒 end  -->
+<!-- 20220221 PI鏀归�� by 寰愪寒 start  -->
+<script>
+    AWSService.sfSessionId = '{!GETSESSIONID()}';
+    sforce.connection.serverUrl = '{!$Site.Prefix}/services/Soap/u/53.0';
+    var staticResourceContact = JSON.parse('{!staticResourceContact}');
+    var staticResourceOpportunity = JSON.parse('{!staticResourceOpportunity}');
+    var staticResourceFile = JSON.parse('{!staticResourceFile}');
+    function Fun(pdf) {
+
+        var form = jQuery("<form method='post'></form>");
+        jQuery(document.body).append(form);
+        let href = window.location.href
+        let arr = href.split('/')
+        form.attr({ "action": staticResourceFile.hostUrl + staticResourceFile.extraInfo + "?from=" + encodeURIComponent(href) + "&fileName=" + encodeURIComponent(arr[arr.length - 1].split('?')[0]) });
+        // form.attr({"action":"http://127.0.0.1:8080/a/d?from="+encodeURIComponent(window.location.href)});
+        let input = jQuery("<input type='hidden'/>");
+        input.attr({ "name": "base64Str" });
+        input.val(pdf.output('datauristring').substr(28));
+        form.append(input);
+        form.submit();
+
+        // jQuery("body > *").each(function(){
+        // 	jQuery(this).css('display','none');
+        // })
+        // jQuery("body").append('<embed style="position:absolute; left: 0; top: 0;" width="100%" height="100%" src="'+pdf.output('datauristring')+'" type="application/pdf"/>')
+
+    }
+
+    let id = "pdf-wrapper";
+    var target = document.getElementById(id);
+    // 鎶奿mageDta杞崲鎴恥rl
+        // page_height锛氫竴椤电殑楂樺害
+        function ImageDataToUrl(img_data,page_height){
+            let cvs = document.createElement("CANVAS");
+            cvs.width = img_data.width;
+            cvs.height = page_height;
+            var ctx= cvs.getContext("2d");
+            ctx.fillStyle="white";
+            ctx.fillRect(0,0,cvs.width,cvs.height);// 濉厖canvas鎵�鏈夊尯鍩熶负鐧借壊
+            ctx.putImageData(img_data,0,0);
+            return cvs.toDataURL('image/jpeg', 1.0);
+        }
+        function jsPdfDownload() {
+    
+            let jtargets = jQuery("#pdf-wrapper .pdf-page");
+            let j_arr = new Array(jtargets.length + 1).join(0).split('').map(function () { return false });
+            let landscape = false;
+            let pw = 595.28;
+            let ph = 841.89;
+            const marginw = 40;
+            const marginh = 40;
+    
+            let orientation = '';
+            if (landscape) {
+                pw += ph; ph = pw - ph; pw = pw - ph;
+                orientation = 'l';
+            }
+            var pdf = new jsPDF(orientation, 'pt', 'a4');// 绗竴涓弬鏁板~瀛楁瘝l锛屾敞鎰忎笉鏄暟瀛�1锛屼负妯悜pdf
+            jtargets.each(function (i, e) {
+                e.style.background = "#FFFFFF";
+            })
+    
+            let rei = 0;
+            let recursion = null;
+            recursion = function (i) {
+                if (i >= jtargets.length) {
+                    Fun(pdf);
+                    return;
+                }
+                e = jtargets[i];
+                html2canvas(e, {
+                    scale: 2,
+                    onrendered: function (canvas) {
+                        /**
+                        鏈柟娉曢渶瑕佸仛鍑犱釜浜嬫儏
+                        1.闇�瑕佹妸canvas鐨勫唴瀹瑰垎椤垫樉绀哄埌pdf鐨勯〉涓�
+                        2.canvas鐨勫楂橀渶瑕佸拰pdf鐨勫楂樿繘琛屾槧灏�
+                        3.鎴彇鍒扮殑鍐呭闇�瑕佹斁杩涗竴椤靛楂樼殑canvas閲岄潰锛屽苟瀵瑰叾浣欏尯鍩熷埛鐧�
+                        */
+                        var ctx = canvas.getContext("2d");
+                        let canvas_max_page_num = 9;
+                        let canvas_current_page_num = 0;
+                        var contentWidth = canvas.width;
+                        var contentHeight = canvas.height;
+    
+                        
+                        //鏈敓鎴恜df鐨刪tml椤甸潰楂樺害
+                        var leftHeight = contentHeight;
+                        //椤甸潰鍋忕Щ
+                        var position = 0;
+                        
+                        //a4绾哥殑灏哄[595.28,841.89]锛宧tml椤甸潰鐢熸垚鐨刢anvas鍦╬df涓浘鐗囩殑瀹介珮
+                        var outputWidth = pw - 2 * marginw;//595.28//宸﹀彸杈硅窛20
+                        let rate = outputWidth / 780;//杈撳嚭瀹藉害鍜屽唴瀹瑰搴︾殑姣斾緥
+                        var outputHeight = ph - 2 * marginh;//宸﹀彸杈硅窛20
+                        let onePdfPageInCanvasHeight = contentWidth/outputWidth*outputHeight;//涓�椤祊df鍦╟anvas涓殑楂樺害;
+                        //var pageData = canvas.toDataURL('image/jpeg', 1.0);
+                        var pageData = null;
+                        var imgData = null;
+                        
+                        var captureHeight = null;// 鎴彇鐨勫綋鍓峜anvas椤电殑楂樺害
+                        
+                        let j = i;
+                        while(position < contentHeight){
+                            
+                            if (j++) {
+                                pdf.addPage();
+                            }
+
+                            if(position+onePdfPageInCanvasHeight>contentHeight){
+                                captureHeight = contentHeight-position;
+                            }else{
+                                captureHeight = onePdfPageInCanvasHeight;
+                            }
+    
+                            imgData = ctx.getImageData(0,position,contentWidth,captureHeight);
+                            pageData = ImageDataToUrl(imgData,onePdfPageInCanvasHeight);
+                            pdf.addImage(pageData, 'JPEG', marginw, marginh, outputWidth, outputHeight);//宸﹀彸杈硅窛20,琚緭鍑虹殑鍥剧墖浼氳鎷変几涓簅utputWidth锛宱utputHeight鐨勫楂�
+                            canvas_current_page_num++;
+                            position += onePdfPageInCanvasHeight;
+                            if (canvas_max_page_num > 0 && canvas_current_page_num >= canvas_max_page_num) {
+                                break;
+                            }
+                        }
+    
+                        recursion(i + 1);
+                    }
+                })
+            };
+            recursion(rei);
+    
+    
+    
+        }
+    
+        //blockme();
+        document.body.onload = function(){
+            
+            let i = 0;
+            let Foo = function(){
+                if ( i == 2) {
+                    if(confirm("PDF宸插姞杞藉畬姣曪紝鏄惁鏄剧ず锛�")){
+                        jsPdfDownload(); 
+                    }
+                }
+            }
+
+            AWSService.query(staticResourceContact.queryUrl, '{!quoteInfo.conAwsDataId}', function(data){
+                //unblockUI();
+                document.getElementById("accountContactName").innerHTML = data.object.lastName;
+                document.getElementById("accountContactPhone").innerHTML = data.object.phone;
+                document.getElementById("accountContactEmail").innerHTML = data.object.email;
+                i++;
+                Foo();
+            }, staticResourceContact.token);
+
+            AWSService.query(staticResourceOpportunity.queryUrl, '{!quoteInfo.oppAwsDataId}', function(data){
+                //unblockUI();
+                document.getElementById("dealerContactName").innerHTML = data.object.dealerSalesStaffName;
+                i++;
+                Foo();
+            }, staticResourceOpportunity.token);
+        }
+        
+        
+    
+</script>
+<!-- 20220221 PI鏀归�� by 寰愪寒 end  -->
 </apex:page>
\ No newline at end of file

--
Gitblit v1.9.1