buli
2023-07-14 744f42c5496e656a1f9927740a3b37c0b97a6cba
force-app/main/default/aura/NewAgencyOpportunity/NewAgencyOpportunityController.js
@@ -1,309 +1,305 @@
({
  doInit: function (component, event, helper) {
    let rid = component.get("v.recordId");
    let pid = null;
    if (!rid) {
      pid = window.location.href.replace("https://", "").split("/")[4];
    }
    let record_type_id = "";
    let pageref = component.get("v.pageReference");
    if (!record_type_id && pageref) {
      record_type_id = pageref.state.recordTypeId
        ? pageref.state.recordTypeId
        : "";
    }
    let isClone = component.get("v.isClone");
    if (!rid || isClone) {
      component.set("v.title", $A.get("$Label.c.New") + "经销商询价");
      component.set("v.recordTypeId", record_type_id);
    } else {
      component.set("v.title", $A.get("$Label.c.Edit") + "经销商询价");
    }
    console.log("rid: " + rid);
    console.log("pid: " + pid);
    console.log("record_type_id: " + record_type_id);
    component.set("v.showSpinner", true);
    helper.CallBackAction(
      component,
      "Init",
      {
        rid: rid,
        pid: pid,
        //rid : component.get('v.recordId'),
        record_type_id: record_type_id
      },
      function (data) {
        console.log("data: " + data);
        if (data.getState() == "SUCCESS") {
          var rv = data.getReturnValue();
          console.log(rv);
          if (rv.IsSuccess) {
            debugger;
            let layout = JSON.parse(rv.Data.layout);
            let fields = rv.Data.fields;
            let staticResource = JSON.parse(rv.Data.staticResource);
            let section_names = [];
            // let awsData = rv.Data.awsDataIds;
            section_names = layout.map((s) => s.label);
            component.set("v.section_names", section_names);
            let m = {};
            for (let f of staticResource.PIDetails) {
              m[f.SF_Field_API_Name__c] = f;
            }
            component.set("v.pi_fields_map", m);
            if (rv.Data && rv.Data.data) {
              console.log("rv.Data.data = " + rv.Data.data);
              for (let s of layout) {
                for (let c of s.layoutColumns) {
                  for (let item of c.layoutItems) {
                    if (rv.Data.data.hasOwnProperty(item.field)) {
                      item.value = rv.Data.data[item.field];
                    }
                    if (fields.hasOwnProperty(item.field)) {
                      item.fi = fields[item.field];
                    }
                  }
                }
              }
              component.set("v.layout", layout);
              component.set("v.record_data", rv.Data.data);
              if (rv.Data.data.Agency_Contact__r) {
                if (rv.Data.data.Agency_Contact__r.AWS_Data_Id__c) {
                  helper.AwsGet(
                    staticResource.queryUrl,
                    {
                      dataId: rv.Data.data.Agency_Contact__r.AWS_Data_Id__c
                    },
                    function (data) {
                      console.log("data = " + data);
                      if (data.object) {
                        component.set("v.ac_name", data.object.name);
                      }
                    },
                    staticResource.token
                  );
                }
              }
              // }, staticResource.token);
            } else {
              for (let s of layout) {
                for (let c of s.layoutColumns) {
                  for (let item of c.layoutItems) {
                    if (
                      rv.Data &&
                      fields.hasOwnProperty(item.field) &&
                      fields[item.field].References &&
                      fields[item.field].References.map((m) => m.value).indexOf(
                        rv.Data.pidType
                      ) > -1
                    ) {
                      item.value = pid;
                    }
                  }
                }
              }
              component.set("v.layout", layout);
            }
            component.set("v.fields", fields);
            component.set("v.staticResource", staticResource);
            component.set("v.showSpinner", false);
          } else {
            component.set("v.showSpinner", false);
            helper.ShowToast({
              message: rv.Message,
              type: "error"
            });
          }
        } else {
          component.set("v.showSpinner", false);
          helper.ShowToast({
            message: "Init error",
            type: "error"
          });
    doInit : function(component, event, helper) {
        let rid = component.get('v.recordId');
        let pid = null;
        if(!rid){
            pid = window.location.href.replace("https://","").split("/")[4];
        }
      }
    );
  },
  saveClick: function (component, event, helper) {
    let staticResource = component.get("v.staticResource");
    let record_id = component.get("v.recordId");
    let record_type_id = component.get("v.recordTypeId");
    let isClone = component.get("v.isClone");
    let url = staticResource.newUrl;
    let payloadPi = {};
    if (record_id && !isClone) {
      url = staticResource.updateUrl;
      payloadPi["dataId"] = component.get("v.record_data").AWS_Data_Id__c;
    }
    let layout = component.get("v.layout");
    let pi_fields_map = component.get("v.pi_fields_map");
    for (let s of layout) {
      for (let c of s.layoutColumns) {
        for (let item of c.layoutItems) {
          if (pi_fields_map.hasOwnProperty(item.field)) {
            payloadPi[pi_fields_map[item.field].AWS_Field_API__c] = item.value;
          }
          if (item.behavior == "Required" && !item.value) {
            let fs = component.find("field");
            for (let fi in fs) {
              let f = fs[fi];
              if (!f.get("v.value")) {
                f.reset();
              }
        let record_type_id = '';
        let pageref = component.get("v.pageReference")
        if(!record_type_id && pageref){
            record_type_id = pageref.state.recordTypeId ? pageref.state.recordTypeId : '';
        }
        let isClone = component.get('v.isClone');
        if(!rid || isClone){
            component.set('v.title',$A.get("$Label.c.New")+'经销商询价');
            component.set("v.recordTypeId", record_type_id);
        }else{
            component.set('v.title',$A.get("$Label.c.Edit")+'经销商询价');
        }
        console.log('rid: ' + rid);
        console.log('pid: ' + pid);
        console.log('record_type_id: ' + record_type_id);
        component.set("v.showSpinner", true);
        helper.CallBackAction(component,'Init',{
            rid : rid,
            pid : pid,
            //rid : component.get('v.recordId'),
            record_type_id : record_type_id
        },function(data){
            console.log('data: ' + data);
            var rv = data.getReturnValue();
            console.log('rv:' + rv);
            console.log('rv.Data:' + rv.Data);
            console.log('rv.IsSuccess:' + rv.IsSuccess);
            if(data.getState() == "SUCCESS"){
                if(rv.IsSuccess){
                    debugger;
               let layout = JSON.parse(rv.Data.layout);
                    debugger;
                    let fields = rv.Data.fields;
                    debugger;
                    let staticResource = JSON.parse(rv.Data.staticResource)
                    debugger;
                    let section_names = layout.map(s=>s.label);
                    debugger;
                    // let awsData = rv.Data.awsDataIds;
                    // section_names = layout.map(s=>s.label);
                    component.set('v.section_names',section_names);
                    component.set('v.layout',layout);
                    component.set('v.fields',fields);
                    component.set('v.staticResource',staticResource);
                    debugger;
                    let m = {};
                    for(let f of staticResource.PIDetails){
                        m[f.SF_Field_API_Name__c] = f;
                    }
                    component.set('v.pi_fields_map',m);
                    if(rv.Data && rv.Data.data ){
                        debugger;
                        console.log('rv.Data.data = ' + rv.Data.data);
                        for(let s of layout){
                            for(let c of s.layoutColumns){
                                for(let item of c.layoutItems){
                                    if(rv.Data.data.hasOwnProperty(item.field)){
                                        item.value = rv.Data.data[item.field];
                                    }
                                    if(fields.hasOwnProperty(item.field)){
                                        item.fi = fields[item.field];
                                    }
                                }
                            }
                        }
                        // component.set('v.layout',layout);
                        component.set('v.record_data',rv.Data.data);
                        if(rv.Data.data.Agency_Contact__r){
                            if (rv.Data.data.Agency_Contact__r.AWS_Data_Id__c) {
                                helper.AwsGet(staticResource.queryUrl, {
                                    dataId : rv.Data.data.Agency_Contact__r.AWS_Data_Id__c
                                }, function(data){
                                    console.log('data = ' + data);
                                    if (data.object) {
                                        component.set('v.ac_name',data.object.name);
                                    }
                                }, staticResource.token);
                            }
                        }
                        // }, staticResource.token);
                    }else{
                        debugger;
                        console.log('rv.Data.data = ' + rv.Data.data);
                        console.log('layout = ' + layout);
                        for(let s of layout){
                            for(let c of s.layoutColumns){
                                for(let item of c.layoutItems){
                                    if(rv.Data && fields.hasOwnProperty(item.field) && fields[item.field].References && fields[item.field].References.map(m=>m.value).indexOf(rv.Data.pidType) > -1){
                                        item.value = pid;
                                    }
                                }
                            }
                        }
                        debugger;
                        // component.set('v.layout',layout);
                    }
                    // component.set('v.fields',fields);
                    // component.set('v.staticResource',staticResource);
                    //component.set("v.showSpinner", false);
                }else{
                    component.set("v.showSpinner", false);
                    helper.ShowToast({
                        "message" : rv.Message,
                        "type" : "error"
                    });
                }
            }else{
                component.set("v.showSpinner", false);
                helper.ShowToast({
                    "message" : "Init error",
                    "type" : "error"
                });
            }
            return;
          }
        }
      }
    }
    component.set("v.showSpinner", true);
    debugger;
    let data = {};
    if (record_id && !isClone) {
      data.Id = record_id;
    }
    for (let s of layout) {
      for (let c of s.layoutColumns) {
        for (let item of c.layoutItems) {
          if (item.field && item.behavior != "Readonly") {
            data[item.field] = item.value;
          }
        }
      }
    }
    let x = 1;
    helper.CallBackAction(
      component,
      "Save",
      {
        data: data,
        transId: "1",
        recordTypeId: record_type_id
      },
      function (data) {
        });
   },
    handleLoad: function(component, event, helper) {
        console.log('recordEditForm handleSuccess')
        component.set("v.showSpinner", false);
        if (data.getState() == "SUCCESS") {
          var rv = data.getReturnValue();
          console.log(rv);
          var sfId = null;
          if (rv.IsSuccess) {
            sfId = rv.Data.recordId;
            helper.ShowToast({
              message: "成功",
              type: "success"
            });
            if (record_id) {
              $A.get("e.force:closeQuickAction").fire();
              $A.get("e.force:refreshView").fire();
            } else {
              var sObjectEvent = $A.get("e.force:navigateToSObject");
              sObjectEvent.setParams({
                recordId: sfId
              });
              sObjectEvent.fire();
    },
    saveClick : function(component, event, helper){
        let staticResource = component.get('v.staticResource');
        let record_id = component.get('v.recordId');
        let record_type_id = component.get('v.recordTypeId');
        let isClone = component.get('v.isClone');
        let url = staticResource.newUrl;
        let payloadPi = {};
        if (record_id && !isClone) {
            url = staticResource.updateUrl
            payloadPi['dataId'] = component.get('v.record_data').AWS_Data_Id__c;
        }
        let layout = component.get('v.layout');
        let pi_fields_map = component.get('v.pi_fields_map');
        for(let s of layout){
            for(let c of s.layoutColumns){
                for(let item of c.layoutItems){
                    if(pi_fields_map.hasOwnProperty(item.field)){
                        payloadPi[pi_fields_map[item.field].AWS_Field_API__c] = item.value;
                    }
                    if (item.behavior == "Required" && !item.value ) {
                        let fs = component.find("field");
                        for(let fi in fs){
                            let f = fs[fi];
                            if(!f.get('v.value')){
                                f.reset();
                            }
                        }
                        return;
                    }
                }
            }
          } else {
            helper.ShowToast({
              message: rv.Message,
              type: "error"
            });
          }
        } else {
          helper.ShowToast({
            message: "Init error",
            type: "error"
          });
        }
      }
    );
  },
  cancelClick: function (component, event, helper) {
    $A.get("e.force:closeQuickAction").fire();
    //component.set("v.showNewAgencyContact", false);
  },
  searchAgencyContact: function (component, event, helper) {
    component.find("button").set("v.disabled", true);
    helper.resetTable();
    helper.preparePayloadForSearchAgencyContact(component, event, helper);
  },
  initContactTable: function (component, event, helper) {
    let cols = ["Name", "AgencyHospital", "DoctorDivision1", "Type"];
    let contactInfoList = [];
    let awsDataIds = [];
    let data = component.get("v.result");
    if (data.object) {
      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.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);
        component.set("v.showSpinner", true);
        debugger
        let data = {};
        if(record_id && !isClone){
            data.Id = record_id;
        }
      }
    }
    let AWSIdToSFIdMapValue = {};
  },
  openModel: function (component, event, helper) {
    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" && !item.value) {
            console.log("item.value = " + item.value);
            helper.ShowToast({
              message: "请先选择经销商医院",
              type: "warning"
            });
            return;
          }
        for(let s of layout){
            for(let c of s.layoutColumns){
                for(let item of c.layoutItems){
                    if(item.field && item.behavior != "Readonly"){
                        data[item.field] = item.value;
                    }
                }
            }
        }
      }
    }
    // Set isModalOpen true
    component.set("v.isModalOpen", true);
    component.find("button").set("v.disabled", true);
    helper.preparePayloadForSearchAgencyContact(component, event, helper);
  },
  closeModel: function (component, event, helper) {
    // Set isModalOpen false
    component.set("v.isModalOpen", false);
  },
  saveDetails: function (component, event, helper) {
    //do something
    component.set("v.isModalOpen", false);
  },
  showNewAgency: function (component, event, helper) {
    //do something
    component.set("v.showNewAgencyContact", true);
  },
  closeAgencyContact: function (component, event, helper) {
    var message = event.getParam("showNewAgencyContact");
    component.set("v.showNewAgencyContact", message);
    component.find("button").set("v.disabled", true);
    helper.resetTable();
    helper.preparePayloadForSearchAgencyContact(component, event, helper);
  }
});
        let x = 1;
        helper.CallBackAction(component,'Save',{
                         data : data,
                         transId :'1',
                         recordTypeId:record_type_id
                     },function(data){
                        component.set("v.showSpinner", false);
                        if(data.getState() == "SUCCESS"){
                            var rv = data.getReturnValue();
                            console.log(rv);
                            var sfId = null;
                            if(rv.IsSuccess){
                                sfId = rv.Data.recordId;
                                helper.ShowToast({
                                    "message" : "成功",
                                    "type" : "success"
                                });
                                if (record_id){
                                    $A.get("e.force:closeQuickAction").fire();
                                    $A.get('e.force:refreshView').fire();
                                }else{
                                    var sObjectEvent = $A.get("e.force:navigateToSObject");
                                    sObjectEvent.setParams({
                                        "recordId": sfId
                                    })
                                    sObjectEvent.fire();
                                }
                            }else{
                                helper.ShowToast({
                                    "message" : rv.Message,
                                    "type" : "error"
                                });
                            }
                        }else{
                            helper.ShowToast({
                                "message" : "Init error",
                                "type" : "error"
                            });
                        }
                     })
    },
    cancelClick : function(component, event, helper){
        $A.get("e.force:closeQuickAction").fire();
        //component.set("v.showNewAgencyContact", false);
    },
    searchAgencyContact : function(component, event, helper){
        component.find('button').set('v.disabled', true);
        helper.resetTable();
        helper.preparePayloadForSearchAgencyContact(component, event, helper);
    },
    initContactTable : function(component, event, helper){
        let cols = ['Name','AgencyHospital', 'DoctorDivision1','Type'];
        let contactInfoList = [];
        let awsDataIds = [];
        let data = component.get('v.result');
        if(data.object){
            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.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 = {};
    },
    openModel: function(component, event, helper) {
        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' && !item.value){
                        console.log('item.value = ' + item.value)
                        helper.ShowToast({
                            "message" : "请先选择经销商医院",
                            "type" : "warning"
                        });
                        return
                    }else if(item.field == 'Agency_Hospital__c' && item.value){
                        component.set('v.agencyHospitalId',item.value)
                        console.log('v.agencyHospitalId item.value = ' + item.value)
                    }
                }
            }
        }
        // Set isModalOpen true
        component.set("v.isModalOpen", true);
        component.find('button').set('v.disabled', true);
        helper.preparePayloadForSearchAgencyContact(component, event, helper);
     },
     closeModel: function(component, event, helper) {
        // Set isModalOpen false
        component.set("v.isModalOpen", false);
     },
     saveDetails: function(component, event, helper) {
      //do something
        component.set("v.isModalOpen", false);
     },
    showNewAgency: function(component, event, helper) {
      //do something
        component.set("v.showNewAgencyContact", true);
     },
     closeAgencyContact: function(component, event, helper) {
        var message = event.getParam("showNewAgencyContact");
        component.set("v.showNewAgencyContact", message);
        component.find('button').set('v.disabled', true);
        helper.resetTable();
        helper.preparePayloadForSearchAgencyContact(component, event, helper);
       },
})