| force-app/main/default/classes/LexSISearchSetProductController.cls | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| force-app/main/default/classes/LexSISearchSetProductController.cls-meta.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| force-app/main/default/lwc/lexSISearchSetProduct/lexSISearchSetProduct.css | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| force-app/main/default/lwc/lexSISearchSetProduct/lexSISearchSetProduct.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| force-app/main/default/lwc/lexSISearchSetProduct/lexSISearchSetProduct.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| force-app/main/default/lwc/lexSISearchSetProduct/lexSISearchSetProduct.js-meta.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
force-app/main/default/classes/LexSISearchSetProductController.cls
New file @@ -0,0 +1,173 @@ public with sharing class LexSISearchSetProductController { public LexSISearchSetProductController(){ } @AuraEnabled public static InitData init(){ InitData data=new InitData(); data.rc = new Product_Set__c(); data.sc = new Product_Set__c(); data.cl = new List<Product_Set__c>(); data.baseUrl = URL.getSalesforceBaseUrl().toExternalForm(); data.SearchName=''; data.SearchCode=''; data.SearchPrice=''; data.SearchQuantity=''; data.reportid=''; data.setProductidFullList=new list<String>(); data.activities=new List<SSPLine>(); data.setPFString=''; data.DataStatus=''; data.LabelI=''; Report r = new Report(); List<Report> rs = new List<Report>(); rs=[Select id,DeveloperName,Name,NamespacePrefix from Report Where DeveloperName='Set_Product_Detail']; if (rs.size()>0){ data.reportid = rs[0].id; data.reportid = data.reportid.substring(0,15); } data.LabelI=Product_Set__c.Quote_Select_Info__c.getDescribe().getLabel(); System.debug('init: '+data); return data; } @AuraEnabled public static InitData serContact(String searchName,String searchCode){ InitData data=new InitData(); String searchSql = 'Select id, name, Price__c, Product_Set_CD__c, Quantity__c,Valid_Status__c,Quote_Select_Info__c From Product_Set__c '; String whereStr = 'Where id != null '; String whereSql = ''; if(searchName != null && searchName != ''){ whereSql += 'and name Like ' + '\'%' + searchName + '%\' '; } if(searchCode != null && searchCode != ''){ whereSql += 'and Product_Set_CD__c like ' + '\'%' + searchCode + '%\' '; } /* */ searchSql = searchSql + whereStr + whereSql; searchSql += ' order by Product_Set_CD__c limit 500'; data.cl = Database.query(searchSql); data.activities = New List<SSPLine>(); // SSPLine a = new SSPLine(); for(Product_Set__c psl : data.cl){ SSPLine a = new SSPLine(psl); data.activities.add(a); } return data; } @AuraEnabled public static InitData SelectDone(List<String> activities,List<Boolean> isSelected){ try{ InitData data=new InitData(); data.setPFString = ''; data.setProductidFullList = New List<String>(); if(activities.size()==1){ data.setPFString = activities[0]; }else{ for(Integer i=0;i<activities.size();i++){ if(isSelected[i]==true){ if(String.isblank(data.setPFString)||data.setPFString==null){ data.setPFString = activities[i]; }else{ data.setPFString = data.setPFString+','+activities[i]; } } } } data.DataStatus = 'Fin'; return data; }catch(Exception e){ System.debug('SelectDone error:'+e); } return null; } @AuraEnabled public static String getFileName(){ Schema.DescribeFieldResult r = Product_Set__c.Quote_Select_Info__c.getDescribe(); return r.getLabel(); } public class InitData{ @AuraEnabled public Product_Set__c rc; @AuraEnabled public Product_Set__c sc; @AuraEnabled public List<Product_Set__c> cl; @AuraEnabled public String SearchName; @AuraEnabled public String SearchCode; @AuraEnabled public String SearchPrice; @AuraEnabled public String SearchQuantity; @AuraEnabled public String baseUrl; @AuraEnabled public String reportid; @AuraEnabled public List<String> setProductidFullList; @AuraEnabled public List<SSPLine> activities; @AuraEnabled public String setPFString; @AuraEnabled public String DataStatus; @AuraEnabled public String LabelI; } public class SSPLine { @AuraEnabled public Boolean isSelected; @AuraEnabled public String setProductid; @AuraEnabled public String setProductidFull; @AuraEnabled public Decimal Quantity; @AuraEnabled public Product_Set__c theObject; @AuraEnabled public String Name; @AuraEnabled public String Product_Set_CD_c; @AuraEnabled public String Quote_Select_Info_c; @AuraEnabled public Boolean Valid_c; public SSPLine(Product_Set__c psl) { isSelected = false; setProductid = psl.id; setProductid = setProductid.substring(0,15); setProductidFull = psl.id; Name = psl.Name; Product_Set_CD_c= psl.Product_Set_CD__c; Quantity = psl.Quantity__c; Quote_Select_Info_c = psl.Quote_Select_Info__c; Valid_c = psl.Valid_Status__c; } } } force-app/main/default/classes/LexSISearchSetProductController.cls-meta.xml
New file @@ -0,0 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <apiVersion>51.0</apiVersion> <status>Active</status> </ApexClass> force-app/main/default/lwc/lexSISearchSetProduct/lexSISearchSetProduct.css
New file @@ -0,0 +1,10 @@ /*div { color: #fff; height: 300px; overflow-y: auto; overflow-x: hidden; }*/ .spacer { height: 10px; /* 设置合适的高度来隔开上下两个模块 */ } force-app/main/default/lwc/lexSISearchSetProduct/lexSISearchSetProduct.html
New file @@ -0,0 +1,117 @@ <template> <!-- <apex:includeScript value="{!URLFOR($Resource.jquery183minjs)}"/> <apex:includeScript value="{!URLFOR($Resource.PleaseWaitDialog)}"/> --> <template if:true={isLoad}> <form id="mainForm" > <!-- <apex:actionFunction action="{!SelectDone}" name="SelectDone" reRender="setPFString,DataStatus" oncomplete="SetMuiltProduct();"/> --> <lightning-input type="hidden" value={data.setPFString} id="setPFString" ></lightning-input> <lightning-input type="hidden" value={data.DataStatus} id="DataStatus" > </lightning-input> <lightning-card title={Label.Set_Search}> <!-- <apex:pageBlock id="idSearchSetProduct" title="{Label.Set_Search}"> --> <div class="spacer" style="background-color:#DCDCDC;"> </div> <table width="900" border="0" style="background-color:#DCDCDC;" class="my-table" > <colgroup> <col width="12" /> <col width="20" /> <col width="20" /> <col width="200" /> <col width="200" /> <col width="20" /> <col width="428" /> </colgroup> <tr> <td> </td> <th style="width: 50px">{Label.Search_Condition}</th> <td> </td> <th>{Label.Set_Name}</th> <th>{Label.Set_Code}</th> <td> </td> <td> </td> </tr> <tr> <td> </td> <td> </td> <td> </td> <td><lightning-input type="search" value={SearchName} onchange={searchNameInputChange} style="width:200px" ></lightning-input></td> <td><lightning-input type="search" value={SearchCode} onchange={searchCodeInputChange} style="width:200px" > </lightning-input></td> <td><lightning-button label={Label.Search} onclick={Select} rerender="idRezultVisitor" class="slds-m-left_x-small"> </lightning-button></td> <td><lightning-button label="添加" onclick={DataPrepare} class="slds-m-left_x-small"></lightning-button></td> </tr> <tr> <td style="border-bottom: 1px solid #888;" colspan="15"> </td> </tr> </table> <div class="spacer" style="background-color:#DCDCDC;"> </div> <table width="900" border="0" style="background-color:#DCDCDC;" > <tr> <td width="12"> </td> <th valign="top">{Label.Search_Result}</th> <td width="20"> </td> <td> <table border="0"> <tr> <td> <div id="iframelike" style="width:770px; height: 300px; overflow-y: auto; overflow-x: hidden;"> <lightning-datatable key-field="id" data={data.activities} columns = {columns}> </lightning-datatable> <!-- <apex:pageBlockTable id="idRezultVisitor" value="{!activities}" var="c" border="1" columns="7" columnsWidth="30px,300px,120px,90x,200px,50px"> <apex:column > <apex:facet name="header">选择</apex:facet> <apex:inputCheckbox value="{!c.isSelected}"/> </apex:column> <apex:column > <apex:facet name="header">Report</apex:facet> <apex:outputLink value="{!baseUrl}/{!reportid}?pv1={!c.setProductid}" target="_blank">◆</apex:outputLink> </apex:column> <apex:column > <apex:facet name="header">{Label.Set_Name}</apex:facet> <apex:outputLink value="{!c.Name}" onclick="SetProductId('{!c.setProductidFull}')">{!c.Name}</apex:outputLink> </apex:column> <apex:column > <apex:facet name="header">{Label.Set_Code}</apex:facet> <apex:outputText value="{!c.Product_Set_CD_c}" /> </apex:column> <apex:column > <apex:facet name="header">{Label.Quantity}</apex:facet> <apex:outputText value="{!c.Quantity}" /> </apex:column> <apex:column > <apex:facet name="header">{data.LabelI}</apex:facet> <apex:outputText value="{!c.Quote_Select_Info_c}" /> </apex:column> <apex:column > <apex:facet name="header">{!$Label.Valid_Status}</apex:facet> <template layout="inline" rendered={c.Valid_c} > <img width="16" height="16" title="チェック" class="checkImg" alt="チェック" src="/img/checkbox_checked.gif"/> </template> </apex:column> </apex:pageBlockTable> --> </div> </td> </tr> </table> </td> </tr> </table> <!-- </apex:pageBlock> --> </lightning-card> </form> </template> </template> force-app/main/default/lwc/lexSISearchSetProduct/lexSISearchSetProduct.js
New file @@ -0,0 +1,181 @@ import { LightningElement, track, wire } from 'lwc'; import Set_Name from '@salesforce/label/c.Set_Name'; import Search_Condition from '@salesforce/label/c.Search_Condition'; import Set_Search from '@salesforce/label/c.Set_Search'; import Set_Code from '@salesforce/label/c.Set_Code'; import Search from '@salesforce/label/c.Search'; import Search_Result from '@salesforce/label/c.Search_Result'; import Quantity from '@salesforce/label/c.Quantity'; import Valid_Status from '@salesforce/label/c.Valid_Status'; import serContact from '@salesforce/apex/LexSISearchSetProductController.serContact'; import SelectDone from '@salesforce/apex/LexSISearchSetProductController.SelectDone'; import getFileName from '@salesforce/apex/LexSISearchSetProductController.getFileName'; import init from '@salesforce/apex/LexSISearchSetProductController.init'; import a from '@salesforce/resourceUrl/jquery183minjs'; import b from '@salesforce/resourceUrl/PleaseWaitDialog'; export default class lexSISearchSetProduct extends LightningElement { Label={ Set_Name, Search_Condition, Set_Search, Set_Code, Search_Result, Search, Quantity, Valid_Status, }; isLoad=false; data; LabelI=''; SearchName=''; SearchCode=''; columns = [ { label: '选择', fieldName: 'isSelected' }, { label: 'Report', fieldName: 'setUrl' }, { label: this.Label.Set_Name, fieldName: 'Name' }, { label: this.Label.Set_Code, fieldName: 'Product_Set_CD_c' }, { label: this.Label.Quantity, fieldName: 'Quantity' }, { label: this.Label.Valid_Status, fieldName: 'img' } // { label: 'Website', fieldName: 'Asset_Model_No_forPrint__c', type: 'url' }, // { label: 'Phone', fieldName: 'phone', type: 'phone' }, // { label: 'Balance', fieldName: 'amount', type: 'currency' }, // { label: 'CloseAt', fieldName: 'closeAt', type: 'date' }, ]; async connectedCallback(){ // getFileName().then(res=>{ // console.log("ttt"); // console.log(res); // this.Quote_Select_Info__c_Label=res; // }) console.log("jinru"); await init().then(res=>{ console.log("hhh"); console.log("res:"); console.log(res); console.log(res.LabelI); this.data=res; this.LabelI=res.LabelI; for (var i = this.data.activities.length - 1; i >= 0; i--) { this.data.activities[i].setUrl= res.baseUrl + '/'+ res.reportid +'?pv1='+ this.data.activities[i].setProductid; this.data.activities[i].urlIcon=true; if(this.data.activities[i].Valid_c){ this.data.activities[i].img=''; } } this.columns = [ // { label: '选择', fieldName: 'isSelected' }, { label: 'Report', fieldName: 'setUrl', type: 'url', typeAttributes: { label: '◆', target: '_blank' }, cellAttributes: { iconName: { fieldName: 'urlIcon', operator: '=', value: true } ? 'standard:link' : '', iconPosition: 'left', } }, { label: this.Label.Set_Name, fieldName: 'Name' }, { label: this.Label.Set_Code, fieldName: 'Product_Set_CD_c' }, { label: this.Label.Quantity, fieldName: 'Quantity' }, { label: this.data.LabelI, fieldName: 'Quote_Select_Info_c' }, { label: this.Label.Valid_Status, fieldName: 'img' } ]; this.isLoad=true; }); } SetProductId(str) { //top.window.opener.setProductEntry(str); top.window.opener.setProductEntryGateway(str); top.window.close(); } SetMuiltProduct(){ var Str = this.data.setPFString; var isPrepared = this.data.DataStatus; if(isPrepared!='Fin'){ confirm(isPrepared) }else if(Str==''||Str==null){ if(confirm("您尚未选取任何产品配套,确认完成么?")){ top.window.close(); }else{ } }else{ top.window.opener.setProductEntryGateway(Str); top.window.close(); } } async DataPrepare() { // body... console.log("添加:"); this.data.DataStatus='数据尚未准备好,请稍等'; console.log(this.data); let activities=[]; let isSelected=[]; for (var i = this.data.activities.length - 1; i >= 0; i--) { activities.push(this.data.activities[i].setProductidFull); isSelected.push(this.data.activities[i].isSelected); } //j$(escapeVfId("Page:mainForm:DataStatus")).val('数据尚未准备好,请稍等'); await SelectDone({activities:activities,isSelected:isSelected}).then(res=>{ console.log("SelectDone:"); console.log(res); if(res!=null){ this.data.setPFString=res.setPFString; this.data.setProductidFullList=res.setProductidFullList; this.data.DataStatus=res.DataStatus; console.log(this.data); } }).catch(err=>{ console.log("err:"); console.log(err); console.log(err.message); }); } Select(){ serContact({searchName:this.data.SearchName,searchCode:this.data.SearchCode}).then(res=>{ console.log("查询结果"); console.log(res); if(res!=null){ this.data.cl=res.cl; this.data.activities=res.activities; for (var i = this.data.activities.length - 1; i >= 0; i--) { this.data.activities[i].setUrl= this.data.baseUrl + '/'+ this.data.reportid +'?pv1='+ this.data.activities[i].setProductid; if(this.data.activities[i].Valid_c){ this.data.activities[i].img='√'; } } console.log("activities!"); } let t=this.data; this.data={}; this.data=t; console.log(this.data); }) } searchNameInputChange(event){ this.data.SearchName = event.detail.value; } searchCodeInputChange(event){ this.data.SearchCode = event.detail.value; } // function DataReady() { // // body... // j$(escapeVfId("Page:mainForm:DataStatus")).value()='Fin'; // } } force-app/main/default/lwc/lexSISearchSetProduct/lexSISearchSetProduct.js-meta.xml
New file @@ -0,0 +1,11 @@ <?xml version="1.0" encoding="UTF-8"?> <LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata" fqn="lexSISearchSetProduct"> <apiVersion>51.0</apiVersion> <isExposed>true</isExposed> <targets> <target>lightning__AppPage</target> <target>lightning__RecordPage</target> <target>lightning__HomePage</target> <target>lightning__RecordAction</target> </targets> </LightningComponentBundle>