UserScreen.jsx 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  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 { useCreation } from '@umijs/hooks';
  10. import useModel from 'flooks';
  11. import User from '../../flooks/User'; // detail模块通用方法
  12. import UserCoupon from '../userCoupon/SettingCom';
  13. import { connectKefuOn } from '../../Utils/TotastUtils';
  14. export default function UserScreen({ navigation }) {
  15. const { userInfo } = useModel(User, ['id']);
  16. const { avatar, nickname, username } = userInfo || {
  17. nickname: '未登录',
  18. };
  19. const showNick = useCreation(() => {
  20. if (nickname) {
  21. return nickname;
  22. } else {
  23. return showUser;
  24. }
  25. }, [nickname]);
  26. const showUser = useCreation(() => {
  27. let name = username.substring(4, 7);
  28. if (name) {
  29. return username.replace(name, '****');
  30. } else {
  31. return username;
  32. }
  33. }, [username]);
  34. return (
  35. <>
  36. <StatusBar backgroundColor="transparent" style="dark" translucent />
  37. <ScrollView
  38. contentContainerStyle={{ flexGrow: 1, backgroundColor: '#eee' }}
  39. >
  40. <Div row bg="white" pt={Constants.statusBarHeight + 20} px={20} pb={20}>
  41. <Button
  42. bg="white"
  43. p={0}
  44. onPress={() => {
  45. navigation.navigate('Setting');
  46. }}
  47. >
  48. {avatar ? (
  49. <Image
  50. h={53}
  51. w={53}
  52. rounded="circle"
  53. source={{
  54. uri: avatar,
  55. }}
  56. />
  57. ) : (
  58. <Image
  59. h={53}
  60. w={53}
  61. rounded="circle"
  62. source={require('../../assets/images/logo_1.png')}
  63. />
  64. )}
  65. </Button>
  66. <Div justifyContent="space-between" ml={10}>
  67. <Text fontSize="xl" fontWeight="bold" textAlign="left">
  68. {showNick}
  69. </Text>
  70. <Text fontSize="sm" textAlign="left">
  71. 叮咚外卖{showUser}
  72. </Text>
  73. </Div>
  74. </Div>
  75. <UserCoupon />
  76. <Div bg="white" mb={5}>
  77. <List.Item
  78. title="我的收藏"
  79. left={(props) => (
  80. <List.Icon {...props} icon="heart-outline" color="#FFB11E" />
  81. )}
  82. right={(props) => <List.Icon {...props} icon="chevron-right" />}
  83. onPress={() => navigation.navigate('Collection')}
  84. />
  85. </Div>
  86. <Div bg="white" mb={5}>
  87. <List.Item
  88. title="联系客服"
  89. left={(props) => (
  90. <List.Icon {...props} icon="headset" color="#FFB11E" />
  91. )}
  92. right={(props) => <List.Icon {...props} icon="chevron-right" />}
  93. onPress={connectKefuOn}
  94. />
  95. </Div>
  96. <Div bg="white" mb={5}>
  97. <List.Item
  98. title="我的地址"
  99. left={(props) => (
  100. <List.Icon {...props} icon="map-marker-radius" color="#FFB11E" />
  101. )}
  102. right={(props) => <List.Icon {...props} icon="chevron-right" />}
  103. onPress={() => navigation.navigate('Address')}
  104. />
  105. </Div>
  106. <Div bg="white" mb={5}>
  107. <List.Item
  108. title="合作申请"
  109. left={(props) => (
  110. <List.Icon {...props} icon="briefcase" color="#FFB11E" />
  111. )}
  112. right={(props) => <List.Icon {...props} icon="chevron-right" />}
  113. onPress={() => navigation.navigate('Cooperation')}
  114. />
  115. </Div>
  116. <Div bg="white" mb={5}>
  117. <List.Item
  118. title="设置"
  119. left={(props) => (
  120. <List.Icon {...props} icon="cogs" color="#FFB11E" />
  121. )}
  122. right={(props) => <List.Icon {...props} icon="chevron-right" />}
  123. onPress={() => navigation.navigate('AppSetting')}
  124. />
  125. </Div>
  126. <Div bg="white" mb={5}>
  127. <List.Item
  128. title="隐私条款"
  129. left={(props) => (
  130. <List.Icon {...props} icon="card-text" color="#FFB11E" />
  131. )}
  132. right={(props) => <List.Icon {...props} icon="chevron-right" />}
  133. onPress={() => navigation.navigate('Rule')}
  134. />
  135. </Div>
  136. <Div bg="white" mb={5}>
  137. <List.Item
  138. title="意见反馈"
  139. left={(props) => (
  140. <List.Icon {...props} icon="tooltip-plus" color="#FFB11E" />
  141. )}
  142. right={(props) => <List.Icon {...props} icon="chevron-right" />}
  143. onPress={() => navigation.navigate('FeedBack')}
  144. />
  145. </Div>
  146. </ScrollView>
  147. </>
  148. );
  149. }