StepStartView.js 5.9 KB

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