新增课程详情

develoop
lijiaqi 4 months ago
parent e23009186e
commit f81777ec64
  1. 8455
      pnpm-lock.yaml
  2. 26
      src/api/courseChaptersApi.ts
  3. 238
      src/api/sectionApi.ts
  4. 12
      src/router/routers.ts
  5. 110
      src/views/course/CourseObjectives.vue
  6. 25
      src/views/course/basicCourseInformation.vue
  7. 117
      src/views/course/courseChapters.vue
  8. 292
      src/views/course/courseDetails.vue

File diff suppressed because it is too large Load Diff

@ -96,20 +96,20 @@ export const deleteCourse = (params: any) => {
// 获取详情
export const getCourseInfo = (params: any) => {
return request({
// <<<<<<< HEAD
// <<<<<<< HEAD
url: '/objective_contents/' + params.id,
method: 'get',
// // params
// =======
// <<<<<<< HEAD
// url: '/api/objective_contents/' + params.id,
// method: 'get',
// params,
// =======
// url: '/objective_contents/' + params.id,
// method: "get",
// // params
// >>>>>>> 1a620e19de970965f426e07348b1dbc4be900eaf
// >>>>>>> 991fa5ab08c56c84c5a276226f8fbc2ec78f859a
// // params
// =======
// <<<<<<< HEAD
// url: '/api/objective_contents/' + params.id,
// method: 'get',
// params,
// =======
// url: '/objective_contents/' + params.id,
// method: "get",
// // params
// >>>>>>> 1a620e19de970965f426e07348b1dbc4be900eaf
// >>>>>>> 991fa5ab08c56c84c5a276226f8fbc2ec78f859a
})
}

@ -1,151 +1,151 @@
import request from '@/utils/request'
/**
/**
* linkedlist
* @param {string} courseid courseid
* @returns
* 2fa0fd63262230639d2c45a3acd9045c
*/
export function getChapterApi(courseid: string) {
return request.get(`/chapter/aaa/${courseid}`);
return request.get(`/chapter/aaa/${courseid}`)
}
// 响应接口
export interface DeleteRes {
code: number;
data: boolean;
message: string;
code: number
data: boolean
message: string
}
/**
/**
*
* @param {string} id id
* @returns
* @returns
*/
export function deleteSectionApi(id: string): Promise<DeleteRes> {
return request.delete(`/chapter/${id}`);
return request.delete(`/chapter/${id}`)
}
// 响应接口
export interface GetByIdCourseVoRes {
code: number;
data: {
classhours: number;
credit: number;
description: string;
id: string;
img: string;
name: string;
objectContent: string;
teacher: string;
totalAssignHours: number;
totalHours: number;
totalKnow: number;
totalNotAssignHours: number;
totalchapter: number;
};
message: string;
}
/**
* id查询课程Vo版
* @param {string} id id
* @returns
*/
export function getByIdCourseVoApi(id: string): Promise<GetByIdCourseVoRes> {
return request.get(`/api/coursesteacher/getById/${id}`);
code: number
data: {
classhours: number
credit: number
description: string
id: string
img: string
name: string
objectContent: string
teacher: string
totalAssignHours: number
totalHours: number
totalKnow: number
totalNotAssignHours: number
totalchapter: number
}
message: string
}
/**
* id查询课程Vo版
* @param {string} id id
* @returns
*/
export function getByIdCourseVoApi(id: string): Promise<GetByIdCourseVoRes> {
return request.get(`/api/coursesteacher/getById/${id}`)
}
// 参数接口
// 参数接口
export interface AddChapterParams {
content?: string;
courseid?: string;
courseobjectivesid?: string;
createBy?: string;
createTime?: Record<string, unknown>;
id?: string;
name?: string;
num?: number;
numshow?: string;
onlinclasshours?: string;
pid?: string;
requirement?: string;
sysOrgCode?: string;
totalclasshours?: string;
updateBy?: string;
updateTime?: Record<string, unknown>;
zc?: string;
ziyuan?: string;
zywj?: string;
}
// 响应接口
export interface AddChapterRes {
code: number;
data: boolean;
message: string;
}
/**
*
* @param {object} params chapter
* @param {string} params.content
* @param {string} params.courseid
* @param {string} params.courseobjectivesid
* @param {string} params.createBy
* @param {object} params.createTime
* @param {string} params.id
* @param {string} params.name
* @param {number} params.num
* @param {string} params.numshow
* @param {string} params.onlinclasshours 线
* @param {string} params.pid
* @param {string} params.requirement
* @param {string} params.sysOrgCode
* @param {string} params.totalclasshours
* @param {string} params.updateBy
* @param {object} params.updateTime
* @param {string} params.zc
* @param {string} params.ziyuan
* @param {string} params.zywj
* @returns
*/
export function addChapterApi(params: AddChapterParams): Promise<AddChapterRes> {
return request.post(`/chapter/add`, params);
}
content?: string
courseid?: string
courseobjectivesid?: string
createBy?: string
createTime?: Record<string, unknown>
id?: string
name?: string
num?: number
numshow?: string
onlinclasshours?: string
pid?: string
requirement?: string
sysOrgCode?: string
totalclasshours?: string
updateBy?: string
updateTime?: Record<string, unknown>
zc?: string
ziyuan?: string
zywj?: string
}
// 响应接口
export interface AddChapterRes {
code: number
data: boolean
message: string
}
/**
*
* @param {object} params chapter
* @param {string} params.content
* @param {string} params.courseid
* @param {string} params.courseobjectivesid
* @param {string} params.createBy
* @param {object} params.createTime
* @param {string} params.id
* @param {string} params.name
* @param {number} params.num
* @param {string} params.numshow
* @param {string} params.onlinclasshours 线
* @param {string} params.pid
* @param {string} params.requirement
* @param {string} params.sysOrgCode
* @param {string} params.totalclasshours
* @param {string} params.updateBy
* @param {object} params.updateTime
* @param {string} params.zc
* @param {string} params.ziyuan
* @param {string} params.zywj
* @returns
*/
export function addChapterApi(
params: AddChapterParams,
): Promise<AddChapterRes> {
return request.post(`/chapter/add`, params)
}
// 参数接口
// 参数接口
export interface UpdateChapterParams {
content?: string;
courseid?: string;
courseobjectivesid?: string;
createBy?: string;
createTime?: Record<string, unknown>;
id?: string;
name?: string;
num?: number;
numshow?: string;
onlinclasshours?: string;
pid?: string;
requirement?: string;
sysOrgCode?: string;
totalclasshours?: string;
updateBy?: string;
updateTime?: Record<string, unknown>;
zc?: string;
ziyuan?: string;
zywj?: string;
content?: string
courseid?: string
courseobjectivesid?: string
createBy?: string
createTime?: Record<string, unknown>
id?: string
name?: string
num?: number
numshow?: string
onlinclasshours?: string
pid?: string
requirement?: string
sysOrgCode?: string
totalclasshours?: string
updateBy?: string
updateTime?: Record<string, unknown>
zc?: string
ziyuan?: string
zywj?: string
}
// 响应接口
export interface UpdateChapterRes {
code: number;
data: boolean;
message: string;
code: number
data: boolean
message: string
}
/**
/**
*
* @param {object} params chapter
* @param {string} params.content
@ -169,6 +169,8 @@ export interface UpdateChapterRes {
* @param {string} params.zywj
* @returns
*/
export function updateChapterApi(params: UpdateChapterParams): Promise<UpdateChapterRes> {
return request.put(`/chapter`, params);
}
export function updateChapterApi(
params: UpdateChapterParams,
): Promise<UpdateChapterRes> {
return request.put(`/chapter`, params)
}

@ -64,6 +64,16 @@ export const constantRoute: any = [
icon: 'Notebook',
},
},
{
path: '/curriculumCenter/courseDetails',
component: () => import('@/views/course/courseDetails.vue'),
name: 'CourseDetails',
meta: {
title: '课程详情',
hidden: false,
icon: 'Notebook',
},
},
{
path: '/curriculumCenter/CourseObjectives',
component: () => import('@/views/course/CourseObjectives.vue'),
@ -308,5 +318,5 @@ export const constantRoute: any = [
hidden: true,
icon: 'Notebook',
},
}
},
]

@ -114,7 +114,7 @@ const filterTarger = (target) => {
return res.label
}
const editdata = ref({ id: '', objectiveId:'' })
const editdata = ref({ id: '', objectiveId: '' })
//
const flog = ref(false)
const editBook = async (obj) => {
@ -161,7 +161,7 @@ const data = ref({})
const courseId = ref(0)
onMounted(async () => {
if (!Object.keys(route.query).length) {
return router.push('/curriculumCenter/basicCourseInformation')
return router.push('/curriculumCenter/CourseObjectives')
}
courseId.value = route.query.id
console.log(courseId.value)
@ -333,14 +333,13 @@ onMounted(async () => {
<template>
<div class="container">
<div class="leftContent">
<div class="topContent">
<!-- <div class="topContent">
<div class="title">| 课程总目标</div>
<div class="content1">
<textarea class="textarea" @change="textChange" v-model="text">
文本内容</textarea
>
文本内容</textarea>
</div>
</div>
</div> -->
<div class="footContent">
<div class="title">| 分目标雷达图</div>
<div class="content3">
@ -349,29 +348,23 @@ onMounted(async () => {
</div>
</div>
<div class="rightContent">
<div
class="title"
style="
<div class="title" style="
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 20px;
height: 60px;
"
>
<div class="left2">| 课程分目标</div>
">
<div class="left2">| 课程目标</div>
<div class="right2">
<!-- <el-button type="primary" @click="addBook">新增</el-button> -->
</div>
</div>
<div class="content2">
<el-scrollbar height="600px">
<el-scrollbar height="370px">
<ul class="objectLi">
<li
v-for="(item, index) in data.courseObjectivesTrees"
:key="item.id"
>
<li v-for="(item, index) in data.courseObjectivesTrees" :key="item.id">
<div class="courseObject">
<!-- {{ filterTarger(item.targetId) }} -->
<div class="courseObject1">{{ item.name }}</div>
@ -396,18 +389,10 @@ onMounted(async () => {
<!-- {{ filterTarger(obj.targetId) }} -->
</div>
<div class="partObject2">
<el-button
class="edit"
type="text"
@click="editBook(obj)"
>
<el-button class="edit" type="text" @click="editBook(obj)">
编辑
</el-button>
<el-button
class="destroy"
type="text"
@click="del(obj)"
>
<el-button class="destroy" type="text" @click="del(obj)">
删除
</el-button>
</div>
@ -425,25 +410,11 @@ onMounted(async () => {
</div>
</div>
</div>
<el-dialog
v-if="dialogVisible"
v-model="dialogVisible"
:title="flog ? '编辑' : '新增'"
width="500"
:before-close="handleClose"
>
<el-dialog v-if="dialogVisible" v-model="dialogVisible" :title="flog ? '编辑' : '新增'" width="500"
:before-close="handleClose">
<el-form :model="formData" label-width="auto" style="max-width: 600px">
<!-- <el-form-item label="目标" prop="target">
<el-select v-model="formData.target" placeholder="Select" size="large" style="width: 240px">
<el-option v-for="item in targetList" :key="item.id" :label="item.label" :value="item.id"
:disabled="item.disabled" />
</el-select>
</el-form-item> -->
<el-form-item label="内容" prop="description">
<el-input
v-model="formData.description"
placeholder="请输入内容"
></el-input>
<el-input v-model="formData.description" placeholder="请输入内容"></el-input>
</el-form-item>
</el-form>
<template #footer>
@ -470,8 +441,7 @@ const li
display: flex;
flex-direction: row;
flex-wrap: nowrap;
width: 100%;
width: 70%;
padding: 0 10px 0 10px;
justify-content: space-around;
}
@ -481,18 +451,10 @@ const li
height: 730px;
margin: 10px;
.topContent {
border-radius: 20px 20px 0 0px;
height: 280px;
background-color: #74deff;
margin-button: 5px;
background-image: linear-gradient(to right, #4984ff, #74deff);
}
.footContent {
border-radius: 20px;
margin-top: 20px;
height: 430px;
// margin-top: 20px;
height: 230px;
background-color: #ffa674;
background-image: linear-gradient(to right, #f9e397, #ffa674);
}
@ -500,8 +462,8 @@ const li
.rightContent {
margin: 10px;
width: 950px;
height: 730px;
width: 550px;
height: 430px;
background-image: linear-gradient(to right, #4984ff, #74deff);
border-radius: 20px;
}
@ -516,38 +478,16 @@ const li
padding-top: 10px;
}
.content1 {
border-radius: 20px 20px 0 0px;
margin-top: 20px;
width: 100%;
height: 220px;
background-color: #fff;
background-image: linear-gradient(#c7e3ff, #ffffff);
.textarea {
width: 100%;
border: none;
background: transparent;
padding: 20px;
height: 215px;
}
p {
padding: 30px;
font-size: 16px;
}
}
.content2 {
border-radius: 20px;
padding: 10px;
width: 100%;
height: 670px;
height: 370px;
background-color: #fff;
background-image: linear-gradient(#c7e3ff, #ffffff);
.objectLi > li {
width: 845px;
.objectLi>li {
// width: 545px;
height: 250px;
// margin: 40px;
// background-color: #ffffff;
@ -589,9 +529,9 @@ const li
background-image: linear-gradient(#c7e3ff, #ffffff);
}
.small > li {
.small>li {
// display: inline-flex;
width: 650px;
// width: 650px;
height: 150px;
// margin: 40px;
background-color: #ffffff;

@ -132,7 +132,7 @@ const onDeleteCourse = async (id: any) => {
const onGetCourseObject = async (id: any) => {
// const res = await getCourseObjectApi(id)
router.push({
path: '/curriculumCenter/CourseObjectives',
path: '/curriculumCenter/courseDetails',
query: {
id: id,
},
@ -172,12 +172,12 @@ const CloseCouresNameChangeEvent = () => {
<!-- <el-button type="primary" round size="large">全部课程</el-button>
<el-button type="primary" round plain size="large">我的文件夹</el-button> -->
<el-form inline v-if="userStore.userInfo.roleId[0] === '1'">
<el-form-item label="课程教师:" class="short-form-item">
<!-- <el-form-item label="课程教师:" class="short-form-item">
<el-select v-model="params.teacher">
<el-option v-for="teachers in teacherList" :key="teachers.username" :value="teachers.username"
:label="teachers.name"></el-option>
</el-select>
</el-form-item>
</el-form-item> -->
<el-form-item label="课程类别:" class="short-form-item">
<el-select v-model="params.category">
<el-option label="专业教育" value="1"></el-option>
@ -220,14 +220,14 @@ const CloseCouresNameChangeEvent = () => {
</p> -->
</li>
<li v-for="item in courseList" :key="item.id">
<img :src="item.img" alt="" />
<h2 class="course_name" @click="onEditCourse(item)">
<img title="点击查看课程详情" :src="item.img" alt="" @click="onGetCourseObject(item.id)" />
<h2 title="点击查看课程基本信息" class="course_name" @click="onEditCourse(item)">
{{ item.name }}
</h2>
<p class="teacher_name">讲师{{ item.teacher }}</p>
<p class="credit">
<span>{{ item.classhours }}</span>
学时|
学时 |
<span>{{ item.credit }}</span>
学分
</p>
@ -235,7 +235,7 @@ const CloseCouresNameChangeEvent = () => {
<Delete />
</el-icon>
<el-button class="object" round plain @click="onGetCourseObject(item.id)">
查看课程目标
查看课程详情
</el-button>
</li>
</ul>
@ -340,11 +340,12 @@ const CloseCouresNameChangeEvent = () => {
background-color: #cccccc;
width: 100%;
height: 178px;
cursor: pointer;
}
p {
margin-left: 30px;
margin-top: 10px;
margin-top: 5px;
color: #555555;
font-size: 14px;
padding-top: 12px;
@ -360,7 +361,7 @@ const CloseCouresNameChangeEvent = () => {
.del {
position: absolute;
margin-left: 302px;
margin-left: 295px;
margin-top: -90px;
color: #0052ff;
cursor: pointer;
@ -368,7 +369,7 @@ const CloseCouresNameChangeEvent = () => {
.object {
position: absolute;
margin-left: 204px;
margin-left: 190px;
margin-top: -24px;
}
}
@ -410,7 +411,7 @@ const CloseCouresNameChangeEvent = () => {
}
.short-form-item {
width: 250px;
margin-right: 65px;
width: 300px;
margin-right: 100px;
}
</style>

@ -21,12 +21,11 @@
<FoldAdd v-model:is-d="showHide" v-if="showHide" :data="foldInfoData" @submit="foldAddSubmit" />
<FoldEdit v-model:is-d="showHide1" v-if="showHide1" :editData="activeEditData" :data="foldInfoData"
@submit="foldEditSubmit" />
</div>
</div>
<div class="flex_right">
<div class="top-container">
<img src="" alt="">
<img src="" alt="" />
</div>
<div class="bottom-container radius-10">
<!-- 查看资源 -->
@ -35,16 +34,31 @@
</div>
</div>
</div>
</template>
<script lang='ts' setup>
import { getLearnInfoApi, getOrogramObjectiveApi } from '@/api/courseChaptersApi'
import { getChapterApi, deleteSectionApi, addChapterApi, updateChapterApi } from '@/api/sectionApi'
import { theoryUi, objectiveUi, atlasUi, lookResourceUi, foldInfoUi, FoldAdd, FoldEdit } from './components/KnowledgeGraphUi/index'
<script lang="ts" setup>
import {
getLearnInfoApi,
getOrogramObjectiveApi,
} from '@/api/courseChaptersApi'
import {
getChapterApi,
deleteSectionApi,
addChapterApi,
updateChapterApi,
} from '@/api/sectionApi'
import {
theoryUi,
objectiveUi,
atlasUi,
lookResourceUi,
foldInfoUi,
FoldAdd,
FoldEdit,
} from './components/KnowledgeGraphUi/index'
import { ref, reactive } from 'vue'
import { useRouter } from 'vue-router'
import { ElMessage } from 'element-plus';
import { ElMessage } from 'element-plus'
const $router = useRouter()
@ -53,12 +67,12 @@ const handle = () => $router.push('/knowledgeAtlas')
// theory-ui
const learnInfo: object[] = reactive([])
getLearnInfoApi().then(res => learnInfo.push(...res as object[]))
getLearnInfoApi().then((res) => learnInfo.push(...(res as object[])))
// getByIdCourseVoApi('2fa0fd63262230639d2c45a3acd9045c')
// objective-ui
const orogramObjective: any = reactive({})
getOrogramObjectiveApi().then(res => Object.assign(orogramObjective, res))
getOrogramObjectiveApi().then((res) => Object.assign(orogramObjective, res))
// look-resource-ui
const lookResource: any = reactive({})
@ -66,7 +80,7 @@ const lookResource: any = reactive({})
// fold-info-ui
const foldInfoData: any = reactive([])
function getFold() {
getChapterApi('2fa0fd63262230639d2c45a3acd9045c').then(res => {
getChapterApi('2fa0fd63262230639d2c45a3acd9045c').then((res) => {
foldInfoData.length = 0
foldInfoData.push(...res.data)
})
@ -76,36 +90,42 @@ getFold()
const showHide = ref(false)
function foldAddSubmit(data: any, updLoading: Function) {
updLoading(true)
addChapterApi(data).then(() => {
ElMessage({
message: `添加${data.pid === '' ? '章' : '节'}成功`,
type: 'success'
addChapterApi(data)
.then(() => {
ElMessage({
message: `添加${data.pid === '' ? '章' : '节'}成功`,
type: 'success',
})
showHide.value = false
getFold()
})
showHide.value = false
getFold()
}).catch(() => {
ElMessage({
message: `添加${data.pid === '' ? '章' : '节'}失败`,
type: 'error'
.catch(() => {
ElMessage({
message: `添加${data.pid === '' ? '章' : '节'}失败`,
type: 'error',
})
})
}).finally(() => updLoading(false))
.finally(() => updLoading(false))
}
//
const foldDelLoading = ref(false)
function flodDel(id: string) {
foldDelLoading.value = true
deleteSectionApi(id).then(() => {
ElMessage({
message: `删除成功`,
type: 'success'
deleteSectionApi(id)
.then(() => {
ElMessage({
message: `删除成功`,
type: 'success',
})
getFold()
})
getFold()
}).catch(() => {
ElMessage({
message: `删除失败`,
type: 'error'
.catch(() => {
ElMessage({
message: `删除失败`,
type: 'error',
})
})
}).finally(() => foldDelLoading.value = false)
.finally(() => (foldDelLoading.value = false))
}
//
const showHide1 = ref(false)
@ -116,35 +136,37 @@ function hanEdit(data: any) {
}
function foldEditSubmit(data: any, updLoading: Function) {
updLoading(true)
updateChapterApi(data).then(() => {
ElMessage({
message: `更新${data.pid === '' ? '章' : '节'}成功`,
type: 'success'
updateChapterApi(data)
.then(() => {
ElMessage({
message: `更新${data.pid === '' ? '章' : '节'}成功`,
type: 'success',
})
showHide1.value = false
getFold()
})
showHide1.value = false
getFold()
}).catch(() => {
ElMessage({
message: `更新${data.pid === '' ? '章' : '节'}失败`,
type: 'error'
.catch(() => {
ElMessage({
message: `更新${data.pid === '' ? '章' : '节'}失败`,
type: 'error',
})
})
}).finally(() => updLoading(false))
.finally(() => updLoading(false))
}
</script>
<style lang='scss' scoped>
<style lang="scss" scoped>
.course-chapters {
width: 100%;
height: 100%;
position: relative;
background: #F2F7FB;
background: #f2f7fb;
&,
* {
box-sizing: border-box;
}
.radius-10 {
border-radius: 10px;
overflow: hidden;
@ -159,7 +181,7 @@ function foldEditSubmit(data: any, updLoading: Function) {
position: absolute;
height: 100%;
width: 12px;
background-color: #2147FB;
background-color: #2147fb;
}
}
@ -217,6 +239,5 @@ function foldEditSubmit(data: any, updLoading: Function) {
}
}
}
}
</style>

@ -0,0 +1,292 @@
<script setup>
import * as echarts from 'echarts'
import { onMounted } from 'vue'
onMounted(() => {
const chartDom = document.getElementById('main')
const myChart = echarts.init(chartDom)
const option = {
title: {
// text: 'Basic Radar Chart',
},
legend: {
data: ['Allocated Budget', 'Actual Spending'],
},
radar: {
// shape: 'circle',
indicator: [
{ name: '目标1', max: 6500 },
{ name: '目标6', max: 16000 },
{ name: 'Information Technology', max: 30000 },
{ name: 'Customer Support', max: 38000 },
{ name: 'Development', max: 52000 },
{ name: 'Marketing', max: 25000 },
],
},
series: [
{
name: 'Budget vs spending',
type: 'radar',
data: [
{
value: [100, 3000, 20000, 35000, 50000, 18000],
name: 'Allocated Budget',
},
{
value: [5000, 14000, 28000, 26000, 42000, 21000],
name: 'Actual Spending',
},
],
},
],
}
option && myChart.setOption(option)
})
</script>
<template>
<div class="top">
<div class="object">
<h3>课程目标</h3>
<div class="radar">
<div class="title">| 课程目标雷达图</div>
<div id="main" class="radarmap"></div>
</div>
<div class="objectives">
<div class="title">| 课程目标</div>
<div class="objectivebottom">
<el-scrollbar height="370px">
<ul class="objectLi">
<li>
<div class="courseObject">
<div class="courseObject1"></div>
<div class="courseObject2">
<el-button type="primary">新增</el-button>
</div>
</div>
<div class="smallContent">
<el-scrollbar height="250px">
<ul class="small">
<li>
<div class="partObject">
<div class="partObject1">课程目标</div>
<div class="partObject2">
<el-button class="edit" type="text">编辑</el-button>
<el-button class="destroy" type="text">
删除
</el-button>
</div>
</div>
<div class="partObjectIntroduce"></div>
</li>
</ul>
</el-scrollbar>
</div>
</li>
</ul>
</el-scrollbar>
</div>
</div>
</div>
<div class="point">
<div class="map"></div>
<div class="knowledge"></div>
</div>
</div>
<div class="bottom">
<div class="chapters"></div>
<div class="chaptersDetails">
<div class="chaptersContent"></div>
<div class="resource"></div>
</div>
</div>
</template>
<style scoped lang="scss">
.top {
display: flex;
justify-content: space-between;
.object {
// display: flex;
// justify-content: space-between;
width: 65%;
height: 400px;
border: 1px solid black;
// background-color: pink;
h3 {
text-align: center;
font-size: 36px;
}
.radar {
float: left;
border-radius: 20px;
width: 300px;
margin-left: 20px;
margin-top: 20px;
height: 230px;
background-color: #ffa674;
background-image: linear-gradient(to right, #f9e397, #ffa674);
}
.title {
padding-left: 30px;
font-size: 24px;
font-weight: 600;
color: #fff;
height: 40px;
line-height: 30px;
padding-top: 10px;
}
.radarmap {
border-radius: 20px;
margin-top: 10px;
// margin-right: 20px;
width: 100%;
height: 270px;
background-color: #fff;
background-image: linear-gradient(#ffe9c7, #ffffff);
// width: 200px;
// height: 200px;
// padding: 20px;
// background-color: #fff;
// background-image: linear-gradient(#ffe9c7, #ffffff);
}
.objectives {
margin-top: 20px;
margin-right: 20px;
float: right;
border-radius: 20px;
width: 650px;
height: 230px;
// background-color: #4984FFFF
background-image: linear-gradient(to right, #4984ff, #74deff);
}
.objectivebottom {
border-radius: 20px;
margin-top: 10px;
width: 100%;
height: 270px;
background-image: linear-gradient(#c7e3ff, #ffffff);
.objectLi>li {
// width: 545px;
height: 250px;
// margin: 40px;
// background-color: #ffffff;
border-radius: 5px;
margin: 20px;
.courseObject {
height: 45px;
line-height: 40px;
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 20px;
border-bottom: 1px solid #e7e7e7;
.courseObject1 {
height: 30px;
line-height: 30px;
font-size: 14px;
background-color: #6093ff;
padding: 0px 16px;
color: #fff;
}
.courseObject2 {
font-size: 14px;
color: #0052d9;
}
}
}
// overflow-y: auto
.smallContent {
// border-radius: 20px;
padding: 10px;
width: 100%;
height: 200px;
background-color: #fff;
background-image: linear-gradient(#c7e3ff, #ffffff);
}
.small>li {
// display: inline-flex;
// width: 650px;
height: 150px;
// margin: 40px;
background-color: #ffffff;
border-radius: 5px;
margin: 20px;
.partObject {
height: 45px;
line-height: 40px;
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 20px;
border-bottom: 1px solid #e7e7e7;
.partObject1 {
height: 30px;
line-height: 30px;
font-size: 14px;
background-color: #6093ff;
padding: 0px 16px;
color: #fff;
}
.partObject2 {
font-size: 14px;
color: #0052d9;
}
}
.partObjectIntroduce {
height: 149px;
font-size: 16px;
padding: 15px;
}
}
}
}
}
.point {
width: 34%;
height: 400px;
background-color: blue;
}
.bottom {
margin-top: 20px;
display: flex;
justify-content: space-between;
.chapters {
width: 40%;
height: 800px;
background-color: red;
}
.chaptersDetails {
width: 59%;
height: 800px;
background-color: yellow;
.chaptersContent {
width: 100%;
height: 25%;
background-color: purple;
}
}
}
</style>
Loading…
Cancel
Save