// 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
|
|
}
|