You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
185 lines
4.5 KiB
185 lines
4.5 KiB
import { View, Text, TouchableOpacity, StyleSheet, TextInput } from "react-native"; |
|
import useCreateOrderStore from "../../store/createOrder"; |
|
import BackIcon from "../../components/BackIcon"; |
|
import { useNavigation } from "@react-navigation/native"; |
|
import { useState, useEffect } from "react"; |
|
|
|
export const PreviewOrder = () => { |
|
const {orderData, setOrderData} = useCreateOrderStore(); |
|
const navigation = useNavigation(); |
|
const [phoneNumber, setPhoneNumber] = useState(""); |
|
const [showPhoneInput, setShowPhoneInput] = useState(false); |
|
|
|
useEffect(() => { |
|
if (orderData?.payment_method === "Brainnel Pay(Mobile Money)") { |
|
setShowPhoneInput(true); |
|
} else { |
|
setShowPhoneInput(false); |
|
} |
|
}, [orderData?.payment_method]); |
|
|
|
const handleSubmit = () => { |
|
if (showPhoneInput && !phoneNumber) { |
|
// Show error or alert if needed |
|
console.log("Phone number is required for Mobile Money"); |
|
return; |
|
} |
|
|
|
if (showPhoneInput) { |
|
setOrderData({ ...orderData, mobile_money_phone: phoneNumber }); |
|
} |
|
|
|
console.log("orderData", orderData); |
|
// Add your submission logic here |
|
} |
|
|
|
return ( |
|
<View style={styles.container}> |
|
<View style={styles.titleContainer}> |
|
<View style={styles.backIconContainer}> |
|
<TouchableOpacity onPress={() => navigation.goBack()}> |
|
<BackIcon size={20} /> |
|
</TouchableOpacity> |
|
</View> |
|
|
|
<Text style={styles.titleHeading}>立即支付</Text> |
|
</View> |
|
|
|
{/* Payment Details */} |
|
<View style={styles.section}> |
|
|
|
{showPhoneInput && ( |
|
<View style={styles.phoneInputContainer}> |
|
<Text style={styles.phoneInputLabel}>请输入手机号码</Text> |
|
<TextInput |
|
style={styles.phoneInput} |
|
value={phoneNumber} |
|
onChangeText={setPhoneNumber} |
|
placeholder="输入手机号码" |
|
keyboardType="phone-pad" |
|
/> |
|
</View> |
|
)} |
|
</View> |
|
|
|
<View style={styles.submitButtonContainer}> |
|
<TouchableOpacity |
|
style={[ |
|
styles.primaryButtonStyle, |
|
(!showPhoneInput || (showPhoneInput && phoneNumber)) ? {} : styles.disabledButtonStyle |
|
]} |
|
onPress={handleSubmit} |
|
disabled={showPhoneInput && !phoneNumber} |
|
> |
|
<Text style={styles.buttonText}>提交</Text> |
|
</TouchableOpacity> |
|
</View> |
|
</View> |
|
); |
|
}; |
|
|
|
const styles = StyleSheet.create({ |
|
container: { |
|
flex: 1, |
|
backgroundColor: "white", |
|
}, |
|
submitButtonContainer: { |
|
paddingRight: 11, |
|
paddingLeft: 11, |
|
marginTop: 20, |
|
marginBottom: 20, |
|
}, |
|
primaryButtonStyle: { |
|
width: "100%", |
|
height: 50, |
|
justifyContent: "center", |
|
alignItems: "center", |
|
fontWeight: "600", |
|
fontSize: 16, |
|
lineHeight: 22, |
|
fontFamily: "PingFang SC", |
|
color: "white", |
|
backgroundColor: "#002fa7", |
|
borderWidth: 0, |
|
borderRadius: 25, |
|
}, |
|
buttonText: { |
|
color: "white", |
|
fontWeight: "600", |
|
fontSize: 16, |
|
lineHeight: 22, |
|
fontFamily: "PingFang SC", |
|
}, |
|
selectedCountryText: { |
|
padding: 0, |
|
margin: 0, |
|
fontWeight: "500", |
|
fontSize: 16, |
|
lineHeight: 22, |
|
fontFamily: "PingFang SC", |
|
color: "#646472", |
|
}, |
|
disabledButtonStyle: { |
|
backgroundColor: "#ccc", |
|
}, |
|
titleContainer: { |
|
width: "100%", |
|
padding: 15, |
|
flexDirection: "row", |
|
alignItems: "center", |
|
justifyContent: "center", |
|
position: "relative", |
|
backgroundColor: "#fff", |
|
|
|
}, |
|
backIconContainer: { |
|
position: "absolute", |
|
left: 15, |
|
backgroundColor: "#fff", |
|
|
|
}, |
|
titleHeading: { |
|
fontWeight: "600", |
|
fontSize: 20, |
|
lineHeight: 22, |
|
fontFamily: "PingFang SC", |
|
color: "black", |
|
|
|
}, |
|
// Order Summary Styles |
|
section: { |
|
backgroundColor: "#fff", |
|
borderRadius: 8, |
|
paddingHorizontal: 15, |
|
marginTop: 15, |
|
paddingVertical: 12, |
|
}, |
|
sectionTitle: { |
|
fontWeight: "600", |
|
fontSize: 16, |
|
marginBottom: 8, |
|
color: "#333", |
|
}, |
|
paymentMethod: { |
|
fontSize: 15, |
|
color: "#666", |
|
marginBottom: 10, |
|
}, |
|
phoneInputContainer: { |
|
marginTop: 10, |
|
marginBottom: 10, |
|
}, |
|
phoneInputLabel: { |
|
fontSize: 14, |
|
color: "#333", |
|
marginBottom: 5, |
|
}, |
|
phoneInput: { |
|
borderWidth: 1, |
|
borderColor: "#ccc", |
|
borderRadius: 8, |
|
padding: 10, |
|
fontSize: 16, |
|
backgroundColor: "#f9f9f9", |
|
}, |
|
});
|
|
|