MineInfoScreen.tsx 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. import { StackScreenProps } from '@react-navigation/stack';
  2. import * as React from 'react';
  3. import { Div, Button, Image, Text, Avatar, Icon } from 'react-native-magnus';
  4. import { ScrollView } from 'react-native-gesture-handler';
  5. import useModel from 'flooks';
  6. import { useTranslation } from 'react-i18next';
  7. import User from '../stores/User';
  8. import ImagePicker from '../components/ImagePicker';
  9. import { promot } from '../utils/SystemUtils';
  10. export default function MineInfoScreen({ navigation }: StackScreenProps) {
  11. const { t } = useTranslation();
  12. const { userInfo, updateUser, riderInfo } = useModel(User, ['userInfo']);
  13. const { avatar, nickname, phone } = userInfo;
  14. const { jobNumber, area } = riderInfo;
  15. function updateInfo(key, val) {
  16. updateUser({
  17. [key]: val,
  18. });
  19. }
  20. return (
  21. <Div bg="gray100">
  22. <ScrollView
  23. contentContainerStyle={{
  24. flexGrow: 1,
  25. backgroundColor: '#f2f2f2',
  26. }}
  27. >
  28. <Div mb={10} row bg="white" row h={55} alignItems="center" px={15}>
  29. <Text flex={1} fontSize="sm">
  30. {t('tou-xiang')}:
  31. </Text>
  32. <ImagePicker
  33. img={avatar}
  34. setImg={(img) => updateInfo('avatar', img)}
  35. w={33}
  36. h={33}
  37. />
  38. <Icon ml={5} name="right" fontSize="sm" />
  39. </Div>
  40. <Button
  41. mb={10}
  42. bg="transparent"
  43. p={0}
  44. block
  45. onPress={() => {
  46. promot(navigation, {
  47. title: t('ni-cheng'),
  48. defaultVal: nickname,
  49. hasCancel: true,
  50. submitEvent: (val) => {
  51. updateInfo('nickname', val);
  52. },
  53. });
  54. }}
  55. >
  56. <Div flex={1} row bg="white" row h={55} alignItems="center" px={15}>
  57. <Text flex={1} fontSize="sm">
  58. {t('ni-cheng')}:
  59. </Text>
  60. <Text color="gray500" fontSize="sm">
  61. {nickname}
  62. </Text>
  63. <Icon ml={5} name="right" fontSize="sm" />
  64. </Div>
  65. </Button>
  66. <Button
  67. mb={10}
  68. bg="transparent"
  69. p={0}
  70. block
  71. onPress={() => {
  72. navigation.navigate('LoginStack', {
  73. screen: 'ForgetPsd',
  74. });
  75. }}
  76. >
  77. <Div
  78. flex={1}
  79. mb={10}
  80. row
  81. bg="white"
  82. row
  83. h={55}
  84. alignItems="center"
  85. px={15}
  86. >
  87. <Text flex={1} fontSize="sm">
  88. {t('geng-gai-mi-ma')}:
  89. </Text>
  90. <Icon ml={5} name="right" fontSize="sm" />
  91. </Div>
  92. </Button>
  93. <Div bg="white" px={15}>
  94. <Div
  95. row
  96. py={12}
  97. alignItems="center"
  98. borderBottomWidth={1}
  99. borderColor="gray100"
  100. >
  101. <Text flex={1} fontSize="sm">
  102. {t('gong-hao')}:
  103. </Text>
  104. <Text fontSize="sm" color="gray500">
  105. {jobNumber}
  106. </Text>
  107. </Div>
  108. <Div
  109. row
  110. py={12}
  111. alignItems="center"
  112. borderBottomWidth={1}
  113. borderColor="gray100"
  114. >
  115. <Text fontSize="sm" minW={75}>
  116. {t('di-zhi')}:
  117. </Text>
  118. <Text fontSize="sm" color="gray500">
  119. {area}
  120. </Text>
  121. </Div>
  122. <Div
  123. row
  124. py={12}
  125. alignItems="center"
  126. borderBottomWidth={1}
  127. borderColor="gray100"
  128. >
  129. <Text flex={1} fontSize="sm">
  130. {t('dian-hua')}:
  131. </Text>
  132. <Text fontSize="sm" color="gray500">
  133. {phone}
  134. </Text>
  135. </Div>
  136. <Div row py={12} alignItems="center">
  137. <Text fontSize="sm" minW={75}>
  138. {t('gong-zuo-fan-wei')}:
  139. </Text>
  140. <Text fontSize="sm" color="gray500">
  141. {area}
  142. </Text>
  143. </Div>
  144. </Div>
  145. </ScrollView>
  146. </Div>
  147. );
  148. }