From 7a5a82daef28a016b3c9cfd903cdcb4bb066a8e4 Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: Thu, 23 Jan 2025 14:09:44 +0800
Subject: [PATCH] 修改
---
src/views/onlineEducation/courseSupervision/components/courseDialog.vue | 285 ++++++++++++++++++++++++++++++++++++++------------------
1 files changed, 192 insertions(+), 93 deletions(-)
diff --git a/src/views/onlineEducation/courseSupervision/components/courseDialog.vue b/src/views/onlineEducation/courseSupervision/components/courseDialog.vue
index a45dcb5..0c113ae 100644
--- a/src/views/onlineEducation/courseSupervision/components/courseDialog.vue
+++ b/src/views/onlineEducation/courseSupervision/components/courseDialog.vue
@@ -3,42 +3,61 @@
:visible.sync="dialogVisible"
:modal-append-to-body="false"
:close-on-click-modal="false"
- width="600px"
+ width="50%"
:before-close="handleClose"
>
<div style="margin: 0 25px">
- <div style="display: flex;flex-direction: column">
- <div style="display: flex;align-items: center;justify-content: space-between">
- <span style="font-size: 20px;font-weight: 550">课程大纲</span>
- <span style="color: #1890ff;cursor: pointer;" @click="clickOpen">收起/展开</span>
- </div>
- <div :class="{'open':isClose}" style="overflow: hidden">
- <div v-for="(item,index) in courseList" :key="index" style="font-size: 16px;margin: 20px 35px">
- <span>{{item.name}}</span>
- </div>
- </div>
+<!-- <div style="display: flex;flex-direction: column">-->
+<!-- <div style="display: flex;align-items: center;justify-content: space-between">-->
+<!-- <span style="font-size: 20px;font-weight: 550">课程大纲</span>-->
+<!-- <span style="color: #1890ff;cursor: pointer;" @click="clickOpen">收起/展开</span>-->
+<!-- </div>-->
+<!-- <div :class="{'open':isClose}" style="overflow: hidden">-->
+<!-- <div v-for="(item,index) in courseList" :key="index" style="font-size: 16px;margin: 20px 35px">-->
+<!-- <span>{{item.chapterName}}</span>-->
+<!-- <div v-if="item.children">-->
+<!-- <div v-for="(child,index) in item.children" :key="index" style="font-size: 16px;margin: 20px 8px">-->
+<!-- <span>{{child.chapterName}}</span>-->
+<!-- </div>-->
+<!-- </div>-->
- </div>
+<!-- </div>-->
+<!-- </div>-->
+
+<!-- </div>-->
<div style="display: flex;flex-direction: column">
- <span style="font-size: 20px;font-weight: 550">课程章节资源</span>
+ <span style="font-size: 20px;font-weight: 550">课程内容</span>
<el-table
+ border
:data="courseTable"
- style="width: 80%;margin: 20px 35px">
+ :span-method="objectSpanMethod"
+ style="width: 100%;margin-top: 20px">
+<!-- <el-table-column-->
+<!-- prop="chapterParentCode"-->
+<!-- label="章节UUID">-->
+<!-- </el-table-column>-->
<el-table-column
- prop="catalogCode"
- label="章节UUID">
+ prop="chapterParentName"
+ label="章节" align="center">
</el-table-column>
<el-table-column
- prop="catalogName"
- label="章节名称">
+ prop="chapterName"
+ label="小节名称" align="center">
+ </el-table-column>
+ <el-table-column
+ prop="teacher"
+ label="讲师" align="center">
+ <template #default="scope">
+ <span>{{scope.row.teacher ? scope.row.teacher : '--'}}</span>
+ </template>
</el-table-column>
<el-table-column
label="资源类别"
- prop="resourceType">
+ prop="resourceType" align="center">
</el-table-column>
<el-table-column
- label="章节学时"
- prop="lessonNum">
+ label="小节学时"
+ prop="lessonNum" align="center">
</el-table-column>
<el-table-column label="预览" align="center" class-name="small-padding fixed-width">
<template #default="scope">
@@ -46,18 +65,24 @@
size="mini"
type="text"
style="color: #1890ff"
+ @click="openUrl(scope.row.url)"
>预览课程</el-button>
</template>
</el-table-column>
</el-table>
-
</div>
</div>
+ <span slot="footer" class="dialog-footer" v-if="showBtn">
+ <el-button type="primary" @click="examine('pass')">审核通过</el-button>
+ <el-button type="warning" @click="examine('reject')">审核驳回</el-button>
+ </span>
</el-dialog>
</template>
<script >
+import { checkCourse, listCourse } from '@/api/onlineEducation/course'
+
export default {
name: 'addUser',
components: {
@@ -68,101 +93,175 @@
dialogVisible: false,
dialogStatus: '',
dataForm: {},
- courseTable: [
- {
- catalogCode: '1',
- catalogName: '测试',
- resourceType: '视频',
- lessonNum: '2h'
- },
- {
- catalogCode: '1',
- catalogName: '测试3',
- resourceType: '音频',
- lessonNum: '45min'
- }
- ],
- courseList: [
- {
- name: '1.1 ……'
- },
- {
- name: '1.2 ……'
- },
- {
- name: '1.3 ……'
- }
-
- ]
+ courseTable: [],
+ courseList: [],
+ showBtn:false
}
},
created() {
},
methods: {
- openDialog (type, data) {
- this.resetDataForm();
+ openDialog (data,type,courseType) {
this.dialogVisible = true;
- this.dialogStatus = type;
+ this.dataForm = data;
+ console.log('dataForm ',this.dataForm )
+ if(type === 'course'){
+ this.courseList = data.outline
+ this.courseTable = this.recursion(data.outline,type)
+
+ if(courseType == 'check'){
+ this.showBtn = true
+ console.log('this.showBtn ',this.showBtn )
+ }
+ }else {
+ console.log('courseT2222222222able',data.chapterList)
+ this.courseList = data.chapterList
+ this.courseTable = this.recursion(data.chapterList,type)
+ }
+
+ console.log('coursee',this.courseTable)
+ },
+ recursion (data,type) {
+ let tmp = []
+ if(data && data.length > 0){
+ for (let i = 0; i < data.length; i++) {
+ let item = data[i]
+ // children为空
+ if (item.children && item.children.length==0) {
+ // 有children
+ } else {
+ if(type === 'course'){
+ item.children.forEach(child => {
+ tmp.push({
+ chapterParentCode: item.uuid,
+ chapterParentName: item.chapterName,
+ chapterCode: child.uuid,
+ chapterName: child.chapterName,
+ resourceType: child.haveResource == 0 ? '视频' : '音频' ,
+ lessonNum: child.lessonNum,
+ url: child.url,
+ children: this.recursion(child.children),
+ teacher: child.teacher
+ })
+ })
+ }else {
+ item.children.forEach(child => {
+ tmp.push({
+ chapterParentCode: item.chapterUuid,
+ chapterParentName: item.chapterName,
+ chapterCode: child.chapterUuid,
+ chapterName: child.chapterName,
+ resourceType: child.haveResource == 0 ? '视频' : '音频' ,
+ lessonNum: child.lessonNum,
+ url: child.url,
+ children: this.recursion(child.children),
+ teacher: child.teacher
+ })
+ })
+ }
+
+ }
+ }
+ }
+ return tmp;
+ },
+ openUrl(url) {
+ window.open(url,'_blank')
},
clickOpen() {
this.isClose = !this.isClose
},
handleClose() {
+ this.showBtn = false
this.dialogVisible = false;
this.$emit("getList");
},
onSubmit() {
- this.$refs["dataForm"].validate( async valid => {
- if (valid) {
- if(this.dialogStatus == 'add'){
- // this.dataForm.isCm = 1;
- // console.log("this.dataForm",this.dataForm)
- // const res = await addExam(this.dataForm);
- // if(res.code == 200) {
- this.$emit("getList");
- this.dialogVisible = false;
- // this.$message({
- // type:'success',
- // message: '新增成功'
- // })
- // }else{
- // this.$message({
- // type:'warning',
- // message: res.msg
- // })
- // }
- }else {
- // this.dataForm.isCm = 1;
- // console.log("this.dataForm",this.dataForm)
- // const res = await updateExam(this.dataForm);
- // if(res.code == 200) {
- this.$emit("getList");
- this.dialogVisible = false;
- // this.$message({
- // type:'success',
- // message: '编辑成功'
- // })
- // }else{
- // this.$message({
- // type:'warning',
- // message: res.msg
- // })
- // }
- }
- }
- })
-
+ this.$emit("getList");
+ this.dialogVisible = false;
},
- resetDataForm() {
- this.dataForm = {
+ examine(type){
+ let msg = '';
+ const param = {
+ id: this.dataForm.id,
+ status: null
}
+ if(type === 'pass'){
+ param.status = 2
+ msg = '审核通过'
+ }else {
+ param.status = 3
+ msg = '审核驳回'
+ }
+ this.$confirm(`确定${msg}该条数据?`, '提示', {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning'
+ }).then(async () => {
+ checkCourse(param).then((res) => {
+ if (res.code == 200) {
+ this.$message({
+ message: '成功',
+ type: 'success'
+ })
+ this.handleClose()
+ }else {
+ this.$message({
+ message: res.msg,
+ type: 'warning'
+ })
+ }
+ })
+ })
},
+ objectSpanMethod({ row, column, rowIndex, columnIndex }) {
+ if(columnIndex === 0) {
+ const currentValue = row[column.property];
+ // 获取上一行相同列的值
+ const preRow = this.courseTable[rowIndex - 1];
+ const preValue = preRow ? preRow[column.property] : null;
+ // 如果当前值和上一行的值相同,则将当前单元格隐藏
+ if (currentValue === preValue) {
+ return { rowspan: 0, colspan: 0 };
+ } else {
+ // 否则计算当前单元格应该跨越多少行
+ let rowspan = 1;
+ for (let i = rowIndex + 1; i < this.courseTable.length; i++) {
+ const nextRow = this.courseTable[i];
+ const nextValue = nextRow[column.property];
+ if (nextValue === currentValue) {
+ rowspan++;
+ } else {
+ break;
+ }
+ }
+ return { rowspan, colspan: 1 };
+ }
+ // if(rowIndex%2 === 0){
+ // return {
+ // rowspan: 2,
+ // colspan: 1
+ // }
+ // }else {
+ // return {
+ // rowspan: 0,
+ // colspan: 0
+ // }
+ // }
+ }
+ }
}
}
+
</script>
<style scoped>
.open{
height: 15px;
}
+.dialog-footer{
+ display: flex;
+ align-items: center;
+ justify-content: space-around;
+}
</style>
--
Gitblit v1.9.2