/* eslint-disable no-console */ /* eslint-disable @lwc/lwc/no-async-operation */ // import lookUp from '@salesforce/apex/LookUpUtilControllerEvent.lookUp'; import lookUp from '@salesforce/apex/LookUpUtilController.lookUp'; // import getRecordForContact from '@salesforce/apex/ControllerUtilEvent.getRecordForContact'; import getRecordForContact from '@salesforce/apex/ControllerUtil.getRecordForContact'; // import getPIPLInfo from '@salesforce/apex/LookUpUtilControllerEvent.getPIPLInfo';//deloitte-zhj 获取解密信息 2023/07/19 import getPIPLInfo from '@salesforce/apex/LookUpUtilController.getPIPLInfo';//deloitte-zhj 获取解密信息 2023/07/19 // import searchContactInit from '@salesforce/apex/LookUpUtilControllerEvent.searchContactInit';//deloitte-zhj 搜索需要的PI数据 2023/07/19 import searchContactInit from '@salesforce/apex/LookUpUtilController.searchContactInit';//deloitte-zhj 搜索需要的PI数据 2023/07/19 // import searchContactByAccountId from '@salesforce/apex/LookUpUtilControllerEvent.searchContactByAccountId';//deloitte-zhj 新建判断重复 2023/07/19 import searchContactByAccountId from '@salesforce/apex/LookUpUtilController.searchContactByAccountId';//deloitte-zhj 新建判断重复 2023/07/19 import { AWSService } from 'c/piUtils';//deloitte-zhj 调用aws 2023/07/19 import { getObjectInfo } from 'lightning/uiObjectInfoApi'; import { getRecord } from 'lightning/uiRecordApi'; import { NavigationMixin } from 'lightning/navigation'; import { api, LightningElement, track, wire } from 'lwc'; import saveContact from '@salesforce/apex/LwcDailyReportController.saveContact'; import { ShowToastEvent } from 'lightning/platformShowToastEvent'; import { refreshApex } from '@salesforce/apex'; export default class lookUpUtilEvent extends NavigationMixin(LightningElement) { AWSService; @track theContact = {}; @track showModal = false; //记录id @api valueId; @api objName; @api iconName; @api disabled; @api filter; @api agencyContactName; @api uniqueKey; @api fields; @api searchLabel; @track searchTerm; //record name value @track valueObj; //record href @track href; //fetch result @track options; //是否展示pill @track isValue = false; isCanCanle = true; @track blurTimeout; isOpen = false; @track visitorPalceFields = ['Account.Name']; @track newContactAcc; //访问对象 handleContactDepartmentSelection(event) { console.log('handleContactDepartmentSelection!!!!!!!!!!!!'); this.newContactAcc = event.detail.selectedId; } get boxClass() { let classes = "slds-combobox slds-dropdown-trigger slds-dropdown-trigger_click slds-has-focus"; if (this.isOpen) { return classes + " slds-is-open"; } return classes; } _passFilter; @api get passFilter() { return this._passFilter; } set passFilter(newValue) { this._passFilter = newValue; this.filter = newValue; } //css: @track inputClass = ''; @api staticResourceContact; @track txId; //deloitte-zhj 获取PIPL需要的数据 2023/07/19 start connectedCallback() { if(!this.AWSService) { this.AWSService = new AWSService(); } // if(!this.staticResourceContact) { getPIPLInfo().then((r) => { r = JSON.parse(JSON.stringify(r)); console.log('r = ' + JSON.stringify(r)) if (r.status == 'Success') { this.staticResourceContact = JSON.parse(r.entity.staticResourceContact); console.log('this.staticResourceContact.searchUrl = ' + this.staticResourceContact.searchUrl) } else { console.log('error msg = ' + r.msg) } }) console.log('this.staticResourceContact.end :' +this.staticResourceContact); // } } getPIPLInfoJs() { } //deloitte-zhj 获取PIPL需要的数据 2023/07/19 end //deloitte-zhj 解密 2023/07/19 start @wire(lookUp, { searchTerm: '$searchTerm', objName: '$objName', filter: '$filter' }) wiredRecords({ error, data }) { console.log('enter wiredRecords'); if(!this.AWSService) { this.AWSService = new AWSService(); // if(!this.staticResourceContact || !this.staticResourceContact.search) { getPIPLInfo().then((r) => { r = JSON.parse(JSON.stringify(r)); console.log('r = ' + JSON.stringify(r)) if (r.status == 'Success') { this.staticResourceContact = JSON.parse(r.entity.staticResourceContact); console.log('this.staticResourceContact.searchUrl = ' + this.staticResourceContact.searchUrl) } else { console.log('error msg = ' + r.msg) } }) // } } if (data) { let that = this; console.log('data = ' + JSON.stringify(data)) // let dataClone = this.deepClone(data); let dataClone = []; console.log('dataClone deepClone= ' + JSON.stringify(dataClone)); //搜索,需要把对应account下面进行了PIPL的数据查出来,需要搜索值和accountid都存在才行 console.log('this.filter = ' + this.filter) console.log('this.searchTerm = ' + this.searchTerm) if (this.filter) { searchContactInit({ accountId: this.filter }).then((r) => { r = JSON.parse(JSON.stringify(r)); console.log('r = ' + JSON.stringify(r)) if (r.status == 'Success') { let awsIdToContactMap = r.entity.awsIdToContactMap; let conAWSIds = r.entity.conAWSIds; console.log('awsIdToContactMap = ' + awsIdToContactMap); console.log('conAWSIds = ' + conAWSIds); that.AWSService.search(that.staticResourceContact.searchUrl, { dataIds: conAWSIds, contactName: that.searchTerm }, function (data) { console.log('data = ' + JSON.stringify(data)); if (data.object) { let limit = data.object.length > 50 ? 50 : data.object.length;//最多找20条 for(let i=0; i < limit; i++){ if(awsIdToContactMap.hasOwnProperty(data.object[i].dataId)){ let PIData = {}; PIData.Id = awsIdToContactMap[data.object[i].dataId].Id; PIData.Name = data.object[i].lastName; PIData.AWSDataId = data.object[i].dataId; dataClone.push(PIData) } } console.log('dataClone = ' + JSON.stringify(dataClone)); } that.executeWiredRecords(dataClone); }, that.staticResourceContact.token) } else { console.log('r.msg = ' + r.msg) } }) } else { this.executeWiredRecords(dataClone) } } else if (error) { this.error = error; this.record = undefined; console.log("wire.error", this.error); } else { console.log('啥都没有'); } } deepClone(obj) { return JSON.parse(JSON.stringify(obj)); } executeWiredRecords(dataClone) { let arr = []; for (var i in dataClone) { if (dataClone[i].AWSDataId && arr.indexOf(dataClone[i].AWSDataId) == -1) arr.push(dataClone[i].AWSDataId) } if(!this.AWSService) { this.AWSService = new AWSService(); } console.log('arr = ' + arr); let that = this; if (arr.length != 0) { this.AWSService.search(this.staticResourceContact.searchUrl, { dataIds: arr }, function (dataAWS) { console.log('dataAWS = ' + JSON.stringify(dataAWS)); if (dataAWS && dataAWS.object && dataAWS.object.length > 0) { let awsMap = {}; for (let di in dataAWS.object) { awsMap[dataAWS.object[di].dataId] = dataAWS.object[di]; } console.log('awsMap = ' + JSON.stringify(awsMap)); for (var i in dataClone) { if (awsMap.hasOwnProperty(dataClone[i].AWSDataId)) { dataClone[i].Name = awsMap[dataClone[i].AWSDataId].lastName } } console.log('dataClone = ' + JSON.stringify(dataClone)); that.record = dataClone; console.log('that.record = ' + JSON.stringify(that.record)); that.error = undefined; that.options = that.record; console.log("common this.options", JSON.stringify(that.options)); } else { that.record = dataClone; that.error = undefined; that.options = that.record; console.log("common this.options", JSON.stringify(that.options)); } }, this.staticResourceContact.token) } else { this.record = dataClone; this.error = undefined; this.options = this.record; console.log("common this.options", JSON.stringify(this.options)); } } @wire(getRecordForContact, { recordId: '$valueId', fields: '$fields' }) async wiredOptions({ error, data }) { if(!this.valueId) { return; } console.log('zzzzzzz----222222'); console.log('wiredOptions'); var agencyContactNameTmp; if (data) { if(!this.AWSService) { this.AWSService = new AWSService(); } console.log('wiredOptions data = ' + JSON.stringify(data)) //deloitte-zhj 解密 2023/07/19 start if (data.AWS_Data_Id && data.Name.includes('***')) { console.log('data.fields.AWS_Data_Id__c.value = ' + data.AWS_Data_Id) let that = this; // if(!this.staticResourceContact || !this.staticResourceContact.query) { console.log('enter connectedCallback') await getPIPLInfo().then((r) => { r = JSON.parse(JSON.stringify(r)); console.log('r = ' + JSON.stringify(r)) if (r.status == 'Success') { this.staticResourceContact = JSON.parse(r.entity.staticResourceContact); console.log('this.staticResourceContact.searchUrl = ' + this.staticResourceContact.searchUrl) console.log('this.staticResourceContact.queryUrl'+this.staticResourceContact); this.AWSService.query(this.staticResourceContact.queryUrl, data.AWS_Data_Id, function (dataAWS) { console.log('queryLeadFromAWSIFS data = ' + JSON.stringify(dataAWS)); if (dataAWS.object) { //data.fields.Name.value = dataAWS.object['lastName']; that.record = data; console.log('that.record = ' + JSON.stringify(that.record)); that.error = undefined; that.valueObj = dataAWS.object['lastName']; that.href = '/' + that.record.id; that.isValue = true; } else { that.record = data; that.error = undefined; that.valueObj = that.record.Name; that.href = '/' + that.record.id; that.isValue = true; } // agencyContactNameTmp = that.valueObj; // console.log('agencyContactName' +that.valueObj); // console.log('this.agencyContactName:' +this.agencyContactName); }, this.staticResourceContact.token) } else { console.log('error msg = ' + r.msg) } }) } else { this.record = data; this.error = undefined; this.valueObj = this.record.Name; this.href = '/' + this.record.id; this.isValue = true; // agencyContactNameTmp = this.valueObj; } // this.valueObj = agencyContactNameTmp; // console.log('this.valueObj:'+this.valueObj); //deloitte-zhj 解密 2023/07/19 end } else if (error) { this.error = error; this.record = undefined; } } handleClick() { console.log("In handleClick"); if(this.disabled){ return; } if(!this.filter) { this.showToast('Error','请设定访问场所'); return; } this.searchTerm = ''; this.inputClass = 'slds-has-focus'; this.isOpen = true; //deloitte-zhj refresh wiredRecords start this.searchTerm = 'refresh'; this.searchTerm = ''; refreshApex(this.wiredRecords); //deloitte-zhj refresh wiredRecords end // this.boxClass = 'slds-combobox slds-dropdown-trigger slds-dropdown-trigger_click slds-has-focus slds-is-open'; } onSelect(event) { console.log("In onSelect"); let ele = event.currentTarget; let selectedId = ele.dataset.id; let key = this.uniqueKey; console.log("key = " + key); console.log("selectedId = " + selectedId); const valueSelectedEvent = new CustomEvent('valueselect', { detail: { selectedId, key }, }); this.dispatchEvent(valueSelectedEvent); this.isOpen = false; // this.boxClass = 'slds-combobox slds-dropdown-trigger slds-dropdown-trigger_click slds-has-focus'; } searchChange(event) { this.searchTerm = event.target.value; } onBlur() { if (!this.isCanCanle) { return; } this.isOpen = false; // this.boxClass = 'slds-combobox slds-dropdown-trigger slds-dropdown-trigger_click slds-has-focus'; } @api handleRemovePill() { if(this.disabled){ return; } console.log("In handleRemovePill"); this.isValue = false; let selectedId = ''; let key = this.uniqueKey; const valueSelectedEvent = new CustomEvent('valueselect', { detail: { selectedId, key }, }); this.dispatchEvent(valueSelectedEvent); } newObject() { if(!this.filter) { this.showToast('Error','请设定访问场所'); return; } this.clearDailog(); this.isOpen = false; this.showModal = true; // const newEvent = new CustomEvent('newrecord', { // detail: { key :this.uniqueKey}, // }); // this.dispatchEvent(newEvent); } closeModal() { console.log('closeModal'); this.showModal = false; } handleMouseleave() { this.isCanCanle = true; } handleMouseenter(event) { this.isCanCanle = false; } sureSave(event) { event.preventDefault();//很重要 如果没得这个会导致页面刷新! console.log('submitDetails'); let flag = true; let requiredFieldList = this.template.querySelectorAll('lightning-input-field'); requiredFieldList.forEach(ele => { if (ele.required == true && this.stringIsEmpty(ele.value)) { ele.reportValidity(); flag = false; } }); if(!this.AWSService) { this.AWSService = new AWSService(); } console.log(flag); if (flag) { let payloadForNewPI = []; let PIData = {}; PIData['lastName'] = this.theContact['LastName'] PIData['phone'] = this.theContact['Phone'] payloadForNewPI.push(PIData); payloadForNewPI = JSON.stringify(payloadForNewPI); console.log('payloadForNewPI = ' + payloadForNewPI) // console.log('this.theContact[AccountId] = ' + this.theContact['AccountId']) // this.theContact['AccountId'] = this.newContactAcc; // console.log('this.theContact[AccountId] = ' + this.filter); let that = this; //deloitte-zhj 新建判断重复并且进行加密 2023/07/19 start if(!this.theContact['AccountId']) { this.theContact['AccountId'] = this.filter; } console.log('AccountId:' +this.theContact['AccountId']) console.log('visitorPlaceId:' +this.filter) searchContactByAccountId({ accountId: this.theContact['AccountId'], visitorPlaceId:this.filter }).then((resultAccount) => { resultAccount = JSON.parse(JSON.stringify(resultAccount)); console.log('resultAccount:'+resultAccount); if (resultAccount.status == 'fail') { that.showToast('Error', resultAccount.message); console.log() return } let accountName = resultAccount.accountName; let dataIdManageCodeMap = resultAccount.dataIdManageCodeMap; let contactList = ''; for (var i = 0; i < resultAccount.contactList.length; i++) { if (resultAccount.contactList[i].AWS_Data_Id__c) contactList += ',' + resultAccount.contactList[i].AWS_Data_Id__c; } contactList = contactList.substring(1); payloadForNewPI = JSON.parse(payloadForNewPI); payloadForNewPI[0].contactIds = contactList; payloadForNewPI[0].isMobileVerif = resultAccount.isMobileVerif; payloadForNewPI[0].isNameMobileVerif = resultAccount.isNameMobileVerif; payloadForNewPI = JSON.stringify(payloadForNewPI); //AWS加密 that.AWSService.post(that.staticResourceContact.newUrl + 'V2', payloadForNewPI, (resultAWS) => { if (resultAWS && resultAWS.object) { //判断已存在相同名字的联系人 let errorMsg = ''; if (resultAWS.status == '129') { errorMsg = '客户 [ ' + accountName + ' ],已存在相同名字的联系人 人员管理编码 [' + dataIdManageCodeMap[resultAWS.object[0].dataId] + ' ] ,不能重复创建,请了解'; that.showToast('Error',errorMsg) return } if (resultAWS.status == '130') { if (resultAWS.object[0] && resultAWS.object[0].sfRecordId != null && resultAWS.object[0].sfRecordId != '') { errorMsg = '已找到重复值: UniqueNumber__c 与记录值重复,ID 为: ' + resultAWS.object[0].sfRecordId + '客户人员信息'; } else { errorMsg = '数据中存在重复的电话号码'; } that.showToast('Error',errorMsg) return } console.log('resultAWS = ' + JSON.stringify(resultAWS)); that.theContact['LastName'] = resultAWS.object[0]['lastName']; that.theContact['Phone'] = resultAWS.object[0]['phone']; that.theContact['AWS_Data_Id__c'] = resultAWS.object[0]['dataId']; that.txId = resultAWS.txId; console.log('that.theContact = ' + that.theContact) //保存到后端 saveContact({ contactJson: JSON.stringify(that.theContact) }) .then(result => { if (result.code === 200) { //deloitte-zhj 新建判断重复并且进行加密成功之后需要进行事务确认 2023/07/19 start that.AWSService.confirm(true, result.msg, that.txId, that.staticResourceContact.token, that.staticResourceContact.transactionUrl, function (resultConfirm) { console.log('resultConfirm = ' + JSON.stringify(resultConfirm)) that.showToast('success', '保存成功'); let selectedId = result.msg; let key = that.uniqueKey; const valueSelectedEvent = new CustomEvent('valueselect', { detail: { selectedId, key }, }); that.dispatchEvent(valueSelectedEvent); that.isOpen = false; }); //deloitte-zhj 新建判断重复并且进行加密成功之后需要进行事务确认 2023/07/19 end } else { that.showToast('error', '保存联系人失败,' + result.msg); } that.showModal = false; }) .catch(error => { that.showToast('error', '保存报错,' + error); that.showModal = false; }); } else { console.log('result = ' + JSON.stringify(result)); } }, that.staticResourceContact.token); }); //deloitte-zhj 新建判断重复并且进行加密 2023/07/19 end } } stringIsEmpty(str) { if (str === '' || str === undefined || str === null) { return true; } else { return false; } } showToast(type,msg) { if(type == 'success'){ const event = new ShowToastEvent({ message: msg, variant: type }); this.dispatchEvent(event); }else{ const event = new ShowToastEvent({ message: msg, variant: type, mode: 'sticky' }); this.dispatchEvent(event); } } //字段信息改变 async fieldChange(event) { const { value } = event.detail; const { fieldName } = event.target || event.currentTarget; let checked = event.target.value || event.currentTarget.value; if (value == undefined && checked != undefined) { this.theContact[fieldName] = checked; } else { this.theContact[fieldName] = value instanceof Array ? value[0] : value; } } //清空新建窗口的输入框 clearDailog() { this.theContact['Name'] = null; this.theContact['Phone'] = null; this.theContact['AccountId'] = this.filter; } }