diff --git a/public/react/package.json b/public/react/package.json
index 54519f009..21f37b76e 100644
--- a/public/react/package.json
+++ b/public/react/package.json
@@ -42,6 +42,7 @@
"immutability-helper": "^2.6.6",
"install": "^0.12.2",
"jest": "20.0.4",
+ "js-base64": "^2.5.1",
"js-file-download": "^0.4.7",
"lodash": "^4.17.5",
"loglevel": "^1.6.1",
@@ -164,6 +165,7 @@
"babel-plugin-import": "^1.11.0",
"concat": "^1.0.3",
"happypack": "^5.0.1",
+ "js-base64": "^2.5.1",
"videojs-for-react": "^0.0.3",
"webpack-bundle-analyzer": "^3.0.3",
"webpack-parallel-uglify-plugin": "^1.1.0"
diff --git a/public/react/public/js/jsFromMiddleLayer/base64.js b/public/react/public/js/jsFromMiddleLayer/base64.js
deleted file mode 100755
index c4df1c0de..000000000
--- a/public/react/public/js/jsFromMiddleLayer/base64.js
+++ /dev/null
@@ -1,103 +0,0 @@
-function Base64() {
-
- // private property
- _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
-
- // public method for encoding
- this.encode = function (input) {
- var output = "";
- var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
- var i = 0;
- input = _utf8_encode(input);
- while (i < input.length) {
- chr1 = input.charCodeAt(i++);
- chr2 = input.charCodeAt(i++);
- chr3 = input.charCodeAt(i++);
- enc1 = chr1 >> 2;
- enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
- enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
- enc4 = chr3 & 63;
- if (isNaN(chr2)) {
- enc3 = enc4 = 64;
- } else if (isNaN(chr3)) {
- enc4 = 64;
- }
- output = output +
- _keyStr.charAt(enc1) + _keyStr.charAt(enc2) +
- _keyStr.charAt(enc3) + _keyStr.charAt(enc4);
- }
- return output;
- }
-
- // public method for decoding
- this.decode = function (input) {
- var output = "";
- var chr1, chr2, chr3;
- var enc1, enc2, enc3, enc4;
- var i = 0;
- input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
- while (i < input.length) {
- enc1 = _keyStr.indexOf(input.charAt(i++));
- enc2 = _keyStr.indexOf(input.charAt(i++));
- enc3 = _keyStr.indexOf(input.charAt(i++));
- enc4 = _keyStr.indexOf(input.charAt(i++));
- chr1 = (enc1 << 2) | (enc2 >> 4);
- chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
- chr3 = ((enc3 & 3) << 6) | enc4;
- output = output + String.fromCharCode(chr1);
- if (enc3 != 64) {
- output = output + String.fromCharCode(chr2);
- }
- if (enc4 != 64) {
- output = output + String.fromCharCode(chr3);
- }
- }
- output = _utf8_decode(output);
- return output;
- }
-
- // private method for UTF-8 encoding
- _utf8_encode = function (string) {
- string = string.replace(/\r\n/g,"\n");
- var utftext = "";
- for (var n = 0; n < string.length; n++) {
- var c = string.charCodeAt(n);
- if (c < 128) {
- utftext += String.fromCharCode(c);
- } else if((c > 127) && (c < 2048)) {
- utftext += String.fromCharCode((c >> 6) | 192);
- utftext += String.fromCharCode((c & 63) | 128);
- } else {
- utftext += String.fromCharCode((c >> 12) | 224);
- utftext += String.fromCharCode(((c >> 6) & 63) | 128);
- utftext += String.fromCharCode((c & 63) | 128);
- }
-
- }
- return utftext;
- }
-
- // private method for UTF-8 decoding
- _utf8_decode = function (utftext) {
- var string = "";
- var i = 0;
- var c = c1 = c2 = 0;
- while ( i < utftext.length ) {
- c = utftext.charCodeAt(i);
- if (c < 128) {
- string += String.fromCharCode(c);
- i++;
- } else if((c > 191) && (c < 224)) {
- c2 = utftext.charCodeAt(i+1);
- string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
- i += 2;
- } else {
- c2 = utftext.charCodeAt(i+1);
- c3 = utftext.charCodeAt(i+2);
- string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
- i += 3;
- }
- }
- return string;
- }
-}
\ No newline at end of file
diff --git a/public/react/src/modules/courses/Resource/Fileslistitem.js b/public/react/src/modules/courses/Resource/Fileslistitem.js
index 404214dfc..0ce4fba46 100644
--- a/public/react/src/modules/courses/Resource/Fileslistitem.js
+++ b/public/react/src/modules/courses/Resource/Fileslistitem.js
@@ -27,6 +27,7 @@ class Fileslistitem extends Component{
this.props.Settingtypes(discussMessage.id)
}
showfiles=()=>{
+ debugger
let {discussMessage,coursesId}=this.props
let file_id=discussMessage.id
let url="/files/"+file_id+"/histories.json"
@@ -35,12 +36,13 @@ class Fileslistitem extends Component{
course_id:coursesId
},
}).then((result)=>{
+
if(result.data.attachment_histories.length===0){
let link = document.createElement('a');
document.body.appendChild(link);
link.href = result.data.url;
- link.download = result.data.title;
+ link.download = '';
//兼容火狐浏览器
let evt = document.createEvent("MouseEvents");
evt.initEvent("click", false, false);
diff --git a/public/react/src/modules/courses/shixunHomework/Listofworks.js b/public/react/src/modules/courses/shixunHomework/Listofworks.js
index 37ad51216..db008e2c4 100644
--- a/public/react/src/modules/courses/shixunHomework/Listofworks.js
+++ b/public/react/src/modules/courses/shixunHomework/Listofworks.js
@@ -4,6 +4,7 @@ import {WordsBtn, ActionBtn} from 'educoder';
import TraineetraininginformationModal from './TraineetraininginformationModal';
import ModulationModal from "../coursesPublic/ModulationModal";
import HomeworkModal from "../coursesPublic/HomeworkModal";
+import {Base64} from 'js-base64';
import {
Form,
Select,
@@ -32,7 +33,6 @@ import moment from 'moment';
import 'moment/locale/zh-cn';
import {getImageUrl, toPath} from 'educoder';
import ShixunWorkModal from './Shixunworkdetails/ShixunWorkModal';
-
const Search = Input.Search;
const RadioGroup = Radio.Group;
const CheckboxGroup = Checkbox.Group;
@@ -1351,22 +1351,31 @@ class Listofworks extends Component {
axios.get((url),{responseType: 'blob'}).then((response) => {
console.log("1350");
console.log(response);
- if(response.data.status&&response.data.status===-1){
+ if(response.status&&response.status===-1){
- }else if(response.data.status&&response.data.status===-2){
+ }else if(response.status&&response.status===-2){
}else{
// window.location.href("/api"+url);
- console.log("开始下载zip文件")
+ // console.log("开始下载zip文件")
const type='application/zip'//ZIP文件
const blob = new Blob([response.data], { type: type })
const downloadElement = document.createElement('a')
const href = window.URL.createObjectURL(blob)
//后台再header中传文件名
- const name = decodeURI(response.headers['content-disposition'].split('=')[1])
+ // console.log(Base64.decode(response.headers['content-disposition'].split('=')[1]));
+ const string = Base64.decode(response.headers['content-disposition'].split('=')[1]);
downloadElement.href = href
- downloadElement.download = name
+ var now="";
+ try {
+ now = moment().year()+""+(moment().month()+1)+""+moment().date()+""+moment().hour()+""+moment().minute()+""
+ console.log(now);
+
+ } catch (e) {
+ console.log("1376");
+ }
+ downloadElement.download = string+now+".zip"
document.body.appendChild(downloadElement)
downloadElement.click()
document.body.removeChild(downloadElement) // 下载完成移除元素
@@ -1379,21 +1388,13 @@ class Listofworks extends Component {
// 课堂学生成绩的导出下载
Classstudentachievement=(url)=>{
console.log("Classstudentachievement");
- // const course_id = this.props.match.params.coursesId;
- // let url = "/courses/"+course_id+"/export_member_scores_excel.xlsx";
- // ,{
- // params: {
- // group_id: this.state.checkedValuesineinfo,
- // search: this.state.searchtext,
- // }
- // },{responseType: 'blob'})
axios.get((url),{responseType: 'blob'}).then((response) => {
console.log("1374");
console.log(response);
- if(response.data.status&&response.data.status===-1){
+ if(response.status&&response.status===-1){
- }else if(response.data.status&&response.data.status===-2){
+ }else if(response.status&&response.status===-2){
}else{
const type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' //excel文件
@@ -1401,17 +1402,24 @@ class Listofworks extends Component {
const downloadElement = document.createElement('a')
const href = window.URL.createObjectURL(blob)
//后台再header中传文件名
- const name = decodeURI(response.headers['content-disposition'].split('=')[1])
- console.log(response.headers['content-disposition'].split('=')[1]);
- console.log(name);
- console.log(decodeURIComponent(response.headers['content-disposition'].split('=')[1]));
+ // console.log("1409");
+ // console.log(Base64.decode(response.headers['content-disposition'].split('=')[1]));
+ const string = Base64.decode(response.headers['content-disposition'].split('=')[1]);
+ var now="";
+ try {
+ now = moment().year()+""+(moment().month()+1)+""+moment().date()+""+moment().hour()+""+moment().minute()+""
+ console.log("1422");
+ console.log(now);
+
+ } catch (e) {
+ console.log("1432");
+ }
downloadElement.href = href
- downloadElement.download = name
+ downloadElement.download =string+now+".xlsx";
document.body.appendChild(downloadElement)
downloadElement.click()
document.body.removeChild(downloadElement) // 下载完成移除元素
window.URL.revokeObjectURL(href) // 释放掉blob对象
-
}
}).catch((error) => {
console.log(error)
@@ -1568,6 +1576,7 @@ class Listofworks extends Component {
:""}
{this.props.isAdmin() ?
diff --git a/public/react/src/modules/courses/shixunHomework/ShixunStudentWork.js b/public/react/src/modules/courses/shixunHomework/ShixunStudentWork.js
index 109988fa9..3ac1b0bd2 100644
--- a/public/react/src/modules/courses/shixunHomework/ShixunStudentWork.js
+++ b/public/react/src/modules/courses/shixunHomework/ShixunStudentWork.js
@@ -32,6 +32,7 @@ import '../css/Courses.css'
import './style.css'
import moment from 'moment';
import 'moment/locale/zh-cn';
+import {Base64} from 'js-base64';
const Search = Input.Search;
const CheckboxGroup = Checkbox.Group;
@@ -469,7 +470,27 @@ class ShixunStudentWork extends Component {
}else if(response.data.status&&response.data.status===-2){
}else{
- window.open("/api"+url, '_blank');
+ const type='application/zip'//ZIP文件
+ const blob = new Blob([response.data], { type: type })
+ const downloadElement = document.createElement('a')
+ const href = window.URL.createObjectURL(blob)
+ //后台再header中传文件名
+ // console.log(Base64.decode(response.headers['content-disposition'].split('=')[1]));
+ const string = Base64.decode(response.headers['content-disposition'].split('=')[1]);
+ downloadElement.href = href
+ var now="";
+ try {
+ now = moment().year()+""+(moment().month()+1)+""+moment().date()+""+moment().hour()+""+moment().minute()+""
+ console.log(now);
+
+ } catch (e) {
+ console.log("1376");
+ }
+ downloadElement.download = string+now+".zip"
+ document.body.appendChild(downloadElement)
+ downloadElement.click()
+ document.body.removeChild(downloadElement) // 下载完成移除元素
+ window.URL.revokeObjectURL(href) // 释放掉blob对象
}
}).catch((error) => {
@@ -491,7 +512,29 @@ class ShixunStudentWork extends Component {
}else if(response.data.status&&response.data.status===-2){
}else{
- window.open("/api"+url, '_blank');
+ const type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' //excel文件
+ const blob = new Blob([response.data], { type: type })
+ const downloadElement = document.createElement('a')
+ const href = window.URL.createObjectURL(blob)
+ //后台再header中传文件名
+ // console.log("1409");
+ // console.log(Base64.decode(response.headers['content-disposition'].split('=')[1]));
+ const string = Base64.decode(response.headers['content-disposition'].split('=')[1]);
+ var now="";
+ try {
+ now = moment().year()+""+(moment().month()+1)+""+moment().date()+""+moment().hour()+""+moment().minute()+""
+ console.log("1422");
+ console.log(now);
+
+ } catch (e) {
+ console.log("1432");
+ }
+ downloadElement.href = href
+ downloadElement.download =string+now+".xlsx";
+ document.body.appendChild(downloadElement)
+ downloadElement.click()
+ document.body.removeChild(downloadElement) // 下载完成移除元素
+ window.URL.revokeObjectURL(href) // 释放掉blob对象
}
}).catch((error) => {
diff --git a/public/react/src/modules/courses/shixunHomework/ShixunWorkReport.js b/public/react/src/modules/courses/shixunHomework/ShixunWorkReport.js
index d120ec5ad..9c6ea2421 100644
--- a/public/react/src/modules/courses/shixunHomework/ShixunWorkReport.js
+++ b/public/react/src/modules/courses/shixunHomework/ShixunWorkReport.js
@@ -17,7 +17,9 @@ import '../css/members.css';
import "../common/formCommon.css";
import '../css/Courses.css';
import './style.css';
-
+import moment from 'moment';
+import 'moment/locale/zh-cn';
+import {Base64} from 'js-base64';
class ShixunWorkReport extends Component {
@@ -28,7 +30,47 @@ class ShixunWorkReport extends Component {
spinning:true
}
}
+ // 导出实习报告批量
+ internshipreport = (url) => {
+ console.log("internshipreport");
+ // var homeworkid = this.props.match.params.homeworkid;
+ // let url = "/zip/shixun_report";
+ axios.get(url).then((response) => {
+ console.log("326");
+ console.log(response);
+ if(response.data.status&&response.data.status===-1){
+
+
+ }else if(response.data.status&&response.data.status===-2){
+ }else{
+ const type='application/zip'//ZIP文件
+ const blob = new Blob([response.data], { type: type })
+ const downloadElement = document.createElement('a')
+ const href = window.URL.createObjectURL(blob)
+ //后台再header中传文件名
+ // console.log(Base64.decode(response.headers['content-disposition'].split('=')[1]));
+ const string = Base64.decode(response.headers['content-disposition'].split('=')[1]);
+ downloadElement.href = href
+ var now="";
+ try {
+ now = moment().year()+""+(moment().month()+1)+""+moment().date()+""+moment().hour()+""+moment().minute()+""
+ console.log(now);
+
+ } catch (e) {
+ console.log("1376");
+ }
+ downloadElement.download = string+now+".zip"
+ document.body.appendChild(downloadElement)
+ downloadElement.click()
+ document.body.removeChild(downloadElement) // 下载完成移除元素
+ window.URL.revokeObjectURL(href) // 释放掉blob对象
+ }
+
+ }).catch((error) => {
+ console.log(error)
+ });
+ }
componentDidMount() {
this.setState({
spinning:true
@@ -93,9 +135,7 @@ class ShixunWorkReport extends Component {
{/*{this.props.isAdmin()?导出实训报告数据:""}*/}
{this.props.isAdmin() ? this.internshipreport(`/zip/shixun_report?homework_common_id=${homeworkid}`)}
>导出实训报告数据 : ""}
diff --git a/public/react/src/modules/courses/shixunHomework/Trainingjobsetting.js b/public/react/src/modules/courses/shixunHomework/Trainingjobsetting.js
index 8e857199b..f7f7c80e5 100644
--- a/public/react/src/modules/courses/shixunHomework/Trainingjobsetting.js
+++ b/public/react/src/modules/courses/shixunHomework/Trainingjobsetting.js
@@ -4,6 +4,7 @@ import HomeworkModal from "../coursesPublic/HomeworkModal";
import {WordsBtn, ActionBtn, handleDateString} from 'educoder';
import PollDetailTabForthRules from '../poll/PollDetailTabForthRules';
import ShixunWorkModal from './Shixunworkdetails/ShixunWorkModal';
+import {Base64} from 'js-base64';
import {
Button,
Checkbox,
@@ -24,6 +25,7 @@ import './style.css';
import '../css/busyWork.css'
import '../poll/pollStyle.css'
import moment from 'moment';
+import 'moment/locale/zh-cn';
import Modals from "../../modals/Modals";
const RadioGroup = Radio.Group;
@@ -1621,7 +1623,27 @@ class Trainingjobsetting extends Component {
}else if(response.data.status&&response.data.status===-2){
}else{
- window.open("/api"+url, '_blank');
+ const type='application/zip'//ZIP文件
+ const blob = new Blob([response.data], { type: type })
+ const downloadElement = document.createElement('a')
+ const href = window.URL.createObjectURL(blob)
+ //后台再header中传文件名
+ // console.log(Base64.decode(response.headers['content-disposition'].split('=')[1]));
+ const string = Base64.decode(response.headers['content-disposition'].split('=')[1]);
+ downloadElement.href = href
+ var now="";
+ try {
+ now = moment().year()+""+(moment().month()+1)+""+moment().date()+""+moment().hour()+""+moment().minute()+""
+ console.log(now);
+
+ } catch (e) {
+ console.log("1376");
+ }
+ downloadElement.download = string+now+".zip"
+ document.body.appendChild(downloadElement)
+ downloadElement.click()
+ document.body.removeChild(downloadElement) // 下载完成移除元素
+ window.URL.revokeObjectURL(href) // 释放掉blob对象
}
}).catch((error) => {
@@ -1643,7 +1665,29 @@ class Trainingjobsetting extends Component {
}else if(response.data.status&&response.data.status===-2){
}else{
- window.open("/api"+url, '_blank');
+ const type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' //excel文件
+ const blob = new Blob([response.data], { type: type })
+ const downloadElement = document.createElement('a')
+ const href = window.URL.createObjectURL(blob)
+ //后台再header中传文件名
+ // console.log("1409");
+ // console.log(Base64.decode(response.headers['content-disposition'].split('=')[1]));
+ const string = Base64.decode(response.headers['content-disposition'].split('=')[1]);
+ var now="";
+ try {
+ now = moment().year()+""+(moment().month()+1)+""+moment().date()+""+moment().hour()+""+moment().minute()+""
+ console.log("1422");
+ console.log(now);
+
+ } catch (e) {
+ console.log("1432");
+ }
+ downloadElement.href = href
+ downloadElement.download =string+now+".xlsx";
+ document.body.appendChild(downloadElement)
+ downloadElement.click()
+ document.body.removeChild(downloadElement) // 下载完成移除元素
+ window.URL.revokeObjectURL(href) // 释放掉blob对象
}
}).catch((error) => {
diff --git a/public/react/src/modules/courses/shixunHomework/Workquestionandanswer.js b/public/react/src/modules/courses/shixunHomework/Workquestionandanswer.js
index 8d88e9fb5..5137351d2 100644
--- a/public/react/src/modules/courses/shixunHomework/Workquestionandanswer.js
+++ b/public/react/src/modules/courses/shixunHomework/Workquestionandanswer.js
@@ -23,7 +23,9 @@ import {
notification
} from "antd";
import {Link, Switch, Route, Redirect} from 'react-router-dom';
-import moment from 'moment'
+import moment from 'moment';
+import 'moment/locale/zh-cn';
+import {Base64} from 'js-base64';
import axios from 'axios';
import '../css/members.css'
import "../common/formCommon.css"
@@ -332,7 +334,27 @@ class Workquestionandanswer extends Component {
}else if(response.data.status&&response.data.status===-2){
}else{
- window.open("/api"+url, '_blank');
+ const type='application/zip'//ZIP文件
+ const blob = new Blob([response.data], { type: type })
+ const downloadElement = document.createElement('a')
+ const href = window.URL.createObjectURL(blob)
+ //后台再header中传文件名
+ // console.log(Base64.decode(response.headers['content-disposition'].split('=')[1]));
+ const string = Base64.decode(response.headers['content-disposition'].split('=')[1]);
+ downloadElement.href = href
+ var now="";
+ try {
+ now = moment().year()+""+(moment().month()+1)+""+moment().date()+""+moment().hour()+""+moment().minute()+""
+ console.log(now);
+
+ } catch (e) {
+ console.log("1376");
+ }
+ downloadElement.download = string+now+".zip"
+ document.body.appendChild(downloadElement)
+ downloadElement.click()
+ document.body.removeChild(downloadElement) // 下载完成移除元素
+ window.URL.revokeObjectURL(href) // 释放掉blob对象
}
}).catch((error) => {
@@ -354,7 +376,29 @@ class Workquestionandanswer extends Component {
}else if(response.data.status&&response.data.status===-2){
}else{
- window.open("/api"+url, '_blank');
+ const type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' //excel文件
+ const blob = new Blob([response.data], { type: type })
+ const downloadElement = document.createElement('a')
+ const href = window.URL.createObjectURL(blob)
+ //后台再header中传文件名
+ // console.log("1409");
+ // console.log(Base64.decode(response.headers['content-disposition'].split('=')[1]));
+ const string = Base64.decode(response.headers['content-disposition'].split('=')[1]);
+ var now="";
+ try {
+ now = moment().year()+""+(moment().month()+1)+""+moment().date()+""+moment().hour()+""+moment().minute()+""
+ console.log("1422");
+ console.log(now);
+
+ } catch (e) {
+ console.log("1432");
+ }
+ downloadElement.href = href
+ downloadElement.download =string+now+".xlsx";
+ document.body.appendChild(downloadElement)
+ downloadElement.click()
+ document.body.removeChild(downloadElement) // 下载完成移除元素
+ window.URL.revokeObjectURL(href) // 释放掉blob对象
}
}).catch((error) => {
diff --git a/public/react/src/modules/courses/shixunHomework/shixunHomework.js b/public/react/src/modules/courses/shixunHomework/shixunHomework.js
index 9bf0d12a4..42f5fbf6a 100644
--- a/public/react/src/modules/courses/shixunHomework/shixunHomework.js
+++ b/public/react/src/modules/courses/shixunHomework/shixunHomework.js
@@ -1132,7 +1132,7 @@ class ShixunHomework extends Component{
{course_modules&&course_modules.main_category.map((item,key)=>{
return(
- datas&&datas.category_id===null?"": this.moveTos(item.main_category_id)}>{item.main_category_name}:""
+ datas&&datas.category_id===null?"": this.moveTos(item.main_category_id)}>{item.main_category_name}
)
})}