SpecialArea.jsx 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. import * as WebBrowser from 'expo-web-browser';
  2. import * as React from 'react';
  3. import { useTranslation } from 'react-i18next';
  4. import { StyleSheet } from 'react-native';
  5. import { Flex, WingBlank } from '@ant-design/react-native';
  6. import { Div, Button, Text } from 'react-native-magnus';
  7. import { useNavigation } from '@react-navigation/native';
  8. import { Card } from 'react-native-paper';
  9. import useModel from 'flooks';
  10. import HomeModel from './model';
  11. import CountDown from '../../../components/CountDown ';
  12. import Banner from './Banner';
  13. // 优惠专区
  14. export default function SpecialArea() {
  15. const navigation = useNavigation();
  16. const { t } = useTranslation();
  17. const { promote1, promote2, bannerList } = useModel(HomeModel);
  18. const promote1Card = (list) => {
  19. return list.map((item) => {
  20. const merchant = item.merchant || {};
  21. return (
  22. <Div key={item.id} flex={1} mx={1.5} maxW="50%">
  23. <Card
  24. key={item.id}
  25. onPress={() => {
  26. navigation.navigate('MerchantDetail', {
  27. merchantId: item.merchantId,
  28. });
  29. }}
  30. >
  31. <Card.Cover
  32. style={styles.image}
  33. resizeMode="cover"
  34. source={{ uri: merchant.logo }}
  35. />
  36. <Div py={8} px={10}>
  37. <Text>{merchant.name}</Text>
  38. <Div row>
  39. <Text fontSize="sm" mr={5}>
  40. {t('dao-ji-shi')}
  41. </Text>
  42. <CountDown
  43. endTime={item.endDateTime}
  44. format="yyyy-MM-DD HH:mm:ss"
  45. valueFormat="D天 HH时mm分ss秒"
  46. size="sm"
  47. color="red500"
  48. />
  49. </Div>
  50. </Div>
  51. </Card>
  52. </Div>
  53. );
  54. });
  55. };
  56. const promote2Card = (list) => {
  57. return list.map((item) => {
  58. const merchant = item.merchant || {};
  59. return (
  60. <Div key={item.id} flex={1} mx={1.5} maxW="25%" shadow="xs">
  61. <Card
  62. onPress={() => {
  63. navigation.navigate('MerchantDetail', {
  64. merchantId: item.merchantId,
  65. });
  66. }}
  67. >
  68. <Card.Cover
  69. style={styles.image2}
  70. resizeMode="cover"
  71. source={{ uri: merchant.logo }}
  72. />
  73. <Card.Content style={styles.main2}>
  74. <Text fontSize="xs" numberOfLines={1} ellipsizeMode="tail">
  75. {merchant.name}
  76. </Text>
  77. </Card.Content>
  78. </Card>
  79. </Div>
  80. );
  81. });
  82. };
  83. return (
  84. <>
  85. <Div bg="white" px={15}>
  86. <Text fontSize="xl" fontWeight="bold" py={5}>
  87. {t('you-hui-zhuan-qu')}
  88. </Text>
  89. <Div row mb={5}>
  90. {promote1Card(promote1)}
  91. </Div>
  92. <Div row mb={10}>
  93. {promote2Card(promote2)}
  94. </Div>
  95. <Text fontSize="xl" fontWeight="bold" py={5}>
  96. {t('you-hui-zhuan-qu')}
  97. </Text>
  98. <Banner type="AREA" round noDots />
  99. </Div>
  100. </>
  101. );
  102. }
  103. const styles = StyleSheet.create({
  104. image: {
  105. height: 77,
  106. },
  107. image2: {
  108. height: 80,
  109. },
  110. main2: {
  111. paddingBottom: 6,
  112. paddingVertical: 6,
  113. paddingHorizontal: 10,
  114. },
  115. content: {
  116. marginTop: 5,
  117. },
  118. content2: {
  119. marginTop: 3,
  120. },
  121. imageMain: {
  122. height: 74,
  123. borderRadius: 3,
  124. marginTop: 5,
  125. },
  126. });