|
@@ -4,15 +4,297 @@
|
|
|
* @Date:2024-04-01 16:27:48
|
|
|
-->
|
|
|
<template>
|
|
|
- <div class="curriculumDetail"></div>
|
|
|
+ <div class="curriculumDetail">
|
|
|
+ <div class="close" @click="close"></div>
|
|
|
+ <div class="curriculumDetailCon">
|
|
|
+ <img class="imgMid" src="@/img/curriculum/mid.png" />
|
|
|
+ <div class="curriculumDetailBox">
|
|
|
+ <div class="teachingObjectives">
|
|
|
+ <div class="head">
|
|
|
+ <div class="leftTit">
|
|
|
+ <img src="@/img/curriculum/jxmb.png" />
|
|
|
+ <div>教学目标</div>
|
|
|
+ </div>
|
|
|
+ <div class="rightBtn">
|
|
|
+ <div>更换课件</div>
|
|
|
+ <img src="@/img/curriculum/jt1.png" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="content">
|
|
|
+ <ElScrollbar class="elScrollbar">
|
|
|
+ <div class="title" v-for="tit in title.split('\n')" :key="tit">{{ tit }}</div>
|
|
|
+ </ElScrollbar>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="curriculumDetailBox">
|
|
|
+ <div class="knowledgePoints">
|
|
|
+ <div class="head">
|
|
|
+ <div class="points">
|
|
|
+ <img src="@/img/curriculum/zsd.png" />
|
|
|
+ <div>知识点</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="content">
|
|
|
+ <ElScrollbar class="elScrollbar">
|
|
|
+ <courseCollapse :courseList="data" />
|
|
|
+ </ElScrollbar>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="curriculumStart">
|
|
|
+ <div class="startBtn">开始上课</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</template>
|
|
|
|
|
|
-<script setup lang="ts"></script>
|
|
|
+<script setup lang="ts">
|
|
|
+import courseCollapse from "./components/courseCollapse"
|
|
|
+const props = defineProps<{
|
|
|
+ modalData: {
|
|
|
+ id: string
|
|
|
+ }
|
|
|
+}>()
|
|
|
+const emits = defineEmits<{
|
|
|
+ (e: "onClose"): void
|
|
|
+}>()
|
|
|
+
|
|
|
+function close() {
|
|
|
+ emits("onClose")
|
|
|
+}
|
|
|
+
|
|
|
+const title =
|
|
|
+ "乐理:认识五线谱,音符时值,谱号等等\n律动:节奏感受\n节奏:节奏练习1\n课堂纪律\n乐器安装于拆卸\n乐器持拿\n乐器介绍\n腹式呼吸:腹部控制,慢吸慢吐,快吸快吐\n嘴型练习:四个步骤\n唇振练习:嘴型+气息"
|
|
|
+
|
|
|
+type materialListType = {
|
|
|
+ id: string
|
|
|
+ type: string
|
|
|
+ name: string
|
|
|
+}
|
|
|
+type courseListType = {
|
|
|
+ id: string
|
|
|
+ name: string
|
|
|
+ materialList: materialListType[] | null
|
|
|
+ children: courseListType | null
|
|
|
+}[]
|
|
|
+const data: courseListType = [
|
|
|
+ {
|
|
|
+ id: "2",
|
|
|
+ name: "乐理第222",
|
|
|
+ materialList: null,
|
|
|
+ children: [
|
|
|
+ {
|
|
|
+ id: "3",
|
|
|
+ name: "五线谱",
|
|
|
+ materialList: [
|
|
|
+ {
|
|
|
+ id: "2-1",
|
|
|
+ type: "VIDEO",
|
|
|
+ name: "第二课啊"
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: "3-1",
|
|
|
+ type: "VIDEO",
|
|
|
+ name: "第二课啊"
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ children: null
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: "1",
|
|
|
+ name: "乐理第一课前言",
|
|
|
+ materialList: [
|
|
|
+ {
|
|
|
+ id: "1-1",
|
|
|
+ type: "VIDEO",
|
|
|
+ name: "第一课啊"
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ children: null
|
|
|
+ }
|
|
|
+]
|
|
|
+</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
.curriculumDetail {
|
|
|
width: 100%;
|
|
|
height: 100%;
|
|
|
+ padding: 20px 20px 30px 20px;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ .close {
|
|
|
+ position: absolute;
|
|
|
+ top: -9px;
|
|
|
+ right: -9px;
|
|
|
+ width: 47px;
|
|
|
+ height: 49px;
|
|
|
+ cursor: pointer;
|
|
|
+ background: url("@/img/useDialogConfirm/close.png") no-repeat;
|
|
|
+ background-size: cover;
|
|
|
+ &:hover {
|
|
|
+ background: url("@/img/useDialogConfirm/closeHover.png") no-repeat;
|
|
|
+ background-size: cover;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .curriculumDetailCon {
|
|
|
+ flex-grow: 1;
|
|
|
+ overflow: hidden;
|
|
|
+ display: flex;
|
|
|
+ position: relative;
|
|
|
+ .imgMid {
|
|
|
+ width: 62px;
|
|
|
+ height: 470px;
|
|
|
+ position: absolute;
|
|
|
+ left: 50%;
|
|
|
+ top: 50%;
|
|
|
+ transform: translate(-50%, -50%);
|
|
|
+ z-index: 1;
|
|
|
+ }
|
|
|
+ .curriculumDetailBox {
|
|
|
+ width: 50%;
|
|
|
+ height: 100%;
|
|
|
+ background: #fff2e1;
|
|
|
+ border-radius: 35px;
|
|
|
+ padding: 10px;
|
|
|
+ overflow: hidden;
|
|
|
+ &:nth-child(3) {
|
|
|
+ margin-left: 10px;
|
|
|
+ }
|
|
|
+ .teachingObjectives,
|
|
|
+ .knowledgePoints {
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ background: #ffffff;
|
|
|
+ border-radius: 35px;
|
|
|
+ .content {
|
|
|
+ padding-top: 18px;
|
|
|
+ height: calc(100% - 57px);
|
|
|
+ & > :deep(.elScrollbar) {
|
|
|
+ .el-scrollbar__view {
|
|
|
+ width: 100%;
|
|
|
+ }
|
|
|
+ .el-scrollbar__wrap {
|
|
|
+ overflow-x: hidden;
|
|
|
+ }
|
|
|
+ .el-scrollbar__bar.is-vertical {
|
|
|
+ width: 4px;
|
|
|
+ right: 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .teachingObjectives {
|
|
|
+ padding: 16px 33px 20px;
|
|
|
+ .head {
|
|
|
+ width: 100%;
|
|
|
+ height: 57px;
|
|
|
+ background: #fff2e1;
|
|
|
+ border-radius: 12px;
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+ padding: 0 18px;
|
|
|
+ .leftTit {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ & > img {
|
|
|
+ width: 27px;
|
|
|
+ height: 27px;
|
|
|
+ }
|
|
|
+ & > div {
|
|
|
+ margin-left: 8px;
|
|
|
+ font-weight: 500;
|
|
|
+ font-size: 24px;
|
|
|
+ color: #333333;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .rightBtn {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ cursor: pointer;
|
|
|
+ &:hover {
|
|
|
+ opacity: $opacity-hover;
|
|
|
+ }
|
|
|
+ & > img {
|
|
|
+ margin-left: 4px;
|
|
|
+ width: 10px;
|
|
|
+ height: 17px;
|
|
|
+ }
|
|
|
+ & > div {
|
|
|
+ margin-left: 8px;
|
|
|
+ font-weight: 500;
|
|
|
+ font-size: 20px;
|
|
|
+ color: #f67146;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .title {
|
|
|
+ line-height: 34px;
|
|
|
+ font-weight: 400;
|
|
|
+ font-size: 18px;
|
|
|
+ color: #333333;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .knowledgePoints {
|
|
|
+ padding: 16px 0 20px 33px;
|
|
|
+ .head {
|
|
|
+ margin-right: 33px;
|
|
|
+ height: 57px;
|
|
|
+ background: #fff2e1;
|
|
|
+ border-radius: 12px;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ padding: 0 18px;
|
|
|
+ .points {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ & > img {
|
|
|
+ width: 28px;
|
|
|
+ height: 27px;
|
|
|
+ }
|
|
|
+ & > div {
|
|
|
+ margin-left: 8px;
|
|
|
+ font-weight: 500;
|
|
|
+ font-size: 24px;
|
|
|
+ color: #333333;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .content {
|
|
|
+ & > :deep(.elScrollbar) {
|
|
|
+ .el-scrollbar__view {
|
|
|
+ padding-right: 33px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .curriculumStart {
|
|
|
+ flex-shrink: 0;
|
|
|
+ padding-top: 20px;
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ .startBtn {
|
|
|
+ width: 363px;
|
|
|
+ height: 68px;
|
|
|
+ background: linear-gradient(180deg, #ffffff 0%, #ffdbc1 100%);
|
|
|
+ box-shadow: 4px 6px 0px 0px rgba(236, 102, 52, 0.45), inset 0px -8px 3px 0px rgba(254, 163, 138, 0.46);
|
|
|
+ border-radius: 41px;
|
|
|
+ font-weight: 500;
|
|
|
+ font-size: 24px;
|
|
|
+ color: #f67146;
|
|
|
+ line-height: 68px;
|
|
|
+ text-align: center;
|
|
|
+ cursor: pointer;
|
|
|
+ &:hover {
|
|
|
+ opacity: $opacity-hover;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
</style>
|
|
|
<style lang="scss">
|