From 44fc6848a80bc17bbf3aa3805638d5bc41fec152 Mon Sep 17 00:00:00 2001 From: MinhNN Date: Fri, 31 Oct 2025 23:55:39 +0700 Subject: [PATCH] update login, detail table in tripInfo --- app/auth/login.tsx | 51 ++++++++++++++++-- assets/images/logo.png | Bin 0 -> 17621 bytes assets/images/owner.png | Bin 0 -> 2876 bytes components/tripInfo/CrewListTable.tsx | 32 +++++++++-- components/tripInfo/NetListTable.tsx | 12 ++++- components/tripInfo/TripCostTable.tsx | 20 +++++++ .../tripInfo/style/CrewListTable.styles.ts | 9 ++++ .../tripInfo/style/NetListTable.styles.ts | 13 ++--- .../tripInfo/style/TripCostTable.styles.ts | 11 ++++ 9 files changed, 132 insertions(+), 16 deletions(-) create mode 100644 assets/images/logo.png create mode 100644 assets/images/owner.png diff --git a/app/auth/login.tsx b/app/auth/login.tsx index 474bb29..69a7983 100644 --- a/app/auth/login.tsx +++ b/app/auth/login.tsx @@ -10,9 +10,10 @@ import { } from "@/utils/storage"; import { parseJwtToken } from "@/utils/token"; import { useRouter } from "expo-router"; -import React, { useCallback, useEffect, useState } from "react"; +import { useCallback, useEffect, useState } from "react"; import { ActivityIndicator, + Image, KeyboardAvoidingView, Platform, ScrollView, @@ -74,7 +75,7 @@ export default function LoginScreen() { if (response?.data.token) { // Lưu token vào storage nếu cần (thêm logic này sau) console.log("Login Token "); - + await setStorageItem(TOKEN, response.data.token); console.log("Token:", response.data.token); router.replace("/(tabs)"); @@ -98,9 +99,23 @@ export default function LoginScreen() { {/* Header */} + {/* Logo */} + - SGW App + Hệ thống giám sát tàu cá + {/* Owner Logo */} + + + Đăng nhập để tiếp tục @@ -160,6 +175,13 @@ export default function LoginScreen() { Đăng ký ngay + + {/* Copyright */} + + + © {new Date().getFullYear()} - Sản phẩm của Mobifone + + @@ -181,8 +203,13 @@ const styles = StyleSheet.create({ marginBottom: 40, alignItems: "center", }, + logo: { + width: 120, + height: 120, + marginBottom: 20, + }, title: { - fontSize: 32, + fontSize: 28, fontWeight: "bold", marginBottom: 8, }, @@ -236,4 +263,20 @@ const styles = StyleSheet.create({ color: "#007AFF", fontWeight: "600", }, + ownerContainer: { + alignItems: "center", + }, + ownerLogo: { + width: 150, + height: 50, + }, + copyrightContainer: { + marginTop: 20, + alignItems: "center", + }, + copyrightText: { + fontSize: 12, + opacity: 0.6, + textAlign: "center", + }, }); diff --git a/assets/images/logo.png b/assets/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f6d5b8642f3878833e1fa1eb64ecfa4cee36547d GIT binary patch literal 17621 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 IM6N<$g4J;HPXGV_ literal 0 HcmV?d00001 diff --git a/assets/images/owner.png b/assets/images/owner.png new file mode 100644 index 0000000000000000000000000000000000000000..9c3deb88cb85c73458cbab8051d96c612e55986d GIT binary patch literal 2876 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 { setCollapsed((prev) => !prev); }; + const handleCrewPress = (crewId: string) => { + console.log("Crew ID:", crewId); + }; + return ( {/* Header toggle */} @@ -77,7 +87,9 @@ const CrewListTable: React.FC = () => { Mã định danh - Tên + + Tên + Chức vụ @@ -87,7 +99,12 @@ const CrewListTable: React.FC = () => { {data.map((item) => ( {item.maDinhDanh} - {item.ten} + handleCrewPress(item.id)} + > + {item.ten} + {item.chucVu} ))} @@ -109,7 +126,9 @@ const CrewListTable: React.FC = () => { Mã định danh - Tên + + Tên + Chức vụ @@ -119,7 +138,12 @@ const CrewListTable: React.FC = () => { {data.map((item) => ( {item.maDinhDanh} - {item.ten} + handleCrewPress(item.id)} + > + {item.ten} + {item.chucVu} ))} diff --git a/components/tripInfo/NetListTable.tsx b/components/tripInfo/NetListTable.tsx index 6e097f4..1e0146c 100644 --- a/components/tripInfo/NetListTable.tsx +++ b/components/tripInfo/NetListTable.tsx @@ -37,6 +37,10 @@ const NetListTable: React.FC = () => { setCollapsed((prev) => !prev); }; + const handleStatusPress = (id: string) => { + console.log(`ID mẻ lưới: ${id}`); + }; + return ( {/* Header toggle */} @@ -79,7 +83,9 @@ const NetListTable: React.FC = () => { {/* Cột Trạng thái */} - {item.trangThai} + handleStatusPress(item.id)}> + {item.trangThai} + ))} @@ -102,7 +108,9 @@ const NetListTable: React.FC = () => { {/* Cột Trạng thái */} - {item.trangThai} + handleStatusPress(item.id)}> + {item.trangThai} + ))} diff --git a/components/tripInfo/TripCostTable.tsx b/components/tripInfo/TripCostTable.tsx index cb1baaa..76f3caf 100644 --- a/components/tripInfo/TripCostTable.tsx +++ b/components/tripInfo/TripCostTable.tsx @@ -73,6 +73,10 @@ const TripCostTable: React.FC = () => { setCollapsed((prev) => !prev); }; + const handleViewDetail = () => { + console.log("View trip cost details"); + }; + return ( { {tongCong.toLocaleString()} + + {/* View Detail Button */} + + Xem chi tiết + @@ -170,6 +182,14 @@ const TripCostTable: React.FC = () => { {tongCong.toLocaleString()} + + {/* View Detail Button */} + + Xem chi tiết + ); diff --git a/components/tripInfo/style/CrewListTable.styles.ts b/components/tripInfo/style/CrewListTable.styles.ts index bdb971d..4288a48 100644 --- a/components/tripInfo/style/CrewListTable.styles.ts +++ b/components/tripInfo/style/CrewListTable.styles.ts @@ -47,6 +47,11 @@ export default StyleSheet.create({ color: "#111", textAlign: "center", }, + cellWrapper: { + flex: 1.5, + justifyContent: "center", + alignItems: "center", + }, left: { textAlign: "center", }, @@ -64,4 +69,8 @@ export default StyleSheet.create({ color: "#ff6600", fontWeight: "800", }, + linkText: { + color: "#007AFF", + textDecorationLine: "underline", + }, }); diff --git a/components/tripInfo/style/NetListTable.styles.ts b/components/tripInfo/style/NetListTable.styles.ts index fa2fd10..88b2911 100644 --- a/components/tripInfo/style/NetListTable.styles.ts +++ b/components/tripInfo/style/NetListTable.styles.ts @@ -4,13 +4,13 @@ export default StyleSheet.create({ container: { width: "100%", backgroundColor: "#fff", - borderRadius: 10, - padding: 12, + borderRadius: 12, + padding: 16, marginVertical: 10, borderWidth: 1, borderColor: "#eee", shadowColor: "#000", - shadowOpacity: 0.05, + shadowOpacity: 0.1, shadowRadius: 4, elevation: 1, }, @@ -34,7 +34,7 @@ export default StyleSheet.create({ justifyContent: "space-between", alignItems: "center", paddingVertical: 8, - borderBottomWidth: 0.6, + borderBottomWidth: 0.5, borderBottomColor: "#eee", }, tableHeader: { @@ -52,7 +52,7 @@ export default StyleSheet.create({ flex: 0.3, fontSize: 15, color: "#111", - textAlign: "left", + textAlign: "center", paddingLeft: 10, }, headerText: { @@ -72,6 +72,7 @@ export default StyleSheet.create({ }, statusText: { fontSize: 15, - color: "#111", + color: "#4a90e2", + textDecorationLine: "underline", }, }); diff --git a/components/tripInfo/style/TripCostTable.styles.ts b/components/tripInfo/style/TripCostTable.styles.ts index 4cdd26d..914ec10 100644 --- a/components/tripInfo/style/TripCostTable.styles.ts +++ b/components/tripInfo/style/TripCostTable.styles.ts @@ -56,6 +56,17 @@ const styles = StyleSheet.create({ color: "#ff6600", fontWeight: "700", }, + viewDetailButton: { + marginTop: 12, + paddingVertical: 8, + alignItems: "center", + }, + viewDetailText: { + color: "#007AFF", + fontSize: 15, + fontWeight: "600", + textDecorationLine: "underline", + }, }); export default styles;