@riskdefy/chargebacks 1.0.2 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Readme.md +29 -0
- package/dist/chargebacks.css +1 -0
- package/dist/index.js +1284 -1
- package/package.json +3 -1
- package/src/components/Chargebacks.vue +6 -25
- package/src/components/Details.vue +789 -0
- package/src/components/FluidPayDetails.vue +314 -0
- package/src/components/IncomingDetails.vue +620 -0
- package/src/components/InovioPayDetails.vue +316 -0
- package/src/components/NmiDetails.vue +162 -0
- package/src/components/NuveiDetails.vue +320 -0
- package/src/components/ReasonExplained.vue +121 -0
- package/src/components/SquareUp.vue +316 -0
- package/src/components/Summary.vue +218 -0
- package/src/components/USAEPayDetails.vue +181 -0
- package/src/service/api.js +23 -0
@@ -0,0 +1,620 @@
|
|
1
|
+
<template>
|
2
|
+
<div class="row g-5 g-xl-10">
|
3
|
+
<!--begin::Col-->
|
4
|
+
|
5
|
+
<div class="col-xl-8">
|
6
|
+
<Details
|
7
|
+
:reason_explained="reason_explained"
|
8
|
+
:reason="reason"
|
9
|
+
:merchant="merchant"
|
10
|
+
:incoming="incoming"
|
11
|
+
></Details>
|
12
|
+
</div>
|
13
|
+
|
14
|
+
<div class="col-xl-4 mb-10">
|
15
|
+
<div class="card">
|
16
|
+
<!--begin::Header-->
|
17
|
+
<div class="card">
|
18
|
+
<Summary
|
19
|
+
:reason="reason"
|
20
|
+
:processor="processor"
|
21
|
+
:merchant="merchant"
|
22
|
+
:incoming="incoming"
|
23
|
+
></Summary>
|
24
|
+
</div>
|
25
|
+
<!--end::Header-->
|
26
|
+
<!--begin::Body-->
|
27
|
+
<!--end::Body-->
|
28
|
+
</div>
|
29
|
+
<div class="card card-body d-flex align-items-start mt-5 pt-5">
|
30
|
+
<!--begin::Chart-->
|
31
|
+
<div class="mb-auto">
|
32
|
+
<!--begin::Header-->
|
33
|
+
<div class="align-items-center border-0">
|
34
|
+
<h3 class="align-items-start flex-column">
|
35
|
+
<span class="fw-normal fs-7 text-dark ps-5"
|
36
|
+
>Response Timeline</span
|
37
|
+
>
|
38
|
+
</h3>
|
39
|
+
</div>
|
40
|
+
<!--end::Header-->
|
41
|
+
<!--begin::Body-->
|
42
|
+
<div class="card-body pt-5">
|
43
|
+
<!--begin::Timeline-->
|
44
|
+
<div class="timeline-label">
|
45
|
+
<!--begin::Item-->
|
46
|
+
<div
|
47
|
+
v-if="incoming.found_date != '0000-00-00 00:00:00'"
|
48
|
+
class="timeline-item"
|
49
|
+
>
|
50
|
+
<!--begin::Label-->
|
51
|
+
<div class="timeline-label text-gray-800 fs-8">
|
52
|
+
{{ getFoundTime }}
|
53
|
+
</div>
|
54
|
+
<!--end::Label-->
|
55
|
+
<!--begin::Badge-->
|
56
|
+
<div class="timeline-badge">
|
57
|
+
<i class="fa fa-genderless text-success fs-1"></i>
|
58
|
+
</div>
|
59
|
+
<!--end::Badge-->
|
60
|
+
<!--begin::Text-->
|
61
|
+
<div class="text-gray-800 ps-3 fs-8">
|
62
|
+
Transaction Found ({{ getFoundDate }})
|
63
|
+
</div>
|
64
|
+
<!--end::Text-->
|
65
|
+
</div>
|
66
|
+
<div v-else class="timeline-item">
|
67
|
+
<!--begin::Label-->
|
68
|
+
<div class="timeline-label text-gray-400 fs-8">00:00</div>
|
69
|
+
<!--end::Label-->
|
70
|
+
<!--begin::Badge-->
|
71
|
+
<div class="timeline-badge">
|
72
|
+
<i class="fa fa-genderless text-gray-400 fs-1"></i>
|
73
|
+
</div>
|
74
|
+
<!--end::Badge-->
|
75
|
+
<!--begin::Text-->
|
76
|
+
<div class="text-gray-400 ps-3 fs-8">Transaction Not Found</div>
|
77
|
+
<!--end::Text-->
|
78
|
+
</div>
|
79
|
+
<div
|
80
|
+
v-if="incoming.found_date != '0000-00-00 00:00:00'"
|
81
|
+
class="timeline-item"
|
82
|
+
>
|
83
|
+
<!--begin::Label-->
|
84
|
+
<div class="timeline-label text-gray-800 fs-8">
|
85
|
+
{{ getPopulatedTime }}
|
86
|
+
</div>
|
87
|
+
<!--end::Label-->
|
88
|
+
<!--begin::Badge-->
|
89
|
+
<div class="timeline-badge">
|
90
|
+
<i class="fa fa-genderless text-success fs-1"></i>
|
91
|
+
</div>
|
92
|
+
<!--end::Badge-->
|
93
|
+
<!--begin::Text-->
|
94
|
+
<div class="text-gray-800 ps-3 fs-8">
|
95
|
+
Details Populated ({{ getPopulatedDate }})
|
96
|
+
</div>
|
97
|
+
<!--end::Text-->
|
98
|
+
</div>
|
99
|
+
<div v-else class="timeline-item">
|
100
|
+
<!--begin::Label-->
|
101
|
+
<div class="timeline-label text-gray-400 fs-8">00:00</div>
|
102
|
+
<!--end::Label-->
|
103
|
+
<!--begin::Badge-->
|
104
|
+
<div class="timeline-badge">
|
105
|
+
<i class="fa fa-genderless text-gray-400 fs-1"></i>
|
106
|
+
</div>
|
107
|
+
<!--end::Badge-->
|
108
|
+
<!--begin::Text-->
|
109
|
+
<div class="text-gray-400 ps-3 fs-8">Details Not Populated</div>
|
110
|
+
<!--end::Text-->
|
111
|
+
</div>
|
112
|
+
<!--end::Item-->
|
113
|
+
<!--begin::Item-->
|
114
|
+
<div
|
115
|
+
v-if="incoming.sent_date != '0000-00-00 00:00:00'"
|
116
|
+
class="timeline-item"
|
117
|
+
>
|
118
|
+
<!--begin::Label-->
|
119
|
+
<div class="timeline-label text-gray-800 fs-8">
|
120
|
+
{{ getSentTime }}
|
121
|
+
</div>
|
122
|
+
<!--end::Label-->
|
123
|
+
<!--begin::Badge-->
|
124
|
+
<div class="timeline-badge">
|
125
|
+
<i class="fa fa-genderless text-success fs-1"></i>
|
126
|
+
</div>
|
127
|
+
<!--end::Badge-->
|
128
|
+
<!--begin::Content-->
|
129
|
+
<div class="timeline-content d-flex">
|
130
|
+
<span class="text-gray-800 ps-3 fs-8"
|
131
|
+
>Response Sent ({{ getSentDate }})</span
|
132
|
+
>
|
133
|
+
</div>
|
134
|
+
<!--end::Content-->
|
135
|
+
</div>
|
136
|
+
<div v-else class="timeline-item">
|
137
|
+
<!--begin::Label-->
|
138
|
+
<div class="timeline-label text-gray-400 fs-8">00:00</div>
|
139
|
+
<!--end::Label-->
|
140
|
+
<!--begin::Badge-->
|
141
|
+
<div class="timeline-badge">
|
142
|
+
<i class="fa fa-genderless text-gray-400 fs-1"></i>
|
143
|
+
</div>
|
144
|
+
<!--end::Badge-->
|
145
|
+
<!--begin::Content-->
|
146
|
+
<div class="timeline-content d-flex">
|
147
|
+
<span class="text-gray-400 ps-3 fs-8">Response Not Sent</span>
|
148
|
+
</div>
|
149
|
+
<!--end::Content-->
|
150
|
+
</div>
|
151
|
+
<!--end::Item-->
|
152
|
+
</div>
|
153
|
+
<!--end::Timeline-->
|
154
|
+
</div>
|
155
|
+
<!--end: Card Body-->
|
156
|
+
</div>
|
157
|
+
<!--end::Chart-->
|
158
|
+
</div>
|
159
|
+
<!--end::Chart widget 31-->
|
160
|
+
</div>
|
161
|
+
<!--end::Col-->
|
162
|
+
<!--begin::Col-->
|
163
|
+
<!--end::Col-->
|
164
|
+
</div>
|
165
|
+
</template>
|
166
|
+
|
167
|
+
<script lang="ts">
|
168
|
+
import { defineComponent, onMounted, computed, ref } from "vue";
|
169
|
+
import { Modal } from "bootstrap";
|
170
|
+
|
171
|
+
import Details from "./Details.vue";
|
172
|
+
import Summary from "./Summary.vue";
|
173
|
+
import ApiService from "../service/api";
|
174
|
+
|
175
|
+
interface Incoming {
|
176
|
+
id: string;
|
177
|
+
transaction_found: string;
|
178
|
+
details_populated: string;
|
179
|
+
dispute_url: string;
|
180
|
+
is_responded: string;
|
181
|
+
// eslint-disable-next-line
|
182
|
+
card_holder: any;
|
183
|
+
// eslint-disable-next-line
|
184
|
+
card: any;
|
185
|
+
// eslint-disable-next-line
|
186
|
+
transaction: any;
|
187
|
+
// eslint-disable-next-line
|
188
|
+
order_details: any;
|
189
|
+
// eslint-disable-next-line
|
190
|
+
order2_details: any;
|
191
|
+
order3_details: any;
|
192
|
+
crm2_details: any;
|
193
|
+
crm3_details: any;
|
194
|
+
product_details: any;
|
195
|
+
merchant_id: string;
|
196
|
+
reason: string;
|
197
|
+
// eslint-disable-next-line
|
198
|
+
dispute_cycle: any;
|
199
|
+
connection_id: string;
|
200
|
+
found_date: string;
|
201
|
+
populated_date: string;
|
202
|
+
sent_date: string;
|
203
|
+
reason_condition: string;
|
204
|
+
}
|
205
|
+
|
206
|
+
interface Merchant {
|
207
|
+
dba_name: string;
|
208
|
+
processor_id: string;
|
209
|
+
// eslint-disable-next-line
|
210
|
+
merchantDetails: any;
|
211
|
+
}
|
212
|
+
|
213
|
+
interface Connection {
|
214
|
+
id: string;
|
215
|
+
conn_name: string;
|
216
|
+
scheme: string;
|
217
|
+
host: string;
|
218
|
+
domain: string;
|
219
|
+
auth_type: string;
|
220
|
+
payload_type: string;
|
221
|
+
response_type: string;
|
222
|
+
enabled: string;
|
223
|
+
conn_status: string;
|
224
|
+
category: string;
|
225
|
+
created: string;
|
226
|
+
modified: string;
|
227
|
+
logo_url: string;
|
228
|
+
}
|
229
|
+
|
230
|
+
export default defineComponent({
|
231
|
+
name: "incoming-details",
|
232
|
+
components: {
|
233
|
+
Details,
|
234
|
+
Summary,
|
235
|
+
},
|
236
|
+
setup(props) {
|
237
|
+
const getIncomingId = computed(() => {
|
238
|
+
return props.incomingId;
|
239
|
+
});
|
240
|
+
const incoming = ref<Incoming>({
|
241
|
+
id: "",
|
242
|
+
transaction_found: "0",
|
243
|
+
details_populated: "0",
|
244
|
+
dispute_url: "",
|
245
|
+
is_responded: "",
|
246
|
+
card_holder: {},
|
247
|
+
card: {},
|
248
|
+
transaction: {
|
249
|
+
action: {},
|
250
|
+
},
|
251
|
+
order_details: {
|
252
|
+
items: [],
|
253
|
+
},
|
254
|
+
order2_details: {
|
255
|
+
items: [],
|
256
|
+
},
|
257
|
+
order3_details: {
|
258
|
+
items: [],
|
259
|
+
},
|
260
|
+
crm2_details: {},
|
261
|
+
crm3_details: {},
|
262
|
+
product_details: {},
|
263
|
+
merchant_id: "",
|
264
|
+
reason: "",
|
265
|
+
dispute_cycle: {},
|
266
|
+
connection_id: "",
|
267
|
+
found_date: "0000-00-00 00:00:00",
|
268
|
+
populated_date: "0000-00-00 00:00:00",
|
269
|
+
sent_date: "0000-00-00 00:00:00",
|
270
|
+
reason_condition: "",
|
271
|
+
});
|
272
|
+
const merchant = ref<Merchant>({
|
273
|
+
dba_name: "",
|
274
|
+
processor_id: "",
|
275
|
+
merchantDetails: {},
|
276
|
+
});
|
277
|
+
const reason = ref({});
|
278
|
+
const reason_explained = ref({
|
279
|
+
message: {},
|
280
|
+
instructions: {},
|
281
|
+
});
|
282
|
+
const processor = ref({});
|
283
|
+
const templates = ref({});
|
284
|
+
const templateImages = ref([]);
|
285
|
+
|
286
|
+
onMounted(async () => {
|
287
|
+
setCurrentPageTitle("Incoming Chargeback Details");
|
288
|
+
|
289
|
+
ApiService.setApiKey(props.apiKey);
|
290
|
+
|
291
|
+
setTimeout(async () => {
|
292
|
+
await getIncoming();
|
293
|
+
await getConnections();
|
294
|
+
DrawerComponent.reinitialization();
|
295
|
+
}, 500);
|
296
|
+
});
|
297
|
+
|
298
|
+
const connections = ref<Connection[]>([]);
|
299
|
+
const getConnections = async () => {
|
300
|
+
const { data } = await fetch("apis/connections?limit=100");
|
301
|
+
if (data.success) {
|
302
|
+
connections.value = [...data.data];
|
303
|
+
}
|
304
|
+
};
|
305
|
+
const isTransactionAvailable = computed(() => {
|
306
|
+
const transaction = incoming.value.transaction;
|
307
|
+
return (
|
308
|
+
transaction &&
|
309
|
+
Object.keys(transaction).length > 0 &&
|
310
|
+
transaction.transaction_id && // Assuming transaction_id is a key indicator
|
311
|
+
transaction.transaction_id !== ""
|
312
|
+
);
|
313
|
+
});
|
314
|
+
const getFoundTime = computed(() => {
|
315
|
+
const time = incoming.value.found_date.split(" ")[1];
|
316
|
+
const partTime = time.split(":");
|
317
|
+
return `${partTime[0]}:${partTime[1]}`;
|
318
|
+
});
|
319
|
+
const getFoundDate = computed(() => {
|
320
|
+
const date = incoming.value.found_date.split(" ")[0];
|
321
|
+
const partDate = date.split("-");
|
322
|
+
return `${partDate[1]}-${partDate[2]}`;
|
323
|
+
});
|
324
|
+
const getPopulatedTime = computed(() => {
|
325
|
+
const time = incoming.value.populated_date.split(" ")[1];
|
326
|
+
const partTime = time.split(":");
|
327
|
+
return `${partTime[0]}:${partTime[1]}`;
|
328
|
+
});
|
329
|
+
const getPopulatedDate = computed(() => {
|
330
|
+
const date = incoming.value.populated_date.split(" ")[0];
|
331
|
+
const partDate = date.split("-");
|
332
|
+
return `${partDate[1]}-${partDate[2]}`;
|
333
|
+
});
|
334
|
+
const getSentTime = computed(() => {
|
335
|
+
const time = incoming.value.sent_date.split(" ")[1];
|
336
|
+
const partTime = time.split(":");
|
337
|
+
return `${partTime[0]}:${partTime[1]}`;
|
338
|
+
});
|
339
|
+
const getSentDate = computed(() => {
|
340
|
+
const date = incoming.value.sent_date.split(" ")[0];
|
341
|
+
const partDate = date.split("-");
|
342
|
+
return `${partDate[1]}-${partDate[2]}`;
|
343
|
+
});
|
344
|
+
const apiSyncItems = ref([]);
|
345
|
+
|
346
|
+
const getIncoming = async () => {
|
347
|
+
try {
|
348
|
+
const { data } = await ApiService.get(
|
349
|
+
`chargebacks/incoming?id=${getIncomingId.value}`
|
350
|
+
);
|
351
|
+
incoming.value = data.data[0];
|
352
|
+
try {
|
353
|
+
incoming.value.card_holder = JSON.parse(incoming.value.card_holder);
|
354
|
+
} catch (e) {
|
355
|
+
incoming.value.card_holder = {};
|
356
|
+
}
|
357
|
+
|
358
|
+
try {
|
359
|
+
incoming.value.card = JSON.parse(incoming.value.card);
|
360
|
+
} catch (e) {
|
361
|
+
incoming.value.card = {};
|
362
|
+
}
|
363
|
+
|
364
|
+
try {
|
365
|
+
incoming.value.transaction = JSON.parse(incoming.value.transaction);
|
366
|
+
} catch (e) {
|
367
|
+
incoming.value.transaction = { action: {} };
|
368
|
+
}
|
369
|
+
|
370
|
+
try {
|
371
|
+
incoming.value.dispute_cycle = JSON.parse(
|
372
|
+
incoming.value.dispute_cycle
|
373
|
+
);
|
374
|
+
} catch (e) {
|
375
|
+
incoming.value.dispute_cycle = {};
|
376
|
+
}
|
377
|
+
|
378
|
+
try {
|
379
|
+
incoming.value.order_details = JSON.parse(
|
380
|
+
incoming.value.order_details
|
381
|
+
);
|
382
|
+
} catch (e) {
|
383
|
+
incoming.value.order_details = { items: [] };
|
384
|
+
}
|
385
|
+
|
386
|
+
try {
|
387
|
+
incoming.value.order2_details = JSON.parse(
|
388
|
+
incoming.value.order2_details
|
389
|
+
);
|
390
|
+
} catch (e) {
|
391
|
+
incoming.value.order2_details = { items: [] };
|
392
|
+
}
|
393
|
+
|
394
|
+
try {
|
395
|
+
incoming.value.product_details = JSON.parse(
|
396
|
+
incoming.value.product_details
|
397
|
+
);
|
398
|
+
} catch (e) {
|
399
|
+
incoming.value.product_details = {};
|
400
|
+
}
|
401
|
+
} catch (err) {
|
402
|
+
incoming.value = {
|
403
|
+
id: "",
|
404
|
+
transaction_found: "0",
|
405
|
+
details_populated: "0",
|
406
|
+
dispute_url: "",
|
407
|
+
is_responded: "",
|
408
|
+
card_holder: {},
|
409
|
+
card: {},
|
410
|
+
transaction: {
|
411
|
+
action: {},
|
412
|
+
},
|
413
|
+
order_details: {
|
414
|
+
items: [],
|
415
|
+
},
|
416
|
+
order2_details: {
|
417
|
+
items: [],
|
418
|
+
},
|
419
|
+
order3_details: {
|
420
|
+
items: [],
|
421
|
+
},
|
422
|
+
crm2_details: {},
|
423
|
+
crm3_details: {},
|
424
|
+
product_details: {},
|
425
|
+
merchant_id: "",
|
426
|
+
reason: "",
|
427
|
+
dispute_cycle: {},
|
428
|
+
connection_id: "",
|
429
|
+
found_date: "0000-00-00 00:00:00",
|
430
|
+
populated_date: "0000-00-00 00:00:00",
|
431
|
+
sent_date: "0000-00-00 00:00:00",
|
432
|
+
reason_condition: "",
|
433
|
+
};
|
434
|
+
}
|
435
|
+
|
436
|
+
try {
|
437
|
+
const { data } = await ApiService.get(
|
438
|
+
`merchants/accounts?merchant_id=${incoming.value.merchant_id}`
|
439
|
+
);
|
440
|
+
merchant.value = data.data[0];
|
441
|
+
try {
|
442
|
+
merchant.value.merchantDetails = JSON.parse(
|
443
|
+
merchant.value.merchantDetails
|
444
|
+
);
|
445
|
+
} catch (e) {
|
446
|
+
merchant.value.merchantDetails = {};
|
447
|
+
}
|
448
|
+
} catch (err) {
|
449
|
+
merchant.value = {
|
450
|
+
dba_name: "",
|
451
|
+
processor_id: "",
|
452
|
+
merchantDetails: {},
|
453
|
+
};
|
454
|
+
}
|
455
|
+
|
456
|
+
try {
|
457
|
+
const { data } = await ApiService.get(
|
458
|
+
`chargebacks/reasons?code=${incoming.value.reason}`
|
459
|
+
);
|
460
|
+
reason.value = data.data[0];
|
461
|
+
} catch (err) {
|
462
|
+
reason.value = {};
|
463
|
+
}
|
464
|
+
|
465
|
+
try {
|
466
|
+
const { data } = await ApiService.get(
|
467
|
+
`chargebacks/reasons_explained?code=${incoming.value.reason}`
|
468
|
+
);
|
469
|
+
reason_explained.value = data.data[0];
|
470
|
+
reason_explained.value.message = JSON.parse(data.data[0].message);
|
471
|
+
reason_explained.value.instructions = JSON.parse(
|
472
|
+
data.data[0].instructions
|
473
|
+
);
|
474
|
+
} catch (err) {
|
475
|
+
reason_explained.value = { message: {}, instructions: {} };
|
476
|
+
}
|
477
|
+
|
478
|
+
try {
|
479
|
+
const { data } = await ApiService.get(
|
480
|
+
`processors/isos/${merchant.value.processor_id}`
|
481
|
+
);
|
482
|
+
processor.value = data.data[0];
|
483
|
+
} catch (err) {
|
484
|
+
processor.value = {};
|
485
|
+
}
|
486
|
+
|
487
|
+
try {
|
488
|
+
const { data } = await ApiService.get(
|
489
|
+
`apis/merchants?fields=id,alias_name,connection_id,endpoint_name&category=Gateway&merchant_id=${incoming.value.merchant_id}`
|
490
|
+
);
|
491
|
+
apiSyncItems.value = data.data;
|
492
|
+
} catch (e) {
|
493
|
+
apiSyncItems.value = [];
|
494
|
+
}
|
495
|
+
};
|
496
|
+
|
497
|
+
const resetIncoming = () => {
|
498
|
+
getIncoming();
|
499
|
+
};
|
500
|
+
|
501
|
+
const onFormEntry = async () => {
|
502
|
+
DrawerComponent?.getInstance("view_incoming_details_drawer")?.show();
|
503
|
+
};
|
504
|
+
|
505
|
+
const onOpenResponseDrawer = async () => {
|
506
|
+
try {
|
507
|
+
let res = await ApiService.get(
|
508
|
+
`chargebacks/incoming/${incoming.value.id}?action=evidence_images`
|
509
|
+
);
|
510
|
+
if (res.data.success) {
|
511
|
+
if (res.data.data[0] === null) {
|
512
|
+
templateImages.value = [];
|
513
|
+
} else {
|
514
|
+
templateImages.value = res.data.data[0];
|
515
|
+
}
|
516
|
+
}
|
517
|
+
|
518
|
+
res = await ApiService.get(
|
519
|
+
`chargebacks/incoming/${incoming.value.id}?action=response_packet`
|
520
|
+
);
|
521
|
+
if (res.data.success) {
|
522
|
+
if (res.data.data[0] === null) {
|
523
|
+
templates.value = {};
|
524
|
+
} else {
|
525
|
+
templates.value = res.data.data[0];
|
526
|
+
}
|
527
|
+
DrawerComponent?.getInstance("add_response_drawer")?.show();
|
528
|
+
}
|
529
|
+
} catch (e) {
|
530
|
+
templates.value = {};
|
531
|
+
templateImages.value = [];
|
532
|
+
}
|
533
|
+
};
|
534
|
+
|
535
|
+
const submitTemplate = async () => {
|
536
|
+
try {
|
537
|
+
let res = await ApiService.get(
|
538
|
+
`chargebacks/incoming/${incoming.value.id}?action=evidence_images`
|
539
|
+
);
|
540
|
+
if (res.data.success) {
|
541
|
+
if (res.data.data[0] === null) {
|
542
|
+
templateImages.value = [];
|
543
|
+
} else {
|
544
|
+
templateImages.value = res.data.data[0];
|
545
|
+
}
|
546
|
+
}
|
547
|
+
|
548
|
+
res = await ApiService.get(
|
549
|
+
`chargebacks/incoming/${incoming.value.id}?action=response_packet`
|
550
|
+
);
|
551
|
+
if (res.data.success) {
|
552
|
+
if (res.data.data[0] === null) {
|
553
|
+
templates.value = {};
|
554
|
+
} else {
|
555
|
+
templates.value = res.data.data[0];
|
556
|
+
}
|
557
|
+
}
|
558
|
+
} catch (e) {
|
559
|
+
templates.value = {};
|
560
|
+
templateImages.value = [];
|
561
|
+
}
|
562
|
+
};
|
563
|
+
|
564
|
+
const onViewDispute = () => {
|
565
|
+
const modal = new Modal(document.getElementById("modal_pdf_view"));
|
566
|
+
modal.show();
|
567
|
+
};
|
568
|
+
const incomingWithoutTransaction = computed(() => {
|
569
|
+
const { transaction, card_holder, ...rest } = incoming.value;
|
570
|
+
return rest;
|
571
|
+
});
|
572
|
+
return {
|
573
|
+
incoming,
|
574
|
+
isTransactionAvailable,
|
575
|
+
incomingWithoutTransaction,
|
576
|
+
merchant,
|
577
|
+
reason,
|
578
|
+
reason_explained,
|
579
|
+
processor,
|
580
|
+
getFoundTime,
|
581
|
+
getPopulatedTime,
|
582
|
+
resetIncoming,
|
583
|
+
getSentTime,
|
584
|
+
getSentDate,
|
585
|
+
getFoundDate,
|
586
|
+
getPopulatedDate,
|
587
|
+
connections,
|
588
|
+
|
589
|
+
onOpenResponseDrawer,
|
590
|
+
onFormEntry,
|
591
|
+
submitTemplate,
|
592
|
+
templates,
|
593
|
+
templateImages,
|
594
|
+
onViewDispute,
|
595
|
+
apiSyncItems,
|
596
|
+
};
|
597
|
+
},
|
598
|
+
});
|
599
|
+
</script>
|
600
|
+
<style>
|
601
|
+
.el-step__title {
|
602
|
+
font-size: 12px;
|
603
|
+
line-height: 38px;
|
604
|
+
font-weight: 500;
|
605
|
+
font-family: inherit;
|
606
|
+
}
|
607
|
+
.el-step__title.is-process {
|
608
|
+
font-weight: 500;
|
609
|
+
}
|
610
|
+
|
611
|
+
.el-step__icon-inner {
|
612
|
+
font-size: 12px;
|
613
|
+
}
|
614
|
+
.el-message__content {
|
615
|
+
padding: 2px;
|
616
|
+
font-size: 12px;
|
617
|
+
line-height: 1;
|
618
|
+
}
|
619
|
+
</style>
|
620
|
+
|