diff --git a/src/api/modules/courseFile.js b/src/api/modules/courseFile.js
index ee84dd57..3188addb 100644
--- a/src/api/modules/courseFile.js
+++ b/src/api/modules/courseFile.js
@@ -3,6 +3,7 @@
* 下载课件,一期是直接在新的窗口打开文件的地址就可以了。不采用流的方式下载
*/
import ajax from '@/utils/xajax.js'
+import ajax2 from '@/utils/xajax2.js'
/**
* 分页查询,课件的管理列表
@@ -49,6 +50,9 @@ const findList = function(data) {
const saveUpload = function(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);
+}
/**
* 批量更新,上传时,一个一个上传,下面的列表的保存,使用此方法
@@ -85,6 +89,7 @@ const detail = function(id) {
export default {
pageList,
saveUpload,
+ saveUpload2,
batchUpdate,
detail,
delFile
diff --git a/src/components/Course/catalogCourseware.vue b/src/components/Course/catalogCourseware.vue
index 60bb7b2e..0d19b3c3 100644
--- a/src/components/Course/catalogCourseware.vue
+++ b/src/components/Course/catalogCourseware.vue
@@ -51,6 +51,9 @@
+
视频时长:
+
+
保存
@@ -77,6 +80,9 @@
秒 -->
+ 音频时长:
+
+
保存
@@ -325,6 +331,7 @@
completeSetup:0,
second:5,
setupTage:0,
+ duration: 0,
},
homework:{courseId: '', name:'', content:'', file:'', deadTime: '', submitMode: 3},
homeworkChange:{},
@@ -390,6 +397,7 @@
this.curriculumData =JSON.parse(newVal.content);
}else{
this.curriculumData.url=newVal.content;
+ this.curriculumData.duration = newVal.duration;
}
}
}
@@ -412,6 +420,7 @@
completeSetup:0,
second:5,
setupTage:0,
+ duration: 0,
};
//this.assess
},
@@ -503,6 +512,10 @@
this.content.content=JSON.stringify(this.linkInfo);
}
} else if(this.content.contentType==10 || this.content.contentType==20) {
+ if(!this.curriculumData.duration){
+ this.$message.error("请手动输入课件时长");
+ return;
+ }
this.content.content=JSON.stringify(this.curriculumData);
}
let jsonData={
@@ -639,6 +652,7 @@
this.content.content=cfile.filePath;
}
}
+ this.curriculumData.duration = cfile.duration;
this.content.courseId=this.course.id;
this.content.duration=cfile.duration;//时长
this.content.sortIndex=1;
diff --git a/src/components/Course/chooseCourseFile.vue b/src/components/Course/chooseCourseFile.vue
index 74e3301b..13ad471f 100644
--- a/src/components/Course/chooseCourseFile.vue
+++ b/src/components/Course/chooseCourseFile.vue
@@ -90,6 +90,7 @@
},
data(){
return {
+ successParams: {},
uploadFileUrl: process.env.VUE_APP_BASE_API + "/xboe/sys/xuploader/file/upload", // 上传的图片服务器地址
data:{
dir:'course'
@@ -172,7 +173,7 @@
},
// 上传成功回调
handleUploadSuccess(res, file) {
- //console.log(res);
+ console.log(res,file,'resfile')
if(res.status == 200) {
//上传到课件库
//console.log(res.result);
@@ -186,6 +187,12 @@
duration:this.duration,
remark:'课程中直接上传'
}
+ if(res.result.fileType == 'mp4'||res.result.fileType == 'mp3'){
+ this.successParams = courseWare
+ this.courseFile = {fileName:res.result.displayName,id: '1',resType:'10'}
+ this.$message({message:"上传成功",type:'success',offset:100});
+ return
+ }
apiCourseFile.saveUpload(courseWare).then(rs=>{
if(rs.status==200){
this.courseFile=rs.result;
@@ -249,7 +256,19 @@
},
chooseCourseFile(ccfile){
- this.$emit('choose', ccfile);
+ if(ccfile.resType == 10){
+ apiCourseFile.saveUpload(this.successParams).then(rs=>{
+ if(rs.status==200){
+ this.$emit('choose', rs.result);
+ }else{
+ this.$message.error(rs.message);
+ }
+ }).catch(err=>{
+ console.log(err,'errrrrr')
+ })
+ }else{
+ this.$emit('choose', ccfile);
+ }
}
}
}
diff --git a/src/components/Course/weikeContent.vue b/src/components/Course/weikeContent.vue
index 168aa565..fab56796 100644
--- a/src/components/Course/weikeContent.vue
+++ b/src/components/Course/weikeContent.vue
@@ -75,6 +75,9 @@
秒 -->
+ 视频时长:
+
+
保存
@@ -102,6 +105,9 @@
+ 音频时长:
+
+
保存
@@ -657,6 +663,7 @@
completeSetup:0,
second:5,
setupTage:0,
+ duration: 0,
},
},
pdfTip:'',//pdf文件的提示
@@ -835,10 +842,12 @@
}
}
if(con.contentType==10 || con.contentType==20){
+ console.log(con.content,'con.content')
if(con.content.startsWith('\{')){
$this.cware.curriculumData=JSON.parse(con.content);
}else{
$this.cware.curriculumData.url=con.content;
+ $this.cware.curriculumData.duration = con.duration;
}
}
$this.cwareChange = deepClone($this.cware);
@@ -986,6 +995,7 @@
this.cware.content.contentName=row.name;
this.cware.content.content=row.filePath;
this.cware.curriculumData.url = row.filePath;
+ this.cware.curriculumData.duration=row.duration;
this.cware.content.duration=row.duration;//时长
this.cware.findShow=false;
if(this.cware.content.contentType==40){
@@ -1067,6 +1077,11 @@
this.$message.error("请选择课件");
return;
}
+ if(!this.cware.curriculumData.duration){
+ this.$message.error("请手动输入课件时长");
+ this.loading=false;
+ return;
+ }
postData.content.content=JSON.stringify(this.cware.curriculumData);
this.cwareChange.curriculumData = deepClone(this.cware.curriculumData)
}
@@ -1216,6 +1231,7 @@
this.cware.curriculumData.url = cfile.filePath;
}
}
+ this.cware.curriculumData.duration=cfile.duration;
this.cware.content.duration=cfile.duration;//时长
this.saveContent(1);
diff --git a/src/components/FileUpload/index.vue b/src/components/FileUpload/index.vue
index 0391f557..e1823b00 100644
--- a/src/components/FileUpload/index.vue
+++ b/src/components/FileUpload/index.vue
@@ -12,6 +12,7 @@
:show-file-list="showList"
:data="data"
:headers="headers"
+ :on-remove="handleRemove"
class="upload-file-uploader"
ref="upload"
>
@@ -142,6 +143,9 @@ export default {
},
},
methods: {
+ handleRemove(file, fileList){
+ this.$emit('isTrue',false)
+ },
// 上传前校检格式和大小
handleBeforeUpload(file) {
if(this.beforeMsg){
@@ -186,6 +190,8 @@ export default {
if(this.loading) {
this.isLoading = true;
}
+ this.$emit('isTrue',true)
+ this.$emit('isFalse',true)
return true;
},
// 文件个数超出
@@ -195,6 +201,7 @@ export default {
// 上传失败
handleUploadError(err) {
this.isLoading = false;
+ this.$emit('isTrue',false)
this.$message({message:"上传失败, 请重试",type:'error',offset:100});
},
// 上传成功回调
@@ -217,16 +224,13 @@ export default {
if(delIdx>-1){
fileList.splice(delIdx,1);
}
- this.$emit("success", res);
} else {
this.isLoading = false;
- if(this.limit == 1){
- this.fileList = [];
- }
+ //this.fileList = [];
this.$message({message:"上传失败",type:'error',offset:100});
}
- // this.$emit("success", res);
+ this.$emit("success", res);
},
// 删除文件
handleDelete(index) {
diff --git a/src/utils/xajax2.js b/src/utils/xajax2.js
new file mode 100644
index 00000000..0034a5ad
--- /dev/null
+++ b/src/utils/xajax2.js
@@ -0,0 +1,233 @@
+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
+}
diff --git a/src/views/course/Courseware.vue b/src/views/course/Courseware.vue
index 3b6dae88..9c208dbf 100644
--- a/src/views/course/Courseware.vue
+++ b/src/views/course/Courseware.vue
@@ -149,7 +149,7 @@
-
+
@@ -159,7 +159,7 @@
-
+
@@ -169,7 +169,8 @@
-
+
+
@@ -194,7 +195,7 @@
- 保存
+ 保存
@@ -280,6 +281,8 @@ export default {
},
data() {
return {
+ isTrue: false,
+ isFalse: false,
resOwnerListMap: [],
//fileBaseUrl: process.env.VUE_APP_FILE_BASE_URL,
fileBaseUrl:this.$xpage.constants.fileBaseUrl, //获成动态获取的处理
@@ -392,6 +395,12 @@ export default {
this.search();
},
methods: {
+ isTrueChange(val){
+ this.isTrue = val
+ },
+ isFalseChange(val){
+ this.isFalse = val
+ },
beforeCheck(){
if(!this.upload.orgId ||!this.upload.orgName){
return false;
@@ -555,7 +564,7 @@ export default {
// remark: 备注说明,可以为空,不填
};
//try {
- coueseFile.saveUpload(data).then(res=>{
+ coueseFile.saveUpload2(data).then(res=>{
if(res.status==200){
//console.log('上传文件成功:'+rs.result.displayName);
res.result.device1 = true;
@@ -564,12 +573,18 @@ export default {
if(res.result.duration){
res.result.minute=Math.round(res.result.duration/60); //四舍五入
}
+ if(res.result.duration==0){
+ this.$message.error('上传的视频时长不能为0,请手动编辑时长');
+ }
this.fileList.push(res.result);
+ this.isTrue = false;
}else{
this.$message.error(res.message);
+ this.isFalse = false
}
}).catch (error=>{
console.log(error,'error')
+ this.isFalse = false
//this.$message.error(error);
});
// const { result, status } = coueseFile.saveUpload(data);
@@ -598,16 +613,26 @@ export default {
},
handleCloseCheck(done){
//console.log('关闭的处理aaaaa');
+ if(this.isTrue&&this.isFalse){
+ this.$message.error('文件正在上传中,请耐心等待');
+ return false;
+ }
if(this.fileList.length>0){
this.$message.error('有待保存的上传文件,请执行保存操作');
return false;
}else{
+ this.isTrue = false
+ this.isFalse = false
return done(true);
}
},
// 文件上传保存
saveUpload() {
+ if(this.fileList.length<=0){
+ this.$message.error('请上传文件');
+ return;
+ }
if(!this.upload.orgName){
this.$message.success('请选择资源归属');
return;
@@ -628,6 +653,20 @@ export default {
item.duration = item.minute ? parseFloat(item.minute) * 60 : 1800;
});
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 => {
if (rs.status === 200) {
this.$message.success('保存成功');
@@ -793,6 +832,16 @@ export default {