首页课程展示数据渲染

This commit is contained in:
禺狨 2023-03-24 13:56:39 +08:00
parent 0dc5c49ef8
commit 95732983f7
4 changed files with 77 additions and 21 deletions

View File

@ -56,6 +56,9 @@
font-weight: 400; font-weight: 400;
color: #ff4d4f; color: #ff4d4f;
line-height: 24px; line-height: 24px;
display: flex;
align-items: center;
justify-content: center;
} }
.active-type { .active-type {
width: 52px; width: 52px;
@ -66,6 +69,9 @@
font-weight: 400; font-weight: 400;
color: #ff9900; color: #ff9900;
line-height: 24px; line-height: 24px;
display: flex;
align-items: center;
justify-content: center;
} }
} }
} }

View File

@ -40,12 +40,14 @@
display: flex; display: flex;
align-items: center; align-items: center;
.info-item { .info-item {
width: 216px; width: auto;
text-align: left;
font-size: 16px; font-size: 16px;
font-weight: 600; font-weight: 600;
color: rgba(0, 0, 0, 0.45); color: rgba(0, 0, 0, 0.45);
line-height: 24px; line-height: 24px;
&:last-child {
margin-left: 50px;
}
strong { strong {
font-size: 20px; font-size: 20px;
color: rgba(0, 0, 0, 0.88); color: rgba(0, 0, 0, 0.88);

View File

@ -7,10 +7,13 @@ import { AnyIfEmpty, useSelector } from "react-redux";
import { CoursesModel } from "./compenents/courses-model"; import { CoursesModel } from "./compenents/courses-model";
import myLesoon from "../../assets/images/commen/icon-mylesoon.png"; import myLesoon from "../../assets/images/commen/icon-mylesoon.png";
import studyTime from "../../assets/images/commen/icon-studytime.png"; import studyTime from "../../assets/images/commen/icon-studytime.png";
import { studyTimeFormat } from "../../utils/index";
const IndexPage = () => { const IndexPage = () => {
const [tabKey, setTabKey] = useState(0); const [tabKey, setTabKey] = useState(0);
const [coursesList, setCoursesList] = useState<any>([]); const [coursesList, setCoursesList] = useState<any>([]);
const [learnCourseRecords, setLearnCourseRecords] = useState<any>({});
const [stats, setStats] = useState<any>({});
const departments = useSelector( const departments = useSelector(
(state: any) => state.loginUser.value.departments (state: any) => state.loginUser.value.departments
@ -18,12 +21,31 @@ const IndexPage = () => {
useEffect(() => { useEffect(() => {
getData(); getData();
}, [departments]); }, [tabKey]);
const getData = () => { const getData = () => {
user.courses(departments[0].id).then((res: any) => { user.courses(departments[0].id).then((res: any) => {
setCoursesList(res.data.courses); setStats(res.data.stats);
console.log(res.data.courses); setLearnCourseRecords(res.data.learn_course_records);
if (tabKey === 0) {
setCoursesList(res.data.courses);
} else if (tabKey === 1) {
const arr: any = [];
res.data.courses.map((item: any) => {
if (item.is_required === 1) {
arr.push(item);
}
});
setCoursesList(arr);
} else if (tabKey === 2) {
const arr: any = [];
res.data.courses.map((item: any) => {
if (item.is_required === 0) {
arr.push(item);
}
});
setCoursesList(arr);
}
}); });
}; };
@ -64,10 +86,14 @@ const IndexPage = () => {
</div> </div>
<div className={styles["info"]}> <div className={styles["info"]}>
<div className={styles["info-item"]}> <div className={styles["info-item"]}>
<strong>3 </strong>/ 10 <span></span>
<strong> {stats.required_finished_hour_count} </strong>
<span>/ {stats.required_hour_count}</span>
</div> </div>
<div className={styles["info-item"]}> <div className={styles["info-item"]}>
<strong>3 </strong>/ 10 <span></span>
<strong> {stats.nun_required_finished_hour_count} </strong>
<span>/ {stats.nun_required_hour_count}</span>
</div> </div>
</div> </div>
</div> </div>
@ -78,10 +104,39 @@ const IndexPage = () => {
</div> </div>
<div className={styles["info"]}> <div className={styles["info"]}>
<div className={styles["info-item"]}> <div className={styles["info-item"]}>
<strong>1</strong> <strong>23</strong>
{studyTimeFormat(stats.today_learn_duration)[0] !== 0 && (
<>
<strong>
{" "}
{studyTimeFormat(stats.today_learn_duration)[0]}{" "}
</strong>
</>
)}
<strong>
{" "}
{studyTimeFormat(stats.today_learn_duration)[1]}{" "}
</strong>
<strong>
{" "}
{studyTimeFormat(stats.today_learn_duration)[2]}{" "}
</strong>
</div> </div>
<div className={styles["info-item"]}> <div className={styles["info-item"]}>
<strong>24</strong> <strong>33</strong>
{studyTimeFormat(stats.learn_duration)[0] !== 0 && (
<>
<strong> {studyTimeFormat(stats.learn_duration)[0]} </strong>
</>
)}
<strong> {studyTimeFormat(stats.learn_duration || 0)[1]} </strong>
<strong> {studyTimeFormat(stats.learn_duration || 0)[2]} </strong>
</div> </div>
</div> </div>
</div> </div>
@ -97,7 +152,7 @@ const IndexPage = () => {
<CoursesModel <CoursesModel
title={item.title} title={item.title}
thumb={item.thumb} thumb={item.thumb}
isRequired={item.isRequired} isRequired={item.is_required}
progress={30} progress={30}
></CoursesModel> ></CoursesModel>
</div> </div>

View File

@ -18,17 +18,10 @@ export function dateFormat(dateStr: string) {
export function studyTimeFormat(dateStr: number) { export function studyTimeFormat(dateStr: number) {
var d = moment.duration(dateStr, "seconds"); var d = moment.duration(dateStr, "seconds");
let value = let value = [];
Math.floor(d.asDays()) + "天" + d.hours() + "时" + d.minutes() + "分"; value.push(Math.floor(d.asDays()));
value.push(d.hours());
if (Math.floor(d.asDays()) === 0) { value.push(d.minutes());
if (d.hours() === 0) {
value = d.minutes() + "分";
} else {
value = d.hours() + "时" + d.minutes() + "分";
}
}
return value; return value;
} }