StepStartView.js 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. /**
  2. * 充电页:扫码认证之后-充电开始之前
  3. * @邠心vbe on 2023/03/10
  4. */
  5. import React from 'react';
  6. import { Image, StyleSheet, Text, View } from 'react-native';
  7. import Button from '../../components/Button';
  8. import { ChargeStyle, TypeImage } from '../chargeV2/Charging';
  9. import { PageList } from '../Router';
  10. export default StepStartView = ({
  11. isPrivate,
  12. stationInfo={},
  13. onEnterStation,
  14. canIntoCharging=false,
  15. onIntoCharging
  16. }) => (
  17. <View>
  18. <View style={{minHeight: $vht(80)}}>
  19. <Text style={styles.gstText}>{$t('charging.tipsRatesTax')}</Text>
  20. <Text style={styles.title}>{$t('charging.acChargers')} ({(stationInfo?.acConnector?.available ?? "0") + $t('charging.numberAvailable')})</Text>
  21. { stationInfo.acRates?.length > 0
  22. ? stationInfo.acRates.map((item, index) => {
  23. return (
  24. <View key={index} style={ChargeStyle.stationInfoView}>
  25. <Image
  26. style={ChargeStyle.infoIcon}
  27. source={TypeImage.AC}/>
  28. <View style={ChargeStyle.infoGroup}>
  29. <Text style={ChargeStyle.infoText}>{item.type}</Text>
  30. <Text style={ChargeStyle.infoTitle}>{$t('charging.labelType')}</Text>
  31. </View>
  32. <View style={ChargeStyle.infoGroup}>
  33. <Text style={ChargeStyle.infoText}>{item.rates}</Text>
  34. <Text style={ChargeStyle.infoTitle}>{$t('charging.labelRate')}</Text>
  35. </View>
  36. <View style={ChargeStyle.infoGroup}>
  37. <Text style={ChargeStyle.infoText}>{item.power}</Text>
  38. <Text style={ChargeStyle.infoTitle}>{$t('charging.labelPower')}</Text>
  39. </View>
  40. <View style={ChargeStyle.infoGroup}>
  41. { item?.connectorCount?.available > 0
  42. ? <Text style={[ChargeStyle.infoStatus, ChargeStyle.statusAvailable]}>{$t('charging.statusAvailable')}</Text>
  43. : <Text style={[ChargeStyle.infoStatus, ChargeStyle.statusUnavailable]}>{$t('charging.statusUnavailable')}</Text>
  44. }
  45. <Text style={ChargeStyle.infoTitle}>{$t('charging.labelStatus')}</Text>
  46. </View>
  47. </View>
  48. );
  49. })
  50. : <Text style={ui.noData}>{$t('charging.noRates')}</Text>
  51. }
  52. <Text style={styles.title}>{$t('charging.dcChargers')} ({(stationInfo?.dcConnector?.available ?? "0") + $t('charging.numberAvailable')})</Text>
  53. { stationInfo.dcRates?.length > 0
  54. ? stationInfo.dcRates.map((item, index) => {
  55. return (
  56. <View key={index} style={ChargeStyle.stationInfoView}>
  57. <Image
  58. style={ChargeStyle.infoIcon}
  59. source={TypeImage.DC}/>
  60. <View style={ChargeStyle.infoGroup}>
  61. <Text style={ChargeStyle.infoText}>{item.type}</Text>
  62. <Text style={ChargeStyle.infoTitle}>{$t('charging.labelType')}</Text>
  63. </View>
  64. <View style={ChargeStyle.infoGroup}>
  65. <Text style={ChargeStyle.infoText}>{item.rates}</Text>
  66. <Text style={ChargeStyle.infoTitle}>{$t('charging.labelRate')}</Text>
  67. </View>
  68. <View style={ChargeStyle.infoGroup}>
  69. <Text style={ChargeStyle.infoText}>{item.power}</Text>
  70. <Text style={ChargeStyle.infoTitle}>{$t('charging.labelPower')}</Text>
  71. </View>
  72. <View style={ChargeStyle.infoGroup}>
  73. { item?.connectorCount?.available > 0
  74. ? <Text style={[ChargeStyle.infoStatus, ChargeStyle.statusAvailable]}>{$t('charging.statusAvailable')}</Text>
  75. : <Text style={[ChargeStyle.infoStatus, ChargeStyle.statusUnavailable]}>{$t('charging.statusUnavailable')}</Text>
  76. }
  77. <Text style={ChargeStyle.infoTitle}>{$t('charging.labelStatus')}</Text>
  78. </View>
  79. </View>
  80. );
  81. })
  82. : <Text style={ui.noData}>{$t('charging.noRates')}</Text>
  83. }
  84. { isPrivate &&
  85. <View style={styles.privateView}>
  86. <Text style={styles.privateText}>{$t('charging.ratesPrivateNote')}</Text>
  87. </View>
  88. }
  89. </View>
  90. {/* <Payment refreshId={refreshId}/> */}
  91. { canIntoCharging
  92. ? <Button
  93. style={styles.buttonView}
  94. text={$t('charging.btnIntoCharging')}
  95. //disabled={available}
  96. onClick={onIntoCharging}/>
  97. : <View style={styles.buttonGroup}>
  98. <Button
  99. style={styles.buttonLeft}
  100. text={$t('charging.scanQR')}
  101. //disabled={available}
  102. onClick={() => {
  103. startPage(PageList.scanqr, {actionDetail: false, id: stationInfo?.id});
  104. }}/>
  105. <Button
  106. style={styles.buttonRight}
  107. text={$t('charging.enterStationId')}
  108. //disabled={available}
  109. onClick={onEnterStation}/>
  110. </View>
  111. }
  112. </View>
  113. );
  114. const styles = StyleSheet.create({
  115. gstText: {
  116. color: '#EF3340',
  117. fontSize: 16,
  118. paddingTop: 16,
  119. fontWeight: 'bold',
  120. textAlign: 'center'
  121. },
  122. title: {
  123. color: '#000',
  124. fontSize: 14,
  125. fontWeight: 'bold',
  126. paddingTop: 16,
  127. paddingBottom: 16
  128. },
  129. updateTip: {
  130. color: '#aaa',
  131. fontSize: 10,
  132. textAlign: 'center',
  133. paddingTop: 32,
  134. paddingBottom: 16
  135. },
  136. privateView: {
  137. height: $vht(25),
  138. alignItems: 'center',
  139. justifyContent: 'center'
  140. },
  141. privateText: {
  142. color: '#FA5759'
  143. },
  144. buttonGroup: {
  145. marginTop: 16,
  146. marginBottom: 16,
  147. alignItems: 'center',
  148. flexDirection: 'row'
  149. },
  150. buttonView: {
  151. marginTop: 16,
  152. marginBottom: 32
  153. },
  154. buttonLeft: {
  155. flex: 1,
  156. elevation: 1.5,
  157. },
  158. buttonRight: {
  159. flex: 1,
  160. marginLeft: 16,
  161. elevation: 1.5
  162. },
  163. })