| force-app/main/default/classes/lexBatchSelectRepairLWCController.cls | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| force-app/main/default/classes/lexBatchSelectRepairLWCControllerTest.cls | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| force-app/main/default/classes/lexBatchSelectRepairLWCControllerTest.cls-meta.xml | ●●●●● 补丁 | 查看 | 原始文档 | 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
@@ -7,7 +7,6 @@ public static List<Repair__c> RepairList; public static List<RepairData> RAInfoList; public static List<String> repairIdList; // public static String pdfURL; //查询Repair数据 @AuraEnabled @@ -16,7 +15,6 @@ //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>(); @@ -25,7 +23,6 @@ && 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 型号,修理委托者 名称 @@ -43,7 +40,6 @@ 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 = ' '; @@ -61,10 +57,8 @@ }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 = ' '; @@ -83,14 +77,12 @@ }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 \'%'; @@ -126,7 +118,6 @@ 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; @@ -147,17 +138,14 @@ 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; @@ -166,17 +154,14 @@ 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()){ @@ -184,39 +169,18 @@ } 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; @@ -225,18 +189,15 @@ } 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); force-app/main/default/classes/lexBatchSelectRepairLWCControllerTest.cls
New file @@ -0,0 +1,89 @@ // 2023/08/06 批量选择修理LWC处理 测试类 @isTest private class lexBatchSelectRepairLWCControllerTest { @TestSetup public static void init(){ Profile p = [SELECT Id FROM Profile WHERE id =:System.Label.ProfileId_SystemAdmin]; User hpOwner = new User(Test_staff__c = true, LastName = 'hp', FirstName = 'owner', Alias = 'hp', CommunityNickname = 'hpOwner', Email = 'olympus_hpowner@sunbridge.com', Username = 'olympus_hpowner@sunbridge.com', IsActive = true, EmailEncodingKey = 'ISO-2022-JP', TimeZoneSidKey = 'Asia/Tokyo', LocaleSidKey = 'ja_JP', LanguageLocaleKey = 'ja', ProfileId = p.id); insert hpOwner; List<RecordType> rectHp = [SELECT Id FROM RecordType WHERE IsActive = true and SobjectType = 'Account' and DeveloperName = 'HP']; List<RecordType> rectDpt = [SELECT Id FROM RecordType WHERE IsActive = true and SobjectType = 'Account' and DeveloperName = 'Department_GI']; if (rectDpt.size() == 0) { return; } Account hp = new Account(RecordTypeId = rectHp[0].Id, Name = 'SoakupTestHp', OwnerId = hpOwner.Id); insert hp; Account dc = [SELECT Id, Name, RecordType_DeveloperName__c, Account2__c FROM Account WHERE ParentId = :hp.Id and RecordType_DeveloperName__c = 'Department_Class_GI']; Account dpt = new Account(RecordTypeId = rectDpt[0].Id); dpt.Name = '*'; dpt.Department_Name__c = 'TestDepart'; dpt.ParentId = dc.Id; dpt.Department_Class__c = dc.Id; dpt.Hospital__c = hp.Id; insert dpt; Asset asset = new Asset(); asset.Name = 'テスト機器'; asset.AccountId = dpt.Id; asset.Department_Class__c = dc.Id; asset.Hospital__c = hp.Id; asset.SerialNumber = 'testserial'; insert asset; Repair__c repair01 = new Repair__c(); repair01.Account__c = dpt.Id; repair01.Department_Class__c = dc.Id; repair01.Hospital__c = hp.Id; repair01.Delivered_Product__c = asset.Id; repair01.SERVICE_CONTRACT_JUDEGE_DAY__C = Date.today().addDays(0); repair01.FSE_Work_Location__c = '上海'; repair01.Service_Repair_No__c = 'SAP0001'; repair01.Incharge_Staff__c = hpOwner.Id; repair01.On_site_repair__c = 'RC修理'; repair01.work_location_select__c = '北京办事处'; insert repair01; System.assertEquals(true,repair01.Id != null, '插入失败'); } static testMethod void testSearch() { System.Test.StartTest(); List<Repair__c> objRepair = [SELECT Status1__c,Status2__c,HP_Name__c,Name,SAP_Service_Repair_No__c,SerialNumber__c,work_location_select__c,On_site_repair__c,Incharge_Staff__c FROM Repair__c LIMIT 5]; lexBatchSelectRepairLWCController.RetrievalData returnData = new lexBatchSelectRepairLWCController.RetrievalData(); returnData.Status1 = objRepair[0].Status1__c; returnData.Status2 = objRepair[0].Status2__c; returnData.HospitalName = objRepair[0].HP_Name__c; returnData.RepairName = objRepair[0].Name; returnData.SAPRepairNo =objRepair[0].SAP_Service_Repair_No__c+','+objRepair[0].SAP_Service_Repair_No__c+' '+objRepair[0].SAP_Service_Repair_No__c; returnData.SerialNumber =objRepair[0].SerialNumber__c+','+objRepair[0].SerialNumber__c; returnData.workLocationSelect =objRepair[0].work_location_select__c+','+objRepair[0].work_location_select__c+' '+objRepair[0].work_location_select__c; returnData.repair.Aware_date__c = Date.today(); returnData.repair.Incharge_Staff__c = objRepair[0].Incharge_Staff__c; returnData.onSiteRepair = objRepair[0].On_site_repair__c; lexBatchSelectRepairLWCController.ReturnData serachRes = lexBatchSelectRepairLWCController.search(JSON.serialize(returnData)); returnData = new lexBatchSelectRepairLWCController.RetrievalData(); serachRes = lexBatchSelectRepairLWCController.search(JSON.serialize(returnData)); serachRes = lexBatchSelectRepairLWCController.search('{"Status1":"0.删除"}'); System.Test.StopTest(); } static testMethod void testShowPDF() { System.Test.StartTest(); List<Repair__c> objRepair = [SELECT Status1__c,Status2__c,HP_Name__c,Name,SAP_Service_Repair_No__c,SerialNumber__c FROM Repair__c LIMIT 10]; String showPDFRes = lexBatchSelectRepairLWCController.showPDF(JSON.serialize(objRepair)); System.assertEquals(true, showPDFRes != null); objRepair = [SELECT Id,Status1__c,Status2__c,HP_Name__c,Name,SAP_Service_Repair_No__c,SerialNumber__c FROM Repair__c WHERE FSE_Work_Location__c = '上海']; showPDFRes = lexBatchSelectRepairLWCController.showPDF(JSON.serialize(objRepair)); System.assertEquals(true, showPDFRes != null); objRepair = [SELECT Status1__c,Status2__c,HP_Name__c,Name,SAP_Service_Repair_No__c,SerialNumber__c FROM Repair__c LIMIT 60]; showPDFRes = lexBatchSelectRepairLWCController.showPDF(JSON.serialize(objRepair)); System.assertEquals(true, showPDFRes != null); objRepair.clear(); showPDFRes = lexBatchSelectRepairLWCController.showPDF(JSON.serialize(objRepair)); System.assertEquals(true, showPDFRes != null); System.Test.StopTest(); } } force-app/main/default/classes/lexBatchSelectRepairLWCControllerTest.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.html
@@ -1,11 +1,4 @@ <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> @@ -13,67 +6,60 @@ <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-item size="4" 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 size="4" 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 size="4" 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-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-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-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"> <lightning-record-edit-form object-api-name='Repair__c' record-id='' > <lightning-input-field field-name='Incharge_Staff__c' onchange={handleInchargeStaffChange}> </lightning-input-field> </lightning-record-edit-form> </lightning-layout-item> </lightning-layout> <lightning-layout> <lightning-layout-item flexibility="auto" padding="around-small"> @@ -88,7 +74,6 @@ <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 force-app/main/default/lwc/lexBatchSelectRepairLWC/lexBatchSelectRepairLWC.js
@@ -4,24 +4,14 @@ 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:{ @@ -33,7 +23,6 @@ { 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:{ @@ -47,19 +36,9 @@ { label: '服务方式', fieldName: 'On_site_repair__c' }, { label: '有无维修合同对象', fieldName: 'Number_of_EffectiveContract__c' }, { label: '无偿区别标志', fieldName: 'NewProductGuaranteeObject__c' } /* { type: 'action', typeAttributes: { rowActions: actions }, },*/ ]; // 批量选择修理LWC 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; @@ -106,53 +85,29 @@ 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; } } }*/ selectedRepairs = []; 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){ @@ -173,35 +128,20 @@ //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); this.repair.Incharge_Staff__c = event.detail.value[0]; } //检索 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 === "{}") { @@ -212,36 +152,31 @@ }); 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) { if (!result.repairData || result.repairData && (result.repairData.length == 0 || result.repairData.length == 200)) { const event = new ShowToastEvent({ title: 'warning', message: result.status, variant:'warning', }); this.dispatchEvent(event); if (!result.repairData || result.repairData && result.repairData.length == 0) { result.repairData = []; } } let returnArr = []; result.repairData.forEach(function(v){ let objRepair = v.repair; //添加修理委托者和型号名称 objRepair.deliveredProductName = objRepair.Delivered_Product__r.Name; objRepair.deliveredProductName = objRepair.Delivered_Product__r ? objRepair.Delivered_Product__r.Name : ''; objRepair.deliveredProductUrl = "/"+objRepair.Delivered_Product__c; objRepair.inchargeStaffName = objRepair.Incharge_Staff__r.Name; objRepair.inchargeStaffName = objRepair.Incharge_Staff__r ? 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); @@ -278,7 +213,6 @@ fieldNameArr.push(v.fieldName); } }); console.log(fieldNameArr); fieldNameArr.forEach(v=>{ console.log(v); // console.log(this.data[0].v); @@ -355,10 +289,7 @@ }else{ doc += '<th></th>' } // fieldNameArr.forEach(fieldName =>{ // doc += '<th>'+record.fieldName+'</th>'; // }); doc += '</tr>'; doc += '</tr>'; }); doc += '</table>'; var element = 'data:application/vnd.ms-excel,' + encodeURIComponent(doc); @@ -371,163 +302,9 @@ 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 = []; @@ -539,8 +316,6 @@ //跳转到pdf页面 skipPage() { console.log("selectedRows"); // console.log(jsonStr); if (this.selectedRepairs.length <= 0 ) { const event = new ShowToastEvent({ title: 'error', @@ -553,24 +328,23 @@ 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(() => { }); } }).then(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
@@ -3,6 +3,7 @@ <apiVersion>54.0</apiVersion> <isExposed>true</isExposed> <targets> <target>lightning__Tab</target> <target>lightning__RecordPage</target> <target>lightning__AppPage</target> <target>lightning__HomePage</target>