| force-app/main/default/classes/lexBatchSelectRepairLWCController.cls | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| force-app/main/default/classes/lexBatchSelectRepairLWCController.cls-meta.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| force-app/main/default/lwc/lexBatchSelectRepairLWC/lexBatchSelectRepairLWC.css | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| force-app/main/default/lwc/lexBatchSelectRepairLWC/lexBatchSelectRepairLWC.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| force-app/main/default/lwc/lexBatchSelectRepairLWC/lexBatchSelectRepairLWC.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| force-app/main/default/lwc/lexBatchSelectRepairLWC/lexBatchSelectRepairLWC.js-meta.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
force-app/main/default/classes/lexBatchSelectRepairLWCController.cls
New file @@ -0,0 +1,295 @@ /** * 2023-04-07 * 批量选择修理LWC处理 */ public with sharing class lexBatchSelectRepairLWCController { public static List<Repair__c> RepairList; public static List<RepairData> RAInfoList; public static List<String> repairIdList; // public static String pdfURL; //查询Repair数据 @AuraEnabled public static ReturnData search(String json) { //2023/04/07 LWC ReturnData returnData = new ReturnData(); RetrievalData RevalInfo = (RetrievalData)System.JSON.deserialize(json,RetrievalData.class); System.debug(LoggingLevel.INFO, '*** RevalInfo: ' + RevalInfo); //pageController 逻辑 RepairList = new List<Repair__c>(); RAInfoList = new List<RepairData>(); if(String.isBlank(RevalInfo.Status1) && String.isBlank(RevalInfo.Status2) && String.isBlank(RevalInfo.RepairName) && String.isBlank(RevalInfo.SAPRepairNo) && String.isBlank(RevalInfo.SerialNumber) && String.isBlank(RevalInfo.repair.Incharge_Staff__c) && String.isBlank(RevalInfo.onSiteRepair) && String.isBlank(String.valueOf(RevalInfo.repair.Aware_date__c)) && String.isBlank(String.valueOf(RevalInfo.repair.Aware_date2__c)) && String.isBlank(RevalInfo.workLocationSelect) && String.isBlank(RevalInfo.State_Hospital)){ // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '请至少添加一个检索条件!')); return null; } // 2023/04/10 add 型号,修理委托者 名称 String sql = 'select Id, Name, SAP_Service_Repair_No__c, Status1__c, Status2__c, Delivered_Product__c, SerialNumber__c, Delivered_Product__r.Name,Incharge_Staff__r.Name,'; sql += 'HP_Name__c, State_Hospital__c, Incharge_Staff__c, FSE_ApplyForRepair_Day__c, work_location_select__c, On_site_repair__c,'; sql += 'Number_of_EffectiveContract__c, NewProductGuaranteeObject__c from Repair__c where Id != null '; if(String.isNotBlank(RevalInfo.Status2)){ sql += ' and Status2__c = \'' + RevalInfo.Status2 + '\''; } if(String.isNotBlank(RevalInfo.Status1)){ sql += ' and Status1__c = \'' + RevalInfo.Status1 + '\''; } if(String.isNotBlank(RevalInfo.HospitalName)){ sql += ' and HP_Name__c like \'%' + RevalInfo.HospitalName.trim() + '%\''; } if(String.isNotBlank(RevalInfo.RepairName)){ System.debug(LoggingLevel.INFO, '***RevalInfo.RepairName.contains(): ' + RevalInfo.RepairName.contains(' ')); String splitStr = null; if(RevalInfo.RepairName.contains(' ')){ splitStr = ' '; }else if(RevalInfo.RepairName.contains(',')){ splitStr = ','; } if(splitStr != null && RevalInfo.RepairName.contains(splitStr)){ sql += ' and ('; list <String> nameList = RevalInfo.RepairName.split(splitStr); for(String name: nameList){ sql += 'Name like \'%' + name + '%\' or '; } sql = sql.removeEnd('or '); sql += ')'; }else{ sql += ' and Name like \'%' + RevalInfo.RepairName.trim() + '%\''; } System.debug(LoggingLevel.INFO, '*** sql: ' + sql); } if(String.isNotBlank(RevalInfo.SAPRepairNo)){ System.debug(LoggingLevel.INFO, '***RevalInfo.SAPRepairNo.contains(): ' + RevalInfo.SAPRepairNo.contains(' ')); String splitStr = null; if(RevalInfo.SAPRepairNo.contains(' ')){ splitStr = ' '; }else if(RevalInfo.SAPRepairNo.contains(',')){ splitStr = ','; } if(splitStr != null && RevalInfo.SAPRepairNo.contains(splitStr)){ sql += ' and ('; list <String> noList = RevalInfo.SAPRepairNo.split(splitStr); for(String no: noList){ sql += 'SAP_Service_Repair_No__c like \'%' + no + '%\' or '; } sql = sql.removeEnd('or '); sql += ')'; }else{ sql += ' and SAP_Service_Repair_No__c like \'%' + RevalInfo.SAPRepairNo.trim() + '%\''; } System.debug(LoggingLevel.INFO, '*** sql: ' + sql); } if(String.isNotBlank(RevalInfo.SerialNumber)){ List<String> SerialNumberList = new List<String>(); if(RevalInfo.SerialNumber.indexOf(',') != -1){ SerialNumberList = RevalInfo.SerialNumber.split(','); } System.debug('SerialNumberList1:' + SerialNumberList); // 支持模糊查询多个,文本框输入用英文半角逗号分隔 if(SerialNumberList.size() > 0){ sql += ' and (SerialNumber__c like \'%'; Integer i = 0; for(String SerialNumber : SerialNumberList){ if(i == 0){ sql += SerialNumber.trim() + '%\''; }else{ sql += 'or SerialNumber__c like \'%' + SerialNumber.trim() + '%\''; } i++; } sql += ')'; } else{ sql += ' and SerialNumber__c like \'%' + RevalInfo.SerialNumber.trim() + '%\''; } } if(String.isNotBlank(RevalInfo.repair.Incharge_Staff__c)){ sql += ' and Incharge_Staff__c = \'' + RevalInfo.repair.Incharge_Staff__c + '\''; } if(String.isNotBlank(String.valueof(RevalInfo.repair.Aware_date__c))&&String.isNotBlank(String.valueof(RevalInfo.repair.Aware_date2__c))){ String day = String.valueof(RevalInfo.repair.Aware_date__c); String day2 = String.valueof(RevalInfo.repair.Aware_date2__c); day = day.substring(0,10); day2 = day2.substring(0,10); sql += ' and FSE_ApplyForRepair_Day__c >= ' + day + 'and FSE_ApplyForRepair_Day__c <=' +day2; } if(String.isNotBlank(RevalInfo.onSiteRepair)){ sql += ' and On_site_repair__c = \'' + RevalInfo.onSiteRepair + '\''; } if(String.isNotBlank(RevalInfo.workLocationSelect)){ List<String> workLocationSelectList = new List<String>(); if(RevalInfo.workLocationSelect.indexOf(',') != -1){ workLocationSelectList = RevalInfo.workLocationSelect.split(','); } System.debug('workLocationSelectList1:' + workLocationSelectList); if(workLocationSelectList.size() > 0){ sql += ' and (work_location_select__c like \'%'; Integer i = 0; for(String workLocationSelect : workLocationSelectList){ if(i == 0){ sql += workLocationSelect.trim() + '%\''; }else{ sql += 'or work_location_select__c like \'%' + workLocationSelect.trim() + '%\''; } i++; } sql += ')'; } else{ sql += ' and work_location_select__c like \'%' + RevalInfo.workLocationSelect.trim() + '%\''; } } if(String.isNotBlank(RevalInfo.State_Hospital)){ sql += ' and State_Hospital__c like \'%' + RevalInfo.State_Hospital.trim() + '%\''; } sql += 'and Status1__c not in(\'0.删除\',\'0.取消\') limit 200'; System.debug('sql1LWC:' + sql); if(String.isNotBlank(sql)){ RepairList = Database.query(sql); } if(RepairList.size() == 200){ // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '检索数据太多,请缩小检索范围!')); //2023/04/07 returnData returnData.status = '检索数据太多,请缩小检索范围!'; } if(RepairList.size() <= 0){ // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '没检索到任何修理')); //2023/04/07 returnData returnData.status = '没检索到任何修理'; return returnData; } for(Repair__c ra : RepairList){ RepairData raData = new RepairData(ra); RAInfoList.add(raData); } // return RAInfoList; returnData.repairData = RAInfoList; System.debug(LoggingLevel.INFO, '*** returnData: ' + returnData); return returnData; } //打印PDF @AuraEnabled public static String showPDF(String json) { System.debug(LoggingLevel.INFO, '*** joinshoPDF: '); List<Repair__c> RepairList = (List<Repair__c>)System.JSON.deserialize(json,List<Repair__c>.class); if(RepairList == null || RepairList.isEmpty()){ return '请先检索修理'; } repairIdList = new List<String>(); for(Repair__c rd : RepairList) { System.debug(LoggingLevel.INFO, '*** rd: ' + rd); repairIdList.add(rd.Id); } // RepairList = new List<Repair__c>(); String url = '='; /*System.debug('RAInfoList:' + RAInfoList); if(RAInfoList == null || RAInfoList.isEmpty()){ // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '请先检索修理')); return '请先检索修理'; }*/ /*for(RepairData rd : RAInfoList) { System.debug(LoggingLevel.INFO, '*** rd: ' + rd); //选中的repair if(rd.IFCheck){ repairIdList.add(rd.repair.Id); RepairList.add(rd.repair); } }*/ System.debug(LoggingLevel.INFO, '***repairIdList : ' + repairIdList); System.debug(LoggingLevel.INFO, '***RepairList : ' + RepairList); if(repairIdList.size() > 0){ if(repairIdList.size() <= 50){ if(RepairList.size() > 0){ System.debug(LoggingLevel.INFO, '*** if size>0 generateAttachment: '); generateAttachment(RepairList); } for(String Id : repairIdList){ url += Id + '='; } url = url.substring(0, url.lastIndexOf('=')); // PageReference pageRef = new PageReference('/apex/MaintenanceCommissionPDF?id' + url); // pageRef.setRedirect(true); // return pageRef; String pdfURL = ''; if(isSandbox()){ pdfURL = 'https://ocsm--stagefull--c.visualforce.com/apex/MaintenanceCommissionPDF?id' + url; } else{ pdfURL = 'https://ocsm.my.salesforce.com/apex/MaintenanceCommissionPDF?id' + url; } return pdfURL; } else{ // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '多单打印最大数量为50,请选择少于50个修理!')); return '多单打印最大数量为50,请选择少于50个修理!'; } } else{ // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '请至少选择一个修理')); return '请至少选择一个修理'; } } // 生成pdf添加到对应的修理中 public static PageReference generateAttachment(List<Repair__c> repList){ System.debug(LoggingLevel.INFO, '*** generateAttachment: '); BatchSelectRepairPDFDelete pdf = new BatchSelectRepairPDFDelete(); pdf.deletePDF(repList); pdf.createPDF(repList); return null; } // 判断是否是测试环境 public static Boolean isSandbox() { return [SELECT IsSandbox FROM Organization LIMIT 1].IsSandbox; } public class RetrievalData { @AuraEnabled public String Status1; @AuraEnabled public String Status2; @AuraEnabled public String RepairName; @AuraEnabled public String SAPRepairNo; @AuraEnabled public String SerialNumber; @AuraEnabled public String onSiteRepair; @AuraEnabled public String workLocationSelect; @AuraEnabled public String State_Hospital; @AuraEnabled public String HospitalName; @AuraEnabled public Repair__c repair; public RetrievalData(){ repair = new Repair__c(); } } public class RepairData { @AuraEnabled public Boolean IFCheck; @AuraEnabled public Repair__c repair; public RepairData(Repair__c RepairInfo){ IFCheck = null; repair = RepairInfo; } } //2023/04/07 返回查询结果和状态 public class ReturnData { @AuraEnabled public String status; @AuraEnabled public List<RepairData> repairData; } } force-app/main/default/classes/lexBatchSelectRepairLWCController.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>52.0</apiVersion> <status>Active</status> </ApexClass> force-app/main/default/lwc/lexBatchSelectRepairLWC/lexBatchSelectRepairLWC.css
New file @@ -0,0 +1,9 @@ .Narrow{ padding: 20px; } .searchField,.searchField .input-text{ /*display: flex;*/ } .searchField .slds-combobox_container{ width: 160px !important; } force-app/main/default/lwc/lexBatchSelectRepairLWC/lexBatchSelectRepairLWC.html
New file @@ -0,0 +1,107 @@ <template> <!-- <div class="slds-box slds-theme--default"> Click on the link Below to Export data as csv/xls. <p class="slds-m-top--large"> <a onclick={exportContactData}>Export Contact Data</a> <lightning-button variant="brand" label="Export Contact data" title="Export Contact Data" onclick={exportContactData}></lightning-button> </p> </div> --> <lightning-card variant="Narrow"> <div style="padding: 0 20px"> <div> <div style="padding: 10px 3px;border-bottom: 1px solid;font: 16px;font-size: blod;">检索列</div> <div style="margin-top: 5px"> <lightning-layout> <!-- cancelPaddingLeft --> <lightning-layout-item flexibility="auto" padding="around-small"> <lightning-combobox name="progress" label="状态1" value={searchObj.Status1} options={status1Options} onchange={handleStatus1Change} class="searchField"></lightning-combobox> </lightning-layout-item> <lightning-layout-item flexibility="auto" padding="around-small"> <lightning-combobox name="progress" label="状态2" value={searchObj.Status2} options={status2Options} onchange={handleStatus2Change} class="searchField"></lightning-combobox> </lightning-layout-item> <lightning-layout-item flexibility="auto" padding="around-small"> <lightning-combobox name="progress" label="服务方式" value={searchObj.onSiteRepair} options={siteRepairItems} onchange={handleSiteChange} class="searchField"></lightning-combobox> </lightning-layout-item> </lightning-layout> <lightning-layout> <lightning-layout-item size="4" padding="horizontal-small"> <lightning-input value={searchObj.RepairName} type="text" label="RS修理单号" class="searchField" onchange={handleRepairNameChange}></lightning-input> </lightning-layout-item> <lightning-layout-item size="4" padding="horizontal-small"> <lightning-input value={searchObj.SAPRepairNo} type="text" label="SAP修理单号" class="searchField" onchange={handleSAPRepairNoChange}></lightning-input> </lightning-layout-item> <lightning-layout-item size="4" padding="horizontal-small"> <lightning-input value={searchObj.workLocationSelect} type="text" label="维修中心" class="searchField" onchange={handleWorkLocationChange}></lightning-input> </lightning-layout-item> </lightning-layout> <lightning-layout> <lightning-layout-item size="4" padding="horizontal-small"> <lightning-input value={searchObj.SerialNumber} type="text" label="机身编码" class="searchField" onchange={handleSerialNumberChange}></lightning-input> </lightning-layout-item> <lightning-layout-item size="4" padding="horizontal-small"> <lightning-input value={searchObj.State_Hospital} type="text" label="省份" class="searchField" onchange={handleStateHospitalChange}></lightning-input> </lightning-layout-item> <lightning-layout-item size="4" padding="horizontal-small"> <lightning-input value={searchObj.HospitalName} type="text" label="医院名称" class="searchField" onchange={handleHospitalChange}></lightning-input> </lightning-layout-item> </lightning-layout> <lightning-layout> <lightning-layout-item size="2" padding="horizontal-small"> <lightning-input type="date" label="FSE申请日(开始)" value={repair.Aware_date__c} onchange={handleAwareDateDStart}></lightning-input> </lightning-layout-item> <!-- cancelPaddingLeft --> <lightning-layout-item size="2" padding="horizontal-small"> <!-- variant="label-hidden" --> <lightning-input type="date" label="FSE申请日(结束)" value={repair.Aware_date2__c} onchange={handleAwareDateDEnd}></lightning-input> </lightning-layout-item> <lightning-layout-item size="4" padding="horizontal-small"> <!-- record-id={recordId} 修理委托者 Incharge_Staff__c--> <!-- <lightning-record-edit-form object-api-name={objectApiName} record-id='' > <lightning-input-field field-name={nameField} onclick={handleInchargeStaffChange}> </lightning-input-field> </lightning-record-edit-form> --> <lightning-record-edit-form object-api-name='Repair__c' record-id='' > <lightning-input-field field-name='Incharge_Staff__c' onclick={handleInchargeStaffChange}> </lightning-input-field> </lightning-record-edit-form> </lightning-layout-item> </lightning-layout> <lightning-layout> <lightning-layout-item flexibility="auto" padding="around-small"> <lightning-button label="检索" onclick={searchRepair}></lightning-button> </lightning-layout-item> </lightning-layout> </div> </div> <div> <div style="padding: 10px 5px;border-bottom: 1px solid">详细信息</div> <div style="padding: 10px 0;"> <lightning-button label="打印PDF" onclick={skipPage}></lightning-button> <lightning-button label="导出Excel" onclick={exportContactData}></lightning-button> <!-- <lightning-button label="导出Excel" onclick={downloadCSVFile}></lightning-button> --> </div> <div> <lightning-datatable key-field="id" data={data} columns={columns} onrowselection={getSelectedRows} onrowaction={handleRowAction}> </lightning-datatable> </div> </div> </div> </lightning-card> </template> force-app/main/default/lwc/lexBatchSelectRepairLWC/lexBatchSelectRepairLWC.js
New file @@ -0,0 +1,576 @@ import { LightningElement,wire,track,api} from 'lwc'; import { CurrentPageReference } from "lightning/navigation"; import { CloseActionScreenEvent } from 'lightning/actions'; import { NavigationMixin } from 'lightning/navigation'; import { ShowToastEvent } from 'lightning/platformShowToastEvent'; import NAME_FIELD from '@salesforce/schema/Repair__c.Incharge_Staff__c'; import MY_CUSTOM_OBJECT from '@salesforce/schema/Repair__c'; import search from '@salesforce/apex/lexBatchSelectRepairLWCController.search'; import showPDF from '@salesforce/apex/lexBatchSelectRepairLWCController.showPDF'; /* const actions = [ { label: 'Show details', name: 'show_details' }, { label: 'Delete', name: 'delete' }, ];*/ const columns = [ { label: '状态1', fieldName: 'Status1__c'}, { label: '状态2', fieldName: 'Status2__c' }, { label: 'RS修理单号', fieldName: 'Name' }, { label: 'SAP修理单号', fieldName: 'SAP_Service_Repair_No__c' }, // { label: '型号', fieldName: 'deliveredProductName' }, { label: '型号', fieldName: 'deliveredProductUrl',type:'url', typeAttributes:{ label:{ fieldName:'deliveredProductName' }, target:'_balank' } }, { label: '机身编号', fieldName: 'SerialNumber__c' }, { label: '医院名称', fieldName: 'HP_Name__c' }, { label: '省份', fieldName: 'State_Hospital__c' }, // { label: '修理委托者', fieldName: 'Incharge_Staff_Name' }, { label: '修理委托者', fieldName: 'inchargeStaffUrl',type:'url', typeAttributes:{ label:{ fieldName:'inchargeStaffName' }, target:'_balank' } }, { label: 'FSE申请日期', fieldName: 'FSE_ApplyForRepair_Day__c' }, { label: '维修中心', fieldName: 'work_location_select__c' }, { label: '服务方式', fieldName: 'On_site_repair__c' }, { label: '有无维修合同对象', fieldName: 'Number_of_EffectiveContract__c' }, { label: '无偿区别标志', fieldName: 'NewProductGuaranteeObject__c' } /* { type: 'action', typeAttributes: { rowActions: actions }, },*/ ]; export default class lexBatchSelectRepairLWC extends LightningElement { // Expose a field to make it available in the template nameField = NAME_FIELD; // Flexipage provides recordId and objectApiName @api recordId; @api objectApiName; data = []; columns = columns; //状态1 status1Options = [{ label: '--无--', value: '' }, { label: '0.申请完毕', value: '0.申请完毕' }, { label: '2.维修报价阶段', value: '2.维修报价阶段' }, { label: '3.维修阶段', value: '3.维修阶段' }, { label: '4.修理品返送阶段', value: '4.修理品返送阶段' }, { label: '5.完毕', value: '5.完毕' }, { label: '0.删除', value: '0.删除' }, { label: '0.取消', value: '0.取消' }]; //状态2 status2Options = [{label:'00.申请完毕', value:'00.申请完毕'}, {label:'01.分公司受理完毕', value:'01.分公司受理完毕'}, {label:'02.RC受理完毕', value:'02.RC受理完毕'}, {label:'03.报价检查结束', value:'03.报价检查结束'}, {label:'04.报价跟进中', value:'04.报价跟进中'}, {label:'05.报价同意完备', value:'05.报价同意完备'}, {label:'06.零件齐备', value:'06.零件齐备'}, {label:'07.修理開始', value:'07.修理開始'}, {label:'08.修理预计完成', value:'08.修理预计完成'}, {label:'09.修理完成', value:'09.修理完成'}, {label:'10.最终检查完成', value:'10.最终检查完成'}, {label:'11.RC修理品已返送', value:'11.RC修理品已返送'}, {label:'12.发票已发送', value:'12.发票已发送'}, {label:'13.已返送到用户', value:'13.已返送到用户'}, {label:'14.收到验收单', value:'14.收到验收单'}, {label:'15.验收单签收复核通过', value:'15.验收单签收复核通过'}, {label:'16.部分付款', value:'16.部分付款'}, {label:'16.完毕', value:'16.完毕'}, {label:'17.付款完毕', value:'17.付款完毕'}, {label:'00.取消', value:'00.取消'}, {label:'00.删除', value:'00.删除'}, {label:'00.关闭', value:'00.关闭'}]; //服务方式 siteRepairItems = [{label:'--无--',value:''}, {label:'RC修理',value:'RC修理'}, {label:'直送SORC修理',value:'直送SORC修理'}, {label:'直送OGZ修理',value:'直送OGZ修理'}, {label:'办事处修理',value:'办事处修理'}, {label:'现场修理',value:'现场修理'}]; searchObj = {}; repair = {}; selectedRepairs; /* @wire(CurrentPageReference) getStateParameters(currentPageReference) { console.log(111); console.log(currentPageReference); if (currentPageReference) { const urlValue = currentPageReference.state.recordId; if (urlValue) { let str = `${urlValue}`; console.log("str"); console.log(str); this.recordId = str; } } }*/ connectedCallback(){ // console.log(this.recordId); } //状态1 handleStatus1Change(event){ /*console.log(event); console.log(event.detail);*/ this.searchObj.Status1 = event.detail.value; // console.log(JSON.stringify(this.searchObj)); } //状态2 handleStatus2Change(event){ this.searchObj.Status2 = event.detail.value; // console.log(this.searchObj); } //服务方式 handleSiteChange(event){ this.searchObj.onSiteRepair = event.detail.value; // console.log(this.searchObj); } //RS修理单号 RepairName handleRepairNameChange(event){ this.searchObj.RepairName = event.detail.value; // console.log(this.searchObj); } //SAP修理单号 SAPRepairNo handleSAPRepairNoChange(event){ this.searchObj.SAPRepairNo = event.detail.value; // console.log(this.searchObj); } //维修中心 workLocationSelect handleWorkLocationChange(event){ this.searchObj.workLocationSelect = event.detail.value; } //机身编码 SerialNumber handleSerialNumberChange(event){ this.searchObj.SerialNumber = event.detail.value; } // 省份 State_Hospital handleStateHospitalChange(event){ this.searchObj.State_Hospital = event.detail.value; } //医院名称 HospitalName handleHospitalChange(event){ this.searchObj.HospitalName = event.detail.value; } //FSE申请日 repair.Aware_date__c handleAwareDateDStart(event){ this.repair.Aware_date__c = event.detail.value; console.log(this.repair.Aware_date__c); } // repair.Aware_date2__c handleAwareDateDEnd(event){ this.repair.Aware_date2__c = event.detail.value; // console.log(this.repair.Aware_date2__c); } // 修理委托者 repair.Incharge_Staff__c handleInchargeStaffChange(event){ this.repair.Incharge_Staff__c = event.detail.value; // console.log(this.repair.Aware_date2__c); } //检索 searchRepair(event) { console.log(this.repair.Aware_date__c); if (JSON.stringify(this.repair) != "{}") { console.log('this.repair'); this.searchObj.repair = this.repair; // fse 时间条件 /*if (!(this.repair.Aware_date__c != null && this.repair.Aware_date2__c != null) || this.repair.Aware_date__c > this.repair.Aware_date2__c) { const event = new ShowToastEvent({ title: 'error', message: 'FSE申请日输入有误', variant:'error', }); this.dispatchEvent(event); return; }*/ } let jsonStr = JSON.stringify(this.searchObj); if (jsonStr === "{}") { const event = new ShowToastEvent({ title: 'error', message: '请至少添加一个检索条件!', variant:'error', }); this.dispatchEvent(event); }else{ console.log(jsonStr); search({ json: jsonStr }).then(result => { console.log(result.repairData); console.log('length:'+result.repairData.length); if (result.repairData.length == 0 || result.repairData.length == 200) { const event = new ShowToastEvent({ title: 'warning', message: result.status, variant:'warning', }); this.dispatchEvent(event); } let returnArr = []; result.repairData.forEach(function(v){ let objRepair = v.repair; //添加修理委托者和型号名称 objRepair.deliveredProductName = objRepair.Delivered_Product__r.Name; objRepair.deliveredProductUrl = "/"+objRepair.Delivered_Product__c; objRepair.inchargeStaffName = objRepair.Incharge_Staff__r.Name; objRepair.inchargeStaffUrl = "/"+objRepair.Incharge_Staff__c; // console.log(objRepair); returnArr.push(objRepair); }); /*console.log('arr'); console.log(arr); console.log(arr.length);*/ this.data = returnArr; // console.log(this.data); }).catch(error => { console.log("error"); console.log(error); }).finally(() => { }); } } //导出为Excel 画table exportContactData(){ // Prepare a html table let doc = '<table>'; // Add styles for the table doc += '<style>'; doc += 'table, th, td {'; doc += ' border: 1px solid black;'; doc += ' border-collapse: collapse;'; doc += '}'; doc += '</style>'; // Add all the Table Headers doc += '<tr>'; this.columns.forEach(element => { doc += '<th>'+ element.label +'</th>' }); doc += '</tr>'; // Add the data rows let fieldNameArr =[]; this.columns.forEach(function(v){ if (v['typeAttributes']) { fieldNameArr.push(v['typeAttributes'].label.fieldName); }else{ fieldNameArr.push(v.fieldName); } }); console.log(fieldNameArr); fieldNameArr.forEach(v=>{ console.log(v); // console.log(this.data[0].v); }) this.data.forEach(record => { doc += '<tr>'; if (record.Status1__c != null) { doc += '<th>'+record.Status1__c+'</th>'; }else{ doc += '<th></th>' } if (record.Status2__c != null) { doc += '<th>'+record.Status2__c+'</th>'; }else{ doc += '<th></th>' } if (record.Name != null) { doc += '<th>'+record.Name+'</th>'; }else{ doc += '<th></th>' } if (record.SAP_Service_Repair_No__c != null) { doc += '<th>'+record.SAP_Service_Repair_No__c+'</th>'; }else{ doc += '<th></th>' } if (record.deliveredProductName != null) { doc += '<th>'+record.deliveredProductName+'</th>'; }else{ doc += '<th></th>' } if (record.SerialNumber__c != null) { doc += '<th>'+record.SerialNumber__c+'</th>'; }else{ doc += '<th></th>' } if (record.HP_Name__c != null) { doc += '<th>'+record.HP_Name__c+'</th>'; }else{ doc += '<th></th>' } if (record.State_Hospital__c != null) { doc += '<th>'+record.State_Hospital__c+'</th>'; }else{ doc += '<th></th>' } if (record.inchargeStaffName != null) { doc += '<th>'+record.inchargeStaffName+'</th>'; }else{ doc += '<th></th>' } if (record.FSE_ApplyForRepair_Day__c != null) { doc += '<th>'+record.FSE_ApplyForRepair_Day__c+'</th>'; }else{ doc += '<th></th>' } if (record.work_location_select__c != null) { doc += '<th>'+record.work_location_select__c+'</th>'; }else{ doc += '<th></th>' } if (record.On_site_repair__c != null) { doc += '<th>'+record.On_site_repair__c+'</th>'; }else{ doc += '<th></th>' } if (record.Number_of_EffectiveContract__c != null) { doc += '<th>'+record.Number_of_EffectiveContract__c+'</th>'; }else{ doc += '<th></th>' } if (record.NewProductGuaranteeObject__c != null) { doc += '<th>'+record.NewProductGuaranteeObject__c+'</th>'; }else{ doc += '<th></th>' } // fieldNameArr.forEach(fieldName =>{ // doc += '<th>'+record.fieldName+'</th>'; // }); doc += '</tr>'; }); doc += '</table>'; var element = 'data:application/vnd.ms-excel,' + encodeURIComponent(doc); let downloadElement = document.createElement('a'); downloadElement.href = element; downloadElement.target = '_self'; // use .csv as extension on below line if you want to export data as csv downloadElement.download = '修理明细表.xls'; document.body.appendChild(downloadElement); downloadElement.click(); } // this method validates the data and creates the csv file to download this.data的所有字段 downloadCSVFile1() { console.log("downloadCSVFile1"); let rowEnd = '\n'; let csvString = ''; // this set elminates the duplicates if have any duplicate keys let rowData = new Set(); let columnsData = new Set(); let columnsLabelData = new Set(); // getting keys from data this.data.forEach(function (record) { Object.keys(record).forEach(function (key) { rowData.add(key); }); }); console.log(rowData); // Array.from() method returns an Array object from any object with a length property or an iterable object. rowData = Array.from(rowData); console.log(rowData); // splitting using ',' csvString += rowData.join(','); csvString += rowEnd; console.log(csvString); this.columns.forEach(function(v){ columnsLabelData.add(v.label); if (v['typeAttributes']) { columnsData.add(v['typeAttributes'].label.fieldName); }else{ columnsData.add(v.fieldName); } }); console.log("columnsData"); console.log(columnsLabelData); console.log(columnsData); console.log(rowData[1]); console.log(Array.from(columnsData)); console.log(Array.from(columnsData).hasOwnProperty(rowData[1])); console.log(this.data[0].Name); console.log(this.data[0][rowData[1]]); // main for loop to get the data based on key value for(let i=0; i < this.data.length; i++){ let colValue = 0; // validating keys in data for(let key in rowData) { if(rowData.hasOwnProperty(key)) { // Key value // Ex: Id, Name let rowKey = rowData[key]; // add , after every value except the first. if(colValue > 0){ csvString += ','; } // If the column is undefined, it as blank in the CSV file. let value = this.data[i][rowKey] === undefined ? '' : this.data[i][rowKey]; csvString += '"'+ value +'"'; colValue++; } } csvString += rowEnd; } // Creating anchor element to download let downloadElement = document.createElement('a'); // This encodeURI encodes special characters, except: , / ? : @ & = + $ # (Use encodeURIComponent() to encode these characters). downloadElement.href = 'data:text/csv;charset=utf-8,' + encodeURI(csvString); downloadElement.target = '_self'; // CSV File Name downloadElement.download = 'Account Data.csv'; // below statement is required if you are using firefox browser document.body.appendChild(downloadElement); // click() Javascript function to download CSV file downloadElement.click(); } //导出为Excel downloadCSVFile() { console.log("downloadCSVFile"); let rowEnd = '\n'; let csvString = ''; // this set elminates the duplicates if have any duplicate keys //表格标题 let columnsData = new Set(); //表格字段 let rowData = new Set(); // getting keys from data this.columns.forEach(function(v){ columnsData.add(v.label); if (v['typeAttributes']) { rowData.add(v['typeAttributes'].label.fieldName); }else{ rowData.add(v.fieldName); } }); console.log(columnsData); console.log(rowData); // Array.from() method returns an Array object from any object with a length property or an iterable object. rowData = Array.from(rowData); columnsData = Array.from(columnsData); // getting keys from data /* console.log("rowData"); rowData.forEach(function(v){ console.log(v); }); console.log("columnsData"); columnsData.forEach(function(v){ console.log(v); }); */ // splitting using ',' csvString += columnsData.join(','); csvString += rowEnd; // console.log(csvString); // main for loop to get the data based on key value for(let i=0; i < this.data.length; i++){ let colValue = 0; // validating keys in data for(let key in rowData) { if(rowData.hasOwnProperty(key)) {//del // Key value // Ex: Id, Name let rowKey = rowData[key]; // add , after every value except the first. if(colValue > 0){ csvString += ','; } // If the column is undefined, it as blank in the CSV file. let value = this.data[i][rowKey] === undefined ? '' : this.data[i][rowKey]; csvString += '"'+ value +'"'; colValue++; } } csvString += rowEnd; } // Creating anchor element to download let downloadElement = document.createElement('a'); // This encodeURI encodes special characters, except: , / ? : @ & = + $ # (Use encodeURIComponent() to encode these characters). downloadElement.href = 'data:text/csv;charset=utf-8,' + encodeURI(csvString); downloadElement.target = '_self'; // CSV File Name downloadElement.download = '修理明细表.csv'; // below statement is required if you are using firefox browser document.body.appendChild(downloadElement); // click() Javascript function to download CSV file downloadElement.click(); } //获取选中Repair getSelectedRows(event) { const selectedRows = event.detail.selectedRows; console.log(selectedRows); //Repair__c selectedRepairs // Display that fieldName of the selected rows let selectedRepairsArr = []; for (let i = 0; i < selectedRows.length; i++) { selectedRepairsArr.push(selectedRows[i]); } this.selectedRepairs = selectedRepairsArr; } //跳转到pdf页面 skipPage() { console.log("selectedRows"); // console.log(jsonStr); if (this.selectedRepairs.length <= 0 ) { const event = new ShowToastEvent({ title: 'error', message: '请至少选择一个修理', variant:'error', }); this.dispatchEvent(event); return; } let jsonStr = JSON.stringify(this.selectedRepairs); showPDF({ json: jsonStr }).then(result => { console.log(result); if (result.indexOf("https://ocsm") != -1) { window.open(result, "维修委托书PDF", ""); }else{ const event = new ShowToastEvent({ title: 'error', message: result, variant:'error', }); this.dispatchEvent(event); } }).catch(error => { console.log("error"); console.log(error); }).finally(() => { }); } } force-app/main/default/lwc/lexBatchSelectRepairLWC/lexBatchSelectRepairLWC.js-meta.xml
New file @@ -0,0 +1,11 @@ <?xml version="1.0"?> <LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata"> <apiVersion>54.0</apiVersion> <isExposed>true</isExposed> <targets> <target>lightning__RecordPage</target> <target>lightning__AppPage</target> <target>lightning__HomePage</target> <target>lightning__RecordAction</target> </targets> </LightningComponentBundle>