修改教师端我的授课记录查询和导出

This commit is contained in:
sunhonglai
2025-04-29 11:23:45 +08:00
parent 213990a7b0
commit c3b5f1baf0
2 changed files with 260 additions and 182 deletions

View File

@@ -65,12 +65,59 @@ const getListByToken = function(data) {
return ajax2.get('/manageApi',`/admin/teacherRecord/getListByToken?courseName=${data.courseName}&page=${data.page}&pageSize=${data.pageSize}`); return ajax2.get('/manageApi',`/admin/teacherRecord/getListByToken?courseName=${data.courseName}&page=${data.page}&pageSize=${data.pageSize}`);
} }
/**
* 导出授课记录
*
* @param {Object} data
*/
const courseRecordExport2 = function(data) {
return axios.request({
baseURL,
url: '/manageApi/admin/export/exportInTeacherRecord',
method: 'post',
data:data,
headers:{'Content-Type':'application/json;charset=utf-8'},
responseType: 'blob'
})
}
/**
* 导出课程下的学员信息
*
*/
const exportStudentOfCourse2 = function(courseId,courseType) {
return axios.request({
baseURL,
url: '/manageApi/admin/export/exportTeacherRecordStudentInfo?courseId='+courseId+'&courseType='+courseType,
method: 'get'
// headers:{'Content-Type':'application/json;charset=utf-8'},
// responseType: 'blob'
})
}
/**
* 导出教师下的所有授课记录下的学员信息
*
*/
const exportStudentOfTearcher2 = function(userId) {
return axios.request({
baseURL,
url: '/b1/system/teacher/teacher-course-student-export?userId='+userId,
method: 'post',
headers:{'Content-Type':'application/json;charset=utf-8'},
responseType: 'blob'
})
}
export default { export default {
courseRecordExport, courseRecordExport,
courseRecordExport2,
courseRecordList, courseRecordList,
getListByToken, getListByToken,
exportStudentOfCourse, exportStudentOfCourse,
exportStudentOfTearcher exportStudentOfCourse2,
exportStudentOfTearcher,
exportStudentOfTearcher2,
} }

View File

@@ -1,206 +1,237 @@
<template> <template>
<div style="padding: 12px 32px 10px 12px;"> <div style="padding: 12px 32px 10px 12px;">
<div style="display: flex;justify-content: flex-start;"> <div style="display: flex;justify-content: flex-start;">
<div><el-input v-model="keyword" placeholder="输入课程名称搜索" clearable></el-input></div> <div>
<div style="padding-left: 10px;"><el-button @click="recordList()" type="primary" icon="el-icon-search">搜索</el-button></div> <el-input v-model="keyword" placeholder="输入课程名称搜索" clearable></el-input>
<div style="padding: 0px 5px;"><el-button icon="el-icon-refresh-right" @click="keyword = ''" type="primary" >重置</el-button></div> </div>
<div style="padding: 0px 5px;"><el-button type="primary" @click="exportFile()" icon="el-icon-search" size="small" round>导出</el-button></div> <div style="padding-left: 10px;">
<div style="padding: 0px 5px;"><el-button type="primary" @click="exportStudentOfTearcher()" icon="el-icon-search" size="small" round>导出学员信息</el-button></div> <el-button @click="recordList()" type="primary" icon="el-icon-search">搜索</el-button>
</div> </div>
<div class="Export"> <div style="padding: 0px 5px;">
<!-- <div style="padding-left: 10px;"><el-button type="primary" @click="exportFile()" icon="el-icon-search" size="small" round>导出</el-button></div> --> <el-button icon="el-icon-refresh-right" @click="keyword = ''" type="primary">重置</el-button>
<!-- <div style="padding: 0px 5px;"><el-button icon="el-icon-refresh-right" type="primary" size="small" round>导出学员信息</el-button></div> --> </div>
</div> <div style="padding: 0px 5px;">
<div style="margin-top:20px;"> <el-button type="primary" @click="exportFile()" icon="el-icon-search" size="small" round>导出</el-button>
<el-table :data="pageData" border stripe> </div>
<el-table-column <div style="padding: 0px 5px;">
label="课程时间" <el-button type="primary" @click="exportStudentOfTearcher()" icon="el-icon-search" size="small" round>
prop="courseTime" 导出学员信息
width="200px"> </el-button>
</el-table-column> </div>
<el-table-column </div>
label="课程名称" <div class="Export">
prop="courseName" <!-- <div style="padding-left: 10px;"><el-button type="primary" @click="exportFile()" icon="el-icon-search" size="small" round>导出</el-button></div> -->
width="200px"> <!-- <div style="padding: 0px 5px;"><el-button icon="el-icon-refresh-right" type="primary" size="small" round>导出学员信息</el-button></div> -->
</el-table-column> </div>
<el-table-column <div style="margin-top:20px;">
label="开课场地" <el-table :data="pageData" border stripe>
prop="address" <el-table-column
width="240px"> label="课程编号"
</el-table-column> prop="index"
<el-table-column width="100px">
label="所属课程"
prop="parentCourse"
width="120px">
</el-table-column>
<el-table-column
label="所属项目"
prop="parentProject"
></el-table-column>
<el-table-column
label="所属路径"
prop="parentRoute"
width="200px"
></el-table-column>
<el-table-column
label="学习总人数"
prop="studentNumber"
width="100px"
></el-table-column>
<el-table-column
label="时长(分钟)"
width="100px"
prop="period"
></el-table-column>
<el-table-column
label="评分"
width="100px"
prop="score"
></el-table-column>
<el-table-column
label="操作"
align="center"
width="150px"
prop="cz"
fixed="right"
>
<template v-slot="scope"> <template v-slot="scope">
<el-button type="text" @click="exportStudentOfCourse(scope.row.courseId)" size="small">导出学员信息</el-button> <span>{{ scope.$index + 1 }}</span>
</template> </template>
</el-table-column> </el-table-column>
</el-table> <el-table-column
</div> label="课程名称"
prop="courseName"
width="200px">
</el-table-column>
<el-table-column
label="课程日期"
prop="teachingDate"
width="200px">
</el-table-column>
<el-table-column
label="内容分类"
prop="courseTypeName"
width="200px">
</el-table-column>
<el-table-column label="课程类型" prop="type" width="120px">
<template v-slot="scope">
<span>{{
{
"0": "在线课",
"1": "面授课",
"2": "课程开发",
"3": "作业员入模培训",
"4": "其他",
}[scope.row.type + '']
}}</span>
</template>
</el-table-column>
<el-table-column
label="学习总人数"
prop="studys"
width="120px"
></el-table-column>
<el-table-column
label="授课时长(分钟)"
prop="teaching"
width="120px"
></el-table-column>
<el-table-column
label="评分"
prop="score"
width="100px"
></el-table-column>
<el-table-column label="开课状态" width="100px" prop="courseStatus">
<template v-slot="scope">
<span>{{
{
"0": "未开课",
"1": "已开课",
}[scope.row.courseStatus + '']
}}</span>
</template>
</el-table-column>
<el-table-column
label="备注"
width="200px"
prop="remark"
></el-table-column>
<el-table-column
label="操作"
align="center"
width="150px"
prop="cz"
fixed="right"
>
<template v-slot="scope">
<el-button type="text" @click="exportStudentOfCourse(scope.row.courseId, scope.row.courseType)"
size="small">导出学员信息
</el-button>
</template>
</el-table-column>
</el-table>
</div>
<div style="text-align: center; margin-top:57px"> <div style="text-align: center; margin-top:57px">
<el-pagination <el-pagination
background background
@size-change="handleSizeChange" @size-change="handleSizeChange"
@current-change="handleCurrentChange" @current-change="handleCurrentChange"
:current-page="pageInfo.page" :current-page="pageInfo.page"
:page-sizes="[10, 20, 30, 40]" :page-sizes="[10, 20, 30, 40]"
:page-size="pageInfo.pageSize" :page-size="pageInfo.pageSize"
layout="total, sizes, prev, pager, next, jumper" layout="total, sizes, prev, pager, next, jumper"
:total="pageInfo.total" :total="pageInfo.total"
></el-pagination> ></el-pagination>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import apiCourse from '../../api/boe/courseRecord.js'; import apiCourse from '../../api/boe/courseRecord.js';
import { mapGetters } from 'vuex'; import {mapGetters} from 'vuex';
export default { export default {
data(){ data() {
return { return {
pageData:[], pageData: [],
keyword:'', keyword: '',
pageInfo:{}, pageInfo: {},
} }
}, },
mounted() {
this.recordList(1);
},
computed: {
...mapGetters(['userInfo'])
},
methods: {
// 导出所有记录
exportFile() {
let req = {
userId: this.userInfo.sysId
}
apiCourse.courseRecordExport2(req).then(res => {
const link = document.createElement('a');// 创建a标签
let blob = new Blob([res.data], {type: 'application/vnd.ms-excel'}); // 设置文件类型
link.style.display = "none";
link.href = URL.createObjectURL(blob); // 创建URL
link.setAttribute("download", "授课记录.xls");
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
})
},
mounted() { // 导出课程下的学员信息
this.recordList(1); exportStudentOfCourse(courseId, courseType) {
apiCourse.exportStudentOfCourse2(courseId, courseType).then(res => {
const link = document.createElement('a');// 创建a标签
let blob = new Blob([res.data], {type: 'application/vnd.ms-excel'}); // 设置文件类型
link.style.display = "none";
link.href = URL.createObjectURL(blob); // 创建URL
link.setAttribute("download", "授课记录.xls");
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
})
},
}, // 导出教师下的所有授课记录下的学员信息
computed: { exportStudentOfTearcher() {
...mapGetters(['userInfo']) let userId = this.userInfo.sysId;
}, apiCourse.exportStudentOfTearcher2(userId).then(res => {
const link = document.createElement('a');// 创建a标签
let blob = new Blob([res.data], {type: 'application/vnd.ms-excel'}); // 设置文件类型
link.style.display = "none";
link.href = URL.createObjectURL(blob); // 创建URL
link.setAttribute("download", "授课记录.xls");
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
})
},
methods: { recordList(pageIndex) {
// 如果pageIndex未定义或未赋值则默认初始值
pageIndex = pageIndex || 1;
// 导出所有记录 let req = {
exportFile(){ userId: this.userInfo.sysId,
let req = { courseName: this.keyword,
userId: this.userInfo.sysId page: pageIndex,
// userId:"70F80F4E-34BA-10AB-894A-8FA812B19637" pageSize: 10
} }
apiCourse.courseRecordExport(req).then(res=>{ apiCourse.getListByToken(req).then(res => {
const link = document.createElement('a');// 创建a标签 if (res.status == 200) {
let blob = new Blob([res.data],{type: 'application/vnd.ms-excel'}); // 设置文件类型 this.pageData = res.result.records;
link.style.display = "none"; // this.pageInfo = res.result.pageInfo;
link.href = URL.createObjectURL(blob); // 创建URL // this.pageInfo.total = Number(20);
link.setAttribute("download", "授课记录.xls"); } else {
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
})
},
// 导出课程下的学员信息
exportStudentOfCourse(courseId){
let userId = this.userInfo.sysId;
apiCourse.exportStudentOfCourse(userId,courseId).then(res=>{
const link = document.createElement('a');// 创建a标签
let blob = new Blob([res.data],{type: 'application/vnd.ms-excel'}); // 设置文件类型
link.style.display = "none";
link.href = URL.createObjectURL(blob); // 创建URL
link.setAttribute("download", "授课记录.xls");
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
})
},
// 导出教师下的所有授课记录下的学员信息
exportStudentOfTearcher(){
let userId = this.userInfo.sysId;
// let userId = '5D36C207-64F4-C512-312D-C9598257695C';
apiCourse.exportStudentOfTearcher(userId).then(res=>{
const link = document.createElement('a');// 创建a标签
let blob = new Blob([res.data],{type: 'application/vnd.ms-excel'}); // 设置文件类型
link.style.display = "none";
link.href = URL.createObjectURL(blob); // 创建URL
link.setAttribute("download", "授课记录.xls");
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
})
},
recordList(pageIndex){
let req = {
//     userId:"6B049FAF-C314-7CCF-0D28-0D23F4C42531",
userId: this.userInfo.sysId,
keyword:this.keyword,
    page:pageIndex,
    pageSize:10
}
apiCourse.courseRecordList(req).then(res=>{
if(res.status == 200) {
this.pageData = res.result.list;
this.pageInfo = res.result.pageInfo;
} else {
this.$message({ this.$message({
type: 'error', type: 'error',
message: res.message message: res.message
}); });
} }
}) })
}, },
// 每页显示的条数事件 // 每页显示的条数事件
handleSizeChange(val){ handleSizeChange(val) {
this.pageInfo.pageSize = val; this.pageInfo.pageSize = val;
this.recordList(1); this.recordList(1);
}, },
// 显示制定页的数据 // 显示制定页的数据
handleCurrentChange(val){ handleCurrentChange(val) {
this.pageInfo.pageIndex = val; this.pageInfo.pageIndex = val;
this.recordList(this.pageInfo.pageIndex); this.recordList(this.pageInfo.pageIndex);
}, },
}, },
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.Export{ .Export {
display: flex; display: flex;
padding-top: 10px; padding-top: 10px;
} }
</style> </style>