buli
2023-07-14 e6068da47c1bef5517c9e5fdc8c726766867ad4e
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
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
({
    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) {}
});