RecommendStore.jsx 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. import * as WebBrowser from 'expo-web-browser';
  2. import * as React from 'react';
  3. import { StyleSheet, View } from 'react-native';
  4. import { Flex, WingBlank } from '@ant-design/react-native';
  5. import { Card } from 'react-native-paper';
  6. import { useTranslation } from 'react-i18next';
  7. import { Div, Button, Text, Image } from 'react-native-magnus';
  8. import { useNavigation } from '@react-navigation/native';
  9. import useModel from 'flooks';
  10. import { useCreation } from '@umijs/hooks';
  11. import HomeModel from './model';
  12. function CardCom({ info, distance, onPress }) {
  13. const long = useCreation(() => {
  14. if (distance) {
  15. return `${(distance / 1000).toFixed(2)}km`;
  16. } else {
  17. return false;
  18. }
  19. }, [distance]);
  20. return (
  21. <Button bg="hide" block flex={1} onPress={onPress}>
  22. <Div px={5} flex={1} alignItems="center">
  23. <Image w={46} h={46} rounded="xs" source={{ uri: info.logo }} />
  24. <Text fontSize="xs" textAlign="center" color="gray300">
  25. {info.showName}
  26. </Text>
  27. <Text fontSize="xs" textAlign="center" color="red500">
  28. 1.1km
  29. </Text>
  30. </Div>
  31. </Button>
  32. );
  33. }
  34. export default function RecommendStore() {
  35. const { t } = useTranslation();
  36. const { newMerchants } = useModel(HomeModel, ['newMerchants']);
  37. const navigation = useNavigation();
  38. return (
  39. <Div p={15}>
  40. <Div row>
  41. <Text flex={1} fontSize="xl" textweight="bold">
  42. {t('xin-dian-tui-jian')}
  43. </Text>
  44. <Button
  45. bg="white"
  46. fontSize="xs"
  47. color="gray600"
  48. py={5}
  49. px={10}
  50. onPress={() => {
  51. navigation.navigate('MerchantsList');
  52. }}
  53. >
  54. {t('geng-duo-xin-dian')}
  55. </Button>
  56. </Div>
  57. <Div row>
  58. {newMerchants.map((item) => {
  59. return (
  60. <CardCom
  61. key={item.id}
  62. info={item}
  63. distance={item.distance}
  64. onPress={() => {
  65. navigation.navigate('MerchantDetail', {
  66. merchantId: item.id,
  67. });
  68. }}
  69. />
  70. );
  71. })}
  72. </Div>
  73. </Div>
  74. );
  75. }
  76. const styles = StyleSheet.create({
  77. image2: {
  78. width: 47,
  79. height: 47,
  80. alignSelf: 'center',
  81. marginHorizontal: 10,
  82. borderRadius: 3,
  83. },
  84. main2: {
  85. marginTop: 7,
  86. paddingHorizontal: 0,
  87. },
  88. card: {
  89. marginVertical: 5,
  90. borderWidth: 0,
  91. elevation: 0,
  92. shadowOffset: {
  93. width: 0,
  94. height: 0,
  95. },
  96. shadowOpacity: 0,
  97. shadowRadius: 0,
  98. },
  99. });