From 6896a6021f9fa609c6a284aafc3d7229d62c400e Mon Sep 17 00:00:00 2001
From: denny chen <chenbangcai@prec-tech.com>
Date: 星期一, 24 四月 2023 14:06:50 +0800
Subject: [PATCH] 页面描述(批量选择修理)-对象(修理)
---
force-app/main/default/classes/lexBatchSelectRepairLWCController.cls | 295 +++++++++++++++++
force-app/main/default/lwc/lexBatchSelectRepairLWC/lexBatchSelectRepairLWC.html | 107 ++++++
force-app/main/default/classes/lexBatchSelectRepairLWCController.cls-meta.xml | 5
force-app/main/default/lwc/lexBatchSelectRepairLWC/lexBatchSelectRepairLWC.css | 9
force-app/main/default/lwc/lexBatchSelectRepairLWC/lexBatchSelectRepairLWC.js-meta.xml | 11
force-app/main/default/lwc/lexBatchSelectRepairLWC/lexBatchSelectRepairLWC.js | 576 +++++++++++++++++++++++++++++++++
6 files changed, 1,003 insertions(+), 0 deletions(-)
diff --git a/force-app/main/default/classes/lexBatchSelectRepairLWCController.cls b/force-app/main/default/classes/lexBatchSelectRepairLWCController.cls
new file mode 100644
index 0000000..26d7565
--- /dev/null
+++ b/force-app/main/default/classes/lexBatchSelectRepairLWCController.cls
@@ -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);
+ //閫変腑鐨剅epair
+ 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;
+ }
+}
\ No newline at end of file
diff --git a/force-app/main/default/classes/lexBatchSelectRepairLWCController.cls-meta.xml b/force-app/main/default/classes/lexBatchSelectRepairLWCController.cls-meta.xml
new file mode 100644
index 0000000..dd61d1f
--- /dev/null
+++ b/force-app/main/default/classes/lexBatchSelectRepairLWCController.cls-meta.xml
@@ -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>
diff --git a/force-app/main/default/lwc/lexBatchSelectRepairLWC/lexBatchSelectRepairLWC.css b/force-app/main/default/lwc/lexBatchSelectRepairLWC/lexBatchSelectRepairLWC.css
new file mode 100644
index 0000000..fa4ac70
--- /dev/null
+++ b/force-app/main/default/lwc/lexBatchSelectRepairLWC/lexBatchSelectRepairLWC.css
@@ -0,0 +1,9 @@
+.Narrow{
+ padding: 20px;
+}
+.searchField,.searchField .input-text{
+ /*display: flex;*/
+}
+.searchField .slds-combobox_container{
+ width: 160px !important;
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexBatchSelectRepairLWC/lexBatchSelectRepairLWC.html b/force-app/main/default/lwc/lexBatchSelectRepairLWC/lexBatchSelectRepairLWC.html
new file mode 100644
index 0000000..07ec8af
--- /dev/null
+++ b/force-app/main/default/lwc/lexBatchSelectRepairLWC/lexBatchSelectRepairLWC.html
@@ -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>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexBatchSelectRepairLWC/lexBatchSelectRepairLWC.js b/force-app/main/default/lwc/lexBatchSelectRepairLWC/lexBatchSelectRepairLWC.js
new file mode 100644
index 0000000..d1a1131
--- /dev/null
+++ b/force-app/main/default/lwc/lexBatchSelectRepairLWC/lexBatchSelectRepairLWC.js
@@ -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:'鐩撮�丼ORC淇悊',value:'鐩撮�丼ORC淇悊'},
+ {label:'鐩撮�丱GZ淇悊',value:'鐩撮�丱GZ淇悊'},
+ {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(() => {
+
+ });
+ }
+
+
+ }
+ //瀵煎嚭涓篍xcel 鐢籺able
+ 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();
+ }
+ //瀵煎嚭涓篍xcel
+ 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;
+ }
+
+ //璺宠浆鍒皃df椤甸潰
+ 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, "缁翠慨濮旀墭涔DF", "");
+ }else{
+ const event = new ShowToastEvent({
+ title: 'error',
+ message: result,
+ variant:'error',
+ });
+ this.dispatchEvent(event);
+ }
+ }).catch(error => {
+ console.log("error");
+ console.log(error);
+ }).finally(() => {
+
+ });
+ }
+
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexBatchSelectRepairLWC/lexBatchSelectRepairLWC.js-meta.xml b/force-app/main/default/lwc/lexBatchSelectRepairLWC/lexBatchSelectRepairLWC.js-meta.xml
new file mode 100644
index 0000000..2b7649d
--- /dev/null
+++ b/force-app/main/default/lwc/lexBatchSelectRepairLWC/lexBatchSelectRepairLWC.js-meta.xml
@@ -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>
\ No newline at end of file
--
Gitblit v1.9.1