UserScreen.jsx 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. /* eslint-disable global-require */
  2. /* eslint-disable react/style-prop-object */
  3. import * as WebBrowser from 'expo-web-browser';
  4. import * as React from 'react';
  5. import { Div, Button, Image, Text, Avatar } from 'react-native-magnus';
  6. import { List } from 'react-native-paper';
  7. import { ScrollView } from 'react-native-gesture-handler';
  8. import { StatusBar } from 'expo-status-bar';
  9. import Constants from 'expo-constants';
  10. import { useCreation } from '@umijs/hooks';
  11. import { useTranslation } from 'react-i18next';
  12. import useModel from 'flooks';
  13. import User from '../../flooks/User'; // detail模块通用方法
  14. import UserCoupon from '../userCoupon/SettingCom';
  15. import { connectKefuOn } from '../../Utils/TotastUtils';
  16. export default function UserScreen({ navigation }) {
  17. const { t } = useTranslation();
  18. const { userInfo } = useModel(User, ['id']);
  19. const { avatar, nickname, username } = userInfo || {
  20. nickname: '未登录',
  21. };
  22. const showNick = useCreation(() => {
  23. if (nickname) {
  24. return nickname;
  25. } else {
  26. return showUser;
  27. }
  28. }, [nickname]);
  29. const showUser = useCreation(() => {
  30. if (username) {
  31. const name = username.substring(4, 7);
  32. return username.replace(name, '****');
  33. } else {
  34. return username;
  35. }
  36. }, [username]);
  37. return (
  38. <>
  39. <StatusBar backgroundColor="transparent" style="dark" translucent />
  40. <ScrollView
  41. contentContainerStyle={{ flexGrow: 1, backgroundColor: '#eee' }}
  42. >
  43. <Div row bg="white" pt={Constants.statusBarHeight + 20} px={20} pb={20}>
  44. <Button
  45. bg="white"
  46. p={0}
  47. onPress={() => {
  48. navigation.navigate('Setting');
  49. }}
  50. >
  51. {avatar ? (
  52. <Image
  53. h={53}
  54. w={53}
  55. rounded="circle"
  56. source={{
  57. uri: avatar,
  58. }}
  59. />
  60. ) : (
  61. <Image
  62. h={53}
  63. w={53}
  64. rounded="circle"
  65. source={require('../../assets/images/logo_1.png')}
  66. />
  67. )}
  68. </Button>
  69. <Div justifyContent="space-between" ml={10}>
  70. <Text fontSize="xl" fontWeight="bold" textAlign="left">
  71. {showNick}
  72. </Text>
  73. <Text fontSize="sm" textAlign="left">
  74. {t('ding-dong-wai-mai')}
  75. {showUser}
  76. </Text>
  77. </Div>
  78. </Div>
  79. <UserCoupon />
  80. <Div bg="white" mb={5}>
  81. <List.Item
  82. title={t('wo-de-shou-cang')}
  83. left={(props) => (
  84. <List.Icon {...props} icon="heart-outline" color="#FFB11E" />
  85. )}
  86. right={(props) => <List.Icon {...props} icon="chevron-right" />}
  87. onPress={() => navigation.navigate('Collection')}
  88. />
  89. </Div>
  90. <Div bg="white" mb={5}>
  91. <List.Item
  92. title={t('lian-xi-ke-fu')}
  93. left={(props) => (
  94. <List.Icon {...props} icon="headset" color="#FFB11E" />
  95. )}
  96. right={(props) => <List.Icon {...props} icon="chevron-right" />}
  97. onPress={connectKefuOn}
  98. />
  99. </Div>
  100. <Div bg="white" mb={5}>
  101. <List.Item
  102. title={t('wo-de-di-zhi')}
  103. left={(props) => (
  104. <List.Icon {...props} icon="map-marker-radius" color="#FFB11E" />
  105. )}
  106. right={(props) => <List.Icon {...props} icon="chevron-right" />}
  107. onPress={() => navigation.navigate('Address')}
  108. />
  109. </Div>
  110. <Div bg="white" mb={5}>
  111. <List.Item
  112. title={t('he-zuo-shen-qing')}
  113. left={(props) => (
  114. <List.Icon {...props} icon="briefcase" color="#FFB11E" />
  115. )}
  116. right={(props) => <List.Icon {...props} icon="chevron-right" />}
  117. onPress={() => navigation.navigate('Cooperation')}
  118. />
  119. </Div>
  120. <Div bg="white" mb={5}>
  121. <List.Item
  122. title={t('she-zhi')}
  123. left={(props) => (
  124. <List.Icon {...props} icon="cogs" color="#FFB11E" />
  125. )}
  126. right={(props) => <List.Icon {...props} icon="chevron-right" />}
  127. onPress={() => navigation.navigate('AppSetting')}
  128. />
  129. </Div>
  130. <Div bg="white" mb={5}>
  131. <List.Item
  132. title={t('yin-si-tiao-kuan')}
  133. left={(props) => (
  134. <List.Icon {...props} icon="card-text" color="#FFB11E" />
  135. )}
  136. right={(props) => <List.Icon {...props} icon="chevron-right" />}
  137. onPress={() => navigation.navigate('Rule')}
  138. />
  139. </Div>
  140. <Div bg="white" mb={5}>
  141. <List.Item
  142. title={t('yi-jian-fan-kui')}
  143. left={(props) => (
  144. <List.Icon {...props} icon="tooltip-plus" color="#FFB11E" />
  145. )}
  146. right={(props) => <List.Icon {...props} icon="chevron-right" />}
  147. onPress={() => navigation.navigate('FeedBack')}
  148. />
  149. </Div>
  150. </ScrollView>
  151. </>
  152. );
  153. }