upload 14/8
BIN
assets/images/icon-email.png
Normal file
|
After Width: | Height: | Size: 526 B |
BIN
assets/images/icon-locahost.png
Normal file
|
After Width: | Height: | Size: 956 B |
BIN
assets/images/icon-mohinh.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
assets/images/icon-showroom-gray.png
Normal file
|
After Width: | Height: | Size: 385 B |
BIN
assets/images/icon-tel.png
Normal file
|
After Width: | Height: | Size: 902 B |
BIN
assets/images/icon-times.png
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
assets/images/icon-vipham.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
assets/images/icon-web.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
assets/images/icon_store_gray.png
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
298
src/components/repair/BoxReview.tsx
Normal file
@@ -0,0 +1,298 @@
|
|||||||
|
import React, { useState } from "react";
|
||||||
|
import {
|
||||||
|
View,
|
||||||
|
Text,
|
||||||
|
StyleSheet,
|
||||||
|
FlatList,
|
||||||
|
Image,
|
||||||
|
TouchableOpacity,
|
||||||
|
ScrollView,
|
||||||
|
} from "react-native";
|
||||||
|
import { Ionicons } from "@expo/vector-icons";
|
||||||
|
import ReviewModal from "@components/product/FormReview";
|
||||||
|
|
||||||
|
const reviews = [
|
||||||
|
{
|
||||||
|
id: "1",
|
||||||
|
name: "Dino",
|
||||||
|
time: "10:00pm 20/02/2025",
|
||||||
|
title: "Laptop Gaming Asus ROG 16GB",
|
||||||
|
content:
|
||||||
|
"Lorem Ipsum is simply dummy text of the printing and typesetting industry.",
|
||||||
|
images: [
|
||||||
|
require("../../../assets/images/small-product-detail.png"),
|
||||||
|
require("../../../assets/images/small-product-detail.png"),
|
||||||
|
require("../../../assets/images/small-product-detail.png"),
|
||||||
|
],
|
||||||
|
star: 5,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "2",
|
||||||
|
name: "Dino",
|
||||||
|
time: "10:00pm 20/02/2025",
|
||||||
|
title: "Laptop Gaming Asus ROG 16GB",
|
||||||
|
content:
|
||||||
|
"Lorem Ipsum is simply dummy text of the printing and typesetting industry.",
|
||||||
|
images: [
|
||||||
|
require("../../../assets/images/small-product-detail.png"),
|
||||||
|
require("../../../assets/images/small-product-detail.png"),
|
||||||
|
],
|
||||||
|
star: 4,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const renderStars = (count: number) => {
|
||||||
|
return (
|
||||||
|
<View style={{ flexDirection: "row" }}>
|
||||||
|
{Array.from({ length: 5 }).map((_, index) => (
|
||||||
|
<Ionicons
|
||||||
|
key={index}
|
||||||
|
name="star"
|
||||||
|
size={16}
|
||||||
|
color={index < count ? "#ff7a00" : "#d9d9d9"}
|
||||||
|
/>
|
||||||
|
))}
|
||||||
|
</View>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
const ReviewSection = () => {
|
||||||
|
const [showReviewModal, setShowReviewModal] = useState(false);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<View style={styles.BoxReview}>
|
||||||
|
{/* Header */}
|
||||||
|
<View style={styles.header}>
|
||||||
|
<Text style={styles.headerTitle}>Đánh giá</Text>
|
||||||
|
</View>
|
||||||
|
|
||||||
|
<View style={styles.content}>
|
||||||
|
{/* Right */}
|
||||||
|
<View style={styles.right}>
|
||||||
|
<FlatList
|
||||||
|
data={reviews}
|
||||||
|
keyExtractor={(item) => item.id}
|
||||||
|
renderItem={({ item }) => (
|
||||||
|
<View style={styles.reviewItem}>
|
||||||
|
<View style={styles.avatarBox}>
|
||||||
|
<Image
|
||||||
|
source={require("../../../assets/images/avartar-review-1.png")}
|
||||||
|
style={styles.avatar}
|
||||||
|
/>
|
||||||
|
<View>
|
||||||
|
<View
|
||||||
|
style={{ flexDirection: "row", alignItems: "center" }}
|
||||||
|
>
|
||||||
|
<Text style={styles.name}>{item.name}</Text>
|
||||||
|
<Text style={styles.time}>{item.time}</Text>
|
||||||
|
</View>
|
||||||
|
<Text style={styles.star}>{renderStars(item.star)}</Text>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
|
||||||
|
<View style={styles.reviewContent}>
|
||||||
|
<Text style={styles.title}>{item.title}</Text>
|
||||||
|
<Text style={styles.contentText}>{item.content}</Text>
|
||||||
|
<View style={styles.imageList}>
|
||||||
|
{item.images.map((img, index) => (
|
||||||
|
<Image
|
||||||
|
key={index}
|
||||||
|
source={img}
|
||||||
|
style={styles.reviewImage}
|
||||||
|
/>
|
||||||
|
))}
|
||||||
|
</View>
|
||||||
|
<View style={styles.btnRow}>
|
||||||
|
<TouchableOpacity>
|
||||||
|
<Text style={styles.btnLink}>
|
||||||
|
Bình luận <Text style={styles.black}>(23)</Text>
|
||||||
|
</Text>
|
||||||
|
</TouchableOpacity>
|
||||||
|
<TouchableOpacity>
|
||||||
|
<Text style={styles.btnLink}>
|
||||||
|
Thích <Text style={styles.black}>(23)</Text>
|
||||||
|
</Text>
|
||||||
|
</TouchableOpacity>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
|
||||||
|
<TouchableOpacity
|
||||||
|
style={{
|
||||||
|
flexDirection: "row",
|
||||||
|
alignItems: "center",
|
||||||
|
justifyContent: "center",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Text style={styles.moreBtn}>
|
||||||
|
Xem thêm <Text style={styles.moreBold}>23</Text> bình luận khác
|
||||||
|
</Text>
|
||||||
|
<Ionicons
|
||||||
|
name="chevron-down"
|
||||||
|
style={{ marginLeft: 5 }}
|
||||||
|
size={16}
|
||||||
|
color="#FF7A00"
|
||||||
|
/>
|
||||||
|
</TouchableOpacity>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
const styles = StyleSheet.create({
|
||||||
|
BoxReview: {
|
||||||
|
padding: 10,
|
||||||
|
backgroundColor: "#fff",
|
||||||
|
marginTop: 20,
|
||||||
|
borderRadius: 8,
|
||||||
|
borderWidth: 1,
|
||||||
|
borderColor: "#D4D4D4",
|
||||||
|
},
|
||||||
|
header: {
|
||||||
|
flexDirection: "row",
|
||||||
|
justifyContent: "space-between",
|
||||||
|
borderBottomWidth: 1,
|
||||||
|
borderBottomColor: "#B1B1B1",
|
||||||
|
paddingBottom: 15,
|
||||||
|
},
|
||||||
|
headerTitle: {
|
||||||
|
fontSize: 16,
|
||||||
|
fontWeight: "bold",
|
||||||
|
},
|
||||||
|
sortBox: {
|
||||||
|
borderWidth: 1,
|
||||||
|
borderColor: "#B1B1B1",
|
||||||
|
paddingHorizontal: 10,
|
||||||
|
height: 45,
|
||||||
|
justifyContent: "center",
|
||||||
|
borderRadius: 4,
|
||||||
|
},
|
||||||
|
content: {
|
||||||
|
gap: 25,
|
||||||
|
marginTop: 20,
|
||||||
|
},
|
||||||
|
left: {
|
||||||
|
width: "100%",
|
||||||
|
},
|
||||||
|
totalReview: {
|
||||||
|
textAlign: "center",
|
||||||
|
fontSize: 22,
|
||||||
|
fontWeight: "bold",
|
||||||
|
paddingBottom: 5,
|
||||||
|
},
|
||||||
|
ratingRow: {
|
||||||
|
flexDirection: "row",
|
||||||
|
justifyContent: "center",
|
||||||
|
alignItems: "center",
|
||||||
|
marginBottom: 10,
|
||||||
|
},
|
||||||
|
star: {
|
||||||
|
fontSize: 16,
|
||||||
|
},
|
||||||
|
ratingText: {
|
||||||
|
marginLeft: 5,
|
||||||
|
fontSize: 16,
|
||||||
|
fontWeight: 700,
|
||||||
|
},
|
||||||
|
ratingBreakdown: {
|
||||||
|
borderTopWidth: 1,
|
||||||
|
borderTopColor: "#E4E4E4",
|
||||||
|
paddingTop: 10,
|
||||||
|
},
|
||||||
|
ratingLine: {
|
||||||
|
flexDirection: "row",
|
||||||
|
justifyContent: "space-between",
|
||||||
|
marginBottom: 10,
|
||||||
|
},
|
||||||
|
reviewBtnArea: {
|
||||||
|
borderTopWidth: 1,
|
||||||
|
borderTopColor: "#E4E4E4",
|
||||||
|
paddingTop: 10,
|
||||||
|
marginTop: 20,
|
||||||
|
},
|
||||||
|
reviewPrompt: {
|
||||||
|
textAlign: "center",
|
||||||
|
marginTop: 10,
|
||||||
|
},
|
||||||
|
reviewBtn: {
|
||||||
|
marginTop: 10,
|
||||||
|
height: 40,
|
||||||
|
backgroundColor: "#FF7A00",
|
||||||
|
justifyContent: "center",
|
||||||
|
alignItems: "center",
|
||||||
|
borderRadius: 4,
|
||||||
|
},
|
||||||
|
reviewBtnText: {
|
||||||
|
color: "#fff",
|
||||||
|
},
|
||||||
|
right: {
|
||||||
|
width: "100%",
|
||||||
|
},
|
||||||
|
reviewItem: {
|
||||||
|
marginBottom: 15,
|
||||||
|
paddingBottom: 15,
|
||||||
|
borderBottomWidth: 1,
|
||||||
|
borderBottomColor: "rgba(228, 228, 228, 1)",
|
||||||
|
},
|
||||||
|
avatarBox: {
|
||||||
|
flexDirection: "row",
|
||||||
|
alignContent: "center",
|
||||||
|
width: "100%",
|
||||||
|
alignItems: "center",
|
||||||
|
marginRight: 20,
|
||||||
|
},
|
||||||
|
avatar: {
|
||||||
|
width: 30,
|
||||||
|
height: 30,
|
||||||
|
borderRadius: 40,
|
||||||
|
marginRight: 10,
|
||||||
|
},
|
||||||
|
name: {
|
||||||
|
fontWeight: "bold",
|
||||||
|
marginRight: 10,
|
||||||
|
},
|
||||||
|
time: {
|
||||||
|
fontSize: 12,
|
||||||
|
textAlign: "center",
|
||||||
|
},
|
||||||
|
reviewContent: {
|
||||||
|
flex: 1,
|
||||||
|
},
|
||||||
|
title: {
|
||||||
|
fontWeight: "600",
|
||||||
|
marginBottom: 5,
|
||||||
|
},
|
||||||
|
contentText: {
|
||||||
|
marginBottom: 5,
|
||||||
|
},
|
||||||
|
imageList: {
|
||||||
|
flexDirection: "row",
|
||||||
|
marginBottom: 10,
|
||||||
|
},
|
||||||
|
reviewImage: {
|
||||||
|
width: 80,
|
||||||
|
height: 80,
|
||||||
|
marginRight: 10,
|
||||||
|
},
|
||||||
|
btnRow: {
|
||||||
|
flexDirection: "row",
|
||||||
|
},
|
||||||
|
btnLink: {
|
||||||
|
color: "#1877F2",
|
||||||
|
marginRight: 15,
|
||||||
|
},
|
||||||
|
black: {
|
||||||
|
color: "#000",
|
||||||
|
},
|
||||||
|
moreBtn: {
|
||||||
|
color: "#FF7A00",
|
||||||
|
},
|
||||||
|
moreBold: {
|
||||||
|
fontWeight: "bold",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
export default ReviewSection;
|
||||||
119
src/components/repair/CompanyInfo.tsx
Normal file
@@ -0,0 +1,119 @@
|
|||||||
|
import React from "react";
|
||||||
|
import { View, StyleSheet, Image, Text } from "react-native";
|
||||||
|
|
||||||
|
const CompanyInfo = () => {
|
||||||
|
const infoItems = [
|
||||||
|
{
|
||||||
|
icon: require("../../../assets/images/icon_store_gray.png"),
|
||||||
|
label: "Lĩnh vực",
|
||||||
|
value: "Chuyên sửa chữa PC, laptop, linh phụ kiện máy tính",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
icon: require("../../../assets/images/icon-mohinh.png"),
|
||||||
|
label: "Mô hình",
|
||||||
|
value: "Cá nhân",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
icon: require("../../../assets/images/icon-times.png"),
|
||||||
|
label: "Năm hoạt động",
|
||||||
|
value: "5 năm",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
icon: require("../../../assets/images/icon-locahost.png"),
|
||||||
|
label: "Địa chỉ",
|
||||||
|
value:
|
||||||
|
"Tầng 7, toà nhà số 198 Nguyễn Thị Minh Khai, phường 6, quận 3, TP. Hồ Chí Minh",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
icon: require("../../../assets/images/icon-vipham.png"),
|
||||||
|
label: "Phạm vi hoạt động",
|
||||||
|
value: "Tại cửa hàng / Bán kính quanh 20km",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
icon: require("../../../assets/images/icon-web.png"),
|
||||||
|
label: "Website",
|
||||||
|
value: "https://www.anphatpc.com.vn/",
|
||||||
|
isLink: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
icon: require("../../../assets/images/icon-tel.png"),
|
||||||
|
label: "Tel",
|
||||||
|
value: "1900 0323 0918 557 006",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
icon: require("../../../assets/images/icon-email.png"),
|
||||||
|
label: "Gmail",
|
||||||
|
value: "Giang@anphatpc.com.vn",
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
return (
|
||||||
|
<View style={styles.container}>
|
||||||
|
<Text style={styles.title}>Thông tin</Text>
|
||||||
|
<View style={styles.boxFlex}>
|
||||||
|
{infoItems.map((item, index) => (
|
||||||
|
<View key={index} style={styles.items}>
|
||||||
|
<View style={styles.infoRow}>
|
||||||
|
<Image source={item.icon} style={styles.icon} />
|
||||||
|
<Text style={styles.label}>{item.label}</Text>
|
||||||
|
</View>
|
||||||
|
<Text style={[styles.value, item.isLink && styles.linkValue]}>
|
||||||
|
{item.value}
|
||||||
|
</Text>
|
||||||
|
</View>
|
||||||
|
))}
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
export default CompanyInfo;
|
||||||
|
|
||||||
|
const styles = StyleSheet.create({
|
||||||
|
container: {
|
||||||
|
borderColor: "rgba(212, 212, 212, 1)",
|
||||||
|
borderRadius: 12,
|
||||||
|
borderWidth: 1,
|
||||||
|
marginTop: 9,
|
||||||
|
padding: 10,
|
||||||
|
backgroundColor: "#fff",
|
||||||
|
},
|
||||||
|
boxFlex: {},
|
||||||
|
items: {
|
||||||
|
flexDirection: "row",
|
||||||
|
gap: 10,
|
||||||
|
marginTop: 10,
|
||||||
|
},
|
||||||
|
title: {
|
||||||
|
fontSize: 16,
|
||||||
|
fontWeight: "700",
|
||||||
|
color: "rgba(0, 0, 0, 1)",
|
||||||
|
},
|
||||||
|
infoRow: {
|
||||||
|
width: 140,
|
||||||
|
flexDirection: "row",
|
||||||
|
alignItems: "center",
|
||||||
|
},
|
||||||
|
icon: {
|
||||||
|
width: 20,
|
||||||
|
height: 20,
|
||||||
|
marginRight: 6,
|
||||||
|
resizeMode: "contain",
|
||||||
|
},
|
||||||
|
label: {
|
||||||
|
fontSize: 13,
|
||||||
|
fontWeight: "400",
|
||||||
|
color: "#303030",
|
||||||
|
},
|
||||||
|
valueContainer: {
|
||||||
|
alignSelf: "stretch",
|
||||||
|
marginTop: 10,
|
||||||
|
},
|
||||||
|
value: {
|
||||||
|
fontSize: 13,
|
||||||
|
fontWeight: "400",
|
||||||
|
color: "#303030",
|
||||||
|
},
|
||||||
|
linkValue: {
|
||||||
|
color: "rgba(24, 119, 242, 1)",
|
||||||
|
},
|
||||||
|
});
|
||||||
@@ -34,7 +34,8 @@ export default ContactForm;
|
|||||||
|
|
||||||
const styles = StyleSheet.create({
|
const styles = StyleSheet.create({
|
||||||
container: {
|
container: {
|
||||||
marginTop: 56,
|
marginTop: 20,
|
||||||
|
marginBottom: 20,
|
||||||
},
|
},
|
||||||
headerSection: {
|
headerSection: {
|
||||||
position: "relative",
|
position: "relative",
|
||||||
@@ -71,6 +72,7 @@ const styles = StyleSheet.create({
|
|||||||
},
|
},
|
||||||
formSection: {
|
formSection: {
|
||||||
padding: 12,
|
padding: 12,
|
||||||
|
backgroundColor: "#fff",
|
||||||
},
|
},
|
||||||
inputField: {
|
inputField: {
|
||||||
borderWidth: 1,
|
borderWidth: 1,
|
||||||
|
|||||||
113
src/components/repair/ShowroomSection.tsx
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
import React from "react";
|
||||||
|
import { View, StyleSheet, Text, Image } from "react-native";
|
||||||
|
|
||||||
|
const ShowroomSection = () => {
|
||||||
|
return (
|
||||||
|
<View style={styles.container}>
|
||||||
|
<Text style={styles.title}>HỆ THỐNG SHOWROOM</Text>
|
||||||
|
<View style={styles.divider} />
|
||||||
|
<View style={styles.content}>
|
||||||
|
<View style={styles.itemShoroom}>
|
||||||
|
<Image
|
||||||
|
source={require("../../../assets/images/icon-showroom-gray.png")}
|
||||||
|
style={styles.showroomImage}
|
||||||
|
/>
|
||||||
|
<Text style={styles.addressList}>
|
||||||
|
Showroom 1: 49 Thái Hà - Đống Đa - Hà Nội
|
||||||
|
</Text>
|
||||||
|
</View>
|
||||||
|
<View style={styles.itemShoroom}>
|
||||||
|
<Image
|
||||||
|
source={require("../../../assets/images/icon-showroom-gray.png")}
|
||||||
|
style={styles.showroomImage}
|
||||||
|
/>
|
||||||
|
<Text style={styles.addressList}>
|
||||||
|
Showroom 2: 151 Lê Thanh Nghị - Hai Bà Trưng - Hà Nội
|
||||||
|
</Text>
|
||||||
|
</View>
|
||||||
|
<View style={styles.itemShoroom}>
|
||||||
|
<Image
|
||||||
|
source={require("../../../assets/images/icon-showroom-gray.png")}
|
||||||
|
style={styles.showroomImage}
|
||||||
|
/>
|
||||||
|
<Text style={styles.addressList}>
|
||||||
|
Showroom 3: 63 Trần Thái Tông - Cầu Giấy - Hà Nội
|
||||||
|
</Text>
|
||||||
|
</View>
|
||||||
|
<View style={styles.itemShoroom}>
|
||||||
|
<Image
|
||||||
|
source={require("../../../assets/images/icon-showroom-gray.png")}
|
||||||
|
style={styles.showroomImage}
|
||||||
|
/>
|
||||||
|
<Text style={styles.addressList}>
|
||||||
|
Showroom 4: 158 - 160 Lý Thường Kiệt - Quận 10 - TPHCM
|
||||||
|
</Text>
|
||||||
|
</View>
|
||||||
|
<View style={styles.itemShoroom}>
|
||||||
|
<Image
|
||||||
|
source={require("../../../assets/images/icon-showroom-gray.png")}
|
||||||
|
style={styles.showroomImage}
|
||||||
|
/>
|
||||||
|
<Text style={styles.addressList}>
|
||||||
|
Showroom 5: 330-332 Võ Văn Tần - P. 5 - Q. 3 - TPHCM
|
||||||
|
</Text>
|
||||||
|
</View>
|
||||||
|
<View style={styles.itemShoroom}>
|
||||||
|
<Image
|
||||||
|
source={require("../../../assets/images/icon-showroom-gray.png")}
|
||||||
|
style={styles.showroomImage}
|
||||||
|
/>
|
||||||
|
<Text style={styles.addressList}>
|
||||||
|
Showroom 6: Số 51 Trần Hưng Đạo - Đại Phúc - Bắc Ninh
|
||||||
|
</Text>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default ShowroomSection;
|
||||||
|
|
||||||
|
const styles = StyleSheet.create({
|
||||||
|
container: {
|
||||||
|
borderRadius: 12,
|
||||||
|
borderWidth: 1,
|
||||||
|
borderColor: "rgba(212, 212, 212, 1)",
|
||||||
|
padding: 10,
|
||||||
|
marginTop: 12,
|
||||||
|
backgroundColor: "#fff",
|
||||||
|
},
|
||||||
|
content: {},
|
||||||
|
title: {
|
||||||
|
fontSize: 14,
|
||||||
|
fontWeight: "700",
|
||||||
|
color: "rgba(0, 0, 0, 1)",
|
||||||
|
textTransform: "uppercase",
|
||||||
|
},
|
||||||
|
divider: {
|
||||||
|
height: 1,
|
||||||
|
backgroundColor: "#E3E3E3",
|
||||||
|
borderWidth: 1,
|
||||||
|
borderColor: "rgba(227, 227, 227, 1)",
|
||||||
|
marginTop: 15,
|
||||||
|
},
|
||||||
|
itemShoroom: {
|
||||||
|
flexDirection: "row",
|
||||||
|
alignItems: "center",
|
||||||
|
gap: 9,
|
||||||
|
marginTop: 10,
|
||||||
|
},
|
||||||
|
imageGrid: {
|
||||||
|
flexDirection: "column",
|
||||||
|
},
|
||||||
|
showroomImage: {
|
||||||
|
width: 20,
|
||||||
|
height: 20,
|
||||||
|
},
|
||||||
|
addressList: {
|
||||||
|
fontSize: 11,
|
||||||
|
fontWeight: "400",
|
||||||
|
color: "rgba(0, 0, 0, 1)",
|
||||||
|
flex: 1,
|
||||||
|
},
|
||||||
|
});
|
||||||
15
src/screens/question/HomeQuestion.tsx
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
import React, { useState } from "react";
|
||||||
|
import {
|
||||||
|
View,
|
||||||
|
Text,
|
||||||
|
TextInput,
|
||||||
|
TouchableOpacity,
|
||||||
|
ScrollView,
|
||||||
|
Image,
|
||||||
|
StyleSheet,
|
||||||
|
Dimensions,
|
||||||
|
ImageBackground,
|
||||||
|
} from "react-native";
|
||||||
|
import { useNavigation, NavigationProp } from "@react-navigation/native";
|
||||||
|
import AppLayout from "@layouts/AppLayout";
|
||||||
|
import { Ionicons } from "@expo/vector-icons";
|
||||||
@@ -13,9 +13,28 @@ import {
|
|||||||
import { useNavigation, NavigationProp } from "@react-navigation/native";
|
import { useNavigation, NavigationProp } from "@react-navigation/native";
|
||||||
import AppLayout from "@layouts/AppLayout";
|
import AppLayout from "@layouts/AppLayout";
|
||||||
import { Ionicons } from "@expo/vector-icons";
|
import { Ionicons } from "@expo/vector-icons";
|
||||||
|
import CompanyInfo from "@components/repair/CompanyInfo";
|
||||||
|
import BoxReview from "@components/repair/BoxReview";
|
||||||
|
import ShowroomSection from "@components/repair/ShowroomSection";
|
||||||
|
import ContactForm from "@components/repair/ContactForm";
|
||||||
|
|
||||||
const { width } = Dimensions.get("window");
|
const { width } = Dimensions.get("window");
|
||||||
|
|
||||||
|
const renderStars = (count: number) => {
|
||||||
|
return (
|
||||||
|
<View style={{ flexDirection: "row" }}>
|
||||||
|
{Array.from({ length: 5 }).map((_, index) => (
|
||||||
|
<Ionicons
|
||||||
|
key={index}
|
||||||
|
name="star"
|
||||||
|
size={14}
|
||||||
|
color={index < count ? "#ff7a00" : "#d9d9d9"}
|
||||||
|
/>
|
||||||
|
))}
|
||||||
|
</View>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
export default function DetailRepairAddress() {
|
export default function DetailRepairAddress() {
|
||||||
const navigation = useNavigation<NavigationProp<any>>();
|
const navigation = useNavigation<NavigationProp<any>>();
|
||||||
|
|
||||||
@@ -41,10 +60,68 @@ export default function DetailRepairAddress() {
|
|||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
|
|
||||||
<Text>Danh sách địa chỉ sửa chữa</Text>
|
<Text style={{ fontWeight: "bold" }}>Danh sách địa chỉ sửa chữa</Text>
|
||||||
<View>
|
<View style={styles.companyCard}>
|
||||||
<Image />
|
<Image
|
||||||
|
source={require("../../../assets/images/logo-anphat.png")}
|
||||||
|
style={styles.companyLogo}
|
||||||
|
/>
|
||||||
|
<View style={styles.companyInfo}>
|
||||||
|
<Text style={styles.companyName}>An Phát</Text>
|
||||||
|
<Text style={styles.companyFullName}>
|
||||||
|
CÔNG TY CỔ PHẦN THƯƠNG MẠI MÁY TÍNH AN PHÁT
|
||||||
|
</Text>
|
||||||
|
<View style={styles.ratingContainer}>
|
||||||
|
{renderStars(4)}
|
||||||
|
<Text style={styles.rating}>4.6/5</Text>
|
||||||
|
<Text style={styles.reviewCount}>(43 đánh giá)</Text>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
</View>
|
</View>
|
||||||
|
|
||||||
|
<View style={styles.companyDescription}>
|
||||||
|
<Text style={styles.titleCompany}>Giới thiệu</Text>
|
||||||
|
<View style={styles.dividerCompany} />
|
||||||
|
<Text style={styles.descriptionCompany}>
|
||||||
|
Thành lập vào ngày 29/03/2004, trải qua hai thập kỷ không ngừng
|
||||||
|
phát triển, An Phát Computer đã liên tục tăng trưởng, mở rộng thị
|
||||||
|
trường và trở thành một trong những doanh nghiệp hàng đầu trong
|
||||||
|
lĩnh vực bán buôn và bán lẻ các sản phẩm, thiết bị công nghệ thông
|
||||||
|
tin, thiết bị lưu trữ, thiết bị văn phòng.
|
||||||
|
{"\n"}
|
||||||
|
Năm 2024, An Phát Computer vinh dự kỷ niệm 20 năm thành lập, đánh
|
||||||
|
dấu chặng đường hai thập kỷ uy tín, cam kết không ngừng cải thiện
|
||||||
|
chất lượng dịch vụ, đem đến cho khách hàng những sản phẩm công
|
||||||
|
nghệ hi-end, hi-tech nhất thị trường.
|
||||||
|
{"\n\n"}
|
||||||
|
Xuyên suốt hành trình xây dựng và phát triển, tiêu chí "Uy tín" và
|
||||||
|
"Chuyên nghiệp" luôn được An Phát Computer đặt lên hàng đầu. Bên
|
||||||
|
cạnh đó, những sản phẩm chất lượng với mức giá cạnh tranh, dịch vụ
|
||||||
|
tư vấn tận tâm, chính sách bán hàng, bảo hành cùng đội ngũ cán bộ
|
||||||
|
nhân viên được đào tạo chuyên nghiệp cũng góp phần tạo ra những
|
||||||
|
giá trị đích thực, giúp cho An Phát Computer gặt hái được nhiều
|
||||||
|
thành công. Tới nay doanh nghiệp đã có 07 showroom bán hàng ở các
|
||||||
|
thành phố lớn tại Hà Nội, TP. Hồ Chí Minh, Bắc Ninh và 01 Trung
|
||||||
|
tâm phân phối & dự án. Đến các cửa hàng thuộc hệ thống An Phát
|
||||||
|
Computer, khách hàng luôn có được sự hài lòng với quy trình tư vấn
|
||||||
|
bài bản của nhân viên nhằm lựa chọn cho mình những sản phẩm ưng ý
|
||||||
|
nhất theo phương châm: "Mỗi khách hàng là một con người - một cá
|
||||||
|
thể riêng biệt, cần được tôn trọng, quan tâm và lắng nghe, thấu
|
||||||
|
hiểu và phục vụ một cách riêng biệt.".
|
||||||
|
</Text>
|
||||||
|
</View>
|
||||||
|
|
||||||
|
<CompanyInfo />
|
||||||
|
{/* thông tin công ty */}
|
||||||
|
|
||||||
|
<BoxReview />
|
||||||
|
{/* đánh giá */}
|
||||||
|
|
||||||
|
<ShowroomSection />
|
||||||
|
{/* showroom */}
|
||||||
|
|
||||||
|
<ContactForm />
|
||||||
|
{/* form liên hệ */}
|
||||||
</View>
|
</View>
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
</AppLayout>
|
</AppLayout>
|
||||||
@@ -54,7 +131,8 @@ export default function DetailRepairAddress() {
|
|||||||
const styles = StyleSheet.create({
|
const styles = StyleSheet.create({
|
||||||
container: {
|
container: {
|
||||||
paddingHorizontal: 10,
|
paddingHorizontal: 10,
|
||||||
backgroundColor: "#fff",
|
backgroundColor: "#F4F4F4",
|
||||||
|
marginBottom: 15,
|
||||||
},
|
},
|
||||||
breadcrumb: {
|
breadcrumb: {
|
||||||
flexDirection: "row",
|
flexDirection: "row",
|
||||||
@@ -77,4 +155,80 @@ const styles = StyleSheet.create({
|
|||||||
marginLeft: 12,
|
marginLeft: 12,
|
||||||
color: "#888",
|
color: "#888",
|
||||||
},
|
},
|
||||||
|
companyCard: {
|
||||||
|
flexDirection: "row",
|
||||||
|
alignItems: "flex-start",
|
||||||
|
gap: 12,
|
||||||
|
marginTop: 10,
|
||||||
|
},
|
||||||
|
companyLogo: {
|
||||||
|
width: 80,
|
||||||
|
height: 80,
|
||||||
|
resizeMode: "contain",
|
||||||
|
borderWidth: 1,
|
||||||
|
borderColor: "#D4D4D4",
|
||||||
|
borderRadius: 4,
|
||||||
|
padding: 10,
|
||||||
|
backgroundColor: "#fff",
|
||||||
|
},
|
||||||
|
companyInfo: {
|
||||||
|
flex: 1,
|
||||||
|
},
|
||||||
|
companyName: {
|
||||||
|
fontSize: 15,
|
||||||
|
fontWeight: "700",
|
||||||
|
color: "#303030",
|
||||||
|
},
|
||||||
|
companyFullName: {
|
||||||
|
fontSize: 15,
|
||||||
|
fontWeight: "700",
|
||||||
|
color: "#303030",
|
||||||
|
marginTop: 4,
|
||||||
|
},
|
||||||
|
ratingContainer: {
|
||||||
|
flexDirection: "row",
|
||||||
|
alignItems: "center",
|
||||||
|
gap: 6,
|
||||||
|
marginTop: 4,
|
||||||
|
},
|
||||||
|
rating: {
|
||||||
|
fontSize: 13,
|
||||||
|
fontWeight: "400",
|
||||||
|
color: "#303030",
|
||||||
|
},
|
||||||
|
reviewCount: {
|
||||||
|
fontSize: 13,
|
||||||
|
fontWeight: "400",
|
||||||
|
color: "#303030",
|
||||||
|
textDecorationLine: "underline",
|
||||||
|
},
|
||||||
|
companyDescription: {
|
||||||
|
borderRadius: 8,
|
||||||
|
borderWidth: 1,
|
||||||
|
borderColor: "rgba(212, 212, 212, 1)",
|
||||||
|
paddingVertical: 16,
|
||||||
|
paddingHorizontal: 1,
|
||||||
|
marginTop: 9,
|
||||||
|
backgroundColor: "#fff",
|
||||||
|
},
|
||||||
|
titleCompany: {
|
||||||
|
fontSize: 16,
|
||||||
|
fontWeight: "700",
|
||||||
|
color: "rgba(0, 0, 0, 1)",
|
||||||
|
marginLeft: 11,
|
||||||
|
},
|
||||||
|
dividerCompany: {
|
||||||
|
height: 1,
|
||||||
|
backgroundColor: "#E3E3E3",
|
||||||
|
borderWidth: 1,
|
||||||
|
borderColor: "rgba(227, 227, 227, 1)",
|
||||||
|
marginTop: 10,
|
||||||
|
},
|
||||||
|
descriptionCompany: {
|
||||||
|
fontSize: 13,
|
||||||
|
fontWeight: "400",
|
||||||
|
color: "rgba(0, 0, 0, 1)",
|
||||||
|
lineHeight: 18,
|
||||||
|
padding: 10,
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|||||||