Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
E
educationStu
Project
Project
Details
Activity
Releases
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
向伟
educationStu
Commits
337c8164
Commit
337c8164
authored
Jan 19, 2022
by
罗超
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
2
parent
92d2c7ad
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
435 additions
and
431 deletions
+435
-431
indexassembly.vue
src/pages/index/components/indexassembly.vue
+3
-3
courseList.vue
src/pages/study/courseList.vue
+6
-3
timeTable-item.vue
src/pages/timetable/timeTable-item.vue
+10
-2
timeTable.vue
src/pages/timetable/timeTable.vue
+392
-421
wordStudy.vue
src/pages/word/wordStudy.vue
+14
-2
date.js
src/utils/date.js
+10
-0
No files found.
src/pages/index/components/indexassembly.vue
View file @
337c8164
...
...
@@ -187,7 +187,9 @@
res
.
Data
.
Account
=
data
.
obj
.
phoneNum
;
uni
.
setStorageSync
(
"userInfo"
,
res
.
Data
);
Toast
.
success
(
"登录成功"
);
emit
(
'success'
)
setTimeout
(()
=>
{
emit
(
'success'
)
},
1000
)
data
.
showPhone
=
false
uni
.
showTabBar
()
}
else
{
...
...
@@ -198,13 +200,11 @@
}
uni
.
hideLoading
();
if
(
res
.
Data
.
Error
==
-
1
)
{
//如果没找到电话号码 就跳入登录
// setTimeout(() => {
// uni.reLaunch({
// url: '/pages/login/login'
// });
// }, 1000);
}
}
...
...
src/pages/study/courseList.vue
View file @
337c8164
...
...
@@ -107,14 +107,15 @@
</
style
>
<
template
>
<view
class=
"studyCourse"
>
<div
class=
"loading"
v-if=
"isShowLoad"
>
<van-loading
type=
"spinner"
color=
"#fff"
/>
</div>
<template
v-if=
"ChapterList.length>0"
>
<view
class=
"Course_Top"
>
<view
class=
"CourseBan"
>
《
{{
CourseName
}}
》
</view>
<view
class=
"CourseTotal"
v-if=
"TotalHours>0"
>
共
{{
TotalHours
}}
课
</view>
</view>
<div
class=
"loading"
v-if=
"isShowLoad"
>
<van-loading
type=
"spinner"
color=
"#fff"
/>
</div>
<view
class=
"Course_Bottom"
>
<view
class=
"Course_List"
v-for=
"(item,index) in ChapterList"
:key=
"index"
>
<view
class=
"CourseList_One"
@
click=
"getReview(index)"
>
...
...
@@ -216,6 +217,8 @@
x
.
isShow
=
false
})
}
}).
catch
(
err
=>
{
data
.
isShowLoad
=
false
;
});
},
getSpeed
(
score
)
{
...
...
src/pages/timetable/timeTable-item.vue
View file @
337c8164
...
...
@@ -6,7 +6,15 @@
:key=
"index"
>
<view
class=
"flex flex_start_center title-row"
>
<view
class=
"class-time"
>
{{
item
.
StartTime
}}
</view>
<view
class=
"class-time"
>
<view
class=
""
style=
"font-size: 22rpx;font-weight: 400;color: #111111;"
>
{{
data
.
DateMonth
}}
-
{{
data
.
DateDay
}}
</view>
<view
class=
""
>
{{
item
.
StartTime
}}
</view>
</view>
<view
class=
"circle"
></view>
<view
class=
"class-title one_line flex"
>
{{
data
.
ClassName
}}
...
...
@@ -65,7 +73,7 @@ import {
}
from
"vue"
;
export
default
{
name
:
""
,
props
:
{
data
:
Object
},
props
:
{
data
:
Object
},
components
:
{},
setup
(
props
)
{
let
methods
=
{
...
...
src/pages/timetable/timeTable.vue
View file @
337c8164
<
template
>
<view
class=
""
:style=
"
{ 'padding-top': `${statusBarHeight}px` }">
<view
style=
"height: 100rpx"
></view>
<view
class=
"navbar"
>
<van-nav-bar
title=
"课表"
fixed
title-class=
"navTitle"
>
<view
slot=
"left"
class=
"chooseDate flex flex_start_center"
>
<!--
<van-icon
<view
class=
""
:style=
"
{ 'padding-top': `${statusBarHeight}px` }">
<view
style=
"height: 100rpx"
></view>
<view
class=
"navbar"
>
<van-nav-bar
title=
"课表"
fixed
title-class=
"navTitle"
>
<view
slot=
"left"
class=
"chooseDate flex flex_start_center"
>
<!--
<van-icon
name=
"arrow-left"
size=
"36rpx"
style=
"margin-right: 10rpx"
@
click=
"back"
/>
-->
<view
@
click=
"showdatetime"
>
{{
currentDate
}}
</view>
</view>
</van-nav-bar>
</view>
<van-popup
:show=
"showPopup"
round
position=
"bottom"
custom-style=
"height: 50%"
@
close=
"onClose"
>
<van-datetime-picker
type=
"year-month"
:value=
"getCurrentDate"
@
cancel=
"onClose"
@
confirm=
"onConfirm"
/>
</van-popup>
<view
class=
"calendar flex flex_wrap"
>
<view
v-for=
"(item, index) in weekArr"
:key=
"index"
class=
"calendar-week-item no_shrink"
>
<view
class=
"calendar-week"
>
{{
item
}}
</view>
</view>
<view
v-for=
"(item, index) in sliceWeekArr"
:key=
"index"
class=
"calendar-item no_shrink"
v-if=
"!isShowAllDay"
>
<view
class=
"calendar-day flex flex_center_center"
ref=
"calendarDay"
@
click=
"calendarActive(item)"
v-show=
"item"
>
<view
class=
""
:class=
"
{ 'calendar-active': activeDay === item.day ,'calendar-leave':isLeave(item),'calendar-leave2':isLeave2(item)}" >
{{
item
.
day
}}
</view>
</view>
<view
class=
"isToday"
v-if=
"item.isToday === 1"
>
今天
</view>
<view
class=
"haveCourse"
v-if=
"getHaveCourse(item)"
></view>
</view>
<view
v-for=
"(item, index) in calendar"
:key=
"index"
class=
"calendar-item no_shrink"
v-if=
"isShowAllDay"
>
<view
class=
"calendar-day flex flex_center_center"
ref=
"calendarDay"
@
click=
"calendarActive(item), sliceWeek(item)"
v-show=
"item"
>
<view
class=
""
:class=
"
{ 'calendar-active': activeDay === item.day,'calendar-leave':isLeave(item),'calendar-leave2':isLeave2(item) }">
{{
item
.
day
}}
</view>
</view>
<view
class=
"isToday"
v-if=
"item.isToday === 1"
>
今天
</view>
<view
class=
"haveCourse"
v-if=
"getHaveCourse(item)"
></view>
</view>
<view
@
click=
"showdatetime"
>
{{
currentDate
}}
</view>
</view>
</van-nav-bar>
</view>
<van-popup
:show=
"showPopup"
round
position=
"bottom"
custom-style=
"height: 50%"
@
close=
"onClose"
>
<van-datetime-picker
type=
"year-month"
:value=
"getCurrentDate"
@
cancel=
"onClose"
@
confirm=
"onConfirm"
/>
</van-popup>
<view
class=
"calendar flex flex_wrap"
>
<view
v-for=
"(item, index) in weekArr"
:key=
"index"
class=
"calendar-week-item no_shrink"
>
<view
class=
"calendar-week"
>
{{
item
}}
</view>
</view>
<view
v-for=
"(item, index) in sliceWeekArr"
:key=
"index"
class=
"calendar-item no_shrink"
v-if=
"!isShowAllDay"
>
<view
class=
"calendar-day flex flex_center_center"
ref=
"calendarDay"
@
click=
"calendarActive(item)"
v-show=
"item"
>
<view
class=
""
:class=
"
{ 'calendar-active': activeDay === item.day ,'calendar-leave':isLeave(item),'calendar-leave2':isLeave2(item)}">
{{
item
.
day
}}
</view>
</view>
<view
class=
"isToday"
v-if=
"item.isToday === 1"
>
今天
</view>
<view
class=
"haveCourse"
v-if=
"getHaveCourse(item)"
></view>
</view>
<view
v-for=
"(item, index) in calendar"
:key=
"index"
class=
"calendar-item no_shrink"
v-if=
"isShowAllDay"
>
<view
class=
"calendar-day flex flex_center_center"
ref=
"calendarDay"
@
click=
"calendarActive(item), sliceWeek(item)"
v-show=
"item"
>
<view
class=
""
:class=
"
{ 'calendar-active': activeDay === item.day,'calendar-leave':isLeave(item),'calendar-leave2':isLeave2(item) }">
{{
item
.
day
}}
</view>
</view>
<view
class=
"isToday"
v-if=
"item.isToday === 1"
>
今天
</view>
<view
class=
"haveCourse"
v-if=
"getHaveCourse(item)"
></view>
</view>
<view
class=
"openorclose flex flex_center_center"
>
<van-divider
contentPosition=
"center"
style=
"width: 90%"
v-if=
"isShowAllDay"
>
<van-icon
name=
"arrow-up"
size=
"40rpx"
color=
"#0000ff"
@
click=
"changeCalendar"
/>
</van-divider>
<van-divider
contentPosition=
"center"
style=
"width: 90%"
v-if=
"!isShowAllDay"
>
<van-icon
name=
"arrow-down"
size=
"40rpx"
color=
"#0000ff"
@
click=
"changeCalendar"
/>
</van-divider>
</view>
</view>
<view
class=
"Timetable-box"
>
<view
class=
"flex flex_center_center"
v-if=
"loading"
>
<van-loading
size=
"48rpx"
type=
"spinner"
>
加载中...
</van-loading>
<view
class=
"openorclose flex flex_center_center"
>
<van-divider
contentPosition=
"center"
style=
"width: 90%"
v-if=
"isShowAllDay"
>
<van-icon
name=
"arrow-up"
size=
"40rpx"
color=
"#0000ff"
@
click=
"changeCalendar"
/>
</van-divider>
<van-divider
contentPosition=
"center"
style=
"width: 90%"
v-if=
"!isShowAllDay"
>
<van-icon
name=
"arrow-down"
size=
"40rpx"
color=
"#0000ff"
@
click=
"changeCalendar"
/>
</van-divider>
</view>
</view>
<view
class=
"Timetable-box"
>
<view
class=
"flex flex_center_center"
v-if=
"loading"
>
<van-loading
size=
"48rpx"
type=
"spinner"
>
加载中...
</van-loading>
</view>
<van-empty
description=
"暂无课程"
v-if=
"dataList.length === 0"
/>
<view
v-for=
"(item, index) in dataList"
:key=
"index"
v-if=
"dataList.length > 0"
>
<Item
:data=
"item"
/>
</view>
</view>
<van-empty
description=
"暂无课程"
v-if=
"dataList.length === 0"
/>
<view
v-for=
"(item, index) in dataList"
:key=
"index"
v-if=
"dataList.length > 0"
>
<Item
:data=
"item"
/>
</view>
</view>
<van-toast
id=
"van-toast"
/>
</view>
<van-toast
id=
"van-toast"
/>
</view>
</
template
>
<
script
>
import
Item
from
"./timeTable-item.vue"
;
import
{
ref
,
reactive
,
toRefs
,
toRef
,
getCurrentInstance
,
watch
,
computed
,
onMounted
,
nextTick
,
}
from
"vue"
;
import
{
getWeek
,
getToday
}
from
"../../utils/date.js"
;
import
{
getStundentPlanStatistical
}
from
"../../api/index"
;
export
default
{
name
:
""
,
props
:
{},
components
:
{
Item
},
setup
(
props
)
{
let
weekArr
=
[
"日"
,
"一"
,
"二"
,
"三"
,
"四"
,
"五"
,
"六"
];
//年月选择
let
currentDate
=
ref
(
0
);
currentDate
.
value
=
getToday
(
"y"
,
"m"
);
let
getCurrentDate
=
ref
(
0
);
getCurrentDate
.
value
=
new
Date
().
getTime
();
//弹出层
let
showPopup
=
ref
(
false
);
let
showdatetime
=
()
=>
{
showPopup
.
value
=
true
;
};
let
onClose
=
()
=>
{
showPopup
.
value
=
false
;
};
//选择月份
let
onConfirm
=
(
val
)
=>
{
showPopup
.
value
=
false
;
isShowAllDay
.
value
=
true
;
activeDay
.
value
=
1
;
let
curdate
=
new
Date
(
val
.
detail
);
getCurrentDate
.
value
=
val
.
detail
;
let
year
=
curdate
.
getFullYear
();
let
month
=
curdate
.
getMonth
()
<
9
?
"0"
+
(
curdate
.
getMonth
()
+
1
)
:
curdate
.
getMonth
()
+
1
currentDate
.
value
=
year
+
"-"
+
month
getcalendar
(
curdate
.
getFullYear
(),
curdate
.
getMonth
()
+
1
);
let
newArr
=
calendar
.
value
.
slice
(
emptyArr
.
length
,
calendar
.
value
.
length
);
sliceWeek
(
newArr
[
0
]);
data
.
msg
.
StartTime
=
currentDate
.
value
+
"-01"
;
data
.
msg
.
EndTime
=
currentDate
.
value
+
"-01"
;
that
.
getData
();
let
maxDay
=
new
Date
(
year
,
month
,
"0"
).
getDate
();
data
.
msg
.
EndTime
=
currentDate
.
value
+
'-'
+
maxDay
;
that
.
getAllData
()
};
//获取当月日历数组
let
calendar
=
ref
([]);
//默认选中
let
activeDay
=
ref
(
1
);
//切换选中日期
let
calendarActive
=
(
item
)
=>
{
let
d
=
item
.
$orig
?.
day
||
item
.
day
activeDay
.
value
=
d
;
let
day
=
d
<
10
?
"0"
+
d
:
d
;
data
.
msg
.
StartTime
=
currentDate
.
value
+
"-"
+
day
;
data
.
msg
.
EndTime
=
currentDate
.
value
+
"-"
+
day
;
that
.
getData
();
};
let
emptyArr
=
[];
//日历补空
let
getcalendar
=
(
y
,
m
)
=>
{
calendar
.
value
=
getWeek
(
y
,
m
);
emptyArr
.
length
=
calendar
.
value
[
0
].
week
;
if
(
calendar
.
value
[
0
].
week
>
0
)
{
emptyArr
.
fill
({
week
:
""
,
day
:
""
});
calendar
.
value
.
unshift
(...
emptyArr
);
}
};
//截取最近一周
let
isShowAllDay
=
ref
(
false
);
let
sliceWeekArr
=
ref
([]);
let
sliceWeek
=
(
item
)
=>
{
let
w
=
item
.
$orig
?.
week
||
item
.
week
let
d
=
item
.
$orig
?.
day
||
item
.
day
let
newArr
=
calendar
.
value
.
slice
(
emptyArr
.
length
,
calendar
.
value
.
length
);
let
s
=
d
-
(
w
+
1
)
<=
0
?
0
:
d
-
(
w
+
1
);
let
e
=
d
+
(
6
-
w
);
sliceWeekArr
.
value
=
newArr
.
slice
(
s
,
e
);
if
(
s
===
0
)
{
sliceWeekArr
.
value
.
unshift
(...
emptyArr
);
}
};
//切换日历展示模式
let
changeCalendar
=
()
=>
{
isShowAllDay
.
value
=
!
isShowAllDay
.
value
;
};
//-------------------上边日历部分---------------------------------------
let
data
=
reactive
({
msg
:
{
ClassId
:
0
,
StartTime
:
""
,
EndTime
:
""
,
},
statusBarHeight
:
0
,
dataList
:
[],
allData
:[],
loading
:
false
,
});
let
methods
=
{
// 获取当天数据
async
getData
()
{
data
.
loading
=
true
let
res
=
await
getStundentPlanStatistical
(
data
.
msg
);
data
.
loading
=
false
if
(
res
)
{
data
.
dataList
=
res
.
Data
;
}
},
//获取当月数据
async
getAllData
()
{
let
res
=
await
getStundentPlanStatistical
(
data
.
msg
);
if
(
res
)
{
data
.
allData
=
res
.
Data
;
}
},
jumpPage
(
url
)
{
uni
.
navigateTo
({
url
:
url
,
});
},
back
()
{
uni
.
navigateBack
();
},
getHaveCourse
(
item
){
let
date
=
currentDate
.
value
+
'-'
+
(
item
.
day
<
10
?
'0'
+
item
.
day
:
item
.
day
)
let
res
=
false
let
find
=
data
.
allData
.
find
((
e
)
=>
{
return
e
.
ClassDateStr
===
date
})
if
(
find
){
res
=
true
}
return
res
},
// 请假
isLeave
(
item
){
let
date
=
currentDate
.
value
+
'-'
+
(
item
.
day
<
10
?
'0'
+
item
.
day
:
item
.
day
)
let
res
=
false
let
find
=
data
.
allData
.
find
((
e
)
=>
{
return
e
.
ClassDateStr
===
date
})
if
(
find
){
let
res1
=
find
.
PlanTimeList
.
some
(
e
=>
{
return
e
.
IsLeave
===
1
&&
e
.
IsCheck
==
2
})
if
(
res1
){
res
=
true
}
}
return
res
},
// 缺勤
isLeave2
(
item
){
let
date
=
currentDate
.
value
+
'-'
+
(
item
.
day
<
10
?
'0'
+
item
.
day
:
item
.
day
)
let
res
=
false
let
find
=
data
.
allData
.
find
((
e
)
=>
{
return
e
.
ClassDateStr
===
date
})
if
(
find
){
let
res1
=
find
.
PlanTimeList
.
some
(
e
=>
{
return
e
.
IsCheck
===
1
})
if
(
res1
){
res
=
true
}
}
return
res
}
};
onMounted
(()
=>
{
getcalendar
(
new
Date
().
getFullYear
(),
new
Date
().
getMonth
()
+
1
);
let
today
=
calendar
.
value
.
find
((
e
)
=>
{
return
e
.
isToday
===
1
;
});
if
(
today
)
{
activeDay
.
value
=
today
.
day
;
}
sliceWeek
(
today
);
data
.
statusBarHeight
=
uni
.
getSystemInfoSync
().
statusBarHeight
;
});
let
that
=
methods
;
return
{
currentDate
,
getCurrentDate
,
showPopup
,
showdatetime
,
onClose
,
onConfirm
,
calendar
,
activeDay
,
calendarActive
,
weekArr
,
sliceWeekArr
,
sliceWeek
,
isShowAllDay
,
changeCalendar
,
...
toRefs
(
data
),
...
methods
,
};
},
onLoad
(
options
)
{
const
indexData
=
uni
.
getStorageSync
(
'indexData'
)
// this.msg.ClassId = JSON.parse(options.classId);
this
.
msg
.
ClassId
=
indexData
.
ClassId
this
.
msg
.
StartTime
=
getToday
();
this
.
msg
.
EndTime
=
getToday
();
if
(
this
.
$isLogin
()){
this
.
getAllData
()
this
.
getData
();
}
},
};
import
Item
from
"./timeTable-item.vue"
;
import
{
ref
,
reactive
,
toRefs
,
toRef
,
getCurrentInstance
,
watch
,
computed
,
onMounted
,
nextTick
,
}
from
"vue"
;
import
{
getWeek
,
getToday
,
getMonthMaxDay
,
}
from
"../../utils/date.js"
;
import
{
getStundentPlanStatistical
}
from
"../../api/index"
;
export
default
{
name
:
""
,
props
:
{},
components
:
{
Item
},
setup
(
props
)
{
let
weekArr
=
[
"日"
,
"一"
,
"二"
,
"三"
,
"四"
,
"五"
,
"六"
];
//年月选择
let
currentDate
=
ref
(
0
);
currentDate
.
value
=
getToday
(
"y"
,
"m"
);
let
getCurrentDate
=
ref
(
0
);
getCurrentDate
.
value
=
new
Date
().
getTime
();
//弹出层
let
showPopup
=
ref
(
false
);
let
showdatetime
=
()
=>
{
showPopup
.
value
=
true
;
};
let
onClose
=
()
=>
{
showPopup
.
value
=
false
;
};
//选择月份
let
onConfirm
=
(
val
)
=>
{
showPopup
.
value
=
false
;
isShowAllDay
.
value
=
true
;
activeDay
.
value
=
1
;
let
curdate
=
new
Date
(
val
.
detail
);
getCurrentDate
.
value
=
val
.
detail
;
let
year
=
curdate
.
getFullYear
();
let
month
=
curdate
.
getMonth
()
<
9
?
"0"
+
(
curdate
.
getMonth
()
+
1
)
:
curdate
.
getMonth
()
+
1
currentDate
.
value
=
year
+
"-"
+
month
getcalendar
(
curdate
.
getFullYear
(),
curdate
.
getMonth
()
+
1
);
let
newArr
=
calendar
.
value
.
slice
(
emptyArr
.
length
,
calendar
.
value
.
length
);
sliceWeek
(
newArr
[
0
]);
data
.
msg
.
EndTime
=
currentDate
.
value
+
'-'
+
getMonthMaxDay
(
year
,
month
);
that
.
getData
()
that
.
getAllData
()
};
//获取当月日历数组
let
calendar
=
ref
([]);
//默认选中
let
activeDay
=
ref
(
1
);
//切换选中日期
let
calendarActive
=
(
item
)
=>
{
let
d
=
item
.
$orig
?.
day
||
item
.
day
activeDay
.
value
=
d
;
let
day
=
d
<
10
?
"0"
+
d
:
d
;
data
.
msg
.
StartTime
=
currentDate
.
value
+
"-"
+
day
;
data
.
msg
.
EndTime
=
currentDate
.
value
+
"-"
+
day
;
that
.
getData
();
};
let
emptyArr
=
[];
//日历补空
let
getcalendar
=
(
y
,
m
)
=>
{
calendar
.
value
=
getWeek
(
y
,
m
);
emptyArr
.
length
=
calendar
.
value
[
0
].
week
;
if
(
calendar
.
value
[
0
].
week
>
0
)
{
emptyArr
.
fill
({
week
:
""
,
day
:
""
});
calendar
.
value
.
unshift
(...
emptyArr
);
}
};
//截取最近一周
let
isShowAllDay
=
ref
(
false
);
let
sliceWeekArr
=
ref
([]);
let
sliceWeek
=
(
item
)
=>
{
let
w
=
item
.
$orig
?.
week
||
item
.
week
let
d
=
item
.
$orig
?.
day
||
item
.
day
let
newArr
=
calendar
.
value
.
slice
(
emptyArr
.
length
,
calendar
.
value
.
length
);
let
s
=
d
-
(
w
+
1
)
<=
0
?
0
:
d
-
(
w
+
1
);
let
e
=
d
+
(
6
-
w
);
sliceWeekArr
.
value
=
newArr
.
slice
(
s
,
e
);
if
(
s
===
0
)
{
sliceWeekArr
.
value
.
unshift
(...
emptyArr
);
}
};
//切换日历展示模式
let
changeCalendar
=
()
=>
{
isShowAllDay
.
value
=
!
isShowAllDay
.
value
;
};
//-------------------上边日历部分---------------------------------------
let
data
=
reactive
({
msg
:
{
ClassId
:
0
,
StartTime
:
""
,
EndTime
:
""
,
},
statusBarHeight
:
0
,
dataList
:
[],
allData
:
[],
loading
:
false
,
});
let
methods
=
{
// 获取当天数据
async
getData
()
{
data
.
loading
=
true
let
res
=
await
getStundentPlanStatistical
(
data
.
msg
);
data
.
loading
=
false
if
(
res
)
{
data
.
dataList
=
res
.
Data
;
}
},
//获取当月数据
async
getAllData
()
{
let
res
=
await
getStundentPlanStatistical
(
data
.
msg
);
if
(
res
)
{
data
.
allData
=
res
.
Data
;
}
},
jumpPage
(
url
)
{
uni
.
navigateTo
({
url
:
url
,
});
},
back
()
{
uni
.
navigateBack
();
},
getHaveCourse
(
item
)
{
let
date
=
currentDate
.
value
+
'-'
+
(
item
.
day
<
10
?
'0'
+
item
.
day
:
item
.
day
)
let
res
=
false
let
find
=
data
.
allData
.
find
((
e
)
=>
{
return
e
.
ClassDateStr
===
date
})
if
(
find
)
{
res
=
true
}
return
res
},
// 请假
isLeave
(
item
)
{
let
date
=
currentDate
.
value
+
'-'
+
(
item
.
day
<
10
?
'0'
+
item
.
day
:
item
.
day
)
let
res
=
false
let
find
=
data
.
allData
.
find
((
e
)
=>
{
return
e
.
ClassDateStr
===
date
})
if
(
find
)
{
let
res1
=
find
.
PlanTimeList
.
some
(
e
=>
{
return
e
.
IsLeave
===
1
&&
e
.
IsCheck
==
2
})
if
(
res1
)
{
res
=
true
}
}
return
res
},
// 缺勤
isLeave2
(
item
)
{
let
date
=
currentDate
.
value
+
'-'
+
(
item
.
day
<
10
?
'0'
+
item
.
day
:
item
.
day
)
let
res
=
false
let
find
=
data
.
allData
.
find
((
e
)
=>
{
return
e
.
ClassDateStr
===
date
})
if
(
find
)
{
let
res1
=
find
.
PlanTimeList
.
some
(
e
=>
{
return
e
.
IsCheck
===
1
})
if
(
res1
)
{
res
=
true
}
}
return
res
}
};
onMounted
(()
=>
{
getcalendar
(
new
Date
().
getFullYear
(),
new
Date
().
getMonth
()
+
1
);
let
today
=
calendar
.
value
.
find
((
e
)
=>
{
return
e
.
isToday
===
1
;
});
if
(
today
)
{
activeDay
.
value
=
today
.
day
;
}
sliceWeek
(
today
);
data
.
statusBarHeight
=
uni
.
getSystemInfoSync
().
statusBarHeight
;
});
let
that
=
methods
;
return
{
currentDate
,
getCurrentDate
,
showPopup
,
showdatetime
,
onClose
,
onConfirm
,
calendar
,
activeDay
,
calendarActive
,
weekArr
,
sliceWeekArr
,
sliceWeek
,
isShowAllDay
,
changeCalendar
,
...
toRefs
(
data
),
...
methods
,
};
},
onShow
()
{
const
indexData
=
uni
.
getStorageSync
(
'indexData'
)
this
.
msg
.
ClassId
=
indexData
.
ClassId
this
.
msg
.
StartTime
=
getToday
(
'y'
,
'm'
)
+
'-01'
;
this
.
msg
.
EndTime
=
getToday
(
'y'
,
'm'
)
+
'-'
+
getMonthMaxDay
();
if
(
this
.
$isLogin
())
{
this
.
getData
()
this
.
getAllData
()
}
},
};
</
script
>
<
style
scoped
>
.chooseDate
{
font-size
:
24
rpx
;
font-family
:
PingFang
SC
;
font-weight
:
500
;
color
:
#111111
;
}
.chooseDate
{
font-size
:
24
rpx
;
font-family
:
PingFang
SC
;
font-weight
:
500
;
color
:
#111111
;
}
.calendar
{
width
:
690
rpx
;
/* height: 120rpx; */
background-color
:
#f5f6f7
;
border-radius
:
20
rpx
;
margin
:
0
auto
;
/* overflow-x: auto; */
margin-bottom
:
38
rpx
;
}
.calendar-week-item
{
width
:
98.5
rpx
;
height
:
60
rpx
;
font-size
:
24
rpx
;
font-family
:
PingFang
SC
;
font-weight
:
500
;
color
:
#111111
;
text-align
:
center
;
}
.calendar-item
{
width
:
98.5
rpx
;
height
:
80
rpx
;
text-align
:
center
;
position
:
relative
;
}
.calendar-week
{
height
:
60
rpx
;
font-size
:
24
rpx
;
font-family
:
PingFang
SC
;
font-weight
:
500
;
line-height
:
58
rpx
;
color
:
#999999
;
}
.calendar
{
width
:
690
rpx
;
/* height: 120rpx; */
background-color
:
#f5f6f7
;
border-radius
:
20
rpx
;
margin
:
0
auto
;
/* overflow-x: auto; */
margin-bottom
:
38
rpx
;
}
.calendar-day
{
/* height: 50rpx; */
font-size
:
24
rpx
;
font-family
:
PingFang
SC
;
font-weight
:
500
;
line-height
:
48
rpx
;
color
:
#111111
;
.calendar-week-item
{
width
:
98.5
rpx
;
height
:
60
rpx
;
font-size
:
24
rpx
;
font-family
:
PingFang
SC
;
font-weight
:
500
;
color
:
#111111
;
text-align
:
center
;
}
}
.calendar-item
{
width
:
98.5
rpx
;
height
:
80
rpx
;
text-align
:
center
;
position
:
relative
;
}
.isToday
{
font-size
:
18
rpx
;
font-family
:
PingFang
SC
;
font-weight
:
500
;
color
:
#999999
;
}
.calendar-week
{
height
:
60
rpx
;
font-size
:
24
rpx
;
font-family
:
PingFang
SC
;
font-weight
:
500
;
line-height
:
58
rpx
;
color
:
#999999
;
}
.calendar-active
{
width
:
50
rpx
;
height
:
50
rpx
;
background-color
:
rgba
(
0
,
0
,
255
,
0.9
)
!important
;
border-radius
:
50%
;
color
:
#FFFFFF
!important
;
}
.calendar-day
{
/* height: 50rpx; */
font-size
:
24
rpx
;
font-family
:
PingFang
SC
;
font-weight
:
500
;
line-height
:
48
rpx
;
color
:
#111111
;
}
.calendar-leave
{
width
:
50
rpx
;
height
:
50
rpx
;
background-color
:
#E6A23C
;
border-radius
:
50%
;
}
.calendar-leave2
{
width
:
50
rpx
;
height
:
50
rpx
;
background-color
:
#F56C6C
;
border-radius
:
50%
;
}
.isToday
{
font-size
:
18
rpx
;
font-family
:
PingFang
SC
;
font-weight
:
500
;
color
:
#999999
;
}
.calendar
.openorclose
{
margin-bottom
:
17
rpx
;
width
:
100%
;
}
.calendar-active
{
width
:
50
rpx
;
height
:
50
rpx
;
background-color
:
rgba
(
0
,
0
,
255
,
0.9
)
!important
;
border-radius
:
50%
;
color
:
#FFFFFF
!important
;
}
.calendar-leave
{
width
:
50
rpx
;
height
:
50
rpx
;
background-color
:
#E6A23C
;
border-radius
:
50%
;
}
.calendar-leave2
{
width
:
50
rpx
;
height
:
50
rpx
;
background-color
:
#F56C6C
;
border-radius
:
50%
;
}
.calendar
.openorclose
{
margin-bottom
:
17
rpx
;
width
:
100%
;
}
.Timetable-box
{
box-sizing
:
border-box
;
/* padding-left: 30rpx;
.Timetable-box
{
box-sizing
:
border-box
;
/* padding-left: 30rpx;
text-align: center; */
}
}
/
deep
/
.navTitle
{
font-size
:
32
rpx
;
font-family
:
PingFang
SC
;
font-weight
:
800
;
color
:
#111111
;
}
/
deep
/
.navTitle
{
font-size
:
32
rpx
;
font-family
:
PingFang
SC
;
font-weight
:
800
;
color
:
#111111
;
}
/
deep
/
.van-divider
{
margin
:
0
auto
;
}
.haveCourse
{
width
:
10
rpx
;
height
:
10
rpx
;
border-radius
:
50%
;
background-color
:
#FF0000
;
position
:
absolute
;
top
:
10
rpx
;
right
:
10
rpx
;
}
/
deep
/
.van-divider
{
margin
:
0
auto
;
}
.haveCourse
{
width
:
10
rpx
;
height
:
10
rpx
;
border-radius
:
50%
;
background-color
:
#FF0000
;
position
:
absolute
;
top
:
10
rpx
;
right
:
10
rpx
;
}
</
style
>
src/pages/word/wordStudy.vue
View file @
337c8164
<
template
>
<view
class=
"word"
>
<swiper
class=
"swiper"
next-margin=
"60rpx"
@
change=
"swiperChange"
:current=
"current"
>
<van-skeleton
title
row=
"10"
v-if=
"loading"
/>
<van-empty
description=
"暂无数据"
v-if=
"nodata"
/>
<swiper
class=
"swiper"
next-margin=
"60rpx"
@
change=
"swiperChange"
:current=
"current"
v-if=
"!loading&&!nodata"
>
<swiper-item
v-for=
"(item,index) in StudyList"
v-if=
"Type==2"
:key=
"index"
class=
"swiper-item"
>
<Pronunciation
:item=
"item"
:cur=
"index+1"
:total=
"StudyList.length"
></Pronunciation>
</swiper-item>
...
...
@@ -57,14 +59,24 @@
},
Type
:
1
,
//1复习 2 单词
TotalHours
:
0
,
CourseName
:
''
CourseName
:
''
,
loading
:
false
,
nodata
:
false
,
})
let
methods
=
{
getData
()
{
data
.
loading
=
true
proxy
.
$request
(
'/AppletWords/GetStudyWords'
,
data
.
msg
).
then
(
res
=>
{
data
.
loading
=
false
data
.
StudyList
=
res
.
Data
.
StudyList
data
.
ReviewList
=
res
.
Data
.
ReviewList
;
data
.
current
=
0
if
(
data
.
StudyList
.
length
===
0
&&
data
.
ReviewList
.
length
==
0
)
{
data
.
nodata
=
true
}
}).
catch
(
err
=>
{
data
.
loading
=
false
data
.
nodata
=
true
})
},
swiperChange
(
val
)
{
...
...
src/utils/date.js
View file @
337c8164
...
...
@@ -24,6 +24,16 @@ export let getWeek = (year, month) => {
return
arr
}
export
let
getMonthMaxDay
=
(
y
,
m
)
=>
{
let
maxDay
=
30
if
(
y
&&
m
){
maxDay
=
new
Date
(
y
,
m
,
"0"
).
getDate
();
}
else
{
const
d
=
new
Date
()
maxDay
=
new
Date
(
d
.
getFullYear
(),
d
.
getMonth
()
+
1
,
0
).
getDate
();
}
return
maxDay
}
export
let
getToday
=
(
y
,
m
,
d
)
=>
{
let
date
=
new
Date
()
let
year
=
date
.
getFullYear
()
...
...
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