// author:kkbes OPDPlanc_c 提交待审批 import LightningConfirm from 'lightning/confirm'; import { LightningElement, track, wire,api } from 'lwc'; import { CurrentPageReference } from "lightning/navigation"; import { CloseActionScreenEvent } from 'lightning/actions'; import { ShowToastEvent } from 'lightning/platformShowToastEvent'; import lwcCSS from '@salesforce/resourceUrl/lwcCSS'; import {loadStyle} from 'lightning/platformResourceLoader'; import init from '@salesforce/apex/LexOPDSupplementaryController.init2'; import NewAndUpdateOPDStatus from '@salesforce/apex/LexOPDSupplementaryController.NewAndUpdateOPDStatus'; // import UpdateSign from '@salesforce/apex/LexOPDSupplementaryController.UpdateSign'; import STATUS_PROCESS_STATE from '@salesforce/label/c.StatusProcessState'; import { updateRecord } from 'lightning/uiRecordApi'; import UserInfo_Owner from '@salesforce/apex/LexOPDSupplementaryController.UserInfo_Owner'; import newApply from '@salesforce/apex/lexNewSparePartsLoanApplicationCtl.newApplyInit'; import newApplyInitApp from '@salesforce/apex/lexNewSparePartsLoanApplicationCtl.newApplyInitApp'; import sendFailEmail from '@salesforce/apex/LexOPDSupplementaryController.sendTemperatureEmail'; import newRentalApply from '@salesforce/apex/LexOPDSupplementaryController.newRentalApply'; const event1 = new ShowToastEvent({ message: "只有草案中才可以进行提交审批!", variant : 'error', mode : 'sticky' }); const event2 = new ShowToastEvent({ message: "请上传文件证明!", variant : 'error', mode : 'sticky' }); const event3 = new ShowToastEvent({ message: "计划出借备品信息必须填写!", variant : 'error', mode : 'sticky' }); export default class lexOPDPlanCommitNeedApproval extends LightningElement { @api recordId; OPDPlan; IsLoading=true; opdCampaignTypeId; opdInternalinchargeprovince; @track proSameNum; @track proModelNum; @track proStopNum; @track proNewNum; @track proAccSameNum; @track renAppName; @track RepeatRentalSign = false; @track StatusProcessState=STATUS_PROCESS_STATE; @track rentalReson1; @wire(CurrentPageReference) getStateParameters(currentPageReference) { if (currentPageReference) { const urlValue = currentPageReference.state.recordId; if (urlValue) { let str = `${urlValue}`; this.recordId = str; } } } connectedCallback(){ Promise.all([ loadStyle(this, lwcCSS) ]); init({ recordId: this.recordId }).then(result => { if (result != null) { this.rentalReson1 = result.rentalReson; this.OPDPlan = result.opdPlanRecord; this.proSameNum = result.proSameNum; this.proModelNum = result.proModelNum; this.proStopNum = result.proStopNum; this.proNewNum = result.proNewNum; this.proAccSameNum = result.proAccSameNum; this.renAppName = result.renAppName; this.opdStatusProcessState = result.opdStatusProcessState; this.opdCampaignTypeId = result.opdCampaignTypeId; this.opdInternalinchargeprovince = result.opdInternalinchargeprovince; this.commitNeedApproval().then(result=>{ this.IsLoading=false; this.dispatchEvent(new CloseActionScreenEvent()); }); } }).catch(error => { const eventInItError = new ShowToastEvent({ message: error.message, variant : 'error', mode : 'sticky' }); this.dispatchEvent(eventInItError); }); } async commitNeedApproval(){ var changeFlg=0; //0.当前状态(只有草案中才可以进行审批) var NowStatus = this.OPDPlan.Status__c; //获取出借目的 var RentalReson__c = this.OPDPlan.RentalReson__c; //获取附件证明 var AttachmentCertificate__c = this.OPDPlan.AttachmentCertificate__c; //获取是否需要填写报告书 var NeedReport = this.OPDPlan.NeedReport__c; var IFApproved = this.OPDPlan.IF_Approved__c; var ApprovedNo = this.OPDPlan.Approved_No__c; var ApprovedStatus = this.OPDPlan.Approved_Status__c; var RentalApply2 = this.OPDPlan.Rental_Apply2__c; var HaveValue = this.OPDPlan.Rental_Apply2__c; var OPDType = this.OPDPlan.OPDType__c; var CampaignId = this.OPDPlan.Campaign__c; var Days = this.OPDPlan.Rental_Apply_Flag__c; var CampaignTypeId = this.OPDPlan.CampaignRecodeTypeId__c; var cp = this.OPDPlan.Internal_in_charge_province__c; var up = "{!Text($User.Province__c)}"; var ups = up.slice(0, 2); var CampaignStatus = this.OPDPlan.CampaignStatus__c; var OriginalOpdPlanApplication = this.OPDPlan.OriginalOpdPlanApplication__c; var opdAccountLaboratory = this.OPDPlan.Account_Laboratory__c; var rentalReson = this.OPDPlan.RentalReson__c; var StayOrNot = this.OPDPlan.StayOrNot__c; if(NowStatus != "草案中"){ this.dispatchEvent(event1); return; } if((RentalReson__c == '演示'||RentalReson__c == '无法进入手术室跟台') && !AttachmentCertificate__c && NeedReport=='否'){ this.dispatchEvent(event2); return; } // 计划出借备品信息必须填写 var PlanProdDetail = this.OPDPlan.PlanProdDetail__c; if(PlanProdDetail == '' || PlanProdDetail == undefined){ this.dispatchEvent(event3); return; } //2023-11-28 Add by du Start 防止出借目的修改,提交时存在不符合条件的数据 if (this.proStopNum == 1 || this.proModelNum == 1) { this.showToast('OPD计划下存在不符合出借目的的备品数据。','error'); return; } //2023-12-15 Add by du Start 新产品评价下的产品至少要有一个新产品标记的产品存在 if (this.proNewNum === 0 && this.rentalReson1 === '新产品评价') { this.showToast('新产品试用时,至少要有一个新产品。','error'); return; } //同一科室下,进行关联性验证 if (this.proSameNum === 0) { this.showToast('出借备品明细至少有一个和关联的询价报价产品相符, 请同步报价产品。','error'); return; } //同一科室下,进行重复性验证 console.log('this.proAccSameNum----------' + this.rentalReson1); if (this.proAccSameNum !== 0 && this.rentalReson1 == 'OPD'){ const result3 = await LightningConfirm.open({ message: '同医院同科室借用重复型号产品(' + this.renAppName + '),审批到副总裁, 请确定是否继续申请借用?', variant: 'headerless', label: 'this is the aria-label value', }); if(!result3){ return; }else{ this.RepeatRentalSign = true; } } // 2023-11-28 Add by du End //2.提示 const result1 = await LightningConfirm.open({ message: '一旦提交此记录以待批准,根据您的设置您可能不再能够编辑此记录或将他从批准过程中调回。是否继续?', variant: 'headerless', label: 'this is the aria-label value', }); if(!result1){ return; } //2022-07-20 zyh var RentalReson = this.OPDPlan.RentalReson__c; var Related_Opportunity1_ID = this.OPDPlan.Related_Opportunity1_ID__c; var Related_Opportunity2_ID = this.OPDPlan.Related_Opportunity2_ID__c; if (RentalReson == "OPD" && (Related_Opportunity1_ID == undefined || Related_Opportunity1_ID == "" ) && (Related_Opportunity2_ID == undefined || Related_Opportunity2_ID == "" ) ){ const result2 = await LightningConfirm.open({ message: '无询价OPD申请将审批到副总裁', variant: 'headerless', label: 'this is the aria-label value', }); if(!result2){ return; } } //20231008 sx 借用机会可视化-提交审批逻辑改造 start if(StayOrNot == '已离职'){ this.showToast('所有人已经离职,请联系系统管理员修改所有人。','warning'); sendFailEmail({opdName:this.OPDPlan.Name ,ErrorMessage: '所有人已经离职,请联系系统管理员修改所有人。' , recordId: this.recordId}); return; } if(IFApproved && (ApprovedNo == '' || ApprovedNo == undefined)){ this.showToast('需要决裁时,决裁编码不能为空','warning'); sendFailEmail({opdName:this.OPDPlan.Name ,ErrorMessage: '需要决裁时,决裁编码不能为空' , recordId: this.recordId}); return; } if (IFApproved && (ApprovedNo != '' || ApprovedNo == undefined) && this.opdStatusProcessState.indexOf(ApprovedStatus)!=-1 && ApprovedStatus != '草稿'){ this.showToast('已申请决裁但决裁状态不符合条件','error'); sendFailEmail({opdName:this.OPDPlan.Name ,ErrorMessage: '已申请决裁但决裁状态不符合条件' , recordId: this.recordId}); return; } if((HaveValue!= null || HaveValue!= undefined) && OPDType != '学会'){ this.showToast('一个OPD计划只可关联创建一个备品申请单','error'); sendFailEmail({opdName:this.OPDPlan.Name ,ErrorMessage: '一个OPD计划只可关联创建一个备品申请单' , recordId: this.recordId}); return; } //2022-07-20 zyh await NewAndUpdateOPDStatus({Id : this.OPDPlan.Id, RepeatRentalSign : this.RepeatRentalSign}).then(result=>{ if(result!='success'){ const eventError = new ShowToastEvent({ message:result, variant:'error', mode:'sticky' }); changeFlg+=1; this.dispatchEvent(eventError); }else{ console.log('NewAndUpdateOPDStatus======'+result); } }); if(changeFlg!=0){ return; } await UserInfo_Owner({}).then(res=>{ if (OPDType == '学会' && CampaignId != '') { let campaignRecodeType = CampaignTypeId.slice(0,15); let getCampaignRecodeType = opdCampaignTypeId.slice(0,15); let ups = res.userProvince.slice(0, 2); if (campaignRecodeType != getCampaignRecodeType && res.userJobCategory == '销售服务' ) { this.showToast('FSE不能申请该学会类型备品','warning'); return; }else if ((res.userJobCategory == '销售服务' || res.userJobCategory == '支援') && campaignRecodeType != getCampaignRecodeType && opdInternalinchargeprovince.indexOf(ups) == -1) { this.showToast("与FSE所在省一致,才可使用备品",'warning'); return; }else if(CampaignStatus == '已结束'){ this.showToast("已结束,不能申请",'warning'); return; }else if(CampaignStatus == '已提交报告'){ this.showToast("已提交报告,不能申请",'warning'); return; }else if(CampaignStatus == '取消申请中'){ this.showToast("取消申请中,不能申请",'warning'); return; }else if(CampaignStatus == '取消'){ this.showToast("已经取消,不能申请",'warning'); return; } } }) newRentalApply({ recordId: this.recordId }).then(res=>{ console.log('newRentalApply======'+res); }).catch(err=>{ console.log(err) }) this.dispatchEvent(new CloseActionScreenEvent()); //20231008 sx 借用机会可视化-提交审批逻辑改造 end //4. 进程生成器 //5. 重新刷新页面 setTimeout(function(){ window.location.href = window.location; }, 1500 ) } //20240103 sx 备品智能化 add start showToast(msg,type) { if(type == 'success'){ const event = new ShowToastEvent({ message: msg, variant: type }); this.dispatchEvent(event); this.dispatchEvent(new CloseActionScreenEvent()); }else{ const event = new ShowToastEvent({ message: msg, variant: type, mode: 'sticky' }); this.dispatchEvent(event); this.dispatchEvent(new CloseActionScreenEvent()); } } updateRecordView(recordId) { updateRecord({fields: { Id: recordId }}); } navigateEvents(defaultValues){ console.log("--------navigateEvents------",defaultValues); this[NavigationMixin.Navigate]({ type: 'standard__objectPage', attributes: { objectApiName: 'Rental_Apply__c', actionName: 'new' }, state:{ // nooverride : 1, defaultFieldValues: defaultValues } }); this.dispatchEvent(new CloseActionScreenEvent()); } //20240103 sx 备品智能化 add end }