mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/learning-system-portal.git
synced 2025-12-09 02:46:44 +08:00
Compare commits
28 Commits
pingcode-1
...
master_120
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
618f39d270 | ||
|
|
5e7580a936 | ||
|
|
5f9da5cf03 | ||
|
|
1b3064f2ab | ||
|
|
24be910b83 | ||
|
|
6153daa98a | ||
|
|
c5f6f5c83e | ||
|
|
4d0cae9346 | ||
|
|
5be181df8c | ||
|
|
67f2ff3e86 | ||
|
|
3588ef3e67 | ||
|
|
7fab8bb062 | ||
|
|
977af999a3 | ||
|
|
cc0362380e | ||
|
|
45027ca77e | ||
|
|
83838b2c1a | ||
|
|
acbacac737 | ||
|
|
f98fda4f78 | ||
|
|
1ad2c80c9b | ||
|
|
21afc82036 | ||
|
|
3e137990b7 | ||
|
|
602a49e292 | ||
|
|
0397b4c310 | ||
|
|
6bf278c148 | ||
|
|
3080303fa3 | ||
|
|
50dca2caa9 | ||
|
|
548d891be3 | ||
|
|
0dc3884d46 |
15420
package-lock.json
generated
15420
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -16,6 +16,7 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"axios": "^0.21.4",
|
"axios": "^0.21.4",
|
||||||
|
"BOE-Online": "file:",
|
||||||
"core-js": "^3.6.5",
|
"core-js": "^3.6.5",
|
||||||
"driver.js": "^0.9.8",
|
"driver.js": "^0.9.8",
|
||||||
"echarts": "^5.3.0",
|
"echarts": "^5.3.0",
|
||||||
|
|||||||
@@ -16,9 +16,9 @@
|
|||||||
<meta name="referrer" content="strict-origin-when-cross-origin"/>
|
<meta name="referrer" content="strict-origin-when-cross-origin"/>
|
||||||
<link rel="icon" href="<%= BASE_URL %>logo/favicon.ico">
|
<link rel="icon" href="<%= BASE_URL %>logo/favicon.ico">
|
||||||
<title>京东方大学堂</title>
|
<title>京东方大学堂</title>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|
||||||
// if(window.top != window.self){
|
// if(window.top != window.self){
|
||||||
// window.top.location=window.self.location;
|
// window.top.location=window.self.location;
|
||||||
// }
|
// }
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
/**我的授课记录*/
|
/**我的授课记录*/
|
||||||
import ajax from '@/api/boe/boeApiAjax.js'
|
import ajax from '@/api/boe/boeApiAjax.js'
|
||||||
|
import ajax2 from '@/api/unionAjax.js'
|
||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
import { getToken } from '@/utils/token'
|
import { getToken } from '@/utils/token'
|
||||||
const baseURL = process.env.VUE_APP_BOE_BASE_API;
|
const baseURL = process.env.VUE_APP_BOE_BASE_API;
|
||||||
@@ -60,12 +61,15 @@ const exportStudentOfTearcher = function(userId) {
|
|||||||
const courseRecordList = function(data) {
|
const courseRecordList = function(data) {
|
||||||
return ajax.postJson('/b1/system/teacher/teacher-course-list',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}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
courseRecordExport,
|
courseRecordExport,
|
||||||
courseRecordList,
|
courseRecordList,
|
||||||
|
getListByToken,
|
||||||
exportStudentOfCourse,
|
exportStudentOfCourse,
|
||||||
exportStudentOfTearcher
|
exportStudentOfTearcher
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,6 @@
|
|||||||
* 下载课件,一期是直接在新的窗口打开文件的地址就可以了。不采用流的方式下载
|
* 下载课件,一期是直接在新的窗口打开文件的地址就可以了。不采用流的方式下载
|
||||||
*/
|
*/
|
||||||
import ajax from '@/utils/xajax.js'
|
import ajax from '@/utils/xajax.js'
|
||||||
import ajax2 from '@/utils/xajax2.js'
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分页查询,课件的管理列表
|
* 分页查询,课件的管理列表
|
||||||
@@ -50,9 +49,6 @@ const findList = function(data) {
|
|||||||
const saveUpload = function(data) {
|
const saveUpload = function(data) {
|
||||||
return ajax.post('/xboe/m/course/file/upload/save', data);
|
return ajax.post('/xboe/m/course/file/upload/save', data);
|
||||||
}
|
}
|
||||||
const saveUpload2 = function(data) {
|
|
||||||
return ajax2.post('/xboe/m/course/file/upload/save', data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 批量更新,上传时,一个一个上传,下面的列表的保存,使用此方法
|
* 批量更新,上传时,一个一个上传,下面的列表的保存,使用此方法
|
||||||
@@ -89,7 +85,6 @@ const detail = function(id) {
|
|||||||
export default {
|
export default {
|
||||||
pageList,
|
pageList,
|
||||||
saveUpload,
|
saveUpload,
|
||||||
saveUpload2,
|
|
||||||
batchUpdate,
|
batchUpdate,
|
||||||
detail,
|
detail,
|
||||||
delFile
|
delFile
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import ajax from '@/utils/xajax.js'
|
import ajax from '@/utils/xajax.js'
|
||||||
|
import ajax2 from '../unionAjax.js';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 按名称查询
|
* 按名称查询
|
||||||
@@ -9,7 +9,9 @@ const findByName = function(name) {
|
|||||||
return ajax.get('/xboe/teacher/name?name=' + name);
|
return ajax.get('/xboe/teacher/name?name=' + name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const findByNameNew = function(name) {
|
||||||
|
return ajax2.get('/manageApi/admin/teacher/selectTeacher?name=' + name);
|
||||||
|
}
|
||||||
const updateTeacher=function(data){
|
const updateTeacher=function(data){
|
||||||
return ajax.postJson('/xboe/teacher/update-teacher',data);
|
return ajax.postJson('/xboe/teacher/update-teacher',data);
|
||||||
}
|
}
|
||||||
@@ -217,7 +219,7 @@ export default {
|
|||||||
update,
|
update,
|
||||||
del,
|
del,
|
||||||
detail,
|
detail,
|
||||||
findByName,
|
findByNameNew,
|
||||||
updateSysId,
|
updateSysId,
|
||||||
has,
|
has,
|
||||||
start,
|
start,
|
||||||
|
|||||||
BIN
src/assets/images/hotforum/04.png
Normal file
BIN
src/assets/images/hotforum/04.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 220 KiB |
@@ -13,7 +13,7 @@
|
|||||||
</el-input>
|
</el-input>
|
||||||
<div class="choice-box" v-if="teacherDownList.length>0">
|
<div class="choice-box" v-if="teacherDownList.length>0">
|
||||||
<ul>
|
<ul>
|
||||||
<li v-for="te in teacherDownList" :key="te.key" @click="changeTeachers(te)">{{te.teacherName + te.teacherCode}}</li>
|
<li v-for="te in teacherDownList" :key="te.key" @click="changeTeachers(te)">{{te.teacherName + '(' + te.teacherCode + ')'}}</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<!-- <el-select
|
<!-- <el-select
|
||||||
@@ -88,15 +88,15 @@
|
|||||||
if (this.teacherValues !== '') {
|
if (this.teacherValues !== '') {
|
||||||
this.loading = true;
|
this.loading = true;
|
||||||
try {
|
try {
|
||||||
const { result, message, status } = await apiTeacher.findByName(this.teacherValues);
|
const { data, message, code } = await apiTeacher.findByNameNew(this.teacherValues);
|
||||||
this.loading = false;
|
this.loading = false;
|
||||||
if (status === 200) {
|
if (code === 200) {
|
||||||
let list = [];
|
let list = [];
|
||||||
result.forEach(item => {
|
data.forEach(item => {
|
||||||
list.push({
|
list.push({
|
||||||
teacherId: item.id,
|
teacherId: item.id,
|
||||||
teacherName: item.name,
|
teacherName: item.name,
|
||||||
teacherCode: item.code
|
teacherCode: item.mobile
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
this.teacherDownList = list;
|
this.teacherDownList = list;
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
<el-table-column label="创建时间" prop="sysCreateTime" width="100"></el-table-column>
|
<el-table-column label="创建时间" prop="sysCreateTime" width="100"></el-table-column>
|
||||||
<el-table-column label="选择" width="70" align="center">
|
<el-table-column label="选择" width="70" align="center">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-button size="mini" @click="chooseCourseFile(scope.row,false)" type="primary">选择</el-button>
|
<el-button size="mini" @click="chooseCourseFile(scope.row)" type="primary">选择</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
@@ -43,34 +43,23 @@
|
|||||||
</div>
|
</div>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane :label="'上传新'+curComType.name">
|
<el-tab-pane :label="'上传新'+curComType.name">
|
||||||
<div v-if="!courseFile.id||resType==10||resType==20">
|
<div v-if="!courseFile.id">
|
||||||
<div v-if="resType>20" style="padding-bottom: 10px;">
|
<div v-if="resType>20" style="padding-bottom: 10px;">
|
||||||
<span style="font-weight: 700;">内容时长(分):</span>
|
<span style="font-weight: 700;">内容时长(分):</span>
|
||||||
<span>
|
<span>
|
||||||
<el-input-number v-model="duration" size="mini" :min="1" :max="100"></el-input-number>
|
<el-input-number v-model="duration" size="mini" :min="1" :max="100"></el-input-number>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<el-upload class="upload-demo" :limit="1" :on-exceed="handleExceed" :on-remove="handleDelete" :headers="headers" :data="data" drag :action="uploadFileUrl" :on-success="handleUploadSuccess" :before-upload="handleBeforeUpload">
|
<el-upload class="upload-demo" :headers="headers" :data="data" drag :action="uploadFileUrl" :on-success="handleUploadSuccess" :before-upload="handleBeforeUpload">
|
||||||
<i class="el-icon-upload"></i>
|
<i class="el-icon-upload"></i>
|
||||||
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
|
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
|
||||||
<div class="el-upload__tip" slot="tip">文件大小限制:{{curComType.maxSizeName}},支持的文件类型:{{curComType.fileTypes.join(',')}}</div>
|
<div class="el-upload__tip" slot="tip">文件大小限制:{{curComType.maxSizeName}},支持的文件类型:{{curComType.fileTypes.join(',')}}</div>
|
||||||
</el-upload>
|
</el-upload>
|
||||||
<div v-if="courseFile.id&&resType==10||resType==20" class="video_audio_info">
|
|
||||||
<div class="info_item">
|
|
||||||
<div class="item_text">名称:</div>
|
|
||||||
<el-input v-model="courseFile.fileName" size="mini" style="width:300px;" placeholder="请输入名称"></el-input>
|
|
||||||
</div>
|
|
||||||
<div class="info_item">
|
|
||||||
<div class="item_text">时长:</div>
|
|
||||||
<el-input-number style="width:260px;" v-model="courseFile.duration" :precision="0" size="mini" :min="1" :max="999999999" placeholder="请输入时长" controls-position="right"></el-input-number>
|
|
||||||
<div style="margin-left: 10px;">分钟</div>
|
|
||||||
</div>
|
|
||||||
<div class="btn"><el-button @click="chooseCourseFile(courseFile,true)" type="primary" size="mini">确定</el-button></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div v-else style="text-align: center;">
|
<div v-else style="text-align: center;">
|
||||||
<div style="padding: 20px;">{{courseFile.fileName}} <span style="color: green;">上传成功</span></div>
|
<div style="padding: 20px;">{{courseFile.fileName}} <span style="color: green;">上传成功</span></div>
|
||||||
<div><el-button @click="chooseCourseFile(courseFile,true)" type="primary" size="mini">确定</el-button></div>
|
<div><el-button @click="chooseCourseFile(courseFile)" type="primary" size="mini">确定</el-button></div>
|
||||||
</div>
|
</div>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
@@ -101,7 +90,6 @@
|
|||||||
},
|
},
|
||||||
data(){
|
data(){
|
||||||
return {
|
return {
|
||||||
courseWare: {},
|
|
||||||
uploadFileUrl: process.env.VUE_APP_BASE_API + "/xboe/sys/xuploader/file/upload", // 上传的图片服务器地址
|
uploadFileUrl: process.env.VUE_APP_BASE_API + "/xboe/sys/xuploader/file/upload", // 上传的图片服务器地址
|
||||||
data:{
|
data:{
|
||||||
dir:'course'
|
dir:'course'
|
||||||
@@ -130,7 +118,6 @@
|
|||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.courseFile={};
|
this.courseFile={};
|
||||||
this.courseWare = {};
|
|
||||||
let $this=this;
|
let $this=this;
|
||||||
this.comTypes.some(ct=>{
|
this.comTypes.some(ct=>{
|
||||||
if(ct.resType==$this.resType){
|
if(ct.resType==$this.resType){
|
||||||
@@ -152,9 +139,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods:{
|
methods:{
|
||||||
handleExceed(){
|
|
||||||
this.$message({message:`只允许一次性上传一个`,type:'error',offset:100})
|
|
||||||
},
|
|
||||||
handleBeforeUpload(file) {
|
handleBeforeUpload(file) {
|
||||||
if(file.name.lastIndexOf(".") ==-1) {
|
if(file.name.lastIndexOf(".") ==-1) {
|
||||||
this.$message({message:`文件格式不正确!`,type:'error',offset:100})
|
this.$message({message:`文件格式不正确!`,type:'error',offset:100})
|
||||||
@@ -188,28 +172,21 @@
|
|||||||
},
|
},
|
||||||
// 上传成功回调
|
// 上传成功回调
|
||||||
handleUploadSuccess(res, file) {
|
handleUploadSuccess(res, file) {
|
||||||
// console.log(res,file,'xixixixiix');
|
//console.log(res);
|
||||||
if(res.status == 200) {
|
if(res.status == 200) {
|
||||||
//上传到课件库
|
//上传到课件库
|
||||||
//console.log(res.result);
|
//console.log(res.result);
|
||||||
this.courseWare={
|
let courseWare={
|
||||||
fileName:res.result.displayName,
|
fileName:res.result.displayName,
|
||||||
fileType:res.result.fileType,
|
fileType:res.result.fileType,
|
||||||
filePath:res.result.filePath,
|
filePath:res.result.filePath,
|
||||||
resType:this.resType,
|
resType:this.resType,
|
||||||
orgId:this.orgId,
|
orgId:this.orgId,
|
||||||
orgName:this.orgName,
|
orgName:this.orgName,
|
||||||
duration:res.result.duration||this.duration,
|
duration:this.duration,
|
||||||
remark:'课程中直接上传'
|
remark:'课程中直接上传'
|
||||||
}
|
}
|
||||||
this.$message({message:"上传成功",type:'success',offset:100});
|
apiCourseFile.saveUpload(courseWare).then(rs=>{
|
||||||
this.courseFile = {
|
|
||||||
id: res.result.filePath,
|
|
||||||
fileName:res.result.displayName.replace(/\.[^/.]+$/, ""),
|
|
||||||
duration:res.result.duration,
|
|
||||||
}
|
|
||||||
return
|
|
||||||
apiCourseFile.saveUpload(this.courseWare).then(rs=>{
|
|
||||||
if(rs.status==200){
|
if(rs.status==200){
|
||||||
this.courseFile=rs.result;
|
this.courseFile=rs.result;
|
||||||
this.$message({message:"上传成功",type:'success',offset:100});
|
this.$message({message:"上传成功",type:'success',offset:100});
|
||||||
@@ -228,8 +205,7 @@
|
|||||||
},
|
},
|
||||||
// 删除文件
|
// 删除文件
|
||||||
handleDelete(index) {
|
handleDelete(index) {
|
||||||
this.courseFile = {};
|
this.fileList.splice(index, 1);
|
||||||
// this.fileList.splice(index, 1);
|
|
||||||
//注意删除处理
|
//注意删除处理
|
||||||
//this.$emit("remove", '');
|
//this.$emit("remove", '');
|
||||||
},
|
},
|
||||||
@@ -272,33 +248,7 @@
|
|||||||
})
|
})
|
||||||
|
|
||||||
},
|
},
|
||||||
chooseCourseFile(ccfile,isUpload){
|
chooseCourseFile(ccfile){
|
||||||
if(isUpload){
|
|
||||||
if(this.resType == 10||this.resType == 20){
|
|
||||||
if(!this.courseFile.fileName){
|
|
||||||
this.$message({message:`${this.resType == 10?'视频':'音频'}名称不能为空`,type:'error',offset:100});
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if(!this.courseFile.duration){
|
|
||||||
this.$message({message:"时长不能为空",type:'error',offset:100});
|
|
||||||
return
|
|
||||||
}
|
|
||||||
this.courseWare.fileName = this.courseFile.fileName + '.' + this.courseWare.fileType
|
|
||||||
this.courseWare.duration = this.courseFile.duration
|
|
||||||
}
|
|
||||||
apiCourseFile.saveUpload(this.courseWare).then(rs=>{
|
|
||||||
if(rs.status==200){
|
|
||||||
this.courseFile=rs.result;
|
|
||||||
this.$message({message:"保存成功",type:'success',offset:100});
|
|
||||||
this.$emit('choose', this.courseFile);
|
|
||||||
}else{
|
|
||||||
this.$message.error(rs.message);
|
|
||||||
}
|
|
||||||
}).catch(err=>{
|
|
||||||
this.$message.error(err.message);
|
|
||||||
})
|
|
||||||
return
|
|
||||||
}
|
|
||||||
this.$emit('choose', ccfile);
|
this.$emit('choose', ccfile);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -306,24 +256,4 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
.video_audio_info{
|
|
||||||
margin-top: 10px;
|
|
||||||
.info_item{
|
|
||||||
width: 360px;
|
|
||||||
margin-top: 10px;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
.el-input-number .el-input__inner{
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
.item_text{
|
|
||||||
margin-right: 10px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.btn{
|
|
||||||
margin-top: 10px;
|
|
||||||
width: 360px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -1328,7 +1328,6 @@ export default {
|
|||||||
pass = false;
|
pass = false;
|
||||||
}
|
}
|
||||||
} else if(this.curContent.contentType == 10 || this.curContent.contentType == 20) {// 视频
|
} else if(this.curContent.contentType == 10 || this.curContent.contentType == 20) {// 视频
|
||||||
courseware.curriculumData.duration = Number((courseware.curriculumData.duration*60).toFixed(0));
|
|
||||||
if(this.curContent.content !== JSON.stringify(courseware.curriculumData)) {
|
if(this.curContent.content !== JSON.stringify(courseware.curriculumData)) {
|
||||||
pass = false;
|
pass = false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -327,7 +327,7 @@ export default {
|
|||||||
},
|
},
|
||||||
startTest(){
|
startTest(){
|
||||||
apiExamPaper.newPaperContent(this.info.id).then(res=>{
|
apiExamPaper.newPaperContent(this.info.id).then(res=>{
|
||||||
if(res.error == ''&&res.result != ''){
|
if(!res.error&&res.result != ''){
|
||||||
if(this.info.paperType==2){
|
if(this.info.paperType==2){
|
||||||
this.examPaper.json=res.result;
|
this.examPaper.json=res.result;
|
||||||
let qitems=this.convertToItems(this.examPaper.json);
|
let qitems=this.convertToItems(this.examPaper.json);
|
||||||
|
|||||||
@@ -12,7 +12,6 @@
|
|||||||
:show-file-list="showList"
|
:show-file-list="showList"
|
||||||
:data="data"
|
:data="data"
|
||||||
:headers="headers"
|
:headers="headers"
|
||||||
:on-remove="handleRemove"
|
|
||||||
class="upload-file-uploader"
|
class="upload-file-uploader"
|
||||||
ref="upload"
|
ref="upload"
|
||||||
>
|
>
|
||||||
@@ -143,9 +142,6 @@ export default {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
handleRemove(file, fileList){
|
|
||||||
this.$emit('isTrue',false)
|
|
||||||
},
|
|
||||||
// 上传前校检格式和大小
|
// 上传前校检格式和大小
|
||||||
handleBeforeUpload(file) {
|
handleBeforeUpload(file) {
|
||||||
if(this.beforeMsg){
|
if(this.beforeMsg){
|
||||||
@@ -199,7 +195,6 @@ export default {
|
|||||||
// 上传失败
|
// 上传失败
|
||||||
handleUploadError(err) {
|
handleUploadError(err) {
|
||||||
this.isLoading = false;
|
this.isLoading = false;
|
||||||
this.$emit('isTrue',false)
|
|
||||||
this.$message({message:"上传失败, 请重试",type:'error',offset:100});
|
this.$message({message:"上传失败, 请重试",type:'error',offset:100});
|
||||||
},
|
},
|
||||||
// 上传成功回调
|
// 上传成功回调
|
||||||
@@ -222,8 +217,7 @@ export default {
|
|||||||
if(delIdx>-1){
|
if(delIdx>-1){
|
||||||
fileList.splice(delIdx,1);
|
fileList.splice(delIdx,1);
|
||||||
}
|
}
|
||||||
this.$emit('isTrue',true)
|
this.$emit("success", res);
|
||||||
this.$emit('isFalse',true)
|
|
||||||
} else {
|
} else {
|
||||||
this.isLoading = false;
|
this.isLoading = false;
|
||||||
if(this.limit == 1){
|
if(this.limit == 1){
|
||||||
@@ -231,7 +225,8 @@ export default {
|
|||||||
}
|
}
|
||||||
this.$message({message:"上传失败",type:'error',offset:100});
|
this.$message({message:"上传失败",type:'error',offset:100});
|
||||||
}
|
}
|
||||||
this.$emit("success", res);
|
|
||||||
|
// this.$emit("success", res);
|
||||||
},
|
},
|
||||||
// 删除文件
|
// 删除文件
|
||||||
handleDelete(index) {
|
handleDelete(index) {
|
||||||
|
|||||||
@@ -51,7 +51,8 @@
|
|||||||
<el-dropdown placement="bottom" @command="handleContributor">
|
<el-dropdown placement="bottom" @command="handleContributor">
|
||||||
<span class="el-dropdown-link" style="font-size:16px;cursor: pointer;" :style="{color:textColor}">贡献者大会</span>
|
<span class="el-dropdown-link" style="font-size:16px;cursor: pointer;" :style="{color:textColor}">贡献者大会</span>
|
||||||
<el-dropdown-menu slot="dropdown">
|
<el-dropdown-menu slot="dropdown">
|
||||||
<el-dropdown-item command="one">2023</el-dropdown-item>
|
<el-dropdown-item command="three">2024</el-dropdown-item>
|
||||||
|
<el-dropdown-item command="one" divided>2023</el-dropdown-item>
|
||||||
<el-dropdown-item command="two" divided>2022</el-dropdown-item>
|
<el-dropdown-item command="two" divided>2022</el-dropdown-item>
|
||||||
</el-dropdown-menu>
|
</el-dropdown-menu>
|
||||||
</el-dropdown>
|
</el-dropdown>
|
||||||
@@ -246,6 +247,7 @@ export default {
|
|||||||
let obj = {
|
let obj = {
|
||||||
one: urlPre + "/web/contributornew/index",
|
one: urlPre + "/web/contributornew/index",
|
||||||
two: urlPre + "/web/contributor/index",
|
two: urlPre + "/web/contributor/index",
|
||||||
|
three: urlPre + "/web/contributor_2024/index"
|
||||||
};
|
};
|
||||||
window.open(obj[val]);
|
window.open(obj[val]);
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,233 +0,0 @@
|
|||||||
import axios from 'axios'
|
|
||||||
import qs from 'qs'
|
|
||||||
import { Notification, MessageBox, Message } from 'element-ui'
|
|
||||||
import store from '@/store'
|
|
||||||
import { getToken } from '@/utils/token'
|
|
||||||
import errorCode from '@/utils/errorCode'
|
|
||||||
/**
|
|
||||||
*request请求 axios.request(config)
|
|
||||||
*requestJson请求 axios.request(config)
|
|
||||||
*get请求 axios.get(url[, config])
|
|
||||||
*post请求 axios.post(url[, data[, config]])
|
|
||||||
*postJson请求 axios.post(url[, data[, config]])
|
|
||||||
*put请求 axios.put(url[, data[, config]])
|
|
||||||
*putJson请求 axios.put(url[, data[, config]])
|
|
||||||
*patch请求 axios.patch(url[, data[, config]])
|
|
||||||
*patchJson请求 axios.patch(url[, data[, config]])
|
|
||||||
*delete请求 axios.delete(url[, config])
|
|
||||||
*/
|
|
||||||
|
|
||||||
//const ReLoginUrl="/login";
|
|
||||||
|
|
||||||
const ReLoginUrl=process.env.VUE_APP_LOGIN_URL;
|
|
||||||
|
|
||||||
const TokenName='XBOE-Access-Token';
|
|
||||||
/**axios.defaults.headers['Content-Type'] = 'application/x-www-form-urlencoded'**/
|
|
||||||
//只是用于发送json对象数据时使用post,put,patch
|
|
||||||
const jsonRequest=axios.create({
|
|
||||||
headers:{'Content-Type':'application/json;charset=utf-8'},
|
|
||||||
// axios中请求配置有baseURL选项,表示请求URL公共部分
|
|
||||||
baseURL: process.env.VUE_APP_BASE_API,
|
|
||||||
//超时
|
|
||||||
timeout: 60000,
|
|
||||||
});
|
|
||||||
//发送json对象的拦截器
|
|
||||||
jsonRequest.interceptors.request.use(config => {
|
|
||||||
//是否需要设置 token
|
|
||||||
const isToken = (config.headers || {}).isToken === false
|
|
||||||
if (getToken() && !isToken) {
|
|
||||||
config.headers[TokenName] = getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
|
|
||||||
}
|
|
||||||
return config
|
|
||||||
}, error => {
|
|
||||||
console.log(error)
|
|
||||||
Promise.reject(error)
|
|
||||||
})
|
|
||||||
|
|
||||||
// 响应拦截器
|
|
||||||
jsonRequest.interceptors.response.use(res => {
|
|
||||||
|
|
||||||
const code = res.data.status || 200;
|
|
||||||
if(code===200){
|
|
||||||
return res.data
|
|
||||||
}else{
|
|
||||||
if(code == 6001){ //针对于老系统的处理
|
|
||||||
store.dispatch('LogOut').then(() => {
|
|
||||||
location.href = ReLoginUrl;
|
|
||||||
})
|
|
||||||
}else if(code === 401){
|
|
||||||
store.dispatch('LogOut').then(() => {
|
|
||||||
location.href = ReLoginUrl;
|
|
||||||
})
|
|
||||||
}else if(code === 402){
|
|
||||||
store.dispatch('LogOut').then(() => {
|
|
||||||
location.href = ReLoginUrl;
|
|
||||||
})
|
|
||||||
}else if(code===403){
|
|
||||||
var msg='当前操作没有权限';
|
|
||||||
Message({message: msg, type: 'error'});
|
|
||||||
return Promise.reject(new Error(msg))
|
|
||||||
//return res.data;
|
|
||||||
}else if(code===302){
|
|
||||||
location.href = ReLoginUrl;
|
|
||||||
}else{
|
|
||||||
//Message({message: res.data.message, type: 'error'});
|
|
||||||
//console.log('err:' + res.data.error);
|
|
||||||
//return Promise.reject(new Error(res.data.message))
|
|
||||||
return res.data;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
error => {
|
|
||||||
console.log('err' + error)
|
|
||||||
let { message } = error;
|
|
||||||
if (message == "Network Error") {
|
|
||||||
message = "网络异常,请稍后重试";
|
|
||||||
}
|
|
||||||
else if (message.includes("timeout")) {
|
|
||||||
message = "系统接口请求超时";
|
|
||||||
//location.href = this.webBaseUrl + ReLoginUrl;
|
|
||||||
}
|
|
||||||
else if (message.includes("Request failed with status code")) {
|
|
||||||
message = "系统接口" + message.substr(message.length - 3) + "异常";
|
|
||||||
}
|
|
||||||
Message({
|
|
||||||
message: message,
|
|
||||||
type: 'error',
|
|
||||||
duration: 5 * 1000
|
|
||||||
})
|
|
||||||
return Promise.reject(error)
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
//用于普通的发送请求
|
|
||||||
const formRequest=axios.create({
|
|
||||||
headers:{'Content-Type':'application/x-www-form-urlencoded'},
|
|
||||||
// axios中请求配置有baseURL选项,表示请求URL公共部分
|
|
||||||
baseURL: process.env.VUE_APP_BASE_API,
|
|
||||||
//超时
|
|
||||||
timeout: 10000,
|
|
||||||
})
|
|
||||||
//发送json对象的拦截器
|
|
||||||
formRequest.interceptors.request.use(config => {
|
|
||||||
//是否需要设置 token
|
|
||||||
const isToken = (config.headers || {}).isToken === false
|
|
||||||
if (getToken() && !isToken) {
|
|
||||||
config.headers[TokenName] = getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
|
|
||||||
}
|
|
||||||
return config
|
|
||||||
}, error => {
|
|
||||||
console.log(error)
|
|
||||||
Promise.reject(error)
|
|
||||||
});
|
|
||||||
formRequest.interceptors.response.use(res => {
|
|
||||||
const code = res.data.status || 200;
|
|
||||||
if(code===200){
|
|
||||||
return res.data
|
|
||||||
}else{
|
|
||||||
if(code == 6001){ //针对于老系统的处理,因为老系统是字符串,所以这里不使用三等于号
|
|
||||||
store.dispatch('LogOut').then(() => {
|
|
||||||
location.href = ReLoginUrl;
|
|
||||||
})
|
|
||||||
}else if(code === 401){
|
|
||||||
store.dispatch('LogOut').then(() => {
|
|
||||||
location.href = ReLoginUrl;
|
|
||||||
})
|
|
||||||
}else if(code === 402){
|
|
||||||
store.dispatch('LogOut').then(() => {
|
|
||||||
location.href = ReLoginUrl;
|
|
||||||
})
|
|
||||||
}else if(code===403){
|
|
||||||
var msg='当前操作没有权限';
|
|
||||||
Message({message: msg, type: 'error'});
|
|
||||||
return Promise.reject(new Error(msg))
|
|
||||||
}else if(code===302){
|
|
||||||
location.href = ReLoginUrl;
|
|
||||||
}else{
|
|
||||||
//Message({message: res.data.message, type: 'error'});
|
|
||||||
//console.log('err' + res.data.error);
|
|
||||||
//return Promise.reject(new Error(res.data.message))
|
|
||||||
return res.data;//返回给用户做业务处理
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
error => {
|
|
||||||
console.log('err' + error)
|
|
||||||
let { message } = error;
|
|
||||||
if (message == "Network Error") {
|
|
||||||
message = "网络异常,请稍后重试";
|
|
||||||
}
|
|
||||||
else if (message.includes("timeout")) {
|
|
||||||
message = "接口超时,请检查是否上传成功";
|
|
||||||
//location.href = this.webBaseUrl + ReLoginUrl;
|
|
||||||
}
|
|
||||||
else if (message.includes("Request failed with status code")) {
|
|
||||||
message = "系统接口" + message.substr(message.length - 3) + "异常";
|
|
||||||
}
|
|
||||||
Message({
|
|
||||||
message: message,
|
|
||||||
type: 'error',
|
|
||||||
duration: 5 * 1000
|
|
||||||
})
|
|
||||||
return Promise.reject(error)
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
//request请求
|
|
||||||
const request=function(cfg){
|
|
||||||
if(cfg.data){
|
|
||||||
cfg.data=qs.stringify(cfg.data);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
//requestJson请求
|
|
||||||
const requestJson=jsonRequest.request;
|
|
||||||
//get请求
|
|
||||||
const get=formRequest.request;
|
|
||||||
//post请求
|
|
||||||
const post=function(url,data,config){
|
|
||||||
if(data){
|
|
||||||
data=qs.stringify(data);
|
|
||||||
}
|
|
||||||
return formRequest.post(url,data,config);
|
|
||||||
}
|
|
||||||
//post请求
|
|
||||||
const postForm=function(url,data,config){
|
|
||||||
return formRequest.post(url,data,config);
|
|
||||||
}
|
|
||||||
//postJson请求
|
|
||||||
const postJson=jsonRequest.post;
|
|
||||||
//put请求
|
|
||||||
const put=function(url,data,config){
|
|
||||||
if(data){
|
|
||||||
data=qs.stringify(data);
|
|
||||||
}
|
|
||||||
return formRequest.put(url,data,config);
|
|
||||||
}
|
|
||||||
//putJson请求
|
|
||||||
const putJson=jsonRequest.put;
|
|
||||||
//patch请求
|
|
||||||
const patch=function(url,data,config){
|
|
||||||
if(data){
|
|
||||||
data=qs.stringify(data);
|
|
||||||
}
|
|
||||||
return formRequest.patch(url,data,config);
|
|
||||||
}
|
|
||||||
//patchJson请求
|
|
||||||
const patchJson=jsonRequest.patch;
|
|
||||||
//delete请求
|
|
||||||
const del=formRequest.delete;
|
|
||||||
|
|
||||||
|
|
||||||
export default {
|
|
||||||
request,
|
|
||||||
requestJson,
|
|
||||||
get,
|
|
||||||
post,
|
|
||||||
postJson,
|
|
||||||
put,
|
|
||||||
putJson,
|
|
||||||
patch,
|
|
||||||
patchJson,
|
|
||||||
del,
|
|
||||||
postForm
|
|
||||||
}
|
|
||||||
@@ -52,7 +52,7 @@
|
|||||||
<el-table-column label="操作">
|
<el-table-column label="操作">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-button-group>
|
<el-button-group>
|
||||||
<el-button style="margin:0 5px" type="text" v-if="scope.row.recommendRank === ''" @click="suggest(scope.row)" icon="el-icon-medal">榜单推荐</el-button>
|
<el-button style="margin:0 5px" type="text" v-if="scope.row.recommendRank === ''||scope.row.recommendRank === null" @click="suggest(scope.row)" icon="el-icon-medal">榜单推荐</el-button>
|
||||||
<!-- <el-button type="text" @click="shareItem(scope.row)" icon="el-icon-share" style="margin:0 5px">推荐</el-button> -->
|
<!-- <el-button type="text" @click="shareItem(scope.row)" icon="el-icon-share" style="margin:0 5px">推荐</el-button> -->
|
||||||
<el-button style="margin:0 5px" v-if="!scope.row.isTop && scope.row.confidentialityLevel == '内部'" type="text"
|
<el-button style="margin:0 5px" v-if="!scope.row.isTop && scope.row.confidentialityLevel == '内部'" type="text"
|
||||||
@click="setTop(scope.row)" icon="el-icon-top">置顶</el-button>
|
@click="setTop(scope.row)" icon="el-icon-top">置顶</el-button>
|
||||||
|
|||||||
@@ -149,7 +149,7 @@
|
|||||||
<el-checkbox v-model="deviceMobile" @change="isVisible(1)" label="移动端可见" border></el-checkbox>
|
<el-checkbox v-model="deviceMobile" @change="isVisible(1)" label="移动端可见" border></el-checkbox>
|
||||||
<el-checkbox v-model="devicePc" @change="isVisible(2)" label="pc端可见" border></el-checkbox>
|
<el-checkbox v-model="devicePc" @change="isVisible(2)" label="pc端可见" border></el-checkbox>
|
||||||
</div>
|
</div>
|
||||||
<file-upload scorm="zip" dir="files" @isFalse="isFalseChange" @isTrue="isTrueChange" :beforeMsg="needOrg" :showList="true" :value="imageShowUrl" :limit="5" @success="handleUploadSuccess" @remove="handleRemoveSuccess"></file-upload>
|
<file-upload scorm="zip" dir="files" :beforeMsg="needOrg" :showList="true" :value="imageShowUrl" :limit="5" @success="handleUploadSuccess" @remove="handleRemoveSuccess"></file-upload>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@@ -159,7 +159,7 @@
|
|||||||
<el-table-column prop="fileName" label="文件名称"></el-table-column>
|
<el-table-column prop="fileName" label="文件名称"></el-table-column>
|
||||||
<el-table-column prop="name" label="课件名称">
|
<el-table-column prop="name" label="课件名称">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-input type="text" maxlength="50" v-model="scope.row.name"></el-input>
|
<el-input type="text" v-model="scope.row.name"></el-input>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="resType" label="类型" width="80">
|
<el-table-column prop="resType" label="类型" width="80">
|
||||||
@@ -169,8 +169,7 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="duration" label="时长(分)" width="100">
|
<el-table-column prop="duration" label="时长(分)" width="100">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<!-- <el-input type="number" :stpe="1" min="0" size="small" step-strictly v-model="scope.row.minute"></el-input> -->
|
<el-input type="number" size="small" v-model="scope.row.minute"></el-input>
|
||||||
<el-input-number style="width: 78px;" :max="999" controls-position="right" size="small" :min="0" v-model="scope.row.minute" :step="1" step-strictly></el-input-number>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="可见性" width="100">
|
<el-table-column label="可见性" width="100">
|
||||||
@@ -195,7 +194,7 @@
|
|||||||
<span slot="footer">
|
<span slot="footer">
|
||||||
<!-- <el-button type="infor" @click="isVisible(1)">移动端可见</el-button>
|
<!-- <el-button type="infor" @click="isVisible(1)">移动端可见</el-button>
|
||||||
<el-button type="infor" @click="isVisible(2)">pc端可见</el-button> -->
|
<el-button type="infor" @click="isVisible(2)">pc端可见</el-button> -->
|
||||||
<el-button type="primary" @click="saveUpload()" :loading="isTrue">保存</el-button>
|
<el-button type="primary" @click="saveUpload()">保存</el-button>
|
||||||
</span>
|
</span>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
<el-dialog v-if="coursewareShow" title="预览课件" :close-on-click-modal="false" width="800px" :visible.sync="coursewareShow" custom-class="g-dialog">
|
<el-dialog v-if="coursewareShow" title="预览课件" :close-on-click-modal="false" width="800px" :visible.sync="coursewareShow" custom-class="g-dialog">
|
||||||
@@ -247,7 +246,7 @@
|
|||||||
<el-form-item label="课件类型">{{ getType(form.resType) }}</el-form-item>
|
<el-form-item label="课件类型">{{ getType(form.resType) }}</el-form-item>
|
||||||
<el-form-item label="时长(分)">
|
<el-form-item label="时长(分)">
|
||||||
<!-- <el-input v-model="form.duration"></el-input> -->
|
<!-- <el-input v-model="form.duration"></el-input> -->
|
||||||
<el-input-number :precision="0" style="width:100%;text-align:left;" :min="1" placeholder="请输入数字" :max="99999999" show-word-limit controls-position="right" v-model="form.minute"></el-input-number>
|
<el-input type="number" placeholder="请输入数字" :maxlength="32" show-word-limit v-model="form.minute"></el-input>
|
||||||
<!-- <el-input-number max="" v-model="form.duration" controls-position="right"></el-input-number> -->
|
<!-- <el-input-number max="" v-model="form.duration" controls-position="right"></el-input-number> -->
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="可见性">
|
<el-form-item label="可见性">
|
||||||
@@ -281,8 +280,6 @@ export default {
|
|||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
isTrue: false,
|
|
||||||
isFalse: false,
|
|
||||||
resOwnerListMap: [],
|
resOwnerListMap: [],
|
||||||
//fileBaseUrl: process.env.VUE_APP_FILE_BASE_URL,
|
//fileBaseUrl: process.env.VUE_APP_FILE_BASE_URL,
|
||||||
fileBaseUrl:this.$xpage.constants.fileBaseUrl, //获成动态获取的处理
|
fileBaseUrl:this.$xpage.constants.fileBaseUrl, //获成动态获取的处理
|
||||||
@@ -395,12 +392,6 @@ export default {
|
|||||||
this.search();
|
this.search();
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
isTrueChange(val){
|
|
||||||
this.isTrue = val
|
|
||||||
},
|
|
||||||
isFalseChange(val){
|
|
||||||
this.isFalse = val
|
|
||||||
},
|
|
||||||
beforeCheck(){
|
beforeCheck(){
|
||||||
if(!this.upload.orgId ||!this.upload.orgName){
|
if(!this.upload.orgId ||!this.upload.orgName){
|
||||||
return false;
|
return false;
|
||||||
@@ -493,11 +484,7 @@ export default {
|
|||||||
this.form.device = 2;
|
this.form.device = 2;
|
||||||
}
|
}
|
||||||
//时长,秒与分钟的转化
|
//时长,秒与分钟的转化
|
||||||
if(!this.form.minute){
|
//if(this.form.)
|
||||||
return this.$message.error('请输入时长');
|
|
||||||
}else{
|
|
||||||
this.form.duration = Number(this.form.minute) * 60;
|
|
||||||
}
|
|
||||||
try {
|
try {
|
||||||
const { status,message} = await coueseFile.batchUpdate([this.form]);
|
const { status,message} = await coueseFile.batchUpdate([this.form]);
|
||||||
if (status === 200) {
|
if (status === 200) {
|
||||||
@@ -568,7 +555,7 @@ export default {
|
|||||||
// remark: 备注说明,可以为空,不填
|
// remark: 备注说明,可以为空,不填
|
||||||
};
|
};
|
||||||
//try {
|
//try {
|
||||||
coueseFile.saveUpload2(data).then(res=>{
|
coueseFile.saveUpload(data).then(res=>{
|
||||||
if(res.status==200){
|
if(res.status==200){
|
||||||
//console.log('上传文件成功:'+rs.result.displayName);
|
//console.log('上传文件成功:'+rs.result.displayName);
|
||||||
res.result.device1 = true;
|
res.result.device1 = true;
|
||||||
@@ -577,18 +564,12 @@ export default {
|
|||||||
if(res.result.duration){
|
if(res.result.duration){
|
||||||
res.result.minute=Math.round(res.result.duration/60); //四舍五入
|
res.result.minute=Math.round(res.result.duration/60); //四舍五入
|
||||||
}
|
}
|
||||||
if(res.result.duration==0){
|
|
||||||
this.$message.error('上传的视频时长不能为0,请手动编辑时长');
|
|
||||||
}
|
|
||||||
this.fileList.push(res.result);
|
this.fileList.push(res.result);
|
||||||
this.isTrue = false;
|
|
||||||
}else{
|
}else{
|
||||||
this.$message.error(res.message);
|
this.$message.error(res.message);
|
||||||
this.isFalse = false
|
|
||||||
}
|
}
|
||||||
}).catch (error=>{
|
}).catch (error=>{
|
||||||
console.log(error,'error')
|
console.log(error,'error')
|
||||||
this.isFalse = false
|
|
||||||
//this.$message.error(error);
|
//this.$message.error(error);
|
||||||
});
|
});
|
||||||
// const { result, status } = coueseFile.saveUpload(data);
|
// const { result, status } = coueseFile.saveUpload(data);
|
||||||
@@ -617,26 +598,16 @@ export default {
|
|||||||
},
|
},
|
||||||
handleCloseCheck(done){
|
handleCloseCheck(done){
|
||||||
//console.log('关闭的处理aaaaa');
|
//console.log('关闭的处理aaaaa');
|
||||||
if(this.isTrue&&this.isFalse){
|
|
||||||
this.$message.error('文件正在上传中,请耐心等待');
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if(this.fileList.length>0){
|
if(this.fileList.length>0){
|
||||||
this.$message.error('有待保存的上传文件,请执行保存操作');
|
this.$message.error('有待保存的上传文件,请执行保存操作');
|
||||||
return false;
|
return false;
|
||||||
}else{
|
}else{
|
||||||
this.isTrue = false
|
|
||||||
this.isFalse = false
|
|
||||||
return done(true);
|
return done(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
// 文件上传保存
|
// 文件上传保存
|
||||||
saveUpload() {
|
saveUpload() {
|
||||||
if(this.fileList.length<=0){
|
|
||||||
this.$message.error('请上传文件');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if(!this.upload.orgName){
|
if(!this.upload.orgName){
|
||||||
this.$message.success('请选择资源归属');
|
this.$message.success('请选择资源归属');
|
||||||
return;
|
return;
|
||||||
@@ -657,20 +628,6 @@ export default {
|
|||||||
item.duration = item.minute ? parseFloat(item.minute) * 60 : 1800;
|
item.duration = item.minute ? parseFloat(item.minute) * 60 : 1800;
|
||||||
});
|
});
|
||||||
this.loading = true;
|
this.loading = true;
|
||||||
const messageD = this.fileList.some(item =>{
|
|
||||||
if(item.name == ''){
|
|
||||||
this.$message.error('课件名称不能为空');
|
|
||||||
return true;
|
|
||||||
}else if(!item.minute||item.minute == undefined){
|
|
||||||
this.$message.error('时长不能为空并且不能为0');
|
|
||||||
return true;
|
|
||||||
}else{
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
})
|
|
||||||
if(messageD){
|
|
||||||
return
|
|
||||||
}
|
|
||||||
coueseFile.batchUpdate(this.fileList).then(rs => {
|
coueseFile.batchUpdate(this.fileList).then(rs => {
|
||||||
if (rs.status === 200) {
|
if (rs.status === 200) {
|
||||||
this.$message.success('保存成功');
|
this.$message.success('保存成功');
|
||||||
@@ -836,17 +793,6 @@ export default {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
::v-deep .el-input-number.is-controls-right .el-input__inner{
|
|
||||||
padding-right: 20px;
|
|
||||||
padding-left: 8px;
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
::v-deep .el-input-number__decrease{
|
|
||||||
width: 16px;
|
|
||||||
}
|
|
||||||
::v-deep .el-input-number__increase{
|
|
||||||
width: 16px;
|
|
||||||
}
|
|
||||||
.butpost{
|
.butpost{
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 1%;
|
right: 1%;
|
||||||
|
|||||||
@@ -1,206 +1,206 @@
|
|||||||
<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><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-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 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="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 style="padding: 0px 5px;"><el-button type="primary" @click="exportStudentOfTearcher()" icon="el-icon-search" size="small" round>导出学员信息</el-button></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="Export">
|
<div class="Export">
|
||||||
<!-- <div style="padding-left: 10px;"><el-button type="primary" @click="exportFile()" icon="el-icon-search" size="small" round>导出</el-button></div> -->
|
<!-- <div style="padding-left: 10px;"><el-button type="primary" @click="exportFile()" icon="el-icon-search" size="small" round>导出</el-button></div> -->
|
||||||
<!-- <div style="padding: 0px 5px;"><el-button icon="el-icon-refresh-right" type="primary" size="small" round>导出学员信息</el-button></div> -->
|
<!-- <div style="padding: 0px 5px;"><el-button icon="el-icon-refresh-right" type="primary" size="small" round>导出学员信息</el-button></div> -->
|
||||||
</div>
|
</div>
|
||||||
<div style="margin-top:20px;">
|
<div style="margin-top:20px;">
|
||||||
<el-table :data="pageData" border stripe>
|
<el-table :data="pageData" border stripe>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
label="课程时间"
|
label="课程时间"
|
||||||
prop="courseTime"
|
prop="courseTime"
|
||||||
width="200px">
|
width="200px">
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
label="课程名称"
|
label="课程名称"
|
||||||
prop="courseName"
|
prop="courseName"
|
||||||
width="200px">
|
width="200px">
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
label="开课场地"
|
label="开课场地"
|
||||||
prop="address"
|
prop="address"
|
||||||
width="240px">
|
width="240px">
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
label="所属课程"
|
label="所属课程"
|
||||||
prop="parentCourse"
|
prop="parentCourse"
|
||||||
width="120px">
|
width="120px">
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
label="所属项目"
|
label="所属项目"
|
||||||
prop="parentProject"
|
prop="parentProject"
|
||||||
></el-table-column>
|
></el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
label="所属路径"
|
label="所属路径"
|
||||||
prop="parentRoute"
|
prop="parentRoute"
|
||||||
width="200px"
|
width="200px"
|
||||||
></el-table-column>
|
></el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
label="学习总人数"
|
label="学习总人数"
|
||||||
prop="studentNumber"
|
prop="studentNumber"
|
||||||
width="100px"
|
width="100px"
|
||||||
></el-table-column>
|
></el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
label="时长(分钟)"
|
label="时长(分钟)"
|
||||||
width="100px"
|
width="100px"
|
||||||
prop="period"
|
prop="period"
|
||||||
></el-table-column>
|
></el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
label="评分"
|
label="评分"
|
||||||
width="100px"
|
width="100px"
|
||||||
prop="score"
|
prop="score"
|
||||||
></el-table-column>
|
></el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
label="操作"
|
label="操作"
|
||||||
align="center"
|
align="center"
|
||||||
width="150px"
|
width="150px"
|
||||||
prop="cz"
|
prop="cz"
|
||||||
fixed="right"
|
fixed="right"
|
||||||
>
|
>
|
||||||
<template v-slot="scope">
|
<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)" size="small">导出学员信息</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
</div>
|
</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() {
|
mounted() {
|
||||||
this.recordList(1);
|
this.recordList(1);
|
||||||
|
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapGetters(['userInfo'])
|
...mapGetters(['userInfo'])
|
||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
|
|
||||||
// 导出所有记录
|
// 导出所有记录
|
||||||
exportFile(){
|
exportFile(){
|
||||||
let req = {
|
let req = {
|
||||||
userId: this.userInfo.sysId
|
userId: this.userInfo.sysId
|
||||||
// userId:"70F80F4E-34BA-10AB-894A-8FA812B19637"
|
// userId:"70F80F4E-34BA-10AB-894A-8FA812B19637"
|
||||||
}
|
}
|
||||||
apiCourse.courseRecordExport(req).then(res=>{
|
apiCourse.courseRecordExport(req).then(res=>{
|
||||||
const link = document.createElement('a');// 创建a标签
|
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.style.display = "none";
|
||||||
link.href = URL.createObjectURL(blob); // 创建URL
|
link.href = URL.createObjectURL(blob); // 创建URL
|
||||||
link.setAttribute("download", "授课记录.xls");
|
link.setAttribute("download", "授课记录.xls");
|
||||||
document.body.appendChild(link);
|
document.body.appendChild(link);
|
||||||
link.click();
|
link.click();
|
||||||
document.body.removeChild(link);
|
document.body.removeChild(link);
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
// 导出课程下的学员信息
|
// 导出课程下的学员信息
|
||||||
exportStudentOfCourse(courseId){
|
exportStudentOfCourse(courseId){
|
||||||
let userId = this.userInfo.sysId;
|
let userId = this.userInfo.sysId;
|
||||||
apiCourse.exportStudentOfCourse(userId,courseId).then(res=>{
|
apiCourse.exportStudentOfCourse(userId,courseId).then(res=>{
|
||||||
const link = document.createElement('a');// 创建a标签
|
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.style.display = "none";
|
||||||
link.href = URL.createObjectURL(blob); // 创建URL
|
link.href = URL.createObjectURL(blob); // 创建URL
|
||||||
link.setAttribute("download", "授课记录.xls");
|
link.setAttribute("download", "授课记录.xls");
|
||||||
document.body.appendChild(link);
|
document.body.appendChild(link);
|
||||||
link.click();
|
link.click();
|
||||||
document.body.removeChild(link);
|
document.body.removeChild(link);
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
// 导出教师下的所有授课记录下的学员信息
|
// 导出教师下的所有授课记录下的学员信息
|
||||||
exportStudentOfTearcher(){
|
exportStudentOfTearcher(){
|
||||||
let userId = this.userInfo.sysId;
|
let userId = this.userInfo.sysId;
|
||||||
// let userId = '5D36C207-64F4-C512-312D-C9598257695C';
|
// let userId = '5D36C207-64F4-C512-312D-C9598257695C';
|
||||||
apiCourse.exportStudentOfTearcher(userId).then(res=>{
|
apiCourse.exportStudentOfTearcher(userId).then(res=>{
|
||||||
const link = document.createElement('a');// 创建a标签
|
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.style.display = "none";
|
||||||
link.href = URL.createObjectURL(blob); // 创建URL
|
link.href = URL.createObjectURL(blob); // 创建URL
|
||||||
link.setAttribute("download", "授课记录.xls");
|
link.setAttribute("download", "授课记录.xls");
|
||||||
document.body.appendChild(link);
|
document.body.appendChild(link);
|
||||||
link.click();
|
link.click();
|
||||||
document.body.removeChild(link);
|
document.body.removeChild(link);
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
recordList(pageIndex){
|
recordList(pageIndex){
|
||||||
let req = {
|
let req = {
|
||||||
// userId:"6B049FAF-C314-7CCF-0D28-0D23F4C42531",
|
// userId:"6B049FAF-C314-7CCF-0D28-0D23F4C42531",
|
||||||
userId: this.userInfo.sysId,
|
userId: this.userInfo.sysId,
|
||||||
keyword:this.keyword,
|
keyword:this.keyword,
|
||||||
page:pageIndex,
|
page:pageIndex,
|
||||||
pageSize:10
|
pageSize:10
|
||||||
}
|
}
|
||||||
apiCourse.courseRecordList(req).then(res=>{
|
apiCourse.courseRecordList(req).then(res=>{
|
||||||
if(res.status == 200) {
|
if(res.status == 200) {
|
||||||
this.pageData = res.result.list;
|
this.pageData = res.result.list;
|
||||||
this.pageInfo = res.result.pageInfo;
|
this.pageInfo = res.result.pageInfo;
|
||||||
} else {
|
} 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>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
{img:'01',url:'1265897142383042560'},
|
{img:'01',url:'1265897142383042560'},
|
||||||
{img:'02',url:'1265697724606210048'},
|
{img:'02',url:'1265697724606210048'},
|
||||||
{img:'003',url:'1280185851054231552'},
|
{img:'003',url:'1280185851054231552'},
|
||||||
{img:'4',url:''},
|
{img:'04',url:'1321778585966247936'},
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -97,7 +97,7 @@
|
|||||||
padding: 28px;
|
padding: 28px;
|
||||||
padding-top: 62px;
|
padding-top: 62px;
|
||||||
margin-bottom: 59px;
|
margin-bottom: 59px;
|
||||||
|
|
||||||
.img {
|
.img {
|
||||||
width: 100%; // 图片宽度占满item宽度
|
width: 100%; // 图片宽度占满item宽度
|
||||||
height: auto; // 自动调整高度
|
height: auto; // 自动调整高度
|
||||||
@@ -132,7 +132,7 @@
|
|||||||
padding: 14px;
|
padding: 14px;
|
||||||
padding-top: 26px;
|
padding-top: 26px;
|
||||||
margin-bottom: 30px;
|
margin-bottom: 30px;
|
||||||
|
|
||||||
.img {
|
.img {
|
||||||
width: 100%; // 图片宽度占满item宽度
|
width: 100%; // 图片宽度占满item宽度
|
||||||
height: auto; // 自动调整高度
|
height: auto; // 自动调整高度
|
||||||
@@ -176,4 +176,4 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -22,14 +22,14 @@ export default {
|
|||||||
},
|
},
|
||||||
methods:{
|
methods:{
|
||||||
getTeacherList() {
|
getTeacherList() {
|
||||||
addTeacher({pageNo:1,pageSize:100,userNo:''}).then(res=>{
|
addTeacher({pageNo:1,pageSize:20,keyword:''}).then(res=>{
|
||||||
this.options = res.data.map(item => {
|
this.options = res.data.map(item => {
|
||||||
return { value: item.realName, label: item.realName };
|
return { value: item.realName, label: item.realName };
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
getCoachingTeacher(val){
|
getCoachingTeacher(val){
|
||||||
addTeacher({pageNo:1,pageSize:20,userNo:val}).then(res=>{
|
addTeacher({pageNo:1,pageSize:20,keyword:val}).then(res=>{
|
||||||
this.options = res.data.map(item => {
|
this.options = res.data.map(item => {
|
||||||
return { value: item.realName, label: item.realName };
|
return { value: item.realName, label: item.realName };
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -64,16 +64,17 @@ export default {
|
|||||||
getProgress({teacherId:id}).then(res=>{
|
getProgress({teacherId:id}).then(res=>{
|
||||||
this.progressData=res.data
|
this.progressData=res.data
|
||||||
if ( res.data.length>=1 ){
|
if ( res.data.length>=1 ){
|
||||||
res.data.forEach((item,index)=>{
|
const isAll = true;
|
||||||
if (item.progress==100 && index==res.data.length-1){
|
res.data.some(item => {
|
||||||
this.disabled=false
|
if (item.progress != 100) {
|
||||||
}else if (item.progress==100) {
|
this.disabled = true;
|
||||||
}else {
|
isAll = false;
|
||||||
this.disabled=true
|
return true;
|
||||||
return
|
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
|
if (isAll) {
|
||||||
|
this.disabled = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -25,14 +25,14 @@ export default {
|
|||||||
},
|
},
|
||||||
methods:{
|
methods:{
|
||||||
getTeacherList() {
|
getTeacherList() {
|
||||||
addTeacher({pageNo:1,pageSize:100,userNo:''}).then(res=>{
|
addTeacher({pageNo:1,pageSize:20,keyword:''}).then(res=>{
|
||||||
this.options = res.data.map(item => {
|
this.options = res.data.map(item => {
|
||||||
return { value: item.realName, label: item.realName };
|
return { value: item.realName, label: item.realName };
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
getCoachingTeacher(val){
|
getCoachingTeacher(val){
|
||||||
addTeacher({pageNo:1,pageSize:20,userNo:val}).then(res=>{
|
addTeacher({pageNo:1,pageSize:20,keyword:val}).then(res=>{
|
||||||
this.options = res.data.map(item => {
|
this.options = res.data.map(item => {
|
||||||
return { value: item.realName, label: item.realName };
|
return { value: item.realName, label: item.realName };
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -826,6 +826,7 @@ export default {
|
|||||||
if (this.refId) {
|
if (this.refId) {
|
||||||
this.queryCondition.type = 'recommend'
|
this.queryCondition.type = 'recommend'
|
||||||
}
|
}
|
||||||
|
this.searchPageView();
|
||||||
this.loadTypeData();//加载分类
|
this.loadTypeData();//加载分类
|
||||||
this.getAnkingData();
|
this.getAnkingData();
|
||||||
this.searchterm();
|
this.searchterm();
|
||||||
@@ -1507,7 +1508,7 @@ export default {
|
|||||||
};
|
};
|
||||||
});
|
});
|
||||||
res.result.list.forEach(item=>{
|
res.result.list.forEach(item=>{
|
||||||
item.viewRankTags = item.viewRankTags.slice(0,2)
|
item.viewRankTags = item.viewRankTags.slice(0,2)||[]
|
||||||
})
|
})
|
||||||
this.caseList.list = res.result.list
|
this.caseList.list = res.result.list
|
||||||
this.getCaseUserData(res.result.list);
|
this.getCaseUserData(res.result.list);
|
||||||
|
|||||||
@@ -253,7 +253,7 @@ export default {
|
|||||||
if(res.status==200){
|
if(res.status==200){
|
||||||
let localCourseIds=[];//本地在线课程的id集合
|
let localCourseIds=[];//本地在线课程的id集合
|
||||||
res.result.list.forEach(item=>{
|
res.result.list.forEach(item=>{
|
||||||
if(item.courseImage.startsWith('/upload')){
|
if(item.courseImage?.startsWith('/upload')){
|
||||||
item.courseImage=$this.fileUrl+item.courseImage.substring(7)
|
item.courseImage=$this.fileUrl+item.courseImage.substring(7)
|
||||||
}
|
}
|
||||||
if(item.source==2){
|
if(item.source==2){
|
||||||
|
|||||||
Reference in New Issue
Block a user