|
|
|
|
import { View, Text, StyleSheet, TouchableOpacity } from "react-native";
|
|
|
|
|
import { useState } from "react";
|
|
|
|
|
import fontSize from "../../utils/fontsizeUtils";
|
|
|
|
|
import LocationPinIcon from "../../components/LocationPinIcon";
|
|
|
|
|
import { Picker } from "@react-native-picker/picker";
|
|
|
|
|
import { AddressDataItem,OrderData } from "../../services/api/orders";
|
|
|
|
|
|
|
|
|
|
export const ShippingFee = () => {
|
|
|
|
|
const [shippingMethod, setShippingMethod] = useState("sea");
|
|
|
|
|
const [warehouse, setWarehouse] = useState<number>();
|
|
|
|
|
const [freightForwarderAddress, setFreightForwarderAddress] =
|
|
|
|
|
useState<AddressDataItem>();
|
|
|
|
|
const [orderData, setOrderData] = useState<OrderData>();
|
|
|
|
|
const changeCountryHandel = async (value: number) => {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<View style={styles.recipientFormContainer3}>
|
|
|
|
|
<View style={styles.recipientFormContainer1}>
|
|
|
|
|
<View style={styles.section}>
|
|
|
|
|
<View style={styles.sectionHeader}>
|
|
|
|
|
<Text style={styles.sectionIcon}>🚢</Text>
|
|
|
|
|
<Text style={styles.sectionTitle}>Shipping Method</Text>
|
|
|
|
|
</View>
|
|
|
|
|
<View style={styles.shippingOptions}>
|
|
|
|
|
{[
|
|
|
|
|
{
|
|
|
|
|
id: "sea",
|
|
|
|
|
label: "Sea Shipping",
|
|
|
|
|
icon: "🚢",
|
|
|
|
|
detail: "Economical",
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: "air",
|
|
|
|
|
label: "Air Shipping",
|
|
|
|
|
icon: "✈️",
|
|
|
|
|
detail: "Express",
|
|
|
|
|
},
|
|
|
|
|
].map((option, index) => (
|
|
|
|
|
<TouchableOpacity
|
|
|
|
|
key={option.id}
|
|
|
|
|
style={[
|
|
|
|
|
styles.shippingCard,
|
|
|
|
|
shippingMethod === option.id && styles.shippingCardSelected,
|
|
|
|
|
]}
|
|
|
|
|
onPress={() => {
|
|
|
|
|
setShippingMethod(option.id);
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
{index === 0 && (
|
|
|
|
|
<View style={styles.locationPin}>
|
|
|
|
|
<LocationPinIcon size={20} />
|
|
|
|
|
</View>
|
|
|
|
|
)}
|
|
|
|
|
<Text style={styles.shippingIcon}>{option.icon}</Text>
|
|
|
|
|
<Text style={styles.shippingLabel}>{option.label}</Text>
|
|
|
|
|
<Text style={styles.shippingDetail}>{option.detail}</Text>
|
|
|
|
|
</TouchableOpacity>
|
|
|
|
|
))}
|
|
|
|
|
</View>
|
|
|
|
|
</View>
|
|
|
|
|
|
|
|
|
|
<View style={styles.border}></View>
|
|
|
|
|
|
|
|
|
|
{/* Warehouse Selection */}
|
|
|
|
|
<View style={styles.section}>
|
|
|
|
|
<View style={styles.sectionHeader}>
|
|
|
|
|
<Text style={styles.sectionIcon}>🏭</Text>
|
|
|
|
|
<Text style={styles.sectionTitle}>Delivery Warehouse</Text>
|
|
|
|
|
</View>
|
|
|
|
|
<View style={{ marginTop: 12 }}>
|
|
|
|
|
<View style={styles.selectBox}>
|
|
|
|
|
<Text style={styles.selectLabel}>Select a warehouse:</Text>
|
|
|
|
|
<View style={styles.selectWrapper}>
|
|
|
|
|
<Picker
|
|
|
|
|
selectedValue={warehouse}
|
|
|
|
|
onValueChange={(value) => {
|
|
|
|
|
setWarehouse(value);
|
|
|
|
|
changeCountryHandel(value);
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
{freightForwarderAddress?.other_addresses.map(
|
|
|
|
|
(item, index) => (
|
|
|
|
|
<Picker.Item
|
|
|
|
|
label={item.country}
|
|
|
|
|
value={item.country_code}
|
|
|
|
|
key={index}
|
|
|
|
|
/>
|
|
|
|
|
)
|
|
|
|
|
)}
|
|
|
|
|
</Picker>
|
|
|
|
|
</View>
|
|
|
|
|
</View>
|
|
|
|
|
|
|
|
|
|
{warehouse && (
|
|
|
|
|
<View style={styles.shippingInfo}>
|
|
|
|
|
<Text style={styles.shippingInfoRow}>
|
|
|
|
|
<Text style={styles.shippingInfoLabel}>
|
|
|
|
|
Estimated Arrival:{" "}
|
|
|
|
|
</Text>
|
|
|
|
|
<Text style={{ flex: 1, textAlign: "left", marginLeft: 10 }}>
|
|
|
|
|
{shippingMethod === "sea"
|
|
|
|
|
? orderData?.shipping_fee_sea_time
|
|
|
|
|
: orderData?.shipping_fee_air_time}
|
|
|
|
|
</Text>
|
|
|
|
|
</Text>
|
|
|
|
|
|
|
|
|
|
<View style={styles.shippingInfoRow}>
|
|
|
|
|
<Text style={styles.shippingInfoLabel}>
|
|
|
|
|
International Fee:{" "}
|
|
|
|
|
</Text>
|
|
|
|
|
<Text
|
|
|
|
|
style={{
|
|
|
|
|
color: "#ff6000",
|
|
|
|
|
flex: 1,
|
|
|
|
|
textAlign: "left",
|
|
|
|
|
marginLeft: 10,
|
|
|
|
|
fontWeight: "600",
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
{shippingMethod === "sea"
|
|
|
|
|
? orderData?.shipping_fee_sea
|
|
|
|
|
: orderData?.shipping_fee_air}
|
|
|
|
|
</Text>
|
|
|
|
|
|
|
|
|
|
<Text style={{ color: "#ff6000" }}>(Cash on Delivery)</Text>
|
|
|
|
|
</View>
|
|
|
|
|
</View>
|
|
|
|
|
)}
|
|
|
|
|
</View>
|
|
|
|
|
</View>
|
|
|
|
|
</View>
|
|
|
|
|
</View>
|
|
|
|
|
);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const styles = StyleSheet.create({
|
|
|
|
|
section: {
|
|
|
|
|
backgroundColor: "#fff",
|
|
|
|
|
borderRadius: 8,
|
|
|
|
|
paddingLeft: 16,
|
|
|
|
|
paddingRight: 16,
|
|
|
|
|
},
|
|
|
|
|
sectionHeader: {
|
|
|
|
|
flexDirection: "row",
|
|
|
|
|
alignItems: "center",
|
|
|
|
|
paddingTop: 12,
|
|
|
|
|
paddingBottom: 12,
|
|
|
|
|
},
|
|
|
|
|
sectionIcon: { marginRight: 8, fontSize: fontSize(18) },
|
|
|
|
|
sectionTitle: { flex: 1, fontSize: fontSize(15), fontWeight: "500" },
|
|
|
|
|
sectionAction: {
|
|
|
|
|
color: "#ff6000",
|
|
|
|
|
fontSize: fontSize(13),
|
|
|
|
|
fontWeight: "500",
|
|
|
|
|
},
|
|
|
|
|
paymentOptions: {
|
|
|
|
|
marginTop: 12,
|
|
|
|
|
flexDirection: "column",
|
|
|
|
|
},
|
|
|
|
|
recipientInfo: {
|
|
|
|
|
backgroundColor: "#fff",
|
|
|
|
|
borderRadius: 8,
|
|
|
|
|
paddingHorizontal: 12,
|
|
|
|
|
paddingVertical: 12,
|
|
|
|
|
borderWidth: 1,
|
|
|
|
|
borderColor: "#ccc",
|
|
|
|
|
width: "100%",
|
|
|
|
|
marginBottom: 12,
|
|
|
|
|
flexDirection: "row",
|
|
|
|
|
alignItems: "center",
|
|
|
|
|
},
|
|
|
|
|
recipientInfoIcon: {
|
|
|
|
|
marginRight: 12,
|
|
|
|
|
},
|
|
|
|
|
recipientInfoText: {
|
|
|
|
|
flex: 1,
|
|
|
|
|
fontSize: fontSize(18),
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
addRecipient: {
|
|
|
|
|
borderWidth: 1,
|
|
|
|
|
borderColor: "#ccc",
|
|
|
|
|
padding: 12,
|
|
|
|
|
borderRadius: 6,
|
|
|
|
|
flexDirection: "row",
|
|
|
|
|
justifyContent: "center",
|
|
|
|
|
alignItems: "center",
|
|
|
|
|
backgroundColor: "#fff",
|
|
|
|
|
},
|
|
|
|
|
addRecipientIcon: {
|
|
|
|
|
fontSize: fontSize(20),
|
|
|
|
|
color: "#ff6000",
|
|
|
|
|
marginRight: 6,
|
|
|
|
|
},
|
|
|
|
|
addRecipientText: { fontSize: fontSize(14), color: "#666" },
|
|
|
|
|
|
|
|
|
|
shippingOptions: {
|
|
|
|
|
flexDirection: "row",
|
|
|
|
|
gap: 10,
|
|
|
|
|
justifyContent: "space-between",
|
|
|
|
|
marginTop: 12,
|
|
|
|
|
},
|
|
|
|
|
shippingCard: {
|
|
|
|
|
flex: 1,
|
|
|
|
|
alignItems: "center",
|
|
|
|
|
padding: 12,
|
|
|
|
|
borderRadius: 6,
|
|
|
|
|
borderWidth: 1,
|
|
|
|
|
borderColor: "#e0e0e0",
|
|
|
|
|
backgroundColor: "#fff",
|
|
|
|
|
},
|
|
|
|
|
shippingCardSelected: { borderColor: "#ff6000", backgroundColor: "#fff" },
|
|
|
|
|
locationPin: {
|
|
|
|
|
position: "absolute",
|
|
|
|
|
top: 8,
|
|
|
|
|
right: 8,
|
|
|
|
|
zIndex: 1,
|
|
|
|
|
},
|
|
|
|
|
shippingIcon: { fontSize: fontSize(22), marginBottom: 6 },
|
|
|
|
|
shippingLabel: { fontSize: fontSize(14), fontWeight: "500" },
|
|
|
|
|
shippingDetail: { fontSize: fontSize(12), color: "#888", marginTop: 3 },
|
|
|
|
|
recipientFormContainer3: {
|
|
|
|
|
flex: 1,
|
|
|
|
|
flexDirection: "column",
|
|
|
|
|
alignItems: "stretch",
|
|
|
|
|
justifyContent: "flex-start",
|
|
|
|
|
backgroundColor: "#fff",
|
|
|
|
|
},
|
|
|
|
|
recipientFormContainer1: {
|
|
|
|
|
width: "100%",
|
|
|
|
|
padding: 15,
|
|
|
|
|
paddingBottom: 32,
|
|
|
|
|
},
|
|
|
|
|
border: {
|
|
|
|
|
height: 6,
|
|
|
|
|
backgroundColor: "#f5f5f5",
|
|
|
|
|
marginTop: 12,
|
|
|
|
|
},
|
|
|
|
|
selectBox: { marginBottom: 12 },
|
|
|
|
|
selectLabel: { fontSize: fontSize(14), marginBottom: 6, color: "#666" },
|
|
|
|
|
selectWrapper: {
|
|
|
|
|
borderWidth: 1,
|
|
|
|
|
borderColor: "#ddd",
|
|
|
|
|
borderRadius: 6,
|
|
|
|
|
overflow: "hidden",
|
|
|
|
|
backgroundColor: "#fff",
|
|
|
|
|
},
|
|
|
|
|
shippingInfo: {
|
|
|
|
|
marginTop: 12,
|
|
|
|
|
padding: 12,
|
|
|
|
|
backgroundColor: "#f9f9f9",
|
|
|
|
|
borderRadius: 6,
|
|
|
|
|
},
|
|
|
|
|
shippingInfoRow: {
|
|
|
|
|
fontSize: fontSize(13),
|
|
|
|
|
marginBottom: 6,
|
|
|
|
|
color: "#333",
|
|
|
|
|
flexDirection: "row",
|
|
|
|
|
justifyContent: "space-between",
|
|
|
|
|
},
|
|
|
|
|
shippingInfoLabel: {
|
|
|
|
|
color: "#777",
|
|
|
|
|
fontWeight: "500",
|
|
|
|
|
fontSize: fontSize(13),
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
});
|