buli
2023-07-14 5b5c1e16deaa3a9d6d0ed1ffca390655ed103df7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
({
    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 isClone = component.get('v.isClone');
        if(!rid || isClone){
            component.set('v.title',$A.get("$Label.c.New")+'.客户人员');
        }else{
            component.set('v.title',$A.get("$Label.c.Edit")+'.客户人员');
        }
        
        let record_type_id = null;
        let pageref = component.get("v.pageReference")
        if(!record_type_id && pageref){
           record_type_id = pageref.state.recordTypeId
        }
        component.set("v.showSpinner", true);
        helper.CallBackAction(component,'Init',{
            rid : rid,
            pid : null,
            //rid : component.get('v.recordId'),
            record_type_id : record_type_id,
        },function(data){
            debugger
            console.log('data = ' + JSON.stringify(data));
            if(data.getState() == "SUCCESS"){
                var rv = data.getReturnValue();
                console.log(rv);
                if(rv.IsSuccess){
                    let layout = JSON.parse(rv.Data.layout);
                    let fields = rv.Data.fields;
                    let staticResource = JSON.parse(rv.Data.staticResource);
                    let staticResourceV2 = JSON.parse(rv.Data.staticResourceV2);
                    let section_names = [];
                    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);
 
                    
 
                    var agencyHospitalId = component.get("v.agencyHospitalId");
                    console.log('agencyHospitalId = ' + agencyHospitalId);
                    if(rv.Data && rv.Data.data && rv.Data.data.AWS_Data_Id__c){
                        helper.AwsGet(staticResource.queryUrl, {
                            dataId : rv.Data.data.AWS_Data_Id__c
                        }, function(data){
                            console.log('data = ' + data);
                            
                            for(let f of staticResource.PIDetails){
                                
                                if(data.object && data.object.hasOwnProperty(f.AWS_Field_API__c)){
                                    rv.Data.data[f.SF_Field_API_Name__c] = data.object[f.AWS_Field_API__c];
                                    if(data.object.hasOwnProperty(f.AWS_Encrypted_Field_API__c) && data.object[f.AWS_Encrypted_Field_API__c]){
                                        rv.Data.data[f.SF_Field_Encrypted_API__c] = data.object[f.AWS_Encrypted_Field_API__c];
                                    }
                                }
                            }
                            
                            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];
                                        }
                                        if(item.field == 'Agency_Hospital__c'){
                                            item.value = agencyHospitalId;
                                        }
                                    }
                                }
                            }
 
                            component.set('v.record_data',rv.Data.data);
                            component.set('v.layout',layout);
                        }, 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;
                                    }
                                    if(item.field == 'Agency_Hospital__c'){
                                        item.value = agencyHospitalId;
                                    }
                                }
                            }
                        }
                        component.set('v.layout',layout);
                    }
                    
                    
                    component.set('v.fields',fields);
                    component.set('v.staticResource',staticResource);
                    component.set('v.staticResourceV2',staticResourceV2);
                }else{
                    helper.ShowToast({
                        "message" : rv.Message,
                        "type" : "error"
                    });
                }
                
            }else{
                
                helper.ShowToast({
                    "message" : "Init error",
                    "type" : "error"
                });
                
            }
        });
    },
    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 staticResourceV2 = component.get('v.staticResourceV2');
        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 urlV2 = staticResourceV2.newUrl;
        let payloadPi = {};
        if (record_id && !isClone) {
            url = staticResource.updateUrl;
            //urlV2 = staticResourceV2.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');
        
        let hospitalId = '';
        for(let s of layout){
            for(let c of s.layoutColumns){                
                for(let item of c.layoutItems){
                    if(item.field == 'Agency_Hospital__c'){
                        hospitalId = item.value;
                    }
                    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);
        //zhj MEBG新方案改造 2022-11-29 start
        debugger
        let hospitalName = '';
        //调用后端searchAgencyDataId方法查询出医院下面所有客户人员dataid
        helper.CallBackAction(component,'searchAgencyDataId',{
            hospitalId : hospitalId
        },function(data){
            if(data.getState() == "SUCCESS"){
                var data = data.getReturnValue();
                if(data.IsSuccess == true){
                    let agencyContactIds = ''
                    if(data.Message == '' && data.Data && data.Data.length > 0){
                        hospitalName = data.Data[0].Agency_Hospital__r.Name;
                        for(var i=0;i<data.Data.length;i++){
                            if(data.Data[i].AWS_Data_Id__c)
                                agencyContactIds += ','+data.Data[i].AWS_Data_Id__c;
                        }
                        agencyContactIds = agencyContactIds.substring(1);
                        payloadPi['agencyContactIds'] = agencyContactIds;
                    }else{
                        payloadPi['agencyContactIds'] = agencyContactIds;
                    }
                    helper.AwsPost(url+'V2', [payloadPi], function(result){
                        //如果返回是129表示重复了,报错
                        if(result.status == '129'){
                            helper.ShowToast({
                                "message" : '该客户人员名字已存在,在'+hospitalName+'医院,请修改',
                                "type" : "error"
                            });
                            component.set("v.showSpinner", false);
                            return
                        }
    
                        let obj = result.object[0];
                        let data = {};
                        if(record_id && !isClone){
                            data.Id = record_id;
                        }else{
                            data.AWS_Data_Id__c = obj.dataId;
                        }
                        for(let s of layout){
                            for(let c of s.layoutColumns){                
                                for(let item of c.layoutItems){
                                    if(item.field && item.behavior != "Readonly"){
                                        if(pi_fields_map.hasOwnProperty(item.field)){
                                            data[item.field] = obj[pi_fields_map[item.field].AWS_Field_API__c];
                                            //data[pi_fields_map[item.field].SF_Field_Encrypted_API__c] = obj[pi_fields_map[item.field].AWS_Encrypted_Field_API__c];
                                        }else{
                                            data[item.field] = item.value;
                                        }
                                    }
                                    
                                }
                            }
                        }
                        
                        
                        $A.getCallback(function(){
                            helper.CallBackAction(component,'Save',{
                                data : data,
                                transId : result.txId
                            },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.AwsPost(staticResource.transactionUrl,{
                                        txId: result.txId,
                                        sfRecordId:sfId,
                                        isSuccess: rv.IsSuccess ? 1 : 0
                                    },function(data){
                                        if(rv.IsSuccess){
                                            helper.ShowToast({
                                                "message" : "成功",
                                                "type" : "success"
                                            });
                                            helper.closeAgencyContact(component);
                                            
                                            // if (record_id && !isClone){
                                                
                                            //     helper.closeAgencyContact(component);
                                            //     //$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"
                                            });
                                        }
                                    },staticResource.token);
                                    
                                    
                                }else{
                                    
                                    helper.ShowToast({
                                        "message" : "Init error",
                                        "type" : "error"
                                    });
                                    
                                }
                            });
                        })();
                        
                    }, staticResource.token);
                }else{
                    helper.ShowToast({
                        "message" : data.message,
                        "type" : "error"
                    });
                    component.set("v.showSpinner", false);
                }
            }else{
                helper.ShowToast({
                    "message" : 'searchAgency失败',
                    "type" : "error"
                });
                component.set("v.showSpinner", false);
            }
        });
        //zhj MEBG新方案改造 2022-11-29 end
        // helper.AwsPost(urlV2, [payloadPi], function(result){
            
        //     let obj = result.object[0];
        //     let data = {};
        //     if(record_id && !isClone){
        //         data.Id = record_id;
        //     }else{
        //         data.AWS_Data_Id__c = obj.dataId;
        //     }
        //     for(let s of layout){
        //         for(let c of s.layoutColumns){                
        //             for(let item of c.layoutItems){
        //                 if(item.field && item.behavior != "Readonly"){
        //                     if(pi_fields_map.hasOwnProperty(item.field)){
        //                         data[item.field] = obj[pi_fields_map[item.field].AWS_Field_API__c];
        //                         data[pi_fields_map[item.field].SF_Field_Encrypted_API__c] = obj[pi_fields_map[item.field].AWS_Encrypted_Field_API__c];
        //                     }else{
        //                         data[item.field] = item.value;
        //                     }
        //                 }
                        
        //             }
        //         }
        //     }
            
            
        //     $A.getCallback(function(){
        //         helper.CallBackAction(component,'Save',{
        //             data : data,
        //             transId : result.txId
        //         },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.AwsPost(staticResource.transactionUrl,{
        //                     txId: result.txId,
        //                     sfRecordId:sfId,
        //                     isSuccess: rv.IsSuccess ? 1 : 0
        //                 },function(data){
        //                     if(rv.IsSuccess){
        //                         helper.ShowToast({
        //                             "message" : "成功",
        //                             "type" : "success"
        //                         });
        //                         helper.closeAgencyContact(component);
                                
        //                         // if (record_id && !isClone){
                                    
        //                         //     helper.closeAgencyContact(component);
        //                         //     //$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"
        //                         });
        //                     }
        //                 },staticResource.token);
                        
                        
        //             }else{
                        
        //                 helper.ShowToast({
        //                     "message" : "Init error",
        //                     "type" : "error"
        //                 });
                        
        //             }
        //         });
        //     })();
            
        // }, staticResource.token);
    },
    cancelClick : function(component, event, helper){
        helper.closeAgencyContact(component);
    },
    
    scriptsLoaded : function(component, event, helper){}
})