zhangchunxu
2023-08-02 87d855494227ac4727467be864c4756820a51dc3
force-app/main/default/lwc/lexAddSubmitApprovalProcess/lexAddSubmitApprovalProcess.js
@@ -3,9 +3,12 @@
import { ShowToastEvent } from 'lightning/platformShowToastEvent';
import { CurrentPageReference,NavigationMixin } from 'lightning/navigation';
import { updateRecord } from 'lightning/uiRecordApi';
import LightningConfirm from 'lightning/confirm';
import init from '@salesforce/apex/LexAddSubmitApprovalProcessController.init';
import submitApproval from '@salesforce/apex/LexAddSubmitApprovalProcessController.submitApproval';
import setSObjectShare from '@salesforce/apex/ControllerUtil.setSObjectShare';
import changeAddApprovalStatus from '@salesforce/apex/LexAddSubmitApprovalProcessController.changeAddApprovalStatus';
import init from '@salesforce/apex/AddSubmitApprovalProcessController.init';
import setSObjectShare from '@salesforce/apex/ControllerUtil.setSObjectShare'
export default class lexAddSubmitApprovalProcess extends LightningElement {
   @api recordId;
   IsLoading = true;
@@ -26,172 +29,177 @@
      init({
         recordId: this.recordId
      }).then(result=>{
         console.log('result==='+JSON.stringify(result));
         if(JSON.stringify(result) == '{}'){
            this.ToastShow('没有查到需要的数据','warning');
            return;
         }
         if(result.addApprovalStatus != '草案中' || result.detailSize == 0){
            this.ToastShow('没有需要审批的追加附属品');
            this.ToastShow('没有需要审批的追加附属品','warning');
                return;
         }
         if (!confirm("一旦提交此记录以待批准,根据您的设置您可能不再能够编辑此记录或将他从批准过程中调回。是否继续?")) {
            this.dispatchEvent(new CloseActionScreenEvent());
            return;
         }
         // 希望到货日不能早于申请提交日-0418追加
         //if ('{!Rental_Apply__c.Request_shipping_day__c}' < '{!TODAY()}') {
         // alert('希望到货日不能早于申请提交日');
         // return;
         // }
         if(result.repairId != null){
            if(result.demoPurpose1 == '维修代用' && result.demoPurpose2 == '一般用户'){
               if(result.repairEstimatedDateFormula == null){
                  this.ToastShow('一般维修无报价日,不可借用备品');
                      return;
               }else if(result.repairEstimatedDateFormula <'2019-07-01' && result.agreedDate == null){
                  this.ToastShow('报价日在2019/7/1之前且户同意日为空,不可借用备品');
                      return;
         // if (!confirm("一旦提交此记录以待批准,根据您的设置您可能不再能够编辑此记录或将他从批准过程中调回。是否继续?")) {
         //    this.dispatchEvent(new CloseActionScreenEvent());
         //    return;
         // }
         LightningConfirm.open({
               message: "一旦提交此记录以待批准,根据您的设置您可能不再能够编辑此记录或将他从批准过程中调回。是否继续?",
               variant: 'headerless',
               label: '提示信息',
               // setting theme would have no effect
           }).then(submit=>{
              if(!submit){
                 this.dispatchEvent(new CloseActionScreenEvent());
                 return;
              }else{
               // 希望到货日不能早于申请提交日-0418追加
               //if ('{!Rental_Apply__c.Request_shipping_day__c}' < '{!TODAY()}') {
               // alert('希望到货日不能早于申请提交日');
               // return;
               // }
               console.log(JSON.stringify(result));
               if(result.repairId != null){
                  if(result.demoPurpose1 == '维修代用' && result.demoPurpose2 == '一般用户'){
                     if(result.repairEstimatedDateFormula == null){
                        this.ToastShow('一般维修无报价日,不可借用备品','warning');
                            return;
                     }else if(result.repairEstimatedDateFormula <'2019-07-01' && result.agreedDate == null){
                        this.ToastShow('报价日在2019/7/1之前且户同意日为空,不可借用备品','warning');
                            return;
                     }
                  }
                  //备品申请 过去历史转移
                  if(result.recordTypeId != result.demoRequestPastDataId && result.newProductGuaranteeObject=='2: 服务多年保修' && (result.assetModelNo=='CV-V1' ||result.assetModelNo=='CV-V1(A)'||result.assetModelNo=='CV-V1(B)'||result.assetModelNo=='GIF-LV1'||result.assetModelNo=='CF-LV1L'||result.assetModelNo=='CF-LV1I'||result.assetModelNo=='MAJ-1910') &&(result.demoPurpose2=='一般用户'||result.demoPurpose2=='再修理')){
                     this.ToastShow('奥辉设备,保修期内不提供备品.','warning');
                         return;
                  }
               }
            }
            if(result.recordTypeId !='01210000000RHIn' && result.newProductGuaranteeObject=='2: 服务多年保修' && (result.assetModelNo=='CV-V1' ||result.assetModelNo=='CV-V1(A)'||result.assetModelNo=='CV-V1(B)'||result.assetModelNo=='GIF-LV1'||result.assetModelNo=='CF-LV1L'||result.assetModelNo=='CF-LV1I'||result.assetModelNo=='MAJ-1910') &&(result.demoPurpose2=='一般用户'||result.demoPurpose2=='再修理')){
               this.ToastShow('奥辉设备,保修期内不提供备品.');
                   return;
            }
         }
               if(result.campaignId!=null || result.campaignId!=''){
                  if(result.campaignStatus == '草案中'){
                     this.ToastShow('学会状态为草案中,不能提交','warning');
                     return;
                  }
                  if(result.campaignStatus == '申请中'){
                     this.ToastShow('学会状态为申请中,不能提交','warning');
                     return;
                  }
                  if(result.campaignStatus == '已结束'){
                     this.ToastShow('学会状态为已结束,不能提交','warning');
                     return;
                  }
                  if(result.campaignStatus == '已提交报告'){
                     this.ToastShow('学会状态为已提交报告,不能提交','warning');
                     return;
                  }
                  if(result.campaignStatus == '取消申请中'){
                     this.ToastShow('学会状态为取消申请中,不能提交','warning');
                     return;
                  }
                  if(result.campaignStatus == '取消'){
                     this.ToastShow('学会状态为取消,不能提交','warning');
                     return;
                  }
               }
         if(result.campaignId!=null || result.campaignId!=''){
            if(result.rentalApplyFlag == '草案中'){
               this.ToastShow('学会状态为草案中,不能提交');
               return;
            }
            if(result.rentalApplyFlag == '申请中'){
               this.ToastShow('学会状态为申请中,不能提交');
               return;
            }
            if(result.rentalApplyFlag == '已结束'){
               this.ToastShow('学会状态为已结束,不能提交');
               return;
            }
            if(result.rentalApplyFlag == '已提交报告'){
               this.ToastShow('学会状态为已提交报告,不能提交');
               return;
            }
            if(result.rentalApplyFlag == '取消申请中'){
               this.ToastShow('学会状态为取消申请中,不能提交');
               return;
            }
            if(result.rentalApplyFlag == '取消'){
               this.ToastShow('学会状态为取消,不能提交');
               return;
            }
         }
               if(result.qISNumber!=null || result.qISNumber!=''){
                  if(result.nextAction=='送回'){
                     this.ToastShow('QIS 已送回,不能再申请备品了','warning');
                     return;
                  }
               }
         if(result.qISNumber!=null || result.qISNumber!=''){
            if(result.nextAction=='送回'){
               this.ToastShow('QIS 已送回,不能再申请备品了');
               return;
            }
         }
               //share
               var userAccess = new Array();
               userAccess.push(result.applyUserId + '_Edit');
         // share
         var userAccess = new Array();
         userAccess.push(result.applyUserId + '_Edit');
               //SWAG-BZMA8W 去掉 服务经理部长共享 start
               //update lxy DLIU-BZNBG9 去掉服务经理部长共享
               //userAccess.push('{!Rental_Apply__c.JingliApprovalManagerId__c}_Read');
               //userAccess.push('{!Rental_Apply__c.SalesManagerId__c}_Read');//20210727 ljh SFDC-C54C33 update 共享触发器完成
               //update lxy DLIU-BZNBG9 去掉服务经理部长共享
               //userAccess.push('{!Rental_Apply__c.BuchangApprovalManagerId__c}_Read');
               //SWAG-BZMA8W 去掉 服务经理部长共享 end
               //userAccess.push('{!Rental_Apply__c.BuchangApprovalManagerSalesId__c}_Read');//20210727 ljh SFDC-C54C33 update 共享触发器完成
               //userAccess.push('{!Rental_Apply__c.ZongjianApprovalManagerId__c}_Read');//20210727 ljh SFDC-C54C33 update 共享触发器完成
               //userAccess.push('{!Rental_Apply__c.Status__c}_Read');
         //SWAG-BZMA8W 去掉 服务经理部长共享 start
         //update lxy DLIU-BZNBG9 去掉服务经理部长共享
         //userAccess.push('{!Rental_Apply__c.JingliApprovalManagerId__c}_Read');
         //userAccess.push('{!Rental_Apply__c.SalesManagerId__c}_Read');//20210727 ljh SFDC-C54C33 update 共享触发器完成
         //update lxy DLIU-BZNBG9 去掉服务经理部长共享
         //userAccess.push('{!Rental_Apply__c.BuchangApprovalManagerId__c}_Read');
         //SWAG-BZMA8W 去掉 服务经理部长共享 end
         //userAccess.push('{!Rental_Apply__c.BuchangApprovalManagerSalesId__c}_Read');//20210727 ljh SFDC-C54C33 update 共享触发器完成
         //userAccess.push('{!Rental_Apply__c.ZongjianApprovalManagerId__c}_Read');//20210727 ljh SFDC-C54C33 update 共享触发器完成
         //userAccess.push('{!Rental_Apply__c.Status__c}_Read');
               console.log('参数==='+result.rentalApplyId+' '+userAccess+' '+result.ownerId);
               setSObjectShare({
                  sobjectName:'Rental_Apply__Share',
                  rowCause:'ApplyUserShare__c',
                  parentId:result.rentalApplyId,
                  userAccess:userAccess,
                  ownerId:result.ownerId
               }).then(res=>{
                  if(res!='OK'){
                     this.ToastShow(res,'warning');
                     return;
                  }else{
                     console.log('setSObjectShareSuccess====OK');
                     //追加备品申请状态确认,已经提交过的申请,不能重复提交Status__c
                     if (result.rentalApplyStatus != '已批准' && result.rentalApplyStatus != '已出库指示') {
                        this.ToastShow('请备品申请状态确认,申请状态已批准后才可以提交追加审批','warning');
                        return;
                     }
         setSObjectShare({
            sobjectName:'Rental_Apply__Share',
            rowCause:'ApplyUserShare__c',
            parentId:result.rentalApplyId,
            userAccess:userAccess,
            ownerId:result.ownerId
         }).then(res=>{
            if(res!='OK'){
               this.ToastShow(res);
               return;
            }
         }).catch(err=>{
            console.log('setSObjectShareErr====',err);
         })
         var request = new sforce.ProcessSubmitRequest();
         request.objectId = "{!Rental_Apply__c.Id}";
         var processResults = sforce.connection.process([request]);
         if (processResults[0].errors != null) {
            var back = new sforce.SObject("Rental_Apply__c");
            back.Id = "{!Rental_Apply__c.Id}";
            back.Add_Approval_Status__c = "草案中";
            var backResult = sforce.connection.update([back]);
            backMessages = this.getConnectDMLErrorMessages(backResult);
            if (backMessages.length > 0) {
            alert(backMessages.join("\n"));
            return;
            }
            var errmsg = processResults[0].errors.message.toString();
            alert(errmsg);
            return;
         }
          updateRecord({fields: { Id: this.recordId }});
                     changeAddApprovalStatus({
                        recordId: this.recordId,
                        status: '填写完毕'
                     }).then(changeResult=>{
                        if(changeResult == '更新成功'){
                           submitApproval({
                              recordId: this.recordId
                           }).then(submitApprovalRes=>{
                              if(submitApprovalRes == 'OK'){
                                 this.ToastShow('提交追加待审批成功','success');
                                 this.updateRecordView(this.recordId);
                              }else{
                                 this.ToastShow('追加待审批失败','ERROR');
                              }
                           })
                        }else{
                           this.ToastShow(changeResult,'error');
                        }
                     })
                  }
               }).catch(err=>{
                  console.log('setSObjectShareErr===='+err);
               })
             }
           })
      }).catch(err=>{
         console.log('sErr====',err);
      })
         console.log('====1111====',err);
      })
   }
   ToastShow(msg){
   ToastShow(msg,type){
      const evt = new ShowToastEvent({
            title : msg,
            message: '',
            variant: 'warning'
            //title : msg,
            message: msg,
            variant: type
        });
        this.dispatchEvent(evt);
        this.dispatchEvent(new CloseActionScreenEvent());
   }
   getConnectDMLErrorMessages(results){
      var messages = [],
      i = 0,
      len = results.length,
      r;
      for (; i < len; i++) {
         r = results[i];
         if (!r.getBoolean("success")) {
            messages = messages.concat(this.getConnectDMLMessagesOfAResult(r));
         }
      }
      return messages;
   }
   updateRecordView(recordId) {
        updateRecord({fields: { Id: recordId }});
    }
   getConnectDMLMessagesOfAResult(res){
      var messages = [],
      errors = res.getArray("errors"),
      i = 0,
      len = errors.length,
      e;
      for (; i < len; i++) {
      e = errors[i];
      messages.push(e.message + " " + this.getConnectDMLErrorFields(e));
      }
      return messages;
   }
   getConnectDMLErrorFields(error){
      var fields = error.getArray('fields');
      if (fields.length > 0) {
      return "[" + fields.join(",") + "]"
      } else {
         return "";
      }
   }
    async handleConfirmClick(msg) {
        const result = await LightningConfirm.open({
            message: msg,
            variant: 'headerless',
            label: 'this is the aria-label value'
        });
        if (result) {
            this.ll();
        } else {
            window.history.go(-1);
        }
    }
}