buli
2023-07-14 e6068da47c1bef5517c9e5fdc8c726766867ad4e
force-app/main/default/aura/NewAgencyOpportunity/NewAgencyOpportunityController.js
@@ -1,309 +1,346 @@
({
  doInit: function (component, event, helper) {
    let rid = component.get("v.recordId");
    let pid = null;
    if (!rid) {
      pid = window.location.href.replace("https://", "").split("/")[4];
    }
    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 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;
        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'
                    });
                }
            }
            component.set("v.pi_fields_map", m);
        );
    },
    handleLoad: function (component, event, helper) {
        console.log('recordEditForm handleSuccess');
        component.set('v.showSpinner', false);
    },
    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');
            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];
        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 (fields.hasOwnProperty(item.field)) {
                      item.fi = fields[item.field];
                    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;
                    }
                  }
                }
              }
            }
        }
              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
                  );
        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;
                    }
                }
              }
              // }, 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
            }
        }
        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
                    ) {
                      item.value = pid;
                        component.set('v.agencyHospitalId', item.value);
                        console.log(
                            'v.agencyHospitalId item.value = ' + item.value
                        );
                    }
                  }
                }
              }
              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"
          });
        }
      }
    );
  },
  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");
        // Set isModalOpen true
        component.set('v.isModalOpen', true);
        component.find('button').set('v.disabled', true);
        helper.preparePayloadForSearchAgencyContact(component, event, helper);
    },
    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;
    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 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;
          }
        }
      }
    }
    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) {
        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;
          }
        }
      }
    }
    // 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);
  }
});