react-native-timacare 3.1.66 → 3.1.67

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.
Files changed (250) hide show
  1. package/lib/commonjs/AppStore.js +1 -1
  2. package/lib/commonjs/AppStore.js.flow +4 -2
  3. package/lib/commonjs/AppStore.js.map +1 -1
  4. package/lib/commonjs/assets/v3/home.svg +5 -0
  5. package/lib/commonjs/assets/v3/index.js +2 -0
  6. package/lib/commonjs/assets/v3/index.js.flow +38 -0
  7. package/lib/commonjs/assets/v3/index.js.map +1 -0
  8. package/lib/commonjs/assets/v3/option1.svg +27 -0
  9. package/lib/commonjs/assets/v3/option2.svg +25 -0
  10. package/lib/commonjs/assets/v3/step1-success.svg +39 -0
  11. package/lib/commonjs/assets/v3/step1.svg +90 -0
  12. package/lib/commonjs/assets/v3/step2-disable.svg +14 -0
  13. package/lib/commonjs/assets/v3/step2-success.svg +8 -0
  14. package/lib/commonjs/assets/v3/step2.svg +37 -0
  15. package/lib/commonjs/assets/v3/step3-disable.svg +17 -0
  16. package/lib/commonjs/assets/v3/step3-success.svg +17 -0
  17. package/lib/commonjs/assets/v3/step3.svg +45 -0
  18. package/lib/commonjs/assets/v3/step4-disable.svg +11 -0
  19. package/lib/commonjs/assets/v3/step4-success.svg +11 -0
  20. package/lib/commonjs/assets/v3/step4.svg +29 -0
  21. package/lib/commonjs/assets/v3/step5-disable.svg +17 -0
  22. package/lib/commonjs/assets/v3/step5-success.svg +17 -0
  23. package/lib/commonjs/assets/v3/step5.svg +45 -0
  24. package/lib/commonjs/components/ItemTimaOneV2.js +2 -0
  25. package/lib/commonjs/components/ItemTimaOneV2.js.flow +617 -0
  26. package/lib/commonjs/components/ItemTimaOneV2.js.map +1 -0
  27. package/lib/commonjs/components/ItemTimaOneV3.js +2 -0
  28. package/lib/commonjs/components/ItemTimaOneV3.js.flow +558 -0
  29. package/lib/commonjs/components/ItemTimaOneV3.js.map +1 -0
  30. package/lib/commonjs/components/MText.js +1 -1
  31. package/lib/commonjs/components/MText.js.flow +1 -1
  32. package/lib/commonjs/components/ModalOptionLoan.js +2 -0
  33. package/lib/commonjs/components/ModalOptionLoan.js.flow +242 -0
  34. package/lib/commonjs/components/ModalOptionLoan.js.map +1 -0
  35. package/lib/commonjs/navigation/primary-navigator.js +1 -1
  36. package/lib/commonjs/navigation/primary-navigator.js.flow +12 -0
  37. package/lib/commonjs/navigation/primary-navigator.js.map +1 -1
  38. package/lib/commonjs/screens/eSign/index.js +1 -1
  39. package/lib/commonjs/screens/eSign/index.js.flow +22 -16
  40. package/lib/commonjs/screens/eSign/index.js.map +1 -1
  41. package/lib/commonjs/screens/home/index.js +1 -1
  42. package/lib/commonjs/screens/home/index.js.flow +64 -625
  43. package/lib/commonjs/screens/home/index.js.map +1 -1
  44. package/lib/commonjs/screens/mySignViettel/Layer_3.png +0 -0
  45. package/lib/commonjs/screens/mySignViettel/index.js +2 -0
  46. package/lib/commonjs/screens/mySignViettel/index.js.flow +278 -0
  47. package/lib/commonjs/screens/mySignViettel/index.js.map +1 -0
  48. package/lib/commonjs/screens/sign-tima/ViewContract.js +1 -1
  49. package/lib/commonjs/screens/sign-tima/ViewContract.js.flow +22 -16
  50. package/lib/commonjs/screens/sign-tima/ViewContract.js.map +1 -1
  51. package/lib/commonjs/screens/toan-trinh-so/OCR.js +1 -1
  52. package/lib/commonjs/screens/toan-trinh-so/OCR.js.flow +1 -1
  53. package/lib/commonjs/screens/toan-trinh-so/OCR.js.map +1 -1
  54. package/lib/commonjs/screens/toan-trinh-so/RegisterBack.js +1 -1
  55. package/lib/commonjs/screens/toan-trinh-so/RegisterBack.js.flow +9 -2
  56. package/lib/commonjs/screens/toan-trinh-so/RegisterBack.js.map +1 -1
  57. package/lib/commonjs/screens/toan-trinh-so/ReviewInformation.js +1 -1
  58. package/lib/commonjs/screens/toan-trinh-so/ReviewInformation.js.flow +110 -7
  59. package/lib/commonjs/screens/toan-trinh-so/ReviewInformation.js.map +1 -1
  60. package/lib/commonjs/screens/toan-trinh-so/ReviewInformationOther.js +1 -1
  61. package/lib/commonjs/screens/toan-trinh-so/ReviewInformationOther.js.flow +9 -8
  62. package/lib/commonjs/screens/toan-trinh-so/ReviewInformationOther.js.map +1 -1
  63. package/lib/commonjs/screens/toan-trinh-so/ReviewLoan.js +1 -1
  64. package/lib/commonjs/screens/toan-trinh-so/ReviewLoan.js.flow +43 -169
  65. package/lib/commonjs/screens/toan-trinh-so/ReviewLoan.js.map +1 -1
  66. package/lib/commonjs/screens/toan-trinh-so/TTSNationalIDBack.js +1 -1
  67. package/lib/commonjs/screens/toan-trinh-so/TTSNationalIDBack.js.flow +1 -1
  68. package/lib/commonjs/screens/toan-trinh-so/TTSNationalIDBack.js.map +1 -1
  69. package/lib/commonjs/screens/toan-trinh-so/TTSNationalIDFront.js +1 -1
  70. package/lib/commonjs/screens/toan-trinh-so/TTSNationalIDFront.js.flow +1 -1
  71. package/lib/commonjs/screens/toan-trinh-so/TTSNationalIDFront.js.map +1 -1
  72. package/lib/commonjs/screens/toan-trinh-so/TTSSelfie.js +1 -1
  73. package/lib/commonjs/screens/toan-trinh-so/TTSSelfie.js.flow +17 -14
  74. package/lib/commonjs/screens/toan-trinh-so/TTSSelfie.js.map +1 -1
  75. package/lib/commonjs/screens/toan-trinh-so/TTSSignLoan.js +1 -1
  76. package/lib/commonjs/screens/toan-trinh-so/TTSSignLoan.js.flow +38 -19
  77. package/lib/commonjs/screens/toan-trinh-so/TTSSignLoan.js.map +1 -1
  78. package/lib/commonjs/screens/toan-trinh-so/VehicleCamera.js +1 -1
  79. package/lib/commonjs/screens/toan-trinh-so/VehicleCamera.js.flow +133 -43
  80. package/lib/commonjs/screens/toan-trinh-so/VehicleCamera.js.map +1 -1
  81. package/lib/commonjs/screens/toan-trinh-so/VehicleRegistration.js +1 -1
  82. package/lib/commonjs/screens/toan-trinh-so/VehicleRegistration.js.flow +1 -1
  83. package/lib/commonjs/screens/toan-trinh-so/VehicleRegistration.js.map +1 -1
  84. package/lib/commonjs/screens/toan-trinh-so/VehicleRegistrationBack.js +1 -1
  85. package/lib/commonjs/screens/toan-trinh-so/VehicleRegistrationBack.js.flow +1 -1
  86. package/lib/commonjs/screens/toan-trinh-so/VehicleRegistrationBack.js.map +1 -1
  87. package/lib/commonjs/screens/toan-trinh-so/VehicleRegistrationFront.js +1 -1
  88. package/lib/commonjs/screens/toan-trinh-so/VehicleRegistrationFront.js.flow +1 -1
  89. package/lib/commonjs/screens/toan-trinh-so/VehicleRegistrationFront.js.map +1 -1
  90. package/lib/commonjs/screens/toan-trinh-so/store.js +1 -1
  91. package/lib/commonjs/screens/toan-trinh-so/store.js.flow +1 -1
  92. package/lib/commonjs/screens/toan-trinh-so/store.js.map +1 -1
  93. package/lib/commonjs/screens/v3/AssetInformation.js +2 -0
  94. package/lib/commonjs/screens/v3/AssetInformation.js.flow +690 -0
  95. package/lib/commonjs/screens/v3/AssetInformation.js.map +1 -0
  96. package/lib/commonjs/services/api/api.js +1 -1
  97. package/lib/commonjs/services/api/api.js.flow +196 -0
  98. package/lib/commonjs/services/api/api.js.map +1 -1
  99. package/lib/commonjs/utils/index.js +1 -1
  100. package/lib/commonjs/utils/index.js.flow +2 -0
  101. package/lib/commonjs/utils/index.js.map +1 -1
  102. package/lib/module/AppStore.js +1 -1
  103. package/lib/module/AppStore.js.map +1 -1
  104. package/lib/module/assets/v3/home.svg +5 -0
  105. package/lib/module/assets/v3/index.js +2 -0
  106. package/lib/module/assets/v3/index.js.map +1 -0
  107. package/lib/module/assets/v3/option1.svg +27 -0
  108. package/lib/module/assets/v3/option2.svg +25 -0
  109. package/lib/module/assets/v3/step1-success.svg +39 -0
  110. package/lib/module/assets/v3/step1.svg +90 -0
  111. package/lib/module/assets/v3/step2-disable.svg +14 -0
  112. package/lib/module/assets/v3/step2-success.svg +8 -0
  113. package/lib/module/assets/v3/step2.svg +37 -0
  114. package/lib/module/assets/v3/step3-disable.svg +17 -0
  115. package/lib/module/assets/v3/step3-success.svg +17 -0
  116. package/lib/module/assets/v3/step3.svg +45 -0
  117. package/lib/module/assets/v3/step4-disable.svg +11 -0
  118. package/lib/module/assets/v3/step4-success.svg +11 -0
  119. package/lib/module/assets/v3/step4.svg +29 -0
  120. package/lib/module/assets/v3/step5-disable.svg +17 -0
  121. package/lib/module/assets/v3/step5-success.svg +17 -0
  122. package/lib/module/assets/v3/step5.svg +45 -0
  123. package/lib/module/components/ItemTimaOneV2.js +2 -0
  124. package/lib/module/components/ItemTimaOneV2.js.map +1 -0
  125. package/lib/module/components/ItemTimaOneV3.js +2 -0
  126. package/lib/module/components/ItemTimaOneV3.js.map +1 -0
  127. package/lib/module/components/MText.js +1 -1
  128. package/lib/module/components/ModalOptionLoan.js +2 -0
  129. package/lib/module/components/ModalOptionLoan.js.map +1 -0
  130. package/lib/module/navigation/primary-navigator.js +1 -1
  131. package/lib/module/navigation/primary-navigator.js.map +1 -1
  132. package/lib/module/screens/eSign/index.js +1 -1
  133. package/lib/module/screens/eSign/index.js.map +1 -1
  134. package/lib/module/screens/home/index.js +1 -1
  135. package/lib/module/screens/home/index.js.map +1 -1
  136. package/lib/module/screens/mySignViettel/Layer_3.png +0 -0
  137. package/lib/module/screens/mySignViettel/index.js +2 -0
  138. package/lib/module/screens/mySignViettel/index.js.map +1 -0
  139. package/lib/module/screens/sign-tima/ViewContract.js +1 -1
  140. package/lib/module/screens/sign-tima/ViewContract.js.map +1 -1
  141. package/lib/module/screens/toan-trinh-so/OCR.js +1 -1
  142. package/lib/module/screens/toan-trinh-so/OCR.js.map +1 -1
  143. package/lib/module/screens/toan-trinh-so/RegisterBack.js +1 -1
  144. package/lib/module/screens/toan-trinh-so/RegisterBack.js.map +1 -1
  145. package/lib/module/screens/toan-trinh-so/ReviewInformation.js +1 -1
  146. package/lib/module/screens/toan-trinh-so/ReviewInformation.js.map +1 -1
  147. package/lib/module/screens/toan-trinh-so/ReviewInformationOther.js +1 -1
  148. package/lib/module/screens/toan-trinh-so/ReviewInformationOther.js.map +1 -1
  149. package/lib/module/screens/toan-trinh-so/ReviewLoan.js +1 -1
  150. package/lib/module/screens/toan-trinh-so/ReviewLoan.js.map +1 -1
  151. package/lib/module/screens/toan-trinh-so/TTSNationalIDBack.js +1 -1
  152. package/lib/module/screens/toan-trinh-so/TTSNationalIDBack.js.map +1 -1
  153. package/lib/module/screens/toan-trinh-so/TTSNationalIDFront.js +1 -1
  154. package/lib/module/screens/toan-trinh-so/TTSNationalIDFront.js.map +1 -1
  155. package/lib/module/screens/toan-trinh-so/TTSSelfie.js +1 -1
  156. package/lib/module/screens/toan-trinh-so/TTSSelfie.js.map +1 -1
  157. package/lib/module/screens/toan-trinh-so/TTSSignLoan.js +1 -1
  158. package/lib/module/screens/toan-trinh-so/TTSSignLoan.js.map +1 -1
  159. package/lib/module/screens/toan-trinh-so/VehicleCamera.js +1 -1
  160. package/lib/module/screens/toan-trinh-so/VehicleCamera.js.map +1 -1
  161. package/lib/module/screens/toan-trinh-so/VehicleRegistration.js +1 -1
  162. package/lib/module/screens/toan-trinh-so/VehicleRegistration.js.map +1 -1
  163. package/lib/module/screens/toan-trinh-so/VehicleRegistrationBack.js +1 -1
  164. package/lib/module/screens/toan-trinh-so/VehicleRegistrationBack.js.map +1 -1
  165. package/lib/module/screens/toan-trinh-so/VehicleRegistrationFront.js +1 -1
  166. package/lib/module/screens/toan-trinh-so/VehicleRegistrationFront.js.map +1 -1
  167. package/lib/module/screens/toan-trinh-so/store.js +1 -1
  168. package/lib/module/screens/toan-trinh-so/store.js.map +1 -1
  169. package/lib/module/screens/v3/AssetInformation.js +2 -0
  170. package/lib/module/screens/v3/AssetInformation.js.map +1 -0
  171. package/lib/module/services/api/api.js +1 -1
  172. package/lib/module/services/api/api.js.map +1 -1
  173. package/lib/module/utils/index.js +1 -1
  174. package/lib/module/utils/index.js.map +1 -1
  175. package/lib/typescript/AppStore.d.ts +2 -2
  176. package/lib/typescript/AppStore.d.ts.map +1 -1
  177. package/lib/typescript/assets/v3/index.d.ts +19 -0
  178. package/lib/typescript/assets/v3/index.d.ts.map +1 -0
  179. package/lib/typescript/components/ItemTimaOneV2.d.ts +7 -0
  180. package/lib/typescript/components/ItemTimaOneV2.d.ts.map +1 -0
  181. package/lib/typescript/components/ItemTimaOneV3.d.ts +7 -0
  182. package/lib/typescript/components/ItemTimaOneV3.d.ts.map +1 -0
  183. package/lib/typescript/components/ModalOptionLoan.d.ts +8 -0
  184. package/lib/typescript/components/ModalOptionLoan.d.ts.map +1 -0
  185. package/lib/typescript/navigation/primary-navigator.d.ts +2 -0
  186. package/lib/typescript/navigation/primary-navigator.d.ts.map +1 -1
  187. package/lib/typescript/screens/eSign/index.d.ts.map +1 -1
  188. package/lib/typescript/screens/home/index.d.ts.map +1 -1
  189. package/lib/typescript/screens/mySignViettel/index.d.ts +2 -0
  190. package/lib/typescript/screens/mySignViettel/index.d.ts.map +1 -0
  191. package/lib/typescript/screens/sign-tima/ViewContract.d.ts.map +1 -1
  192. package/lib/typescript/screens/toan-trinh-so/RegisterBack.d.ts.map +1 -1
  193. package/lib/typescript/screens/toan-trinh-so/ReviewInformation.d.ts.map +1 -1
  194. package/lib/typescript/screens/toan-trinh-so/ReviewInformationOther.d.ts.map +1 -1
  195. package/lib/typescript/screens/toan-trinh-so/ReviewLoan.d.ts.map +1 -1
  196. package/lib/typescript/screens/toan-trinh-so/TTSSelfie.d.ts.map +1 -1
  197. package/lib/typescript/screens/toan-trinh-so/TTSSignLoan.d.ts.map +1 -1
  198. package/lib/typescript/screens/toan-trinh-so/VehicleCamera.d.ts.map +1 -1
  199. package/lib/typescript/screens/v3/AssetInformation.d.ts +2 -0
  200. package/lib/typescript/screens/v3/AssetInformation.d.ts.map +1 -0
  201. package/lib/typescript/services/api/api.d.ts +192 -0
  202. package/lib/typescript/services/api/api.d.ts.map +1 -1
  203. package/lib/typescript/utils/index.d.ts.map +1 -1
  204. package/package.json +1 -1
  205. package/src/AppStore.tsx +4 -2
  206. package/src/assets/v3/home.svg +5 -0
  207. package/src/assets/v3/index.tsx +38 -0
  208. package/src/assets/v3/option1.svg +27 -0
  209. package/src/assets/v3/option2.svg +25 -0
  210. package/src/assets/v3/step1-success.svg +39 -0
  211. package/src/assets/v3/step1.svg +90 -0
  212. package/src/assets/v3/step2-disable.svg +14 -0
  213. package/src/assets/v3/step2-success.svg +8 -0
  214. package/src/assets/v3/step2.svg +37 -0
  215. package/src/assets/v3/step3-disable.svg +17 -0
  216. package/src/assets/v3/step3-success.svg +17 -0
  217. package/src/assets/v3/step3.svg +45 -0
  218. package/src/assets/v3/step4-disable.svg +11 -0
  219. package/src/assets/v3/step4-success.svg +11 -0
  220. package/src/assets/v3/step4.svg +29 -0
  221. package/src/assets/v3/step5-disable.svg +17 -0
  222. package/src/assets/v3/step5-success.svg +17 -0
  223. package/src/assets/v3/step5.svg +45 -0
  224. package/src/components/ItemTimaOneV2.tsx +617 -0
  225. package/src/components/ItemTimaOneV3.tsx +558 -0
  226. package/src/components/MText.tsx +1 -1
  227. package/src/components/ModalOptionLoan.tsx +242 -0
  228. package/src/navigation/primary-navigator.tsx +12 -0
  229. package/src/screens/eSign/index.tsx +22 -16
  230. package/src/screens/home/index.tsx +64 -625
  231. package/src/screens/mySignViettel/Layer_3.png +0 -0
  232. package/src/screens/mySignViettel/index.tsx +278 -0
  233. package/src/screens/sign-tima/ViewContract.tsx +22 -16
  234. package/src/screens/toan-trinh-so/OCR.tsx +1 -1
  235. package/src/screens/toan-trinh-so/RegisterBack.tsx +9 -2
  236. package/src/screens/toan-trinh-so/ReviewInformation.tsx +110 -7
  237. package/src/screens/toan-trinh-so/ReviewInformationOther.tsx +9 -8
  238. package/src/screens/toan-trinh-so/ReviewLoan.tsx +43 -169
  239. package/src/screens/toan-trinh-so/TTSNationalIDBack.tsx +1 -1
  240. package/src/screens/toan-trinh-so/TTSNationalIDFront.tsx +1 -1
  241. package/src/screens/toan-trinh-so/TTSSelfie.tsx +17 -14
  242. package/src/screens/toan-trinh-so/TTSSignLoan.tsx +38 -19
  243. package/src/screens/toan-trinh-so/VehicleCamera.tsx +133 -43
  244. package/src/screens/toan-trinh-so/VehicleRegistration.tsx +1 -1
  245. package/src/screens/toan-trinh-so/VehicleRegistrationBack.tsx +1 -1
  246. package/src/screens/toan-trinh-so/VehicleRegistrationFront.tsx +1 -1
  247. package/src/screens/toan-trinh-so/store.ts +1 -1
  248. package/src/screens/v3/AssetInformation.tsx +690 -0
  249. package/src/services/api/api.ts +196 -0
  250. package/src/utils/index.tsx +2 -0
@@ -0,0 +1,690 @@
1
+ //@ts-nocheck
2
+ import React, { useEffect, useRef, useState } from 'react';
3
+ import {
4
+ Alert,
5
+ ScrollView,
6
+ TextInput,
7
+ TextStyle,
8
+ TouchableOpacity,
9
+ View,
10
+ ViewStyle,
11
+ } from 'react-native';
12
+ import LinearGradient from 'react-native-linear-gradient';
13
+ import { observer } from 'mobx-react-lite';
14
+ import MHeader from '../../components/MHeader';
15
+ import { DropDown2, IconBack } from '../../assets/icons';
16
+ import { MText } from '../../components/MText';
17
+ import { Formik } from 'formik';
18
+ import { ScreenNames } from '../../navigation';
19
+ import ttsStore from '../toan-trinh-so/store';
20
+ import { CommonActions, useNavigation } from '@react-navigation/native';
21
+ import Loading from '../../components/Loading';
22
+ import MButton from '../../components/MButton';
23
+ import { EnumTypeAsset, EnumTypeCar } from '../../utils';
24
+ import KeyboardSpacer from '../../components/keyboardspace';
25
+ import * as yup from 'yup';
26
+ import { Api } from '../../services/api';
27
+
28
+ export const AssetInformation = observer(function AssetInformation(props) {
29
+ const navigation = useNavigation();
30
+ const formRef = useRef(null);
31
+ const [isLoading, setIsLoading] = useState(false);
32
+ const loan = props?.route?.params?.loan;
33
+
34
+ const getData = async () => {
35
+ try {
36
+ setIsLoading(true);
37
+ const response = await Api.getInstance().getAssetAutoDE(loan?.id);
38
+ setIsLoading(false);
39
+ if (response.kind === 'ok' && response.data?.meta?.errorCode === 200) {
40
+ formRef.current?.setFieldValue(
41
+ 'brand',
42
+ response.data.data?.brand ?? ''
43
+ );
44
+ formRef.current?.setFieldValue(
45
+ 'yearCar',
46
+ response.data.data?.yearCar ?? null
47
+ );
48
+ formRef.current?.setFieldValue(
49
+ 'vehicles',
50
+ response.data.data?.vehicles ?? ''
51
+ );
52
+ formRef.current?.setFieldValue(
53
+ 'plateNumber',
54
+ response.data.data?.plateNumber ?? ''
55
+ );
56
+ formRef.current?.setFieldValue(
57
+ 'chassis',
58
+ response.data.data?.chassis ?? ''
59
+ );
60
+ formRef.current?.setFieldValue(
61
+ 'engine',
62
+ response.data.data?.engine ?? ''
63
+ );
64
+ formRef.current?.setFieldValue(
65
+ 'ownerFullName',
66
+ response.data.data?.ownerFullName ?? ''
67
+ );
68
+ formRef.current?.setFieldValue(
69
+ 'motobikeCertificateNumber',
70
+ response.data.data?.motobikeCertificateNumber ?? ''
71
+ );
72
+ formRef.current?.setFieldValue(
73
+ 'motobikeCertificateDate',
74
+ response.data.data?.motobikeCertificateDate ?? ''
75
+ );
76
+
77
+ if (response.data?.data?.brand) {
78
+ ttsStore.getListYearCar(response.data?.data?.brand);
79
+ }
80
+ if (response.data?.data?.brand && response.data?.data?.yearCar) {
81
+ ttsStore.getListCar(
82
+ response.data?.data?.brand,
83
+ response.data?.data?.yearCar
84
+ );
85
+ }
86
+
87
+ formRef.current?.setFieldValue(
88
+ 'typeLoanBrief',
89
+ response.data.data?.typeLoanBrief ?? null
90
+ );
91
+ formRef.current?.setFieldValue(
92
+ 'carTypeId',
93
+ response.data.data?.carTypeId ?? null
94
+ );
95
+ } else {
96
+ Alert.alert(
97
+ 'Thông báo',
98
+ response.data?.meta?.errorMessage ||
99
+ 'Có lỗi xảy ra. Vui lòng thử lại sau!'
100
+ );
101
+ }
102
+ } catch (error) {
103
+ Alert.alert('Thông báo', 'Có lỗi xảy ra. Vui lòng thử lại sau!');
104
+ } finally {
105
+ setIsLoading(false);
106
+ }
107
+ };
108
+
109
+ useEffect(() => {
110
+ ttsStore.getListBrand();
111
+ if (loan) {
112
+ getData();
113
+ }
114
+ }, []);
115
+
116
+ const onSubmit = async (values) => {
117
+ try {
118
+ setIsLoading(true);
119
+ const body = {
120
+ loanBriefId: loan?.id,
121
+ brand: values?.brand,
122
+ yearCar: Number(values.yearCar),
123
+ vehicles: values?.vehicles,
124
+ plateNumber: values?.plateNumber,
125
+ chassis: values?.chassis,
126
+ engine: values?.engine,
127
+ ownerFullName: values?.ownerFullName,
128
+ motobikeCertificateNumber: values?.motobikeCertificateNumber,
129
+ motobikeCertificateDate: values?.motobikeCertificateDate,
130
+ vehicleInspectionExpirationDate:
131
+ values?.vehicleInspectionExpirationDate,
132
+ typeLoanBrief: values?.typeLoanBrief,
133
+ carTypeId: values?.carTypeId,
134
+ };
135
+ const response = await Api.getInstance().updateAssetAutoDE(body);
136
+ setIsLoading(false);
137
+ if (response.kind === 'ok') {
138
+ if (response.data?.meta?.errorCode === 200) {
139
+ Alert.alert('Thông báo', 'Cập nhật thông tin tài sản thành công', [
140
+ {
141
+ text: 'Đồng ý',
142
+ onPress: () => {
143
+ navigation.navigate(ScreenNames.Main);
144
+ },
145
+ },
146
+ ]);
147
+ } else {
148
+ Alert.alert('Thông báo', response.data?.meta?.errorMessage);
149
+ }
150
+ } else {
151
+ Alert.alert('Thông báo', 'Có lỗi xảy ra. Vui lòng thử lại sau');
152
+ }
153
+ } catch (error) {
154
+ console.log(error);
155
+ }
156
+ };
157
+
158
+ return (
159
+ <View style={{ flex: 1 }}>
160
+ <MHeader title="Vay nhanh 24/7" />
161
+ <View style={{ flex: 1 }}>
162
+ <View style={$h} />
163
+ <View style={$bg}>
164
+ <View
165
+ style={{
166
+ paddingVertical: 16,
167
+ flexDirection: 'row',
168
+ alignItems: 'center',
169
+ paddingHorizontal: 16,
170
+ }}
171
+ >
172
+ <TouchableOpacity
173
+ style={{
174
+ zIndex: 1000,
175
+ }}
176
+ onPress={() => {
177
+ navigation.navigate(ScreenNames.Main);
178
+ }}
179
+ >
180
+ <IconBack />
181
+ </TouchableOpacity>
182
+ <MText style={$title}>Thông tin chi tiết</MText>
183
+ </View>
184
+
185
+ <Formik
186
+ onSubmit={onSubmit}
187
+ innerRef={formRef}
188
+ validateOnBlur={false}
189
+ validateOnChange={false}
190
+ initialValues={{
191
+ brand: '',
192
+ yearCar: null,
193
+ vehicles: '',
194
+ plateNumber: '',
195
+ chassis: '',
196
+ engine: '',
197
+ ownerFullName: '',
198
+ motobikeCertificateNumber: '',
199
+ motobikeCertificateDate: '',
200
+ vehicleInspectionExpirationDate: '',
201
+ typeLoanBrief: 1,
202
+ carTypeId: null,
203
+ }}
204
+ validationSchema={yup.object().shape({
205
+ brand: yup.string().required('Vui lòng chọn hãng xe'),
206
+ yearCar: yup
207
+ .string()
208
+ .required('Vui lòng chọn năm sản xuất')
209
+ .nullable(),
210
+ vehicles: yup.string().required('Vui lòng chọn xe').nullable(),
211
+ plateNumber: yup.string().required('Vui lòng nhập biển số'),
212
+ chassis: yup.string().required('Vui lòng nhập số khung'),
213
+ engine: yup.string().required('Vui lòng nhập số máy'),
214
+ ownerFullName: yup.string().required('Vui lòng nhập chủ xe'),
215
+ motobikeCertificateNumber: yup
216
+ .string()
217
+ .required('Vui lòng nhập số đăng ký xe'),
218
+ motobikeCertificateDate: yup
219
+ .string()
220
+ .required('Vui lòng nhập ngày đăng ký'),
221
+ vehicleInspectionExpirationDate: yup
222
+ .string()
223
+ .required('Vui lòng nhập ngày đăng ký'),
224
+ typeLoanBrief: yup
225
+ .number()
226
+ .required('Vui lòng chọn loại tài sản')
227
+ .nullable(),
228
+ carTypeId: yup
229
+ .number()
230
+ .required('Vui lòng chọn loại xe')
231
+ .nullable(),
232
+ })}
233
+ >
234
+ {({
235
+ values,
236
+ setFieldValue,
237
+ errors,
238
+ handleSubmit,
239
+ handleChange,
240
+ }) => (
241
+ <ScrollView style={{ paddingHorizontal: 16, flex: 1 }}>
242
+ <MText style={$title2}>Thông tin tài sản</MText>
243
+ <View style={$row}>
244
+ <View style={{ flex: 1 }}>
245
+ <MText style={$label}>Hãng xe</MText>
246
+ <TouchableOpacity
247
+ style={$select}
248
+ onPress={() => {
249
+ navigation.push(ScreenNames.CommonSelect, {
250
+ title: 'Hãng xe',
251
+ data: ttsStore.listBrand,
252
+ callback: (value) => {
253
+ setFieldValue('brand', value.name);
254
+ setFieldValue('yearCar', null);
255
+ setFieldValue('vehicles', null);
256
+ ttsStore.getListYearCar(value.name);
257
+ },
258
+ });
259
+ }}
260
+ >
261
+ <MText
262
+ numberOfLines={1}
263
+ style={{
264
+ color: '#333333',
265
+ fontSize: 16,
266
+ fontWeight: '500',
267
+ flex: 1,
268
+ fontFamily: 'BeVietnamPro-Medium',
269
+ }}
270
+ >
271
+ {values?.brand}
272
+ </MText>
273
+ <DropDown2 />
274
+ </TouchableOpacity>
275
+ {errors && errors.brand && (
276
+ <MText style={$error}>{errors.brand}</MText>
277
+ )}
278
+ </View>
279
+ <View style={{ flex: 1 }}>
280
+ <MText style={$label}>Năm sản xuất</MText>
281
+ <TouchableOpacity
282
+ style={$select}
283
+ onPress={() => {
284
+ navigation.push(ScreenNames.CommonSelect, {
285
+ title: 'Năm sản xuất',
286
+ data: ttsStore.listYear,
287
+ callback: (value) => {
288
+ setFieldValue('yearCar', value.name);
289
+ setFieldValue('vehicles', null);
290
+ ttsStore.getListCar(values.brand, value.name);
291
+ },
292
+ });
293
+ }}
294
+ >
295
+ <MText
296
+ numberOfLines={1}
297
+ style={{
298
+ color: '#333333',
299
+ fontSize: 16,
300
+ fontWeight: '500',
301
+ flex: 1,
302
+ fontFamily: 'BeVietnamPro-Medium',
303
+ }}
304
+ >
305
+ {values?.yearCar}
306
+ </MText>
307
+ <DropDown2 />
308
+ </TouchableOpacity>
309
+ {errors && errors.yearCar && (
310
+ <MText style={$error}>{errors.yearCar}</MText>
311
+ )}
312
+ </View>
313
+ </View>
314
+ <MText style={$label}>Tên xe/ Phiên bản xe</MText>
315
+ <TouchableOpacity
316
+ style={$select}
317
+ onPress={() => {
318
+ navigation.push(ScreenNames.CommonSelect, {
319
+ title: 'Tên xe/ Phiên bản xe',
320
+ data: ttsStore.listCar,
321
+ callback: (value) => {
322
+ setFieldValue('vehicles', value.name);
323
+ },
324
+ });
325
+ }}
326
+ >
327
+ <MText
328
+ numberOfLines={1}
329
+ style={{
330
+ color: '#333333',
331
+ fontSize: 16,
332
+ fontWeight: '500',
333
+ flex: 1,
334
+ fontFamily: 'BeVietnamPro-Medium',
335
+ }}
336
+ >
337
+ {values.vehicles}
338
+ </MText>
339
+ <DropDown2 />
340
+ </TouchableOpacity>
341
+ {errors && errors.vehicles && (
342
+ <MText style={$error}>{errors.vehicles}</MText>
343
+ )}
344
+ <View style={[$row, { marginTop: 16 }]}>
345
+ <View style={{ flex: 1 }}>
346
+ <MText style={$label}>Biển số xe</MText>
347
+ <TextInput
348
+ placeholder="30A-99999"
349
+ placeholderTextColor={'#B3B3B3'}
350
+ numberOfLines={1}
351
+ style={[
352
+ $textInput,
353
+ {
354
+ color: '#333333',
355
+ fontSize: 16,
356
+ fontWeight: '500',
357
+ },
358
+ ]}
359
+ value={values.plateNumber}
360
+ onChangeText={handleChange('plateNumber')}
361
+ />
362
+ {errors && errors.plateNumber && (
363
+ <MText style={$error}>{errors.plateNumber}</MText>
364
+ )}
365
+ </View>
366
+ <View style={{ flex: 1 }}>
367
+ <MText style={$label}>Số đăng ký xe</MText>
368
+ <TextInput
369
+ placeholder="Nhập số đăng ký xe"
370
+ placeholderTextColor={'#B3B3B3'}
371
+ numberOfLines={1}
372
+ style={[
373
+ $textInput,
374
+ {
375
+ color: '#333333',
376
+ fontSize: 16,
377
+ fontWeight: '500',
378
+ },
379
+ ]}
380
+ value={values.motobikeCertificateNumber}
381
+ onChangeText={handleChange('motobikeCertificateNumber')}
382
+ />
383
+ {errors && errors.motobikeCertificateNumber && (
384
+ <MText style={$error}>
385
+ {errors.motobikeCertificateNumber}
386
+ </MText>
387
+ )}
388
+ </View>
389
+ </View>
390
+ <View style={[$row, { marginTop: 16 }]}>
391
+ <View style={{ flex: 1 }}>
392
+ <MText style={$label}>Ngày đăng ký xe</MText>
393
+ <TextInput
394
+ numberOfLines={1}
395
+ style={[
396
+ $textInput,
397
+ {
398
+ color: '#333333',
399
+ fontSize: 16,
400
+ fontWeight: '500',
401
+ },
402
+ ]}
403
+ placeholder="DD/MM/YYYY"
404
+ placeholderTextColor="#BDBDBD"
405
+ value={values.motobikeCertificateDate}
406
+ onChangeText={handleChange('motobikeCertificateDate')}
407
+ />
408
+ {errors && errors.motobikeCertificateDate && (
409
+ <MText style={$error}>
410
+ {errors.motobikeCertificateDate}
411
+ </MText>
412
+ )}
413
+ </View>
414
+ <View style={{ flex: 1 }}>
415
+ <MText style={$label}>Ngày hết hạn đăng kiểm</MText>
416
+ <TextInput
417
+ numberOfLines={1}
418
+ style={[
419
+ $textInput,
420
+ {
421
+ color: '#333333',
422
+ fontSize: 16,
423
+ fontWeight: '500',
424
+ },
425
+ ]}
426
+ placeholder="DD/MM/YYYY"
427
+ placeholderTextColor="#BDBDBD"
428
+ value={values.vehicleInspectionExpirationDate}
429
+ onChangeText={handleChange(
430
+ 'vehicleInspectionExpirationDate'
431
+ )}
432
+ />
433
+ {errors && errors.vehicleInspectionExpirationDate && (
434
+ <MText style={$error}>
435
+ {errors.vehicleInspectionExpirationDate}
436
+ </MText>
437
+ )}
438
+ </View>
439
+ </View>
440
+ <View style={[$row, { marginTop: 16 }]}>
441
+ <View style={{ flex: 1 }}>
442
+ <MText style={[$label]}>Số khung</MText>
443
+ <TextInput
444
+ placeholder="Nhập số khung"
445
+ placeholderTextColor={'#B3B3B3'}
446
+ numberOfLines={1}
447
+ style={[
448
+ $textInput,
449
+ {
450
+ color: '#333333',
451
+ fontSize: 16,
452
+ fontWeight: '500',
453
+ },
454
+ ]}
455
+ value={values.chassis}
456
+ onChangeText={handleChange('chassis')}
457
+ />
458
+ {errors && errors.chassis && (
459
+ <MText style={$error}>{errors.chassis}</MText>
460
+ )}
461
+ </View>
462
+ <View style={{ flex: 1 }}>
463
+ <MText style={$label}>Số máy</MText>
464
+ <TextInput
465
+ placeholder="Nhập số máy"
466
+ placeholderTextColor={'#B3B3B3'}
467
+ numberOfLines={1}
468
+ style={[
469
+ $textInput,
470
+ {
471
+ color: '#333333',
472
+ fontSize: 16,
473
+ fontWeight: '500',
474
+ },
475
+ ]}
476
+ value={values.engine}
477
+ onChangeText={handleChange('engine')}
478
+ />
479
+ {errors && errors.engine && (
480
+ <MText style={$error}>{errors.engine}</MText>
481
+ )}
482
+ </View>
483
+ </View>
484
+ <MText style={$label}>Họ tên chủ xe</MText>
485
+ <TextInput
486
+ numberOfLines={1}
487
+ style={[
488
+ $textInput,
489
+ {
490
+ color: '#333333',
491
+ fontSize: 16,
492
+ fontWeight: '500',
493
+ },
494
+ ]}
495
+ placeholder="Nhập họ tên chủ xe"
496
+ placeholderTextColor={'#B3B3B3'}
497
+ value={values.ownerFullName}
498
+ onChangeText={handleChange('ownerFullName')}
499
+ />
500
+ {errors && errors.ownerFullName && (
501
+ <MText style={$error}>{errors.ownerFullName}</MText>
502
+ )}
503
+ <View style={[$row, { marginTop: 16 }]}>
504
+ <View style={{ flex: 1 }}>
505
+ <MText style={$label}>Loại tài sản</MText>
506
+ <TouchableOpacity
507
+ style={$select}
508
+ onPress={() => {
509
+ navigation.push(ScreenNames.MSelect, {
510
+ title: 'Loại tài sản',
511
+ data: EnumTypeAsset,
512
+ callback: (value) => {
513
+ setFieldValue('typeLoanBrief', value.id);
514
+ },
515
+ });
516
+ }}
517
+ >
518
+ <MText
519
+ numberOfLines={1}
520
+ style={{
521
+ color: '#333333',
522
+ fontSize: 16,
523
+ fontWeight: '500',
524
+ flex: 1,
525
+ fontFamily: 'BeVietnamPro-Medium',
526
+ }}
527
+ >
528
+ {
529
+ EnumTypeAsset.find(
530
+ (x) => x.id === values.typeLoanBrief
531
+ )?.name
532
+ }
533
+ </MText>
534
+ <DropDown2 />
535
+ </TouchableOpacity>
536
+ {errors && errors.typeLoanBrief && (
537
+ <MText style={$error}>{errors.typeLoanBrief}</MText>
538
+ )}
539
+ </View>
540
+ <View style={{ flex: 1 }}>
541
+ <MText style={$label}>Loại xe</MText>
542
+ <TouchableOpacity
543
+ style={$select}
544
+ onPress={() => {
545
+ navigation.push(ScreenNames.MSelect, {
546
+ title: 'Loại xe',
547
+ data: EnumTypeCar,
548
+ callback: (value) => {
549
+ setFieldValue('carTypeId', value.id);
550
+ },
551
+ });
552
+ }}
553
+ >
554
+ <MText
555
+ numberOfLines={1}
556
+ style={{
557
+ color: '#333333',
558
+ fontSize: 16,
559
+ fontWeight: '500',
560
+ flex: 1,
561
+ fontFamily: 'BeVietnamPro-Medium',
562
+ }}
563
+ >
564
+ {
565
+ EnumTypeCar.find((x) => x.id === values.carTypeId)
566
+ ?.name
567
+ }
568
+ </MText>
569
+ <DropDown2 />
570
+ </TouchableOpacity>
571
+ {errors && errors.carTypeId && (
572
+ <MText style={$error}>{errors.carTypeId}</MText>
573
+ )}
574
+ </View>
575
+ </View>
576
+ </ScrollView>
577
+ )}
578
+ </Formik>
579
+
580
+ <MButton
581
+ onPress={() => {
582
+ formRef.current?.handleSubmit();
583
+ }}
584
+ style={{
585
+ marginVertical: 24,
586
+ marginHorizontal: 16,
587
+ }}
588
+ >
589
+ <LinearGradient
590
+ start={{ x: 1, y: 0 }}
591
+ end={{ x: 0, y: 1 }}
592
+ style={{
593
+ height: 40,
594
+ marginVertical: 16,
595
+ borderRadius: 30,
596
+ alignItems: 'center',
597
+ justifyContent: 'center',
598
+ }}
599
+ colors={['#FF7A00', '#EF4123']}
600
+ >
601
+ <MText
602
+ style={{
603
+ color: 'white',
604
+ fontSize: 16,
605
+ }}
606
+ >
607
+ Tiếp tục
608
+ </MText>
609
+ </LinearGradient>
610
+ </MButton>
611
+ <KeyboardSpacer />
612
+ </View>
613
+ </View>
614
+ <Loading isLoading={isLoading} />
615
+ </View>
616
+ );
617
+ });
618
+
619
+ const $error: TextStyle = {
620
+ color: '#EB5757',
621
+ fontSize: 14,
622
+ fontStyle: 'italic',
623
+ fontFamily: 'BeVietnamPro-Thin',
624
+ fontWeight: '300',
625
+ marginTop: 5,
626
+ };
627
+
628
+ const $label: TextStyle = {
629
+ fontSize: 14,
630
+ color: '#333333',
631
+ paddingBottom: 5,
632
+ };
633
+
634
+ const $title: TextStyle = {
635
+ fontSize: 16,
636
+ fontWeight: 'bold',
637
+ color: '#333333',
638
+ position: 'absolute',
639
+ left: 0,
640
+ right: 0,
641
+ textAlign: 'center',
642
+ };
643
+
644
+ const $h: ViewStyle = {
645
+ backgroundColor: '#EF592E',
646
+ position: 'absolute',
647
+ height: 30,
648
+ width: '100%',
649
+ };
650
+
651
+ const $bg: ViewStyle = {
652
+ borderTopLeftRadius: 30,
653
+ borderTopRightRadius: 30,
654
+ backgroundColor: 'white',
655
+ flex: 1,
656
+ };
657
+
658
+ const $title2: TextStyle = {
659
+ fontSize: 16,
660
+ fontWeight: 'bold',
661
+ color: '#333333',
662
+ paddingBottom: 10,
663
+ marginTop: 6,
664
+ };
665
+
666
+ const $row: ViewStyle = {
667
+ flexDirection: 'row',
668
+ // alignItems: 'center',
669
+ marginBottom: 16,
670
+ gap: 16,
671
+ };
672
+
673
+ const $select: ViewStyle = {
674
+ flexDirection: 'row',
675
+ height: 40,
676
+ alignItems: 'center',
677
+ paddingHorizontal: 8,
678
+ borderWidth: 1,
679
+ borderRadius: 4,
680
+ borderColor: '#E0E0E0',
681
+ };
682
+
683
+ const $textInput: ViewStyle = {
684
+ borderWidth: 1,
685
+ borderRadius: 4,
686
+ borderColor: '#E0E0E0',
687
+ height: 40,
688
+ paddingHorizontal: 8,
689
+ fontFamily: 'BeVietnamPro-Medium',
690
+ };