mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/learning-system-portal.git
synced 2025-12-07 01:46:42 +08:00
Compare commits
28 Commits
250415-bug
...
master-062
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1bd77d3d5b | ||
|
|
21d1dffa7b | ||
|
|
231e9ed09b | ||
|
|
f13a77f075 | ||
|
|
ab2ac961f5 | ||
|
|
6727dd838b | ||
|
|
28aa639e1c | ||
|
|
05d48f5313 | ||
|
|
7a67aca620 | ||
|
|
a810da8978 | ||
|
|
b4538150df | ||
|
|
e79abe7aee | ||
|
|
65dfa4f0e3 | ||
|
|
4784b02ca4 | ||
|
|
45e006a4e7 | ||
|
|
577357ccd0 | ||
|
|
f92954aa6b | ||
|
|
d59b5a9e06 | ||
|
|
4be009a6d8 | ||
|
|
b5f01c6357 | ||
|
|
78cbb21155 | ||
|
|
adc33e5892 | ||
|
|
a9de4ad77c | ||
|
|
a3c85cbd19 | ||
|
|
9a6727e52f | ||
|
|
7cee4b5ad1 | ||
|
|
c3b5f1baf0 | ||
|
|
213990a7b0 |
@@ -62,15 +62,62 @@ const courseRecordList = function(data) {
|
||||
return ajax.postJson('/b1/system/teacher/teacher-course-list',data);
|
||||
}
|
||||
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}&pageNo=${data.pageNo}&pageSize=${data.pageSize}`);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出授课记录
|
||||
*
|
||||
* @param {Object} data
|
||||
*/
|
||||
const courseRecordExport2 = function(data) {
|
||||
return axios.request({
|
||||
baseURL: "/manageApi",
|
||||
url: '/admin/export/exportInTeacherRecord',
|
||||
method: 'get',
|
||||
data:data,
|
||||
headers:{'Content-Type':'application/json;charset=utf-8'},
|
||||
responseType: 'blob'
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出课程下的学员信息
|
||||
*
|
||||
*/
|
||||
const exportStudentOfCourse2 = function(courseId,courseType) {
|
||||
return axios.request({
|
||||
baseURL: "/manageApi",
|
||||
url: '/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: "/manageApi",
|
||||
url: '/b1/system/teacher/teacher-course-student-export?userId='+userId,
|
||||
method: 'post',
|
||||
headers:{'Content-Type':'application/json;charset=utf-8'},
|
||||
responseType: 'blob'
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
export default {
|
||||
courseRecordExport,
|
||||
courseRecordExport2,
|
||||
courseRecordList,
|
||||
getListByToken,
|
||||
exportStudentOfCourse,
|
||||
exportStudentOfTearcher
|
||||
exportStudentOfCourse2,
|
||||
exportStudentOfTearcher,
|
||||
exportStudentOfTearcher2,
|
||||
|
||||
}
|
||||
|
||||
BIN
src/assets/images/grateful/gratefulFooter20250613.png
Normal file
BIN
src/assets/images/grateful/gratefulFooter20250613.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 657 KiB |
@@ -2,11 +2,23 @@
|
||||
<div style="padding: 12px 32px 10px 12px;">
|
||||
<div style="display: flex;justify-content: flex-start;">
|
||||
|
||||
<div><el-input v-model="keyword" placeholder="输入课程名称搜索" clearable></el-input></div>
|
||||
<div style="padding-left: 10px;"><el-button @click="recordList()" type="primary" icon="el-icon-search">搜索</el-button></div>
|
||||
<div style="padding: 0px 5px;"><el-button icon="el-icon-refresh-right" @click="keyword = ''" type="primary" >重置</el-button></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: 0px 5px;"><el-button type="primary" @click="exportStudentOfTearcher()" icon="el-icon-search" size="small" round>导出学员信息</el-button></div>
|
||||
<div>
|
||||
<el-input v-model="keyword" placeholder="输入课程名称搜索" clearable></el-input>
|
||||
</div>
|
||||
<div style="padding-left: 10px;">
|
||||
<el-button @click="recordList()" type="primary" icon="el-icon-search">搜索</el-button>
|
||||
</div>
|
||||
<div style="padding: 0px 5px;">
|
||||
<el-button icon="el-icon-refresh-right" @click="keyword = ''" type="primary">重置</el-button>
|
||||
</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: 0px 5px;">-->
|
||||
<!-- <el-button type="primary" @click="exportStudentOfTearcher()" icon="el-icon-search" size="small" round>-->
|
||||
<!-- 导出学员信息-->
|
||||
<!-- </el-button>-->
|
||||
<!-- </div>-->
|
||||
</div>
|
||||
<div class="Export">
|
||||
<!-- <div style="padding-left: 10px;"><el-button type="primary" @click="exportFile()" icon="el-icon-search" size="small" round>导出</el-button></div> -->
|
||||
@@ -15,8 +27,21 @@
|
||||
<div style="margin-top:20px;">
|
||||
<el-table :data="pageData" border stripe>
|
||||
<el-table-column
|
||||
label="课程时间"
|
||||
prop="courseTime"
|
||||
label="序号"
|
||||
prop="index"
|
||||
width="100px">
|
||||
<template v-slot="scope">
|
||||
<span>{{ scope.$index + 1 }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="讲师工号"
|
||||
prop="userNo"
|
||||
width="100px">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="讲师姓名"
|
||||
prop="teacherName"
|
||||
width="200px">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
@@ -25,38 +50,77 @@
|
||||
width="200px">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="开课场地"
|
||||
prop="address"
|
||||
width="240px">
|
||||
label="培训发生组织"
|
||||
prop="trainOrgName"
|
||||
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="parentCourse"
|
||||
width="120px">
|
||||
label="授课/课程日期"
|
||||
prop="teachingDate"
|
||||
width="200px">
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
label="内容分类"
|
||||
prop="courseTypeName"
|
||||
width="200px">
|
||||
</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="所属项目"
|
||||
prop="parentProject"
|
||||
label="授课时长(分钟)"
|
||||
prop="teaching"
|
||||
width="120px"
|
||||
></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"
|
||||
label="参训人数"
|
||||
prop="studys"
|
||||
width="120px"
|
||||
></el-table-column>
|
||||
<el-table-column
|
||||
label="评分"
|
||||
width="100px"
|
||||
prop="score"
|
||||
width="100px"
|
||||
></el-table-column>
|
||||
<el-table-column
|
||||
label="是否生成讲师费"
|
||||
prop="createdFee"
|
||||
width="100px"
|
||||
>
|
||||
<template v-slot="scope">
|
||||
<span>{{
|
||||
{
|
||||
"0": "否",
|
||||
"1": "是",
|
||||
}[scope.row.createdFee + '']
|
||||
}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="备注"
|
||||
width="200px"
|
||||
prop="remark"
|
||||
></el-table-column>
|
||||
<el-table-column
|
||||
label="操作"
|
||||
@@ -66,7 +130,9 @@
|
||||
fixed="right"
|
||||
>
|
||||
<template v-slot="scope">
|
||||
<el-button type="text" @click="exportStudentOfCourse(scope.row.courseId)" size="small">导出学员信息</el-button>
|
||||
<el-button type="text" @click="exportStudentOfCourse(scope.row.courseId, scope.row.type)"
|
||||
size="small">导出学员信息
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -90,67 +156,73 @@
|
||||
|
||||
<script>
|
||||
import apiCourse from '../../api/boe/courseRecord.js';
|
||||
import { mapGetters } from 'vuex';
|
||||
import {mapGetters} from 'vuex';
|
||||
|
||||
export default {
|
||||
data(){
|
||||
data() {
|
||||
return {
|
||||
pageData:[],
|
||||
keyword:'',
|
||||
pageInfo:{},
|
||||
pageData: [],
|
||||
keyword: '',
|
||||
pageInfo: {
|
||||
pageIndex:1,
|
||||
pageSize:10,
|
||||
},
|
||||
}
|
||||
},
|
||||
|
||||
mounted() {
|
||||
this.recordList(1);
|
||||
|
||||
},
|
||||
computed: {
|
||||
},
|
||||
mounted() {
|
||||
this.recordList();
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['userInfo'])
|
||||
},
|
||||
|
||||
methods: {
|
||||
|
||||
},
|
||||
methods: {
|
||||
// 导出所有记录
|
||||
exportFile(){
|
||||
let req = {
|
||||
userId: this.userInfo.sysId
|
||||
// userId:"70F80F4E-34BA-10AB-894A-8FA812B19637"
|
||||
exportFile() {
|
||||
// let req = {
|
||||
// }
|
||||
// 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);
|
||||
// })
|
||||
// 取pageData记录第一条
|
||||
if (this.pageData.length > 0) {
|
||||
let teacherId = this.pageData[0].teacherId;
|
||||
window.open(
|
||||
`/manageApi/admin/export/exportInTeacherRecord?teacherId=${teacherId}`
|
||||
);
|
||||
}
|
||||
apiCourse.courseRecordExport(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);
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
// 导出课程下的学员信息
|
||||
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);
|
||||
})
|
||||
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);
|
||||
// })
|
||||
|
||||
window.open(
|
||||
`/manageApi/admin/export/exportTeacherRecordStudentInfo?courseId=${courseId}&courseType=${courseType}`
|
||||
);
|
||||
},
|
||||
|
||||
// 导出教师下的所有授课记录下的学员信息
|
||||
exportStudentOfTearcher(){
|
||||
exportStudentOfTearcher() {
|
||||
let userId = this.userInfo.sysId;
|
||||
// let userId = '5D36C207-64F4-C512-312D-C9598257695C';
|
||||
apiCourse.exportStudentOfTearcher(userId).then(res=>{
|
||||
apiCourse.exportStudentOfTearcher2(userId).then(res => {
|
||||
const link = document.createElement('a');// 创建a标签
|
||||
let blob = new Blob([res.data],{type: 'application/vnd.ms-excel'}); // 设置文件类型
|
||||
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");
|
||||
@@ -160,19 +232,18 @@ methods: {
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
recordList(pageIndex){
|
||||
recordList() {
|
||||
let req = {
|
||||
// userId:"6B049FAF-C314-7CCF-0D28-0D23F4C42531",
|
||||
userId: this.userInfo.sysId,
|
||||
keyword:this.keyword,
|
||||
page:pageIndex,
|
||||
pageSize:10
|
||||
courseName: this.keyword,
|
||||
pageNo: this.pageInfo.pageIndex,
|
||||
pageSize: this.pageInfo.pageSize
|
||||
}
|
||||
apiCourse.courseRecordList(req).then(res=>{
|
||||
if(res.status == 200) {
|
||||
this.pageData = res.result.list;
|
||||
this.pageInfo = res.result.pageInfo;
|
||||
apiCourse.getListByToken(req).then(res => {
|
||||
if (res.status == 200) {
|
||||
this.pageData = res.data.records;
|
||||
this.pageInfo.pageSize = Number(res.data.size);
|
||||
this.pageInfo.total = Number(res.data.total);
|
||||
this.pageInfo.page = Number(res.data.current);
|
||||
} else {
|
||||
this.$message({
|
||||
type: 'error',
|
||||
@@ -183,24 +254,23 @@ methods: {
|
||||
},
|
||||
|
||||
// 每页显示的条数事件
|
||||
handleSizeChange(val){
|
||||
handleSizeChange(val) {
|
||||
this.pageInfo.pageIndex = 1;
|
||||
this.pageInfo.pageSize = val;
|
||||
this.recordList(1);
|
||||
this.recordList();
|
||||
},
|
||||
// 显示制定页的数据
|
||||
handleCurrentChange(val){
|
||||
handleCurrentChange(val) {
|
||||
this.pageInfo.pageIndex = val;
|
||||
this.recordList(this.pageInfo.pageIndex);
|
||||
},
|
||||
|
||||
},
|
||||
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.Export{
|
||||
display: flex;
|
||||
padding-top: 10px;
|
||||
.Export {
|
||||
display: flex;
|
||||
padding-top: 10px;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<!-- </div> -->
|
||||
<!-- 底部 -->
|
||||
<div class="grateful">
|
||||
<img src="../../assets/images/grateful/gratefulFooter.png" alt="" />
|
||||
<img src="../../assets/images/grateful/gratefulFooter20250613.png" alt="" />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -651,6 +651,9 @@ export default {
|
||||
});
|
||||
},
|
||||
getCaseData() {
|
||||
// 清空pdf数据
|
||||
this.pdfPath = '';
|
||||
|
||||
let $this = this;
|
||||
apiCase.details(this.resolveId, true).then(res => {
|
||||
if (res.status == 200) {
|
||||
|
||||
@@ -277,12 +277,15 @@
|
||||
<div class="teacher" v-for="(item, idx) in teachers" :key="idx">
|
||||
<div class="teacher-avator" @click="toUserHome(item)" title="点击进入他的主页">
|
||||
<!-- <div class="teacher-text" v-if="item.authorInfo.avatar == ''">{{userAvatarText(item.teacherName)}}</div> -->
|
||||
<div v-if="item.authorInfo.avatar !== ''">
|
||||
<div v-if="item.authorInfo && item.authorInfo.avatar">
|
||||
<el-avatar :src="fileBaseUrl + item.authorInfo.avatar" shape="circle" :size="50"></el-avatar>
|
||||
</div>
|
||||
<div v-else-if="item.photo">
|
||||
<el-avatar :src="item.photo" shape="circle" :size="50"></el-avatar>
|
||||
</div>
|
||||
<div v-else class="teacher-text">
|
||||
<div v-if="item.authorInfo.sex === 1 "><img src="../../../public/images/Avatarman.png" alt=""></div>
|
||||
<div v-else><img src="../../../public/images/Avatarwoman.png" alt=""></div>
|
||||
<div v-if="item.authorInfo && item.authorInfo.sex === 1"><img src="../../../public/images/Avatarwoman.png" alt=""></div>
|
||||
<div v-else><img src="../../../public/images/Avatarman.png" alt=""></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="teacher-info">
|
||||
|
||||
Reference in New Issue
Block a user