BankCardScreen.tsx 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import { StackScreenProps } from '@react-navigation/stack';
  2. import * as React from 'react';
  3. import { Div, Button, Image, Text, Avatar, Icon } from 'react-native-magnus';
  4. import { ScrollView } from 'react-native-gesture-handler';
  5. import { useRequest } from 'ahooks';
  6. import useModel from 'flooks';
  7. import Wallet from './model';
  8. import BankCom from './BankCom';
  9. import { useTranslation } from 'react-i18next';
  10. export default function BankCardScreen({ navigation }: StackScreenProps) {
  11. const { t } = useTranslation();
  12. const { data, loading } = useRequest('/bankCard/my', {
  13. formatResult: (response) => response.content,
  14. initialData: [],
  15. defaultLoading: false,
  16. });
  17. navigation.setOptions({
  18. headerRight: () => (
  19. <Button
  20. bg="transparent"
  21. mx={10}
  22. onPress={() => navigation.navigate('AddBankCard')}
  23. >
  24. <Icon name="plus" color="white" />
  25. </Button>
  26. ),
  27. });
  28. const { chooseCardId, changeChooseId, setChooseInfo } = useModel(Wallet, [
  29. 'chooseCardId',
  30. ]);
  31. return (
  32. <Div bg="gray100">
  33. <ScrollView
  34. contentContainerStyle={{
  35. flexGrow: 1,
  36. backgroundColor: '#f2f2f2',
  37. }}
  38. >
  39. {data.map((item) => {
  40. return (
  41. <BankCom
  42. key={item.id}
  43. info={item}
  44. checked={chooseCardId === item.id}
  45. onPress={() => {
  46. changeChooseId(item.id);
  47. setChooseInfo(item);
  48. navigation.navigate('WithdrawApply');
  49. }}
  50. />
  51. );
  52. })}
  53. {data.length === 0 && !loading && (
  54. <Div>
  55. <Text py={30} textAlign="center">
  56. {t('nothing1')}
  57. </Text>
  58. <Button
  59. alignSelf="center"
  60. bg="yellow500"
  61. onPress={() => navigation.navigate('AddBankCard')}
  62. >
  63. {t('qu-tian-jia')}
  64. </Button>
  65. </Div>
  66. )}
  67. </ScrollView>
  68. </Div>
  69. );
  70. }