react-native-timacare 3.3.50 → 3.3.52
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/lib/commonjs/assets/v3/13.svg +19 -0
- package/lib/commonjs/assets/v3/14.svg +24 -0
- package/lib/commonjs/assets/v3/index.js +1 -1
- package/lib/commonjs/assets/v3/index.js.flow +4 -0
- package/lib/commonjs/assets/v3/index.js.map +1 -1
- package/lib/commonjs/components/ItemTimaOneV3.js +1 -1
- package/lib/commonjs/components/ItemTimaOneV3.js.flow +574 -946
- package/lib/commonjs/components/ItemTimaOneV3.js.map +1 -1
- package/lib/commonjs/screens/detail-loan/Payment.js +1 -1
- package/lib/commonjs/screens/detail-loan/Payment.js.flow +211 -234
- package/lib/commonjs/screens/detail-loan/Payment.js.map +1 -1
- package/lib/commonjs/screens/home/DigitalTopupItem.js +1 -1
- package/lib/commonjs/screens/home/DigitalTopupItem.js.flow +565 -822
- package/lib/commonjs/screens/home/DigitalTopupItem.js.map +1 -1
- package/lib/commonjs/screens/home/ItemMotoBikeLoan.js +1 -1
- package/lib/commonjs/screens/home/ItemMotoBikeLoan.js.flow +499 -705
- package/lib/commonjs/screens/home/ItemMotoBikeLoan.js.map +1 -1
- package/lib/commonjs/screens/home/index.js +1 -1
- package/lib/commonjs/screens/home/index.js.flow +28 -18
- package/lib/commonjs/screens/home/index.js.map +1 -1
- package/lib/module/assets/v3/13.svg +19 -0
- package/lib/module/assets/v3/14.svg +24 -0
- package/lib/module/assets/v3/index.js +1 -1
- package/lib/module/assets/v3/index.js.map +1 -1
- package/lib/module/components/ItemTimaOneV3.js +1 -1
- package/lib/module/components/ItemTimaOneV3.js.map +1 -1
- package/lib/module/screens/detail-loan/Payment.js +1 -1
- package/lib/module/screens/detail-loan/Payment.js.map +1 -1
- package/lib/module/screens/home/DigitalTopupItem.js +1 -1
- package/lib/module/screens/home/DigitalTopupItem.js.map +1 -1
- package/lib/module/screens/home/ItemMotoBikeLoan.js +1 -1
- package/lib/module/screens/home/ItemMotoBikeLoan.js.map +1 -1
- package/lib/module/screens/home/index.js +1 -1
- package/lib/module/screens/home/index.js.map +1 -1
- package/lib/typescript/assets/v3/index.d.ts +3 -1
- package/lib/typescript/assets/v3/index.d.ts.map +1 -1
- package/lib/typescript/components/ItemTimaOneV3.d.ts.map +1 -1
- package/lib/typescript/screens/detail-loan/Payment.d.ts.map +1 -1
- package/lib/typescript/screens/home/DigitalTopupItem.d.ts.map +1 -1
- package/lib/typescript/screens/home/ItemMotoBikeLoan.d.ts.map +1 -1
- package/lib/typescript/screens/home/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/assets/v3/13.svg +19 -0
- package/src/assets/v3/14.svg +24 -0
- package/src/assets/v3/index.tsx +4 -0
- package/src/components/ItemTimaOneV3.tsx +574 -946
- package/src/screens/detail-loan/Payment.tsx +211 -234
- package/src/screens/home/DigitalTopupItem.tsx +565 -822
- package/src/screens/home/ItemMotoBikeLoan.tsx +499 -705
- package/src/screens/home/index.tsx +28 -18
|
@@ -4,17 +4,13 @@ import {
|
|
|
4
4
|
Alert,
|
|
5
5
|
Dimensions,
|
|
6
6
|
Image,
|
|
7
|
+
StyleSheet,
|
|
7
8
|
TouchableOpacity,
|
|
8
9
|
View,
|
|
9
10
|
ViewStyle,
|
|
10
11
|
} from 'react-native';
|
|
11
12
|
import LinearGradient from 'react-native-linear-gradient';
|
|
12
|
-
import {
|
|
13
|
-
IconMoney2,
|
|
14
|
-
IconQuestion,
|
|
15
|
-
IconTick,
|
|
16
|
-
IconTima16,
|
|
17
|
-
} from '../../assets/svgs';
|
|
13
|
+
import { IconMoney2, IconQuestion, IconTick } from '../../assets/svgs';
|
|
18
14
|
import { formatMoney } from '../../utils';
|
|
19
15
|
import { MText } from '../../components/MText';
|
|
20
16
|
import Modal from 'react-native-modal';
|
|
@@ -32,17 +28,17 @@ import {
|
|
|
32
28
|
IconStep4Success,
|
|
33
29
|
IconStep3Success,
|
|
34
30
|
} from '../../assets/digital_topup';
|
|
35
|
-
import { color } from '../../theme';
|
|
36
31
|
import { ScreenNames } from '../../navigation';
|
|
37
32
|
import { Close2Icon, Info } from '../../assets/icons';
|
|
38
33
|
import { Api } from '../../services/api';
|
|
39
34
|
import {
|
|
35
|
+
Icon1,
|
|
40
36
|
Icon10,
|
|
37
|
+
Icon14,
|
|
41
38
|
Icon2,
|
|
42
39
|
Icon3,
|
|
43
40
|
Icon4,
|
|
44
41
|
Icon5,
|
|
45
|
-
Icon6,
|
|
46
42
|
Icon7,
|
|
47
43
|
Icon8,
|
|
48
44
|
Icon9,
|
|
@@ -54,6 +50,50 @@ interface IProps {
|
|
|
54
50
|
navigation: any;
|
|
55
51
|
callback?: () => void;
|
|
56
52
|
}
|
|
53
|
+
|
|
54
|
+
const GRADIENT_ORANGE = ['#FF8E4F', '#EF592E'];
|
|
55
|
+
|
|
56
|
+
const COLOR_ACTIVE = '#EF592E';
|
|
57
|
+
const COLOR_DONE = '#333333';
|
|
58
|
+
const COLOR_DISABLED = '#999999';
|
|
59
|
+
|
|
60
|
+
const GUIDE_STEPS = [
|
|
61
|
+
{
|
|
62
|
+
icon: Icon1,
|
|
63
|
+
title: 'CẬP NHẬT THÔNG TIN KHOẢN VAY',
|
|
64
|
+
description: 'Số tiền vay, thời hạn vay, hình thức vay, ...',
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
icon: Icon3,
|
|
68
|
+
title: 'CẬP NHẬT THÔNG TIN CÁ NHÂN',
|
|
69
|
+
description: 'Giấy tờ CCCD/CC, ảnh chân dung, thông tin cá nhân',
|
|
70
|
+
},
|
|
71
|
+
{ icon: Icon14, title: 'CHỜ PHÊ DUYỆT' },
|
|
72
|
+
{ icon: Icon5, title: 'KÝ HỢP ĐỒNG ĐIỆN TỬ' },
|
|
73
|
+
{ icon: Icon2, title: 'NHẬN TIỀN GIẢI NGÂN' },
|
|
74
|
+
];
|
|
75
|
+
|
|
76
|
+
const LEGEND_ROWS = [
|
|
77
|
+
{ label: 'Đang cần thực hiện', icons: [Icon2, Icon3, Icon4, Icon5] },
|
|
78
|
+
{ label: 'Chưa thể thực hiện', icons: [Icon7, Icon8, Icon9, Icon10] },
|
|
79
|
+
{ label: 'Đã hoàn thành', icons: [IconSuccess] },
|
|
80
|
+
];
|
|
81
|
+
|
|
82
|
+
const StepAction = ({ icon, label, color, disabled, onPress }: any) => (
|
|
83
|
+
<TouchableOpacity disabled={disabled} style={styles.action} onPress={onPress}>
|
|
84
|
+
{icon}
|
|
85
|
+
<MText style={[styles.stepLabel, { color }]}>{label}</MText>
|
|
86
|
+
</TouchableOpacity>
|
|
87
|
+
);
|
|
88
|
+
|
|
89
|
+
const UpdateButton = ({ label, onPress }: any) => (
|
|
90
|
+
<TouchableOpacity onPress={onPress}>
|
|
91
|
+
<LinearGradient colors={GRADIENT_ORANGE} style={styles.updateButton}>
|
|
92
|
+
<MText style={styles.updateButtonText}>{label}</MText>
|
|
93
|
+
</LinearGradient>
|
|
94
|
+
</TouchableOpacity>
|
|
95
|
+
);
|
|
96
|
+
|
|
57
97
|
export default function DigitalTopupItem({
|
|
58
98
|
item,
|
|
59
99
|
navigation,
|
|
@@ -64,6 +104,9 @@ export default function DigitalTopupItem({
|
|
|
64
104
|
const [isLoading, setIsLoading] = React.useState(false);
|
|
65
105
|
const [showAlert, setShowAlert] = React.useState(false);
|
|
66
106
|
|
|
107
|
+
const step = item?.step;
|
|
108
|
+
const isPersonalStep = step === 4 || step === 5;
|
|
109
|
+
|
|
67
110
|
useEffect(() => {
|
|
68
111
|
if (item && item?.isPopupSuggestTopup === true) {
|
|
69
112
|
setShowModalInfo(true);
|
|
@@ -100,549 +143,224 @@ export default function DigitalTopupItem({
|
|
|
100
143
|
}
|
|
101
144
|
};
|
|
102
145
|
|
|
146
|
+
const goAsset = () => {
|
|
147
|
+
if (step === 0) {
|
|
148
|
+
navigation.push(ScreenNames.VehicleCamera, { loan: item, front: true });
|
|
149
|
+
} else {
|
|
150
|
+
navigation.push(ScreenNames.AssetInformation, { loan: item });
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
const goLoanInfo = () => {
|
|
155
|
+
navigation.push(ScreenNames.ReviewLoan, { loan: item });
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
const goPersonal = () => {
|
|
159
|
+
if (step === 4) {
|
|
160
|
+
navigation.push(ScreenNames.OCR, { loan: item, front: true });
|
|
161
|
+
} else if (step === 5) {
|
|
162
|
+
navigation.push(ScreenNames.TopupLoanInfo, { loan: item });
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
const goEkyc = () => {
|
|
167
|
+
navigation.push(ScreenNames.LivenessV2, { loan: item });
|
|
168
|
+
};
|
|
169
|
+
|
|
170
|
+
const goSign = () => {
|
|
171
|
+
navigation.push(ScreenNames.TTSSignLoan, { loan: item });
|
|
172
|
+
};
|
|
173
|
+
|
|
174
|
+
// Nút "Cập nhật" / "Ký hợp đồng" ở phần trạng thái, theo bước hiện tại
|
|
175
|
+
const primaryAction =
|
|
176
|
+
step <= 1
|
|
177
|
+
? { label: 'Cập nhật', onPress: goAsset }
|
|
178
|
+
: step === 3
|
|
179
|
+
? { label: 'Cập nhật', onPress: goLoanInfo }
|
|
180
|
+
: isPersonalStep
|
|
181
|
+
? { label: 'Cập nhật', onPress: goPersonal }
|
|
182
|
+
: step === 9
|
|
183
|
+
? { label: 'Cập nhật', onPress: goEkyc }
|
|
184
|
+
: step === 10
|
|
185
|
+
? { label: 'Ký hợp đồng', onPress: goSign }
|
|
186
|
+
: null;
|
|
187
|
+
|
|
103
188
|
return (
|
|
104
189
|
<>
|
|
105
|
-
<View
|
|
106
|
-
style={
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
marginBottom: 16,
|
|
110
|
-
borderRadius: 8,
|
|
111
|
-
borderWidth: 0.5,
|
|
112
|
-
borderColor: '#E0E0E0',
|
|
113
|
-
}}
|
|
114
|
-
>
|
|
115
|
-
<LinearGradient
|
|
116
|
-
colors={['#FF8E4F', '#EF592E']}
|
|
117
|
-
style={{
|
|
118
|
-
borderTopLeftRadius: 8,
|
|
119
|
-
borderTopRightRadius: 8,
|
|
120
|
-
marginHorizontal: -16,
|
|
121
|
-
}}
|
|
122
|
-
>
|
|
123
|
-
<View
|
|
124
|
-
style={{
|
|
125
|
-
flexDirection: 'row',
|
|
126
|
-
justifyContent: 'space-between',
|
|
127
|
-
alignItems: 'center',
|
|
128
|
-
paddingHorizontal: 16,
|
|
129
|
-
paddingVertical: 8,
|
|
130
|
-
}}
|
|
131
|
-
>
|
|
132
|
-
<View
|
|
133
|
-
style={{
|
|
134
|
-
flexDirection: 'row',
|
|
135
|
-
alignItems: 'center',
|
|
136
|
-
gap: 8,
|
|
137
|
-
}}
|
|
138
|
-
>
|
|
190
|
+
<View style={styles.card}>
|
|
191
|
+
<LinearGradient colors={GRADIENT_ORANGE} style={styles.headerGradient}>
|
|
192
|
+
<View style={styles.headerRow}>
|
|
193
|
+
<View style={styles.headerLeft}>
|
|
139
194
|
<IconMoney2 />
|
|
140
|
-
<MText
|
|
141
|
-
style={{
|
|
142
|
-
fontSize: 12,
|
|
143
|
-
color: 'white',
|
|
144
|
-
}}
|
|
145
|
-
>
|
|
146
|
-
HD-{item?.id}
|
|
147
|
-
</MText>
|
|
195
|
+
<MText style={styles.headerText}>HD-{item?.id}</MText>
|
|
148
196
|
</View>
|
|
149
|
-
<MText
|
|
150
|
-
style={{
|
|
151
|
-
fontSize: 12,
|
|
152
|
-
color: 'white',
|
|
153
|
-
fontWeight: 'bold',
|
|
154
|
-
}}
|
|
155
|
-
>
|
|
197
|
+
<MText style={styles.headerAmount}>
|
|
156
198
|
{formatMoney(item?.loanAmount)}đ
|
|
157
199
|
</MText>
|
|
158
200
|
</View>
|
|
159
201
|
</LinearGradient>
|
|
160
202
|
|
|
161
|
-
<View
|
|
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
|
-
onPress={() => {
|
|
243
|
-
navigation.push(ScreenNames.LivenessV2, {
|
|
244
|
-
loan: item,
|
|
245
|
-
});
|
|
246
|
-
}}
|
|
247
|
-
>
|
|
248
|
-
{item?.step < 9 || item?.step === 100 ? (
|
|
249
|
-
<IconStep3Disable />
|
|
250
|
-
) : item?.step === 9 ? (
|
|
251
|
-
<IconStep3 />
|
|
252
|
-
) : (
|
|
253
|
-
<IconStep3Success />
|
|
254
|
-
)}
|
|
255
|
-
<MText
|
|
256
|
-
style={{
|
|
257
|
-
textAlign: 'center',
|
|
258
|
-
fontSize: 10,
|
|
259
|
-
marginTop: 5,
|
|
260
|
-
color:
|
|
261
|
-
item?.step < 9 || item?.step === 100
|
|
262
|
-
? '#999999'
|
|
263
|
-
: item?.step === 9
|
|
264
|
-
? '#EF592E'
|
|
265
|
-
: '#333333',
|
|
266
|
-
}}
|
|
267
|
-
>
|
|
268
|
-
EKYC
|
|
269
|
-
</MText>
|
|
270
|
-
</TouchableOpacity>
|
|
271
|
-
<TouchableOpacity
|
|
272
|
-
disabled={item?.step === 10 ? false : true}
|
|
273
|
-
style={$action}
|
|
274
|
-
onPress={() => {
|
|
275
|
-
navigation.push(ScreenNames.TTSSignLoan, {
|
|
276
|
-
loan: item,
|
|
277
|
-
});
|
|
278
|
-
}}
|
|
279
|
-
>
|
|
280
|
-
{item?.step < 10 || item?.step === 100 ? (
|
|
281
|
-
<IconStep4Disable />
|
|
282
|
-
) : item?.step === 10 ? (
|
|
283
|
-
<IconStep4 />
|
|
284
|
-
) : (
|
|
285
|
-
<IconStep4Success />
|
|
286
|
-
)}
|
|
287
|
-
<MText
|
|
288
|
-
style={{
|
|
289
|
-
textAlign: 'center',
|
|
290
|
-
fontSize: 10,
|
|
291
|
-
marginTop: 5,
|
|
292
|
-
color:
|
|
293
|
-
item?.step < 10 || item?.step === 100
|
|
294
|
-
? '#999999'
|
|
295
|
-
: item?.step === 10
|
|
296
|
-
? '#EF592E'
|
|
297
|
-
: '#333333',
|
|
298
|
-
}}
|
|
299
|
-
>
|
|
300
|
-
Ký hợp{'\n'}đồng
|
|
301
|
-
</MText>
|
|
302
|
-
</TouchableOpacity>
|
|
203
|
+
<View style={styles.stepsRow}>
|
|
204
|
+
<StepAction
|
|
205
|
+
disabled={step !== 3}
|
|
206
|
+
onPress={goLoanInfo}
|
|
207
|
+
icon={
|
|
208
|
+
step < 3 ? (
|
|
209
|
+
<IconStep1Disable />
|
|
210
|
+
) : step === 3 ? (
|
|
211
|
+
<IconStep1 />
|
|
212
|
+
) : (
|
|
213
|
+
<IconStep1Success />
|
|
214
|
+
)
|
|
215
|
+
}
|
|
216
|
+
label={'Thông tin\nkhoản vay'}
|
|
217
|
+
color={
|
|
218
|
+
step < 3 ? COLOR_DISABLED : step === 3 ? COLOR_ACTIVE : COLOR_DONE
|
|
219
|
+
}
|
|
220
|
+
/>
|
|
221
|
+
<StepAction
|
|
222
|
+
disabled={!isPersonalStep}
|
|
223
|
+
onPress={goPersonal}
|
|
224
|
+
icon={
|
|
225
|
+
step < 4 ? (
|
|
226
|
+
<IconStep2Disable />
|
|
227
|
+
) : isPersonalStep ? (
|
|
228
|
+
<IconStep2 />
|
|
229
|
+
) : (
|
|
230
|
+
<IconStep2Success />
|
|
231
|
+
)
|
|
232
|
+
}
|
|
233
|
+
label={'Thông tin\ncá nhân'}
|
|
234
|
+
color={
|
|
235
|
+
step < 4
|
|
236
|
+
? COLOR_DISABLED
|
|
237
|
+
: isPersonalStep
|
|
238
|
+
? COLOR_ACTIVE
|
|
239
|
+
: COLOR_DONE
|
|
240
|
+
}
|
|
241
|
+
/>
|
|
242
|
+
<StepAction
|
|
243
|
+
disabled={step !== 9}
|
|
244
|
+
onPress={goEkyc}
|
|
245
|
+
icon={
|
|
246
|
+
step < 9 || step === 100 ? (
|
|
247
|
+
<IconStep3Disable />
|
|
248
|
+
) : step === 9 ? (
|
|
249
|
+
<IconStep3 />
|
|
250
|
+
) : (
|
|
251
|
+
<IconStep3Success />
|
|
252
|
+
)
|
|
253
|
+
}
|
|
254
|
+
label="EKYC"
|
|
255
|
+
color={
|
|
256
|
+
step < 9 || step === 100
|
|
257
|
+
? COLOR_DISABLED
|
|
258
|
+
: step === 9
|
|
259
|
+
? COLOR_ACTIVE
|
|
260
|
+
: COLOR_DONE
|
|
261
|
+
}
|
|
262
|
+
/>
|
|
263
|
+
<StepAction
|
|
264
|
+
disabled={step !== 10}
|
|
265
|
+
onPress={goSign}
|
|
266
|
+
icon={
|
|
267
|
+
step < 10 || step === 100 ? (
|
|
268
|
+
<IconStep4Disable />
|
|
269
|
+
) : step === 10 ? (
|
|
270
|
+
<IconStep4 />
|
|
271
|
+
) : (
|
|
272
|
+
<IconStep4Success />
|
|
273
|
+
)
|
|
274
|
+
}
|
|
275
|
+
label={'Ký hợp\nđồng'}
|
|
276
|
+
color={
|
|
277
|
+
step < 10 || step === 100
|
|
278
|
+
? COLOR_DISABLED
|
|
279
|
+
: step === 10
|
|
280
|
+
? COLOR_ACTIVE
|
|
281
|
+
: COLOR_DONE
|
|
282
|
+
}
|
|
283
|
+
/>
|
|
303
284
|
</View>
|
|
304
285
|
|
|
305
|
-
{
|
|
306
|
-
<View
|
|
307
|
-
style={{
|
|
308
|
-
backgroundColor: '#EEF7FF',
|
|
309
|
-
flexDirection: 'row',
|
|
310
|
-
alignItems: 'center',
|
|
311
|
-
gap: 4,
|
|
312
|
-
borderRadius: 4,
|
|
313
|
-
paddingHorizontal: 8,
|
|
314
|
-
paddingVertical: 10,
|
|
315
|
-
marginTop: 16,
|
|
316
|
-
}}
|
|
317
|
-
>
|
|
286
|
+
{step !== 11 ? (
|
|
287
|
+
<View style={styles.guideBanner}>
|
|
318
288
|
<IconQuestion />
|
|
319
|
-
<MText
|
|
320
|
-
style={{
|
|
321
|
-
fontSize: 10,
|
|
322
|
-
flex: 1,
|
|
323
|
-
}}
|
|
324
|
-
>
|
|
289
|
+
<MText style={styles.guideBannerText}>
|
|
325
290
|
Hướng dẫn các bước hoàn thiện đơn vay
|
|
326
291
|
</MText>
|
|
327
292
|
<TouchableOpacity onPress={() => setShowModal(true)}>
|
|
328
|
-
<MText
|
|
329
|
-
style={{
|
|
330
|
-
fontSize: 10,
|
|
331
|
-
color: '#2F80ED',
|
|
332
|
-
textDecorationLine: 'underline',
|
|
333
|
-
}}
|
|
334
|
-
>
|
|
335
|
-
Xem thêm
|
|
336
|
-
</MText>
|
|
293
|
+
<MText style={styles.linkText}>Xem thêm</MText>
|
|
337
294
|
</TouchableOpacity>
|
|
338
295
|
</View>
|
|
339
296
|
) : (
|
|
340
|
-
<View
|
|
341
|
-
style={{
|
|
342
|
-
backgroundColor: '#E8FFE9',
|
|
343
|
-
flexDirection: 'row',
|
|
344
|
-
alignItems: 'center',
|
|
345
|
-
gap: 8,
|
|
346
|
-
borderRadius: 4,
|
|
347
|
-
paddingHorizontal: 8,
|
|
348
|
-
paddingVertical: 10,
|
|
349
|
-
marginTop: 16,
|
|
350
|
-
}}
|
|
351
|
-
>
|
|
297
|
+
<View style={styles.successBanner}>
|
|
352
298
|
<IconTick />
|
|
353
|
-
<MText style={
|
|
299
|
+
<MText style={styles.successText}>
|
|
354
300
|
Hợp đồng đã ký thành công. Quý khách vui lòng chờ Chuyên viên tư
|
|
355
301
|
vấn liên hệ để hoàn tất bước giải ngân.
|
|
356
302
|
</MText>
|
|
357
303
|
</View>
|
|
358
304
|
)}
|
|
359
305
|
|
|
360
|
-
{
|
|
306
|
+
{step !== 11 && (
|
|
361
307
|
<View style={$row}>
|
|
362
|
-
<View style={
|
|
363
|
-
<MText
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
fontSize: 12,
|
|
367
|
-
}}
|
|
368
|
-
>
|
|
369
|
-
Trạng thái
|
|
370
|
-
</MText>
|
|
371
|
-
<MText
|
|
372
|
-
style={{
|
|
373
|
-
fontSize: 12,
|
|
374
|
-
fontWeight: 'bold',
|
|
375
|
-
}}
|
|
376
|
-
>
|
|
377
|
-
{item?.step <= 1
|
|
308
|
+
<View style={styles.statusLeft}>
|
|
309
|
+
<MText style={styles.statusLabel}>Trạng thái</MText>
|
|
310
|
+
<MText style={styles.statusValue}>
|
|
311
|
+
{step <= 1
|
|
378
312
|
? 'Chờ cập nhật thông tin tài sản'
|
|
379
|
-
:
|
|
380
|
-
?
|
|
381
|
-
:
|
|
382
|
-
?
|
|
383
|
-
:
|
|
384
|
-
?
|
|
385
|
-
: item?.step === 11
|
|
386
|
-
? `Hợp đồng đã ký thành công. Vui lòng chờ chuyên viên tư vấn liên hệ`
|
|
313
|
+
: step === 3
|
|
314
|
+
? 'Chờ cập nhật thông tin khoản vay'
|
|
315
|
+
: isPersonalStep
|
|
316
|
+
? 'Chờ cập nhật thông tin cá nhân'
|
|
317
|
+
: step === 9
|
|
318
|
+
? 'Chờ cập nhật eKYC'
|
|
387
319
|
: 'Đơn vay đang trong quá trình xử lý'}
|
|
388
320
|
</MText>
|
|
389
321
|
</View>
|
|
390
|
-
{
|
|
391
|
-
<
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
loan: item,
|
|
396
|
-
front: true,
|
|
397
|
-
});
|
|
398
|
-
} else {
|
|
399
|
-
navigation.push(ScreenNames.AssetInformation, {
|
|
400
|
-
loan: item,
|
|
401
|
-
});
|
|
402
|
-
}
|
|
403
|
-
}}
|
|
404
|
-
>
|
|
405
|
-
<LinearGradient
|
|
406
|
-
colors={['#FF8E4F', '#EF592E']}
|
|
407
|
-
style={{
|
|
408
|
-
height: 30,
|
|
409
|
-
alignItems: 'center',
|
|
410
|
-
justifyContent: 'center',
|
|
411
|
-
borderRadius: 24,
|
|
412
|
-
paddingHorizontal: 10,
|
|
413
|
-
}}
|
|
414
|
-
>
|
|
415
|
-
<MText
|
|
416
|
-
style={{
|
|
417
|
-
color: 'white',
|
|
418
|
-
fontSize: 12,
|
|
419
|
-
}}
|
|
420
|
-
>
|
|
421
|
-
Cập nhật
|
|
422
|
-
</MText>
|
|
423
|
-
</LinearGradient>
|
|
424
|
-
</TouchableOpacity>
|
|
425
|
-
) : item?.step === 3 ? (
|
|
426
|
-
<TouchableOpacity
|
|
427
|
-
onPress={() => {
|
|
428
|
-
if (item?.step === 3) {
|
|
429
|
-
navigation.push(ScreenNames.ReviewLoan, {
|
|
430
|
-
loan: item,
|
|
431
|
-
});
|
|
432
|
-
}
|
|
433
|
-
}}
|
|
434
|
-
>
|
|
435
|
-
<LinearGradient
|
|
436
|
-
colors={['#FF8E4F', '#EF592E']}
|
|
437
|
-
style={{
|
|
438
|
-
height: 30,
|
|
439
|
-
alignItems: 'center',
|
|
440
|
-
justifyContent: 'center',
|
|
441
|
-
borderRadius: 24,
|
|
442
|
-
paddingHorizontal: 10,
|
|
443
|
-
}}
|
|
444
|
-
>
|
|
445
|
-
<MText
|
|
446
|
-
style={{
|
|
447
|
-
color: 'white',
|
|
448
|
-
fontSize: 12,
|
|
449
|
-
}}
|
|
450
|
-
>
|
|
451
|
-
Cập nhật
|
|
452
|
-
</MText>
|
|
453
|
-
</LinearGradient>
|
|
454
|
-
</TouchableOpacity>
|
|
455
|
-
) : item?.step === 4 || item?.step === 5 ? (
|
|
456
|
-
<TouchableOpacity
|
|
457
|
-
onPress={() => {
|
|
458
|
-
if (item?.step === 4) {
|
|
459
|
-
navigation.push(ScreenNames.OCR, {
|
|
460
|
-
loan: item,
|
|
461
|
-
front: true,
|
|
462
|
-
});
|
|
463
|
-
} else if (item?.step === 5) {
|
|
464
|
-
navigation.push(ScreenNames.TopupLoanInfo, {
|
|
465
|
-
loan: item,
|
|
466
|
-
});
|
|
467
|
-
}
|
|
468
|
-
}}
|
|
469
|
-
>
|
|
470
|
-
<LinearGradient
|
|
471
|
-
colors={['#FF8E4F', '#EF592E']}
|
|
472
|
-
style={{
|
|
473
|
-
height: 30,
|
|
474
|
-
alignItems: 'center',
|
|
475
|
-
justifyContent: 'center',
|
|
476
|
-
borderRadius: 24,
|
|
477
|
-
paddingHorizontal: 10,
|
|
478
|
-
}}
|
|
479
|
-
>
|
|
480
|
-
<MText
|
|
481
|
-
style={{
|
|
482
|
-
color: 'white',
|
|
483
|
-
fontSize: 12,
|
|
484
|
-
}}
|
|
485
|
-
>
|
|
486
|
-
Cập nhật
|
|
487
|
-
</MText>
|
|
488
|
-
</LinearGradient>
|
|
489
|
-
</TouchableOpacity>
|
|
490
|
-
) : item?.step === 9 ? (
|
|
491
|
-
<TouchableOpacity
|
|
492
|
-
onPress={() => {
|
|
493
|
-
navigation.push(ScreenNames.LivenessV2, {
|
|
494
|
-
loan: item,
|
|
495
|
-
});
|
|
496
|
-
}}
|
|
497
|
-
>
|
|
498
|
-
<LinearGradient
|
|
499
|
-
colors={['#FF8E4F', '#EF592E']}
|
|
500
|
-
style={{
|
|
501
|
-
height: 30,
|
|
502
|
-
alignItems: 'center',
|
|
503
|
-
justifyContent: 'center',
|
|
504
|
-
borderRadius: 24,
|
|
505
|
-
paddingHorizontal: 10,
|
|
506
|
-
}}
|
|
507
|
-
>
|
|
508
|
-
<MText
|
|
509
|
-
style={{
|
|
510
|
-
color: 'white',
|
|
511
|
-
fontSize: 12,
|
|
512
|
-
}}
|
|
513
|
-
>
|
|
514
|
-
Cập nhật
|
|
515
|
-
</MText>
|
|
516
|
-
</LinearGradient>
|
|
517
|
-
</TouchableOpacity>
|
|
518
|
-
) : item?.step === 10 ? (
|
|
519
|
-
<TouchableOpacity
|
|
520
|
-
onPress={() => {
|
|
521
|
-
navigation.push(ScreenNames.TTSSignLoan, {
|
|
522
|
-
loan: item,
|
|
523
|
-
});
|
|
524
|
-
}}
|
|
525
|
-
>
|
|
526
|
-
<LinearGradient
|
|
527
|
-
colors={['#FF8E4F', '#EF592E']}
|
|
528
|
-
style={{
|
|
529
|
-
height: 30,
|
|
530
|
-
alignItems: 'center',
|
|
531
|
-
justifyContent: 'center',
|
|
532
|
-
borderRadius: 24,
|
|
533
|
-
paddingHorizontal: 10,
|
|
534
|
-
}}
|
|
535
|
-
>
|
|
536
|
-
<MText
|
|
537
|
-
style={{
|
|
538
|
-
color: 'white',
|
|
539
|
-
fontSize: 12,
|
|
540
|
-
}}
|
|
541
|
-
>
|
|
542
|
-
Ký hợp đồng
|
|
543
|
-
</MText>
|
|
544
|
-
</LinearGradient>
|
|
545
|
-
</TouchableOpacity>
|
|
546
|
-
) : (
|
|
547
|
-
<></>
|
|
322
|
+
{primaryAction && (
|
|
323
|
+
<UpdateButton
|
|
324
|
+
label={primaryAction.label}
|
|
325
|
+
onPress={primaryAction.onPress}
|
|
326
|
+
/>
|
|
548
327
|
)}
|
|
549
328
|
</View>
|
|
550
|
-
) : (
|
|
551
|
-
<></>
|
|
552
329
|
)}
|
|
553
|
-
{
|
|
554
|
-
<View
|
|
555
|
-
style={{
|
|
556
|
-
flexDirection: 'row',
|
|
557
|
-
alignItems: 'center',
|
|
558
|
-
gap: 8,
|
|
559
|
-
backgroundColor: '#FFF2F2',
|
|
560
|
-
marginHorizontal: -16,
|
|
561
|
-
paddingVertical: 10,
|
|
562
|
-
borderBottomRightRadius: 8,
|
|
563
|
-
borderBottomLeftRadius: 8,
|
|
564
|
-
paddingHorizontal: 10,
|
|
565
|
-
}}
|
|
566
|
-
>
|
|
330
|
+
{step !== 11 && (
|
|
331
|
+
<View style={styles.warningBanner}>
|
|
567
332
|
<Info />
|
|
568
|
-
<MText
|
|
569
|
-
|
|
570
|
-
{
|
|
571
|
-
fontSize: 10,
|
|
572
|
-
color: '#E40010',
|
|
573
|
-
flex: 1,
|
|
574
|
-
},
|
|
575
|
-
]}
|
|
576
|
-
>
|
|
577
|
-
{item?.step <= 1
|
|
333
|
+
<MText style={styles.warningText}>
|
|
334
|
+
{step <= 1
|
|
578
335
|
? 'Vui lòng cập nhật thông tin tài sản để được giải ngân sớm nhất!'
|
|
579
|
-
:
|
|
580
|
-
?
|
|
581
|
-
:
|
|
582
|
-
?
|
|
583
|
-
:
|
|
584
|
-
?
|
|
336
|
+
: step === 3
|
|
337
|
+
? 'Vui lòng cập nhật thông tin khoản vay để được giải ngân sớm nhất!'
|
|
338
|
+
: isPersonalStep
|
|
339
|
+
? 'Vui lòng cập nhật thông tin cá nhân để được giải ngân sớm nhất!'
|
|
340
|
+
: step === 9
|
|
341
|
+
? 'Bước cuối cùng rồi, vui lòng ký hợp đồng để được giải ngân sớm nhất nhé!'
|
|
585
342
|
: 'Đơn vay đang trong quá trình xử lý'}
|
|
586
343
|
</MText>
|
|
587
344
|
</View>
|
|
588
|
-
) : (
|
|
589
|
-
<></>
|
|
590
345
|
)}
|
|
591
346
|
</View>
|
|
347
|
+
|
|
592
348
|
<Modal
|
|
593
349
|
isVisible={showModalInfo}
|
|
594
350
|
backdropColor="#000"
|
|
595
351
|
backdropOpacity={0.5}
|
|
596
352
|
>
|
|
597
|
-
<View
|
|
598
|
-
style={{
|
|
599
|
-
borderRadius: 8,
|
|
600
|
-
backgroundColor: 'white',
|
|
601
|
-
}}
|
|
602
|
-
>
|
|
353
|
+
<View style={styles.infoCard}>
|
|
603
354
|
<Image
|
|
604
355
|
source={require('../../assets/tts/Banner.png')}
|
|
605
|
-
style={
|
|
606
|
-
width: '100%',
|
|
607
|
-
borderTopLeftRadius: 8,
|
|
608
|
-
borderTopRightRadius: 8,
|
|
609
|
-
height: (Dimensions.get('window').height / 2) * 0.7,
|
|
610
|
-
resizeMode: 'cover',
|
|
611
|
-
}}
|
|
356
|
+
style={styles.infoBanner}
|
|
612
357
|
/>
|
|
613
|
-
<MText
|
|
614
|
-
|
|
615
|
-
fontSize: 16,
|
|
616
|
-
fontWeight: 'bold',
|
|
617
|
-
textAlign: 'center',
|
|
618
|
-
marginVertical: 16,
|
|
619
|
-
}}
|
|
620
|
-
>
|
|
621
|
-
Chúc mừng bạn!
|
|
622
|
-
</MText>
|
|
623
|
-
<MText
|
|
624
|
-
style={{
|
|
625
|
-
textAlign: 'center',
|
|
626
|
-
paddingHorizontal: 16,
|
|
627
|
-
color: '#828282',
|
|
628
|
-
}}
|
|
629
|
-
>
|
|
358
|
+
<MText style={styles.infoTitle}>Chúc mừng bạn!</MText>
|
|
359
|
+
<MText style={styles.infoBody}>
|
|
630
360
|
Bạn đã được phê duyệt{' '}
|
|
631
|
-
<MText
|
|
632
|
-
style={{
|
|
633
|
-
color: '#EF592E',
|
|
634
|
-
fontWeight: 'bold',
|
|
635
|
-
}}
|
|
636
|
-
>
|
|
637
|
-
{item?.productNameTopup}
|
|
638
|
-
</MText>{' '}
|
|
361
|
+
<MText style={styles.infoHighlight}>{item?.productNameTopup}</MText>{' '}
|
|
639
362
|
với số tiền là{' '}
|
|
640
|
-
<MText
|
|
641
|
-
style={{
|
|
642
|
-
color: '#EF592E',
|
|
643
|
-
fontWeight: 'bold',
|
|
644
|
-
}}
|
|
645
|
-
>
|
|
363
|
+
<MText style={styles.infoHighlight}>
|
|
646
364
|
{formatMoney(item?.loanAmount)}
|
|
647
365
|
</MText>{' '}
|
|
648
366
|
VNĐ! Vui lòng eKYC - hoàn thiện xác thực khuôn mặt và ký hợp đồng để
|
|
@@ -651,379 +369,119 @@ export default function DigitalTopupItem({
|
|
|
651
369
|
<TouchableOpacity
|
|
652
370
|
disabled={isLoading}
|
|
653
371
|
onPress={() => onConfirm(1)}
|
|
654
|
-
style={
|
|
655
|
-
borderWidth: 1,
|
|
656
|
-
borderColor: '#EF592E',
|
|
657
|
-
borderRadius: 24,
|
|
658
|
-
paddingHorizontal: 16,
|
|
659
|
-
paddingVertical: 10,
|
|
660
|
-
alignSelf: 'center',
|
|
661
|
-
marginTop: 24,
|
|
662
|
-
}}
|
|
372
|
+
style={styles.infoConfirmButton}
|
|
663
373
|
>
|
|
664
|
-
<MText
|
|
665
|
-
style={{
|
|
666
|
-
color: '#EF592E',
|
|
667
|
-
}}
|
|
668
|
-
>
|
|
669
|
-
Xác nhận khoản vay
|
|
670
|
-
</MText>
|
|
374
|
+
<MText style={styles.infoConfirmText}>Xác nhận khoản vay</MText>
|
|
671
375
|
</TouchableOpacity>
|
|
672
376
|
|
|
673
377
|
<TouchableOpacity
|
|
674
378
|
disabled={isLoading}
|
|
675
379
|
onPress={() => onConfirm(2)}
|
|
676
|
-
style={
|
|
677
|
-
paddingHorizontal: 16,
|
|
678
|
-
paddingVertical: 10,
|
|
679
|
-
alignSelf: 'center',
|
|
680
|
-
}}
|
|
380
|
+
style={styles.infoSecondaryButton}
|
|
681
381
|
>
|
|
682
|
-
<MText style={
|
|
382
|
+
<MText style={styles.infoSecondaryText}>
|
|
383
|
+
Tôi cần vay số tiền khác
|
|
384
|
+
</MText>
|
|
683
385
|
</TouchableOpacity>
|
|
684
|
-
<View
|
|
685
|
-
style={{
|
|
686
|
-
backgroundColor: '#EDF6FF',
|
|
687
|
-
paddingVertical: 8,
|
|
688
|
-
borderBottomLeftRadius: 8,
|
|
689
|
-
borderBottomRightRadius: 8,
|
|
690
|
-
marginTop: 16,
|
|
691
|
-
alignItems: 'center',
|
|
692
|
-
}}
|
|
693
|
-
>
|
|
386
|
+
<View style={styles.infoRateBar}>
|
|
694
387
|
<TouchableOpacity
|
|
695
388
|
onPress={() => {
|
|
696
389
|
setShowModalInfo(false);
|
|
697
390
|
setTimeout(() => {
|
|
698
|
-
navigation.push(ScreenNames.LoanInterestRate, {
|
|
699
|
-
loan: item,
|
|
700
|
-
});
|
|
391
|
+
navigation.push(ScreenNames.LoanInterestRate, { loan: item });
|
|
701
392
|
}, 300);
|
|
702
393
|
}}
|
|
703
394
|
>
|
|
704
|
-
<MText style={
|
|
395
|
+
<MText style={styles.infoRateText}>
|
|
705
396
|
Bảng biểu lãi phí đơn vay {`->`}
|
|
706
397
|
</MText>
|
|
707
398
|
</TouchableOpacity>
|
|
708
399
|
</View>
|
|
709
400
|
</View>
|
|
710
401
|
</Modal>
|
|
402
|
+
|
|
711
403
|
<Modal
|
|
712
404
|
isVisible={showModal}
|
|
713
405
|
backdropColor="#000"
|
|
714
406
|
backdropOpacity={0.5}
|
|
715
407
|
onBackdropPress={() => setShowModal(false)}
|
|
716
408
|
>
|
|
717
|
-
<View
|
|
718
|
-
style={
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
color: '#828282',
|
|
738
|
-
}}
|
|
739
|
-
>
|
|
740
|
-
Thực hiện theo các bước sau
|
|
741
|
-
</MText>
|
|
742
|
-
<View>
|
|
743
|
-
<View
|
|
744
|
-
style={{
|
|
745
|
-
flexDirection: 'row',
|
|
746
|
-
alignItems: 'center',
|
|
747
|
-
gap: 8,
|
|
748
|
-
marginTop: 16,
|
|
749
|
-
}}
|
|
750
|
-
>
|
|
751
|
-
<View
|
|
752
|
-
style={{
|
|
753
|
-
width: 30,
|
|
754
|
-
height: 30,
|
|
755
|
-
borderRadius: 4,
|
|
756
|
-
backgroundColor: '#FFF2F2',
|
|
757
|
-
alignItems: 'center',
|
|
758
|
-
justifyContent: 'center',
|
|
759
|
-
}}
|
|
760
|
-
>
|
|
761
|
-
<Icon2 />
|
|
762
|
-
</View>
|
|
763
|
-
<View>
|
|
764
|
-
<MText
|
|
765
|
-
style={{ fontWeight: 'bold', fontSize: 8, color: '#EF592E' }}
|
|
766
|
-
>
|
|
767
|
-
Bước 1
|
|
768
|
-
</MText>
|
|
769
|
-
<MText style={{ fontWeight: 'bold', fontSize: 10 }}>
|
|
770
|
-
THÔNG TIN KHOẢN VAY
|
|
771
|
-
</MText>
|
|
772
|
-
</View>
|
|
773
|
-
</View>
|
|
774
|
-
<MText style={{ fontSize: 10, marginTop: 5 }}>
|
|
775
|
-
Nhập thông tin: Số tiền vay, Thời hạn vay, ...
|
|
776
|
-
</MText>
|
|
777
|
-
</View>
|
|
778
|
-
<View>
|
|
779
|
-
<View
|
|
780
|
-
style={{
|
|
781
|
-
flexDirection: 'row',
|
|
782
|
-
alignItems: 'center',
|
|
783
|
-
gap: 8,
|
|
784
|
-
marginTop: 16,
|
|
785
|
-
}}
|
|
786
|
-
>
|
|
787
|
-
<View
|
|
788
|
-
style={{
|
|
789
|
-
width: 30,
|
|
790
|
-
height: 30,
|
|
791
|
-
borderRadius: 4,
|
|
792
|
-
backgroundColor: '#FFF2F2',
|
|
793
|
-
alignItems: 'center',
|
|
794
|
-
justifyContent: 'center',
|
|
795
|
-
}}
|
|
796
|
-
>
|
|
797
|
-
<Icon3 />
|
|
798
|
-
</View>
|
|
799
|
-
<View>
|
|
800
|
-
<MText
|
|
801
|
-
style={{ fontWeight: 'bold', fontSize: 8, color: '#EF592E' }}
|
|
802
|
-
>
|
|
803
|
-
Bước 2
|
|
804
|
-
</MText>
|
|
805
|
-
<MText style={{ fontWeight: 'bold', fontSize: 10 }}>
|
|
806
|
-
THÔNG TIN CÁ NHÂN
|
|
807
|
-
</MText>
|
|
808
|
-
</View>
|
|
809
|
-
</View>
|
|
810
|
-
<MText style={{ fontSize: 10, marginTop: 5 }}>
|
|
811
|
-
Thực hiện NFC/ OCR giấy tờ CCCD/CC và chụp 1 ảnh chân dung
|
|
812
|
-
</MText>
|
|
813
|
-
</View>
|
|
814
|
-
<View>
|
|
815
|
-
<View
|
|
816
|
-
style={{
|
|
817
|
-
flexDirection: 'row',
|
|
818
|
-
alignItems: 'center',
|
|
819
|
-
gap: 8,
|
|
820
|
-
marginTop: 16,
|
|
821
|
-
}}
|
|
822
|
-
>
|
|
823
|
-
<View
|
|
824
|
-
style={{
|
|
825
|
-
width: 30,
|
|
826
|
-
height: 30,
|
|
827
|
-
borderRadius: 4,
|
|
828
|
-
backgroundColor: '#FFF2F2',
|
|
829
|
-
alignItems: 'center',
|
|
830
|
-
justifyContent: 'center',
|
|
831
|
-
}}
|
|
832
|
-
>
|
|
833
|
-
<Icon4 />
|
|
834
|
-
</View>
|
|
835
|
-
<View>
|
|
836
|
-
<MText
|
|
837
|
-
style={{ fontWeight: 'bold', fontSize: 8, color: '#EF592E' }}
|
|
838
|
-
>
|
|
839
|
-
Bước 3
|
|
840
|
-
</MText>
|
|
841
|
-
<MText style={{ fontWeight: 'bold', fontSize: 10 }}>EKYC</MText>
|
|
409
|
+
<View style={styles.modalCard}>
|
|
410
|
+
<MText style={styles.modalTitle}>Các bước hoàn thiện khoản vay</MText>
|
|
411
|
+
{GUIDE_STEPS.map(
|
|
412
|
+
({ icon: StepIcon, title, description, note }, index) => (
|
|
413
|
+
<View key={title}>
|
|
414
|
+
<View style={styles.guideStepRow}>
|
|
415
|
+
<View style={styles.guideStepIconBox}>
|
|
416
|
+
<StepIcon />
|
|
417
|
+
</View>
|
|
418
|
+
<View>
|
|
419
|
+
<MText style={styles.guideStepBadge}>
|
|
420
|
+
Bước {index + 1}
|
|
421
|
+
</MText>
|
|
422
|
+
<MText style={styles.guideStepTitle}>{title}</MText>
|
|
423
|
+
</View>
|
|
424
|
+
</View>
|
|
425
|
+
{!!description && (
|
|
426
|
+
<MText style={styles.guideStepDesc}>{description}</MText>
|
|
427
|
+
)}
|
|
428
|
+
{!!note && <MText style={styles.guideStepNote}>{note}</MText>}
|
|
842
429
|
</View>
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
>
|
|
857
|
-
<View
|
|
858
|
-
style={{
|
|
859
|
-
width: 30,
|
|
860
|
-
height: 30,
|
|
861
|
-
borderRadius: 4,
|
|
862
|
-
backgroundColor: '#FFF2F2',
|
|
863
|
-
alignItems: 'center',
|
|
864
|
-
justifyContent: 'center',
|
|
865
|
-
}}
|
|
866
|
-
>
|
|
867
|
-
<Icon5 />
|
|
868
|
-
</View>
|
|
869
|
-
<View>
|
|
870
|
-
<MText
|
|
871
|
-
style={{ fontWeight: 'bold', fontSize: 8, color: '#EF592E' }}
|
|
872
|
-
>
|
|
873
|
-
Bước 4
|
|
874
|
-
</MText>
|
|
875
|
-
<MText style={{ fontWeight: 'bold', fontSize: 10 }}>
|
|
876
|
-
KÝ HỢP ĐỒNG
|
|
877
|
-
</MText>
|
|
878
|
-
</View>
|
|
879
|
-
</View>
|
|
880
|
-
<MText style={{ fontSize: 10, marginTop: 5 }}>
|
|
881
|
-
Ký số bằng OTP hoặc qua Ứng dụng Mysign
|
|
882
|
-
</MText>
|
|
883
|
-
<MText style={{ fontSize: 10, color: '#999999' }}>
|
|
884
|
-
Lưu ý: Để bảo mật thông tin cá nhân, hợp đồng sẽ được ký tại
|
|
885
|
-
Viettel qua Ứng dụng MySign, Website hopdongdientu.viettel.vn,...
|
|
886
|
-
</MText>
|
|
887
|
-
</View>
|
|
888
|
-
<View
|
|
889
|
-
style={{
|
|
890
|
-
backgroundColor: '#FFF8F2',
|
|
891
|
-
padding: 12,
|
|
892
|
-
borderRadius: 8,
|
|
893
|
-
marginTop: 16,
|
|
894
|
-
}}
|
|
895
|
-
>
|
|
896
|
-
<MText style={{ fontSize: 12, fontWeight: 'bold' }}>
|
|
897
|
-
Ý nghĩa biểu tượng
|
|
898
|
-
</MText>
|
|
899
|
-
<View
|
|
900
|
-
style={{
|
|
901
|
-
flexDirection: 'row',
|
|
902
|
-
alignItems: 'center',
|
|
903
|
-
gap: 16,
|
|
904
|
-
marginTop: 8,
|
|
905
|
-
}}
|
|
906
|
-
>
|
|
907
|
-
<MText style={{ fontSize: 10, width: '35%' }}>
|
|
908
|
-
Đang cần thực hiện
|
|
909
|
-
</MText>
|
|
910
|
-
<View
|
|
911
|
-
style={{ flexDirection: 'row', alignItems: 'center', gap: 8 }}
|
|
912
|
-
>
|
|
913
|
-
<Icon2 />
|
|
914
|
-
<Icon3 />
|
|
915
|
-
<Icon4 />
|
|
916
|
-
<Icon5 />
|
|
917
|
-
</View>
|
|
918
|
-
</View>
|
|
919
|
-
<View
|
|
920
|
-
style={{
|
|
921
|
-
flexDirection: 'row',
|
|
922
|
-
alignItems: 'center',
|
|
923
|
-
gap: 16,
|
|
924
|
-
marginTop: 8,
|
|
925
|
-
}}
|
|
926
|
-
>
|
|
927
|
-
<MText style={{ fontSize: 10, width: '35%' }}>
|
|
928
|
-
Chưa thể thực hiện
|
|
929
|
-
</MText>
|
|
930
|
-
<View
|
|
931
|
-
style={{ flexDirection: 'row', alignItems: 'center', gap: 8 }}
|
|
932
|
-
>
|
|
933
|
-
<Icon7 />
|
|
934
|
-
<Icon8 />
|
|
935
|
-
<Icon9 />
|
|
936
|
-
<Icon10 />
|
|
937
|
-
</View>
|
|
938
|
-
</View>
|
|
939
|
-
<View
|
|
940
|
-
style={{
|
|
941
|
-
flexDirection: 'row',
|
|
942
|
-
alignItems: 'center',
|
|
943
|
-
gap: 16,
|
|
944
|
-
marginTop: 8,
|
|
945
|
-
}}
|
|
946
|
-
>
|
|
947
|
-
<MText style={{ fontSize: 10, width: '35%' }}>
|
|
948
|
-
Đã hoàn thành
|
|
949
|
-
</MText>
|
|
950
|
-
<View
|
|
951
|
-
style={{ flexDirection: 'row', alignItems: 'center', gap: 8 }}
|
|
952
|
-
>
|
|
953
|
-
<IconSuccess />
|
|
430
|
+
)
|
|
431
|
+
)}
|
|
432
|
+
|
|
433
|
+
<View style={styles.legendBox}>
|
|
434
|
+
<MText style={styles.legendTitle}>Ý nghĩa biểu tượng</MText>
|
|
435
|
+
{LEGEND_ROWS.map(({ label, icons }) => (
|
|
436
|
+
<View key={label} style={styles.legendRow}>
|
|
437
|
+
<MText style={styles.legendLabel}>{label}</MText>
|
|
438
|
+
<View style={styles.legendIcons}>
|
|
439
|
+
{icons.map((LegendIcon, index) => (
|
|
440
|
+
<LegendIcon key={index} />
|
|
441
|
+
))}
|
|
442
|
+
</View>
|
|
954
443
|
</View>
|
|
955
|
-
|
|
444
|
+
))}
|
|
956
445
|
</View>
|
|
957
446
|
|
|
958
447
|
<TouchableOpacity
|
|
959
|
-
style={
|
|
448
|
+
style={styles.modalClose}
|
|
960
449
|
onPress={() => setShowModal(false)}
|
|
961
450
|
>
|
|
962
451
|
<Close2Icon />
|
|
963
452
|
</TouchableOpacity>
|
|
964
453
|
</View>
|
|
965
454
|
</Modal>
|
|
455
|
+
|
|
966
456
|
<Modal
|
|
967
457
|
isVisible={showAlert}
|
|
968
458
|
backdropColor="#000"
|
|
969
459
|
backdropOpacity={0.5}
|
|
970
460
|
onBackdropPress={() => setShowAlert(false)}
|
|
971
461
|
>
|
|
972
|
-
<View
|
|
973
|
-
style={
|
|
974
|
-
borderRadius: 12,
|
|
975
|
-
backgroundColor: 'white',
|
|
976
|
-
padding: 16,
|
|
977
|
-
}}
|
|
978
|
-
>
|
|
979
|
-
<View style={{ alignItems: 'flex-end' }}>
|
|
462
|
+
<View style={styles.modalCard}>
|
|
463
|
+
<View style={styles.alertClose}>
|
|
980
464
|
<TouchableOpacity onPress={() => setShowAlert(false)}>
|
|
981
465
|
<Close2Icon />
|
|
982
466
|
</TouchableOpacity>
|
|
983
467
|
</View>
|
|
984
468
|
<Image
|
|
985
469
|
source={require('../../assets/tts/Layer_1.png')}
|
|
986
|
-
style={
|
|
987
|
-
width: '100%',
|
|
988
|
-
height: 120,
|
|
989
|
-
resizeMode: 'contain',
|
|
990
|
-
}}
|
|
470
|
+
style={styles.alertImage}
|
|
991
471
|
/>
|
|
992
|
-
<MText
|
|
993
|
-
style={{
|
|
994
|
-
textAlign: 'center',
|
|
995
|
-
fontFamily: 'BeVietnamPro-SemiBold',
|
|
996
|
-
fontSize: 16,
|
|
997
|
-
fontWeight: '600',
|
|
998
|
-
marginTop: 16,
|
|
999
|
-
}}
|
|
1000
|
-
>
|
|
472
|
+
<MText style={styles.alertTitle}>
|
|
1001
473
|
Đơn vay đang chờ tìm nguồn giải ngân phù hợp
|
|
1002
474
|
</MText>
|
|
1003
|
-
<MText
|
|
1004
|
-
style={{
|
|
1005
|
-
textAlign: 'center',
|
|
1006
|
-
color: '#828282',
|
|
1007
|
-
marginTop: 16,
|
|
1008
|
-
}}
|
|
1009
|
-
>
|
|
475
|
+
<MText style={styles.alertBody}>
|
|
1010
476
|
Vui lòng chờ ít phút sau đó thực hiện các bước tiếp theo để hoàn
|
|
1011
477
|
thiện khoản vay!
|
|
1012
478
|
</MText>
|
|
1013
|
-
<View style={
|
|
479
|
+
<View style={styles.alertButtonWrap}>
|
|
1014
480
|
<TouchableOpacity
|
|
1015
481
|
onPress={() => setShowAlert(false)}
|
|
1016
|
-
style={
|
|
1017
|
-
borderWidth: 1,
|
|
1018
|
-
borderColor: '#EF592E',
|
|
1019
|
-
height: 40,
|
|
1020
|
-
alignItems: 'center',
|
|
1021
|
-
justifyContent: 'center',
|
|
1022
|
-
borderRadius: 24,
|
|
1023
|
-
width: 150,
|
|
1024
|
-
}}
|
|
482
|
+
style={styles.alertButton}
|
|
1025
483
|
>
|
|
1026
|
-
<MText style={
|
|
484
|
+
<MText style={styles.alertButtonText}>Đã hiểu</MText>
|
|
1027
485
|
</TouchableOpacity>
|
|
1028
486
|
</View>
|
|
1029
487
|
</View>
|
|
@@ -1031,15 +489,300 @@ export default function DigitalTopupItem({
|
|
|
1031
489
|
</>
|
|
1032
490
|
);
|
|
1033
491
|
}
|
|
1034
|
-
|
|
1035
|
-
flexDirection: 'column',
|
|
1036
|
-
alignItems: 'center',
|
|
1037
|
-
gap: 5,
|
|
1038
|
-
};
|
|
492
|
+
|
|
1039
493
|
const $row: ViewStyle = {
|
|
1040
494
|
flexDirection: 'row',
|
|
1041
|
-
// borderBottomWidth: 1,
|
|
1042
|
-
// borderColor: '#E0E0E0',
|
|
1043
495
|
paddingBottom: 16,
|
|
1044
496
|
marginTop: 16,
|
|
1045
497
|
};
|
|
498
|
+
|
|
499
|
+
const styles = StyleSheet.create({
|
|
500
|
+
action: {
|
|
501
|
+
flexDirection: 'column',
|
|
502
|
+
alignItems: 'center',
|
|
503
|
+
gap: 5,
|
|
504
|
+
},
|
|
505
|
+
card: {
|
|
506
|
+
backgroundColor: '#FFFFFF',
|
|
507
|
+
paddingHorizontal: 16,
|
|
508
|
+
marginBottom: 16,
|
|
509
|
+
borderRadius: 8,
|
|
510
|
+
borderWidth: 0.5,
|
|
511
|
+
borderColor: '#E0E0E0',
|
|
512
|
+
},
|
|
513
|
+
headerGradient: {
|
|
514
|
+
borderTopLeftRadius: 8,
|
|
515
|
+
borderTopRightRadius: 8,
|
|
516
|
+
marginHorizontal: -16,
|
|
517
|
+
},
|
|
518
|
+
headerRow: {
|
|
519
|
+
flexDirection: 'row',
|
|
520
|
+
justifyContent: 'space-between',
|
|
521
|
+
alignItems: 'center',
|
|
522
|
+
paddingHorizontal: 16,
|
|
523
|
+
paddingVertical: 8,
|
|
524
|
+
},
|
|
525
|
+
headerLeft: {
|
|
526
|
+
flexDirection: 'row',
|
|
527
|
+
alignItems: 'center',
|
|
528
|
+
gap: 8,
|
|
529
|
+
},
|
|
530
|
+
headerText: {
|
|
531
|
+
fontSize: 12,
|
|
532
|
+
color: 'white',
|
|
533
|
+
},
|
|
534
|
+
headerAmount: {
|
|
535
|
+
fontSize: 12,
|
|
536
|
+
color: 'white',
|
|
537
|
+
fontWeight: 'bold',
|
|
538
|
+
},
|
|
539
|
+
stepsRow: {
|
|
540
|
+
flexDirection: 'row',
|
|
541
|
+
justifyContent: 'space-between',
|
|
542
|
+
marginTop: 16,
|
|
543
|
+
},
|
|
544
|
+
stepLabel: {
|
|
545
|
+
textAlign: 'center',
|
|
546
|
+
fontSize: 10,
|
|
547
|
+
marginTop: 5,
|
|
548
|
+
},
|
|
549
|
+
guideBanner: {
|
|
550
|
+
backgroundColor: '#EEF7FF',
|
|
551
|
+
flexDirection: 'row',
|
|
552
|
+
alignItems: 'center',
|
|
553
|
+
gap: 4,
|
|
554
|
+
borderRadius: 4,
|
|
555
|
+
paddingHorizontal: 8,
|
|
556
|
+
paddingVertical: 10,
|
|
557
|
+
marginTop: 16,
|
|
558
|
+
},
|
|
559
|
+
guideBannerText: {
|
|
560
|
+
fontSize: 10,
|
|
561
|
+
flex: 1,
|
|
562
|
+
},
|
|
563
|
+
linkText: {
|
|
564
|
+
fontSize: 10,
|
|
565
|
+
color: '#2F80ED',
|
|
566
|
+
textDecorationLine: 'underline',
|
|
567
|
+
},
|
|
568
|
+
successBanner: {
|
|
569
|
+
backgroundColor: '#E8FFE9',
|
|
570
|
+
flexDirection: 'row',
|
|
571
|
+
alignItems: 'center',
|
|
572
|
+
gap: 8,
|
|
573
|
+
borderRadius: 4,
|
|
574
|
+
paddingHorizontal: 8,
|
|
575
|
+
paddingVertical: 10,
|
|
576
|
+
marginTop: 16,
|
|
577
|
+
},
|
|
578
|
+
successText: {
|
|
579
|
+
color: '#28A745',
|
|
580
|
+
fontSize: 10,
|
|
581
|
+
flex: 1,
|
|
582
|
+
},
|
|
583
|
+
statusLeft: {
|
|
584
|
+
flex: 1,
|
|
585
|
+
paddingRight: 24,
|
|
586
|
+
},
|
|
587
|
+
statusLabel: {
|
|
588
|
+
color: '#999999',
|
|
589
|
+
fontSize: 12,
|
|
590
|
+
},
|
|
591
|
+
statusValue: {
|
|
592
|
+
fontSize: 12,
|
|
593
|
+
fontWeight: 'bold',
|
|
594
|
+
},
|
|
595
|
+
updateButton: {
|
|
596
|
+
height: 30,
|
|
597
|
+
alignItems: 'center',
|
|
598
|
+
justifyContent: 'center',
|
|
599
|
+
borderRadius: 24,
|
|
600
|
+
paddingHorizontal: 10,
|
|
601
|
+
},
|
|
602
|
+
updateButtonText: {
|
|
603
|
+
color: 'white',
|
|
604
|
+
fontSize: 12,
|
|
605
|
+
},
|
|
606
|
+
warningBanner: {
|
|
607
|
+
flexDirection: 'row',
|
|
608
|
+
alignItems: 'center',
|
|
609
|
+
gap: 8,
|
|
610
|
+
backgroundColor: '#FFF2F2',
|
|
611
|
+
marginHorizontal: -16,
|
|
612
|
+
paddingVertical: 10,
|
|
613
|
+
borderBottomRightRadius: 8,
|
|
614
|
+
borderBottomLeftRadius: 8,
|
|
615
|
+
paddingHorizontal: 10,
|
|
616
|
+
},
|
|
617
|
+
warningText: {
|
|
618
|
+
fontSize: 10,
|
|
619
|
+
color: '#E40010',
|
|
620
|
+
flex: 1,
|
|
621
|
+
},
|
|
622
|
+
infoCard: {
|
|
623
|
+
borderRadius: 8,
|
|
624
|
+
backgroundColor: 'white',
|
|
625
|
+
},
|
|
626
|
+
infoBanner: {
|
|
627
|
+
width: '100%',
|
|
628
|
+
borderTopLeftRadius: 8,
|
|
629
|
+
borderTopRightRadius: 8,
|
|
630
|
+
height: (Dimensions.get('window').height / 2) * 0.7,
|
|
631
|
+
resizeMode: 'cover',
|
|
632
|
+
},
|
|
633
|
+
infoTitle: {
|
|
634
|
+
fontSize: 16,
|
|
635
|
+
fontWeight: 'bold',
|
|
636
|
+
textAlign: 'center',
|
|
637
|
+
marginVertical: 16,
|
|
638
|
+
},
|
|
639
|
+
infoBody: {
|
|
640
|
+
textAlign: 'center',
|
|
641
|
+
paddingHorizontal: 16,
|
|
642
|
+
color: '#828282',
|
|
643
|
+
},
|
|
644
|
+
infoHighlight: {
|
|
645
|
+
color: '#EF592E',
|
|
646
|
+
fontWeight: 'bold',
|
|
647
|
+
},
|
|
648
|
+
infoConfirmButton: {
|
|
649
|
+
borderWidth: 1,
|
|
650
|
+
borderColor: '#EF592E',
|
|
651
|
+
borderRadius: 24,
|
|
652
|
+
paddingHorizontal: 16,
|
|
653
|
+
paddingVertical: 10,
|
|
654
|
+
alignSelf: 'center',
|
|
655
|
+
marginTop: 24,
|
|
656
|
+
},
|
|
657
|
+
infoConfirmText: {
|
|
658
|
+
color: '#EF592E',
|
|
659
|
+
},
|
|
660
|
+
infoSecondaryButton: {
|
|
661
|
+
paddingHorizontal: 16,
|
|
662
|
+
paddingVertical: 10,
|
|
663
|
+
alignSelf: 'center',
|
|
664
|
+
},
|
|
665
|
+
infoSecondaryText: {
|
|
666
|
+
color: '#8E8E93',
|
|
667
|
+
},
|
|
668
|
+
infoRateBar: {
|
|
669
|
+
backgroundColor: '#EDF6FF',
|
|
670
|
+
paddingVertical: 8,
|
|
671
|
+
borderBottomLeftRadius: 8,
|
|
672
|
+
borderBottomRightRadius: 8,
|
|
673
|
+
marginTop: 16,
|
|
674
|
+
alignItems: 'center',
|
|
675
|
+
},
|
|
676
|
+
infoRateText: {
|
|
677
|
+
color: '#2F80ED',
|
|
678
|
+
fontSize: 12,
|
|
679
|
+
},
|
|
680
|
+
modalCard: {
|
|
681
|
+
borderRadius: 12,
|
|
682
|
+
backgroundColor: 'white',
|
|
683
|
+
padding: 16,
|
|
684
|
+
},
|
|
685
|
+
modalTitle: {
|
|
686
|
+
fontSize: 16,
|
|
687
|
+
fontWeight: 'bold',
|
|
688
|
+
textAlign: 'center',
|
|
689
|
+
marginTop: 16,
|
|
690
|
+
},
|
|
691
|
+
guideStepRow: {
|
|
692
|
+
flexDirection: 'row',
|
|
693
|
+
alignItems: 'center',
|
|
694
|
+
gap: 8,
|
|
695
|
+
marginTop: 16,
|
|
696
|
+
},
|
|
697
|
+
guideStepIconBox: {
|
|
698
|
+
width: 30,
|
|
699
|
+
height: 30,
|
|
700
|
+
borderRadius: 4,
|
|
701
|
+
backgroundColor: '#FFF2F2',
|
|
702
|
+
alignItems: 'center',
|
|
703
|
+
justifyContent: 'center',
|
|
704
|
+
},
|
|
705
|
+
guideStepBadge: {
|
|
706
|
+
fontWeight: 'bold',
|
|
707
|
+
fontSize: 8,
|
|
708
|
+
color: '#EF592E',
|
|
709
|
+
},
|
|
710
|
+
guideStepTitle: {
|
|
711
|
+
fontWeight: 'bold',
|
|
712
|
+
fontSize: 10,
|
|
713
|
+
},
|
|
714
|
+
guideStepDesc: {
|
|
715
|
+
fontSize: 10,
|
|
716
|
+
marginTop: 5,
|
|
717
|
+
},
|
|
718
|
+
guideStepNote: {
|
|
719
|
+
fontSize: 10,
|
|
720
|
+
color: '#999999',
|
|
721
|
+
},
|
|
722
|
+
legendBox: {
|
|
723
|
+
backgroundColor: '#FFF8F2',
|
|
724
|
+
padding: 12,
|
|
725
|
+
borderRadius: 8,
|
|
726
|
+
marginTop: 16,
|
|
727
|
+
},
|
|
728
|
+
legendTitle: {
|
|
729
|
+
fontSize: 12,
|
|
730
|
+
fontWeight: 'bold',
|
|
731
|
+
},
|
|
732
|
+
legendRow: {
|
|
733
|
+
flexDirection: 'row',
|
|
734
|
+
alignItems: 'center',
|
|
735
|
+
gap: 16,
|
|
736
|
+
marginTop: 8,
|
|
737
|
+
},
|
|
738
|
+
legendLabel: {
|
|
739
|
+
fontSize: 10,
|
|
740
|
+
width: '35%',
|
|
741
|
+
},
|
|
742
|
+
legendIcons: {
|
|
743
|
+
flexDirection: 'row',
|
|
744
|
+
alignItems: 'center',
|
|
745
|
+
gap: 8,
|
|
746
|
+
},
|
|
747
|
+
modalClose: {
|
|
748
|
+
position: 'absolute',
|
|
749
|
+
top: 16,
|
|
750
|
+
right: 16,
|
|
751
|
+
},
|
|
752
|
+
alertClose: {
|
|
753
|
+
alignItems: 'flex-end',
|
|
754
|
+
},
|
|
755
|
+
alertImage: {
|
|
756
|
+
width: '100%',
|
|
757
|
+
height: 120,
|
|
758
|
+
resizeMode: 'contain',
|
|
759
|
+
},
|
|
760
|
+
alertTitle: {
|
|
761
|
+
textAlign: 'center',
|
|
762
|
+
fontFamily: 'BeVietnamPro-SemiBold',
|
|
763
|
+
fontSize: 16,
|
|
764
|
+
fontWeight: '600',
|
|
765
|
+
marginTop: 16,
|
|
766
|
+
},
|
|
767
|
+
alertBody: {
|
|
768
|
+
textAlign: 'center',
|
|
769
|
+
color: '#828282',
|
|
770
|
+
marginTop: 16,
|
|
771
|
+
},
|
|
772
|
+
alertButtonWrap: {
|
|
773
|
+
alignItems: 'center',
|
|
774
|
+
marginTop: 24,
|
|
775
|
+
},
|
|
776
|
+
alertButton: {
|
|
777
|
+
borderWidth: 1,
|
|
778
|
+
borderColor: '#EF592E',
|
|
779
|
+
height: 40,
|
|
780
|
+
alignItems: 'center',
|
|
781
|
+
justifyContent: 'center',
|
|
782
|
+
borderRadius: 24,
|
|
783
|
+
width: 150,
|
|
784
|
+
},
|
|
785
|
+
alertButtonText: {
|
|
786
|
+
color: '#EF592E',
|
|
787
|
+
},
|
|
788
|
+
});
|