Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
AppUms_Lecturer
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
tungnq
AppUms_Lecturer
Commits
b20d3c80
Commit
b20d3c80
authored
Aug 18, 2025
by
tungnq
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
TODO: Đã hoàn thiện phần khung giao diện cơ bản của chi tiết sinh viên
parent
8afeceec
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
318 additions
and
23 deletions
+318
-23
StackNavigation.js
src/routers/StackNavigation.js
+2
-0
index.js
src/screens/academic_advisor/list_student/detail/index.js
+37
-2
style.js
src/screens/academic_advisor/list_student/detail/style.js
+64
-0
view.js
src/screens/academic_advisor/list_student/detail/view.js
+210
-17
view.js
src/screens/academic_advisor/list_student/view.js
+5
-4
No files found.
src/routers/StackNavigation.js
View file @
b20d3c80
...
@@ -8,6 +8,7 @@ import * as ScreenName from './ScreenNames';
...
@@ -8,6 +8,7 @@ import * as ScreenName from './ScreenNames';
import
NotificationAdd
from
'../screens/notification/add'
;
import
NotificationAdd
from
'../screens/notification/add'
;
import
ClassActivity
from
'../screens/academic_advisor'
;
import
ClassActivity
from
'../screens/academic_advisor'
;
import
ListStudentClass
from
'../screens/academic_advisor/list_student'
;
import
ListStudentClass
from
'../screens/academic_advisor/list_student'
;
import
DetailStudent
from
'../screens/academic_advisor/list_student/detail'
;
const
Stack
=
createStackNavigator
();
const
Stack
=
createStackNavigator
();
function
MyStack
(
props
)
{
function
MyStack
(
props
)
{
...
@@ -24,6 +25,7 @@ function MyStack(props) {
...
@@ -24,6 +25,7 @@ function MyStack(props) {
<
Stack
.
Screen
name
=
{
ScreenName
.
ADDNOTIFICATION
}
component
=
{
NotificationAdd
}
/
>
<
Stack
.
Screen
name
=
{
ScreenName
.
ADDNOTIFICATION
}
component
=
{
NotificationAdd
}
/
>
<
Stack
.
Screen
name
=
{
ScreenName
.
LISTACADEMICADVISOR
}
component
=
{
ClassActivity
}
/
>
<
Stack
.
Screen
name
=
{
ScreenName
.
LISTACADEMICADVISOR
}
component
=
{
ClassActivity
}
/
>
<
Stack
.
Screen
name
=
{
ScreenName
.
LISTSTUDENTCLASS
}
component
=
{
ListStudentClass
}
/
>
<
Stack
.
Screen
name
=
{
ScreenName
.
LISTSTUDENTCLASS
}
component
=
{
ListStudentClass
}
/
>
<
Stack
.
Screen
name
=
{
ScreenName
.
DETAILSTUDENT
}
component
=
{
DetailStudent
}
/
>
<
/Stack.Navigator
>
<
/Stack.Navigator
>
);
);
}
}
...
...
src/screens/academic_advisor/list_student/detail/index.js
View file @
b20d3c80
import
React
from
'react'
;
import
React
,
{
useState
}
from
'react'
;
import
{
Text
,
View
,
StyleSheet
}
from
'react-native'
;
import
{
Text
,
View
,
StyleSheet
}
from
'react-native'
;
import
DetailStudentView
from
'./view'
;
import
DetailStudentView
from
'./view'
;
const
DetailStudent
=
(
props
)
=>
{
const
DetailStudent
=
(
props
)
=>
{
const
[
student
,
setStudent
]
=
useState
({
name
:
'Nguyễn Minh Đức'
,
code_student
:
'2598671'
,
status
:
'Đang học'
,
date_student
:
'01/01/2000'
,
tele_phone
:
'0123456789'
,
gender
:
'Nam'
,
average_score
:
'8.5'
,
latest_semester_average_score
:
'8.5'
,
training_average_score
:
'100'
,
type
:[
{
id
:
1
,
name
:
'Chuẩn đầu ra NN'
,
status
:
true
,
},
{
id
:
2
,
name
:
'Chuẩn trình NN'
,
status
:
true
,
},
{
id
:
3
,
name
:
'Quá tiến độ học tập'
,
status
:
false
,
},
{
id
:
4
,
name
:
'Nợ học phí'
,
status
:
false
,
},
]
});
return
(
return
(
<
DetailStudentView
/>
<
DetailStudentView
student
=
{
student
}
/
>
);
);
};
};
...
...
src/screens/academic_advisor/list_student/detail/style.js
0 → 100644
View file @
b20d3c80
import
{
StyleSheet
,
Text
,
View
}
from
'react-native'
import
R
from
'../../../../assets/R'
const
styles
=
StyleSheet
.
create
({
container
:
{
flex
:
1
,
backgroundColor
:
R
.
colors
.
white
,
},
card
:{
borderRadius
:
10
,
padding
:
15
,
marginVertical
:
15
,
marginHorizontal
:
15
,
backgroundColor
:
R
.
colors
.
white
,
shadowColor
:
R
.
colors
.
black
,
shadowOffset
:{
width
:
0.5
,
height
:
2
},
shadowOpacity
:
Platform
.
OS
===
'ios'
?
0.25
:
1
,
shadowRadius
:
5
,
elevation
:
Platform
.
OS
===
'ios'
?
1
:
2
,
},
containerText
:{
flexDirection
:
'row'
,
alignItems
:
'center'
,
justifyContent
:
'center'
,
marginBottom
:
15
,
},
containerTextItemLeft
:{
flex
:
3
,
alignItems
:
'center'
,
justifyContent
:
'center'
,
},
containerTextItemRight
:{
flex
:
3
,
},
sizedBox
:{
flex
:
1
},
text
:{
fontSize
:
R
.
sizes
.
sm
,
fontFamily
:
R
.
fonts
.
fontMedium
,
fontWeight
:
'600'
,
color
:
R
.
colors
.
black
,
textAlign
:
'center'
,
},
containerSubText
:{
flexDirection
:
'row'
,
marginBottom
:
5
},
containerSubTextItemLeft
:{
},
containerSubTextItemRight
:{
},
textTitle
:{
fontSize
:
R
.
sizes
.
md
,
fontFamily
:
R
.
fonts
.
fontMedium
,
fontWeight
:
'600'
,
color
:
R
.
colors
.
blue
,
marginHorizontal
:
15
,
},
})
export
default
styles
src/screens/academic_advisor/list_student/detail/view.js
View file @
b20d3c80
import
React
from
'react'
;
import
React
from
'react'
;
import
{
Text
,
View
,
TouchableOpacity
,
StyleSheet
}
from
'react-native'
;
import
{
Text
,
const
DetailStudentView
=
(
props
)
=>
{
View
,
const
{
}
=
props
;
TouchableOpacity
,
StyleSheet
,
SafeAreaView
,
}
from
'react-native'
;
import
Header
from
'../../../../components/Header/Header'
;
import
R
from
'../../../../assets/R'
;
import
styles
from
'./style'
;
import
*
as
SCREENNAME
from
'../../../../routers/ScreenNames'
;
import
{
useNavigation
}
from
'@react-navigation/native'
;
import
VersionCheck
from
'../../../../components/VersionCheck'
;
const
DetailStudentView
=
props
=>
{
const
{
student
}
=
props
;
const
navigate
=
useNavigation
();
return
(
return
(
<
View
<
SafeAreaView
style
=
{
styles
.
container
}
>
style
=
{{
<
Header
title
=
{
'Nguyễn Minh Đức - 2598671'
}
isBack
/>
flex
:
1
,
<
View
style
=
{
styles
.
body
}
>
justifyContent
:
'center'
,
<
View
style
=
{
styles
.
card
}
>
alignItems
:
'center'
,
<
View
style
=
{
styles
.
containerText
}
>
}}
>
<
View
style
=
{
styles
.
containerTextItemLeft
}
>
<
TouchableOpacity
>
<
Text
style
=
{
styles
.
text
}
>
STC
TL
/
STC
CTDT
23
/
102
<
/Text
>
<
Text
>
DetailStudent
<
/Text
>
<
/View
>
<
/TouchableOpacity
>
<
View
style
=
{
styles
.
sizedBox
}
><
/View
>
<
/View
>
<
View
style
=
{
styles
.
containerTextItemRight
}
>
<
Text
style
=
{
styles
.
text
}
>
T
ì
nh
tr
ạ
ng
:
Đ
ang
h
ọ
c
<
/Text
>
<
/View
>
<
/View
>
{
/*Row 2*/
}
<
View
style
=
{
styles
.
containerSubText
}
>
<
View
style
=
{
styles
.
containerSubTextItemLeft
}
>
<
Text
style
=
{[
styles
.
text
]}
>
Ng
à
y
sinh
:
<
Text
style
=
{[
styles
.
text
,
{
fontFamily
:
R
.
fonts
.
fontRegular
,
fontWeight
:
'400'
},
]}
>
{
student
.
date_student
}
<
/Text
>
<
/Text
>
<
/View
>
<
View
style
=
{
styles
.
sizedBox
}
><
/View
>
<
View
style
=
{
styles
.
containerSubTextItemRight
}
>
<
Text
style
=
{[
styles
.
text
]}
>
SDT
:
<
Text
style
=
{[
styles
.
text
,
{
fontFamily
:
R
.
fonts
.
fontRegular
,
fontWeight
:
'400'
},
]}
>
{
student
.
tele_phone
}
<
/Text
>
<
/Text
>
<
/View
>
<
/View
>
{
/*Row 3*/
}
<
View
style
=
{
styles
.
containerSubText
}
>
<
View
style
=
{
styles
.
containerSubTextItemLeft
}
>
<
Text
style
=
{[
styles
.
text
]}
>
Gi
ớ
i
t
í
nh
:
<
Text
style
=
{[
styles
.
text
,
{
fontFamily
:
R
.
fonts
.
fontRegular
,
fontWeight
:
'400'
},
]}
>
{
student
.
gender
}
<
/Text
>
<
/Text
>
<
/View
>
<
View
style
=
{
styles
.
sizedBox
}
><
/View
>
<
View
style
=
{
styles
.
containerSubTextItemRight
}
>
<
Text
style
=
{[
styles
.
text
]}
>
Đ
i
ể
m
trung
b
ì
nh
:
<
Text
style
=
{[
styles
.
text
,
{
fontFamily
:
R
.
fonts
.
fontRegular
,
fontWeight
:
'400'
},
]}
>
{
student
.
average_score
}
<
/Text
>
<
/Text
>
<
/View
>
<
/View
>
{
/*Row 4*/
}
<
View
style
=
{
styles
.
containerSubText
}
>
<
View
style
=
{
styles
.
containerSubTextItemLeft
}
>
<
Text
style
=
{[
styles
.
text
]}
>
Đ
i
ể
m
TB
h
ọ
c
k
ì
g
ầ
n
nh
ấ
t
:
<
Text
style
=
{[
styles
.
text
,
{
fontFamily
:
R
.
fonts
.
fontRegular
,
fontWeight
:
'400'
},
]}
>
{
student
.
average_score
}
<
/Text
>
<
/Text
>
<
/View
>
<
/View
>
{
/*Row 5*/
}
<
View
style
=
{
styles
.
containerSubText
}
>
<
View
style
=
{
styles
.
containerSubTextItemLeft
}
>
<
Text
style
=
{[
styles
.
text
]}
>
Đ
i
ể
m
r
è
n
luy
ệ
n
TB
:
<
Text
style
=
{[
styles
.
text
,
{
fontFamily
:
R
.
fonts
.
fontRegular
,
fontWeight
:
'400'
},
]}
>
{
student
.
training_average_score
}
<
/Text
>
<
/Text
>
<
/View
>
<
/View
>
<
/View
>
<
Text
style
=
{
styles
.
textTitle
}
>
L
ị
ch
s
ử
t
ì
nh
tr
ạ
ng
c
ủ
a
sinh
vi
ê
n
<
/Text
>
<
View
style
=
{
styles
.
card
}
>
<
View
style
=
{
styles
.
containerText
}
>
<
View
style
=
{{
flex
:
4
}}
>
<
Text
style
=
{[
{
fontSize
:
R
.
sizes
.
sm
,
fontFamily
:
R
.
fonts
.
fontRegular
,
fontWeight
:
'400'
,
color
:
R
.
colors
.
black
,
},
]}
>
H
ọ
c
k
ỳ
2
,
N
ă
m
h
ọ
c
2024
<
/Text
>
<
/View
>
<
View
style
=
{{
flex
:
3
}}
>
<
Text
style
=
{[
{
fontSize
:
R
.
sizes
.
sm
,
fontFamily
:
R
.
fonts
.
fontRegular
,
fontWeight
:
'400'
,
color
:
R
.
colors
.
black
,
},
]}
>
T
ì
nh
tr
ạ
ng
:
Đ
ang
h
ọ
c
<
/Text
>
<
/View
>
<
/View
>
<
View
style
=
{
styles
.
containerText
}
>
<
View
style
=
{{
flex
:
4
}}
>
<
Text
style
=
{[
{
fontSize
:
R
.
sizes
.
sm
,
fontFamily
:
R
.
fonts
.
fontRegular
,
fontWeight
:
'400'
,
color
:
R
.
colors
.
black
,
},
]}
>
Ng
à
y
quy
ế
t
đị
nh
:
{
student
.
date_student
}
<
/Text
>
<
/View
>
<
/View
>
<
View
style
=
{
styles
.
containerText
}
>
<
View
style
=
{{
flex
:
4
}}
>
<
Text
style
=
{[
{
fontSize
:
R
.
sizes
.
sm
,
fontFamily
:
R
.
fonts
.
fontRegular
,
fontWeight
:
'400'
,
color
:
R
.
colors
.
black
,
},
]}
>
L
ý
do
:
{
student
.
date_student
}
<
/Text
>
<
/View
>
<
/View
>
<
View
style
=
{
styles
.
containerText
}
>
<
View
style
=
{{
flex
:
4
}}
>
<
Text
style
=
{[
{
fontSize
:
R
.
sizes
.
sm
,
fontFamily
:
R
.
fonts
.
fontRegular
,
fontWeight
:
'400'
,
color
:
R
.
colors
.
black
,
},
]}
>
Ghi
ch
ú
:
{
student
.
date_student
}
<
/Text
>
<
/View
>
<
/View
>
<
/View
>
<
/View
>
<
/SafeAreaView
>
);
);
};
};
export
default
DetailStudentView
;
export
default
DetailStudentView
;
const
styles
=
StyleSheet
.
create
({})
\ No newline at end of file
src/screens/academic_advisor/list_student/view.js
View file @
b20d3c80
...
@@ -3,20 +3,21 @@ import {
...
@@ -3,20 +3,21 @@ import {
Text
,
Text
,
View
,
View
,
TouchableOpacity
,
TouchableOpacity
,
StyleSheet
,
SafeAreaView
,
SafeAreaView
,
TextInput
,
TextInput
,
Image
,
Image
,
Platform
,
Platform
,
ScrollView
,
FlatList
,
FlatList
,
}
from
'react-native'
;
}
from
'react-native'
;
import
Header
from
'../../../components/Header/Header'
;
import
Header
from
'../../../components/Header/Header'
;
import
styles
from
'./style'
;
import
styles
from
'./style'
;
import
R
from
'../../../assets/R'
;
import
R
from
'../../../assets/R'
;
import
*
as
SCREENNAME
from
'../../../routers/ScreenNames'
;
import
{
useNavigation
}
from
'@react-navigation/native'
;
const
ListStudentView
=
props
=>
{
const
ListStudentView
=
props
=>
{
const
{
searchText
,
onSearchChange
,
filter
,
statusStats
}
=
props
;
const
{
searchText
,
onSearchChange
,
filter
,
statusStats
}
=
props
;
console
.
log
(
props
);
console
.
log
(
props
);
const
navigate
=
useNavigation
();
//Search
//Search
const
renderSearchBox
=
()
=>
{
const
renderSearchBox
=
()
=>
{
return
(
return
(
...
@@ -65,7 +66,7 @@ const ListStudentView = props => {
...
@@ -65,7 +66,7 @@ const ListStudentView = props => {
};
};
//List student
//List student
const
renderStudentItem
=
({
item
})
=>
{
const
renderStudentItem
=
({
item
,
onPress
})
=>
{
const
isLeftIcon
=
item
.
gender
===
'Nam'
;
const
isLeftIcon
=
item
.
gender
===
'Nam'
;
const
genderIcon
=
const
genderIcon
=
item
.
gender
===
'Nam'
?
R
.
images
.
icMale
:
R
.
images
.
icFemale
;
item
.
gender
===
'Nam'
?
R
.
images
.
icMale
:
R
.
images
.
icFemale
;
...
@@ -73,7 +74,7 @@ const ListStudentView = props => {
...
@@ -73,7 +74,7 @@ const ListStudentView = props => {
const
statusColor
=
getStatusColor
(
item
.
status
);
const
statusColor
=
getStatusColor
(
item
.
status
);
return
(
return
(
<
TouchableOpacity
style
=
{
styles
.
studentCard
}
>
<
TouchableOpacity
style
=
{
styles
.
studentCard
}
onPress
=
{()
=>
{
navigate
.
navigate
(
SCREENNAME
.
DETAILSTUDENT
)}}
>
<
View
style
=
{
styles
.
studentCardContent
}
>
<
View
style
=
{
styles
.
studentCardContent
}
>
<
View
style
=
{
styles
.
studentInfo
}
>
<
View
style
=
{
styles
.
studentInfo
}
>
{
/*Tên sinh viên*/
}
{
/*Tên sinh viên*/
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment