UserScreen.jsx 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. /* eslint-disable react/style-prop-object */
  2. import * as WebBrowser from 'expo-web-browser';
  3. import * as React from 'react';
  4. import { Div, Button, Image, Text, Avatar } from 'react-native-magnus';
  5. import { List } from 'react-native-paper';
  6. import { ScrollView } from 'react-native-gesture-handler';
  7. import { StatusBar } from 'expo-status-bar';
  8. import Constants from 'expo-constants';
  9. import useModel from 'flooks';
  10. import User from '../../flooks/User'; // detail模块通用方法
  11. import UserCoupon from '../userCoupon/SettingCom';
  12. import { connectKefuOn } from '../../Utils/TotastUtils';
  13. export default function UserScreen({ navigation }) {
  14. const { userInfo } = useModel(User, ['id']);
  15. const { avatar, nickname, username } = userInfo || {
  16. nickname: '未登录',
  17. };
  18. return (
  19. <>
  20. <StatusBar backgroundColor="transparent" style="dark" translucent />
  21. <ScrollView
  22. contentContainerStyle={{ flexGrow: 1, backgroundColor: '#eee' }}
  23. >
  24. <Div row bg="white" pt={Constants.statusBarHeight + 20} px={20} pb={20}>
  25. <Button
  26. bg="white"
  27. p={0}
  28. onPress={() => {
  29. navigation.navigate('Setting');
  30. }}
  31. >
  32. {avatar ? (
  33. <Image
  34. h={53}
  35. w={53}
  36. rounded="circle"
  37. source={{
  38. uri: avatar,
  39. }}
  40. />
  41. ) : (
  42. <Avatar bg="red300" color="white" h={53} w={53}>
  43. {nickname ? nickname.substr(0, 1) : ''}
  44. </Avatar>
  45. )}
  46. </Button>
  47. <Div justifyContent="space-between" ml={10}>
  48. <Text fontSize="xl" fontWeight="bold" textAlign="left">
  49. {nickname}
  50. </Text>
  51. <Text fontSize="sm" textAlign="left">
  52. 叮咚外卖{username}
  53. </Text>
  54. </Div>
  55. </Div>
  56. <UserCoupon />
  57. <Div bg="white" mb={5}>
  58. <List.Item
  59. title="我的收藏"
  60. left={(props) => (
  61. <List.Icon {...props} icon="heart-outline" color="#FFB11E" />
  62. )}
  63. right={(props) => <List.Icon {...props} icon="chevron-right" />}
  64. onPress={() => navigation.navigate('Collection')}
  65. />
  66. </Div>
  67. <Div bg="white" mb={5}>
  68. <List.Item
  69. title="联系客服"
  70. left={(props) => (
  71. <List.Icon {...props} icon="headset" color="#FFB11E" />
  72. )}
  73. right={(props) => <List.Icon {...props} icon="chevron-right" />}
  74. onPress={connectKefuOn}
  75. />
  76. </Div>
  77. <Div bg="white" mb={5}>
  78. <List.Item
  79. title="我的地址"
  80. left={(props) => (
  81. <List.Icon {...props} icon="map-marker-radius" color="#FFB11E" />
  82. )}
  83. right={(props) => <List.Icon {...props} icon="chevron-right" />}
  84. onPress={() => navigation.navigate('Address')}
  85. />
  86. </Div>
  87. <Div bg="white" mb={5}>
  88. <List.Item
  89. title="合作申请"
  90. left={(props) => (
  91. <List.Icon {...props} icon="briefcase" color="#FFB11E" />
  92. )}
  93. right={(props) => <List.Icon {...props} icon="chevron-right" />}
  94. onPress={() => navigation.navigate('Cooperation')}
  95. />
  96. </Div>
  97. <Div bg="white" mb={5}>
  98. <List.Item
  99. title="设置"
  100. left={(props) => (
  101. <List.Icon {...props} icon="cogs" color="#FFB11E" />
  102. )}
  103. right={(props) => <List.Icon {...props} icon="chevron-right" />}
  104. onPress={() => navigation.navigate('AppSetting')}
  105. />
  106. </Div>
  107. <Div bg="white" mb={5}>
  108. <List.Item
  109. title="隐私条款"
  110. left={(props) => (
  111. <List.Icon {...props} icon="card-text" color="#FFB11E" />
  112. )}
  113. right={(props) => <List.Icon {...props} icon="chevron-right" />}
  114. onPress={() => navigation.navigate('Rule')}
  115. />
  116. </Div>
  117. <Div bg="white" mb={5}>
  118. <List.Item
  119. title="意见反馈"
  120. left={(props) => (
  121. <List.Icon {...props} icon="tooltip-plus" color="#FFB11E" />
  122. )}
  123. right={(props) => <List.Icon {...props} icon="chevron-right" />}
  124. />
  125. </Div>
  126. </ScrollView>
  127. </>
  128. );
  129. }