| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- import { router } from 'expo-router';
- import { View, Text, ScrollView, Pressable, Image, Dimensions, StyleSheet, TextInput, Alert } from 'react-native';
- import { SafeAreaView } from 'react-native-safe-area-context';
- import { PreviousPageBlackSvg } from '../global/SVG';
- import NormalButton from '../global/normal_button';
- import { useEffect, useState } from 'react';
- import Checkbox from 'expo-checkbox';
- import useVehicleStore from '../../providers/vehicle_store';
- import { chargeStationService } from '../../service/chargeStationService';
- const AddVehiclePageComponent = () => {
- const [isChecked, setChecked] = useState(false);
- const [isLoading, setIsLoading] = useState(false);
- const { height: deviceHeight, width: deviceWidth } = Dimensions.get('window');
- const {
- vehicleBrand,
- vehicleModel,
- BrandID,
- ModelID,
- licensePlate,
- setVehicleBrand,
- setVehicleModel,
- setBrandID,
- setModelID,
- setLicensePlate
- } = useVehicleStore();
- const handleSubmit = async () => {
- setIsLoading(true);
- try {
- const result = await chargeStationService.addCar(licensePlate, BrandID, ModelID, isChecked);
- if (result) {
- router.push({
- pathname: 'addVehicleSuccessfulPage',
- params: { vehicleBrand: vehicleBrand, vehicleModel: vehicleModel }
- });
- } else {
- Alert.alert('新增車輛失敗', '請再試一次');
- }
- } catch (error) {
- console.log(error, 'unexpected');
- } finally {
- setIsLoading(false);
- }
- };
- return (
- <SafeAreaView className="flex-1 bg-white" edges={['top', 'right', 'left']}>
- <ScrollView showsVerticalScrollIndicator={false} className="flex-1 mx-[5%]">
- <View style={{ marginTop: 25 }}>
- <Pressable
- className="self-start"
- onPress={() => {
- if (router.canGoBack()) {
- router.back();
- } else {
- router.replace('/accountMainPage');
- }
- }}
- >
- <PreviousPageBlackSvg />
- </Pressable>
- <Text
- style={{
- fontSize: 30,
- marginTop: 25,
- marginBottom: 10
- }}
- >
- 新增車輛
- </Text>
- </View>
- <View
- style={{
- display: 'flex',
- flexDirection: 'column',
- gap: 10
- }}
- >
- <Pressable style={styles.button} onPress={() => router.push('setVehiclesOne')}>
- <TextInput
- style={styles.fakeTextInput}
- placeholder={vehicleBrand ? vehicleBrand : '車輛品牌'}
- editable={false}
- pointerEvents="none"
- ></TextInput>
- <TextInput
- style={styles.fakeTextInput}
- placeholder={vehicleModel ? vehicleModel : '車輛型號'}
- editable={false}
- pointerEvents="none"
- ></TextInput>
- </Pressable>
- <TextInput
- style={styles.fakeTextInput}
- onChangeText={(e) => setLicensePlate(e.toUpperCase())}
- placeholder="點擊輸入車輛牌照號碼"
- autoCapitalize="characters"
- ></TextInput>
- </View>
- <View className="flex-row items-center">
- <Text className="mt-4 mb-4 text-lg">設置為預設車輛</Text>
- <Checkbox
- style={styles.checkbox}
- value={isChecked}
- onValueChange={setChecked}
- color={isChecked ? '#025c72' : undefined}
- />
- </View>
- <NormalButton
- title={
- <Text
- style={{
- fontWeight: '700',
- fontSize: 20,
- color: '#fff'
- }}
- >
- 新增
- </Text>
- }
- onPress={() => {
- handleSubmit();
- setVehicleBrand('');
- setVehicleModel('');
- setBrandID('');
- setModelID('');
- setLicensePlate('');
- router.push('addVehicleSuccessfulPage');
- }}
- />
- <Text> </Text>
- </ScrollView>
- </SafeAreaView>
- );
- };
- const styles = StyleSheet.create({
- button: { flex: 1, gap: 10, marginTop: 5 },
- fakeTextInput: {
- maxWidth: '100%',
- fontSize: 16,
- borderWidth: 1,
- padding: 20,
- borderRadius: 12,
- borderColor: '#bbbbbb'
- },
- checkbox: {
- margin: 8
- }
- });
- export default AddVehiclePageComponent;
|