import { router } from 'expo-router'; import { View, Text, ScrollView, Pressable, Image, Dimensions, StyleSheet, TextInput, Alert, ActivityIndicator } 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 DropdownSelect from '../global/dropdown_select'; import { chargeStationService } from '../../service/chargeStationService'; const chooseCarPageComponent = () => { const [isChecked, setChecked] = useState(false); const { height: deviceHeight, width: deviceWidth } = Dimensions.get('window'); const [brandNameDropdownOptions, setBrandNameDropdownOptions] = useState([]); const [isLoading, setIsLoading] = useState(false); const [licensePlate, setLicensePlate] = useState(''); const [selectedBrandID, setSelectedBrandID] = useState(''); const [selectedTypeID, setSelectedTypeID] = useState(''); const [caName, setCarName] = useState(''); // const [carImg, setCarImg] = useState(''); const [brandData, setBrandData] = useState([]); const [brandTypeDropdownOptions, setBrandTypeDropdownOptions] = useState([ { label: '車輛型號', value: '車輛型號' } ]); const handleSubmit = async () => { setIsLoading(true); try { const result = await chargeStationService.addCar(licensePlate, selectedBrandID, selectedTypeID, isChecked); if (result) { router.push({ pathname: 'addVehicleSuccessfulPage', params: { selectedTypeID: selectedTypeID } }); } else { Alert.alert('新增車輛失敗', '請再試一次'); } } catch (error) { console.log(error, 'unexpected'); } finally { setIsLoading(false); } }; useEffect(() => { const fetchData = async () => { try { const result = await chargeStationService.fetchCarBrand(); setBrandData(result.data); const brandInfo = result.data.map((item) => ({ name: item.name, id: item.id, img_url: item.img_url })); const brandName = brandInfo.map((item) => item.name); console.log(brandName); const brandNameDropdownOptions = brandInfo.map((item) => ({ label: item.name, value: item.id })); setBrandNameDropdownOptions(brandNameDropdownOptions); } catch (error) { console.log(error); } }; fetchData(); }, []); useEffect(() => { if (selectedBrandID) { const selectedBrand = brandData.find((brand) => brand.id === selectedBrandID); if (selectedBrand && selectedBrand.car_types) { const typeOptions = selectedBrand.car_types.map((carType) => ({ label: carType.name, value: carType.id })); setBrandTypeDropdownOptions(typeOptions); } else { setBrandTypeDropdownOptions([]); } } else { setBrandTypeDropdownOptions([]); } }, [selectedBrandID, brandData]); return ( { if (router.canGoBack()) { router.back(); } else { router.replace('/accountMainPage'); } }} > 新增車輛 { setSelectedBrandID(ID); console.log(ID); }} extendedStyle={{ borderWidth: 1, padding: 20, borderRadius: 12, borderColor: '#bbbbbb' }} /> setSelectedTypeID(carTypeID)} extendedStyle={{ borderWidth: 1, padding: 20, borderRadius: 12, borderColor: '#bbbbbb' }} /> { setLicensePlate(text.toUpperCase()); // console.log(licensePlate); }} value={licensePlate} placeholder="車輛牌照號碼" placeholderTextColor="#888" autoCapitalize="characters" /> 設置為預設車輛 {isLoading ? : '新增'} } onPress={() => { handleSubmit(); }} disabled={isLoading} /> ); }; const styles = StyleSheet.create({ button: { flex: 1, gap: 10, marginTop: 5 }, fakeTextInput: { fontSize: 16, borderWidth: 1, padding: 24, borderRadius: 12, borderColor: '#bbbbbb', color: '#888' }, checkbox: { margin: 8 } }); export default chooseCarPageComponent;