buli
2023-07-14 5b5c1e16deaa3a9d6d0ed1ffca390655ed103df7
force-app/main/default/aura/NewAgencyOpportunity/NewAgencyOpportunityHelper.js
@@ -1,89 +1,69 @@
({
    CallBackAction: function (component, action_name, para, callback) {
        var action = component.get(
            'c.' + action_name.trimStart().replace('c.', '')
        );
        if (para) {
    CallBackAction  : function(component,action_name,para,callback) {
      var action = component.get("c." + action_name.trimStart().replace("c.",""));
        if(para){
            action.setParams(para);
        }
        if (callback) {
            action.setCallback(this, function (data) {
        if(callback){
            action.setCallback(this,function(data){
                callback(data);
            });
        }
        $A.enqueueAction(action);
    },
    ShowToast: function (paras) {
        var toastEvent = $A.get('e.force:showToast');
   },
    ShowToast : function(paras){
        var toastEvent = $A.get("e.force:showToast");
        toastEvent.setParams(paras);
        toastEvent.fire();
    },
    AwsPost: function (postURL, data, callback, token) {
    AwsPost : function(postURL, data ,callback,token){
        let payloadForNewPI = '';
        if (typeof data == 'string') {
        if(typeof(data) == 'string'){
            payloadForNewPI = data;
        } else {
        }else{
            payloadForNewPI = JSON.stringify(data);
        }
        AWSService.post(
            postURL,
            payloadForNewPI,
            function (result) {
                //this.insertCalloutLog(this.insertModule,postURL,JSON.stringify(payloadForNewPI),JSON.stringify(result),this.successStatus);
                if (callback) callback(result);
            },
            token
        );
        AWSService.post(postURL,payloadForNewPI,function(result) {
            //this.insertCalloutLog(this.insertModule,postURL,JSON.stringify(payloadForNewPI),JSON.stringify(result),this.successStatus);
            if(callback) callback(result);
        },token);
    },
    AwsGet: function (url, data, callback, token) {
        if (typeof data == 'string') {
    AwsGet : function(url, data ,callback,token){
        if(typeof(data) == 'string'){
            url += data;
        } else {
        }else{
            let i = 0;
            for (let p in data) {
                url += i++ ? '&' : '?';
            for(let p in data){
                url += (i++) ? '&' : '?';
                url += p + '=' + data[p];
            }
        }
        AWSService.get(
            url,
            function (result) {
                //this.insertCalloutLog(this.insertModule,postURL,JSON.stringify(payloadForNewPI),JSON.stringify(result),this.successStatus);
                if (callback) callback(result);
            },
            token
        );
        AWSService.get(url,function(result){
            //this.insertCalloutLog(this.insertModule,postURL,JSON.stringify(payloadForNewPI),JSON.stringify(result),this.successStatus);
            if(callback) callback(result);
        },token);
    },
    refreshTable: function (
        component,
        event,
        helper,
        cols,
        contactInfoList,
        contactsInfo
    ) {
    refreshTable : function(component, event, helper,cols,contactInfoList,contactsInfo){
        let that = this;
        let myTableDiv = document.getElementById('QueryResult');
        let myTableDiv = document.getElementById("QueryResult");
        let table = document.createElement('TABLE');
        table.border = '1';
        table.id = 'table';
        table.setAttribute(
            'class',
            'slds-table slds-table_cell-buffer slds-table_bordered'
        );
        table.id = 'customTable';
        table.setAttribute('class','slds-table slds-table_cell-buffer slds-table_bordered');
        let tableBody = document.createElement('TBODY');
        table.appendChild(tableBody);
        let headerTR = document.createElement('TR');
        headerTR.setAttribute('class', 'slds-line-height_reset');
        let colsHeader = ['姓名', '医院', '医生区分(职务)', '分类'];
        headerTR.setAttribute('class','slds-line-height_reset');
        let colsHeader = [' ','姓名','医院', '医生区分(职务)','分类'];
        tableBody.appendChild(headerTR);
        for (let i = 0; i < colsHeader.length; i++) {
            let td = document.createElement('TH');
            td.width = '75';
            td.setAttribute('class', 'slds-truncate slds-border_right');
            td.setAttribute('class','slds-truncate slds-border_right');
            td.appendChild(document.createTextNode(colsHeader[i]));
            headerTR.appendChild(td);
        }
@@ -92,84 +72,94 @@
            let tr = document.createElement('TR');
            tableBody.appendChild(tr);
            let contactInfoTemp = contactInfoList[i];
            //再加一列选择button
            debugger
            let td = document.createElement('TD');
            td.width = '75';
            td.id = contactsInfo[contactInfoTemp.AWSDataId].Id;
            console.log('contactInfoTemp = ' + JSON.stringify(contactInfoTemp))
            // 创建按钮元素
            var button = document.createElement('button');
            button.classList.add('slds-button','slds-button_neutral');
            button.id = contactInfoTemp.sfRecordId != null ? contactInfoTemp.sfRecordId : '';
            // 设置按钮的文本内容
            var buttonText = document.createTextNode('选择');
            button.appendChild(buttonText);
            button.addEventListener("click", function (obj) {
                that.redirectToParentPage(component, event, helper, obj);
            });
            button.value = contactInfoTemp[cols[0]] != null ? contactInfoTemp[cols[0]] : ''
            td.appendChild(button);
            tr.appendChild(td);
            for (let j = 0; j < cols.length; j++) {
                let td = document.createElement('TD');
                td.width = '75';
                if (contactInfoTemp.pi) {
                    if (
                        !contactsInfo.hasOwnProperty(contactInfoTemp.AWSDataId)
                    ) {
                if(contactInfoTemp.pi){
                    if (!contactsInfo.hasOwnProperty(contactInfoTemp.AWSDataId)) {
                        continue;
                    }
                    if (j == 0 && contactsInfo[contactInfoTemp.AWSDataId]) {
                    if(j == 0 && contactsInfo[contactInfoTemp.AWSDataId] ){
                        td.id = contactsInfo[contactInfoTemp.AWSDataId].Id;
                    }
                } else {
                    }
                }else{
                    td.id = contactInfoTemp.sfRecordId;
                }
                td.appendChild(
                    document.createTextNode(
                        contactInfoTemp[cols[j]] != null
                            ? contactInfoTemp[cols[j]]
                            : ''
                    )
                );
                if (cols[j] == 'Name') {
                    td.addEventListener('click', function (obj) {
                        that.redirectToParentPage(
                            component,
                            event,
                            helper,
                            obj
                        );
                    });
                }
                }
                td.appendChild(document.createTextNode(contactInfoTemp[cols[j]]!=null?contactInfoTemp[cols[j]]:''));
                // if (cols[j] == 'Name') {
                //     td.addEventListener("click", function (obj) {
                //         that.redirectToParentPage(component, event, helper,obj);
                //     });
                // }
                tr.appendChild(td);
            }
        }
        that.resetTable();
        myTableDiv.appendChild(table);
        component.find('button').set('v.disabled', false);
    },
    redirectToParentPage: function (component, event, helper, obj) {
        let agencyContactName = obj.currentTarget.innerText;
    redirectToParentPage : function(component, event, helper,obj){
        let agencyContactName = obj.currentTarget.value;
        let id = obj.currentTarget.id;
        component.set('v.ac_name', agencyContactName);
        component.set('v.ac_name',agencyContactName);
        let layout = component.get('v.layout');
        for (let s of layout) {
            for (let c of s.layoutColumns) {
                for (let item of c.layoutItems) {
                    if (item.field == 'Agency_Contact__c') {
        for(let s of layout){
            for(let c of s.layoutColumns){
                for(let item of c.layoutItems){
                    if(item.field == 'Agency_Contact__c'){
                        item.value = id;
                    }
                }
            }
        }
        component.set('v.isModalOpen', false);
        component.set("v.isModalOpen", false);
    },
    resetTable: function () {
        let queryResult = document.getElementById('QueryResult');
        let table = document.getElementsByTagName('table');
        debugger;
        console.log('table:' + table);
        debugger;
        if (table.length > 1) {
            for (var i = 1; i < table.length; i++) {
                queryResult.removeChild(table[i]);
            }
    resetTable : function(){
        // let queryResult = document.getElementById('QueryResult');
        // let table = document.getElementById('customTable');
        // console.log('table:' + table);
        // if(table.length > 1){
        //     for(var i=1;i<table.length;i++){
        //         queryResult.removeChild(table[i])
        //     }
        // }
        let customTable = document.getElementById('customTable');
        if(customTable){
            customTable.parentNode.removeChild(customTable);
        }
    },
    preparePayloadForSearchAgencyContact: function (component, event, helper) {
    preparePayloadForSearchAgencyContact : function(component, event, helper){
        let that = this;
        let agencyHospitalId = '';
        let accountId = '';
        let layout = component.get('v.layout');
        for (let s of layout) {
            for (let c of s.layoutColumns) {
                for (let item of c.layoutItems) {
                    if (item.field == 'Agency_Hospital__c') {
        for(let s of layout){
            for(let c of s.layoutColumns){
                for(let item of c.layoutItems){
                    if(item.field == 'Agency_Hospital__c'){
                        agencyHospitalId = item.value;
                    }
                    if (item.field == 'Account_Opp__c') {
                    if(item.field == 'Account_Opp__c'){
                        accountId = item.value;
                    }
                }
@@ -177,165 +167,118 @@
        }
        var action = component.get('c.getAWSDataIds');
        action.setParams({
            agencyHospitalId: agencyHospitalId,
            accountId: accountId
            "agencyHospitalId" : agencyHospitalId,
            "accountId" : accountId
        });
        action.setCallback(this, function (response) {
        action.setCallback(this,function(response){
            var state = response.getState();
            if (state == 'SUCCESS') {
            if(state == 'SUCCESS'){
                var rv = response.getReturnValue();
                if (rv.Data.length == 0) {
                if(rv.Data.length == 0){
                    component.find('button').set('v.disabled', false);
                    helper.ShowToast({
                        message: '该经销商医院下面没有客户人员',
                        type: 'warning'
                        "message" : "该经销商医院下面没有客户人员",
                        "type" : "warning"
                    });
                    return;
                    return
                }
                component.set('v.showSpinner',true);
                let searchPayload = new Object();
                let searchAgencyContactName = component.get('v.searchKeyWord');
                searchPayload.dataIds = rv.Data;
                searchPayload.name = searchAgencyContactName;
                component.set('v.contactAWSIds', rv.Data);
                component.set('v.contactAWSIds',rv.Data);
                let staticResource = component.get('v.staticResource');
                let url = staticResource.searchUrl;
                let token = staticResource.token;
                this.AwsPost(
                    url,
                    searchPayload,
                    function (data) {
                        if (data.success) {
                            let cols = [
                                'Name',
                                'AgencyHospital',
                                'DoctorDivision1',
                                'Type'
                            ];
                            let contactInfoList = [];
                            let awsDataIds = [];
                            if (data.object.length == 0) {
                                component
                                    .find('button')
                                    .set('v.disabled', false);
                                that.ShowToast({
                                    message: '没有查询到该客户人员',
                                    type: 'warning'
                                });
                                return;
                            }
                            for (var i = 0; i < data.object.length; i++) {
                                if (data.object[i].dataId) {
                                    let contactInfo = new Object();
                                    //需要修改
                                    contactInfo.Name = data.object[i].name;
                                    contactInfo.AgencyHospital = '';
                                    contactInfo.DoctorDivision1 =
                                        data.object[i].doctorDivision1;
                                    contactInfo.AWSDataId =
                                        data.object[i].dataId;
                                    contactInfo.Type = data.object[i].type;
                                    contactInfo.pi = true;
                                    awsDataIds.push(contactInfo.AWSDataId);
                                    contactInfo.sfRecordId = '';
                                    contactInfoList.push(contactInfo);
                                }
                            }
                            //let AWSIdToSFIdMapValue = {};
                            var searchAgencyContacts = component.get(
                                'c.searchAgencyContacts'
                            );
                            searchAgencyContacts.setParams({
                                awsAgencyContactIds: JSON.stringify(awsDataIds),
                                agencyHospitalId: agencyHospitalId,
                                accountId: accountId
                this.AwsPost(url,searchPayload,function(data){
                    if(data.success){
                        let cols = ['Name','AgencyHospital', 'DoctorDivision1','Type'];
                        let contactInfoList = [];
                        let awsDataIds = [];
                        if(data.object.length == 0){
                            component.find('button').set('v.disabled', false);
                            that.ShowToast({
                                "message" : '没有查询到该客户人员',
                                "type" : "warning"
                            });
                            searchAgencyContacts.setCallback(
                                this,
                                function (response) {
                                    var state = response.getState();
                                    if (state == 'SUCCESS') {
                                        var rv = response.getReturnValue();
                                        if (rv.IsSuccess) {
                                            let contactsInfo = '';
                                            if (rv.Data) {
                                                contactsInfo = JSON.parse(
                                                    rv.Data.replace(
                                                        /(&quot\;)/g,
                                                        '"'
                                                    )
                                                );
                                                if (
                                                    Object.keys(contactsInfo)
                                                        .length > 0
                                                ) {
                                                    for (
                                                        let i = 0;
                                                        i <
                                                        contactInfoList.length;
                                                        i++
                                                    ) {
                                                        let contactFromSF =
                                                            contactsInfo[
                                                                contactInfoList[
                                                                    i
                                                                ]['AWSDataId']
                                                            ];
                                                        if (contactFromSF) {
                                                            contactInfoList[
                                                                i
                                                            ].sfRecordId =
                                                                contactFromSF[
                                                                    'Id'
                                                                ];
                                                            if (
                                                                contactFromSF[
                                                                    'Agency_Hospital__r'
                                                                ]
                                                            ) {
                                                                contactInfoList[
                                                                    i
                                                                ].AgencyHospital =
                                                                    contactFromSF[
                                                                        'Agency_Hospital__r'
                                                                    ]['Name'];
                                                            }
                                                            if (
                                                                contactFromSF[
                                                                    'Department_Class__r'
                                                                ]
                                                            ) {
                                                                contactInfoList[
                                                                    i
                                                                ].AgencyHospital =
                                                                    contactFromSF[
                                                                        'Department_Class__r'
                                                                    ]['Parent'][
                                                                        'Name'
                                                                    ];
                                                            }
                                                        }
                            component.set('v.showSpinner',false);
                            return
                        }
                        for(var i=0;i<data.object.length;i++){
                            if(data.object[i].dataId){
                                let contactInfo = new Object();
                                //需要修改
                                contactInfo.Name = data.object[i].name;
                                contactInfo.AgencyHospital = '';
                                contactInfo.DoctorDivision1 = data.object[i].doctorDivision1;
                                contactInfo.AWSDataId = data.object[i].dataId;
                                contactInfo.Type = data.object[i].type;
                                contactInfo.pi = true;
                                awsDataIds.push(contactInfo.AWSDataId);
                                contactInfo.sfRecordId = '';
                                contactInfoList.push(contactInfo);
                            }
                        }
                        //let AWSIdToSFIdMapValue = {};
                        debugger
                        var searchAgencyContacts = component.get('c.searchAgencyContacts');
                        searchAgencyContacts.setParams({
                            "awsAgencyContactIds" : JSON.stringify(awsDataIds),
                            "agencyHospitalId" : agencyHospitalId,
                            "accountId" : accountId
                        });
                        // 延迟执行一段代码
                        setTimeout(function() {
                            // 需要延迟执行的代码
                           // 创建一个鼠标点击事件
                            var event = new MouseEvent('click', {
                                bubbles: true,
                                cancelable: true,
                                view: window
                            });
                            // 触发元素的点击事件
                            var element = document.getElementById('NewAgencyContact');
                            for(var i = 0;i<100;i++){
                                element.dispatchEvent(event);
                            }
                        }, 1000); // 延迟 1000 毫秒(即 1 秒)
                        searchAgencyContacts.setCallback(that,function(response){
                            var state = response.getState();
                            if(state == 'SUCCESS'){
                                var rv = response.getReturnValue();
                                if(rv.IsSuccess){
                                    let contactsInfo = '';
                                    if(rv.Data){
                                        contactsInfo = JSON.parse(rv.Data.replace(/(&quot\;)/g,"\""));
                                        if(Object.keys(contactsInfo).length>0){
                                            for(let i=0;i<contactInfoList.length;i++){
                                                let contactFromSF = contactsInfo[contactInfoList[i]['AWSDataId']];
                                                if(contactFromSF){
                                                    contactInfoList[i].sfRecordId = contactFromSF['Id'];
                                                    if(contactFromSF['Agency_Hospital__r']){
                                                         contactInfoList[i].AgencyHospital = contactFromSF['Agency_Hospital__r']['Name'];
                                                    }
                                                    if(contactFromSF['Department_Class__r']){
                                                        contactInfoList[i].AgencyHospital = contactFromSF['Department_Class__r']['Parent']['Name'];
                                                    }
                                                }
                                            }
                                            that.refreshTable(
                                                component,
                                                event,
                                                helper,
                                                cols,
                                                contactInfoList,
                                                contactsInfo
                                            );
                                        }
                                    }
                                    that.refreshTable(component, event, helper,cols,contactInfoList,contactsInfo);
                                    component.set('v.showSpinner',false);
                                }
                            );
                            $A.enqueueAction(searchAgencyContacts);
                        }
                    },
                    token
                );
                            }
                        });
                        $A.enqueueAction(searchAgencyContacts);
                    }else{
                        component.set('v.showSpinner',false);
                    }
                },token);
            }
        });
        $A.enqueueAction(action);
    }
});
})