From fd1234ddc5be42b9ec2fad9d9286cd2aa58eb0ef Mon Sep 17 00:00:00 2001
From: unknown <sunxia@prec-tech.com>
Date: 星期二, 11 四月 2023 14:29:54 +0800
Subject: [PATCH] Merge branch 'LEX_dev' of http://47.92.229.245:8089/r/lightningupdate into LEX_dev

---
 force-app/main/default/lwc/lexOSHSubmit/lexOSHSubmit.js                                                            |    6 
 force-app/main/default/classes/TenderingButtonController.cls-meta.xml                                              |    5 
 force-app/main/default/lwc/lexCreateNotesEmail/lexCreateNotesEmail.js                                              |   25 
 force-app/main/default/lwc/lexOCSMToReportRepair/lexOCSMToReportRepair.js-meta.xml                                 |   11 
 force-app/main/default/lwc/lexVOCAnswer/lexVOCAnswer.js                                                            |   26 
 force-app/main/default/lwc/lexYanshoudanRequest/lexYanshoudanRequest.js                                            |   79 +
 force-app/main/default/lwc/lexVOCSubmit/lexVOCSubmit.js                                                            |   26 
 force-app/main/default/lwc/lexVOCFinish/lexVOCFinish.js                                                            |   26 
 force-app/main/default/classes/otherButtonSpotInspectionReportCtl.cls-meta.xml                                     |    5 
 force-app/main/default/lwc/lexOCSMNoToReportForReport/lexOCSMNoToReportForReport.js                                |   29 
 force-app/main/default/lwc/lexPreContractSubmit/lexPreContractSubmit.html                                          |    1 
 force-app/main/default/lwc/lexOCSMToReportRepair/lexOCSMToReportRepair.js                                          |   92 +
 force-app/main/default/lwc/lexPDFMaintenanceCommission/lexPDFMaintenanceCommission.js                              |   54 
 force-app/main/default/lwc/lexVOCConfirm/lexVOCConfirm.js                                                          |  104 +
 force-app/main/default/lwc/lexTenderingLogicButton/lexTenderingLogicButton.html                                    |    5 
 force-app/main/default/lwc/lexTenderingLogicButton/lexTenderingLogicButton.js-meta.xml                             |   11 
 force-app/main/default/classes/TenderingButtonController.cls                                                       |   54 
 force-app/main/default/lwc/lexCancelSubmitReport/lexCancelSubmitReport.html                                        |    6 
 force-app/main/default/lwc/lexComplete/lexComplete.js                                                              |   26 
 force-app/main/default/lwc/lexQuarterlyReport/lexQuarterlyReport.html                                              |    5 
 force-app/main/default/lwc/lexInsPageBtn/__tests__/lexInsPageBtn.test.js                                           |   25 
 force-app/main/default/lwc/lexTenderingLostButton/lexTenderingLostButton.html                                      |    5 
 force-app/main/default/lwc/lexOCSMNoToReportRepair/lexOCSMNoToReportRepair.js                                      |  102 +
 force-app/main/default/lwc/lexQuarterlyReport/lexQuarterlyReport.js                                                |   69 +
 force-app/main/default/lwc/lexCancelSubmitReport/lexCancelSubmitReport.js                                          |   66 
 force-app/main/default/lwc/lexCreateReportMaintenanceContract/__tests__/lexCreateReportMaintenanceContract.test.js |   25 
 force-app/main/default/lwc/lexYanshoudanRequest/__tests__/lexYanshoudanRequest.test.js                             |   25 
 force-app/main/default/lwc/oshRecieved/oshRecieved.js                                                              |    2 
 force-app/main/default/lwc/lexApplicationSubmitButton/lexApplicationSubmitButton.js                                |   26 
 force-app/main/default/lwc/lexOCSMNoToReportRepair/__tests__/lexOCSMNoToReportRepair.test.js                       |   25 
 force-app/main/default/lwc/lexSendRepairsToEtQ/__tests__/lexSendRepairsToEtQ.test.js                               |   25 
 force-app/main/default/lwc/lexTenderingHospitalButton/lexTenderingHospitalButton.js                                |   48 
 force-app/main/default/classes/QISReportController.cls                                                             |  177 ++
 force-app/main/default/lwc/lexOCSMNoToReportRepair/lexOCSMNoToReportRepair.js-meta.xml                             |   11 
 force-app/main/default/lwc/lexSendRepairsToEtQ/lexSendRepairsToEtQ.js                                              |  192 ++
 force-app/main/default/lwc/lexMailMessege/lexMailMessege.js                                                        |   89 +
 force-app/main/default/lwc/lexQISAgree/lexQISAgree.js                                                              |   85 +
 force-app/main/default/lwc/lexCustomNewCopy2/__tests__/lexCustomNewCopy2.test.js                                   |   25 
 force-app/main/default/lwc/lexRCSubmit/lexRCSubmit.js                                                              |   16 
 force-app/main/default/lwc/lexASRCEditorRepair/lexASRCEditorRepair.js                                              |   75 +
 force-app/main/default/lwc/lexQISAgree/lexQISAgree.css                                                             |   22 
 force-app/main/default/lwc/lexSIStoOPD/lexSIStoOPD.js                                                              |   35 
 force-app/main/default/lwc/lexQuarterlyReport/__tests__/lexQuarterlyReport.test.js                                 |   25 
 force-app/main/default/lwc/lexCopyPIInspectionReport/__tests__/lexCopyPIInspectionReport.test.js                   |   25 
 force-app/main/default/lwc/lexQISIntakeuniversalcode/lexQISIntakeuniversalcode.html                                |    5 
 force-app/main/default/lwc/lexUploadToRecognitionModel/__tests__/lexUploadToRecognitionModel.test.js               |   25 
 force-app/main/default/lwc/lexASACEditor/lexASACEditor.js                                                          |   73 +
 force-app/main/default/lwc/lexQuarterlyReport/lexQuarterlyReport.js-meta.xml                                       |   11 
 force-app/main/default/lwc/lexSendRepairsToEtQ/lexSendRepairsToEtQ.js-meta.xml                                     |   11 
 force-app/main/default/lwc/lexTenderingLostButton/lexTenderingLostButton.js                                        |   71 +
 force-app/main/default/classes/otherButtonSpotInspectionReportCtl.cls                                              |   28 
 force-app/main/default/lwc/lexASRCEditor/lexASRCEditor.js-meta.xml                                                 |   11 
 force-app/main/default/lwc/lexMailMessege/lexMailMessege.html                                                      |    5 
 force-app/main/default/lwc/lexVOCCheck/lexVOCCheck.js                                                              |   19 
 force-app/main/default/lwc/lexTenderingHospitalButton/lexTenderingHospitalButton.js-meta.xml                       |   11 
 force-app/main/default/lwc/lexMailMessege/__tests__/lexMailMessege.test.js                                         |   25 
 force-app/main/default/lwc/lexASRCEditor/lexASRCEditor.css                                                         |   10 
 force-app/main/default/lwc/lexMailMessege/lexMailMessege.js-meta.xml                                               |   11 
 force-app/main/default/lwc/lexCancelSubmitReport/lexCancelSubmitReport.css                                         |   10 
 force-app/main/default/lwc/lexVOCConfirm/lexVOCConfirm.css                                                         |   10 
 force-app/main/default/lwc/lexASRCEditorRepair/lexASRCEditorRepair.js-meta.xml                                     |   11 
 force-app/main/default/lwc/lexVOCConfirm/lexVOCConfirm.js-meta.xml                                                 |   11 
 force-app/main/default/lwc/lexQISIntakeuniversalcode/lexQISIntakeuniversalcode.js                                  |   64 
 force-app/main/default/lwc/lexUploadToRecognitionModel/lexUploadToRecognitionModel.js-meta.xml                     |   11 
 force-app/main/default/lwc/lexUploadToRecognitionModel/lexUploadToRecognitionModel.js                              |  133 +
 force-app/main/default/lwc/lexCustomNewCopy2/lexCustomNewCopy2.js                                                  |   77 +
 force-app/main/default/classes/LightingButtonConstant.cls                                                          |    7 
 force-app/main/default/lwc/lexUploadToRecognitionModel/lexUploadToRecognitionModel.html                            |    6 
 force-app/main/default/lwc/lexApplicationCancelSubmit/lexApplicationCancelSubmit.js                                |   22 
 force-app/main/default/lwc/lexOCSMToReport/lexOCSMToReport.js                                                      |   25 
 force-app/main/default/lwc/lexOCSMToReportRepair/__tests__/lexOCSMToReportRepair.test.js                           |   25 
 force-app/main/default/lwc/lexSubmitForApproval/__tests__/lexSubmitForApproval.test.js                             |   25 
 force-app/main/default/lwc/lexASRCEditorRepair/lexASRCEditorRepair.html                                            |    5 
 force-app/main/default/lwc/lexCustomNewCopy2/lexCustomNewCopy2.html                                                |    6 
 force-app/main/default/lwc/lexRCCDScomplete/lexRCCDScomplete.html                                                  |    5 
 force-app/main/default/lwc/lexTenderingAntiLogicButton/lexTenderingAntiLogicButton.html                            |    5 
 force-app/main/default/lwc/lexASACEditor/lexASACEditor.js-meta.xml                                                 |   11 
 force-app/main/default/lwc/lexCancelSubmitReport/lexCancelSubmitReport.js-meta.xml                                 |   11 
 force-app/main/default/lwc/lexASACEditor/lexASACEditor.html                                                        |    5 
 force-app/main/default/lwc/lexASACEditor/lexASACEditor.css                                                         |   10 
 force-app/main/default/lwc/lexASRCEditor/lexASRCEditor.js                                                          |   74 +
 force-app/main/default/lwc/lexCreateReportMaintenanceContract/lexCreateReportMaintenanceContract.js                |    1 
 force-app/main/default/lwc/lexTenderingAntiLogicButton/lexTenderingAntiLogicButton.js                              |   52 
 force-app/main/default/classes/QISReportController.cls-meta.xml                                                    |    2 
 force-app/main/default/classes/otherButtonRepairController.cls                                                     |  281 ++++
 force-app/main/default/lwc/lexTenderingAttachmentButton/lexTenderingAttachmentButton.js                            |   45 
 force-app/main/default/lwc/lexUploadToSap/lexUploadToSap.js                                                        |   88 
 force-app/main/default/lwc/lexASRCEditorRepair/__tests__/lexASRCEditorRepair.test.js                               |   25 
 force-app/main/default/classes/TenderWebService.cls                                                                |   83 +
 force-app/main/default/lwc/lexTenderingAttachmentButton/lexTenderingAttachmentButton.js-meta.xml                   |   11 
 force-app/main/default/lwc/lexASRCEditor/lexASRCEditor.html                                                        |    5 
 force-app/main/default/lwc/lexProductRepairQuoteRepair/__tests__/lexProductRepairQuoteRepair.test.js               |   25 
 force-app/main/default/lwc/lexOCSMNoToReportRepair/lexOCSMNoToReportRepair.html                                    |    6 
 force-app/main/default/lwc/lexQISIntakeuniversalcode/lexQISIntakeuniversalcode.css                                 |   22 
 force-app/main/default/lwc/lexInsPageBtn/lexInsPageBtn.js                                                          |    1 
 force-app/main/default/lwc/lexRCCDScomplete/lexRCCDScomplete.js                                                    |   98 +
 force-app/main/default/lwc/lexPreContractSubmit/__tests__/lexPreContractSubmit.test.js                             |   25 
 force-app/main/default/lwc/lexRCCDScomplete/lexRCCDScomplete.js-meta.xml                                           |   11 
 force-app/main/default/lwc/lexSubmitCompetitorReport/lexSubmitCompetitorReport.js                                  |   26 
 force-app/main/default/lwc/lexQISIntakeuniversalcode/lexQISIntakeuniversalcode.js-meta.xml                         |   11 
 force-app/main/default/classes/ApplicationButtonController.cls                                                     |   48 
 force-app/main/default/lwc/lexQISAgree/lexQISAgree.html                                                            |    5 
 force-app/main/default/lwc/lexUploadToSap/lexUploadToSap.html                                                      |    1 
 force-app/main/default/lwc/lexCancel/lexCancel.js                                                                  |   28 
 force-app/main/default/lwc/lexSendRepairsToEtQ/lexSendRepairsToEtQ.html                                            |    6 
 force-app/main/default/classes/TenderWebService.cls-meta.xml                                                       |    5 
 force-app/main/default/lwc/lexCopyPIInspectionReport/lexCopyPIInspectionReport.js                                  |    1 
 force-app/main/default/lwc/lexRCCDScomplete/lexRCCDScomplete.css                                                   |   22 
 force-app/main/default/lwc/lexPDFMaintenanceCommission/lexPDFMaintenanceCommission.html                            |    5 
 force-app/main/default/lwc/lexOCSMToReportRepair/lexOCSMToReportRepair.html                                        |    6 
 force-app/main/default/lwc/lexProductRepairQuoteRepair/lexProductRepairQuoteRepair.js                              |   67 
 force-app/main/default/lwc/lexTenderingLogicButton/lexTenderingLogicButton.js                                      |   39 
 force-app/main/default/lwc/lexTenderingLostButton/lexTenderingLostButton.js-meta.xml                               |   11 
 force-app/main/default/lwc/lexDispatchOCSMQARA/lexDispatchOCSMQARA.js                                              |   26 
 force-app/main/default/classes/otherButtonRepairController.cls-meta.xml                                            |    2 
 force-app/main/default/lwc/lexCancelSubmit/lexCancelSubmit.js                                                      |   42 
 force-app/main/default/lwc/lexProductRepairQuoteRepair/lexProductRepairQuoteRepair.js-meta.xml                     |   11 
 force-app/main/default/lwc/lexTenderingAttachmentButton/lexTenderingAttachmentButton.html                          |    5 
 force-app/main/default/lwc/lexPDFMaintenanceCommission/__tests__/lexPDFMaintenanceCommission.test.js               |   25 
 force-app/main/default/lwc/lexYanshoudanRequest/lexYanshoudanRequest.js-meta.xml                                   |   11 
 force-app/main/default/lwc/lexVOCConfirm/lexVOCConfirm.html                                                        |    6 
 force-app/main/default/lwc/lexQISAgree/lexQISAgree.js-meta.xml                                                     |   11 
 force-app/main/default/lwc/lexTenderingHospitalButton/lexTenderingHospitalButton.html                              |    5 
 force-app/main/default/lwc/lexOCMSubmit/lexOCMSubmit.js                                                            |   10 
 force-app/main/default/lwc/lexSubmitForApproval/lexSubmitForApproval.js                                            |    1 
 force-app/main/default/lwc/lexTenderingAntiLogicButton/lexTenderingAntiLogicButton.js-meta.xml                     |   11 
 force-app/main/default/lwc/lexUploadToSap/__tests__/lexUploadToSap.test.js                                         |   25 
 force-app/main/default/lwc/lexPDFMaintenanceCommission/lexPDFMaintenanceCommission.js-meta.xml                     |   11 
 force-app/main/default/lwc/lexYanshoudanRequest/lexYanshoudanRequest.html                                          |    6 
 force-app/main/default/lwc/lexCustomNewCopy2/lexCustomNewCopy2.js-meta.xml                                         |   11 
 force-app/main/default/lwc/lexProductRepairQuoteRepair/lexProductRepairQuoteRepair.html                            |    5 
 force-app/main/default/lwc/lexPreContractSubmit/lexPreContractSubmit.js                                            |   36 
 force-app/main/default/classes/otherButtonMaintenanceContractCtl.cls                                               |    2 
 force-app/main/default/lwc/lexOPDtoSIS/lexOPDtoSIS.js                                                              |   31 
 134 files changed, 3,852 insertions(+), 204 deletions(-)

diff --git a/force-app/main/default/classes/ApplicationButtonController.cls b/force-app/main/default/classes/ApplicationButtonController.cls
index 4dadb0d..9910696 100644
--- a/force-app/main/default/classes/ApplicationButtonController.cls
+++ b/force-app/main/default/classes/ApplicationButtonController.cls
@@ -3,7 +3,6 @@
     public static InitData initSubmitButton (String recordId){
         InitData res = new initData();
         try{
-            // Request_tedner_doc__c report = [SELECT 	OwnerId,Id,Product_discription__c,Status__c FROM Request_tedner_doc__c WHERE Id = :recordId LIMIT 1];
             Request_tedner_doc__c report = [SELECT 	OwnerId,Id FROM Request_tedner_doc__c WHERE Id = :recordId LIMIT 1];
             res.OwnerId = report.OwnerId;
             res.Id = report.Id;
@@ -17,55 +16,52 @@
     //鎺堟潈鐢宠鐨勬彁浜ゆ寜閽�
     @AuraEnabled
     public static String submit(String recordId) {
+       String messageText = '';
        try {
-        // Request_tedner_doc__c rac = [SELECT 	Id,Status__c,Submit_check_flag__c,RecordTypeId,Submit_time__c,Request_target__c,Document_format__c,Bid_distributor__c,Product_discription__c,Tedner_date__c,Tender_active_day__c,tender_inactive_date__c,Tender_request_reason__c FROM Request_tedner_doc__c WHERE Id = :recordId LIMIT 1];
         Request_tedner_doc__c rac = [SELECT 	Id,Status__c,Submit_check_flag__c,RecordTypeId,Submit_time__c FROM Request_tedner_doc__c WHERE Id = :recordId LIMIT 1];
-        rac.Status__c = '宸叉彁浜�';
-        rac.RecordTypeId = '01210000000RNXn';
+        rac.Status__c = LightingButtonConstant.STATUS_Application_Submitted;
+        rac.RecordTypeId = rac.RecordTypeId = Schema.SObjectType.Request_tedner_doc__c.getRecordTypeInfosByName().get(LightingButtonConstant.RECORD_TYPE_NAME_Application + LightingButtonConstant.STATUS_Application_Submitted).getRecordTypeId();
         rac.Submit_check_flag__c = true;
         rac.Submit_time__c = Datetime.now();
         update rac;
-        return '1';
+        messageText = '1';
+        return messageText;
        } catch (Exception ex) {
         System.debug(LoggingLevel.INFO, '*** xu: ' + ex);
-        return ex.getMessage();
-        // return ex.getMessage().split(',')[1];
-       } finally {
-
+        messageText = ex.getMessage();
+        return messageText;
        }
     }
 
     //鎺堟潈鐢宠鐨勫彇娑堟彁浜ゆ寜閽�
     @AuraEnabled
     public static String submitCancel(String recordId) {
+       String messageText = '';
        try {
         Request_tedner_doc__c report = [SELECT 	Id,Status__c,Submit_check_flag__c,RecordTypeId,Submit_time__c FROM Request_tedner_doc__c WHERE Id = :recordId LIMIT 1];
-        report.Status__c = '鑽夋涓�';
-        report.RecordTypeId = '01210000000RNXi';
+        report.Status__c = LightingButtonConstant.STATUS_Application_CancelSubmit;
+        report.RecordTypeId = Schema.SObjectType.Request_tedner_doc__c.getRecordTypeInfosByName().get(LightingButtonConstant.RECORD_TYPE_NAME_Application).getRecordTypeId();
         report.Submit_check_flag__c = false;
         report.Submit_time__c = null;
         update report;
-        return '1';
+        messageText = '1';
+        return messageText;
        } catch (Exception ex) {
         System.debug(LoggingLevel.INFO, '*** cancelXu: ' + ex);
-        return ex.getMessage();
-       } finally {
-
+        messageText = ex.getMessage();
+        return messageText;
        }
     }
 
     //鑾峰彇褰撳墠鐧诲綍浜虹殑 id
     @AuraEnabled
-    public static UserResult UserInfo_Owner() {
+    public static UserResult userInfo_Owner() {
         UserResult result = new UserResult();
         ID myUserID = UserInfo.getUserId();
-        
         try { 
-            User tempUser =
-                [select id from user where id = : myUserID ];
+            User tempUser = [select id from user where id = : myUserID ];
             result.id = tempUser.id;
         } catch (exception e) {
-            
             result.result = e.getMessage();
         }
         return result;
@@ -85,15 +81,5 @@
         }
         @AuraEnabled
         public string id;
-        //20210105 CHAN-BWX3YU you end
     }
-}
-
-    // if("{!Request_tedner_doc__c.OwnerId}" == "{!$User.Id}") {
-    //     var rac = new sforce.SObject("Request_tedner_doc__c");
-    //     rac.Id = "{!Request_tedner_doc__c.Id}";
-    //     rac.Status__c = "宸叉彁浜�";
-    //     rac.Submit_check_flag__c = "true";
-    //     rac.RecordTypeId = "01210000000RNXn";
-    //     var serverTimestamp = sforce.connection.getServerTimestamp();
-    //     rac.Submit_time__c = serverTimestamp.timestamp;
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/force-app/main/default/classes/LightingButtonConstant.cls b/force-app/main/default/classes/LightingButtonConstant.cls
index aa8046b..c68ab80 100644
--- a/force-app/main/default/classes/LightingButtonConstant.cls
+++ b/force-app/main/default/classes/LightingButtonConstant.cls
@@ -1,4 +1,10 @@
 global without sharing class LightingButtonConstant {
+    //鎺堟潈鐢宠鐨勭姸鎬佲�樺凡鎻愪氦鈥�
+    public static final String STATUS_Application_Submitted = '宸叉彁浜�';
+    //鎺堟潈鐢宠鐨勭姸鎬佲�樿崏妗堜腑鈥�
+    public static final String  STATUS_Application_CancelSubmit= '鑽夋涓�';
+    //鎺堟潈鐢宠鐨勮褰曠被鍨嬪悕鈥樻巿鏉冪敵璇封��
+    public static final String RECORD_TYPE_NAME_Application = '鎺堟潈鐢宠';
     //鍛ㄦ姤鏈堟姤鐨勭姸鎬佲�樿崏妗堜腑鈥�
     public static final String STATUS_DRAFT = '鑽夋涓�';
     //鎶ュ憡涔︾殑鐘舵�佲�樺畬姣曗��
@@ -69,5 +75,6 @@
     public static final String OK = 'OK';
     public static final String SOBJECT_NAME_OF_REPORT_SHARE ='Report__Share';
     public static final String  SOBJECT_NAME_OF_VOC_SHARE = 'VOCShare__c';
+
    
 }
\ No newline at end of file
diff --git a/force-app/main/default/classes/QISReportController.cls b/force-app/main/default/classes/QISReportController.cls
index 1239bb9..c778eac 100644
--- a/force-app/main/default/classes/QISReportController.cls
+++ b/force-app/main/default/classes/QISReportController.cls
@@ -20,7 +20,7 @@
         String recordTypeId = LightingButtonConstant.DEVELOPER_NAME_ASAC_DECISION;
         try{
             PAE_DecisionRecord__c RCPAEDIdList = [SELECT LastModifiedDate, Id, Name, LastModifiedById,RecordType.DeveloperName FROM PAE_DecisionRecord__c where PAE_QIS__c = :qisReportId  And RecordType.DeveloperName =  :recordTypeId limit 1]; 
-            res.PAEid = RCPAEDIdList.id;
+            res.pAEid = RCPAEDIdList.id;
             System.debug(LoggingLevel.INFO, '*** res: ' + res);
         }catch(Exception e){
             System.debug(LoggingLevel.INFO, '*** e: ' + e);
@@ -49,7 +49,7 @@
         String recordTypeId = LightingButtonConstant.DEVELOPER_NAME_ASRC_DECISION;
         try{
             PAE_DecisionRecord__c ASRCDIdList = [SELECT LastModifiedDate, Id, Name, LastModifiedById,RecordType.DeveloperName FROM PAE_DecisionRecord__c where PAE_QIS__c = :qisReportId  And RecordType.DeveloperName =  :recordTypeId Limit 1]; 
-            res.PAEid = ASRCDIdList.id;
+            res.pAEid = ASRCDIdList.id;
             System.debug(LoggingLevel.INFO, '*** res: ' + res);
         }catch(Exception e){
             System.debug(LoggingLevel.INFO, '*** e: ' + e);
@@ -217,54 +217,193 @@
         }
          return re;
     }
+    // 鎻愪氦
+     @AuraEnabled
+    public static InitData initForOCMSubmitButton (String recordId){
+        InitData res = new initData();
+        try{
+            QIS_Report__c report = [SELECT  id,is_aohui_product__c,QIS_Status__c,OCM_Manager_Mail_F__c,QISInstallDate__c,contract_number__c FROM QIS_Report__c WHERE Id = :recordId LIMIT 1];  
+            res.Id = report.Id;
+            res.QIStatus = report.QIS_Status__c;
+            res.QISInstallDate = report.QISInstallDate__c;
+            res.contractnumber = report.contract_number__c;
+            res.isaohuiproduct = report.is_aohui_product__c;
+            System.debug(LoggingLevel.INFO, '*** res: ' + res);
+        }catch(Exception e){
+            System.debug(LoggingLevel.INFO, '*** e: ' + e);
+        }
+        return res;
+    }
+
+    @AuraEnabled
+    public static String updateQisWithOCM (String recordId){
+        String re = '鎴愬姛';
+        QIS_Report__c report = [SELECT  id,QIS_Status__c,QISInstallDate__c,contract_number__c,OCM_Manager_Mail_F__c
+                                ,OCM_Member_Mail_F__c,OCM_Repair_Mail_F__c,OCM_Repair_Mail1_F__c,FSE_Special_Mail_F__c,FSE_Special_Manager_Mail_F__c
+                                    ,WorkLocation_CC_Mail_F__c,is_aohui_product__c,QuolityApproveResult__c
+                                FROM QIS_Report__c WHERE Id = :recordId LIMIT 1]; 
+        try{
+            QIS_Report__c rac  = new QIS_Report__c();   
+            rac.id = recordId;
+            rac.QIS_Status__c = LightingButtonConstant.STATUS_QIS_FSE_COMPLATED;
+            rac.OCM_Manager_Mail__c = report.OCM_Manager_Mail_F__c;
+            rac.OCM_Member_Mail__c = report.OCM_Member_Mail_F__c;
+            rac.OCM_Repair_Mail__c = report.OCM_Repair_Mail_F__c;
+            rac.OCM_Repair_Mail1__c = report.OCM_Repair_Mail1_F__c;
+            rac.FSE_Special_Mail__c = report.FSE_Special_Mail_F__c;
+            rac.FSE_Special_Manager_Mail__c = report.FSE_Special_Manager_Mail_F__c;
+            rac.WorkLocation_CC_Mail__c = report.WorkLocation_CC_Mail_F__c;
+            rac.Cancel_QIS_Reason__c = null;
+            if (report.is_aohui_product__c == true) {
+                    rac.OCM_judgement__c = '璐ㄩ噺闂';
+                    rac.next_action__c = '鏃犲伩缁翠慨';
+                    rac.RecordTypeId = Schema.SObjectType.QIS_Report__c.getRecordTypeInfosByName().get(LightingButtonConstant.RECORD_TYPE_NAME_BY_OSH).getRecordTypeId();
+                    rac.QIS_Status__c = LightingButtonConstant.STATUS_QIS_OSH_TESTING_APP;
+            }
+            if (report.QuolityApproveResult__c == null || report.QuolityApproveResult__c == '') {
+                rac.QuolityApproveResult__c = '3.宸插鏍革紝涓�鑸川閲忛棶棰�';
+            }
+            update rac;
+        }catch(Exception e){
+            System.debug(LoggingLevel.INFO, '*** e: ' + e);
+            re = e.getMessage();
+        }
+         return re;
+    }
+
+    // QIS缁撴灉璺熻繘瀹屾瘯
+     @AuraEnabled
+    public static InitData initForQisAgreeButton (String recordId){
+        InitData res = new initData();
+        try{
+            QIS_Report__c report = [SELECT  id ,OwnerId FROM QIS_Report__c WHERE Id = :recordId LIMIT 1];  
+            res.Id = report.Id;
+            res.ownerId = report.OwnerId;
+            System.debug(LoggingLevel.INFO, '*** res: ' + res);
+        }catch(Exception e){
+            System.debug(LoggingLevel.INFO, '*** e: ' + e);
+        }
+        return res;
+    }
+
+    @AuraEnabled
+    public static String updateQisForQisAgree (String recordId){
+        String re = '鎴愬姛';
+        ID myUserID = UserInfo.getUserId();
+        
+        String answerComp = Schema.SObjectType.QIS_Report__c.getRecordTypeInfosByName().get(LightingButtonConstant.RECORD_TYPE_NAME_BY_OSH_FINASH).getRecordTypeId();
+        String fina = Schema.SObjectType.QIS_Report__c.getRecordTypeInfosByName().get(LightingButtonConstant.RECORD_TYPE_NAME_BY_FINAL).getRecordTypeId();
+        String comp = Schema.SObjectType.QIS_Report__c.getRecordTypeInfosByName().get(LightingButtonConstant.RECORD_TYPE_NAME_BY_COMP).getRecordTypeId();
+        // RecordType rectyp = [SELECT id ,name FROM RecordType where  id = '01210000000gFTH'];
+        QIS_Report__c report = [SELECT  id,OwnerId,RecordTypeId FROM QIS_Report__c WHERE Id = :recordId LIMIT 1];
+        try{
+            if (report.ownerid == myUserID) {
+                QIS_Report__c rac  = new QIS_Report__c();   
+                rac.id = recordId;
+                rac.QIS_Status__c = LightingButtonConstant.STATUS_QIS_COMPLATED;
+                if (report.RecordTypeId == answerComp) {
+                    rac.RecordTypeId = fina;
+                }else{
+                    rac.RecordTypeId = comp;
+                }
+                rac.QIS_Complete_Day__c  = Date.today();
+                update rac;
+            }
+            
+        }catch(Exception e){
+            System.debug(LoggingLevel.INFO, '*** e: ' + e);
+            re = e.getMessage();
+        }
+         return re;
+    }
+    //OCSM鏈嶅姟鏈儴CDS瀹屾瘯
+    @AuraEnabled
+    public static InitData initForRCCDScompleteButton (String recordId){
+        InitData res = new initData();
+        try{
+            QIS_Report__c report = [SELECT  id ,CDS_date__c,QIS_Status__c FROM QIS_Report__c WHERE Id = :recordId LIMIT 1];  
+            res.Id = report.Id;
+            res.cdsdate = report.CDS_date__c;
+            res.QIStatus = report.QIS_Status__c;
+            System.debug(LoggingLevel.INFO, '*** res: ' + res);
+        }catch(Exception e){
+            System.debug(LoggingLevel.INFO, '*** e: ' + e);
+        }
+        return res;
+    }
+
+    @AuraEnabled
+    public static String updateQisForRCCDScomplete (String recordId){
+        String re = '鎴愬姛';
+        ID myUserID = UserInfo.getUserId();
+        User userinfo = [SELECT id,Alias__c FROM User WHERE Id = :myUserID LIMIT 1];  
+        QIS_Report__c report = [SELECT  id FROM QIS_Report__c WHERE Id = :recordId LIMIT 1];
+        try{
+                QIS_Report__c rac  = new QIS_Report__c();   
+                rac.id = recordId;
+                rac.CDS_date__c  = Date.today();
+                rac.RC_CDS_staff__c  = userinfo.Alias__c;
+                update rac;        
+        }catch(Exception e){
+            System.debug(LoggingLevel.INFO, '*** e: ' + e);
+            re = e.getMessage();
+        }
+         return re;
+    }
 
     public class InitData{
         @AuraEnabled
         public String Id;
         @AuraEnabled
-        public String OwnerId;
+        public String ownerId;
         @AuraEnabled
         public String qisRecordTypeId;
         @AuraEnabled
         public String qisRecordName;
         @AuraEnabled
-        public String ProfileName;
+        public String profileName;
         @AuraEnabled
-        public String PAEid;
+        public String isAEProfile;
         @AuraEnabled
-        public String OCSMAdministrativeReportNumber;
+        public String isPAEProfile;
         @AuraEnabled
-        public String OCSMAdministrativeReportStatus;
+        public String isCNBuy;
         @AuraEnabled
-        public String QIStatus;
+        public String pAEid;
         @AuraEnabled
-        public String OSHstaff;
+        public String oCSMAdministrativeReportNumber;
         @AuraEnabled
-        public String OSHstaffEmail;
+        public String oCSMAdministrativeReportStatus;
         @AuraEnabled
-        public String CancelQISReason;
+        public String qIStatus;
         @AuraEnabled
-        public String RCid;
+        public String oSHstaff;
+        @AuraEnabled
+        public String oSHstaffEmail;
+        @AuraEnabled
+        public String cancelQISReason;
+        @AuraEnabled
+        public String rCid;
         @AuraEnabled
         public String contractnumber;
         @AuraEnabled
-        public Date RCinspectionDate;
+        public Date rCinspectionDate;
         @AuraEnabled
-        public Date QISReplyDay;
+        public Date qISReplyDay;
         @AuraEnabled
-        public Date QISInstallDate;
+        public Date qISInstallDate;
         @AuraEnabled
         public Date cdsdate;
         @AuraEnabled
-        public Date Aware_date;
+        public Date awaredate;
         @AuraEnabled
-        public Date OCSMAdministrativeReportDate;
+        public Date oCSMAdministrativeReportDate;
         @AuraEnabled
-        public Boolean RCproblemnotfound;
+        public Boolean rCproblemnotfound;
         @AuraEnabled
         public Boolean isaohuiproduct;
         @AuraEnabled
-        public Boolean IsSendQIS;
+        public Boolean isSendQIS;
     }
 
 }
\ No newline at end of file
diff --git a/force-app/main/default/classes/QISReportController.cls-meta.xml b/force-app/main/default/classes/QISReportController.cls-meta.xml
index 9662499..541584f 100644
--- a/force-app/main/default/classes/QISReportController.cls-meta.xml
+++ b/force-app/main/default/classes/QISReportController.cls-meta.xml
@@ -2,4 +2,4 @@
 <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
     <apiVersion>50.0</apiVersion>
     <status>Active</status>
-</ApexClass>
\ No newline at end of file
+</ApexClass>
diff --git a/force-app/main/default/classes/TenderWebService.cls b/force-app/main/default/classes/TenderWebService.cls
new file mode 100644
index 0000000..65fb530
--- /dev/null
+++ b/force-app/main/default/classes/TenderWebService.cls
@@ -0,0 +1,83 @@
+global class TenderWebService {
+	public TenderWebService() {
+
+	}
+	@AuraEnabled
+	//鎷涙姇鏍囧弽閫昏緫鍒犻櫎
+	WebService static String ContraryLogicalDel(String DTenId) {
+		Tender_information__c DTenInfo = [Select Id, InfoId__c, Logical_delete__c, ProjectId__c, Retain_Tender__c From Tender_information__c Where id = : DTenId];
+		// 鏇存柊鍒犻櫎鎷涙姇鏍�
+		List<Tender_information__c> updateTenInfoList = new List<Tender_information__c>();
+		// 鏇存柊淇濈暀鎷涙姇鏍�
+		// List<Tender_information__c> updateBTenList = new List<Tender_information__c>();
+		if (String.isNotBlank(DTenInfo.Retain_Tender__c)) {
+			// System.debug('11111111' + TenInfo.Retain_Tender__c);
+			//瑕佷繚鐣欑殑鎷涙姇鏍�
+			Tender_information__c BTen =  [select Id, InfoId__c From Tender_information__c
+			                               Where Id = : DTenInfo.Retain_Tender__c];
+
+			// 鍒犻櫎鎷涙姇鏍囧叧鑱旂殑璇环
+			// List<Tender_Opportunity_Link__c> DTenLinkList = [select Opportunity__c
+			//         from Tender_Opportunity_Link__c
+			//         where Tender_information__c = :DTenId and IsRelated__c = true];
+			// System.debug('---------2---------' + DTenLinkList);
+			// Set<Id> DTenLinkOppIdSet = new Set<Id>();
+			// if (DTenLinkList.size() > 0) {
+			// 	for (Tender_Opportunity_Link__c DTenlink : DTenLinkList) {
+			// 		DTenLinkOppIdSet.add(DTenlink.Opportunity__c);
+			// 	}
+			// 	System.debug('---------3---------' + DTenLinkOppIdSet);
+			// 	// 鍒犻櫎椤圭洰鍏宠仈骞朵笖涓庝繚鐣欓」鐩叧鑱旂殑璇环鍏宠仈淇℃伅
+			// 	List<Tender_Opportunity_Link__c> DelD_BTenLinkList = [select id, Opportunity__c, Tender_information__c
+			// 	        from Tender_Opportunity_Link__c
+			// 	        where Tender_information__c = :BTen.Id and Opportunity__c in : DTenLinkOppIdSet];
+			// 	System.debug('---------1---------' + DelD_BTenLinkList);
+			// 	if (DelD_BTenLinkList.size() > 0) {
+			// 		Delete DelD_BTenLinkList;
+			// 	}
+			// }
+
+			// 淇濈暀椤圭洰閫氳繃杞垹闄ら�昏緫鍏宠仈鏉ョ殑璇环
+			List<Tender_Opportunity_Link__c> DelD_BTenLinkList = [select id, Opportunity__c, Tender_information__c
+				        from Tender_Opportunity_Link__c
+				        where Tender_information__c = :BTen.Id and IsRelated__c = true];
+			// 鍒ゆ柇link鏄惁涓虹┖
+			if (DelD_BTenLinkList != null && DelD_BTenLinkList.size() > 0) {
+				// 閫昏緫鏈夊ぇ鍧� 鏆傛椂鍙妸鎵撴爣璁扮殑鍒犳帀 涓嶅仛鍥炲啓鐨勬搷浣滀簡
+				// List<Tender_Opportunity_Link__c> add_list = new List<Tender_Opportunity_Link__c>();
+				// for (Tender_Opportunity_Link__c link : DelD_BTenLinkList) {
+				// 	Tender_Opportunity_Link__c add_link = new Tender_Opportunity_Link__c();
+				// 	add_link.Tender_information__c = DTenInfo.Id;
+				// 	add_link.Opportunity__c = link.Opportunity__c;
+				// 	add_link.Tender_Opportunity_Uniq__c = DTenInfo.Id + '' + link.Opportunity__c;
+				// 	add_link.IsRelated__c = false;
+				// 	add_list.add(add_link);
+				// }
+				// 鍒犳帀淇濈暀椤圭洰涓婄殑鍏宠仈璇环
+				delete DelD_BTenLinkList;
+				// 鍒犻櫎椤圭洰涓婄殑鍏宠仈鍔犲洖鏉�
+				// if (add_list.size() > 0) {
+				// 	insert add_list;
+				// }
+			}
+
+			// 浜掓崲淇濈暀鎷涙姇鏍囦笌鍒犻櫎鎷涙姇鏍囩殑淇℃伅Id
+			DTenInfo.Retain_Tender__c = BTen.Id;
+			String BTenInfo = BTen.InfoId__c;
+			BTen.InfoId__c = DTenInfo.InfoId__c;//淇濈暀鎷涙姇鏍囩殑淇℃伅Id璧嬬粰鍒犻櫎鎷涙姇鏍囩殑淇℃伅Id
+			DTenInfo.InfoId__c = BTenInfo;//鍒犻櫎鎷涙姇鏍囩殑淇℃伅Id璧嬬粰淇濈暀鎷涙姇鏍囩殑淇℃伅Id
+			// 鐐瑰嚮淇濆瓨鍚� 鍒犻櫎鎷涙姇鏍囦笂鐨勯�昏緫鍒犻櫎瀛楁鍙樹负true
+			DTenInfo.Logical_delete__c = false;
+			// update TenInfo;
+			// 涓�璧锋洿鏂板氨琛屼簡
+			updateTenInfoList.add(DTenInfo);
+			updateTenInfoList.add(BTen);
+			update updateTenInfoList;
+
+			// updateBTenList.add(BTen);
+			// update updateBTenList;
+
+		}
+		return 'OK';
+	}
+}
\ No newline at end of file
diff --git a/force-app/main/default/classes/TenderWebService.cls-meta.xml b/force-app/main/default/classes/TenderWebService.cls-meta.xml
new file mode 100644
index 0000000..e3d1b51
--- /dev/null
+++ b/force-app/main/default/classes/TenderWebService.cls-meta.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
+    <apiVersion>45.0</apiVersion>
+    <status>Active</status>
+</ApexClass>
diff --git a/force-app/main/default/classes/TenderingButtonController.cls b/force-app/main/default/classes/TenderingButtonController.cls
new file mode 100644
index 0000000..5a2d0ea
--- /dev/null
+++ b/force-app/main/default/classes/TenderingButtonController.cls
@@ -0,0 +1,54 @@
+public class TenderingButtonController {
+    @AuraEnabled
+    public static InitData initTenderingController(String recordId) {
+        InitData res = new initData();
+        try{
+            Tender_information__c report = [SELECT 	OpportunityNum__c,OwnerId,Id,status__c,Name,IsRelateProject__c FROM Tender_information__c WHERE Id = :recordId LIMIT 1];
+            res.OwnerId = report.OwnerId;
+            res.Id = report.Id;
+            res.status = report.status__c;
+            res.name = report.Name;
+            res.opportunityNum = String.valueOf(report.OpportunityNum__c);
+            res.isRelateProject = report.IsRelateProject__c;
+            res.profileId = UserInfo.getProfileId();
+            res.Environment_Url = System.Label.Environment_Url;
+            System.debug(LoggingLevel.INFO, '*** xu: ' + res);
+        }catch(Exception e){
+            System.debug(LoggingLevel.INFO, '*** xu: ' + e);
+        }
+        return res;
+    }
+
+    // 鎷涙爣椤圭洰澶卞崟 TenderOpportunityLink
+    // 璋冪敤璇ユ帴鍙ar sql = "select id from Tender_Opportunity_Link__c where Tender_information__c='" + '{!Tender_information__c.Id}'+ "'";
+    @AuraEnabled
+    public static List<Tender_Opportunity_Link__c> sqlResult (String id) {
+        try { 
+            List<Tender_Opportunity_Link__c> TenderOpportunityLink = [SELECT id FROM Tender_Opportunity_Link__c WHERE Tender_information__c = :id];
+            System.debug(LoggingLevel.INFO, '*** xu1: ' + TenderOpportunityLink);
+            return TenderOpportunityLink;
+        } catch (exception e) {
+            System.debug(LoggingLevel.INFO, '*** xu1111111: ' + e);
+            throw new AuraHandledException(e.getMessage());
+        }
+    }
+
+    public class InitData{
+        @AuraEnabled
+        public String Id;
+        @AuraEnabled
+        public String OwnerId;
+        @AuraEnabled
+        public String status;
+        @AuraEnabled
+        public String name;
+        @AuraEnabled
+        public String opportunityNum;
+        @AuraEnabled
+        public String isRelateProject;
+        @AuraEnabled
+        public String profileId;
+        @AuraEnabled
+        public String Environment_Url;
+    }
+}
\ No newline at end of file
diff --git a/force-app/main/default/classes/TenderingButtonController.cls-meta.xml b/force-app/main/default/classes/TenderingButtonController.cls-meta.xml
new file mode 100644
index 0000000..fbbad0a
--- /dev/null
+++ b/force-app/main/default/classes/TenderingButtonController.cls-meta.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
+    <apiVersion>56.0</apiVersion>
+    <status>Active</status>
+</ApexClass>
diff --git a/force-app/main/default/classes/otherButtonMaintenanceContractCtl.cls b/force-app/main/default/classes/otherButtonMaintenanceContractCtl.cls
index 2538a48..32661b4 100644
--- a/force-app/main/default/classes/otherButtonMaintenanceContractCtl.cls
+++ b/force-app/main/default/classes/otherButtonMaintenanceContractCtl.cls
@@ -32,6 +32,7 @@
         return res;
     }   
 
+    // 缁翠慨鍚堝悓澶卞崟鎶ュ憡
     @AuraEnabled
     public static List<Lost_Report__c> selectRecords(String recordId){
         List<Lost_Report__c> res = new List<Lost_Report__c>();
@@ -43,6 +44,7 @@
         return res;
     }
 
+    // 宸ヤ綔娴佺姸鎬�
     @AuraEnabled
     public static void processResults(String recordId){
         Approval.ProcessSubmitRequest psr = new Approval.ProcessSubmitRequest();
diff --git a/force-app/main/default/classes/otherButtonRepairController.cls b/force-app/main/default/classes/otherButtonRepairController.cls
index 76a3a39..f244964 100644
--- a/force-app/main/default/classes/otherButtonRepairController.cls
+++ b/force-app/main/default/classes/otherButtonRepairController.cls
@@ -7,13 +7,68 @@
     public static InitData init(String recordId){
         InitData res = new initData();
         try{
-            Repair__c report =  [SELECT OCSMAdministrativeReportStatus__c,Incharge_Staff_Email__c,Name,HP_Name__c,Delivered_Product__c,
+            Repair__c report =  [SELECT Status1__c,Rental_Apply_Equipment_Set_Detail__c,Rental_Apply_Equipment_Set_Detail_Id__c,Latest_Collect_Date_Priority__c,if_Rental_Apply__c,Offer_Rental_New__c,ProduceCompany_hand__c,CFDA_No_Hand__c,MBC_AwareDate__c,InsReport__c,QIS_ID__c,On_Call_ID__c,RepairSubOrder__c,ProductFailureRelated__c,Delay15Min__c,ProblemOccurredSelect__c,Repair_Source__c ,Failure_Occurrence_Date__c ,MaintenanceContractType__c ,OperationOrExaminationName__c ,WhatProject__c ,FailureQInHospital__c ,ReportAdverseEvents__c ,InformationFrom__c ,AfterFailureInformation__c ,ProblemOccurred__c ,SupportingProducts__c ,ifDeadHurt__c ,UseFailProductFinish__c ,DelayReportReason__c ,BreakORFallOff__c ,DateReceiptQuestions__c ,DeliveryLogisticsAnnotation__c ,DeliveryLogisticsNo__c ,engineerSendDate__c ,DeliveryLogisticsMode__c ,RepairApplicantDepartment__c ,RepairApplicantHospital__c ,RepairApplicant__c ,Repair_Detail__c ,Returns_Product_way__c ,work_location_select__c ,On_site_repair__c ,SalesOfficeCode_selection__c ,Incharge_Staff_Contact__c ,Incharge_Staff__c ,Dealer__c ,RepairCostType__c ,Account__c,Department_Class__c ,Hospital__c ,PaperRepairRequestNo__c ,part_arrangement_complete__c,Repair_Shipped_Date__c,OCSMAdministrativeReportStatus__c,Incharge_Staff_Email__c,Name,HP_Name__c,Delivered_Product__c,
             Repair_Product_Serial_No__c,Service_Repair_No__c,Repair_Firstestimated_Date__c,
             Repair_Estimated_Date__c,RC_information__c,Id,OCSMAdministrativeReportNumber__c,
             OCSMAdministrativeReportDate__c,Aware_date__c,PAE_Determine__c,ETQ_UPLOAD_STATUS__c,
             AE_DetermineResult__c,PAE_DetermineAC__c,Repair_Inspection_Date__c,Contain_UseRSA__c FROM Repair__c WHERE Id =: recordId LIMIT 1];
             System.debug(LoggingLevel.INFO, '*** opp: ' + report);
+            
+            res.Status1C = report.Status1__c;
+            res.ProblemOccurredSelectC = report.ProblemOccurredSelect__c;
+            res.Delay15MinC = report.Delay15Min__c;
+            res.ProductFailureRelatedC = report.ProductFailureRelated__c;
+            res.RepairSubOrderC = report.RepairSubOrder__c;
+            res.OnCallIDC = report.On_Call_ID__c;
+            res.QISIDC = report.QIS_ID__c;
+            res.InsReportC = report.InsReport__c;
+            res.MBCAwareDateC = report.MBC_AwareDate__c;
+            res.CFDANoHandC = report.CFDA_No_Hand__c;
+            res.ProduceCompanyHandC = report.ProduceCompany_hand__c;
+            res.OfferRentalNewC = report.Offer_Rental_New__c;
+            res.ifRentalApplyC = report.if_Rental_Apply__c;
+            res.LatestCollectDatePriorityC = report.Latest_Collect_Date_Priority__c;
+            res.RentalApplyEquipmentSetDetailIdC = report.Rental_Apply_Equipment_Set_Detail_Id__c;
+            res.RentalApplyEquipmentSetDetailC = report.Rental_Apply_Equipment_Set_Detail__c;
+            res.PaperRepairRequestNoC = report.PaperRepairRequestNo__c;
+            res.HospitalC = report.Hospital__c;
+            res.DepartmentClassC = report.Department_Class__c;
+            res.AccountC = report.Account__c;
+            res.RepairCostTypeC = report.RepairCostType__c;
+            res.DealerC  = report.Dealer__c ;
+            res.InchargeStaffC  = report.Incharge_Staff__c ;
+            res.InchargeStaffContactC  = report.Incharge_Staff_Contact__c ;
+            res.SalesOfficeCodeSelectionC  = report.SalesOfficeCode_selection__c ;
+            res.OnSiteRepairC  = report.On_site_repair__c ;
+            res.workLocationSelectC  = report.work_location_select__c ;
+            res.ReturnsProductWayC  = report.Returns_Product_way__c ;
+            res.RepairDetailC  = report.Repair_Detail__c ;
+            res.RepairApplicantC  = report.RepairApplicant__c ;
+            res.RepairApplicantHospitalC  = report.RepairApplicantHospital__c ;
+            res.RepairApplicantDepartmentC  = report.RepairApplicantDepartment__c ;
+            res.DeliveryLogisticsModeC  = report.DeliveryLogisticsMode__c ;
+            res.engineerSendDateC  = report.engineerSendDate__c ;
+            res.DeliveryLogisticsNoC  = report.DeliveryLogisticsNo__c ;
+            res.DeliveryLogisticsAnnotationC  = report.DeliveryLogisticsAnnotation__c ;
+            res.DateReceiptQuestionsC  = report.DateReceiptQuestions__c ;
+            res.BreakORFallOffC  = report.BreakORFallOff__c ;
+            res.DelayReportReasonC  = report.DelayReportReason__c ;
+            res.UseFailProductFinishC  = report.UseFailProductFinish__c ;
+            res.ifDeadHurtC = report.ifDeadHurt__c ;
+            res.SupportingProductsC = report.SupportingProducts__c ;
+            res.ProblemOccurredC = report.ProblemOccurred__c ;
+            res.AfterFailureInformationC = report.AfterFailureInformation__c ;
+            res.InformationFromC = report.InformationFrom__c ;
+            res.ReportAdverseEventsC = report.ReportAdverseEvents__c ;
+            res.FailureQInHospitalC = report.FailureQInHospital__c ;
+            res.WhatProjectC = report.WhatProject__c ;
+            res.OperationOrExaminationNameC = report.OperationOrExaminationName__c ;
+            res.MaintenanceContractTypeC = report.MaintenanceContractType__c ;
+            res.FailureOccurrenceDateC = report.Failure_Occurrence_Date__c ;
+            res.RepairSourceC = report.Repair_Source__c ;
             res.Id = report.Id;
+            res.partArrangementCompleteC = report.part_arrangement_complete__c;
+            res.RepairShippedDateC = report.Repair_Shipped_Date__c;
             res.OCSMAdministrativeReportNumberC = report.OCSMAdministrativeReportNumber__c;
             res.OCSMAdministrativeReportDateC = report.OCSMAdministrativeReportDate__c;
             res.AwareDateC = report.Aware_date__c;
@@ -23,7 +78,6 @@
             res.PAEDetermineACC = report.PAE_DetermineAC__c;
             res.RepairInspectionDateC = report.Repair_Inspection_Date__c;
             res.ContainUseRSAC = report.Contain_UseRSA__c;
-
             res.InchargeStaffEmailC = report.Incharge_Staff_Email__c;
             res.Name = report.Name;
             res.HPNameC = report.HP_Name__c;
@@ -34,6 +88,10 @@
             res.RepairEstimatedDateC = report.Repair_Estimated_Date__c;
             res.RCInformationC = report.RC_information__c;
             res.OCSMAdministrativeReportStatusC = report.OCSMAdministrativeReportStatus__c;
+            res.userID = UserInfo.getUserId();
+            res.profileId = UserInfo.getProfileId();
+            res.userEmail = UserInfo.getUserEmail();
+
 
             System.debug(LoggingLevel.INFO, '*** res: ' + res);
         }catch(Exception e){
@@ -42,6 +100,7 @@
         return res;
     }   
 
+    // 鏍规嵁ID鏌ユ壘淇悊琛�
     @AuraEnabled
     public static List<Repair__c> selectRecords(String recordId){
         List<Repair__c> res = new List<Repair__c>();
@@ -53,6 +112,7 @@
         return res;
     }
 
+    // 鏍规嵁ID淇敼淇悊
     @AuraEnabled
     public static void updateRepair(String recordId){
         try {
@@ -65,18 +125,147 @@
         }
     }
 
+    // 淇敼楠屾敹鍗�
+    @AuraEnabled
+    public static String updateYanshoudan(String recordId){
+        String res;
+        try {
+            Repair__c repair = new Repair__c();
+            repair.Id = recordid;
+            repair.Request_yanshoudan_PDF__c = true;
+            repair.Facility_Return_Receipt_Collection_reque__c = Datetime.now().date();
+            
+            update repair;
+        } catch (Exception e) {
+            System.debug(LoggingLevel.INFO, '*** e: ' + e);
+            res = e.getMessage();
+        }
+        return res;
+    }
+
+    // 鏌ユ壘PAE鍒ゅ畾璁板綍
     @AuraEnabled
     public static List<PAE_DecisionRecord__c> selectPAEDecisionRecord(String recordId,String recordTypeId){
-        List<PAE_DecisionRecord__c> res = new List<PAE_DecisionRecord__c>();
+        List<PAE_DecisionRecord__c > res = new List<PAE_DecisionRecord__c >();
         try{
-            res = [SELECT LastModifiedDate, Id, Name, LastModifiedById,RecordType.DeveloperName FROM PAE_DecisionRecord__c where PAE_Repair__c =: recordId And RecordType.DeveloperName =: recordTypeId Order by LastModifiedDate desc];
+            res = [SELECT LastModifiedDate, Id, Name, LastModifiedById,RecordType.DeveloperName FROM PAE_DecisionRecord__c  where PAE_Repair__c =: recordId And RecordType.DeveloperName =: recordTypeId Order by LastModifiedDate desc];
         }catch(Exception e){
             System.debug(LoggingLevel.INFO, '*** e: ' + e);
         }
         return res;
     }
 
+    // 鍙戦�侀偖浠�
+    @AuraEnabled
+    public static String sendToETQ(String iflog_Id,BatchIF_Log__c rowDataSFDC, List<String> repairIds,String statu){
+        List<QIS_Report__c> temp = [select id from QIS_Report__c where id in :repairIds ];
+        if(temp != null && temp.size() > 0){
+            try {
+                Database.executeBatch(new QISToPDFBatch(iflog_Id, rowDataSFDC,repairIds,statu),50); //鐢熸垚PDF
+            }
+            catch (Exception e) {
+                return '鏇存柊QIS鎶ラ敊:'+ e.getMessage();
+            }
+        }else{
+            BatchIF_Log__c iflog = new BatchIF_Log__c();
+            iflog.Type__c = 'sendToETQ';
+            iflog.ErrorLog__c = '';
+            iflog.Log__c = 'NFM401WebService start--';
+
+            Repair__c updateRe = new Repair__c();
+            updateRe.Id = repairIds[0];
+            updateRe.INTERFACE_RECORD_ID__c = null; 
+            updateRe.ETQ_UPLOAD_STATUS__c = null; 
+            updateRe.ETQ_UPLOAD_MESSAGE__c = null; 
+            updateRe.OSH_ConfirmationDate__c = Date.today(); 
+            updateRe.OSH_Affirmant__c = UserInfo.getUserId(); 
+            updateRe.AWS_Interface_Time__c = Datetime.now();
+            updateRe.AsyncData__c = true; 
+            try{
+                update updateRe;
+                Database.executeBatch(new RepairToPDFBatch(iflog_Id, rowDataSFDC,repairIds,statu)); //鐢熸垚PDF
+                iflog.Log__c += '\n淇悊:'+updateRe+' 鏇存柊鎴愬姛';
+                iflog.Log__c = '\nNFM401WebService end--';
+                insert iflog;
+            }catch(Exception ex){
+                iflog.ErrorLog__c += '淇悊:'+updateRe+' 鏇存柊澶辫触,鍥犱负::'+ex.getMessage();
+                iflog.Log__c = '\nNFM401WebService end--';
+                insert iflog;
+                return '鏇存柊淇悊鎶ラ敊:'+ ex.getMessage();
+            }
+        }
+        return '鍙戦�佹垚鍔�!';
+    }
+
+    // 鏌ユ壘AssetID
+    @AuraEnabled
+    public static String selectAssetID(String recordId){
+        List<Repair__c> res = new List<Repair__c>();
+        try{
+            res = [SELECT Delivered_Product__c from Repair__c WHERE Id =: recordId];
+        }catch(Exception e){
+            System.debug(LoggingLevel.INFO, '*** e: ' + e);
+        }
+        return res[0].Delivered_Product__c;
+    }
+
+    // 鏌ユ壘鍒犻櫎ID
+    @AuraEnabled
+    public static List<Repair__c> selectCustomDeleteById(String recordId){
+        List<Repair__c > res = new List<Repair__c >();
+        try{
+            res = [SELECT Id, Status__c,SAP_Transfer_time__c, Repair_Ordered_Date__c, CreatedById, Acc_OwnerId__c,FSE_ownerid__c FROM Repair__c WHERE Id =: recordId];
+        }catch(Exception e){
+            System.debug(LoggingLevel.INFO, '*** e: ' + e);
+        }
+        return res;
+    }
+
+     // 鏌ユ壘鍒犻櫎ID
+     @AuraEnabled
+     public static String deleteRepair(String rid) {
+        try {
+            Repair__c r = new Repair__c(Id = rid);
+            delete r;
+            return 'OK';
+        } catch (Exception e) {
+            return e.getMessage();
+        }
+    }
+
     public class InitData{
+        @AuraEnabled
+        public String Status1C;
+        @AuraEnabled
+        public String RepairSubOrderC;
+        @AuraEnabled
+        public String OnCallIDC;
+        @AuraEnabled
+        public String QISIDC;
+        @AuraEnabled
+        public String InsReportC;
+        @AuraEnabled
+        public Datetime MBCAwareDateC;
+        @AuraEnabled
+        public String CFDANoHandC;
+        @AuraEnabled
+        public String ProduceCompanyHandC;
+        @AuraEnabled
+        public Boolean OfferRentalNewC;
+        @AuraEnabled
+        public Boolean ifRentalApplyC;
+        @AuraEnabled
+        public Datetime LatestCollectDatePriorityC;
+        @AuraEnabled
+        public String RentalApplyEquipmentSetDetailIdC;
+        @AuraEnabled
+        public String RentalApplyEquipmentSetDetailC;
+        @AuraEnabled
+        public String ProblemOccurredSelectC;
+         @AuraEnabled
+        public String Delay15MinC;
+         @AuraEnabled
+        public String ProductFailureRelatedC;
         @AuraEnabled
         public String Id;
         @AuraEnabled
@@ -97,7 +286,6 @@
         public Datetime RepairInspectionDateC;
         @AuraEnabled
         public boolean ContainUseRSAC;
-
          @AuraEnabled
         public String InchargeStaffEmailC;
          @AuraEnabled
@@ -118,6 +306,87 @@
         public String RCInformationC;
         @AuraEnabled
         public String OCSMAdministrativeReportStatusC;
-
+        @AuraEnabled
+        public Datetime RepairShippedDateC;
+        @AuraEnabled
+        public Datetime partArrangementCompleteC;
+        @AuraEnabled
+        public String userID;
+        @AuraEnabled
+        public String profileId;
+        @AuraEnabled
+        public String userEmail;
+        @AuraEnabled
+        public String PaperRepairRequestNoC;
+        @AuraEnabled
+        public String HospitalC;
+        @AuraEnabled
+        public String AccountC;
+        @AuraEnabled
+        public String DepartmentClassC;
+        @AuraEnabled
+        public String RepairCostTypeC;
+        @AuraEnabled
+        public String DealerC;
+        @AuraEnabled
+        public String InchargeStaffC;
+        @AuraEnabled
+        public String InchargeStaffContactC;
+        @AuraEnabled
+        public String SalesOfficeCodeSelectionC;
+        @AuraEnabled
+        public String OnSiteRepairC;
+        @AuraEnabled
+        public String workLocationSelectC;
+        @AuraEnabled
+        public String ReturnsProductWayC;
+        @AuraEnabled
+        public String RepairDetailC;
+        @AuraEnabled
+        public String RepairApplicantC;
+        @AuraEnabled
+        public String RepairApplicantHospitalC;
+        @AuraEnabled
+        public String RepairApplicantDepartmentC;
+        @AuraEnabled
+        public String DeliveryLogisticsModeC;
+        @AuraEnabled
+        public Datetime engineerSendDateC;
+        @AuraEnabled
+        public String DeliveryLogisticsNoC;
+        @AuraEnabled
+        public String DeliveryLogisticsAnnotationC;
+        @AuraEnabled
+        public Datetime DateReceiptQuestionsC;
+        @AuraEnabled
+        public String BreakORFallOffC;
+        @AuraEnabled
+        public String DelayReportReasonC;
+        @AuraEnabled
+        public String UseFailProductFinishC;
+        @AuraEnabled
+        public String ifDeadHurtC;
+        @AuraEnabled
+        public String SupportingProductsC;
+        @AuraEnabled
+        public String ProblemOccurredC;
+        @AuraEnabled
+        public String AfterFailureInformationC;
+        @AuraEnabled
+        public String InformationFromC;
+        @AuraEnabled
+        public String ReportAdverseEventsC;
+        @AuraEnabled
+        public String FailureQInHospitalC;
+        @AuraEnabled
+        public String WhatProjectC;
+        @AuraEnabled
+        public String OperationOrExaminationNameC;
+        @AuraEnabled
+        public String MaintenanceContractTypeC;
+        @AuraEnabled
+        public Datetime FailureOccurrenceDateC;
+        @AuraEnabled
+        public String RepairSourceC;
      }
 }
\ No newline at end of file
diff --git a/force-app/main/default/classes/otherButtonRepairController.cls-meta.xml b/force-app/main/default/classes/otherButtonRepairController.cls-meta.xml
index fbbad0a..9bbf7b4 100644
--- a/force-app/main/default/classes/otherButtonRepairController.cls-meta.xml
+++ b/force-app/main/default/classes/otherButtonRepairController.cls-meta.xml
@@ -2,4 +2,4 @@
 <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
     <apiVersion>56.0</apiVersion>
     <status>Active</status>
-</ApexClass>
+</ApexClass>
\ No newline at end of file
diff --git a/force-app/main/default/classes/otherButtonSpotInspectionReportCtl.cls b/force-app/main/default/classes/otherButtonSpotInspectionReportCtl.cls
new file mode 100644
index 0000000..3cb0f27
--- /dev/null
+++ b/force-app/main/default/classes/otherButtonSpotInspectionReportCtl.cls
@@ -0,0 +1,28 @@
+public with sharing class otherButtonSpotInspectionReportCtl {
+    public otherButtonSpotInspectionReportCtl() {
+
+    }
+
+    @AuraEnabled
+    public static InitData init(String recordId){
+        InitData res = new initData();
+        try{
+            Inspection_Report__c report =  [SELECT Id,RecordTypeId FROM Inspection_Report__c WHERE Id =: recordId LIMIT 1];
+            System.debug(LoggingLevel.INFO, '*** opp: ' + report);
+            res.Id = report.Id;
+            res.RecordTypeId = report.RecordTypeId;
+          
+            System.debug(LoggingLevel.INFO, '*** res: ' + res);
+        }catch(Exception e){
+            System.debug(LoggingLevel.INFO, '*** e: ' + e);
+        }
+        return res;
+    }   
+
+    public class InitData{
+        @AuraEnabled
+        public String Id;
+        @AuraEnabled
+        public String RecordTypeId;
+     }
+}
\ No newline at end of file
diff --git a/force-app/main/default/classes/otherButtonSpotInspectionReportCtl.cls-meta.xml b/force-app/main/default/classes/otherButtonSpotInspectionReportCtl.cls-meta.xml
new file mode 100644
index 0000000..9bbf7b4
--- /dev/null
+++ b/force-app/main/default/classes/otherButtonSpotInspectionReportCtl.cls-meta.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
+    <apiVersion>56.0</apiVersion>
+    <status>Active</status>
+</ApexClass>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexASACEditor/lexASACEditor.css b/force-app/main/default/lwc/lexASACEditor/lexASACEditor.css
new file mode 100644
index 0000000..689c97d
--- /dev/null
+++ b/force-app/main/default/lwc/lexASACEditor/lexASACEditor.css
@@ -0,0 +1,10 @@
+.inASACEditorHolder{
+    position: relative;
+    display: inline-block;
+    width: 80px;
+    height: 80px;
+    text-align: center;
+}
+.container .uiContainerManager{
+	display: none !important;
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexASACEditor/lexASACEditor.html b/force-app/main/default/lwc/lexASACEditor/lexASACEditor.html
new file mode 100644
index 0000000..19263b7
--- /dev/null
+++ b/force-app/main/default/lwc/lexASACEditor/lexASACEditor.html
@@ -0,0 +1,5 @@
+<template>
+    <div class="inASACEditorHolder" if:true={IsLoading}>
+        <lightning-spinner alternative-text="Loading" size="medium"></lightning-spinner>
+    </div>
+</template>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexASACEditor/lexASACEditor.js b/force-app/main/default/lwc/lexASACEditor/lexASACEditor.js
new file mode 100644
index 0000000..a40f487
--- /dev/null
+++ b/force-app/main/default/lwc/lexASACEditor/lexASACEditor.js
@@ -0,0 +1,73 @@
+import { LightningElement,wire,track,api} from 'lwc';
+import { CurrentPageReference } from "lightning/navigation";
+import { CloseActionScreenEvent } from 'lightning/actions';
+import init  from '@salesforce/apex/ReportController.initForASACEditorButton';
+export default class LexASACEditor extends LightningElement {
+    @api recordId;
+    LastModifiedDate
+    Id
+    Name
+    LastModifiedById
+    DeveloperName
+    IsLoading = true;
+    url;
+    @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);
+        init({
+            recordId: this.recordId
+        }).then(result => {
+            console.log(result);
+            if (result != undefined) {
+                console.log("if");
+                this.LastModifiedById = result.LastModifiedById;
+                this.LastModifiedDate = result.LastModifiedDate;
+                this.Id = result.Id;
+                this.Name = result.Name;
+                this.DeveloperName = result.DeveloperName;
+                console.log(this.Id);
+                this.editor();
+                this.dispatchEvent(new CloseActionScreenEvent());
+                //window.location.replace("https://ocsm--partial.sandbox.lightning.force.com/lightning/r/Report__c/" + this.recordId + "/view");
+            }else{
+                console.log("else");
+                this.IsLoading = false;
+                this.editor();
+                this.dispatchEvent(new CloseActionScreenEvent());
+            }
+        }).catch(error => {
+            console.log("error");
+            console.log(error);
+        }).finally(() => {
+            
+        });   
+        //this.updateRecordView(this.recordId);
+
+    }
+
+    editor(){
+        if (this.Id != undefined){
+            this.url = "/apex/RepPAEDecisionRecord?Id="+this.Id+"&ReportId="+this.recordId+"&RecordTypeIds="+"ASACDecision";
+            console.log(this.url);
+            } else {
+            this.url = "/apex/RepPAEDecisionRecord?ReportId="+this.recordId+"&RecordTypeIds="+"ASACDecision";
+            console.log(this.url);
+            }
+        window.open(this.url,"_self");
+    }
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexASACEditor/lexASACEditor.js-meta.xml b/force-app/main/default/lwc/lexASACEditor/lexASACEditor.js-meta.xml
new file mode 100644
index 0000000..952a036
--- /dev/null
+++ b/force-app/main/default/lwc/lexASACEditor/lexASACEditor.js-meta.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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
diff --git a/force-app/main/default/lwc/lexASRCEditor/lexASRCEditor.css b/force-app/main/default/lwc/lexASRCEditor/lexASRCEditor.css
new file mode 100644
index 0000000..5cd9c5d
--- /dev/null
+++ b/force-app/main/default/lwc/lexASRCEditor/lexASRCEditor.css
@@ -0,0 +1,10 @@
+.inASRCEditorHolder{
+    position: relative;
+    display: inline-block;
+    width: 80px;
+    height: 80px;
+    text-align: center;
+}
+.container .uiContainerManager{
+	display: none !important;
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexASRCEditor/lexASRCEditor.html b/force-app/main/default/lwc/lexASRCEditor/lexASRCEditor.html
new file mode 100644
index 0000000..79f5b93
--- /dev/null
+++ b/force-app/main/default/lwc/lexASRCEditor/lexASRCEditor.html
@@ -0,0 +1,5 @@
+<template>
+    <div class="inASRCEditorHolder" if:true={IsLoading}>
+        <lightning-spinner alternative-text="Loading" size="medium"></lightning-spinner>
+    </div>
+</template>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexASRCEditor/lexASRCEditor.js b/force-app/main/default/lwc/lexASRCEditor/lexASRCEditor.js
new file mode 100644
index 0000000..982af66
--- /dev/null
+++ b/force-app/main/default/lwc/lexASRCEditor/lexASRCEditor.js
@@ -0,0 +1,74 @@
+import { LightningElement,wire,track,api} from 'lwc';
+import { CurrentPageReference } from "lightning/navigation";
+import { CloseActionScreenEvent } from 'lightning/actions';
+import init  from '@salesforce/apex/ReportController.initForASRCEditorButton';
+
+export default class LexASRCEditor extends LightningElement {
+    @api recordId;
+    LastModifiedDate
+    Id
+    Name
+    LastModifiedById
+    DeveloperName
+    IsLoading = true;
+    url;
+    @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);
+        init({
+            recordId: this.recordId
+        }).then(result => {
+            console.log(result);
+            if (result != undefined) {
+                console.log("if");
+                this.LastModifiedById = result.LastModifiedById;
+                this.LastModifiedDate = result.LastModifiedDate;
+                this.Id = result.Id;
+                this.Name = result.Name;
+                this.DeveloperName = result.DeveloperName;
+                console.log(this.Id);
+                this.editor();
+                this.dispatchEvent(new CloseActionScreenEvent());
+                //window.location.replace("https://ocsm--partial.sandbox.lightning.force.com/lightning/r/Report__c/" + this.recordId + "/view");
+            }else{
+                console.log("else");
+                this.IsLoading = false;
+                this.editor();
+                this.dispatchEvent(new CloseActionScreenEvent());
+            }
+        }).catch(error => {
+            console.log("error");
+            console.log(error);
+        }).finally(() => {
+            
+        });   
+        //this.updateRecordView(this.recordId);
+
+    }
+
+    editor(){
+        if (this.Id != undefined){
+            this.url = "/apex/RepPAEDecisionRecord?Id="+this.Id+"&ReportId="+this.recordId+"&RecordTypeIds="+"ASRCDecision";
+            console.log(this.url);
+            } else {
+            this.url = "/apex/RepPAEDecisionRecord?ReportId="+this.recordId+"&RecordTypeIds="+"ASRCDecision";
+            console.log(this.url);
+            }
+        window.open(this.url,"_self");
+    }
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexASRCEditor/lexASRCEditor.js-meta.xml b/force-app/main/default/lwc/lexASRCEditor/lexASRCEditor.js-meta.xml
new file mode 100644
index 0000000..952a036
--- /dev/null
+++ b/force-app/main/default/lwc/lexASRCEditor/lexASRCEditor.js-meta.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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
diff --git a/force-app/main/default/lwc/lexASRCEditorRepair/__tests__/lexASRCEditorRepair.test.js b/force-app/main/default/lwc/lexASRCEditorRepair/__tests__/lexASRCEditorRepair.test.js
new file mode 100644
index 0000000..d5c600d
--- /dev/null
+++ b/force-app/main/default/lwc/lexASRCEditorRepair/__tests__/lexASRCEditorRepair.test.js
@@ -0,0 +1,25 @@
+import { createElement } from 'lwc';
+import LexASRCEditorRepair from 'c/lexASRCEditorRepair';
+
+describe('c-lex-asrc-editor-repair', () => {
+    afterEach(() => {
+        // The jsdom instance is shared across test cases in a single file so reset the DOM
+        while (document.body.firstChild) {
+            document.body.removeChild(document.body.firstChild);
+        }
+    });
+
+    it('TODO: test case generated by CLI command, please fill in test logic', () => {
+        // Arrange
+        const element = createElement('c-lex-asrc-editor-repair', {
+            is: LexASRCEditorRepair
+        });
+
+        // Act
+        document.body.appendChild(element);
+
+        // Assert
+        // const div = element.shadowRoot.querySelector('div');
+        expect(1).toBe(1);
+    });
+});
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexASRCEditorRepair/lexASRCEditorRepair.html b/force-app/main/default/lwc/lexASRCEditorRepair/lexASRCEditorRepair.html
new file mode 100644
index 0000000..d044dbb
--- /dev/null
+++ b/force-app/main/default/lwc/lexASRCEditorRepair/lexASRCEditorRepair.html
@@ -0,0 +1,5 @@
+<template>
+    <div class="exampleHolder" if:true={IsLoading}>
+        <lightning-spinner alternative-text="Loading" size="medium"></lightning-spinner>
+    </div>
+</template>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexASRCEditorRepair/lexASRCEditorRepair.js b/force-app/main/default/lwc/lexASRCEditorRepair/lexASRCEditorRepair.js
new file mode 100644
index 0000000..8387edc
--- /dev/null
+++ b/force-app/main/default/lwc/lexASRCEditorRepair/lexASRCEditorRepair.js
@@ -0,0 +1,75 @@
+import {
+    LightningElement,
+    wire,
+    api
+} from 'lwc';
+import {
+    CurrentPageReference
+} from "lightning/navigation";
+import {
+    CloseActionScreenEvent
+} from 'lightning/actions';
+
+import init from '@salesforce/apex/otherButtonRepairController.init';
+import selectPAEDecisionRecord from '@salesforce/apex/otherButtonRepairController.selectPAEDecisionRecord';
+
+export default class LexASRCEditorRepair extends LightningElement {
+    @api recordId;
+    str;
+    IsLoading = true;
+    Id;
+    RecordTypeId;
+
+    @wire(CurrentPageReference)
+    getStateParameters(currentPageReference) {
+        if (currentPageReference) {
+            const urlValue = currentPageReference.state.recordId;
+            if (urlValue) {
+                let str = `${urlValue}`;
+                this.recordId = str;
+            }
+        }
+    }
+
+    connectedCallback() {
+        init({
+            recordId: this.recordId
+        }).then(result => {
+            console.log(result);
+            if (result != null) {
+                this.IsLoading = false;
+                this.Id = result.Id;
+                this.RecordTypeId = result.RecordTypeId;
+
+                this.ASRCEditor();
+                this.dispatchEvent(new CloseActionScreenEvent());
+            }
+        }).catch(error => {
+            console.log(error);
+        }).finally(() => {
+
+        });
+    }
+
+    // Intake universal code缂栬緫
+    ASRCEditor() {
+        var RecordTypeId = "ASRCDecision";
+        var RepairId = this.Id;
+        var url = '';
+        selectPAEDecisionRecord({
+            recordId: RepairId,
+            recordTypeId: RecordTypeId
+        }).then(result => {
+            if (result != null) {
+                if (result.length > 0) {
+                    url = "/apex/PAEDecisionRecord?Id=" + result[0].Id + "&RepairId=" + RepairId + "&RecordTypeIds=" + RecordTypeId;
+                } else {
+                    url = "/apex/PAEDecisionRecord?RepairId=" + RepairId + "&RecordTypeIds=" + RecordTypeId;
+                }
+                window.open(url, '_self');
+            }
+        }).catch(error => {
+            console.log(error);
+        })
+    }
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexASRCEditorRepair/lexASRCEditorRepair.js-meta.xml b/force-app/main/default/lwc/lexASRCEditorRepair/lexASRCEditorRepair.js-meta.xml
new file mode 100644
index 0000000..3392981
--- /dev/null
+++ b/force-app/main/default/lwc/lexASRCEditorRepair/lexASRCEditorRepair.js-meta.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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
diff --git a/force-app/main/default/lwc/lexApplicationCancelSubmit/lexApplicationCancelSubmit.js b/force-app/main/default/lwc/lexApplicationCancelSubmit/lexApplicationCancelSubmit.js
index c75f6c5..ee9ec67 100644
--- a/force-app/main/default/lwc/lexApplicationCancelSubmit/lexApplicationCancelSubmit.js
+++ b/force-app/main/default/lwc/lexApplicationCancelSubmit/lexApplicationCancelSubmit.js
@@ -1,13 +1,12 @@
 import { LightningElement,wire,track,api} from 'lwc';
 import { CurrentPageReference } from "lightning/navigation";
 import { CloseActionScreenEvent } from 'lightning/actions';
-import { NavigationMixin } from 'lightning/navigation';
 import  init  from '@salesforce/apex/ApplicationButtonController.initSubmitButton';
 import { updateRecord } from 'lightning/uiRecordApi';
 import { ShowToastEvent } from 'lightning/platformShowToastEvent';
 import submitCancel from '@salesforce/apex/ApplicationButtonController.submitCancel';
-import UserInfo_Owner from '@salesforce/apex/ApplicationButtonController.UserInfo_Owner';
-export default class Submit extends LightningElement {
+import userInfo_Owner from '@salesforce/apex/ApplicationButtonController.userInfo_Owner';
+export default class lexApplicationCancelSubmit extends LightningElement {
     @api recordId;//OwnerId
     ownerId;
     monthlyReportId;
@@ -19,33 +18,25 @@
            const urlValue = currentPageReference.state.recordId;
            if (urlValue) {
              let str = `${urlValue}`;
-             console.log("str:"+str);
              this.recordId = str;
            }
          }
      }
     
-
     connectedCallback(){
         init({
             recordId: this.recordId
         }).then(result => {
-            if (result != null) {
                 this.IsLoading = false;
                 this.ownerId = result.OwnerId;
                 this.monthlyReportId = result.Id;
                 this.cancelSubmit();
-            }
-        }).catch(error => {
-            console.log("error"+error);
-        }).finally(() => {
-            
-        });        
+        })       
     }
-
+    //鎺堟潈鐢宠 鍙栨秷鎻愪氦
     cancelSubmit(){
-        UserInfo_Owner({}).then(result=>{
-            console.log(result,'鑾峰彇褰撳墠鐧婚檰浜篿d')
+        //'鑾峰彇褰撳墠鐧婚檰浜篿d'
+        userInfo_Owner({}).then(result=>{
             if(this.ownerId == result.id){
                 submitCancel({
                     recordId: this.recordId
@@ -64,7 +55,6 @@
             }
         })
     }
-
 
     updateRecordView() {
         updateRecord({fields: { Id: this.recordId }});
diff --git a/force-app/main/default/lwc/lexApplicationSubmitButton/lexApplicationSubmitButton.js b/force-app/main/default/lwc/lexApplicationSubmitButton/lexApplicationSubmitButton.js
index ae57fdf..90688a9 100644
--- a/force-app/main/default/lwc/lexApplicationSubmitButton/lexApplicationSubmitButton.js
+++ b/force-app/main/default/lwc/lexApplicationSubmitButton/lexApplicationSubmitButton.js
@@ -1,13 +1,12 @@
 import { LightningElement,wire,track,api} from 'lwc';
 import { CurrentPageReference } from "lightning/navigation";
 import { CloseActionScreenEvent } from 'lightning/actions';
-import { NavigationMixin } from 'lightning/navigation';
 import  init  from '@salesforce/apex/ApplicationButtonController.initSubmitButton';
-import UserInfo_Owner from '@salesforce/apex/ApplicationButtonController.UserInfo_Owner';
+import userInfo_Owner from '@salesforce/apex/ApplicationButtonController.userInfo_Owner';
 import submit  from '@salesforce/apex/ApplicationButtonController.submit';
 import { updateRecord } from 'lightning/uiRecordApi';
 import { ShowToastEvent } from 'lightning/platformShowToastEvent';
-export default class Submit extends LightningElement {
+export default class lexApplicationSubmitButton extends LightningElement {
     @api recordId;//OwnerId
     ownerId;//鎵�鏈変汉id
     id;//杩斿洖鍊肩殑id
@@ -16,41 +15,32 @@
 
     @wire(CurrentPageReference)
      getStateParameters(currentPageReference) {
-        console.log(currentPageReference,'666666666666');
          if (currentPageReference) {
            const urlValue = currentPageReference.state.recordId;
            if (urlValue) {
              let str = `${urlValue}`;
-             console.log("str:"+str);
              this.recordId = str;
            }
          }
      }
     
-
     connectedCallback(){
         init({
             recordId: this.recordId
         }).then(result => {
-            console.log(result,"璇锋眰鎴愬姛浜嗗悧")
             if (result != null) {
                 this.IsLoading = false;
                 this.ownerId = result.OwnerId;
                 this.id = result.Id;
                 this.Submit();
             }
-        }).catch(error => {
-            console.log("error"+error);
-        }).finally(() => {
-            
-        });        
+        })       
     }
 
     Submit(){
         this.arrMessage = [];
         //鑾峰彇鑾峰彇褰撳墠鐧婚檰浜�
-        UserInfo_Owner({}).then(result=>{
-            console.log(result,'鑾峰彇褰撳墠鐧婚檰浜篿d')
+        userInfo_Owner({}).then(result=>{
             if(this.ownerId == result.id){
                 submit({
                     recordId: this.recordId
@@ -66,11 +56,6 @@
                             }
                             messageage += this.arrMessage[i+1];
                         }
-                        // if(requst.split(',')[1].slice(-1) == '寮�'){
-                        //     messageage = requst.split(',')[1] + "," + requst.split(',')[2] + "," +  requst.split(',')[3] + "," +  requst.split(',')[4] + "," +  requst.split(',')[5] + "," + requst.split(',')[6];
-                        // }else{
-                        //     messageage = requst.split(',')[1];
-                        // }
                         this.showToast(messageage,"error");
                     }
                 })
@@ -80,19 +65,16 @@
         })
     }
 
-
     updateRecordView() {
         updateRecord({fields: { Id: this.recordId }});
     }
 
     showToast(msg,type) {
-        console.log(msg,type);
         const event = new ShowToastEvent({
             message: msg,
             variant: type
         });
         this.dispatchEvent(event);
-        console.log('璧板埌杩欓噷浜嗗悧');
         if(type == 'success'){
             this.updateRecordView();
         }
diff --git a/force-app/main/default/lwc/lexCancel/lexCancel.js b/force-app/main/default/lwc/lexCancel/lexCancel.js
index d98fdef..29ffc5c 100644
--- a/force-app/main/default/lwc/lexCancel/lexCancel.js
+++ b/force-app/main/default/lwc/lexCancel/lexCancel.js
@@ -1,3 +1,11 @@
+/*
+ * @Description: 
+ * @version: 
+ * @Author: chen jing wu
+ * @Date: 2023-04-07 09:02:03
+ * @LastEditors: chen jing wu
+ * @LastEditTime: 2023-04-11 09:00:54
+ */
 import { api, wire,LightningElement } from 'lwc';
 import { CurrentPageReference } from "lightning/navigation";
 import { CloseActionScreenEvent } from 'lightning/actions';
@@ -9,7 +17,23 @@
     @api recordId;
     status;
     IsLoading = true;
-   
+    @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);
@@ -18,7 +42,6 @@
         }).then(result => {
             console.log(result);
             if (result != null) {
-                this.IsLoading = false;
                 this.status = result.status;
                 console.log(this.status);
                 this.cancel();
@@ -73,6 +96,7 @@
         }).then(result =>{
             this.showToast("鍙栨秷鎴愬姛锛�","success");
             this.updateRecordView(this.recordId);
+            this.IsLoading = false;
             this.dispatchEvent(new CloseActionScreenEvent());
         });
     }
diff --git a/force-app/main/default/lwc/lexCancelSubmit/lexCancelSubmit.js b/force-app/main/default/lwc/lexCancelSubmit/lexCancelSubmit.js
index c3eb560..f5e217a 100644
--- a/force-app/main/default/lwc/lexCancelSubmit/lexCancelSubmit.js
+++ b/force-app/main/default/lwc/lexCancelSubmit/lexCancelSubmit.js
@@ -1,3 +1,11 @@
+/*
+ * @Description: 
+ * @version: 
+ * @Author: chen jing wu
+ * @Date: 2023-04-07 09:02:03
+ * @LastEditors: chen jing wu
+ * @LastEditTime: 2023-04-11 09:05:05
+ */
 import { LightningElement,wire,track,api} from 'lwc';
 import { CurrentPageReference } from "lightning/navigation";
 import { CloseActionScreenEvent } from 'lightning/actions';
@@ -12,6 +20,24 @@
     ownerId;
     monthlyReportId;
     IsLoading = true;
+
+
+    @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);
         init({
@@ -19,15 +45,10 @@
         }).then(result => {
             console.log(result);
             if (result != null) {
-                this.IsLoading = false;
                 this.ownerId = result.ownerId;
                 this.monthlyReportId = result.Id;
                 this.cancelSubmit();
                 console.log("end");
-                this.dispatchEvent(new CloseActionScreenEvent());
-                this.showToast();
-                this.updateRecordView(this.recordId);
-
                 //window.location.replace("https://ocsm--partial.sandbox.lightning.force.com/lightning/r/Monthly_Report__c/" + this.monthlyReportId + "/view");
             }
         }).catch(error => {
@@ -38,11 +59,11 @@
         });   
     }
 
-    showToast() {
+    showToast(msg,type) {
         const event = new ShowToastEvent({
             title: '',
-            message: '鍙栨秷鎻愪氦鎴愬姛锛�',
-            variant: 'success'
+            message: msg,
+            variant: type
         });
         this.dispatchEvent(event);
     }
@@ -54,10 +75,15 @@
         if(this.ownerId == UserInfo_Owner.Id) {
             cancel({
                 recordId: this.recordId
+            }).then(result=>{
+                this.showToast("鎴愬姛","success");
+                this.updateRecordView(this.recordId);
+                this.dispatchEvent(new CloseActionScreenEvent());
             });
             console.log("321");
             } else {
             this.showToast("鍙湁鍛ㄦ姤鐨勬墍鏈変汉鍙互鍙栨秷","error");
+            this.dispatchEvent(new CloseActionScreenEvent());
             }
     }
 }
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexCancelSubmitReport/lexCancelSubmitReport.css b/force-app/main/default/lwc/lexCancelSubmitReport/lexCancelSubmitReport.css
new file mode 100644
index 0000000..3e04b55
--- /dev/null
+++ b/force-app/main/default/lwc/lexCancelSubmitReport/lexCancelSubmitReport.css
@@ -0,0 +1,10 @@
+.cancelSubmitReportHolder{
+    position: relative;
+    display: inline-block;
+    width: 80px;
+    height: 80px;
+    text-align: center;
+}
+.container .uiContainerManager{
+	display: none !important;
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexCancelSubmitReport/lexCancelSubmitReport.html b/force-app/main/default/lwc/lexCancelSubmitReport/lexCancelSubmitReport.html
new file mode 100644
index 0000000..6b80280
--- /dev/null
+++ b/force-app/main/default/lwc/lexCancelSubmitReport/lexCancelSubmitReport.html
@@ -0,0 +1,6 @@
+<template>
+    <div class="cancelSubmitReportHolder" if:true={IsLoading}>
+        <lightning-spinner alternative-text="Loading" size="medium"></lightning-spinner>
+        <lightning-button label="Show Toast" onclick={ShowToastEvent}></lightning-button>
+    </div>
+</template>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexCancelSubmitReport/lexCancelSubmitReport.js b/force-app/main/default/lwc/lexCancelSubmitReport/lexCancelSubmitReport.js
new file mode 100644
index 0000000..00557d0
--- /dev/null
+++ b/force-app/main/default/lwc/lexCancelSubmitReport/lexCancelSubmitReport.js
@@ -0,0 +1,66 @@
+/*
+ * @Description: 
+ * @version: 
+ * @Author: chen jing wu
+ * @Date: 2023-04-07 09:02:03
+ * @LastEditors: chen jing wu
+ * @LastEditTime: 2023-04-11 09:06:00
+ */
+import { LightningElement,wire,track,api} from 'lwc';
+import { CurrentPageReference } from "lightning/navigation";
+import { CloseActionScreenEvent } from 'lightning/actions';
+import cancel  from '@salesforce/apex/ReportController.updateForCancelSubmitReportButton';
+import { updateRecord } from 'lightning/uiRecordApi';
+import { ShowToastEvent } from 'lightning/platformShowToastEvent';
+export default class LexCancelSubmitReport extends LightningElement {
+    @api recordId;
+    IsLoading = true;
+    @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);
+        this.cancelSubmit();
+    }
+
+
+    cancelSubmit(){
+        cancel({
+            recordId: this.recordId
+        }).then(result =>{
+            this.showToast("鍙栨秷鎻愪氦鎴愬姛锛�","success");
+            this.updateRecordView(this.recordId);
+            this.IsLoading = false;
+            this.dispatchEvent(new CloseActionScreenEvent());
+        }).catch(error=>{
+            this.showToast(error,"error");
+        });
+    }
+
+    updateRecordView(recordId) {
+        updateRecord({fields: { Id: recordId }});
+    }
+
+
+    showToast(msg,type) {
+        const event = new ShowToastEvent({
+            title: '',
+            message: msg,
+            variant: type
+        });
+        this.dispatchEvent(event);
+    }
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexCancelSubmitReport/lexCancelSubmitReport.js-meta.xml b/force-app/main/default/lwc/lexCancelSubmitReport/lexCancelSubmitReport.js-meta.xml
new file mode 100644
index 0000000..329e839
--- /dev/null
+++ b/force-app/main/default/lwc/lexCancelSubmitReport/lexCancelSubmitReport.js-meta.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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
diff --git a/force-app/main/default/lwc/lexComplete/lexComplete.js b/force-app/main/default/lwc/lexComplete/lexComplete.js
index 89131c9..27029f0 100644
--- a/force-app/main/default/lwc/lexComplete/lexComplete.js
+++ b/force-app/main/default/lwc/lexComplete/lexComplete.js
@@ -1,3 +1,11 @@
+/*
+ * @Description: 
+ * @version: 
+ * @Author: chen jing wu
+ * @Date: 2023-04-07 09:02:03
+ * @LastEditors: chen jing wu
+ * @LastEditTime: 2023-04-11 09:06:48
+ */
 import { LightningElement,wire,track,api} from 'lwc';
 import { CurrentPageReference } from "lightning/navigation";
 import { CloseActionScreenEvent } from 'lightning/actions';
@@ -11,6 +19,22 @@
     profileId;
     status;
     IsLoading = true;
+
+    @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);
@@ -19,7 +43,6 @@
         }).then(result => {
             console.log(result);
             if (result != null) {
-                this.IsLoading = false;
                 this.status = result.status;
                 this.profileId = result.profileId;
                 this.complete();
@@ -63,6 +86,7 @@
         updateForCompleteButton({
             recordId: this.recordId
         }).then(result =>{
+            this.IsLoading = false;
             this.updateRecordView(this.recordId);
             this.showToast("瀹屾瘯鎴愬姛锛�","success");
         });
diff --git a/force-app/main/default/lwc/lexCopyPIInspectionReport/__tests__/lexCopyPIInspectionReport.test.js b/force-app/main/default/lwc/lexCopyPIInspectionReport/__tests__/lexCopyPIInspectionReport.test.js
new file mode 100644
index 0000000..e21bfdf
--- /dev/null
+++ b/force-app/main/default/lwc/lexCopyPIInspectionReport/__tests__/lexCopyPIInspectionReport.test.js
@@ -0,0 +1,25 @@
+import { createElement } from 'lwc';
+import LexCopyPIInspectionReport from 'c/lexCopyPIInspectionReport';
+
+describe('c-lex-copy-pi-inspection-report', () => {
+    afterEach(() => {
+        // The jsdom instance is shared across test cases in a single file so reset the DOM
+        while (document.body.firstChild) {
+            document.body.removeChild(document.body.firstChild);
+        }
+    });
+
+    it('TODO: test case generated by CLI command, please fill in test logic', () => {
+        // Arrange
+        const element = createElement('c-lex-copy-pi-inspection-report', {
+            is: LexCopyPIInspectionReport
+        });
+
+        // Act
+        document.body.appendChild(element);
+
+        // Assert
+        // const div = element.shadowRoot.querySelector('div');
+        expect(1).toBe(1);
+    });
+});
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexCopyPIInspectionReport/lexCopyPIInspectionReport.js b/force-app/main/default/lwc/lexCopyPIInspectionReport/lexCopyPIInspectionReport.js
index afc128d..44d87fb 100644
--- a/force-app/main/default/lwc/lexCopyPIInspectionReport/lexCopyPIInspectionReport.js
+++ b/force-app/main/default/lwc/lexCopyPIInspectionReport/lexCopyPIInspectionReport.js
@@ -50,6 +50,7 @@
         });
     }
 
+    // 澶嶅埗
     CopyPI() {
         window.location.href = '/' + this.Id + '/e?newclone=1';
     }
diff --git a/force-app/main/default/lwc/lexCreateNotesEmail/lexCreateNotesEmail.js b/force-app/main/default/lwc/lexCreateNotesEmail/lexCreateNotesEmail.js
index ff0e10a..3130703 100644
--- a/force-app/main/default/lwc/lexCreateNotesEmail/lexCreateNotesEmail.js
+++ b/force-app/main/default/lwc/lexCreateNotesEmail/lexCreateNotesEmail.js
@@ -1,3 +1,11 @@
+/*
+ * @Description: 
+ * @version: 
+ * @Author: chen jing wu
+ * @Date: 2023-03-27 13:53:40
+ * @LastEditors: chen jing wu
+ * @LastEditTime: 2023-04-10 14:22:27
+ */
 import { api, wire,LightningElement } from 'lwc';
 import { CurrentPageReference } from "lightning/navigation";
 import { CloseActionScreenEvent } from 'lightning/actions';
@@ -17,6 +25,22 @@
     drSumUrl;
     IsLoading = true;
     url;
+
+    @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;
+          }
+        }
+    }
 
 
 
@@ -69,6 +93,5 @@
         +"%0D%0A" + "杩炴帴锛�" 
         + this.drSumUrl
         +"%0D%0A").substring(0,320).split("<br>").join("%0D%0A");
-
     }
 }
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexCreateReportMaintenanceContract/__tests__/lexCreateReportMaintenanceContract.test.js b/force-app/main/default/lwc/lexCreateReportMaintenanceContract/__tests__/lexCreateReportMaintenanceContract.test.js
new file mode 100644
index 0000000..c75ef3d
--- /dev/null
+++ b/force-app/main/default/lwc/lexCreateReportMaintenanceContract/__tests__/lexCreateReportMaintenanceContract.test.js
@@ -0,0 +1,25 @@
+import { createElement } from 'lwc';
+import LexCreateReportMaintenanceContract from 'c/lexCreateReportMaintenanceContract';
+
+describe('c-lex-create-report-maintenance-contract', () => {
+    afterEach(() => {
+        // The jsdom instance is shared across test cases in a single file so reset the DOM
+        while (document.body.firstChild) {
+            document.body.removeChild(document.body.firstChild);
+        }
+    });
+
+    it('TODO: test case generated by CLI command, please fill in test logic', () => {
+        // Arrange
+        const element = createElement('c-lex-create-report-maintenance-contract', {
+            is: LexCreateReportMaintenanceContract
+        });
+
+        // Act
+        document.body.appendChild(element);
+
+        // Assert
+        // const div = element.shadowRoot.querySelector('div');
+        expect(1).toBe(1);
+    });
+});
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexCreateReportMaintenanceContract/lexCreateReportMaintenanceContract.js b/force-app/main/default/lwc/lexCreateReportMaintenanceContract/lexCreateReportMaintenanceContract.js
index 9c7fadd..04d05e5 100644
--- a/force-app/main/default/lwc/lexCreateReportMaintenanceContract/lexCreateReportMaintenanceContract.js
+++ b/force-app/main/default/lwc/lexCreateReportMaintenanceContract/lexCreateReportMaintenanceContract.js
@@ -52,6 +52,7 @@
         });
     }
 
+    // 鍒朵綔鎶ュ憡涔�
     CreateReport() {
         var MaintenanceContractId = this.Id;
         var RecordTypeName = this.RecordTypeDeveloperNameC;
diff --git a/force-app/main/default/lwc/lexCustomNewCopy2/__tests__/lexCustomNewCopy2.test.js b/force-app/main/default/lwc/lexCustomNewCopy2/__tests__/lexCustomNewCopy2.test.js
new file mode 100644
index 0000000..b377bae
--- /dev/null
+++ b/force-app/main/default/lwc/lexCustomNewCopy2/__tests__/lexCustomNewCopy2.test.js
@@ -0,0 +1,25 @@
+import { createElement } from 'lwc';
+import LexCustomNewCopy2 from 'c/lexCustomNewCopy2';
+
+describe('c-lex-custom-new-copy2', () => {
+    afterEach(() => {
+        // The jsdom instance is shared across test cases in a single file so reset the DOM
+        while (document.body.firstChild) {
+            document.body.removeChild(document.body.firstChild);
+        }
+    });
+
+    it('TODO: test case generated by CLI command, please fill in test logic', () => {
+        // Arrange
+        const element = createElement('c-lex-custom-new-copy2', {
+            is: LexCustomNewCopy2
+        });
+
+        // Act
+        document.body.appendChild(element);
+
+        // Assert
+        // const div = element.shadowRoot.querySelector('div');
+        expect(1).toBe(1);
+    });
+});
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexCustomNewCopy2/lexCustomNewCopy2.html b/force-app/main/default/lwc/lexCustomNewCopy2/lexCustomNewCopy2.html
new file mode 100644
index 0000000..87f391a
--- /dev/null
+++ b/force-app/main/default/lwc/lexCustomNewCopy2/lexCustomNewCopy2.html
@@ -0,0 +1,6 @@
+<template>
+    <div class="exampleHolder" if:true={IsLoading}>
+        <lightning-spinner alternative-text="Loading" size="medium"></lightning-spinner>
+        <lightning-button label="Show Toast" onclick={ShowToastEvent}></lightning-button>
+    </div>
+</template>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexCustomNewCopy2/lexCustomNewCopy2.js b/force-app/main/default/lwc/lexCustomNewCopy2/lexCustomNewCopy2.js
new file mode 100644
index 0000000..2daf585
--- /dev/null
+++ b/force-app/main/default/lwc/lexCustomNewCopy2/lexCustomNewCopy2.js
@@ -0,0 +1,77 @@
+import {
+    LightningElement,
+    wire,
+    api
+} from 'lwc';
+import {
+    CurrentPageReference
+} from "lightning/navigation";
+import {
+    CloseActionScreenEvent
+} from 'lightning/actions';
+import init from '@salesforce/apex/otherButtonMaintenanceContractCtl.init';
+import {
+    ShowToastEvent
+} from 'lightning/platformShowToastEvent';
+
+export default class LexCustomNewCopy2 extends LightningElement {
+    @api recordId;
+    str;
+    IsLoading = true;
+    Id;
+    notRenewC;
+    Name;
+
+    @wire(CurrentPageReference)
+    getStateParameters(currentPageReference) {
+        if (currentPageReference) {
+            const urlValue = currentPageReference.state.recordId;
+            if (urlValue) {
+                let str = `${urlValue}`;
+                this.recordId = str;
+            }
+        }
+    }
+
+    connectedCallback() {
+        console.log(this.recordId);
+        init({
+            recordId: this.recordId
+        }).then(result => {
+            console.log(result);
+            if (result != null) {
+                this.IsLoading = false;
+                this.Id = result.Id;
+                this.notRenewC = result.notRenewC;
+                this.Name = result.Name;
+
+                this.CustomNewCopy2();
+                this.dispatchEvent(new CloseActionScreenEvent());
+            }
+        }).catch(error => {
+            console.log(error);
+        }).finally(() => {
+
+        });
+    }
+
+    // 缁х画鏂版湇鍔″悎鍚�
+    CustomNewCopy2() {
+        if (this.notRenewC) {
+            this.ShowToastEvent("璇疯仈绯绘湇鍔″晢鍝侀儴锛�", "error");
+            // alert("璇疯仈绯绘湇鍔″晢鍝侀儴锛�");
+        } else {
+            window.open("/" + this.Id + "/e?clone=1&Name=&00N10000002Dx5D=&00N10000002Dx5S=%e5%bc%95%e5%90%88%e4%b8%ad&00NO00000010sDc=&CF00NO00000010hyI=&CF00NO00000010hyI_lkid=&CF00NO00000010hyX=&CF00NO00000010hyX_lkid=&CF00NO00000010hyN=&CF00NO00000010hyN_lkid=&RecordType=01210000000gTYq&00N10000002pmOp=&00N10000006gZDd=&00N10000006gZDe=&00NO00000010hy4=&00N10000002Dx4j=&00N10000002Dx4m=&00N10000002Dx4w=&00N10000002Dx4k=&00N10000002Dx5J=&00N10000002Dx5M=&00N10000002Dx4i=&00N10000002Dx4h=&00N10000002Dx5K=&00N10000003OXdT=&00N100000048zfn=&00N10000002FMsq=&00N10000003OlGF=&00N10000002Dx4r=&00N100000047AY1=&00N100000047AYB=&00N100000047AY6=&00N10000003PCeB=&00N10000005HBNe=&00N10000006plAl=&00N10000002Dx5C=&retURL=%2F" + this.Id + "&saveURL=%2Fapex/SaveMaintenanceByCopy?mid=" + this.Id + "&CF00N100000048Paw=" + this.Name + "&CF00N100000048Paw_lkid=" + this.Id, "_blank");
+        }
+    }
+
+    // 寮圭獥
+    ShowToastEvent(msg, type) {
+        const event = new ShowToastEvent({
+            title: '',
+            message: msg,
+            variant: type
+        });
+        this.dispatchEvent(event);
+    }
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexCustomNewCopy2/lexCustomNewCopy2.js-meta.xml b/force-app/main/default/lwc/lexCustomNewCopy2/lexCustomNewCopy2.js-meta.xml
new file mode 100644
index 0000000..3392981
--- /dev/null
+++ b/force-app/main/default/lwc/lexCustomNewCopy2/lexCustomNewCopy2.js-meta.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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
diff --git a/force-app/main/default/lwc/lexDispatchOCSMQARA/lexDispatchOCSMQARA.js b/force-app/main/default/lwc/lexDispatchOCSMQARA/lexDispatchOCSMQARA.js
index 62dbcda..09c3a26 100644
--- a/force-app/main/default/lwc/lexDispatchOCSMQARA/lexDispatchOCSMQARA.js
+++ b/force-app/main/default/lwc/lexDispatchOCSMQARA/lexDispatchOCSMQARA.js
@@ -1,3 +1,11 @@
+/*
+ * @Description: 
+ * @version: 
+ * @Author: chen jing wu
+ * @Date: 2023-04-07 09:02:03
+ * @LastEditors: chen jing wu
+ * @LastEditTime: 2023-04-11 09:07:34
+ */
 import { api, wire,LightningElement } from 'lwc';
 import { CurrentPageReference } from "lightning/navigation";
 import { CloseActionScreenEvent } from 'lightning/actions';
@@ -10,9 +18,24 @@
     
 
 
+    @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);
-        this.IsLoading = false;
         this.DispatchOCSMQARA();
 
     }
@@ -37,6 +60,7 @@
             }).then(result =>{
                 this.showToast("鎴愬姛","success");
                 this.updateRecordView(this.recordId);
+                this.IsLoading = false;
                 this.dispatchEvent(new CloseActionScreenEvent());
                 });
     }
diff --git a/force-app/main/default/lwc/lexInsPageBtn/__tests__/lexInsPageBtn.test.js b/force-app/main/default/lwc/lexInsPageBtn/__tests__/lexInsPageBtn.test.js
new file mode 100644
index 0000000..bb52449
--- /dev/null
+++ b/force-app/main/default/lwc/lexInsPageBtn/__tests__/lexInsPageBtn.test.js
@@ -0,0 +1,25 @@
+import { createElement } from 'lwc';
+import LexInsPageBtn from 'c/lexInsPageBtn';
+
+describe('c-lex-ins-page-btn', () => {
+    afterEach(() => {
+        // The jsdom instance is shared across test cases in a single file so reset the DOM
+        while (document.body.firstChild) {
+            document.body.removeChild(document.body.firstChild);
+        }
+    });
+
+    it('TODO: test case generated by CLI command, please fill in test logic', () => {
+        // Arrange
+        const element = createElement('c-lex-ins-page-btn', {
+            is: LexInsPageBtn
+        });
+
+        // Act
+        document.body.appendChild(element);
+
+        // Assert
+        // const div = element.shadowRoot.querySelector('div');
+        expect(1).toBe(1);
+    });
+});
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexInsPageBtn/lexInsPageBtn.js b/force-app/main/default/lwc/lexInsPageBtn/lexInsPageBtn.js
index 38e1d2b..e0c1dbd 100644
--- a/force-app/main/default/lwc/lexInsPageBtn/lexInsPageBtn.js
+++ b/force-app/main/default/lwc/lexInsPageBtn/lexInsPageBtn.js
@@ -49,6 +49,7 @@
         });
     }
 
+    // 鎶ュ憡涔︽槑缁嗙紪杈�
     insPageBtn() {
         var url;
         if (this.RecordTypeId == '01210000000aLii') {
diff --git a/force-app/main/default/lwc/lexMailMessege/__tests__/lexMailMessege.test.js b/force-app/main/default/lwc/lexMailMessege/__tests__/lexMailMessege.test.js
new file mode 100644
index 0000000..a01145a
--- /dev/null
+++ b/force-app/main/default/lwc/lexMailMessege/__tests__/lexMailMessege.test.js
@@ -0,0 +1,25 @@
+import { createElement } from 'lwc';
+import LexMailMessege from 'c/lexMailMessege';
+
+describe('c-lex-mail-messege', () => {
+    afterEach(() => {
+        // The jsdom instance is shared across test cases in a single file so reset the DOM
+        while (document.body.firstChild) {
+            document.body.removeChild(document.body.firstChild);
+        }
+    });
+
+    it('TODO: test case generated by CLI command, please fill in test logic', () => {
+        // Arrange
+        const element = createElement('c-lex-mail-messege', {
+            is: LexMailMessege
+        });
+
+        // Act
+        document.body.appendChild(element);
+
+        // Assert
+        // const div = element.shadowRoot.querySelector('div');
+        expect(1).toBe(1);
+    });
+});
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexMailMessege/lexMailMessege.html b/force-app/main/default/lwc/lexMailMessege/lexMailMessege.html
new file mode 100644
index 0000000..d044dbb
--- /dev/null
+++ b/force-app/main/default/lwc/lexMailMessege/lexMailMessege.html
@@ -0,0 +1,5 @@
+<template>
+    <div class="exampleHolder" if:true={IsLoading}>
+        <lightning-spinner alternative-text="Loading" size="medium"></lightning-spinner>
+    </div>
+</template>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexMailMessege/lexMailMessege.js b/force-app/main/default/lwc/lexMailMessege/lexMailMessege.js
new file mode 100644
index 0000000..cf78f1a
--- /dev/null
+++ b/force-app/main/default/lwc/lexMailMessege/lexMailMessege.js
@@ -0,0 +1,89 @@
+import {
+    LightningElement,
+    wire,
+    api
+} from 'lwc';
+import {
+    CurrentPageReference
+} from "lightning/navigation";
+import {
+    CloseActionScreenEvent
+} from 'lightning/actions';
+import init from '@salesforce/apex/otherButtonRepairController.init';
+export default class LexMailMessege extends LightningElement {
+    @api recordId;
+    str;
+    IsLoading = true;
+    Id;;
+    InchargeStaffEmailC;
+    Name;
+    HPNameC;
+    DeliveredProductC;
+    RepairProductSerialNoC;
+    ServiceRepairNoC;
+    RepairFirstestimatedDateC;
+    RepairEstimatedDateC;
+    RCInformationC;
+    userEmail;
+
+    @wire(CurrentPageReference)
+    getStateParameters(currentPageReference) {
+        if (currentPageReference) {
+            const urlValue = currentPageReference.state.recordId;
+            if (urlValue) {
+                let str = `${urlValue}`;
+                this.recordId = str;
+            }
+        }
+    }
+
+    connectedCallback() {
+        console.log(this.recordId);
+        init({
+            recordId: this.recordId
+        }).then(result => {
+            console.log(result);
+            if (result != null) {
+                this.IsLoading = false;
+                this.Id = result.Id;
+                this.InchargeStaffEmailC = result.InchargeStaffEmailC;
+                this.Name = result.Name;
+                this.HPNameC = result.HPNameC;
+                this.DeliveredProductC = result.DeliveredProductC;
+                this.RepairProductSerialNoC = result.RepairProductSerialNoC;
+                this.ServiceRepairNoC = result.ServiceRepairNoC;
+                this.RepairFirstestimatedDateC = result.RepairFirstestimatedDateC;
+                this.RepairEstimatedDateC = result.RepairEstimatedDateC;
+                this.RCInformationC = result.RCInformationC;
+                this.userEmail = result.userEmail;
+
+                this.mailMessege();
+                this.dispatchEvent(new CloseActionScreenEvent());
+            }
+        }).catch(error => {
+            console.log(error);
+        }).finally(() => {
+
+        });
+    }
+
+    // 鎶ヤ环闄勪欢鏇存柊鐨勯偖浠堕�氱煡
+    mailMessege() {
+        var Link = "https://ocsm--partial.sandbox.my.salesforce.com/" + this.Id;
+        console.log(Link);
+
+        location.href = 'mailto:' + this.InchargeStaffEmailC +
+            '?bcc=' + this.userEmail +
+            '&subject=銆愭姤浠烽檮浠舵洿鏂伴�氱煡:' + this.Name + '銆�' + this.HPNameC + this.DeliveredProductC + this.RepairProductSerialNoC + this.ServiceRepairNoC +
+            '&body=鍏堢敓/濂冲+%0D%0A' +
+            '%0D%0A' +
+            '鍏充簬涓婚鐨勪慨鐞嗭紝淇悊鎶ヤ环鐨勯檮浠舵洿鏂板ソ浜�%0D%0A' +
+            '璇风‘璁ゅ苟璺熻繘涓�涓�%0D%0A' +
+            '%0D%0A' +
+            '鍒濇鎶ヤ环鏃ワ細' + this.RepairFirstestimatedDateC + '%0D%0A' +
+            '姝ゆ鎶ヤ环鏃ワ細' + this.RepairEstimatedDateC + '%0D%0A' +
+            '%0D%0A' +
+            'RC鑱旂粶浜嬮」锛�' + this.RCInformationC + '%0D%0A' +
+            '%0D%0A' + Link + '';
+    }
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexMailMessege/lexMailMessege.js-meta.xml b/force-app/main/default/lwc/lexMailMessege/lexMailMessege.js-meta.xml
new file mode 100644
index 0000000..3392981
--- /dev/null
+++ b/force-app/main/default/lwc/lexMailMessege/lexMailMessege.js-meta.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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
diff --git a/force-app/main/default/lwc/lexOCMSubmit/lexOCMSubmit.js b/force-app/main/default/lwc/lexOCMSubmit/lexOCMSubmit.js
index d6c2e68..814dd7b 100644
--- a/force-app/main/default/lwc/lexOCMSubmit/lexOCMSubmit.js
+++ b/force-app/main/default/lwc/lexOCMSubmit/lexOCMSubmit.js
@@ -16,6 +16,7 @@
 	qisStatus;
 	contractnumber;
 	isaohuiproduct;
+    err;
 	@wire(CurrentPageReference)
      getStateParameters(currentPageReference) {
              console.log(111);
@@ -38,12 +39,10 @@
         }).then(result => {
             this.IsLoading = false;
             this.qisReportId = result.Id;
-            this.qisStatus = result.QIStatus;
-            this.QISInstallDate = result.QISInstallDate;
+            this.qisStatus = result.qIStatus;
+            this.QISInstallDate = result.qISInstallDate;
             this.contractnumber = result.contractnumber;
             this.isaohuiproduct = result.isaohuiproduct;
-            console.log('this.qisStatus='+this.qisStatus);
-            console.log('this.isaohuiproduct='+this.isaohuiproduct);
          	if (this.qisStatus!='鑽夋涓�' && this.qisStatus!='鍙栨秷') {
          		const evt = new ShowToastEvent({
                         title : '宸茬粡鎻愪氦',
@@ -116,9 +115,10 @@
         		}).then(result =>{
         			console.log('result'+result);
         			if (result!='鎴愬姛') {
+                        this.err = result;
         				const evt = new ShowToastEvent({
 	                        title : '鏇存柊澶辫触',
-	                        message: result,
+	                        message: this.err,
 	                        variant: 'error'
                     	});
                     	this.dispatchEvent(evt);
diff --git a/force-app/main/default/lwc/lexOCSMNoToReportForReport/lexOCSMNoToReportForReport.js b/force-app/main/default/lwc/lexOCSMNoToReportForReport/lexOCSMNoToReportForReport.js
index 0680b20..6b44bc5 100644
--- a/force-app/main/default/lwc/lexOCSMNoToReportForReport/lexOCSMNoToReportForReport.js
+++ b/force-app/main/default/lwc/lexOCSMNoToReportForReport/lexOCSMNoToReportForReport.js
@@ -1,3 +1,11 @@
+/*
+ * @Description: 
+ * @version: 
+ * @Author: chen jing wu
+ * @Date: 2023-03-28 15:59:44
+ * @LastEditors: chen jing wu
+ * @LastEditTime: 2023-04-11 09:08:30
+ */
 import { api, wire,LightningElement } from 'lwc';
 import { CurrentPageReference } from "lightning/navigation";
 import { CloseActionScreenEvent } from 'lightning/actions';
@@ -12,17 +20,37 @@
     OCSMAdministrativeReportDate;
     AwareDate;
 
+    @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("123");
         init({
             recordId: this.recordId
         }).then(result=>{
+            console.log(result);
             this.OCSMAdministrativeReportDate = result.OCSMAdministrativeReportDate;
             this.OCSMAdministrativeReportNumber = result.OCSMAdministrativeReportNumber;
             this.AwareDate = result.awareDate;
             this.noToReport();
+        }).catch(error=>{
+            console.log(error);
         });
     }
 
@@ -56,6 +84,7 @@
            }).then(result=>{
                 this.showToast("OCSM涓嶈鎶ュ憡鎴愬姛","success");
                 this.updateRecordView(this.recordId);
+                this.IsLoading = false;
                 this.dispatchEvent(new CloseActionScreenEvent());
            });
         }else{
diff --git a/force-app/main/default/lwc/lexOCSMNoToReportRepair/__tests__/lexOCSMNoToReportRepair.test.js b/force-app/main/default/lwc/lexOCSMNoToReportRepair/__tests__/lexOCSMNoToReportRepair.test.js
new file mode 100644
index 0000000..511b2f0
--- /dev/null
+++ b/force-app/main/default/lwc/lexOCSMNoToReportRepair/__tests__/lexOCSMNoToReportRepair.test.js
@@ -0,0 +1,25 @@
+import { createElement } from 'lwc';
+import LexOCSMNoToReportRepair from 'c/lexOCSMNoToReportRepair';
+
+describe('c-lex-ocsm-no-to-report-repair', () => {
+    afterEach(() => {
+        // The jsdom instance is shared across test cases in a single file so reset the DOM
+        while (document.body.firstChild) {
+            document.body.removeChild(document.body.firstChild);
+        }
+    });
+
+    it('TODO: test case generated by CLI command, please fill in test logic', () => {
+        // Arrange
+        const element = createElement('c-lex-ocsm-no-to-report-repair', {
+            is: LexOCSMNoToReportRepair
+        });
+
+        // Act
+        document.body.appendChild(element);
+
+        // Assert
+        // const div = element.shadowRoot.querySelector('div');
+        expect(1).toBe(1);
+    });
+});
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexOCSMNoToReportRepair/lexOCSMNoToReportRepair.html b/force-app/main/default/lwc/lexOCSMNoToReportRepair/lexOCSMNoToReportRepair.html
new file mode 100644
index 0000000..87f391a
--- /dev/null
+++ b/force-app/main/default/lwc/lexOCSMNoToReportRepair/lexOCSMNoToReportRepair.html
@@ -0,0 +1,6 @@
+<template>
+    <div class="exampleHolder" if:true={IsLoading}>
+        <lightning-spinner alternative-text="Loading" size="medium"></lightning-spinner>
+        <lightning-button label="Show Toast" onclick={ShowToastEvent}></lightning-button>
+    </div>
+</template>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexOCSMNoToReportRepair/lexOCSMNoToReportRepair.js b/force-app/main/default/lwc/lexOCSMNoToReportRepair/lexOCSMNoToReportRepair.js
new file mode 100644
index 0000000..44ef2be
--- /dev/null
+++ b/force-app/main/default/lwc/lexOCSMNoToReportRepair/lexOCSMNoToReportRepair.js
@@ -0,0 +1,102 @@
+import {
+    LightningElement,
+    wire,
+    api
+} from 'lwc';
+import {
+    CurrentPageReference
+} from "lightning/navigation";
+import {
+    CloseActionScreenEvent
+} from 'lightning/actions';
+import init from '@salesforce/apex/otherButtonRepairController.init';
+import updateRepair from '@salesforce/apex/otherButtonRepairController.updateRepair';
+import {
+    ShowToastEvent
+} from 'lightning/platformShowToastEvent';
+
+export default class LexOCSMNoToReportRepair extends LightningElement {
+    @api recordId;
+    str;
+    IsLoading = true;
+    Id;;
+    OCSMAdministrativeReportNumberC;
+    OCSMAdministrativeReportDateC;
+    AwareDateC;
+
+    @wire(CurrentPageReference)
+    getStateParameters(currentPageReference) {
+        if (currentPageReference) {
+            const urlValue = currentPageReference.state.recordId;
+            if (urlValue) {
+                let str = `${urlValue}`;
+                this.recordId = str;
+            }
+        }
+    }
+
+    connectedCallback() {
+        console.log(this.recordId);
+        init({
+            recordId: this.recordId
+        }).then(result => {
+            console.log(result);
+            if (result != null) {
+                this.IsLoading = false;
+                this.Id = result.Id;
+                this.OCSMAdministrativeReportNumberC = result.OCSMAdministrativeReportNumberC;
+                this.OCSMAdministrativeReportDateC = result.OCSMAdministrativeReportDateC;
+                this.AwareDateC = result.AwareDateC;
+
+                this.OCSMNoToReport();
+                this.dispatchEvent(new CloseActionScreenEvent());
+            }
+        }).catch(error => {
+            console.log(error);
+        }).finally(() => {
+
+        });
+    }
+
+    // OCSM涓嶈鎶ュ憡
+    OCSMNoToReport() {
+        if (!confirm("涓嶈鎶ュ憡鍚庢棤娉曟挙鍥烇紝鏄惁缁х画锛�")) {
+            return;
+        }
+
+        if (this.OCSMAdministrativeReportNumberC != undefined ||
+            this.OCSMAdministrativeReportDateC != undefined) {
+            this.ShowToastEvent("宸茬粡鎶ュ憡鐨凲IS锛屼笉鍙互鐐瑰嚮OCSM涓嶈鎶ュ憡銆�", "error")
+            // alert("宸茬粡鎶ュ憡鐨凲IS锛屼笉鍙互鐐瑰嚮OCSM涓嶈鎶ュ憡銆�");
+            return;
+        }
+
+        if (this.AwareDateC != undefined) {
+            updateRepair({
+                recordId: this.Id
+            }).catch(error => {
+                if (error.body.pageErrors.length > 0) {
+                    var errmsg = error.body.pageErrors[0].message.toString();
+                    this.ShowToastEvent(errmsg.join("\n"), "error")
+                    // alert(errmsg.join("\n"));
+                    return;
+                }
+            })
+            window.location.reload();
+        } else {
+            this.ShowToastEvent("娌℃湁AwareDate鎴栧凡缁廜CSM琛屾斂鎶ュ憡锛岃纭銆�", "error")
+            // alert("娌℃湁AwareDate鎴栧凡缁廜CSM琛屾斂鎶ュ憡锛岃纭銆�");
+            return;
+        }
+    }
+
+    // 寮圭獥
+    ShowToastEvent(msg, type) {
+        const event = new ShowToastEvent({
+            title: '',
+            message: msg,
+            variant: type
+        });
+        this.dispatchEvent(event);
+    }
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexOCSMNoToReportRepair/lexOCSMNoToReportRepair.js-meta.xml b/force-app/main/default/lwc/lexOCSMNoToReportRepair/lexOCSMNoToReportRepair.js-meta.xml
new file mode 100644
index 0000000..3392981
--- /dev/null
+++ b/force-app/main/default/lwc/lexOCSMNoToReportRepair/lexOCSMNoToReportRepair.js-meta.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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
diff --git a/force-app/main/default/lwc/lexOCSMToReport/lexOCSMToReport.js b/force-app/main/default/lwc/lexOCSMToReport/lexOCSMToReport.js
index 916ab25..fab2fbb 100644
--- a/force-app/main/default/lwc/lexOCSMToReport/lexOCSMToReport.js
+++ b/force-app/main/default/lwc/lexOCSMToReport/lexOCSMToReport.js
@@ -1,3 +1,11 @@
+/*
+ * @Description: 
+ * @version: 
+ * @Author: chen jing wu
+ * @Date: 2023-04-07 09:02:03
+ * @LastEditors: chen jing wu
+ * @LastEditTime: 2023-04-11 09:09:14
+ */
 import { api, wire,LightningElement } from 'lwc';
 import { CurrentPageReference } from "lightning/navigation";
 import { CloseActionScreenEvent } from 'lightning/actions';
@@ -12,6 +20,21 @@
     awareDate;
 
 
+    @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);
@@ -20,7 +43,6 @@
         }).then(result => {
             console.log(result);
             if (result != null) {
-                this.IsLoading = false;
                 this.OCSMAdministrativeReportStatus = result.OCSMAdministrativeReportStatus;
                 this.awareDate = result.awareDate;
                 this.toReport();
@@ -61,6 +83,7 @@
             }).then(result =>{
                 this.showToast("鎴愬姛","success");
                 this.updateRecordView(this.recordId);
+                this.IsLoading = false;
                 this.dispatchEvent(new CloseActionScreenEvent());
                 });
         }else{
diff --git a/force-app/main/default/lwc/lexOCSMToReportRepair/__tests__/lexOCSMToReportRepair.test.js b/force-app/main/default/lwc/lexOCSMToReportRepair/__tests__/lexOCSMToReportRepair.test.js
new file mode 100644
index 0000000..96ed586
--- /dev/null
+++ b/force-app/main/default/lwc/lexOCSMToReportRepair/__tests__/lexOCSMToReportRepair.test.js
@@ -0,0 +1,25 @@
+import { createElement } from 'lwc';
+import LexOCSMToReportRepair from 'c/lexOCSMToReportRepair';
+
+describe('c-lex-ocsm-to-report-repair', () => {
+    afterEach(() => {
+        // The jsdom instance is shared across test cases in a single file so reset the DOM
+        while (document.body.firstChild) {
+            document.body.removeChild(document.body.firstChild);
+        }
+    });
+
+    it('TODO: test case generated by CLI command, please fill in test logic', () => {
+        // Arrange
+        const element = createElement('c-lex-ocsm-to-report-repair', {
+            is: LexOCSMToReportRepair
+        });
+
+        // Act
+        document.body.appendChild(element);
+
+        // Assert
+        // const div = element.shadowRoot.querySelector('div');
+        expect(1).toBe(1);
+    });
+});
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexOCSMToReportRepair/lexOCSMToReportRepair.html b/force-app/main/default/lwc/lexOCSMToReportRepair/lexOCSMToReportRepair.html
new file mode 100644
index 0000000..87f391a
--- /dev/null
+++ b/force-app/main/default/lwc/lexOCSMToReportRepair/lexOCSMToReportRepair.html
@@ -0,0 +1,6 @@
+<template>
+    <div class="exampleHolder" if:true={IsLoading}>
+        <lightning-spinner alternative-text="Loading" size="medium"></lightning-spinner>
+        <lightning-button label="Show Toast" onclick={ShowToastEvent}></lightning-button>
+    </div>
+</template>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexOCSMToReportRepair/lexOCSMToReportRepair.js b/force-app/main/default/lwc/lexOCSMToReportRepair/lexOCSMToReportRepair.js
new file mode 100644
index 0000000..40ebdc3
--- /dev/null
+++ b/force-app/main/default/lwc/lexOCSMToReportRepair/lexOCSMToReportRepair.js
@@ -0,0 +1,92 @@
+import {
+    LightningElement,
+    wire,
+    api
+} from 'lwc';
+import {
+    CurrentPageReference
+} from "lightning/navigation";
+import {
+    CloseActionScreenEvent
+} from 'lightning/actions';
+import init from '@salesforce/apex/otherButtonRepairController.init';
+import updateRepair from '@salesforce/apex/otherButtonRepairController.updateRepair';
+import {
+    ShowToastEvent
+} from 'lightning/platformShowToastEvent';
+
+
+export default class LexOCSMToReportRepair extends LightningElement {
+    @api recordId;
+    str;
+    IsLoading = true;
+    Id;
+    AwareDateC;
+    OCSMAdministrativeReportStatusC;
+
+    @wire(CurrentPageReference)
+    getStateParameters(currentPageReference) {
+        if (currentPageReference) {
+            const urlValue = currentPageReference.state.recordId;
+            if (urlValue) {
+                let str = `${urlValue}`;
+                this.recordId = str;
+            }
+        }
+    }
+
+    connectedCallback() {
+        console.log(this.recordId);
+        init({
+            recordId: this.recordId
+        }).then(result => {
+            console.log(result);
+            if (result != null) {
+                this.IsLoading = false;
+                this.Id = result.Id;
+                this.AwareDateC = result.AwareDateC;
+                this.OCSMAdministrativeReportStatusC = result.OCSMAdministrativeReportStatusC;
+                
+                this.OCSMToReport();
+                this.dispatchEvent(new CloseActionScreenEvent());
+            }
+        }).catch(error => {
+            console.log(error);
+        }).finally(() => {
+
+        });
+    }
+
+    // OCSM瑕佹姤鍛�
+    OCSMToReport() {
+        if (!confirm("鎶ュ憡鍚庢棤娉曟挙鍥烇紝鏄惁缁х画锛�")) {
+            return;
+        }
+        if (this.OCSMAdministrativeReportStatusC == undefined && this.AwareDateC != undefined) {
+            updateRepair({
+                recordId: this.Id
+            }).catch(error => {
+                if (error.body.pageErrors.length > 0) {
+                    // alert(messages.join("\n"));
+                    var errmsg = error.body.pageErrors[0].message.toString();
+                    this.ShowToastEvent(errmsg.join("\n"), "error")
+                    return;
+                }
+            })
+            window.location.reload();
+        } else {
+            this.ShowToastEvent("娌℃湁AwareDate鎴栧凡缁廜CSM琛屾斂鎶ュ憡锛岃纭銆�", "error")
+            return;
+        }
+    }
+
+    // 寮圭獥
+    ShowToastEvent(msg, type) {
+        const event = new ShowToastEvent({
+            title: '',
+            message: msg,
+            variant: type
+        });
+        this.dispatchEvent(event);
+    }
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexOCSMToReportRepair/lexOCSMToReportRepair.js-meta.xml b/force-app/main/default/lwc/lexOCSMToReportRepair/lexOCSMToReportRepair.js-meta.xml
new file mode 100644
index 0000000..3392981
--- /dev/null
+++ b/force-app/main/default/lwc/lexOCSMToReportRepair/lexOCSMToReportRepair.js-meta.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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
diff --git a/force-app/main/default/lwc/lexOPDtoSIS/lexOPDtoSIS.js b/force-app/main/default/lwc/lexOPDtoSIS/lexOPDtoSIS.js
index 0052ac3..ef83f36 100644
--- a/force-app/main/default/lwc/lexOPDtoSIS/lexOPDtoSIS.js
+++ b/force-app/main/default/lwc/lexOPDtoSIS/lexOPDtoSIS.js
@@ -1,3 +1,11 @@
+/*
+ * @Description: 
+ * @version: 
+ * @Author: chen jing wu
+ * @Date: 2023-04-07 09:02:03
+ * @LastEditors: chen jing wu
+ * @LastEditTime: 2023-04-11 09:10:06
+ */
 import { api, wire,LightningElement } from 'lwc';
 import { CurrentPageReference } from "lightning/navigation";
 import { CloseActionScreenEvent } from 'lightning/actions';
@@ -14,7 +22,21 @@
     status;
     userId;
 
-  
+    @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(){
@@ -23,13 +45,12 @@
             recordId: this.recordId
         }).then(result => {
             console.log(result);
+            console.log("123");
             if (result != null) {
-                this.IsLoading = false;
                 this.ownerId = result.ownerId;
                 this.status = result.status;
                 this.userId = result.userId;
                 this.OPDtoSIS();
-                this.dispatchEvent(new CloseActionScreenEvent());
             }
         }).catch(error => {
             console.log("error");
@@ -60,11 +81,13 @@
             }).then(result =>{
                 this.updateRecordView(this.recordId);
                 this.showToast("鎴愬姛锛�","success");
+                this.IsLoading = false;
+                this.dispatchEvent(new CloseActionScreenEvent());
                 });
             } else {
                 this.showToast("鍙崏妗堜腑鐘舵�佸強OPD/SIS鎶ュ憡涔︾殑鎵�鏈変汉鍙互鎻愪氦","error");
+                this.dispatchEvent(new CloseActionScreenEvent());
             }
-
         
     }
 }
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexOSHSubmit/lexOSHSubmit.js b/force-app/main/default/lwc/lexOSHSubmit/lexOSHSubmit.js
index 65d0f97..0e82f06 100644
--- a/force-app/main/default/lwc/lexOSHSubmit/lexOSHSubmit.js
+++ b/force-app/main/default/lwc/lexOSHSubmit/lexOSHSubmit.js
@@ -37,9 +37,9 @@
         }).then(result => {
             this.IsLoading = false;
             this.qisReportId = result.Id;
-            this.qisStatus = result.QIStatus;
-            this.OSHstaff = result.OSHstaff;
-            this.OSHstaffEmail = result.OSHstaffEmail;
+            this.qisStatus = result.qIStatus;
+            this.OSHstaff = result.oSHstaff;
+            this.OSHstaffEmail = result.oSHstaffEmail;
             console.log('this.qisStatus='+this.qisStatus);
             console.log('this.OSHstaff='+this.OSHstaff);
             console.log('this.OSHstaffEmail='+this.OSHstaffEmail);
diff --git a/force-app/main/default/lwc/lexPDFMaintenanceCommission/__tests__/lexPDFMaintenanceCommission.test.js b/force-app/main/default/lwc/lexPDFMaintenanceCommission/__tests__/lexPDFMaintenanceCommission.test.js
new file mode 100644
index 0000000..7387e21
--- /dev/null
+++ b/force-app/main/default/lwc/lexPDFMaintenanceCommission/__tests__/lexPDFMaintenanceCommission.test.js
@@ -0,0 +1,25 @@
+import { createElement } from 'lwc';
+import LexPDFMaintenanceCommission from 'c/lexPDFMaintenanceCommission';
+
+describe('c-lex-pdf-maintenance-commission', () => {
+    afterEach(() => {
+        // The jsdom instance is shared across test cases in a single file so reset the DOM
+        while (document.body.firstChild) {
+            document.body.removeChild(document.body.firstChild);
+        }
+    });
+
+    it('TODO: test case generated by CLI command, please fill in test logic', () => {
+        // Arrange
+        const element = createElement('c-lex-pdf-maintenance-commission', {
+            is: LexPDFMaintenanceCommission
+        });
+
+        // Act
+        document.body.appendChild(element);
+
+        // Assert
+        // const div = element.shadowRoot.querySelector('div');
+        expect(1).toBe(1);
+    });
+});
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexPDFMaintenanceCommission/lexPDFMaintenanceCommission.html b/force-app/main/default/lwc/lexPDFMaintenanceCommission/lexPDFMaintenanceCommission.html
new file mode 100644
index 0000000..d044dbb
--- /dev/null
+++ b/force-app/main/default/lwc/lexPDFMaintenanceCommission/lexPDFMaintenanceCommission.html
@@ -0,0 +1,5 @@
+<template>
+    <div class="exampleHolder" if:true={IsLoading}>
+        <lightning-spinner alternative-text="Loading" size="medium"></lightning-spinner>
+    </div>
+</template>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexPDFMaintenanceCommission/lexPDFMaintenanceCommission.js b/force-app/main/default/lwc/lexPDFMaintenanceCommission/lexPDFMaintenanceCommission.js
new file mode 100644
index 0000000..3f5d7bb
--- /dev/null
+++ b/force-app/main/default/lwc/lexPDFMaintenanceCommission/lexPDFMaintenanceCommission.js
@@ -0,0 +1,54 @@
+import {
+    LightningElement,
+    wire,
+    api
+} from 'lwc';
+import {
+    CurrentPageReference
+} from "lightning/navigation";
+import {
+    CloseActionScreenEvent
+} from 'lightning/actions';
+import init from '@salesforce/apex/otherButtonRepairController.init';
+export default class LexPDFMaintenanceCommission extends LightningElement {
+    @api recordId;
+    str;
+    IsLoading = true;
+    Id;;
+
+    @wire(CurrentPageReference)
+    getStateParameters(currentPageReference) {
+        if (currentPageReference) {
+            const urlValue = currentPageReference.state.recordId;
+            if (urlValue) {
+                let str = `${urlValue}`;
+                this.recordId = str;
+            }
+        }
+    }
+
+    connectedCallback() {
+        console.log(this.recordId);
+        init({
+            recordId: this.recordId
+        }).then(result => {
+            console.log(result);
+            if (result != null) {
+                this.IsLoading = false;
+                this.Id = result.Id;
+
+                this.PDFMaintenanceCommission();
+                this.dispatchEvent(new CloseActionScreenEvent());
+            }
+        }).catch(error => {
+            console.log(error);
+        }).finally(() => {
+
+        });
+    }
+
+    // 鎵撳嵃缁翠慨濮旀墭涔�
+    PDFMaintenanceCommission() {
+        window.open('/apex/MaintenanceCommissionPDF?id=' + this.Id, 'MaintenanceCommissionPDF');
+    }
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexPDFMaintenanceCommission/lexPDFMaintenanceCommission.js-meta.xml b/force-app/main/default/lwc/lexPDFMaintenanceCommission/lexPDFMaintenanceCommission.js-meta.xml
new file mode 100644
index 0000000..3392981
--- /dev/null
+++ b/force-app/main/default/lwc/lexPDFMaintenanceCommission/lexPDFMaintenanceCommission.js-meta.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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
diff --git a/force-app/main/default/lwc/lexPreContractSubmit/__tests__/lexPreContractSubmit.test.js b/force-app/main/default/lwc/lexPreContractSubmit/__tests__/lexPreContractSubmit.test.js
new file mode 100644
index 0000000..4fb8447
--- /dev/null
+++ b/force-app/main/default/lwc/lexPreContractSubmit/__tests__/lexPreContractSubmit.test.js
@@ -0,0 +1,25 @@
+import { createElement } from 'lwc';
+import LexPreContractSubmit from 'c/lexPreContractSubmit';
+
+describe('c-lex-pre-contract-submit', () => {
+    afterEach(() => {
+        // The jsdom instance is shared across test cases in a single file so reset the DOM
+        while (document.body.firstChild) {
+            document.body.removeChild(document.body.firstChild);
+        }
+    });
+
+    it('TODO: test case generated by CLI command, please fill in test logic', () => {
+        // Arrange
+        const element = createElement('c-lex-pre-contract-submit', {
+            is: LexPreContractSubmit
+        });
+
+        // Act
+        document.body.appendChild(element);
+
+        // Assert
+        // const div = element.shadowRoot.querySelector('div');
+        expect(1).toBe(1);
+    });
+});
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexPreContractSubmit/lexPreContractSubmit.html b/force-app/main/default/lwc/lexPreContractSubmit/lexPreContractSubmit.html
index d044dbb..87f391a 100644
--- a/force-app/main/default/lwc/lexPreContractSubmit/lexPreContractSubmit.html
+++ b/force-app/main/default/lwc/lexPreContractSubmit/lexPreContractSubmit.html
@@ -1,5 +1,6 @@
 <template>
     <div class="exampleHolder" if:true={IsLoading}>
         <lightning-spinner alternative-text="Loading" size="medium"></lightning-spinner>
+        <lightning-button label="Show Toast" onclick={ShowToastEvent}></lightning-button>
     </div>
 </template>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexPreContractSubmit/lexPreContractSubmit.js b/force-app/main/default/lwc/lexPreContractSubmit/lexPreContractSubmit.js
index ed6e02c..1340680 100644
--- a/force-app/main/default/lwc/lexPreContractSubmit/lexPreContractSubmit.js
+++ b/force-app/main/default/lwc/lexPreContractSubmit/lexPreContractSubmit.js
@@ -11,6 +11,9 @@
 } from 'lightning/actions';
 import init from '@salesforce/apex/otherButtonMaintenanceContractCtl.init';
 import processResults from '@salesforce/apex/otherButtonMaintenanceContractCtl.processResults';
+import {
+    ShowToastEvent
+} from 'lightning/platformShowToastEvent';
 
 export default class LexPreContractSubmit extends LightningElement {
     @api recordId;
@@ -59,31 +62,31 @@
         });
     }
 
+    // 鍚堝悓澶嶆牳
     preContractSubmit() {
-        //update wangweipeng 2022/01/04 start
-        //鍒ゆ柇鏄惁闇�瑕佸厛涓婁紶璁ゆ鍚堝悓鍚楋紝濡傛灉闇�瑕侀偅涔堝垽鏂粬鏄惁宸茬粡涓婁紶锛屽鏋滀笂浼狅紝閭d箞鍒ゆ柇浠栨槸鍚﹀畬鎴愯娆撅紝濡傛灉閮芥弧瓒筹紝閭d箞鎵嶈兘姝e父璧版帴鍙d笂浼燬AP
-        //鍒ゆ柇鏄娆惧悎鍚屽悧
         if (this.oldIsRecognitionModelC) {
-            if (this.uploadToRMTimeC == null) { //鍒ゆ柇鏄惁宸茬粡涓婁紶璁ゆ鍚堝悓
-                alert('褰撳墠缁翠慨鍚堝悓鐨勭粡閿�鍟嗘槸鍏堟瀵硅薄锛岄渶瑕佸厛銆愪笂浼犺娆惧悎鍚屻�戯紝鐒跺悗瀹屾垚璁ゆ浠ュ悗鎵嶈兘澶嶆牳銆�');
+            if (this.uploadToRMTimeC == null) {
+                this.ShowToastEvent('褰撳墠缁翠慨鍚堝悓鐨勭粡閿�鍟嗘槸鍏堟瀵硅薄锛岄渶瑕佸厛銆愪笂浼犺娆惧悎鍚屻�戯紝鐒跺悗瀹屾垚璁ゆ浠ュ悗鎵嶈兘澶嶆牳銆�', "error")
+                // alert('褰撳墠缁翠慨鍚堝悓鐨勭粡閿�鍟嗘槸鍏堟瀵硅薄锛岄渶瑕佸厛銆愪笂浼犺娆惧悎鍚屻�戯紝鐒跺悗瀹屾垚璁ゆ浠ュ悗鎵嶈兘澶嶆牳銆�');
                 return;
             } else {
-                //鍒ゆ柇鏄惁瀹屾垚璁ゆ
                 if (!this.IsRecognitionModelTrueC) {
-                    alert('褰撳墠缁翠慨鍚堝悓娌℃湁瀹屾垚璁ゆ锛屼笉鑳借繘琛屽鏍搞��');
+                    this.ShowToastEvent('褰撳墠缁翠慨鍚堝悓娌℃湁瀹屾垚璁ゆ锛屼笉鑳借繘琛屽鏍搞��', "error")
+                    // alert('褰撳墠缁翠慨鍚堝悓娌℃湁瀹屾垚璁ゆ锛屼笉鑳借繘琛屽鏍搞��');
                     return;
                 }
             }
         }
-        //update wangweipeng 2022/01/04 end
         var status = this.MCApprovalStatusC;
         if (status != 'Draft' && status != 'Reject' && status != undefined) {
-            alert('澶嶆牳宸茬粡鎻愪氦锛岃纭鐘舵�併��');
+            this.ShowToastEvent('澶嶆牳宸茬粡鎻愪氦锛岃纭鐘舵�併��', "success")
+            // alert('澶嶆牳宸茬粡鎻愪氦锛岃纭鐘舵�併��');
             return;
         }
         var con_no = this.ContractprintCompletedC;
         if (con_no == '') {
-            alert('鍚堝悓鐩栫珷瀹屾瘯涓虹┖锛屼笉鑳芥彁浜ゅ悎鍚屽鏍哥敵璇枫��');
+            this.ShowToastEvent('鍚堝悓鐩栫珷瀹屾瘯涓虹┖锛屼笉鑳芥彁浜ゅ悎鍚屽鏍哥敵璇枫��', "error")
+            // alert('鍚堝悓鐩栫珷瀹屾瘯涓虹┖锛屼笉鑳芥彁浜ゅ悎鍚屽鏍哥敵璇枫��');
             return;
         }
         if (!confirm("涓�鏃︽彁浜ゆ璁板綍浠ュ緟鎵瑰噯锛屾牴鎹偍鐨勮缃偍鍙兘涓嶅啀鑳藉缂栬緫姝よ褰曟垨灏嗕粬浠庢壒鍑嗚繃绋嬩腑璋冨洖銆傛槸鍚︾户缁紵")) {
@@ -94,9 +97,20 @@
         }).catch(error => {
             if (error.body.pageErrors[0] != null) {
                 var errmsg = error.body.pageErrors[0].message.toString();
-                alert(errmsg + '_sys');
+                // alert(errmsg + '_sys');
+                this.ShowToastEvent(errmsg + '_sys', "error")
                 return;
             }
         })
     }
+
+    // 寮圭獥
+    ShowToastEvent(msg, type) {
+        const event = new ShowToastEvent({
+            title: '',
+            message: msg,
+            variant: type
+        });
+        this.dispatchEvent(event);
+    }
 }
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexProductRepairQuoteRepair/__tests__/lexProductRepairQuoteRepair.test.js b/force-app/main/default/lwc/lexProductRepairQuoteRepair/__tests__/lexProductRepairQuoteRepair.test.js
new file mode 100644
index 0000000..013ddd6
--- /dev/null
+++ b/force-app/main/default/lwc/lexProductRepairQuoteRepair/__tests__/lexProductRepairQuoteRepair.test.js
@@ -0,0 +1,25 @@
+import { createElement } from 'lwc';
+import LexProductRepairQuoteRepair from 'c/lexProductRepairQuoteRepair';
+
+describe('c-lex-product-repair-quote-repair', () => {
+    afterEach(() => {
+        // The jsdom instance is shared across test cases in a single file so reset the DOM
+        while (document.body.firstChild) {
+            document.body.removeChild(document.body.firstChild);
+        }
+    });
+
+    it('TODO: test case generated by CLI command, please fill in test logic', () => {
+        // Arrange
+        const element = createElement('c-lex-product-repair-quote-repair', {
+            is: LexProductRepairQuoteRepair
+        });
+
+        // Act
+        document.body.appendChild(element);
+
+        // Assert
+        // const div = element.shadowRoot.querySelector('div');
+        expect(1).toBe(1);
+    });
+});
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexProductRepairQuoteRepair/lexProductRepairQuoteRepair.html b/force-app/main/default/lwc/lexProductRepairQuoteRepair/lexProductRepairQuoteRepair.html
new file mode 100644
index 0000000..d044dbb
--- /dev/null
+++ b/force-app/main/default/lwc/lexProductRepairQuoteRepair/lexProductRepairQuoteRepair.html
@@ -0,0 +1,5 @@
+<template>
+    <div class="exampleHolder" if:true={IsLoading}>
+        <lightning-spinner alternative-text="Loading" size="medium"></lightning-spinner>
+    </div>
+</template>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexProductRepairQuoteRepair/lexProductRepairQuoteRepair.js b/force-app/main/default/lwc/lexProductRepairQuoteRepair/lexProductRepairQuoteRepair.js
new file mode 100644
index 0000000..ef8176d
--- /dev/null
+++ b/force-app/main/default/lwc/lexProductRepairQuoteRepair/lexProductRepairQuoteRepair.js
@@ -0,0 +1,67 @@
+import {
+    LightningElement,
+    wire,
+    api
+} from 'lwc';
+import {
+    CurrentPageReference
+} from "lightning/navigation";
+import {
+    CloseActionScreenEvent
+} from 'lightning/actions';
+
+import init from '@salesforce/apex/otherButtonRepairController.init';
+import selectAssetID from '@salesforce/apex/otherButtonRepairController.selectAssetID';
+
+export default class LexProductRepairQuoteRepair extends LightningElement {
+    @api recordId;
+    str;
+    IsLoading = true;
+    Id;
+    RecordTypeId;
+    AssetOwnerC;
+    DeliveredProductC;
+
+    @wire(CurrentPageReference)
+    getStateParameters(currentPageReference) {
+        if (currentPageReference) {
+            const urlValue = currentPageReference.state.recordId;
+            if (urlValue) {
+                let str = `${urlValue}`;
+                this.recordId = str;
+            }
+        }
+    }
+
+    connectedCallback() {
+        init({
+            recordId: this.recordId
+        }).then(result => {
+            console.log(result);
+            if (result != null) {
+                this.IsLoading = false;
+                this.Id = result.Id;
+                this.RecordTypeId = result.RecordTypeId;
+
+                this.ProductRepairQuoteRepair();
+                this.dispatchEvent(new CloseActionScreenEvent());
+            }
+        }).catch(error => {
+            console.log(error);
+        }).finally(() => {
+
+        });
+    }
+
+    // 淇悊鎶ヤ环棰勪及
+    ProductRepairQuoteRepair() {
+        selectAssetID({
+            recordId: this.Id
+        }).then(result => {
+            this.DeliveredProductC = result;
+            window.open('/apex/ProductRepairQuote?productid=' + this.DeliveredProductC + '&flag=asset', '', 'height=250, width=500, top=300, left=350,location=no')
+        }).catch(error => {
+            console.log(error);
+        })
+    }
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexProductRepairQuoteRepair/lexProductRepairQuoteRepair.js-meta.xml b/force-app/main/default/lwc/lexProductRepairQuoteRepair/lexProductRepairQuoteRepair.js-meta.xml
new file mode 100644
index 0000000..3392981
--- /dev/null
+++ b/force-app/main/default/lwc/lexProductRepairQuoteRepair/lexProductRepairQuoteRepair.js-meta.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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
diff --git a/force-app/main/default/lwc/lexQISAgree/lexQISAgree.css b/force-app/main/default/lwc/lexQISAgree/lexQISAgree.css
new file mode 100644
index 0000000..9acb129
--- /dev/null
+++ b/force-app/main/default/lwc/lexQISAgree/lexQISAgree.css
@@ -0,0 +1,22 @@
+.outerBorderCss{
+    border: 1px solid #D4D4D4;
+    border-radius : 5px;
+    border-top : 3px solid #565959;
+}
+.borderCss{
+    border: 1px solid #D4D4D4;
+    border-radius : 5px;
+    margin-bottom : 7px;
+    border-top : 3px solid #565959;
+}
+.headerDorderCss{
+    border-top: 1px solid #565959;
+    border-bottom: 1px solid #D4D4D4;
+    padding:3px;
+}
+.centerCss{
+    text-align: center;
+}
+.centerCss .left{
+    margin-left: 100px;
+}/* sample css file *//* sample css file */
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexQISAgree/lexQISAgree.html b/force-app/main/default/lwc/lexQISAgree/lexQISAgree.html
new file mode 100644
index 0000000..c8bdbfc
--- /dev/null
+++ b/force-app/main/default/lwc/lexQISAgree/lexQISAgree.html
@@ -0,0 +1,5 @@
+<template>
+   <div class="sisToOPDHolder" if:true={IsLoading}>
+        <lightning-spinner alternative-text="Loading" size="medium"></lightning-spinner>
+    </div>
+</template>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexQISAgree/lexQISAgree.js b/force-app/main/default/lwc/lexQISAgree/lexQISAgree.js
new file mode 100644
index 0000000..5725e34
--- /dev/null
+++ b/force-app/main/default/lwc/lexQISAgree/lexQISAgree.js
@@ -0,0 +1,85 @@
+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 init  from '@salesforce/apex/QISReportController.initForQisAgreeButton';
+import updateQis  from '@salesforce/apex/QISReportController.updateQisForQisAgree';
+import UserInfo_Owner from '@salesforce/apex/TaskFeedbackController.UserInfo_Owner';
+import { updateRecord } from 'lightning/uiRecordApi';
+
+export default class lexQISAgree extends LightningElement {
+	@api recordId;
+	IsLoading = true;
+	qisReportId;
+	OwnerId;
+    err;
+
+    @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 () {
+        init({
+            recordId: this.recordId
+        }).then(result => {
+            this.IsLoading = false;
+            this.qisReportId = result.Id;
+            this.OwnerId = result.ownerId;
+            if (this.OwnerId != UserInfo_Owner.Id) {
+            	const evt = new ShowToastEvent({
+                            title : '鍙湁鎵�鏈夎�呭彲浠ユ寜QIS缁撴灉璺熻繘瀹屾瘯鐨勬寜閽�',
+                            message: '',
+                            variant: 'error'
+                        });
+                        this.dispatchEvent(evt);
+                        this.dispatchEvent(new CloseActionScreenEvent());
+            }else{
+            	this.updateQisSubmit();
+            }
+        }).catch(error => {
+            console.log('error='+error);
+        }).finally(() => {
+            
+        }); 
+    }
+
+    updateRecordView(recordId) {
+        updateRecord({fields: { Id: recordId }});
+    }
+
+    updateQisSubmit(){
+        	updateQis({
+        		 recordId: this.recordId
+        		}).then(result =>{
+        			console.log('result'+result);
+                     this.err = result;
+        			if (result!='鎴愬姛') {
+                        const evt = new ShowToastEvent({
+                            title : '鏇存柊澶辫触',
+                            message: this.err,
+                            variant: 'error'
+                        });
+                        this.dispatchEvent(evt);
+                    }
+                this.dispatchEvent(new CloseActionScreenEvent());
+                this.updateRecordView(this.recordId);
+        		}).catch(error => {
+            console.log('error='+error);
+        }).finally(() => {
+            
+        });
+    }
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexQISAgree/lexQISAgree.js-meta.xml b/force-app/main/default/lwc/lexQISAgree/lexQISAgree.js-meta.xml
new file mode 100644
index 0000000..7a4ca36
--- /dev/null
+++ b/force-app/main/default/lwc/lexQISAgree/lexQISAgree.js-meta.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata" fqn="lexQISAgree">
+  <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
diff --git a/force-app/main/default/lwc/lexQISIntakeuniversalcode/lexQISIntakeuniversalcode.css b/force-app/main/default/lwc/lexQISIntakeuniversalcode/lexQISIntakeuniversalcode.css
new file mode 100644
index 0000000..79456f2
--- /dev/null
+++ b/force-app/main/default/lwc/lexQISIntakeuniversalcode/lexQISIntakeuniversalcode.css
@@ -0,0 +1,22 @@
+.outerBorderCss{
+    border: 1px solid #D4D4D4;
+    border-radius : 5px;
+    border-top : 3px solid #565959;
+}
+.borderCss{
+    border: 1px solid #D4D4D4;
+    border-radius : 5px;
+    margin-bottom : 7px;
+    border-top : 3px solid #565959;
+}
+.headerDorderCss{
+    border-top: 1px solid #565959;
+    border-bottom: 1px solid #D4D4D4;
+    padding:3px;
+}
+.centerCss{
+    text-align: center;
+}
+.centerCss .left{
+    margin-left: 100px;
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexQISIntakeuniversalcode/lexQISIntakeuniversalcode.html b/force-app/main/default/lwc/lexQISIntakeuniversalcode/lexQISIntakeuniversalcode.html
new file mode 100644
index 0000000..c8bdbfc
--- /dev/null
+++ b/force-app/main/default/lwc/lexQISIntakeuniversalcode/lexQISIntakeuniversalcode.html
@@ -0,0 +1,5 @@
+<template>
+   <div class="sisToOPDHolder" if:true={IsLoading}>
+        <lightning-spinner alternative-text="Loading" size="medium"></lightning-spinner>
+    </div>
+</template>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexQISIntakeuniversalcode/lexQISIntakeuniversalcode.js b/force-app/main/default/lwc/lexQISIntakeuniversalcode/lexQISIntakeuniversalcode.js
new file mode 100644
index 0000000..94c87ab
--- /dev/null
+++ b/force-app/main/default/lwc/lexQISIntakeuniversalcode/lexQISIntakeuniversalcode.js
@@ -0,0 +1,64 @@
+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 init  from '@salesforce/apex/QISReportController.initForlexQISIntakeuniversalcodeButton';
+import sqlForPAE  from '@salesforce/apex/QISReportController.sqlForPAE1';
+
+export default class lexQISIntakeuniversalcode extends LightningElement {
+	@api recordId;
+	IsLoading = true;
+	qisReportId;
+	paeId;
+
+    @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 () {
+        init({
+            recordId: this.recordId
+        }).then(result => {
+            console.log(result);
+            if (result != null) {
+                this.IsLoading = false;
+                this.qisReportId = result.Id;
+                var RecordTypeId = "ASRCDecision";
+                sqlForPAE({
+                	qisReportId: this.qisReportId
+           		 }).then(result => {
+	            	if (result!=null) {
+	            		this.paeId = result.PAEid;
+	            		console.log('result='+this.paeId);
+	            	}   
+	            	var url = '';
+					if (result!=null&&result.length>0){
+						url = "/apex/PAEDecisionRecord?Id="+this.paeId+"&QISReportId="+this.qisReportId +"&RecordTypeIds="+RecordTypeId ;
+					} else {
+						url = "/apex/PAEDecisionRecord?QISReportId="+this.qisReportId +"&RecordTypeIds="+RecordTypeId;
+					} 
+					console.log('url='+url);
+                    window.location.replace(url);
+		        }); 
+            }
+        }).catch(error => {
+            console.log('error='+error);
+        }).finally(() => {
+            
+        });   
+    }
+
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexQISIntakeuniversalcode/lexQISIntakeuniversalcode.js-meta.xml b/force-app/main/default/lwc/lexQISIntakeuniversalcode/lexQISIntakeuniversalcode.js-meta.xml
new file mode 100644
index 0000000..2ed1142
--- /dev/null
+++ b/force-app/main/default/lwc/lexQISIntakeuniversalcode/lexQISIntakeuniversalcode.js-meta.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata" fqn="lexQISIntakeuniversalcode">
+    <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
diff --git a/force-app/main/default/lwc/lexQuarterlyReport/__tests__/lexQuarterlyReport.test.js b/force-app/main/default/lwc/lexQuarterlyReport/__tests__/lexQuarterlyReport.test.js
new file mode 100644
index 0000000..95b6a0e
--- /dev/null
+++ b/force-app/main/default/lwc/lexQuarterlyReport/__tests__/lexQuarterlyReport.test.js
@@ -0,0 +1,25 @@
+import { createElement } from 'lwc';
+import LexQuarterlyReport from 'c/lexQuarterlyReport';
+
+describe('c-lex-quarterly-report', () => {
+    afterEach(() => {
+        // The jsdom instance is shared across test cases in a single file so reset the DOM
+        while (document.body.firstChild) {
+            document.body.removeChild(document.body.firstChild);
+        }
+    });
+
+    it('TODO: test case generated by CLI command, please fill in test logic', () => {
+        // Arrange
+        const element = createElement('c-lex-quarterly-report', {
+            is: LexQuarterlyReport
+        });
+
+        // Act
+        document.body.appendChild(element);
+
+        // Assert
+        // const div = element.shadowRoot.querySelector('div');
+        expect(1).toBe(1);
+    });
+});
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexQuarterlyReport/lexQuarterlyReport.html b/force-app/main/default/lwc/lexQuarterlyReport/lexQuarterlyReport.html
new file mode 100644
index 0000000..d044dbb
--- /dev/null
+++ b/force-app/main/default/lwc/lexQuarterlyReport/lexQuarterlyReport.html
@@ -0,0 +1,5 @@
+<template>
+    <div class="exampleHolder" if:true={IsLoading}>
+        <lightning-spinner alternative-text="Loading" size="medium"></lightning-spinner>
+    </div>
+</template>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexQuarterlyReport/lexQuarterlyReport.js b/force-app/main/default/lwc/lexQuarterlyReport/lexQuarterlyReport.js
new file mode 100644
index 0000000..fc1f1e2
--- /dev/null
+++ b/force-app/main/default/lwc/lexQuarterlyReport/lexQuarterlyReport.js
@@ -0,0 +1,69 @@
+import {
+    LightningElement,
+    wire,
+    api
+} from 'lwc';
+import {
+    CurrentPageReference
+} from "lightning/navigation";
+import {
+    CloseActionScreenEvent
+} from 'lightning/actions';
+import init from '@salesforce/apex/otherButtonMaintenanceContractCtl.init';
+
+export default class LexQuarterlyReport extends LightningElement {
+    @api recordId;
+    str;
+    IsLoading = true;
+    Id;
+    RecordTypeDeveloperNameC;
+    EstimateTargetC;
+
+    @wire(CurrentPageReference)
+    getStateParameters(currentPageReference) {
+        if (currentPageReference) {
+            const urlValue = currentPageReference.state.recordId;
+            if (urlValue) {
+                let str = `${urlValue}`;
+                this.recordId = str;
+            }
+        }
+    }
+
+    connectedCallback() {
+        console.log(this.recordId);
+        init({
+            recordId: this.recordId
+        }).then(result => {
+            console.log(result);
+            if (result != null) {
+                this.IsLoading = false;
+                this.Id = result.Id;
+                this.RecordTypeDeveloperNameC = result.RecordTypeDeveloperNameC;
+                this.EstimateTargetC = result.EstimateTargetC;
+
+
+                this.QuarterlyReport();
+                this.dispatchEvent(new CloseActionScreenEvent());
+            }
+        }).catch(error => {
+            console.log(error);
+        }).finally(() => {
+
+        });
+    }
+
+    // 鍒朵綔瀛f姤
+    QuarterlyReport() {
+        var MaintenanceContractId = this.Id;
+        var RecordTypeName = this.RecordTypeDeveloperNameC;
+        var EstimateTarget = this.EstimateTargetC;
+        var url = '';
+        if (EstimateTarget == "缁忛攢鍟�" && (RecordTypeName == "NewMaintenance_Contract" || RecordTypeName == "VM_Contract")) {
+            url = "/apex/MoreMaintenanceContractPop?Id=" + MaintenanceContractId + "&RecordTypeName=" + RecordTypeName;
+        } else {
+            url = "http://powerbi.olympus.com.cn/Home/Login";
+        }
+        window.open(url, '_bank');
+    }
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexQuarterlyReport/lexQuarterlyReport.js-meta.xml b/force-app/main/default/lwc/lexQuarterlyReport/lexQuarterlyReport.js-meta.xml
new file mode 100644
index 0000000..3392981
--- /dev/null
+++ b/force-app/main/default/lwc/lexQuarterlyReport/lexQuarterlyReport.js-meta.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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
diff --git a/force-app/main/default/lwc/lexRCCDScomplete/lexRCCDScomplete.css b/force-app/main/default/lwc/lexRCCDScomplete/lexRCCDScomplete.css
new file mode 100644
index 0000000..79456f2
--- /dev/null
+++ b/force-app/main/default/lwc/lexRCCDScomplete/lexRCCDScomplete.css
@@ -0,0 +1,22 @@
+.outerBorderCss{
+    border: 1px solid #D4D4D4;
+    border-radius : 5px;
+    border-top : 3px solid #565959;
+}
+.borderCss{
+    border: 1px solid #D4D4D4;
+    border-radius : 5px;
+    margin-bottom : 7px;
+    border-top : 3px solid #565959;
+}
+.headerDorderCss{
+    border-top: 1px solid #565959;
+    border-bottom: 1px solid #D4D4D4;
+    padding:3px;
+}
+.centerCss{
+    text-align: center;
+}
+.centerCss .left{
+    margin-left: 100px;
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexRCCDScomplete/lexRCCDScomplete.html b/force-app/main/default/lwc/lexRCCDScomplete/lexRCCDScomplete.html
new file mode 100644
index 0000000..c8bdbfc
--- /dev/null
+++ b/force-app/main/default/lwc/lexRCCDScomplete/lexRCCDScomplete.html
@@ -0,0 +1,5 @@
+<template>
+   <div class="sisToOPDHolder" if:true={IsLoading}>
+        <lightning-spinner alternative-text="Loading" size="medium"></lightning-spinner>
+    </div>
+</template>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexRCCDScomplete/lexRCCDScomplete.js b/force-app/main/default/lwc/lexRCCDScomplete/lexRCCDScomplete.js
new file mode 100644
index 0000000..4f7e882
--- /dev/null
+++ b/force-app/main/default/lwc/lexRCCDScomplete/lexRCCDScomplete.js
@@ -0,0 +1,98 @@
+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 init  from '@salesforce/apex/QISReportController.initForRCCDScompleteButton';
+import updateQis  from '@salesforce/apex/QISReportController.updateQisForRCCDScomplete';
+import UserInfo_Owner from '@salesforce/apex/TaskFeedbackController.UserInfo_Owner';
+import { updateRecord } from 'lightning/uiRecordApi';
+
+export default class lexRCCDScomplete extends LightningElement {
+	@api recordId;
+	IsLoading = true;
+	qisReportId;
+	cdsdate;
+	QIStatus;
+    err;
+
+    @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 () {
+        init({
+            recordId: this.recordId
+        }).then(result => {
+            this.IsLoading = false;
+            this.qisReportId = result.Id;
+            this.cdsdate = result.cdsdate;
+            this.QIStatus = result.qIStatus;
+            if (this.QIStatus == 'RC妫�娴嬬敵璇�') {
+            	const evt = new ShowToastEvent({
+                            title : '闇�瑕佸厛鐐瑰嚮锛籓CM鏈嶅姟鏈儴鏀跺埌瀹炵墿锛�',
+                            message: '',
+                            variant: 'error'
+                        });
+                        this.dispatchEvent(evt);
+                        this.dispatchEvent(new CloseActionScreenEvent());
+                        return;
+            }
+            if (this.cdsdate != null) {
+            	const evt = new ShowToastEvent({
+                            title : 'OCM鏈嶅姟鏈儴CDS宸茬粡瀹屾瘯',
+                            message: '',
+                            variant: 'error'
+                        });
+                        this.dispatchEvent(evt);
+                        this.dispatchEvent(new CloseActionScreenEvent());
+                        return;
+            }
+            this.updateQisSubmit();
+        }).catch(error => {
+            console.log('error='+error);
+        }).finally(() => {
+            
+        }); 
+    }
+
+    updateRecordView(recordId) {
+        updateRecord({fields: { Id: recordId }});
+    }
+
+    updateQisSubmit(){
+        	updateQis({
+        		 recordId: this.recordId
+        		}).then(result =>{
+        			console.log('result'+result);
+                     this.err = result;
+        			if (result!='鎴愬姛') {
+                        const evt = new ShowToastEvent({
+                            title : '鏇存柊澶辫触',
+                            message: this.err,
+                            variant: 'error'
+                        });
+                        this.dispatchEvent(evt);
+                    }
+                this.dispatchEvent(new CloseActionScreenEvent());
+                this.updateRecordView(this.recordId);
+        		}).catch(error => {
+            console.log('error='+error);
+        }).finally(() => {
+            
+        });
+    }
+
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexRCCDScomplete/lexRCCDScomplete.js-meta.xml b/force-app/main/default/lwc/lexRCCDScomplete/lexRCCDScomplete.js-meta.xml
new file mode 100644
index 0000000..b85f028
--- /dev/null
+++ b/force-app/main/default/lwc/lexRCCDScomplete/lexRCCDScomplete.js-meta.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata" fqn="lexRCCDScomplete">
+    <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
diff --git a/force-app/main/default/lwc/lexRCSubmit/lexRCSubmit.js b/force-app/main/default/lwc/lexRCSubmit/lexRCSubmit.js
index d548720..a65405b 100644
--- a/force-app/main/default/lwc/lexRCSubmit/lexRCSubmit.js
+++ b/force-app/main/default/lwc/lexRCSubmit/lexRCSubmit.js
@@ -44,14 +44,14 @@
         }).then(result => {
             this.IsLoading = false;
             this.qisReportId = result.Id;
-            this.qisStatus = result.QIStatus;
-            this.OSHstaff = result.OSHstaff;
-            this.OSHstaffEmail = result.OSHstaffEmail;
-            this.CancelQISReason = result.CancelQISReason;
-            this.Rcid = result.RCid;
-            this.RCinspectionDate = result.RCinspectionDate;
-            this.QISReplyDay = result.QISReplyDay;
-            this.RCproblemnotfound = result.RCproblemnotfound;
+            this.qisStatus = result.qIStatus;
+            this.OSHstaff = result.oSHstaff;
+            this.OSHstaffEmail = result.oSHstaffEmail;
+            this.CancelQISReason = result.cancelQISReason;
+            this.Rcid = result.rCid;
+            this.RCinspectionDate = result.rCinspectionDate;
+            this.QISReplyDay = result.qISReplyDay;
+            this.RCproblemnotfound = result.rCproblemnotfound;
          	if (this.qisStatus!='RC妫�娴嬩腑') {
                 const evt = new ShowToastEvent({
                         title : '宸茬粡鎻愪氦瀹℃壒',
diff --git a/force-app/main/default/lwc/lexSIStoOPD/lexSIStoOPD.js b/force-app/main/default/lwc/lexSIStoOPD/lexSIStoOPD.js
index b85d07d..1996195 100644
--- a/force-app/main/default/lwc/lexSIStoOPD/lexSIStoOPD.js
+++ b/force-app/main/default/lwc/lexSIStoOPD/lexSIStoOPD.js
@@ -1,3 +1,11 @@
+/*
+ * @Description: 
+ * @version: 
+ * @Author: chen jing wu
+ * @Date: 2023-04-07 09:02:03
+ * @LastEditors: chen jing wu
+ * @LastEditTime: 2023-04-11 09:10:42
+ */
 import { api, wire,LightningElement } from 'lwc';
 import { CurrentPageReference } from "lightning/navigation";
 import { CloseActionScreenEvent } from 'lightning/actions';
@@ -12,7 +20,22 @@
     ownerId;
     status;
     userId;
-    errorMsg;
+    @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);
@@ -21,7 +44,6 @@
         }).then(result => {
             console.log(result);
             if (result != null) {
-                this.IsLoading = false;
                 this.ownerId = result.ownerId;
                 this.status = result.status;
                 this.userId = result.userId;
@@ -31,10 +53,6 @@
             console.log("error");
             console.log(error);
         }).finally(() => {
-            console.log(this.errorMsg);
-            if(this.errorMsg){
-                this.showToast(this.errorMsg,"error");
-            }  
         });
 
     }
@@ -58,11 +76,14 @@
             updateForSIStoOPDButton({
                 recordId: this.recordId
             }).then(result=>{
+                console.log(result);
                 if(result){
                     this.showToast(result,"error");
                 }else{
+                    this.showToast("鎴愬姛","success");
                     this.updateRecordView(this.recordId);
-                } 
+                }
+                this.IsLoading = false;
                 this.dispatchEvent(new CloseActionScreenEvent());
             });              
     }
diff --git a/force-app/main/default/lwc/lexSendRepairsToEtQ/__tests__/lexSendRepairsToEtQ.test.js b/force-app/main/default/lwc/lexSendRepairsToEtQ/__tests__/lexSendRepairsToEtQ.test.js
new file mode 100644
index 0000000..0f076e5
--- /dev/null
+++ b/force-app/main/default/lwc/lexSendRepairsToEtQ/__tests__/lexSendRepairsToEtQ.test.js
@@ -0,0 +1,25 @@
+import { createElement } from 'lwc';
+import LexSendRepairsToEtQ from 'c/lexSendRepairsToEtQ';
+
+describe('c-lex-send-repairs-to-et-q', () => {
+    afterEach(() => {
+        // The jsdom instance is shared across test cases in a single file so reset the DOM
+        while (document.body.firstChild) {
+            document.body.removeChild(document.body.firstChild);
+        }
+    });
+
+    it('TODO: test case generated by CLI command, please fill in test logic', () => {
+        // Arrange
+        const element = createElement('c-lex-send-repairs-to-et-q', {
+            is: LexSendRepairsToEtQ
+        });
+
+        // Act
+        document.body.appendChild(element);
+
+        // Assert
+        // const div = element.shadowRoot.querySelector('div');
+        expect(1).toBe(1);
+    });
+});
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexSendRepairsToEtQ/lexSendRepairsToEtQ.html b/force-app/main/default/lwc/lexSendRepairsToEtQ/lexSendRepairsToEtQ.html
new file mode 100644
index 0000000..87f391a
--- /dev/null
+++ b/force-app/main/default/lwc/lexSendRepairsToEtQ/lexSendRepairsToEtQ.html
@@ -0,0 +1,6 @@
+<template>
+    <div class="exampleHolder" if:true={IsLoading}>
+        <lightning-spinner alternative-text="Loading" size="medium"></lightning-spinner>
+        <lightning-button label="Show Toast" onclick={ShowToastEvent}></lightning-button>
+    </div>
+</template>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexSendRepairsToEtQ/lexSendRepairsToEtQ.js b/force-app/main/default/lwc/lexSendRepairsToEtQ/lexSendRepairsToEtQ.js
new file mode 100644
index 0000000..927e6d3
--- /dev/null
+++ b/force-app/main/default/lwc/lexSendRepairsToEtQ/lexSendRepairsToEtQ.js
@@ -0,0 +1,192 @@
+import {
+    LightningElement,
+    wire,
+    api
+} from 'lwc';
+import {
+    CurrentPageReference
+} from "lightning/navigation";
+import {
+    CloseActionScreenEvent
+} from 'lightning/actions';
+import init from '@salesforce/apex/otherButtonRepairController.init';
+import selectRecords from '@salesforce/apex/otherButtonRepairController.selectRecords';
+import sendToETQ from '@salesforce/apex/otherButtonRepairController.sendToETQ';
+import {
+    ShowToastEvent
+} from 'lightning/platformShowToastEvent';
+
+export default class LexSendRepairsToEtQ extends LightningElement {
+    @api recordId;
+    str;
+    IsLoading = true;
+    Id;;
+    PAEDetermineC;
+    ETQUPLOADSTATUSC;
+    AEDetermineResultC;
+    PAEDetermineACC;
+    RepairInspectionDateC;
+    ContainUseRSAC;
+    userID;
+    profileId;
+
+    @wire(CurrentPageReference)
+    getStateParameters(currentPageReference) {
+        if (currentPageReference) {
+            const urlValue = currentPageReference.state.recordId;
+            if (urlValue) {
+                let str = `${urlValue}`;
+                this.recordId = str;
+            }
+        }
+    }
+
+    connectedCallback() {
+        console.log(this.recordId);
+        init({
+            recordId: this.recordId
+        }).then(result => {
+            console.log(result);
+            if (result != null) {
+                this.IsLoading = false;
+                this.Id = result.Id;
+                this.PAEDetermineC = result.PAEDetermineC;
+                this.ETQUPLOADSTATUSC = result.ETQUPLOADSTATUSC;
+                this.AEDetermineResultC = result.AEDetermineResultC;
+                this.PAEDetermineACC = result.PAEDetermineACC;
+                this.RepairInspectionDateC = result.RepairInspectionDateC;
+                this.ContainUseRSAC = result.ContainUseRSAC;
+                this.userID = result.userID;
+                this.profileId = result.profileId;
+
+                this.myDate();
+                this.myReload();
+                this.dispatchEvent(new CloseActionScreenEvent());
+            }
+        }).catch(error => {
+            console.log(error);
+        }).finally(() => {
+
+        });
+    }
+
+    // 鏍规嵁鏃ユ湡鏋勫缓MessageGroupNumber
+    myDate() {
+        let messageNumber = '';
+        let today = new Date();
+        messageNumber = today.getFullYear() + '' + (today.getMonth() + 1) + '' + today.getDate() + '' + today.getHours() + '' +
+            today.getMinutes() + '' + today.getSeconds();
+        return messageNumber;
+    }
+
+    // 鎸夐挳鐐瑰嚮鍚庤Е鍙�,鍒ゆ柇鏄惁鍙戦�佽繃ETQ,濡傛灉鍙戦�佽繃缁欏嚭鎻愮ず骞剁伆鎺夋寜閽�
+    // 濡傛灉娌℃湁鍙戦�佽繃璋冪敤鍙戦�佹柟娉�
+    myReload() {
+        selectRecords({
+            recordId: this.Id
+        }).then(result => {
+            console.log(result);
+            if (result.AsyncData__c == 'true' && result.ETQ_UPLOAD_STATUS__c != '3' || result.Complaint_Number__c != null) {
+                var btns = document.getElementsByName("sendrepairstoetq");
+                for (var i = 0; i < btns.length; i++) {
+                    btns[i].disabled = true;
+                    btns[i].className = 'btnDisabled';
+                }
+                this.ShowToastEvent('璇ヤ慨鐞嗕箣鍓嶅凡缁忓彂閫佽繃浜�', "error");
+                // alert('璇ヤ慨鐞嗕箣鍓嶅凡缁忓彂閫佽繃浜�')
+            } else {
+                this.SendRepairsToEtQ();
+            }
+        }).catch(error => {
+            console.log(error);
+        }).finally(() => {
+
+        });
+    }
+
+    // 鍙戦�丒TQ
+    SendRepairsToEtQ() {
+        console.log(this.userID);
+        console.log(this.profileId);
+
+        var uid = this.userID;
+        if (this.profileId != "00e10000000xnoO" && this.profileId != "00e10000000hl7w" && this.profileId != '00e10000000Y3o5') {
+            this.ShowToastEvent("鎮ㄦ病鏈夊彂閫佷慨鐞嗗埌EtQ鐨勬潈闄愩��", "error");
+            // alert("鎮ㄦ病鏈夊彂閫佷慨鐞嗗埌EtQ鐨勬潈闄愩��");
+            return;
+        }
+        var statu = '';
+        if (this.PAEDetermineC == undefined) {
+            this.ShowToastEvent("OCSM QARA鐨凱AE鍒ゅ畾鏄┖鐨勬椂鍊欙紝涓嶅彲浠ュ彂閫佸埌EtQ銆�", "error");
+            // alert("OCSM QARA鐨凱AE鍒ゅ畾鏄┖鐨勬椂鍊欙紝涓嶅彲浠ュ彂閫佸埌EtQ銆�");
+            return;
+        }
+        if (this.ETQUPLOADSTATUSC == "3") {
+            if (!confirm("鏄惁娓呯┖EtQ鍚屾鐘舵�侊紝閲嶆柊鍚屾鏁版嵁锛�")) {
+                return;
+            }
+        }
+        if (this.PAEDetermineC == "nonPAE" && this.AEDetermineResultC == "nonAE" && this.PAEDetermineACC == "nonPAE" && uid != "005100000068zJ6") {
+            this.ShowToastEvent("Close Complait鐨勬椂鍊欙紝涓嶅彲浠ュ彂閫佸埌EtQ", "error");
+            // alert("Close Complait鐨勬椂鍊欙紝涓嶅彲浠ュ彂閫佸埌EtQ");
+            return;
+        }
+        if (this.PAEDetermineC != undefined && this.AEDetermineResultC != undefined && this.PAEDetermineACC == undefined) {
+            statu = "R1";
+        } else if ((this.AEDetermineResultC != undefined && this.PAEDetermineC != undefined && this.PAEDetermineACC != undefined) &&
+            !(this.PAEDetermineC == "nonPAE" && this.AEDetermineResultC == "nonAE" && this.PAEDetermineACC == "nonPAE")) {
+            statu = "R2";
+            if (this.RepairInspectionDateC == "") {
+                this.ShowToastEvent("5.淇悊妫�娴嬫棩鏄┖鐨勬椂鍊欙紝涓嶅彲浠ュ彂閫佸埌EtQ銆�", "error");
+                // alert("5.淇悊妫�娴嬫棩鏄┖鐨勬椂鍊欙紝涓嶅彲浠ュ彂閫佸埌EtQ銆�");
+                return;
+            }
+            if (this.ContainUseRSAC == 1) {
+                this.ShowToastEvent("Final universal code涓虹┖锛屾垨鑰呭寘鍚玌seRSA锛岃纭銆�", "error");
+                // alert("Final universal code涓虹┖锛屾垨鑰呭寘鍚玌seRSA锛岃纭銆�");
+                return;
+            }
+        }
+
+        var result;
+        try {
+            var repairids = new Array()
+            repairids[0] = this.Id;
+
+            var statuArr = new Array();
+            statuArr.push(statu);
+
+            sendToETQ({
+                iflog_Id: "",
+                rowDataSFDC: "",
+                repairIds: repairids,
+                statu: statuArr[0]
+            }).then(result => {
+                this.ShowToastEvent(result, "error");
+                // alert(result);
+            }).catch(error => {
+                console.log(error);
+            })
+
+            var btns = document.getElementsByName("sendrepairstoetq");
+            for (var i = 0; i < btns.length; i++) {
+                btns[i].disabled = true;
+                btns[i].className = 'btnDisabled';
+            }
+            location.reload();
+        } catch (error) {
+            this.ShowToastEvent("鍙戦�佷慨鐞嗗埌EtQ澶辫触" + error.faultstring + ' code:' + error.faultcode, "error");
+            // alert("鍙戦�佷慨鐞嗗埌EtQ澶辫触" + error.faultstring + ' code:' + error.faultcode);
+        }
+    }
+
+    // 寮圭獥
+    ShowToastEvent(msg, type) {
+        const event = new ShowToastEvent({
+            title: '',
+            message: msg,
+            variant: type
+        });
+        this.dispatchEvent(event);
+    }
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexSendRepairsToEtQ/lexSendRepairsToEtQ.js-meta.xml b/force-app/main/default/lwc/lexSendRepairsToEtQ/lexSendRepairsToEtQ.js-meta.xml
new file mode 100644
index 0000000..3392981
--- /dev/null
+++ b/force-app/main/default/lwc/lexSendRepairsToEtQ/lexSendRepairsToEtQ.js-meta.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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
diff --git a/force-app/main/default/lwc/lexSubmitCompetitorReport/lexSubmitCompetitorReport.js b/force-app/main/default/lwc/lexSubmitCompetitorReport/lexSubmitCompetitorReport.js
index 025a150..213dc1c 100644
--- a/force-app/main/default/lwc/lexSubmitCompetitorReport/lexSubmitCompetitorReport.js
+++ b/force-app/main/default/lwc/lexSubmitCompetitorReport/lexSubmitCompetitorReport.js
@@ -1,3 +1,11 @@
+/*
+ * @Description: 
+ * @version: 
+ * @Author: chen jing wu
+ * @Date: 2023-04-07 09:02:03
+ * @LastEditors: chen jing wu
+ * @LastEditTime: 2023-04-11 09:11:11
+ */
 import { LightningElement,wire,track,api} from 'lwc';
 import { CurrentPageReference } from "lightning/navigation";
 import { CloseActionScreenEvent } from 'lightning/actions';
@@ -10,6 +18,22 @@
     @api recordId;
     IsLoading = true;
 
+    @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;
+          }
+        }
+    }
+
     updateRecordView(recordId) {
       updateRecord({fields: { Id: recordId }});
   }
@@ -19,7 +43,6 @@
             recordId: this.recordId
           }).then(result=>{
             this.submit();
-            this.IsLoading = false;  
           });
           
     }
@@ -40,6 +63,7 @@
     }).then(result=>{
       this.showToast("鎻愪氦瀵规墜绔炰簤鎶ュ憡鎴愬姛","success")
       this.updateRecordView(this.recordId);
+      this.IsLoading = false;  
       this.dispatchEvent(new CloseActionScreenEvent());
     });
     }
diff --git a/force-app/main/default/lwc/lexSubmitForApproval/__tests__/lexSubmitForApproval.test.js b/force-app/main/default/lwc/lexSubmitForApproval/__tests__/lexSubmitForApproval.test.js
new file mode 100644
index 0000000..fa04967
--- /dev/null
+++ b/force-app/main/default/lwc/lexSubmitForApproval/__tests__/lexSubmitForApproval.test.js
@@ -0,0 +1,25 @@
+import { createElement } from 'lwc';
+import LexSubmitForApproval from 'c/lexSubmitForApproval';
+
+describe('c-lex-submit-for-approval', () => {
+    afterEach(() => {
+        // The jsdom instance is shared across test cases in a single file so reset the DOM
+        while (document.body.firstChild) {
+            document.body.removeChild(document.body.firstChild);
+        }
+    });
+
+    it('TODO: test case generated by CLI command, please fill in test logic', () => {
+        // Arrange
+        const element = createElement('c-lex-submit-for-approval', {
+            is: LexSubmitForApproval
+        });
+
+        // Act
+        document.body.appendChild(element);
+
+        // Assert
+        // const div = element.shadowRoot.querySelector('div');
+        expect(1).toBe(1);
+    });
+});
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexSubmitForApproval/lexSubmitForApproval.js b/force-app/main/default/lwc/lexSubmitForApproval/lexSubmitForApproval.js
index a601b08..9de188b 100644
--- a/force-app/main/default/lwc/lexSubmitForApproval/lexSubmitForApproval.js
+++ b/force-app/main/default/lwc/lexSubmitForApproval/lexSubmitForApproval.js
@@ -49,6 +49,7 @@
         });
     }
 
+    // 鍏抽棴璇环/鍏抽棴缁
     SubmitForApproval() {
         var url = '';
         selectRecords({
diff --git a/force-app/main/default/lwc/lexTenderingAntiLogicButton/lexTenderingAntiLogicButton.html b/force-app/main/default/lwc/lexTenderingAntiLogicButton/lexTenderingAntiLogicButton.html
new file mode 100644
index 0000000..81a3516
--- /dev/null
+++ b/force-app/main/default/lwc/lexTenderingAntiLogicButton/lexTenderingAntiLogicButton.html
@@ -0,0 +1,5 @@
+<template>
+    <div class="AntiLogicButton" if:true={IsLoading}>
+        <lightning-spinner alternative-text="Loading" size="medium"></lightning-spinner>
+    </div>
+</template>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexTenderingAntiLogicButton/lexTenderingAntiLogicButton.js b/force-app/main/default/lwc/lexTenderingAntiLogicButton/lexTenderingAntiLogicButton.js
new file mode 100644
index 0000000..1220eb0
--- /dev/null
+++ b/force-app/main/default/lwc/lexTenderingAntiLogicButton/lexTenderingAntiLogicButton.js
@@ -0,0 +1,52 @@
+import { LightningElement,wire,track,api} from 'lwc';
+import { CurrentPageReference } from "lightning/navigation";
+import { CloseActionScreenEvent } from 'lightning/actions';
+import  init  from '@salesforce/apex/TenderingButtonController.initTenderingController';
+import  ContraryLogicalDel  from '@salesforce/apex/TenderWebService.ContraryLogicalDel';
+import { ShowToastEvent } from 'lightning/platformShowToastEvent';
+export default class LexTenderingAntiLogicButton extends LightningElement {
+    @api recordId;//褰撳墠杩欐潯鏁版嵁鐨刬d
+    id;//杩斿洖鍊肩殑id  Tender_information__c鎷涙爣椤圭洰鐨刬d
+    IsLoading = true;
+
+    @wire(CurrentPageReference)
+     getStateParameters(currentPageReference) {
+         if (currentPageReference) {
+           const urlValue = currentPageReference.state.recordId;
+           if (urlValue) {
+             let str = `${urlValue}`;
+             this.recordId = str;
+           }
+         }
+     }
+    
+    connectedCallback(){
+        init({
+            recordId: this.recordId
+        }).then(result => {
+                this.IsLoading = false;
+                this.id = result.Id;
+                this.AntiLogicButton();
+                this.dispatchEvent(new CloseActionScreenEvent());
+        })   
+    }
+
+    //鎷涙爣椤圭洰鍙嶉�昏緫鍒犻櫎
+    AntiLogicButton(){
+        ContraryLogicalDel({DTenId : this.id}).then(result =>{
+            if(result == 'OK'){
+                this.showToast("鍙嶉�昏緫鍒犻櫎鎴愬姛","success");
+            }
+            this.dispatchEvent(new CloseActionScreenEvent());
+        })
+    }
+
+    showToast(msg,type) {
+        const event = new ShowToastEvent({
+            message: msg,
+            variant: type
+        });
+        this.dispatchEvent(event);
+        this.dispatchEvent(new CloseActionScreenEvent());
+    }
+}
diff --git a/force-app/main/default/lwc/lexTenderingAntiLogicButton/lexTenderingAntiLogicButton.js-meta.xml b/force-app/main/default/lwc/lexTenderingAntiLogicButton/lexTenderingAntiLogicButton.js-meta.xml
new file mode 100644
index 0000000..2b7649d
--- /dev/null
+++ b/force-app/main/default/lwc/lexTenderingAntiLogicButton/lexTenderingAntiLogicButton.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
diff --git a/force-app/main/default/lwc/lexTenderingAttachmentButton/lexTenderingAttachmentButton.html b/force-app/main/default/lwc/lexTenderingAttachmentButton/lexTenderingAttachmentButton.html
new file mode 100644
index 0000000..edb0a0d
--- /dev/null
+++ b/force-app/main/default/lwc/lexTenderingAttachmentButton/lexTenderingAttachmentButton.html
@@ -0,0 +1,5 @@
+<template>
+    <div class="AttachmentButton" if:true={IsLoading}>
+        <lightning-spinner alternative-text="Loading" size="medium"></lightning-spinner>
+    </div>
+</template>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexTenderingAttachmentButton/lexTenderingAttachmentButton.js b/force-app/main/default/lwc/lexTenderingAttachmentButton/lexTenderingAttachmentButton.js
new file mode 100644
index 0000000..c9f5295
--- /dev/null
+++ b/force-app/main/default/lwc/lexTenderingAttachmentButton/lexTenderingAttachmentButton.js
@@ -0,0 +1,45 @@
+import { LightningElement,wire,track,api} from 'lwc';
+import { CurrentPageReference } from "lightning/navigation";
+import { CloseActionScreenEvent } from 'lightning/actions';
+import  init  from '@salesforce/apex/TenderingButtonController.initTenderingController';
+import { ShowToastEvent } from 'lightning/platformShowToastEvent';
+export default class lexTenderingAttachmentButton extends LightningElement {
+    @api recordId;//褰撳墠杩欐潯鏁版嵁鐨刬d
+    id;//杩斿洖鍊肩殑id  Tender_information__c鎷涙爣椤圭洰鐨刬d
+    IsLoading = true;
+
+    @wire(CurrentPageReference)
+     getStateParameters(currentPageReference) {
+         if (currentPageReference) {
+           const urlValue = currentPageReference.state.recordId;
+           if (urlValue) {
+             let str = `${urlValue}`;
+             this.recordId = str;
+           }
+         }
+     }
+    
+    connectedCallback(){
+        init({
+            recordId: this.recordId
+        }).then(result => {
+            this.IsLoading = false;
+            this.id = result.Id;
+            this.AttachmentButton();
+            this.dispatchEvent(new CloseActionScreenEvent());
+        })       
+    }
+    
+    //鎷涙爣椤圭洰鏌ョ湅闄勪欢
+    AttachmentButton(){
+        window.open(`/apex/TenderInformationUploadPdf?id=${this.id}`);
+    }
+
+    showToast(msg,type) {
+        const event = new ShowToastEvent({
+            message: msg,
+            variant: type
+        });
+        this.dispatchEvent(event);
+    }
+}
diff --git a/force-app/main/default/lwc/lexTenderingAttachmentButton/lexTenderingAttachmentButton.js-meta.xml b/force-app/main/default/lwc/lexTenderingAttachmentButton/lexTenderingAttachmentButton.js-meta.xml
new file mode 100644
index 0000000..2b7649d
--- /dev/null
+++ b/force-app/main/default/lwc/lexTenderingAttachmentButton/lexTenderingAttachmentButton.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
diff --git a/force-app/main/default/lwc/lexTenderingHospitalButton/lexTenderingHospitalButton.html b/force-app/main/default/lwc/lexTenderingHospitalButton/lexTenderingHospitalButton.html
new file mode 100644
index 0000000..dc43ef6
--- /dev/null
+++ b/force-app/main/default/lwc/lexTenderingHospitalButton/lexTenderingHospitalButton.html
@@ -0,0 +1,5 @@
+<template>
+    <div class="HospitalButton" if:true={IsLoading}>
+        <lightning-spinner alternative-text="Loading" size="medium"></lightning-spinner>
+    </div>
+</template>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexTenderingHospitalButton/lexTenderingHospitalButton.js b/force-app/main/default/lwc/lexTenderingHospitalButton/lexTenderingHospitalButton.js
new file mode 100644
index 0000000..e577335
--- /dev/null
+++ b/force-app/main/default/lwc/lexTenderingHospitalButton/lexTenderingHospitalButton.js
@@ -0,0 +1,48 @@
+import { LightningElement,wire,track,api} from 'lwc';
+import { CurrentPageReference } from "lightning/navigation";
+import { CloseActionScreenEvent } from 'lightning/actions';
+import  init  from '@salesforce/apex/TenderingButtonController.initTenderingController';
+export default class lexTenderingHospitalButton extends LightningElement {
+    @api recordId;//褰撳墠杩欐潯鏁版嵁鐨刬d
+    id;//杩斿洖鍊肩殑id  Tender_information__c鎷涙爣椤圭洰鐨刬d
+    name;//鎷涙爣椤圭洰鍚�
+    Environment_Url;//鏂板缓鍖婚櫌鍦板潃
+    IsLoading = true;
+
+    @wire(CurrentPageReference)
+     getStateParameters(currentPageReference) {
+         if (currentPageReference) {
+           const urlValue = currentPageReference.state.recordId;
+           if (urlValue) {
+             let str = `${urlValue}`;
+             this.recordId = str;
+           }
+         }
+     }
+    
+    connectedCallback(){
+        init({
+            recordId: this.recordId
+        }).then(result => {
+                this.IsLoading = false;
+                this.id = result.Id;
+                this.name = result.name;
+                this.Environment_Url = result.Environment_Url;
+                this.HospitalButton();
+                this.dispatchEvent(new CloseActionScreenEvent());
+        }).catch(() => {
+        }).finally(() => {
+            
+        });        
+    }
+
+    //鎷涙爣椤圭洰鏂板缓鍖婚櫌
+    HospitalButton(){
+        var url = this.Environment_Url+'001/e?CF00N10000009I0o7='+encodeURIComponent(this.name)
+        +'&CF00N10000009I0o7_lkid='+encodeURIComponent(this.id)
+        +'&00N10000009HFQT='+encodeURIComponent('鎷涙爣椤圭洰')
+        +'&RecordType=01210000000QemG'
+        +'&retURL='+ encodeURIComponent(this.id);
+        window.location.href = url;
+    }
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexTenderingHospitalButton/lexTenderingHospitalButton.js-meta.xml b/force-app/main/default/lwc/lexTenderingHospitalButton/lexTenderingHospitalButton.js-meta.xml
new file mode 100644
index 0000000..2b7649d
--- /dev/null
+++ b/force-app/main/default/lwc/lexTenderingHospitalButton/lexTenderingHospitalButton.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
diff --git a/force-app/main/default/lwc/lexTenderingLogicButton/lexTenderingLogicButton.html b/force-app/main/default/lwc/lexTenderingLogicButton/lexTenderingLogicButton.html
new file mode 100644
index 0000000..e7eb872
--- /dev/null
+++ b/force-app/main/default/lwc/lexTenderingLogicButton/lexTenderingLogicButton.html
@@ -0,0 +1,5 @@
+<template>
+    <div class="LogicButton" if:true={IsLoading}>
+        <lightning-spinner alternative-text="Loading" size="medium"></lightning-spinner>
+    </div>
+</template>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexTenderingLogicButton/lexTenderingLogicButton.js b/force-app/main/default/lwc/lexTenderingLogicButton/lexTenderingLogicButton.js
new file mode 100644
index 0000000..54959c0
--- /dev/null
+++ b/force-app/main/default/lwc/lexTenderingLogicButton/lexTenderingLogicButton.js
@@ -0,0 +1,39 @@
+import { LightningElement,wire,track,api} from 'lwc';
+import { CurrentPageReference } from "lightning/navigation";
+import { CloseActionScreenEvent } from 'lightning/actions';
+import  init  from '@salesforce/apex/TenderingButtonController.initTenderingController';
+export default class lexTenderingLogicButton extends LightningElement {
+    @api recordId;//褰撳墠杩欐潯鏁版嵁鐨刬d
+    id;//杩斿洖鍊肩殑id  Tender_information__c鎷涙爣椤圭洰鐨刬d
+    IsLoading = true;
+
+    @wire(CurrentPageReference)
+     getStateParameters(currentPageReference) {
+         if (currentPageReference) {
+           const urlValue = currentPageReference.state.recordId;
+           if (urlValue) {
+             let str = `${urlValue}`;
+             this.recordId = str;
+           }
+         }
+     }
+    
+
+    connectedCallback(){
+        init({
+            recordId: this.recordId
+        }).then(result => {
+            if (result != null) {
+                this.IsLoading = false;
+                this.id = result.Id;
+                this.LogicButton();
+                this.dispatchEvent(new CloseActionScreenEvent());
+            }
+        })        
+    }
+    
+    //鎷涙爣椤圭洰閫昏緫鍒犻櫎
+    LogicButton(){
+        window.open (`/apex/TenderDeletePagelwc?id=${this.id}`, '', 'height=350, width=600, top=200, left=350');
+    }
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexTenderingLogicButton/lexTenderingLogicButton.js-meta.xml b/force-app/main/default/lwc/lexTenderingLogicButton/lexTenderingLogicButton.js-meta.xml
new file mode 100644
index 0000000..2b7649d
--- /dev/null
+++ b/force-app/main/default/lwc/lexTenderingLogicButton/lexTenderingLogicButton.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
diff --git a/force-app/main/default/lwc/lexTenderingLostButton/lexTenderingLostButton.html b/force-app/main/default/lwc/lexTenderingLostButton/lexTenderingLostButton.html
new file mode 100644
index 0000000..e94a2ef
--- /dev/null
+++ b/force-app/main/default/lwc/lexTenderingLostButton/lexTenderingLostButton.html
@@ -0,0 +1,5 @@
+<template>
+    <div class="LostButton" if:true={IsLoading}>
+        <lightning-spinner alternative-text="Loading" size="medium"></lightning-spinner>
+    </div>
+</template>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexTenderingLostButton/lexTenderingLostButton.js b/force-app/main/default/lwc/lexTenderingLostButton/lexTenderingLostButton.js
new file mode 100644
index 0000000..ff5d294
--- /dev/null
+++ b/force-app/main/default/lwc/lexTenderingLostButton/lexTenderingLostButton.js
@@ -0,0 +1,71 @@
+import { LightningElement,wire,track,api} from 'lwc';
+import { CurrentPageReference } from "lightning/navigation";
+import { CloseActionScreenEvent } from 'lightning/actions';
+import  init  from '@salesforce/apex/TenderingButtonController.initTenderingController';
+import  sqlResult  from '@salesforce/apex/TenderingButtonController.sqlResult';
+import { ShowToastEvent } from 'lightning/platformShowToastEvent';
+export default class lexTenderingLostButton extends LightningElement {
+    @api recordId;//褰撳墠杩欐潯鏁版嵁鐨刬d
+    id;//杩斿洖鍊肩殑id  Tender_information__c鎷涙爣椤圭洰鐨刬d
+    status;//鐘舵��
+    profileId;//profileId id
+    IsLoading = true;
+
+    @wire(CurrentPageReference)
+     getStateParameters(currentPageReference) {
+         if (currentPageReference) {
+           const urlValue = currentPageReference.state.recordId;
+           if (urlValue) {
+             let str = `${urlValue}`;
+             this.recordId = str;
+           }
+         }
+     }
+    
+
+    connectedCallback(){
+        init({
+            recordId: this.recordId
+        }).then(result => {
+                this.IsLoading = false;
+                this.id = result.Id;
+                this.status = result.status;
+                this.profileId = result.profileId.slice(0,15);
+                this.LoseButton();
+                this.dispatchEvent(new CloseActionScreenEvent());
+        })        
+    }
+
+    //鎷涙爣椤圭洰澶卞崟
+    LoseButton(){
+        sqlResult({id: this.id}).then(result=>{
+            //绠�妗f潈闄� 2S1_閿�鍞尰闄㈡媴褰� 2S4_閿�鍞鐞嗚�� 绯荤粺绠$悊鍛�
+            if (this.profileId != '00e10000000xnp2' && this.profileId != '00e10000000xnpH' && this.profileId != '00e10000000Y3o5') {
+                this.showToast("鎮ㄦ病鏈夋潈闄愶紝鏃犳硶鍒涘缓璇环鎻愪氦澶卞崟銆�","error");
+                return;
+            }
+            // 鍒ゆ柇鍐呴儴纭鐘舵��
+            if(this.status == '01.寰呯‘璁�'|| this.status == '02.涓嶇浉鍏�'){ 
+                this.showToast("鐘舵�佷负寰呯‘璁ゆ垨涓嶇浉鍏筹紝涓嶅彲浠ュ仛澶卞崟銆�","error");
+                return;
+            }
+            // 鍒ゆ柇鏄惁闇�瑕佹柊寤鸿浠�
+            if(this.status == '05.璇环涓�'|| this.status == '06.鎴愪氦' || this.status == '07.閮ㄥ垎鎴愪氦' || this.status == '08.澶卞崟' || result.length > 0){
+                if(confirm('姝ら」鐩凡鍏宠仈璇环锛岃纭疄鏄惁鏂板缓璇环鎻愪氦澶卞崟銆�')) {
+                    
+                }else{
+                    return;
+                }
+            }
+            window.open(`/apex/TenderLostPage?id=${this.id}`,'','height=500,width=800,top=200,left=250,location=no');
+        })
+    }
+    showToast(msg,type) {
+        const event = new ShowToastEvent({
+            message: msg,
+            variant: type
+        });
+        this.dispatchEvent(event);
+        this.dispatchEvent(new CloseActionScreenEvent());
+    }
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexTenderingLostButton/lexTenderingLostButton.js-meta.xml b/force-app/main/default/lwc/lexTenderingLostButton/lexTenderingLostButton.js-meta.xml
new file mode 100644
index 0000000..2b7649d
--- /dev/null
+++ b/force-app/main/default/lwc/lexTenderingLostButton/lexTenderingLostButton.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
diff --git a/force-app/main/default/lwc/lexUploadToRecognitionModel/__tests__/lexUploadToRecognitionModel.test.js b/force-app/main/default/lwc/lexUploadToRecognitionModel/__tests__/lexUploadToRecognitionModel.test.js
new file mode 100644
index 0000000..3986cf6
--- /dev/null
+++ b/force-app/main/default/lwc/lexUploadToRecognitionModel/__tests__/lexUploadToRecognitionModel.test.js
@@ -0,0 +1,25 @@
+import { createElement } from 'lwc';
+import LexUploadToRecognitionModel from 'c/lexUploadToRecognitionModel';
+
+describe('c-lex-upload-to-recognition-model', () => {
+    afterEach(() => {
+        // The jsdom instance is shared across test cases in a single file so reset the DOM
+        while (document.body.firstChild) {
+            document.body.removeChild(document.body.firstChild);
+        }
+    });
+
+    it('TODO: test case generated by CLI command, please fill in test logic', () => {
+        // Arrange
+        const element = createElement('c-lex-upload-to-recognition-model', {
+            is: LexUploadToRecognitionModel
+        });
+
+        // Act
+        document.body.appendChild(element);
+
+        // Assert
+        // const div = element.shadowRoot.querySelector('div');
+        expect(1).toBe(1);
+    });
+});
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexUploadToRecognitionModel/lexUploadToRecognitionModel.html b/force-app/main/default/lwc/lexUploadToRecognitionModel/lexUploadToRecognitionModel.html
new file mode 100644
index 0000000..87f391a
--- /dev/null
+++ b/force-app/main/default/lwc/lexUploadToRecognitionModel/lexUploadToRecognitionModel.html
@@ -0,0 +1,6 @@
+<template>
+    <div class="exampleHolder" if:true={IsLoading}>
+        <lightning-spinner alternative-text="Loading" size="medium"></lightning-spinner>
+        <lightning-button label="Show Toast" onclick={ShowToastEvent}></lightning-button>
+    </div>
+</template>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexUploadToRecognitionModel/lexUploadToRecognitionModel.js b/force-app/main/default/lwc/lexUploadToRecognitionModel/lexUploadToRecognitionModel.js
new file mode 100644
index 0000000..6e22dc1
--- /dev/null
+++ b/force-app/main/default/lwc/lexUploadToRecognitionModel/lexUploadToRecognitionModel.js
@@ -0,0 +1,133 @@
+import {
+    LightningElement,
+    wire,
+    api
+} from 'lwc';
+import {
+    CurrentPageReference
+} from "lightning/navigation";
+import {
+    CloseActionScreenEvent
+} from 'lightning/actions';
+import init from '@salesforce/apex/otherButtonMaintenanceContractCtl.init';
+import updateColunm from '@salesforce/apex/MaintenanceContractSetColunmWebService.updateColunm';
+import up2sap from '@salesforce/apex/MaintenanceContractWebService.up2sap';
+import { ShowToastEvent } from 'lightning/platformShowToastEvent';
+
+export default class LexUploadToRecognitionModel extends LightningElement {
+    @api recordId;
+    str;
+    IsLoading = true;
+    Id;
+    ContractQuotationOrNotC;
+    oldIsRecognitionModelC;
+    MaintenanceContractNoC;
+    uploadToRMTimeC;
+    uploadToSapTimeC;
+    PaymentPlanSumFirstC;
+
+    @wire(CurrentPageReference)
+    getStateParameters(currentPageReference) {
+        if (currentPageReference) {
+            const urlValue = currentPageReference.state.recordId;
+            if (urlValue) {
+                let str = `${urlValue}`;
+                this.recordId = str;
+            }
+        }
+    }
+
+    connectedCallback() {
+        console.log(this.recordId);
+        init({
+            recordId: this.recordId
+        }).then(result => {
+            console.log(result);
+            if (result != null) {
+                this.IsLoading = false;
+                this.Id = result.Id;
+                this.ContractQuotationOrNotC = result.ContractQuotationOrNotC;
+                this.oldIsRecognitionModelC = result.oldIsRecognitionModelC;
+                this.MaintenanceContractNoC = result.MaintenanceContractNoC;
+                this.uploadToSapTimeC = result.uploadToSapTimeC;
+                this.uploadToRMTimeC = result.uploadToRMTimeC;
+                this.PaymentPlanSumFirstC = result.PaymentPlanSumFirstC;
+
+                this.uploadToRecognitionModel();
+                this.dispatchEvent(new CloseActionScreenEvent());
+            }
+        }).catch(error => {
+            console.log(error);
+        }).finally(() => {
+
+        });
+    }
+
+    // 涓婁紶璁ゆ鍚堝悓
+    uploadToRecognitionModel() {
+        if (this.ContractQuotationOrNotC == '杩樻病鍋氭姤浠�') {
+            this.ShowToastEvent("鎮ㄨ繕娌℃湁鍋氬悎鍚屾姤浠凤紝涓嶈兘涓婁紶璁ゆ鍚堝悓銆�", "error") 
+            // alert("鎮ㄨ繕娌℃湁鍋氬悎鍚屾姤浠凤紝涓嶈兘涓婁紶璁ゆ鍚堝悓銆�");
+        } else if (this.MaintenanceContractNoC == undefined) {
+            this.ShowToastEvent('鍚堝悓鍙风爜涓虹┖锛屼笉鑳戒笂浼犺娆惧悎鍚屻��', "error") 
+            // alert('鍚堝悓鍙风爜涓虹┖锛屼笉鑳戒笂浼犺娆惧悎鍚屻��');
+        } else if (this.uploadToSapTimeC != undefined) {
+            this.ShowToastEvent('宸茬粡涓婁紶SAP锛屼笉鑳藉啀娆′笂浼犺娆惧悎鍚屻��', "error") 
+            // alert('宸茬粡涓婁紶SAP锛屼笉鑳藉啀娆′笂浼犺娆惧悎鍚屻��');
+        } else if (this.uploadToRMTimeC != undefined) {
+            this.ShowToastEvent('宸茬粡涓婁紶璁ゆ鍚堝悓锛屼笉鑳藉啀娆′笂浼犺娆惧悎鍚屻��', "error") 
+            // alert('宸茬粡涓婁紶璁ゆ鍚堝悓锛屼笉鑳藉啀娆′笂浼犺娆惧悎鍚屻��');
+        } else {
+            if (!this.oldIsRecognitionModelC) {
+                this.ShowToastEvent('缁忛攢鍟嗕负绌烘垨缁忛攢鍟嗕笉鏄厛娆惧璞★紝涓嶉渶瑕佷笂浼犺娆惧悎鍚屻��', "error") 
+                // alert('缁忛攢鍟嗕负绌烘垨缁忛攢鍟嗕笉鏄厛娆惧璞★紝涓嶉渶瑕佷笂浼犺娆惧悎鍚屻��');
+            } else if (this.PaymentPlanSumFirstC == undefined) {
+                this.ShowToastEvent('绗竴娆¤鍒掍粯娆鹃噾棰濅笉鑳戒负绌恒��', "error") 
+                // alert('绗竴娆¤鍒掍粯娆鹃噾棰濅笉鑳戒负绌恒��');
+            } else {
+                if (!confirm('璇风‘璁ゆ槸鍚﹁涓婁紶璁ゆ鍚堝悓銆�')) {
+                    return;
+                }
+                
+                updateColunm({
+                    mcid: this.Id
+                }).then(result => {
+                    console.log(result);
+                    if (result != '1') {
+                        this.ShowToastEvent('涓婁紶璁ゆ鍚堝悓澶辫触,鍥犱负 鏉ュ勾鍚堝悓鐩稿叧淇℃伅淇敼澶辫触', "error") 
+                        // alert('涓婁紶璁ゆ鍚堝悓澶辫触,鍥犱负 鏉ュ勾鍚堝悓鐩稿叧淇℃伅淇敼澶辫触');
+                        location.href = "/" + this.Id;
+                    }
+                }).catch(error => {
+                    console.log(error);
+                })
+
+                up2sap({
+                    mcid: this.Id
+                }).then(rtn => {
+                    console.log(rtn);
+                    if (rtn == '1') {
+                        this.ShowToastEvent("涓婁紶璁ゆ鍚堝悓鎴愬姛", "success") 
+                        // alert("涓婁紶璁ゆ鍚堝悓鎴愬姛");
+                        location.href = "/" + this.Id;
+                    } else {
+                        this.ShowToastEvent(rtn, "error") 
+                        // alert(rtn);
+                    }
+                }).catch(error => {
+                    console.log(error);
+                })
+            }
+        }
+    }
+
+    // 寮圭獥
+    ShowToastEvent(msg, type) {
+        const event = new ShowToastEvent({
+            title: '',
+            message: msg,
+            variant: type
+        });
+        this.dispatchEvent(event);
+    }
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexUploadToRecognitionModel/lexUploadToRecognitionModel.js-meta.xml b/force-app/main/default/lwc/lexUploadToRecognitionModel/lexUploadToRecognitionModel.js-meta.xml
new file mode 100644
index 0000000..3392981
--- /dev/null
+++ b/force-app/main/default/lwc/lexUploadToRecognitionModel/lexUploadToRecognitionModel.js-meta.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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
diff --git a/force-app/main/default/lwc/lexUploadToSap/__tests__/lexUploadToSap.test.js b/force-app/main/default/lwc/lexUploadToSap/__tests__/lexUploadToSap.test.js
new file mode 100644
index 0000000..d5f3d47
--- /dev/null
+++ b/force-app/main/default/lwc/lexUploadToSap/__tests__/lexUploadToSap.test.js
@@ -0,0 +1,25 @@
+import { createElement } from 'lwc';
+import LexUploadToSap from 'c/lexUploadToSap';
+
+describe('c-lex-upload-to-sap', () => {
+    afterEach(() => {
+        // The jsdom instance is shared across test cases in a single file so reset the DOM
+        while (document.body.firstChild) {
+            document.body.removeChild(document.body.firstChild);
+        }
+    });
+
+    it('TODO: test case generated by CLI command, please fill in test logic', () => {
+        // Arrange
+        const element = createElement('c-lex-upload-to-sap', {
+            is: LexUploadToSap
+        });
+
+        // Act
+        document.body.appendChild(element);
+
+        // Assert
+        // const div = element.shadowRoot.querySelector('div');
+        expect(1).toBe(1);
+    });
+});
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexUploadToSap/lexUploadToSap.html b/force-app/main/default/lwc/lexUploadToSap/lexUploadToSap.html
index d044dbb..87f391a 100644
--- a/force-app/main/default/lwc/lexUploadToSap/lexUploadToSap.html
+++ b/force-app/main/default/lwc/lexUploadToSap/lexUploadToSap.html
@@ -1,5 +1,6 @@
 <template>
     <div class="exampleHolder" if:true={IsLoading}>
         <lightning-spinner alternative-text="Loading" size="medium"></lightning-spinner>
+        <lightning-button label="Show Toast" onclick={ShowToastEvent}></lightning-button>
     </div>
 </template>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexUploadToSap/lexUploadToSap.js b/force-app/main/default/lwc/lexUploadToSap/lexUploadToSap.js
index 82f0cd4..5bd9188 100644
--- a/force-app/main/default/lwc/lexUploadToSap/lexUploadToSap.js
+++ b/force-app/main/default/lwc/lexUploadToSap/lexUploadToSap.js
@@ -14,6 +14,10 @@
 import updateFirstContract from '@salesforce/apex/updateFirstServiceContractWebService.updateFirstContract';
 import Check_plan from '@salesforce/apex/MaintenanceContractWebService.Check_plan';
 import up2sap from '@salesforce/apex/MaintenanceContractWebService.up2sap';
+import {
+    ShowToastEvent
+} from 'lightning/platformShowToastEvent';
+
 export default class LexUploadToSap extends LightningElement {
     @api recordId;
     str;
@@ -67,101 +71,85 @@
         });
     }
 
+    // 涓婁紶SAP
     uploadToSap() {
         if (this.MCApprovalStatusC != 'Pass') {
-            alert("鍚堝悓澶嶆牳鎵瑰噯鍚庢墠鍙互涓婁紶SAP銆�");
+            this.ShowToastEvent("鍚堝悓澶嶆牳鎵瑰噯鍚庢墠鍙互涓婁紶SAP銆�", "error")
+            // alert("鍚堝悓澶嶆牳鎵瑰噯鍚庢墠鍙互涓婁紶SAP銆�");
         } else if (this.MaintenanceContractNoC == undefined) {
-            alert('缁翠慨鍚堝悓绠$悊缂栫爜涓虹┖锛屼笉鑳戒笂浼燬AP銆�');
+            this.ShowToastEvent('缁翠慨鍚堝悓绠$悊缂栫爜涓虹┖锛屼笉鑳戒笂浼燬AP銆�', "error")
+            // alert('缁翠慨鍚堝悓绠$悊缂栫爜涓虹┖锛屼笉鑳戒笂浼燬AP銆�');
         } else if (this.uploadToSapTimeC != undefined) {
-            alert('宸茬粡涓婁紶SAP锛屼笉鑳介噸澶嶄笂浼犮��');
+            this.ShowToastEvent('宸茬粡涓婁紶SAP锛屼笉鑳介噸澶嶄笂浼犮��', "error")
+            // alert('宸茬粡涓婁紶SAP锛屼笉鑳介噸澶嶄笂浼犮��');
         } else {
-            //update wangweipeng 2021/11/20 start
-            //鍒ゆ柇鏄惁闇�瑕佸厛涓婁紶璁ゆ鍚堝悓鍚楋紝濡傛灉闇�瑕侀偅涔堝垽鏂粬鏄惁宸茬粡涓婁紶锛屽鏋滀笂浼狅紝閭d箞鍒ゆ柇浠栨槸鍚﹀畬鎴愯娆撅紝濡傛灉閮芥弧瓒筹紝閭d箞鎵嶈兘姝e父璧版帴鍙d笂浼燬AP
-            //鍒ゆ柇鏄娆惧悎鍚屽悧
             if (this.oldIsRecognitionModelC) {
-                //鍒ゆ柇鏄惁宸茬粡涓婁紶璁ゆ鍚堝悓
                 if (this.uploadToRMTimeC == undefined) {
-                    console.log("a");
-                    alert('褰撳墠缁翠慨鍚堝悓鐨勭粡閿�鍟嗘槸鍏堟瀵硅薄锛岄渶瑕佸厛銆愪笂浼犺娆惧悎鍚屻�戯紝鐒跺悗瀹屾垚璁ゆ浠ュ悗鎵嶈兘涓婁紶SAP銆�');
+                    this.ShowToastEvent('褰撳墠缁翠慨鍚堝悓鐨勭粡閿�鍟嗘槸鍏堟瀵硅薄锛岄渶瑕佸厛銆愪笂浼犺娆惧悎鍚屻�戯紝鐒跺悗瀹屾垚璁ゆ浠ュ悗鎵嶈兘涓婁紶SAP銆�', "error")
+                    // alert('褰撳墠缁翠慨鍚堝悓鐨勭粡閿�鍟嗘槸鍏堟瀵硅薄锛岄渶瑕佸厛銆愪笂浼犺娆惧悎鍚屻�戯紝鐒跺悗瀹屾垚璁ゆ浠ュ悗鎵嶈兘涓婁紶SAP銆�');
                     return;
                 } else {
-                    //鍒ゆ柇鏄惁瀹屾垚璁ゆ
                     if (!this.IsRecognitionModelTrueC) {
-                        console.log("b");
-                        alert('褰撳墠缁翠慨鍚堝悓娌℃湁瀹屾垚璁ゆ锛屼笉鑳戒笂浼燬AP銆�');
+                        this.ShowToastEvent('褰撳墠缁翠慨鍚堝悓娌℃湁瀹屾垚璁ゆ锛屼笉鑳戒笂浼燬AP銆�', "error")
+                        // alert('褰撳墠缁翠慨鍚堝悓娌℃湁瀹屾垚璁ゆ锛屼笉鑳戒笂浼燬AP銆�');
                         return;
                     }
                 }
             }
-            //update wangweipeng 2021/11/20 end
-            // sforce.connection.sessionId = this.api.sessionId;
-            // var mcid = this.Id;
-            // var result = sforce.apex.execute("MaintenanceContractSetColunmWebService", "updateColunm", {
-            //     mcid: mcid
-            // });
             updateColunm({
                 mcid: this.Id
-            }).then(result=>{
-                console.log("updateColunm" + result);
+            }).then(result => {
                 if (result != '1') {
-                    console.log("c");
-                    alert('涓婁紶SAP澶辫触,鍥犱负 鏉ュ勾鍚堝悓鐩稿叧淇℃伅淇敼澶辫触');
-                    //location.href = "/" + this.Id;
+                    this.ShowToastEvent('涓婁紶SAP澶辫触,鍥犱负 鏉ュ勾鍚堝悓鐩稿叧淇℃伅淇敼澶辫触', "error")
+                    // alert('涓婁紶SAP澶辫触,鍥犱负 鏉ュ勾鍚堝悓鐩稿叧淇℃伅淇敼澶辫触');
                 }
             });
-            
-            //棣栨鏈嶅姟鍚堝悓璧嬪��
-            // var updateResult = sforce.apex.execute("updateFirstServiceContractWebService", "updateFirstContract", {
-            //     mcid: mcid
-            // });
             updateFirstContract({
                 mcid: this.Id
-            }).then(result=>{
-                console.log("updateFirstContract:" + result);
+            }).then(result => {
                 if (result != '1') {
-                    alert(result);
+                    this.ShowToastEvent(result, "error")
+                    // alert(result);
                 }
             });
-            
-            //URF闄愭鍚堝悓2鏈� LY 20220811 start
             this.urfFlag = this.URFContractFC;
             this.rtn1 = '1';
             this.rtn = '1';
             if (this.urfFlag == 'false') {
-                // rtn1 = sforce.apex.execute("MaintenanceContractWebService", "Check_plan", {
-                //     mcidList: mcid
-                // });
                 Check_plan({
                     mcidList: this.Id
-                }).then(result=>{
-                    console.log("Check_plan:" + result);
+                }).then(result => {
                     this.rtn1 = result;
                 });
             }
-            console.log("rtn1" + this.rtn1);
-            //URF闄愭鍚堝悓2鏈� LY 20220811 end
             if (this.rtn1 == '1') {
-                // var rtn = sforce.apex.execute("MaintenanceContractWebService", "up2sap", {
-                //     mcid: mcid
-                // });
                 up2sap({
                     mcid: this.Id
-                }).then(result=>{
-                    console.log("up2sap:" + result);
+                }).then(result => {
                     this.rtn = result;
                 });
-                console.log("rtn" + this.rtn);
                 if (this.rtn == '1') {
-                    alert("涓婁紶SAP鎴愬姛");
+                    this.ShowToastEvent("涓婁紶SAP鎴愬姛", "success")
+                    // alert("涓婁紶SAP鎴愬姛");
                     window.location.replace("https://ocsm--partial.sandbox.lightning.force.com/lightning/r/Maintenance_Contract__c/" + this.recordId + "/view");
-                    //window.location.href = "/" + this.Id;
                 } else {
-                    alert(this.rtn);
+                    this.ShowToastEvent(this.rtn, "error")
+                    // alert(this.rtn);
                 }
             } else {
-                alert(this.rtn1);
+                this.ShowToastEvent(this.rtn1, "error")
+                // alert(this.rtn1);
             }
         }
     }
 
+    // 寮圭獥
+    ShowToastEvent(msg, type) {
+        const event = new ShowToastEvent({
+            title: '',
+            message: msg,
+            variant: type
+        });
+        this.dispatchEvent(event);
+    }
 }
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexVOCAnswer/lexVOCAnswer.js b/force-app/main/default/lwc/lexVOCAnswer/lexVOCAnswer.js
index 7915a17..c4b9a85 100644
--- a/force-app/main/default/lwc/lexVOCAnswer/lexVOCAnswer.js
+++ b/force-app/main/default/lwc/lexVOCAnswer/lexVOCAnswer.js
@@ -1,3 +1,11 @@
+/*
+ * @Description: 
+ * @version: 
+ * @Author: chen jing wu
+ * @Date: 2023-03-27 14:05:59
+ * @LastEditors: chen jing wu
+ * @LastEditTime: 2023-04-10 17:56:04
+ */
 import { LightningElement, wire, track, api } from "lwc";
 import { CurrentPageReference } from "lightning/navigation";
 import { CloseActionScreenEvent } from "lightning/actions";
@@ -11,6 +19,22 @@
   status;
   Isloading = true;
 
+  @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);
     init({
@@ -19,7 +43,6 @@
       .then((result) => {
         console.log(result);
         if (result != null) {
-          this.Isloading = false;
           this.status = result.status;
           this.update();
         }
@@ -60,6 +83,7 @@
         this.showToast(result,"error");
       }
       this.updateRecordView(this.recordId);
+      this.Isloading = false;
       this.dispatchEvent(new CloseActionScreenEvent());
     }).catch(error=>{
       console.log(error);
diff --git a/force-app/main/default/lwc/lexVOCCheck/lexVOCCheck.js b/force-app/main/default/lwc/lexVOCCheck/lexVOCCheck.js
index 2ba7b50..59e1cc3 100644
--- a/force-app/main/default/lwc/lexVOCCheck/lexVOCCheck.js
+++ b/force-app/main/default/lwc/lexVOCCheck/lexVOCCheck.js
@@ -16,6 +16,22 @@
     profileId;
     Isloading = true;
 
+    @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);
@@ -24,7 +40,7 @@
         }).then(result => {
             console.log(result);
             if (result != null) {  
-                this.Isloading = false;             
+          
                 this.status = result.status;
                 this.isVOC = result.isVOC;
                 this.personId = result.personId;
@@ -85,6 +101,7 @@
                 }else {
                     this.showToast(result,"error");
                 }
+                this.Isloading = false;   
                 this.dispatchEvent(new CloseActionScreenEvent());
             });
 
diff --git a/force-app/main/default/lwc/lexVOCConfirm/lexVOCConfirm.css b/force-app/main/default/lwc/lexVOCConfirm/lexVOCConfirm.css
new file mode 100644
index 0000000..68704c6
--- /dev/null
+++ b/force-app/main/default/lwc/lexVOCConfirm/lexVOCConfirm.css
@@ -0,0 +1,10 @@
+.confirmHolder{
+    position: relative;
+    display: inline-block;
+    width: 80px;
+    height: 80px;
+    text-align: center;
+}
+.container .uiContainerManager{
+	display: none !important;
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexVOCConfirm/lexVOCConfirm.html b/force-app/main/default/lwc/lexVOCConfirm/lexVOCConfirm.html
new file mode 100644
index 0000000..fd0bc74
--- /dev/null
+++ b/force-app/main/default/lwc/lexVOCConfirm/lexVOCConfirm.html
@@ -0,0 +1,6 @@
+<template>
+    <div class="confirmHolder" if:true={IsLoading}>
+        <lightning-spinner alternative-text="Loading" size="medium"></lightning-spinner>
+        <lightning-button label="Show Toast" onclick={ShowToastEvent}></lightning-button>
+    </div>
+</template>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexVOCConfirm/lexVOCConfirm.js b/force-app/main/default/lwc/lexVOCConfirm/lexVOCConfirm.js
new file mode 100644
index 0000000..b364850
--- /dev/null
+++ b/force-app/main/default/lwc/lexVOCConfirm/lexVOCConfirm.js
@@ -0,0 +1,104 @@
+/*
+ * @Description: 
+ * @version: 
+ * @Author: chen jing wu
+ * @Date: 2023-03-27 14:08:56
+ * @LastEditors: chen jing wu
+ * @LastEditTime: 2023-04-10 17:49:00
+ */
+import { LightningElement,wire,track,api} from 'lwc';
+import { CurrentPageReference } from "lightning/navigation";
+import { CloseActionScreenEvent } from 'lightning/actions';
+import { NavigationMixin } from 'lightning/navigation';
+import init  from '@salesforce/apex/ReportController.initForVOCConfirmButton';
+import  updateForVOCConfirmButton from '@salesforce/apex/ReportController.updateForVOCConfirmButton';
+import { updateRecord } from 'lightning/uiRecordApi';
+import { ShowToastEvent } from 'lightning/platformShowToastEvent';
+export default class LexVOCConfirm extends LightningElement {
+    @api recordId;
+    status;
+    VOCSatisfy;
+    VOCSatisfy1;
+    Isloading = true;
+    @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);
+        init({
+            recordId: this.recordId
+        }).then(result => {
+            console.log(result);
+            if (result != null) {
+                this.status = result.status;
+                this.VOCSatisfy = result.Satisfy;
+                this.VOCSatisfy1 = result.Satisfy1;
+                console.log(this.VOCSatisfy);
+                console.log(this.VOCSatisfy1);
+                console.log(this.status);
+                this.update();
+            }
+        }).catch(error => {
+            console.log("error");
+            console.log(error);
+        }).finally(() => {
+            
+        });
+        //window.location.replace("https://ocsm--partial.sandbox.lightning.force.com/lightning/r/Report__c/" + this.recordId + "/view");
+        this.updateRecordView(this.recordId);
+    }
+
+    updateRecordView(recordId) {
+        updateRecord({fields: { Id: recordId }});
+    }
+
+    showToast(msg,type) {
+        const event = new ShowToastEvent({
+            title: '',
+            message: msg,
+            variant: type
+        });
+        this.dispatchEvent(event);
+    }
+
+
+    update(){
+        if (this.status != "宸插洖绛�") {
+            this.showToast("涓嶆槸宸插洖绛斾笉鑳界偣鍑�","error");
+            this.dispatchEvent(new CloseActionScreenEvent());
+            return;
+            }
+            if (this.VOCSatisfy == undefined) {
+            this.showToast("璇烽�夋嫨鏄惁婊℃剰","error");
+            this.dispatchEvent(new CloseActionScreenEvent());
+            return;
+            }
+        updateForVOCConfirmButton({
+            recordId: this.recordId,
+            Satisfy: this.VOCSatisfy,
+            Satisfy1: this.VOCSatisfy1    
+        }).then(result=>{
+            this.updateRecordView(this.recordId);
+            this.showToast("鎴愬姛","success");
+            this.Isloading = false;
+            this.dispatchEvent(new CloseActionScreenEvent());
+        });
+
+        
+    }
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexVOCConfirm/lexVOCConfirm.js-meta.xml b/force-app/main/default/lwc/lexVOCConfirm/lexVOCConfirm.js-meta.xml
new file mode 100644
index 0000000..8b2c3d6
--- /dev/null
+++ b/force-app/main/default/lwc/lexVOCConfirm/lexVOCConfirm.js-meta.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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
diff --git a/force-app/main/default/lwc/lexVOCFinish/lexVOCFinish.js b/force-app/main/default/lwc/lexVOCFinish/lexVOCFinish.js
index 97c426c..44d128d 100644
--- a/force-app/main/default/lwc/lexVOCFinish/lexVOCFinish.js
+++ b/force-app/main/default/lwc/lexVOCFinish/lexVOCFinish.js
@@ -1,3 +1,11 @@
+/*
+ * @Description: 
+ * @version: 
+ * @Author: chen jing wu
+ * @Date: 2023-03-27 14:11:17
+ * @LastEditors: chen jing wu
+ * @LastEditTime: 2023-04-10 17:52:00
+ */
 import { api, wire,LightningElement } from 'lwc';
 import { CurrentPageReference } from "lightning/navigation";
 import { CloseActionScreenEvent } from 'lightning/actions';
@@ -12,6 +20,22 @@
     IsLoading = true;
     profileId;
 
+    @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);
         init({
@@ -19,7 +43,6 @@
         }).then(result => {
             console.log(result);
             if (result != null) {
-                this.IsLoading = false;
                 this.status = result.status;
                 this.profileId = result.profileId;
                 this.VOCFinish();
@@ -64,6 +87,7 @@
             }).then(result =>{
                 this.showToast("鎴愬姛","success");
                 this.updateRecordView(this.recordId);
+                this.IsLoading = false;
                 this.dispatchEvent(new CloseActionScreenEvent());
             });
     }
diff --git a/force-app/main/default/lwc/lexVOCSubmit/lexVOCSubmit.js b/force-app/main/default/lwc/lexVOCSubmit/lexVOCSubmit.js
index e95386d..93f5e5f 100644
--- a/force-app/main/default/lwc/lexVOCSubmit/lexVOCSubmit.js
+++ b/force-app/main/default/lwc/lexVOCSubmit/lexVOCSubmit.js
@@ -1,3 +1,11 @@
+/*
+ * @Description: 
+ * @version: 
+ * @Author: chen jing wu
+ * @Date: 2023-03-27 13:39:23
+ * @LastEditors: chen jing wu
+ * @LastEditTime: 2023-04-10 17:57:16
+ */
 import { LightningElement,wire,track,api} from 'lwc';
 import { CurrentPageReference } from "lightning/navigation";
 import { CloseActionScreenEvent } from 'lightning/actions';
@@ -11,6 +19,22 @@
     createdById;
     status;
     IsLoading = true;
+
+    @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);
@@ -22,7 +46,6 @@
                 this.status = result.status;
                 this.createdById = result.createdById;
                 this.Submit();
-                this.IsLoading = false;
                 //window.location.replace("https://ocsm--partial.sandbox.lightning.force.com/lightning/r/Report__c/" + this.recordId + "/view");
             }
         }).catch(error => {
@@ -59,6 +82,7 @@
             }).then(result =>{
                 this.showToast("鎴愬姛","success");
                 this.updateRecordView(this.recordId);
+                this.IsLoading = false;
                 this.dispatchEvent(new CloseActionScreenEvent());
             });
     }
diff --git a/force-app/main/default/lwc/lexYanshoudanRequest/__tests__/lexYanshoudanRequest.test.js b/force-app/main/default/lwc/lexYanshoudanRequest/__tests__/lexYanshoudanRequest.test.js
new file mode 100644
index 0000000..02e891b
--- /dev/null
+++ b/force-app/main/default/lwc/lexYanshoudanRequest/__tests__/lexYanshoudanRequest.test.js
@@ -0,0 +1,25 @@
+import { createElement } from 'lwc';
+import LexYanshoudanRequest from 'c/lexYanshoudanRequest';
+
+describe('c-lex-yanshoudan-request', () => {
+    afterEach(() => {
+        // The jsdom instance is shared across test cases in a single file so reset the DOM
+        while (document.body.firstChild) {
+            document.body.removeChild(document.body.firstChild);
+        }
+    });
+
+    it('TODO: test case generated by CLI command, please fill in test logic', () => {
+        // Arrange
+        const element = createElement('c-lex-yanshoudan-request', {
+            is: LexYanshoudanRequest
+        });
+
+        // Act
+        document.body.appendChild(element);
+
+        // Assert
+        // const div = element.shadowRoot.querySelector('div');
+        expect(1).toBe(1);
+    });
+});
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexYanshoudanRequest/lexYanshoudanRequest.html b/force-app/main/default/lwc/lexYanshoudanRequest/lexYanshoudanRequest.html
new file mode 100644
index 0000000..87f391a
--- /dev/null
+++ b/force-app/main/default/lwc/lexYanshoudanRequest/lexYanshoudanRequest.html
@@ -0,0 +1,6 @@
+<template>
+    <div class="exampleHolder" if:true={IsLoading}>
+        <lightning-spinner alternative-text="Loading" size="medium"></lightning-spinner>
+        <lightning-button label="Show Toast" onclick={ShowToastEvent}></lightning-button>
+    </div>
+</template>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexYanshoudanRequest/lexYanshoudanRequest.js b/force-app/main/default/lwc/lexYanshoudanRequest/lexYanshoudanRequest.js
new file mode 100644
index 0000000..84fe55d
--- /dev/null
+++ b/force-app/main/default/lwc/lexYanshoudanRequest/lexYanshoudanRequest.js
@@ -0,0 +1,79 @@
+import {
+    LightningElement,
+    wire,
+    api
+} from 'lwc';
+import {
+    CurrentPageReference
+} from "lightning/navigation";
+import {
+    CloseActionScreenEvent
+} from 'lightning/actions';
+import init from '@salesforce/apex/otherButtonRepairController.init';
+import updateYanshoudan from '@salesforce/apex/otherButtonRepairController.updateYanshoudan';
+import {
+    ShowToastEvent
+} from 'lightning/platformShowToastEvent';
+
+export default class LexYanshoudanRequest extends LightningElement {
+    @api recordId;
+    str;
+    IsLoading = true;
+    Id;
+
+    @wire(CurrentPageReference)
+    getStateParameters(currentPageReference) {
+        if (currentPageReference) {
+            const urlValue = currentPageReference.state.recordId;
+            if (urlValue) {
+                let str = `${urlValue}`;
+                this.recordId = str;
+            }
+        }
+    }
+
+    connectedCallback() {
+        console.log(this.recordId);
+        init({
+            recordId: this.recordId
+        }).then(result => {
+            console.log(result);
+            if (result != null) {
+                this.IsLoading = false;
+                this.Id = result.Id;
+
+                this.YanshoudanRequest();
+                this.dispatchEvent(new CloseActionScreenEvent());
+            }
+        }).catch(error => {
+            console.log(error);
+        }).finally(() => {
+
+        });
+    }
+
+    // 楠屾敹鍗曞洖鏀剁敵璇�
+    YanshoudanRequest() {
+        updateYanshoudan({
+            recordId: this.Id
+        }).then(result => {
+            console.log(result);
+            if (result.length > 0) {
+                var indexs = result.indexOf(": ")
+                var resolves = result.substring(indexs + 1, result.length);
+                alert(resolves);
+            }
+            location.reload();
+        })
+    }
+
+    // 寮圭獥
+    ShowToastEvent(msg, type) {
+        const event = new ShowToastEvent({
+            title: '',
+            message: msg,
+            variant: type
+        });
+        this.dispatchEvent(event);
+    }
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexYanshoudanRequest/lexYanshoudanRequest.js-meta.xml b/force-app/main/default/lwc/lexYanshoudanRequest/lexYanshoudanRequest.js-meta.xml
new file mode 100644
index 0000000..3392981
--- /dev/null
+++ b/force-app/main/default/lwc/lexYanshoudanRequest/lexYanshoudanRequest.js-meta.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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
diff --git a/force-app/main/default/lwc/oshRecieved/oshRecieved.js b/force-app/main/default/lwc/oshRecieved/oshRecieved.js
index e32ff18..12ad641 100644
--- a/force-app/main/default/lwc/oshRecieved/oshRecieved.js
+++ b/force-app/main/default/lwc/oshRecieved/oshRecieved.js
@@ -33,7 +33,7 @@
         }).then(result => {
             this.IsLoading = false;
             this.qisReportId = result.Id;
-            this.qisStatus = result.QIStatus;
+            this.qisStatus = result.qIStatus;
             console.log('this.qisStatus='+this.qisStatus);
          	if (this.qisStatus!='OSH妫�娴嬬敵璇�' && this.qisStatus!='瀹屾瘯') {
                 const evt = new ShowToastEvent({

--
Gitblit v1.9.1