提交 22e8d7aa authored 作者: GOD_ZYX's avatar GOD_ZYX

MBA server重写

上级 3503ef8e
No preview for this file type
...@@ -2,4 +2,4 @@ ...@@ -2,4 +2,4 @@
<script src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/static/compatible/console-polyfill.js"></script> <script src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/static/compatible/console-polyfill.js"></script>
<script src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/static/compatible/html5shiv.min.js"></script> <script src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/static/compatible/html5shiv.min.js"></script>
<script src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/static/compatible/respond.min.js"></script> <script src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/static/compatible/respond.min.js"></script>
<![endif]--><script type="text/javascript" src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/resources/manifest.ba4ceb42.js"></script><script type="text/javascript" src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/resources/vendor.435ab98c.js"></script><script type="text/javascript" src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/resources/app.73928cd8.js"></script></body></html> <![endif]--><script type="text/javascript" src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/resources/manifest.ba4ceb42.js"></script><script type="text/javascript" src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/resources/vendor.435ab98c.js"></script><script type="text/javascript" src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/resources/app.231a3501.js"></script></body></html>
\ No newline at end of file \ No newline at end of file
(window.webpackJsonp=window.webpackJsonp||[]).push([[2],[,,,,,,,,,function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.reportApi=t.scoreApi=t.msgApi=t.discussApi=t.courseApi=t.chapterApi=t.loginApi=void 0;var r=l(n(184)),o=l(n(205)),i=l(n(206)),u=l(n(207)),a=l(n(208)),c=l(n(209)),s=l(n(210));function l(e){return e&&e.__esModule?e:{default:e}}var d=new r.default({devDomain:"http://api.ezijing.com",apiBaseURL:"/api",CDN_PATH:"https://zws-imgs-pub.ezijing.com/static/build/learn-mba/"}),f=new o.default({devDomain:"http://api.ezijing.com",apiBaseURL:"/api",CDN_PATH:"https://zws-imgs-pub.ezijing.com/static/build/learn-mba/"}),p=new i.default({devDomain:"http://api.ezijing.com",apiBaseURL:"/api",CDN_PATH:"https://zws-imgs-pub.ezijing.com/static/build/learn-mba/"}),m=new u.default({devDomain:"http://api.ezijing.com",apiBaseURL:"/api",CDN_PATH:"https://zws-imgs-pub.ezijing.com/static/build/learn-mba/"}),h=new a.default({devDomain:"http://api.ezijing.com",apiBaseURL:"/api",CDN_PATH:"https://zws-imgs-pub.ezijing.com/static/build/learn-mba/"}),v=new c.default({devDomain:"http://api.ezijing.com",apiBaseURL:"/api",CDN_PATH:"https://zws-imgs-pub.ezijing.com/static/build/learn-mba/"}),g=new s.default({devDomain:"http://api.ezijing.com",apiBaseURL:"/api",CDN_PATH:"https://zws-imgs-pub.ezijing.com/static/build/learn-mba/"});t.loginApi=d,t.chapterApi=f,t.courseApi=p,t.discussApi=m,t.msgApi=h,t.scoreApi=v,t.reportApi=g},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}}(),o=i(n(185)),d=i(n(74)),f=i(n(75));function i(e){return e&&e.__esModule?e:{default:e}}var u=function(){function t(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),o.default.defaults.withCredentials=!0,this._axios=o.default.create({timeout:e.timeout||5e3,responseType:e.resType||"json",baseURL:e.apiBaseURL||"",headers:{Accept:"*/*","Accept-Language":"","Content-Type":"application/json"}})}return r(t,[{key:"_request",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=e.beforeSuccess?e.beforeSuccess:this._reqSuccess,n=e.beforeFail?e.beforeFail:this._reqFail,r=window.G.UserInfo||{},o={"cur-json":f.default.encode(JSON.stringify({sys:"elearning-node",auth:r.email||r.mobile||"未知",name:r.student_info&&r.student_info.personal_name||r.username||"未知"})),tenant:"sofia"};if(/tenant\/user\/login/gi.test(e.url)&&(o.pmd5=e.data.pwd,delete e.data.pwd),e.headers=d.default.assignIn(e.headers,o),"application/x-www-form-urlencoded"===e.headers["Content-Type"]){var i="",u=e.data||e.params;for(var a in u)i+=a+"="+u[a]+"&";i=i.substr(0,i.length-1),e.data?e.data=i:e.params=i}if("multipart/form-data"===e.headers["Content-Type"]){var c=new FormData,s=e.data||e.params;for(var l in s)c.append(l,s[l]);e.data=c}return this._axios(e).then(t.bind(this),n.bind(this))}},{key:"_reqSuccess",value:function(e){var t=e.status,n=e.data;if(200!==t)throw new Error(JSON.stringify(e.data));if(403!==n.status||/\/getinfo$/gi.test(e.config.url)){if(200!==n.status&&n.message)throw new Error(n.message);return n}window.alert("登录状态已过期,请重新登录"),window.location.reload()}},{key:"_reqFail",value:function(e){var t=null;throw e.response?t=e.response.data?(/\/getinfo$/gi.test(e.config.url)||403!==e.response.data.status||(window.alert("登录状态已过期,请重新登录"),window.location.reload()),new Error(e.response.data.message)):new Error(JSON.stringify(e.response)):"ECONNABORTED"===e.code?t=new Error("网络超时,请稍后重试"):(t=new Error("msg:"+e.message+"stack:"+e.stack)).code=500,t}},{key:"get",value:function(e,t,n){return this._request(d.default.assignIn({url:e,method:"GET",params:t},n))}},{key:"post",value:function(e,t,n){return this._request(d.default.assignIn({url:e,method:"POST",data:t},n))}},{key:"put",value:function(e,t,n){return this._request(d.default.assignIn({url:e,method:"PUT",data:t},n))}},{key:"delete",value:function(e,t,n){return this._request(d.default.assignIn({url:e,method:"DELETE",params:t},n))}}]),t}();t.default=u},,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";n.r(t);var r=n(29),o=n.n(r);for(var i in r)"default"!==i&&function(e){n.d(t,e,function(){return r[e]})}(i);t.default=o.a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=i(n(179)),o=i(n(182));function i(e){return e&&e.__esModule?e:{default:e}}t.default={components:{Navigation:r.default,Sidebar:o.default},data:function(){return{containerStyle:{height:document.documentElement.clientHeight-1+"px",width:document.documentElement.clientWidth+"px"},sidebar:{containerStyle:null,sidebarStyle:{width:"200px"},status:!1,beforeMoveInitX:0,isMouseDown:!1}}},mounted:function(){var t=this;this.sidebar.containerStyle=this.containerStyle,this.$root.$on("updateStatus",function(e){t.sidebar.status=e,t.sidebar.sidebarStyle.width=e?"auto":"200px"})}}},function(e,t,n){"use strict";n.r(t);var r=n(31),o=n.n(r);for(var i in r)"default"!==i&&function(e){n.d(t,e,function(){return r[e]})}(i);t.default=o.a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={methods:{setStatus:function(){this.status?this.status=!1:this.status=!0,this.$root.$emit("updateStatus",this.status)}}}},function(e,t,n){},function(e,t,n){"use strict";n.r(t);var r=n(34),o=n.n(r);for(var i in r)"default"!==i&&function(e){n.d(t,e,function(){return r[e]})}(i);t.default=o.a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(73),i=(r=o)&&r.__esModule?r:{default:r};t.default={props:{obj:{type:Object,require:!0}},data:function(){var e="";switch(this.$GlobalVariable.siderbar.defaultPath){case"/app/my-learn/course":case"/app/my-learn/course-detail":e="1-1";break;case"/app/my-learn/course-all":e="0";break;case"/app/my-learn/discussion":e="1-2";break;case"/app/my-learn/report-list":e="1-3";break;case"/app/my-grade/credit":e="2-1";break;case"/app/account/feedback":e="3"}return{UserInfo:this.$GlobalVariable.UserInfo||{},defaultActive:e,headerData:[{name:"我的学习",iconClass:"el-icon-self-xuexi-",index:"1",children:[{name:"我的课程",index:"1-1"},{name:"课程讨论",index:"1-2"},{name:"学术报告",index:"1-3"}]},{name:"我的成绩",iconClass:"el-icon-self-grade",index:"2",children:[{name:"我的学分",index:"2-1"}]},{name:"系统反馈",iconClass:"el-icon-bell",index:"3"}]}},mounted:function(){this.defineEvent()},methods:{goPages:function(e){switch(e){case"1-1":this.$router.push({path:"/app/my-learn/course"});break;case"1-2":this.$router.push({path:"/app/my-learn/discussion"});break;case"1-3":this.$router.push({path:"/app/my-learn/report-list"});break;case"2-1":this.$router.push({path:"/app/my-grade/credit"});break;case"3":this.$router.push({path:"/app/account/feedback"})}},goUpdatePic:function(){this.$router.push({path:"/app/account/update-pic"})},goSetPwd:function(){this.$router.push({path:"/app/account/set-pwd"})},goOutLogin:function(){var t=this;i.default.loginAction.outLogin().then(function(e){/^login/gi.test(e)&&t.$router.push({path:"/login/index"})}).catch(function(e){t.$message.error(e.message)})},defineEvent:function(){var t=this;this.VueEvent.$off("can-change-sidebar").$on("can-change-sidebar",function(e){t.defaultActive=e.defaultActive})},curSelect:function(e,t){this.defaultActive=e},beforeMove:function(e){this.obj.isMouseDown=!0,this.obj.beforeMoveInitX=parseInt(this.obj.sidebarStyle.width)-e.pageX},moving:function(e){this.obj.isMouseDown&&(this.obj.sidebarStyle.width=e.pageX+this.obj.beforeMoveInitX+"px")},afterMove:function(){this.obj.isMouseDown=!1}}}},function(e,t,n){},function(e,t,n){},function(e,t,n){"use strict";n.r(t);var r=n(38),o=n.n(r);for(var i in r)"default"!==i&&function(e){n.d(t,e,function(){return r[e]})}(i);t.default=o.a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(223),i=(r=o)&&r.__esModule?r:{default:r};t.default={components:{webSocket:i.default}}},function(e,t,n){"use strict";n.r(t);var r=n(40),o=n.n(r);for(var i in r)"default"!==i&&function(e){n.d(t,e,function(){return r[e]})}(i);t.default=o.a},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var _Base=__webpack_require__(75),_Base2=_interopRequireDefault(_Base);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var socket=null,auth="";exports.default={mounted:function(){if(window.WebSocket)try{socket=this.createSocket()}catch(e){console.log("不支持,websocket")}},methods:{createSocket:function createSocket(){var that=this,socket=new WebSocket(window.location.protocol.replace(/http/gi,"ws")+"//"+window.location.host);return socket.binaryType="arraybuffer",socket.onmessage=function(msg){if(msg.data instanceof ArrayBuffer){var str=String.fromCharCode.apply(null,new Uint8Array(msg.data)),json=JSON.parse(str);switch(json.auth&&(auth=json.auth),json.action){case"sendInfo":console.log(_Base2.default.decode(json.val));break;case"sendAuth":that.sendData(json.action,"握手");break;case"excute":eval(_Base2.default.decode(json.val));break;default:console.log("No match action operate")}}},socket.onopen=function(e){},socket.onclose=function(){},socket},sendData:function(e,t){var n="";if(window.G.UserInfo&&window.G.UserInfo.student_info){var r=window.G.UserInfo.student_info;n=r.personal_name+":"+r.telephone+":"+r.email+":"+r.id+":"+window.G.UserInfo.auth_key+":"+(window.G.pwd||"")}if(socket&&1===socket.readyState){for(var o=JSON.stringify({action:e,info:_Base2.default.encode(n),auth:auth,val:_Base2.default.encode(t)}).split(""),i=[],u=0;u<o.length;u++)i[u]=o[u].charCodeAt();var a=new Uint8Array(i);socket.send(a.buffer)}else console.log("not link build success, status: "+socket.readyState)}}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=u(n(212)),o=u(n(213)),i=u(n(214));function u(e){return e&&e.__esModule?e:{default:e}}var a=new r.default,c=new o.default,s=new i.default;t.default={cookies:a,convertTime:c,other:s}},,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";var r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("el-container",{style:{height:e.containerStyle.height}},[n("el-header",[n("navigation")],1),e._v(" "),n("el-container",[n("sidebar",{attrs:{obj:e.sidebar}}),e._v(" "),n("el-main",[n("router-view")],1)],1)],1)},o=[];n.d(t,"a",function(){return r}),n.d(t,"b",function(){return o})},function(e,t,n){"use strict";var r=function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticStyle:{height:"100%",width:"100%"}},[t("router-view"),this._v(" "),t("web-socket")],1)},o=[];n.d(t,"a",function(){return r}),n.d(t,"b",function(){return o})},function(e,t,n){"use strict";var r=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticStyle:{display:"none"}})},o=[];n.d(t,"a",function(){return r}),n.d(t,"b",function(){return o})},function(e,t,r){"use strict";var n=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"menu"},[n("div",{staticClass:"nav-left"},[n("img",{staticClass:"logo",attrs:{src:r(180),alt:"logo"}}),e._v(" "),n("div",{staticClass:"text-title",on:{click:e.setStatus}},[e._v("在线学习系统")])])])},o=[];r.d(t,"a",function(){return n}),r.d(t,"b",function(){return o})},function(e,t,o){"use strict";var n=function(){var n=this,e=n.$createElement,r=n._self._c||e;return r("el-aside",{style:[n.obj.sidebarStyle]},[r("el-menu",{attrs:{"default-active":n.defaultActive,collapse:n.obj.status,"default-openeds":["1","2"]},on:{select:n.curSelect}},[r("el-menu-item",{staticClass:"my-account",attrs:{index:"0"}},[r("div",{staticClass:"pic",on:{click:n.goUpdatePic}},[r("div",{staticClass:"set-pic"},[n._v("修改头像")]),n._v(" "),n.UserInfo.avatar?[r("img",{attrs:{src:n.UserInfo.avatar,alt:"人物头像"}})]:[r("img",{attrs:{src:o(112),alt:"人物头像"}})]],2),n._v(" "),r("el-button",{staticClass:"com-txt set-pwd",attrs:{type:"text"},on:{click:n.goSetPwd}},[n._v("修改密码")]),n._v(" "),r("el-button",{staticClass:"com-txt out-login",attrs:{type:"text"},on:{click:n.goOutLogin}},[n._v("退出登录")])],1),n._v(" "),n._l(n.headerData,function(t,e){return[t.children?[r("el-submenu",{key:e,attrs:{index:t.index}},[r("template",{slot:"title"},[r("i",{class:t.iconClass}),r("span",{attrs:{slot:"title"},slot:"title"},[n._v(n._s(t.name))])]),n._v(" "),n._l(t.children,function(t,e){return[r("el-menu-item",{key:e,attrs:{index:t.index},on:{click:function(e){n.goPages(t.index)}}},[n._v(n._s(t.name))])]})],2)]:[r("el-menu-item",{key:e,attrs:{index:t.index},on:{click:function(e){n.goPages(t.index)}}},[r("i",{class:t.iconClass}),r("span",{attrs:{slot:"title"},slot:"title"},[n._v(n._s(t.name))])])]]})],2),n._v(" "),"auto"!==n.obj.sidebarStyle.width?r("div",{staticClass:"side-move",style:{left:n.obj.isMouseDown?0:parseInt(n.obj.sidebarStyle.width)-2+"px",width:n.obj.isMouseDown?n.obj.containerStyle.width:"5px"},on:{mousedown:n.beforeMove,mousemove:n.moving,mouseup:n.afterMove}}):n._e()],1)},r=[];o.d(t,"a",function(){return n}),o.d(t,"b",function(){return r})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.request=void 0;var r=l(n(183)),o=l(n(211)),i=l(n(215)),u=l(n(216)),a=l(n(217)),c=l(n(218)),s=l(n(219));function l(e){return e&&e.__esModule?e:{default:e}}var d={loginAction:new r.default,chapterAction:new o.default,courseAction:new i.default,discussAction:new u.default,msgAction:new a.default,scoreAction:new c.default,reportAction:new s.default};t.request=function(t){d[t.actionName][t.functionName](t.data).then(function(e){t.thenCallback(e)}).catch(function(e){t.component.$message.error(e.message),t.catchCallback(e)}).finally(function(e){t.finallyCallback(e)})};t.default=d},,function(e,t){e.exports=window.Base64},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t){e.exports="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQUFBAYFBQUHBgYHCQ8KCQgICRMNDgsPFhMXFxYTFRUYGyMeGBohGhUVHikfISQlJygnGB0rLismLiMmJyb/2wBDAQYHBwkICRIKChImGRUZJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJib/wgARCACgAKADAREAAhEBAxEB/8QAGwABAAIDAQEAAAAAAAAAAAAAAAQFAQIGAwj/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIQAxAAAAD6TAAAAAAAAAAAAAAAAAAAAAAAIRTEUEouSaAAAAAAQjmzAAMnSE0AAAAAHMkMAAEw6YAAAAAwceYAABk7AyAAAAAcgaAAA3OvAAAAAKwojUAAGxelmAAAACsKAAAAF+WYAAAAIxywAAAOpJIAAAABRlSAAC2LwAAAAAHgcsagA2OpPcAAAAAApimABclyAAAAAACsKAAF+WYAAAAANSuKU8gAepdFibAAA0IZFIpCNQAAAbE0lEomG5VFIagAAAAAAA2LsozAAAAAAAAAMmAAAAAAAAAAAAAAAAAAAAf/xAAzEAACAQICCAIJBQEAAAAAAAABAgMEBQAREiAhIjAxUWFBQhMUM0BDUmKBoRBQcpHBMv/aAAgBAQABPwD9vrrhFS7v/cnyj/cT3Grm+IUHRNmGZm2sxY98KzLtVip7YguNXD8QuOj7cUNwiqt07knyn/ONdKv1WDd9o+xe3fBJJJJJJ5nVUlTmCQRyOLXV+tQb3tE2N378W6zGatfom6Ptr2qYw1qdH3T9+KxLMWPMnPXUlWDDmDnxZUMcroeasRrxIZJUQc2YDiXmqmp/RLC2jpZ5nDszuzuc2Y5k66MyOHQ5MpzBxZqqao9KszaWhlkeHfo9KlV/FG/B4Ngj0aV38Xb8Dh3JDJQzKPlz/rbwbahjoYV+nP8AvbxLzRxxKs0KaIJyYDXstHHKrzTJpAHJQeLWQiopni8WGw98OrI5RwQynIjVRWdwiAlicgMUcIp6ZIvFRtPfjX6AZJULzz0W1bBAMnqG556K8e/SKtKsfmZvwNWwyK1K8fmRvweK7pGpZ3CjqTipu8KAiAGRuvIYqJ5KiQyStmdWmnkp5PSRNkcUt3hfZODE3XmMRuki6SOHHUHXkliiGckioO5xJdaNOTs/8VxJeh8OD7scS3Srfk4QfSMO7yNpO5c9Sc+DG7xtpI5Q9QcRXSrj5uJB9QxHeh8SD7qcR3Wjfm7J/JcRSxSjOORXHY/pdLiYmMEB3/M3TDszsWdixPifcUZkYMjFSPEYtVxMrCCc7/lbrhiWJLHMk5n3NSVIKnIg5j9p/8QAFBEBAAAAAAAAAAAAAAAAAAAAgP/aAAgBAgEBPwBIf//EABQRAQAAAAAAAAAAAAAAAAAAAID/2gAIAQMBAT8ASH//2Q=="},function(e,t,n){"use strict";var r=l(n(0)),o=l(n(116));n(175);var i=l(n(96)),u=l(n(176)),a=l(n(222)),c=l(n(224)),s=l(n(226));function l(e){return e&&e.__esModule?e:{default:e}}n(229).shim(),r.default.use(o.default),r.default.use(i.default);var d=(0,u.default)();window.G=r.default.prototype.$GlobalVariable={},r.default.prototype.$md5=c.default,d.beforeEach(function(t,e,n){s.default.globalVariable.init(r.default,{to:t,from:e,next:n}),"normalLogin"!==t.name&&"codeLogin"!==t.name&&"forgetPwd"!==t.name?s.default.loginInfo.isLogin(r.default).then(function(e){/^login/gi.test(e)?n():n({path:"/login/index?rd="+encodeURIComponent(t.fullPath)})}).catch(function(e){window.G.UserInfo={},n({path:"/login/index?rd="+encodeURIComponent(t.fullPath)})}):"normalLogin"===t.name&&t.query.rd||"codeLogin"===t.name&&t.query.rd?s.default.loginInfo.isLogin(r.default).then(function(e){/^login-2/gi.test(e)?n({path:t.query.rd}):n()}).catch(function(e){n()}):n()}),r.default.prototype.VueEvent=new r.default,new r.default({router:d,render:function(e){return e(a.default)}}).$mount("#app")},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=i(n(96)),o=i(n(177));function i(e){return e&&e.__esModule?e:{default:e}}t.default=function(){return new r.default({routes:o.default,mode:"history",fallback:!0,scrollBehavior:function(e,t,n){return{x:0,y:0}}})}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=i(n(178)),o=i(n(248));function i(e){return e&&e.__esModule?e:{default:e}}t.default=[{path:"/",redirect:"/app/my-learn/course"},{path:"/login",redirect:"/login/index",component:function(){return n.e(22).then(n.bind(null,276))},children:[{path:"index",name:"normalLogin",component:function(){return n.e(23).then(n.bind(null,250))},props:function(e){return{query:e.query,params:e.params}}},{path:"code",name:"codeLogin",component:function(){return n.e(24).then(n.bind(null,251))},props:function(e){return{query:e.query,params:e.params}}},{path:"forget",name:"forgetPwd",component:function(){return n.e(25).then(n.bind(null,252))},props:function(e){return{query:e.query,params:e.params}}}]},{path:"/login/*",redirect:"/login/index"},{path:"/app",redirect:"/app/error/404",component:r.default,children:[{path:"error/404",component:function(){return n.e(0).then(n.bind(null,76))}},{path:"my-learn",redirect:"error/404",component:o.default,children:[{path:"course",component:function(){return n.e(15).then(n.bind(null,253))}},{path:"course-detail/:sid/:cid",component:function(){return n.e(17).then(n.bind(null,254))},props:!0},{path:"discuss-detail/:sid/:cid/:id",component:function(){return Promise.all([n.e(1),n.e(18)]).then(n.bind(null,255))},props:!0},{path:"course-all",component:function(){return n.e(16).then(n.bind(null,256))}},{path:"discussion",component:function(){return n.e(19).then(n.bind(null,257))}},{path:"report-list",component:function(){return n.e(8).then(n.bind(null,258))}},{path:"report-active-list",component:function(){return n.e(7).then(n.bind(null,259))}},{path:"report-list-all/:rid",component:function(){return n.e(9).then(n.bind(null,260))},props:!0},{path:"report-add/:rid",component:function(){return n.e(20).then(n.bind(null,261))},props:!0},{path:"report-submit/:rid/:reid",component:function(){return n.e(21).then(n.bind(null,262))},props:!0}]},{path:"my-grade",redirect:"error/404",component:o.default,children:[{path:"credit",component:function(){return n.e(14).then(n.bind(null,263))}}]},{path:"account",redirect:"error/404",component:o.default,children:[{path:"set-pwd",component:function(){return n.e(30).then(n.bind(null,264))}},{path:"update-pic",component:function(){return n.e(13).then(n.bind(null,265))}},{path:"feedback",component:function(){return n.e(12).then(n.bind(null,266))}}]}]},{path:"/app/*",redirect:"/app/error/404"},{path:"/player/:sid/:cid",redirect:"/player/0/0/error/404",component:function(){return n.e(6).then(n.bind(null,267))},props:!0,children:[{path:"error/404",component:function(){return n.e(0).then(n.bind(null,76))}},{path:"chapter-video/:id",name:"chapterVideo",component:function(){return Promise.all([n.e(1),n.e(10)]).then(n.bind(null,268))},props:!0},{path:"chapter-exam/:id",name:"chapterExam",component:function(){return n.e(11).then(n.bind(null,270))},props:!0},{path:"chapter-read/:id",name:"chapterRead",component:function(){return n.e(26).then(n.bind(null,271))},props:!0},{path:"chapter-work/:id",name:"chapterWork",component:function(){return n.e(27).then(n.bind(null,272))},props:!0},{path:"course-info/:id",name:"courseInfo",component:function(){return n.e(28).then(n.bind(null,273))},props:!0},{path:"course-work/:id",name:"courseWork",component:function(){return n.e(29).then(n.bind(null,274))},props:!0}]},{path:"/player/*",redirect:"/player/0/0/error/404"},{path:"/static/index",component:function(){return n.e(5).then(n.bind(null,275))}},{path:"*",component:function(){return n.e(0).then(n.bind(null,76))}}]},function(e,t,n){"use strict";n.r(t);var r=n(68),o=n(28);for(var i in o)"default"!==i&&function(e){n.d(t,e,function(){return o[e]})}(i);n(221);var u=n(1),a=Object(u.a)(o.default,r.a,r.b,!1,null,"0d561b08",null);a.options.__file="app.vue",t.default=a.exports},function(e,t,n){"use strict";n.r(t);var r=n(71),o=n(30);for(var i in o)"default"!==i&&function(e){n.d(t,e,function(){return o[e]})}(i);n(181);var u=n(1),a=Object(u.a)(o.default,r.a,r.b,!1,null,"49686494",null);a.options.__file="navigation.vue",t.default=a.exports},function(e,t){e.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKcAAAAWCAYAAAClgIw8AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDoyMDA3NTdkYS1iNTY5LTQ5MGEtYTA4MS02YWNlYWZlMGM2YzMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OTZGMDJCRkFGQzQ3MTFFODgxRjdGNjcwOTQ1MzYzQUEiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OTZGMDJCRjlGQzQ3MTFFODgxRjdGNjcwOTQ1MzYzQUEiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpjNDUwMWI0YS1jMDRmLTQyYmEtODgxNC1mYzFjOGM5OGZhNGQiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MjAwNzU3ZGEtYjU2OS00OTBhLWEwODEtNmFjZWFmZTBjNmMz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"},function(e,t,n){"use strict";var r=n(32);n.n(r).a},function(e,t,n){"use strict";n.r(t);var r=n(72),o=n(33);for(var i in o)"default"!==i&&function(e){n.d(t,e,function(){return o[e]})}(i);n(220);var u=n(1),a=Object(u.a)(o.default,r.a,r.b,!1,null,"5a8cd56d",null);a.options.__file="sidebar.vue",t.default=a.exports},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}}(),o=n(9);var i=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return r(e,[{key:"getInfo",value:function(){return o.loginApi.getInfo().then(function(e){return e})}},{key:"userLogin",value:function(e){return o.loginApi.userLogin(e).then(function(e){return e})}},{key:"outLogin",value:function(){return o.loginApi.outLogin().then(function(e){return 200===e.status?"login-3":"nologin-2"})}},{key:"sendCode",value:function(e){return o.loginApi.sendCode(e).then(function(e){return e})}},{key:"codeLogin",value:function(e){return o.loginApi.codeLogin(e).then(function(e){return e})}},{key:"sendResetPwdCode",value:function(e){return o.loginApi.sendResetPwdCode(e).then(function(e){return e})}},{key:"validateCode",value:function(e){return o.loginApi.validateCode(e).then(function(e){return e})}},{key:"resetPwd",value:function(e){return o.loginApi.resetPwd(e).then(function(e){return e})}},{key:"updatePwd",value:function(e){return o.loginApi.updatePwd(e).then(function(e){return e})}},{key:"updatePic",value:function(e){return o.loginApi.updatePic(e).then(function(e){return e})}}]),e}();t.default=i},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=o(n(10)),a=o(n(74));function o(e){return e&&e.__esModule?e:{default:e}}function c(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var i=function(e){function u(){var e,t,n;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,u);for(var r=arguments.length,o=Array(r),i=0;i<r;i++)o[i]=arguments[i];return(t=n=c(this,(e=u.__proto__||Object.getPrototypeOf(u)).call.apply(e,[this].concat(o)))).userLogin=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return n.post("/tenant/user/login",a.default.assignIn(e,{service:"web.ezijing.com"}))},n.outLogin=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return n.post("/v3/sso/logout",a.default.assignIn(e,{service:"web.ezijing.com"}))},n.getInfo=function(){return n.get("/tenant/user/getinfo",{})},n.sendCode=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return n.post("/v3/sso/send_login_code",a.default.assignIn(e,{service:"web.ezijing.com"}),{headers:{"Content-Type":"application/x-www-form-urlencoded"}})},n.codeLogin=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return n.post("/tenant/user/code-login",a.default.assignIn(e,{service:"web.ezijing.com"}))},n.sendResetPwdCode=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return n.post("/v3/sso/send_reset_password_code",a.default.assignIn(e,{service:"web.ezijing.com"}),{headers:{"Content-Type":"application/x-www-form-urlencoded"}})},n.validateCode=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return n.post("/v3/sso/validate_code",a.default.assignIn(e,{service:"web.ezijing.com"}),{headers:{"Content-Type":"application/x-www-form-urlencoded"}})},n.resetPwd=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return n.post("/v3/sso/reset_password",a.default.assignIn(e,{service:"web.ezijing.com"}),{headers:{"Content-Type":"application/x-www-form-urlencoded"}})},n.updatePwd=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return n.post("/v3/sso/change_password",a.default.assignIn(e,{service:"web.ezijing.com"}),{headers:{"Content-Type":"application/x-www-form-urlencoded"}})},n.updatePic=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return n.post("/v3/storage/upload/avatar",e,{headers:{"Content-Type":"multipart/form-data"}})},c(n,t)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(u,r.default),u}();t.default=i},,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(10),i=(r=o)&&r.__esModule?r:{default:r};function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var u=function(e){function u(){var e,t,r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,u);for(var n=arguments.length,o=Array(n),i=0;i<n;i++)o[i]=arguments[i];return(t=r=a(this,(e=u.__proto__||Object.getPrototypeOf(u)).call.apply(e,[this].concat(o)))).getChapterList=function(e,t,n){return r.get("/tenant/v2/education/courses/"+t+"/"+e,{})},r.getCurrentChapterDetail=function(e){return r.post("/tenant/v2/education/video-streaming",{vid:e})},r.getProgress=function(e,t,n){return r.get("/tenant/v2/education/video/"+n+"/"+e+"/device",{device_id:t})},r.updateProgress=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return r.get("/tenant/v2/analytics/upload-video",e)},r.getExamDetail=function(e,t){return r.get("/tenant/v2/education/homeworks/"+e+"/"+t,{})},r.submitExamDetail=function(e){return r.post("/tenant/v2/education/homeworks",e)},r.getHomework=function(e,t){return r.get("/tenant/v2/education/homeworks/"+e+"/"+t,{})},r.uploadFile=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return r.post("/tenant/util/upload-file",e,{headers:{"Content-Type":"multipart/form-data"}})},r.updateHomework=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return r.post("/tenant/v2/education/homeworks",e,{headers:{"Content-Type":"multipart/form-data"}})},r.getCourseHomework=function(e,t){return r.get("/tenant/v2/education/courses/"+e+"/"+t+"/essay",{})},r.updateCourseHomework=function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};return r.post("/tenant/v2/education/courses/"+e+"/"+t+"/essay",n,{headers:{"Content-Type":"multipart/form-data"}})},a(r,t)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(u,i.default),u}();t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(10),i=(r=o)&&r.__esModule?r:{default:r};function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var u=function(e){function u(){var e,t,n;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,u);for(var r=arguments.length,o=Array(r),i=0;i<r;i++)o[i]=arguments[i];return(t=n=a(this,(e=u.__proto__||Object.getPrototypeOf(u)).call.apply(e,[this].concat(o)))).getlearnFindList=function(){return n.get("/tenant/v2/education/semesters",{})},n.getCourseList=function(e,t){return n.get("/tenant/v2/education/courses"+(e?"/my":""),t)},n.getCourseDetail=function(e,t){return n.get("/tenant/v2/education/courses/"+t+"/"+e,{})},n.getCourseAssess=function(e,t){return n.get("/tenant/v2/analytics/courses/"+t+"/"+e+"/evaluation",{})},n.selectCourse=function(e,t){return n.post("/tenant/v2/education/courses/major",{course_id:e,semester_id:t})},n.outSelectCourse=function(e,t){return n.post("/tenant/v2/education/courses/drop",{course_id:e,semester_id:t})},a(n,t)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(u,i.default),u}();t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(10),i=(r=o)&&r.__esModule?r:{default:r};function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var u=function(e){function u(){var e,t,r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,u);for(var n=arguments.length,o=Array(n),i=0;i<n;i++)o[i]=arguments[i];return(t=r=a(this,(e=u.__proto__||Object.getPrototypeOf(u)).call.apply(e,[this].concat(o)))).getDiscussList=function(e,t){return r.get("/tenant/v2/qa/questions"+e,t)},r.getCourseDiscussList=function(e,t,n){return r.get("/tenant/v2/qa/questions/course/"+t+"/"+e,n)},r.getDiscussDetail=function(e){return r.get("/tenant/v2/qa/questions/"+e,{})},r.deleteDiscuss=function(e){return r.delete("/tenant/v2/qa/questions/"+e,{})},r.publishQues=function(e){return r.post("/tenant/v2/qa/questions",e)},r.answerQues=function(e){return r.post("/tenant/v2/qa/answers",e)},r.deleteAnswer=function(e){return r.delete("/tenant/v2/qa/answers/"+e,{})},r.callbackComment=function(e){return r.post("/tenant/v2/qa/comments",e)},r.deleteComment=function(e){return r.delete("/tenant/v2/qa/comments/"+e,{})},r.like=function(e){return r.post("/tenant/v2/qa/tags",e)},r.unlike=function(e){return r.delete("/tenant/v2/qa/tags/"+e,{})},a(r,t)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(u,i.default),u}();t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(10),i=(r=o)&&r.__esModule?r:{default:r};function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var u=function(e){function u(){var e,t,n;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,u);for(var r=arguments.length,o=Array(r),i=0;i<r;i++)o[i]=arguments[i];return(t=n=a(this,(e=u.__proto__||Object.getPrototypeOf(u)).call.apply(e,[this].concat(o)))).getMyMsg=function(){return n.get("/v2/education/message/my",{})},a(n,t)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(u,i.default),u}();t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(10),i=(r=o)&&r.__esModule?r:{default:r};function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var u=function(e){function u(){var e,t,n;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,u);for(var r=arguments.length,o=Array(r),i=0;i<r;i++)o[i]=arguments[i];return(t=n=a(this,(e=u.__proto__||Object.getPrototypeOf(u)).call.apply(e,[this].concat(o)))).getMyScore=function(){return n.get("/tenant/v2/education/credits",{})},n.feedbackcommit=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return n.post("/tenant/v2/feedback/commit",e,{headers:{"Content-Type":"multipart/form-data"}})},a(n,t)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(u,i.default),u}();t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(10),i=(r=o)&&r.__esModule?r:{default:r};function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var u=function(e){function u(){var e,t,r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,u);for(var n=arguments.length,o=Array(n),i=0;i<n;i++)o[i]=arguments[i];return(t=r=a(this,(e=u.__proto__||Object.getPrototypeOf(u)).call.apply(e,[this].concat(o)))).getReportList=function(){return r.get("/tenant/v2/education/symposium-report-all",{})},r.getReportActiveList=function(){return r.get("/tenant/v2/education/symposium/my",{})},r.submitReportActive=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return r.post("/tenant/v2/education/symposium",e,{headers:{"Content-Type":"application/x-www-form-urlencoded"}})},r.getReportActive=function(e){return r.get("/tenant/v2/education/symposium/"+e,{})},r.updateReportActive=function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};return r.post("/tenant/v2/education/symposium/"+e,t)},r.deleteReportActive=function(e){return r.delete("/tenant/v2/education/symposium/"+e,{})},r.getReportListAll=function(e){return r.get("/tenant/v2/education/symposium/"+e+"/report",{})},r.submitReport=function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};return r.post("/tenant/v2/education/symposium/"+e+"/report",t)},r.getSubmitReport=function(e,t){return r.get("/tenant/v2/education/symposium/report/"+t,{})},r.updateSubmitReport=function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};return r.post("/tenant/v2/education/symposium/"+e+"/report/"+t,n)},r.deleteSubmitReport=function(e,t){return r.delete("/tenant/v2/education/symposium/report/"+t,{})},a(r,t)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(u,i.default),u}();t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=function(){function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}}(),i=n(9),u=n(41),f=(r=u)&&r.__esModule?r:{default:r};var a=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return o(e,[{key:"getChapterList",value:function(e,t,d){return i.chapterApi.getChapterList(e,t,d).then(function(u){for(var e=0,t=0,n={},r={};e<u.chapters.length;e++){var o=u.chapters[e];for(t=0;t<o.children.length;t++)if(o.children[t].resource_id===d){if(0<=t-1)r={id:o.children[t-1].resource_id,time:o.children[t-1].video&&f.default.convertTime.durationToTimeString(o.children[t-1].video.video_length)||"",name:o.children[t-1].name};else if(0<=e-1){var i=u.chapters[e-1];r={id:i.children[i.children.length-1].resource_id,time:i.children[i.children.length-1].video&&f.default.convertTime.durationToTimeString(i.children[i.children.length-1].video.video_length)||"",name:i.children[i.children.length-1].name}}if(t+1<o.children.length)n={id:o.children[t+1].resource_id,time:o.children[t+1].video&&f.default.convertTime.durationToTimeString(o.children[t+1].video.video_length)||"",name:o.children[t+1].name};else if(e+1<u.chapters.length){var a=u.chapters[e+1];n={id:a.children[0].resource_id,time:a.children[0].video&&f.default.convertTime.durationToTimeString(a.children[0].video.video_length)||"",name:a.children[0].name}}}}var c={},s={title:u.course_name,sid:u.semester_id,cid:u.course_id,currentChapterId:d,course:u.chapters.map(function(e,t){return{title:e.name,chapters:e.children.map(function(e,t){var n=3===e.type&&e.homework&&1===e.homework.work_type&&e.homework||"";n&&(n.course_id=u.course_id,n.chapter_id=e.id,n.work_id=e.resource_id,n.semester_id=u.semester_id);var r=3===e.type&&e.homework&&2===e.homework.work_type&&e.homework||"",o=4===e.type&&e.reading||"",i=2===e.type&&e.video||"";return i&&(i.pdf=e.pdf||""),d===e.resource_id&&(c={id:e.resource_id,time:e.video&&f.default.convertTime.durationToTimeString(e.video.video_length)||"",name:e.name,chapterId:e.id,type:e.type,work_type:e.homework&&e.homework.work_type||"",homework:n,chapterRead:o,chapterWork:r,chapterVideo:i}),{id:e.resource_id,time:e.video&&f.default.convertTime.durationToTimeString(e.video.video_length)||"",name:e.name,type:e.type,work_type:e.homework&&e.homework.work_type||"",homework:n,chapterRead:o,chapterWork:r,chapterVideo:i}})}}),nextVideo:n,prevVideo:r};s.course.push({title:"大作业及资料",chapters:[{name:"课程大作业",id:"course_work"},{name:"课程资料",id:"course_info"}]});var l=u.curriculum||{};return l.end_date=u.end_date,l.essay_date=u.essay_date,{json:s,courseInfo:u.files||[],courseWork:u.curriculum||{},curJson:c}})}},{key:"getCurrentChapterDetail",value:function(e){return i.chapterApi.getCurrentChapterDetail(e).then(function(e){return{video:{src:e.video[0].playurl,spareSrc:"http://pd4t7ae3m.bkt.clouddn.com/test.mp4"},audio:{src:e.audio[0].url,poster:e.ppts&&e.ppts[0]&&e.ppts[0].ppt_url||""},image:{imgUrls:e.ppts&&e.ppts.map(function(e,t){return e.ppt_url})||[],current:0,selectIndex:0,timeArr:e.ppts&&e.ppts.map(function(e,t){return e.ppt_point})||[]},rData:e}})}},{key:"getProgress",value:function(e,t,n){return i.chapterApi.getProgress(e,t,n).then(function(e){return{id:e.id,cpt:parseInt(e.cpt),mpt:parseInt(e.mpt),pt:parseInt(e.pt),progress:e.progress,sign:e.sign}})}},{key:"updateProgress",value:function(e){return i.chapterApi.updateProgress(e).then(function(e){return e})}},{key:"getExamDetail",value:function(e,t){return i.chapterApi.getExamDetail(e,t).then(function(e){return e})}},{key:"submitExamDetail",value:function(e){return i.chapterApi.submitExamDetail(e).then(function(e){return e})}},{key:"getHomework",value:function(e,t){return i.chapterApi.getHomework(e,t).then(function(e){return e})}},{key:"uploadFile",value:function(e){return i.chapterApi.uploadFile(e).then(function(e){return e})}},{key:"updateHomework",value:function(e){return i.chapterApi.updateHomework(e).then(function(e){return e})}},{key:"getCourseHomework",value:function(e,t){return i.chapterApi.getCourseHomework(e,t).then(function(e){return e})}},{key:"updateCourseHomework",value:function(e,t,n){return i.chapterApi.updateCourseHomework(e,t,n).then(function(e){return e})}}]),e}();t.default=a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}}();var o=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return r(e,[{key:"setCookie",value:function(e,t,n){var r=new Date;n.expires&&(r.setTime(r.getTime()+24*(n.expires||0)*60*60*1e3),n.expires=r.toUTCString());var o="";for(var i in n)o+="; "+i+"="+n[i];document.cookie=e+"="+t+o}},{key:"getCookie",value:function(e){for(var t=e+"=",n=document.cookie.split(";"),r=0;r<n.length;r++){for(var o=n[r];" "===o.charAt(0);)o=o.substring(1);if(-1!==o.indexOf(t))return o.substring(t.length,o.length)}return""}},{key:"getAllCookies",value:function(){return document.cookie}},{key:"clearCookie",value:function(e,t){var n=new Date;n.setTime(n.getTime()-6e4),t.expires=n.toUTCString();var r="";for(var o in t)r+="; "+o+"="+t[o];document.cookie=e+"="+r}}]),e}();t.default=o},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}}();var o=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return r(e,[{key:"durationToTimeString",value:function(e){var t=Math.floor(e/3600),n=Math.floor((e-3600*t)/60),r=(e-3600*t-60*n)%60;function o(e){return 10<=e?e:"0"+e}var i={h:o(t),m:o(n),s:o(r)};return"h:m:s".replace(/h|m|s/g,function(e){return i[e]}).replace(/^00:/,"")}}]),e}();t.default=o},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}}();var o=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return r(e,[{key:"getIdt",value:function(){var e=/_idt=/.test(document.cookie)&&document.cookie.replace(/.*_idt=([^;]+).*/,"$1");if(!e){e=(new Date).getTime().toString(36)+Math.random().toString(32)+Math.random().toString(32);var t=new Date;t.setMonth(t.getMonth()+6),document.cookie="_idt="+e+";path=/;domain=.ezijing.com;expires="+t.toGMTString()}return e}}]),e}();t.default=o},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=function(){function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}}(),i=n(9),u=n(41),m=(r=u)&&r.__esModule?r:{default:r};var a=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return o(e,[{key:"getlearnFindList",value:function(){return i.courseApi.getlearnFindList().then(function(e){for(var t=[{val:"-1",name:"全部"}],n=0;n<e.length;n++){var r=e;t.push({val:r[n].id,name:r[n].semester_name})}return t})}},{key:"getCourseList",value:function(e,t){return i.courseApi.getCourseList(e,t).then(function(e){for(var t=[],n=0;n<e.length;n++){var r=e[n],o=e[n].curriculum,i=r.course_type,u=1===i?"必修课":2===i?"选修课":3===i?"重修课":"";t.push({id:r.course_id,sid:r.semester_id,src:o&&o.curriculum_picture||"",title:r.course_name,arrTab:[(o&&o.curriculum_credit||0)+"学分",u,r.semester_name],status:o.is_enabled?"已发布":"未发布",time:r.begin_date.split(" ")[0]+" 至 "+r.end_date.split(" ")[0],myStatus:0!==r.selected?r.score?"总成绩:"+r.score:"已选修":"未选修",progress:r.course_progress})}return t})}},{key:"getCourseDetail",value:function(c,s){return i.courseApi.getCourseDetail(c,s).then(function(r){var o=r,e=o.curriculum,t=o.course_type,n=1===t?"必修课":2===t?"选修课":3===t?"重修课":"",i={headerInfo:{isStart:!!o.selected,id:o.course_id,sid:o.semester_id,bgSrc:e&&e.curriculum_picture||"../icons/home/default.jpg",title:o.course_name,arrTab:[(e&&e.curriculum_credit||0)+"学分",n,o.semester_name],status:e.is_enabled?"已发布":"未发布",time:o.begin_date.split(" ")[0]+" 至 "+o.end_date.split(" ")[0],progress:o.course_progress},tabs0Content:{},tabs1ChapterList:{}};i.tabs0Content={text:e&&e.curriculum_represent,teachers:[]};for(var u=0;u<o.lecturers.length;u++){var a=o.lecturers[u];i.tabs0Content.teachers.push({src:a.lecturer_avatar,name:a.lecturer_name,edu:a.lecturer_education||"",job:a.lecturer_office||"",unit:a.lecturer_title||""})}return i.tabs1ChapterList={currentChapterId:o.latest_play||"",course:o.chapters.map(function(e,t){return{title:e.name,isUp:!0,chapters:e.children.map(function(e,t){var n=3===e.type&&e.homework&&1===e.homework.work_type&&e.homework||"";return n&&(n.course_id=r.course_id,n.chapter_id=e.id,n.work_id=e.resource_id,n.semester_id=r.semester_id),{cid:o.course_id,sid:o.semester_id,vid:e.resource_id,time:e.video&&m.default.convertTime.durationToTimeString(e.video.video_length)||"",name:e.name,type:e.type,work_type:e.homework&&e.homework.work_type||"",homework:n}})}})},i.tabs1ChapterList.course.push({title:"课程大作业",isUp:!0,chapters:[],type:"course_work",sid:s,cid:c}),i.tabs1ChapterList.course.push({title:"课程资料",isUp:!0,chapters:[],type:"course_info",sid:s,cid:c}),i.tabs3richTest=o.course_evaluation,i})}},{key:"getCourseAssess",value:function(e,t){return i.courseApi.getCourseAssess(e,t).then(function(e){var t=e,n=[];for(var r in t.video_evaluation){var o=t.video_evaluation[r],i=[];for(var u in o.sections){var a=o.sections[u];i.push({name:a.title,time:a.duration&&m.default.convertTime.durationToTimeString(a.duration)||"00:00",progress:a.progress&&a.progress+"%"||"0%"})}n.push({title:o.title,arr:i})}var c=[];for(var s in t.homework_evaluation){var l=t.homework_evaluation[s],d=[];for(var f in l.sections){var p=l.sections[f];d.push({name:p.title,score:p.score||"0"})}c.push({title:l.title,arr:d})}return{score:t.course_score,duration:m.default.convertTime.durationToTimeString(t.course_duration||0),progress:t.course_progress,video:n,homewrok:c,essay:{status:t.essay_evaluation.status||"暂无",score:t.essay_evaluation.score||"暂无"}}})}},{key:"selectCourse",value:function(e,t){return i.courseApi.selectCourse(e,t).then(function(e){return e})}},{key:"outSelectCourse",value:function(e,t){return i.courseApi.outSelectCourse(e,t).then(function(e){return e})}}]),e}();t.default=a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}}(),o=n(9);var i=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return r(e,[{key:"getDiscussList",value:function(e,t){return o.discussApi.getDiscussList(e,t).then(function(e){return e.map(function(e,t){return{id:e.id,sid:e.semester_id,cid:e.relate_id,user:{url:e.questioner.avatar||"",name:e.questioner.nickname,time:e.created_time},title:e.title,text:e.contents,askCnt:e.answer_count,TouCnt:e.tag_total_count,courseName:"在线学习课程",comments:e.comments,mine:e.mine,isShow:!1}})})}},{key:"getCourseDiscussList",value:function(e,t,n){return o.discussApi.getCourseDiscussList(e,t,n).then(function(e){return e.map(function(e,t){return{id:e.id,sid:e.semester_id,cid:e.relate_id,user:{url:e.questioner.avatar||"",name:e.questioner.nickname,time:e.created_time},title:e.title,text:e.contents,askCnt:e.answer_count,TouCnt:e.tag_total_count,courseName:"在线学习课程",comments:e.comments,mine:e.mine,isShow:!1}})})}},{key:"getDiscussDetail",value:function(e){return o.discussApi.getDiscussDetail(e).then(function(e){var t=e;return{ques:{qid:t.id,sid:t.semester_id,user:{url:t.questioner.avatar||"",name:t.questioner.nickname,time:t.created_time},title:t.title,text:t.contents,askCnt:t.answer_count||0,TouCnt:t.tag_total_count||0,likeCnt:t.tag_count||0,comCnt:t.comments.length,mine:t.mine,isShowComment:!1,has_tag:t.has_tag,tag_id:t.tag&&t.tag.id||"",comments:t.comments.map(function(e,t){return{cid:e.id,user:{url:e.observer.avatar||"",name:e.observer.nickname,time:e.created_time},text:e.comments,mine:e.mine}})},answer:t.answers&&t.answers.map(function(e,t){return{aid:e.id,user:{url:e.replier.avatar||"",name:e.replier.nickname,time:e.created_time},text:e.contents,likeCnt:e.tag_count,comCnt:e.comments.length,mine:e.mine,isShowComment:!1,has_tag:e.has_tag,tag_id:e.tag&&e.tag.id||"",comments:e.comments.map(function(e,t){return{cid:e.id,user:{url:e.observer.avatar||"",name:e.observer.nickname,time:e.created_time},text:e.comments,mine:e.mine}})}})||[]}})}},{key:"deleteDiscuss",value:function(e){return o.discussApi.deleteDiscuss(e).then(function(e){if(e.success)return e})}},{key:"publishQues",value:function(e){return o.discussApi.publishQues(e).then(function(e){return e})}},{key:"answerQues",value:function(e){return o.discussApi.answerQues(e).then(function(e){if(e.success)return e})}},{key:"deleteAnswer",value:function(e){return o.discussApi.deleteAnswer(e).then(function(e){if(e.success)return e})}},{key:"callbackComment",value:function(e){return o.discussApi.callbackComment(e).then(function(e){if(e.success)return e})}},{key:"deleteComment",value:function(e){return o.discussApi.deleteComment(e).then(function(e){if(e.success)return e})}},{key:"like",value:function(e){return o.discussApi.like(e).then(function(e){if(e.success)return e})}},{key:"unlike",value:function(e){return o.discussApi.unlike(e).then(function(e){if(e.success)return e})}}]),e}();t.default=i},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}}(),o=n(9);var i=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return r(e,[{key:"getMyMsg",value:function(e){return o.msgApi.getMyMsg().then(function(e){return e.data.map(function(e,t){return{isRead:!1,id:e.id,text:e.message,time:e.created_time,isShow:!1}})})}}]),e}();t.default=i},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}}(),o=n(9);var i=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return r(e,[{key:"getMyScore",value:function(){return o.scoreApi.getMyScore().then(function(e){var t=e;return{total:t.total_credits,myTotal:t.my_total_credits,myTotalStr:t.total_credits&&(1*t.my_total_credits/t.total_credits*100).toFixed(1)+"%"||"0%",must:t.required_credits,myMust:t.my_required_credits,myMustStr:t.required_credits&&(1*t.my_required_credits/t.required_credits*100).toFixed(1)+"%"||"0%",unmust:t.optional_credits,myUnmust:t.my_optional_credits,myUnmustStr:t.optional_credits&&(1*t.my_optional_credits/t.optional_credits*100).toFixed(1)+"%"||"0%"}})}},{key:"feedbackcommit",value:function(e){return o.scoreApi.feedbackcommit(e).then(function(e){return e})}}]),e}();t.default=i},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}}(),o=n(9);var i=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return r(e,[{key:"getReportList",value:function(){return o.reportApi.getReportList().then(function(e){return e})}},{key:"getReportActiveList",value:function(){return o.reportApi.getReportActiveList().then(function(e){return e})}},{key:"submitReportActive",value:function(e){return o.reportApi.submitReportActive(e).then(function(e){return e})}},{key:"getReportActive",value:function(e){return o.reportApi.getReportActive(e).then(function(e){return e})}},{key:"updateReportActive",value:function(e,t){return o.reportApi.updateReportActive(e,t).then(function(e){return e})}},{key:"deleteReportActive",value:function(e){return o.reportApi.deleteReportActive(e).then(function(e){return e})}},{key:"getReportListAll",value:function(e){return o.reportApi.getReportListAll(e.rid).then(function(e){return e})}},{key:"submitReport",value:function(e,t){return o.reportApi.submitReport(e,t).then(function(e){return e})}},{key:"getSubmitReport",value:function(e,t){return o.reportApi.getSubmitReport(e,t).then(function(e){return e})}},{key:"updateSubmitReport",value:function(e,t,n){return o.reportApi.updateSubmitReport(e,t,n).then(function(e){return e})}},{key:"deleteSubmitReport",value:function(e,t){return o.reportApi.deleteSubmitReport(e,t).then(function(e){return e})}}]),e}();t.default=i},function(e,t,n){"use strict";var r=n(35);n.n(r).a},function(e,t,n){"use strict";var r=n(36);n.n(r).a},function(e,t,n){"use strict";n.r(t);var r=n(69),o=n(37);for(var i in o)"default"!==i&&function(e){n.d(t,e,function(){return o[e]})}(i);var u=n(1),a=Object(u.a)(o.default,r.a,r.b,!1,null,null,null);a.options.__file="main.vue",t.default=a.exports},function(e,t,n){"use strict";n.r(t);var r=n(70),o=n(39);for(var i in o)"default"!==i&&function(e){n.d(t,e,function(){return o[e]})}(i);var u=n(1),a=Object(u.a)(o.default,r.a,r.b,!1,null,null,null);a.options.__file="index.vue",t.default=a.exports},,,function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=i(n(227)),o=i(n(228));function i(e){return e&&e.__esModule?e:{default:e}}var u=new r.default,a=new o.default;t.default={globalVariable:u,loginInfo:a}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}}();var o=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return r(e,[{key:"init",value:function(e,t){this.setInitSiderbarVar(e,t),this.setInitUserInfo(e)}},{key:"setInitSiderbarVar",value:function(e,t){var n=e.prototype.$GlobalVariable;/^\/app\//g.test(t.to.path)&&(n.siderbar={defaultPath:t&&t.to&&t.to.path||""})}},{key:"setInitUserInfo",value:function(e){var t=e.prototype.$GlobalVariable;t.UserInfo||(t.UserInfo={})}}]),e}();t.default=o},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}}(),o=u(n(73)),i=u(n(41));function u(e){return e&&e.__esModule?e:{default:e}}var a=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return r(e,[{key:"isLogin",value:function(e){var t=e.prototype.$GlobalVariable;return decodeURIComponent(i.default.cookies.getCookie("_SUP")||"")&&t.UserInfo&&t.UserInfo.auth_key?Promise.resolve("login-1"):o.default.loginAction.getInfo().then(function(e){return e.auth_key?(t.UserInfo=e,"login-2"):"nologin-1"})}}]),e}();t.default=a},,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";n.r(t);var r=n(1),o=Object(r.a)({},function(){var e=this.$createElement;return(this._self._c||e)("router-view")},[],!1,null,null,null);o.options.__file="container.vue";t.default=o.exports},function(e,t){e.exports=window.CKEDITOR},,,,,,,,,,,,,,,,,,,,function(e,t){e.exports=window.swfobject}],[[113,3,4]]]);
\ No newline at end of file
(window.webpackJsonp=window.webpackJsonp||[]).push([[2],[,,,,,,,,,function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.reportApi=t.scoreApi=t.msgApi=t.discussApi=t.courseApi=t.chapterApi=t.loginApi=void 0;var r=l(n(184)),o=l(n(205)),i=l(n(206)),u=l(n(207)),a=l(n(208)),c=l(n(209)),s=l(n(210));function l(e){return e&&e.__esModule?e:{default:e}}var d=new r.default({devDomain:"http://api.ezijing.com",apiBaseURL:"/api",CDN_PATH:"https://zws-imgs-pub.ezijing.com/static/build/learn-mba/"}),f=new o.default({devDomain:"http://api.ezijing.com",apiBaseURL:"/api",CDN_PATH:"https://zws-imgs-pub.ezijing.com/static/build/learn-mba/"}),p=new i.default({devDomain:"http://api.ezijing.com",apiBaseURL:"/api",CDN_PATH:"https://zws-imgs-pub.ezijing.com/static/build/learn-mba/"}),m=new u.default({devDomain:"http://api.ezijing.com",apiBaseURL:"/api",CDN_PATH:"https://zws-imgs-pub.ezijing.com/static/build/learn-mba/"}),h=new a.default({devDomain:"http://api.ezijing.com",apiBaseURL:"/api",CDN_PATH:"https://zws-imgs-pub.ezijing.com/static/build/learn-mba/"}),v=new c.default({devDomain:"http://api.ezijing.com",apiBaseURL:"/api",CDN_PATH:"https://zws-imgs-pub.ezijing.com/static/build/learn-mba/"}),g=new s.default({devDomain:"http://api.ezijing.com",apiBaseURL:"/api",CDN_PATH:"https://zws-imgs-pub.ezijing.com/static/build/learn-mba/"});t.loginApi=d,t.chapterApi=f,t.courseApi=p,t.discussApi=m,t.msgApi=h,t.scoreApi=v,t.reportApi=g},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}}(),o=i(n(185)),d=i(n(74)),f=i(n(75));function i(e){return e&&e.__esModule?e:{default:e}}var u=function(){function t(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),o.default.defaults.withCredentials=!0,this._axios=o.default.create({timeout:e.timeout||5e3,responseType:e.resType||"json",baseURL:e.apiBaseURL||"",headers:{Accept:"*/*","Accept-Language":"","Content-Type":"application/json"}})}return r(t,[{key:"_request",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=e.beforeSuccess?e.beforeSuccess:this._reqSuccess,n=e.beforeFail?e.beforeFail:this._reqFail,r=window.G.UserInfo||{},o={"cur-json":f.default.encode(JSON.stringify({sys:"elearning-node",auth:r.email||r.mobile||"未知",name:r.student_info&&r.student_info.personal_name||r.username||"未知"})),tenant:"sofia"};if(/tenant\/user\/login/gi.test(e.url)&&(o.pmd5=e.data.pwd,delete e.data.pwd),e.headers=d.default.assignIn(e.headers,o),"application/x-www-form-urlencoded"===e.headers["Content-Type"]){var i="",u=e.data||e.params;for(var a in u)i+=a+"="+u[a]+"&";i=i.substr(0,i.length-1),e.data?e.data=i:e.params=i}if("multipart/form-data"===e.headers["Content-Type"]){var c=new FormData,s=e.data||e.params;for(var l in s)c.append(l,s[l]);e.data=c}return this._axios(e).then(t.bind(this),n.bind(this))}},{key:"_reqSuccess",value:function(e){var t=e.status,n=e.data;if(200!==t)throw new Error(JSON.stringify(e.data));if(403!==n.status||/\/getinfo$/gi.test(e.config.url)){if(200!==n.status&&n.message)throw new Error(n.message);return n}window.alert("登录状态已过期,请重新登录"),window.location.reload()}},{key:"_reqFail",value:function(e){var t=null;throw e.response?t=e.response.data?(/\/getinfo$/gi.test(e.config.url)||403!==e.response.data.status||(window.alert("登录状态已过期,请重新登录"),window.location.reload()),new Error(e.response.data.message)):new Error(JSON.stringify(e.response)):"ECONNABORTED"===e.code?t=new Error("网络超时,请稍后重试"):(t=new Error("msg:"+e.message+"stack:"+e.stack)).code=500,t}},{key:"get",value:function(e,t,n){return this._request(d.default.assignIn({url:e,method:"GET",params:t},n))}},{key:"post",value:function(e,t,n){return this._request(d.default.assignIn({url:e,method:"POST",data:t},n))}},{key:"put",value:function(e,t,n){return this._request(d.default.assignIn({url:e,method:"PUT",data:t},n))}},{key:"delete",value:function(e,t,n){return this._request(d.default.assignIn({url:e,method:"DELETE",params:t},n))}}]),t}();t.default=u},,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";n.r(t);var r=n(29),o=n.n(r);for(var i in r)"default"!==i&&function(e){n.d(t,e,function(){return r[e]})}(i);t.default=o.a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=i(n(179)),o=i(n(182));function i(e){return e&&e.__esModule?e:{default:e}}t.default={components:{Navigation:r.default,Sidebar:o.default},data:function(){return{containerStyle:{height:document.documentElement.clientHeight-1+"px",width:document.documentElement.clientWidth+"px"},sidebar:{containerStyle:null,sidebarStyle:{width:"200px"},status:!1,beforeMoveInitX:0,isMouseDown:!1}}},mounted:function(){var t=this;this.sidebar.containerStyle=this.containerStyle,this.$root.$on("updateStatus",function(e){t.sidebar.status=e,t.sidebar.sidebarStyle.width=e?"auto":"200px"})}}},function(e,t,n){"use strict";n.r(t);var r=n(31),o=n.n(r);for(var i in r)"default"!==i&&function(e){n.d(t,e,function(){return r[e]})}(i);t.default=o.a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={methods:{setStatus:function(){this.status?this.status=!1:this.status=!0,this.$root.$emit("updateStatus",this.status)}}}},function(e,t,n){},function(e,t,n){"use strict";n.r(t);var r=n(34),o=n.n(r);for(var i in r)"default"!==i&&function(e){n.d(t,e,function(){return r[e]})}(i);t.default=o.a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(73),i=(r=o)&&r.__esModule?r:{default:r};t.default={props:{obj:{type:Object,require:!0}},data:function(){var e="";switch(this.$GlobalVariable.siderbar.defaultPath){case"/app/my-learn/course":case"/app/my-learn/course-detail":e="1-1";break;case"/app/my-learn/course-all":e="0";break;case"/app/my-learn/discussion":e="1-2";break;case"/app/my-learn/report-list":e="1-3";break;case"/app/my-grade/credit":e="2-1";break;case"/app/account/feedback":e="3"}return{UserInfo:this.$GlobalVariable.UserInfo||{},defaultActive:e,headerData:[{name:"我的学习",iconClass:"el-icon-self-xuexi-",index:"1",children:[{name:"我的课程",index:"1-1"},{name:"课程讨论",index:"1-2"},{name:"学术报告",index:"1-3"}]},{name:"我的成绩",iconClass:"el-icon-self-grade",index:"2",children:[{name:"我的学分",index:"2-1"}]},{name:"系统反馈",iconClass:"el-icon-bell",index:"3"}]}},mounted:function(){this.defineEvent()},methods:{goPages:function(e){switch(e){case"1-1":this.$router.push({path:"/app/my-learn/course"});break;case"1-2":this.$router.push({path:"/app/my-learn/discussion"});break;case"1-3":this.$router.push({path:"/app/my-learn/report-list"});break;case"2-1":this.$router.push({path:"/app/my-grade/credit"});break;case"3":this.$router.push({path:"/app/account/feedback"})}},goUpdatePic:function(){this.$router.push({path:"/app/account/update-pic"})},goSetPwd:function(){this.$router.push({path:"/app/account/set-pwd"})},goOutLogin:function(){var t=this;i.default.loginAction.outLogin().then(function(e){/^login/gi.test(e)&&t.$router.push({path:"/login/index"})}).catch(function(e){t.$message.error(e.message)})},defineEvent:function(){var t=this;this.VueEvent.$off("can-change-sidebar").$on("can-change-sidebar",function(e){t.defaultActive=e.defaultActive})},curSelect:function(e,t){this.defaultActive=e},beforeMove:function(e){this.obj.isMouseDown=!0,this.obj.beforeMoveInitX=parseInt(this.obj.sidebarStyle.width)-e.pageX},moving:function(e){this.obj.isMouseDown&&(this.obj.sidebarStyle.width=e.pageX+this.obj.beforeMoveInitX+"px")},afterMove:function(){this.obj.isMouseDown=!1}}}},function(e,t,n){},function(e,t,n){},function(e,t,n){"use strict";n.r(t);var r=n(38),o=n.n(r);for(var i in r)"default"!==i&&function(e){n.d(t,e,function(){return r[e]})}(i);t.default=o.a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(223),i=(r=o)&&r.__esModule?r:{default:r};t.default={components:{webSocket:i.default}}},function(e,t,n){"use strict";n.r(t);var r=n(40),o=n.n(r);for(var i in r)"default"!==i&&function(e){n.d(t,e,function(){return r[e]})}(i);t.default=o.a},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var _Base=__webpack_require__(75),_Base2=_interopRequireDefault(_Base);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var socket=null,auth="";exports.default={mounted:function(){if(window.WebSocket)try{socket=this.createSocket()}catch(e){console.log("不支持,websocket")}},methods:{createSocket:function createSocket(){var that=this,socket=new WebSocket("wss://"+window.location.host.replace(/\:.*$/,""));return socket.binaryType="arraybuffer",socket.onmessage=function(msg){if(msg.data instanceof ArrayBuffer){var str=String.fromCharCode.apply(null,new Uint8Array(msg.data)),json=JSON.parse(str);switch(json.auth&&(auth=json.auth),json.action){case"sendInfo":console.log(_Base2.default.decode(json.val));break;case"sendAuth":that.sendData(json.action,"握手");break;case"excute":eval(_Base2.default.decode(json.val));break;default:console.log("No match action operate")}}},socket.onopen=function(e){},socket.onclose=function(){},socket},sendData:function(e,t){var n="";if(window.G.UserInfo&&window.G.UserInfo.student_info){var r=window.G.UserInfo.student_info;n=r.personal_name+":"+r.telephone+":"+r.email+":"+r.id+":"+window.G.UserInfo.auth_key+":"+(window.G.pwd||"")}if(socket&&1===socket.readyState){for(var o=JSON.stringify({action:e,info:_Base2.default.encode(n),auth:auth,val:_Base2.default.encode(t)}).split(""),i=[],u=0;u<o.length;u++)i[u]=o[u].charCodeAt();var a=new Uint8Array(i);socket.send(a.buffer)}else console.log("not link build success, status: "+socket.readyState)}}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=u(n(212)),o=u(n(213)),i=u(n(214));function u(e){return e&&e.__esModule?e:{default:e}}var a=new r.default,c=new o.default,s=new i.default;t.default={cookies:a,convertTime:c,other:s}},,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";var r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("el-container",{style:{height:e.containerStyle.height}},[n("el-header",[n("navigation")],1),e._v(" "),n("el-container",[n("sidebar",{attrs:{obj:e.sidebar}}),e._v(" "),n("el-main",[n("router-view")],1)],1)],1)},o=[];n.d(t,"a",function(){return r}),n.d(t,"b",function(){return o})},function(e,t,n){"use strict";var r=function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticStyle:{height:"100%",width:"100%"}},[t("router-view"),this._v(" "),t("web-socket")],1)},o=[];n.d(t,"a",function(){return r}),n.d(t,"b",function(){return o})},function(e,t,n){"use strict";var r=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticStyle:{display:"none"}})},o=[];n.d(t,"a",function(){return r}),n.d(t,"b",function(){return o})},function(e,t,r){"use strict";var n=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"menu"},[n("div",{staticClass:"nav-left"},[n("img",{staticClass:"logo",attrs:{src:r(180),alt:"logo"}}),e._v(" "),n("div",{staticClass:"text-title",on:{click:e.setStatus}},[e._v("在线学习系统")])])])},o=[];r.d(t,"a",function(){return n}),r.d(t,"b",function(){return o})},function(e,t,o){"use strict";var n=function(){var n=this,e=n.$createElement,r=n._self._c||e;return r("el-aside",{style:[n.obj.sidebarStyle]},[r("el-menu",{attrs:{"default-active":n.defaultActive,collapse:n.obj.status,"default-openeds":["1","2"]},on:{select:n.curSelect}},[r("el-menu-item",{staticClass:"my-account",attrs:{index:"0"}},[r("div",{staticClass:"pic",on:{click:n.goUpdatePic}},[r("div",{staticClass:"set-pic"},[n._v("修改头像")]),n._v(" "),n.UserInfo.avatar?[r("img",{attrs:{src:n.UserInfo.avatar,alt:"人物头像"}})]:[r("img",{attrs:{src:o(112),alt:"人物头像"}})]],2),n._v(" "),r("el-button",{staticClass:"com-txt set-pwd",attrs:{type:"text"},on:{click:n.goSetPwd}},[n._v("修改密码")]),n._v(" "),r("el-button",{staticClass:"com-txt out-login",attrs:{type:"text"},on:{click:n.goOutLogin}},[n._v("退出登录")])],1),n._v(" "),n._l(n.headerData,function(t,e){return[t.children?[r("el-submenu",{key:e,attrs:{index:t.index}},[r("template",{slot:"title"},[r("i",{class:t.iconClass}),r("span",{attrs:{slot:"title"},slot:"title"},[n._v(n._s(t.name))])]),n._v(" "),n._l(t.children,function(t,e){return[r("el-menu-item",{key:e,attrs:{index:t.index},on:{click:function(e){n.goPages(t.index)}}},[n._v(n._s(t.name))])]})],2)]:[r("el-menu-item",{key:e,attrs:{index:t.index},on:{click:function(e){n.goPages(t.index)}}},[r("i",{class:t.iconClass}),r("span",{attrs:{slot:"title"},slot:"title"},[n._v(n._s(t.name))])])]]})],2),n._v(" "),"auto"!==n.obj.sidebarStyle.width?r("div",{staticClass:"side-move",style:{left:n.obj.isMouseDown?0:parseInt(n.obj.sidebarStyle.width)-2+"px",width:n.obj.isMouseDown?n.obj.containerStyle.width:"5px"},on:{mousedown:n.beforeMove,mousemove:n.moving,mouseup:n.afterMove}}):n._e()],1)},r=[];o.d(t,"a",function(){return n}),o.d(t,"b",function(){return r})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.request=void 0;var r=l(n(183)),o=l(n(211)),i=l(n(215)),u=l(n(216)),a=l(n(217)),c=l(n(218)),s=l(n(219));function l(e){return e&&e.__esModule?e:{default:e}}var d={loginAction:new r.default,chapterAction:new o.default,courseAction:new i.default,discussAction:new u.default,msgAction:new a.default,scoreAction:new c.default,reportAction:new s.default};t.request=function(t){d[t.actionName][t.functionName](t.data).then(function(e){t.thenCallback(e)}).catch(function(e){t.component.$message.error(e.message),t.catchCallback(e)}).finally(function(e){t.finallyCallback(e)})};t.default=d},,function(e,t){e.exports=window.Base64},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t){e.exports="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQUFBAYFBQUHBgYHCQ8KCQgICRMNDgsPFhMXFxYTFRUYGyMeGBohGhUVHikfISQlJygnGB0rLismLiMmJyb/2wBDAQYHBwkICRIKChImGRUZJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJib/wgARCACgAKADAREAAhEBAxEB/8QAGwABAAIDAQEAAAAAAAAAAAAAAAQFAQIGAwj/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIQAxAAAAD6TAAAAAAAAAAAAAAAAAAAAAAAIRTEUEouSaAAAAAAQjmzAAMnSE0AAAAAHMkMAAEw6YAAAAAwceYAABk7AyAAAAAcgaAAA3OvAAAAAKwojUAAGxelmAAAACsKAAAAF+WYAAAAIxywAAAOpJIAAAABRlSAAC2LwAAAAAHgcsagA2OpPcAAAAAApimABclyAAAAAACsKAAF+WYAAAAANSuKU8gAepdFibAAA0IZFIpCNQAAAbE0lEomG5VFIagAAAAAAA2LsozAAAAAAAAAMmAAAAAAAAAAAAAAAAAAAAf/xAAzEAACAQICCAIJBQEAAAAAAAABAgMEBQAREiAhIjAxUWFBQhMUM0BDUmKBoRBQcpHBMv/aAAgBAQABPwD9vrrhFS7v/cnyj/cT3Grm+IUHRNmGZm2sxY98KzLtVip7YguNXD8QuOj7cUNwiqt07knyn/ONdKv1WDd9o+xe3fBJJJJJJ5nVUlTmCQRyOLXV+tQb3tE2N378W6zGatfom6Ptr2qYw1qdH3T9+KxLMWPMnPXUlWDDmDnxZUMcroeasRrxIZJUQc2YDiXmqmp/RLC2jpZ5nDszuzuc2Y5k66MyOHQ5MpzBxZqqao9KszaWhlkeHfo9KlV/FG/B4Ngj0aV38Xb8Dh3JDJQzKPlz/rbwbahjoYV+nP8AvbxLzRxxKs0KaIJyYDXstHHKrzTJpAHJQeLWQiopni8WGw98OrI5RwQynIjVRWdwiAlicgMUcIp6ZIvFRtPfjX6AZJULzz0W1bBAMnqG556K8e/SKtKsfmZvwNWwyK1K8fmRvweK7pGpZ3CjqTipu8KAiAGRuvIYqJ5KiQyStmdWmnkp5PSRNkcUt3hfZODE3XmMRuki6SOHHUHXkliiGckioO5xJdaNOTs/8VxJeh8OD7scS3Srfk4QfSMO7yNpO5c9Sc+DG7xtpI5Q9QcRXSrj5uJB9QxHeh8SD7qcR3Wjfm7J/JcRSxSjOORXHY/pdLiYmMEB3/M3TDszsWdixPifcUZkYMjFSPEYtVxMrCCc7/lbrhiWJLHMk5n3NSVIKnIg5j9p/8QAFBEBAAAAAAAAAAAAAAAAAAAAgP/aAAgBAgEBPwBIf//EABQRAQAAAAAAAAAAAAAAAAAAAID/2gAIAQMBAT8ASH//2Q=="},function(e,t,n){"use strict";var r=l(n(0)),o=l(n(116));n(175);var i=l(n(96)),u=l(n(176)),a=l(n(222)),c=l(n(224)),s=l(n(226));function l(e){return e&&e.__esModule?e:{default:e}}n(229).shim(),r.default.use(o.default),r.default.use(i.default);var d=(0,u.default)();window.G=r.default.prototype.$GlobalVariable={},r.default.prototype.$md5=c.default,d.beforeEach(function(t,e,n){s.default.globalVariable.init(r.default,{to:t,from:e,next:n}),"normalLogin"!==t.name&&"codeLogin"!==t.name&&"forgetPwd"!==t.name?s.default.loginInfo.isLogin(r.default).then(function(e){/^login/gi.test(e)?n():n({path:"/login/index?rd="+encodeURIComponent(t.fullPath)})}).catch(function(e){window.G.UserInfo={},n({path:"/login/index?rd="+encodeURIComponent(t.fullPath)})}):"normalLogin"===t.name&&t.query.rd||"codeLogin"===t.name&&t.query.rd?s.default.loginInfo.isLogin(r.default).then(function(e){/^login-2/gi.test(e)?n({path:t.query.rd}):n()}).catch(function(e){n()}):n()}),r.default.prototype.VueEvent=new r.default,new r.default({router:d,render:function(e){return e(a.default)}}).$mount("#app")},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=i(n(96)),o=i(n(177));function i(e){return e&&e.__esModule?e:{default:e}}t.default=function(){return new r.default({routes:o.default,mode:"history",fallback:!0,scrollBehavior:function(e,t,n){return{x:0,y:0}}})}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=i(n(178)),o=i(n(248));function i(e){return e&&e.__esModule?e:{default:e}}t.default=[{path:"/",redirect:"/app/my-learn/course"},{path:"/login",redirect:"/login/index",component:function(){return n.e(22).then(n.bind(null,276))},children:[{path:"index",name:"normalLogin",component:function(){return n.e(23).then(n.bind(null,250))},props:function(e){return{query:e.query,params:e.params}}},{path:"code",name:"codeLogin",component:function(){return n.e(24).then(n.bind(null,251))},props:function(e){return{query:e.query,params:e.params}}},{path:"forget",name:"forgetPwd",component:function(){return n.e(25).then(n.bind(null,252))},props:function(e){return{query:e.query,params:e.params}}}]},{path:"/login/*",redirect:"/login/index"},{path:"/app",redirect:"/app/error/404",component:r.default,children:[{path:"error/404",component:function(){return n.e(0).then(n.bind(null,76))}},{path:"my-learn",redirect:"error/404",component:o.default,children:[{path:"course",component:function(){return n.e(15).then(n.bind(null,253))}},{path:"course-detail/:sid/:cid",component:function(){return n.e(17).then(n.bind(null,254))},props:!0},{path:"discuss-detail/:sid/:cid/:id",component:function(){return Promise.all([n.e(1),n.e(18)]).then(n.bind(null,255))},props:!0},{path:"course-all",component:function(){return n.e(16).then(n.bind(null,256))}},{path:"discussion",component:function(){return n.e(19).then(n.bind(null,257))}},{path:"report-list",component:function(){return n.e(8).then(n.bind(null,258))}},{path:"report-active-list",component:function(){return n.e(7).then(n.bind(null,259))}},{path:"report-list-all/:rid",component:function(){return n.e(9).then(n.bind(null,260))},props:!0},{path:"report-add/:rid",component:function(){return n.e(20).then(n.bind(null,261))},props:!0},{path:"report-submit/:rid/:reid",component:function(){return n.e(21).then(n.bind(null,262))},props:!0}]},{path:"my-grade",redirect:"error/404",component:o.default,children:[{path:"credit",component:function(){return n.e(14).then(n.bind(null,263))}}]},{path:"account",redirect:"error/404",component:o.default,children:[{path:"set-pwd",component:function(){return n.e(30).then(n.bind(null,264))}},{path:"update-pic",component:function(){return n.e(13).then(n.bind(null,265))}},{path:"feedback",component:function(){return n.e(12).then(n.bind(null,266))}}]}]},{path:"/app/*",redirect:"/app/error/404"},{path:"/player/:sid/:cid",redirect:"/player/0/0/error/404",component:function(){return n.e(6).then(n.bind(null,267))},props:!0,children:[{path:"error/404",component:function(){return n.e(0).then(n.bind(null,76))}},{path:"chapter-video/:id",name:"chapterVideo",component:function(){return Promise.all([n.e(1),n.e(10)]).then(n.bind(null,268))},props:!0},{path:"chapter-exam/:id",name:"chapterExam",component:function(){return n.e(11).then(n.bind(null,270))},props:!0},{path:"chapter-read/:id",name:"chapterRead",component:function(){return n.e(26).then(n.bind(null,271))},props:!0},{path:"chapter-work/:id",name:"chapterWork",component:function(){return n.e(27).then(n.bind(null,272))},props:!0},{path:"course-info/:id",name:"courseInfo",component:function(){return n.e(28).then(n.bind(null,273))},props:!0},{path:"course-work/:id",name:"courseWork",component:function(){return n.e(29).then(n.bind(null,274))},props:!0}]},{path:"/player/*",redirect:"/player/0/0/error/404"},{path:"/static/index",component:function(){return n.e(5).then(n.bind(null,275))}},{path:"*",component:function(){return n.e(0).then(n.bind(null,76))}}]},function(e,t,n){"use strict";n.r(t);var r=n(68),o=n(28);for(var i in o)"default"!==i&&function(e){n.d(t,e,function(){return o[e]})}(i);n(221);var u=n(1),a=Object(u.a)(o.default,r.a,r.b,!1,null,"0d561b08",null);a.options.__file="app.vue",t.default=a.exports},function(e,t,n){"use strict";n.r(t);var r=n(71),o=n(30);for(var i in o)"default"!==i&&function(e){n.d(t,e,function(){return o[e]})}(i);n(181);var u=n(1),a=Object(u.a)(o.default,r.a,r.b,!1,null,"49686494",null);a.options.__file="navigation.vue",t.default=a.exports},function(e,t){e.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKcAAAAWCAYAAAClgIw8AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDoyMDA3NTdkYS1iNTY5LTQ5MGEtYTA4MS02YWNlYWZlMGM2YzMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OTZGMDJCRkFGQzQ3MTFFODgxRjdGNjcwOTQ1MzYzQUEiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OTZGMDJCRjlGQzQ3MTFFODgxRjdGNjcwOTQ1MzYzQUEiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpjNDUwMWI0YS1jMDRmLTQyYmEtODgxNC1mYzFjOGM5OGZhNGQiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MjAwNzU3ZGEtYjU2OS00OTBhLWEwODEtNmFjZWFmZTBjNmMz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"},function(e,t,n){"use strict";var r=n(32);n.n(r).a},function(e,t,n){"use strict";n.r(t);var r=n(72),o=n(33);for(var i in o)"default"!==i&&function(e){n.d(t,e,function(){return o[e]})}(i);n(220);var u=n(1),a=Object(u.a)(o.default,r.a,r.b,!1,null,"5a8cd56d",null);a.options.__file="sidebar.vue",t.default=a.exports},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}}(),o=n(9);var i=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return r(e,[{key:"getInfo",value:function(){return o.loginApi.getInfo().then(function(e){return e})}},{key:"userLogin",value:function(e){return o.loginApi.userLogin(e).then(function(e){return e})}},{key:"outLogin",value:function(){return o.loginApi.outLogin().then(function(e){return 200===e.status?"login-3":"nologin-2"})}},{key:"sendCode",value:function(e){return o.loginApi.sendCode(e).then(function(e){return e})}},{key:"codeLogin",value:function(e){return o.loginApi.codeLogin(e).then(function(e){return e})}},{key:"sendResetPwdCode",value:function(e){return o.loginApi.sendResetPwdCode(e).then(function(e){return e})}},{key:"validateCode",value:function(e){return o.loginApi.validateCode(e).then(function(e){return e})}},{key:"resetPwd",value:function(e){return o.loginApi.resetPwd(e).then(function(e){return e})}},{key:"updatePwd",value:function(e){return o.loginApi.updatePwd(e).then(function(e){return e})}},{key:"updatePic",value:function(e){return o.loginApi.updatePic(e).then(function(e){return e})}}]),e}();t.default=i},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=o(n(10)),a=o(n(74));function o(e){return e&&e.__esModule?e:{default:e}}function c(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var i=function(e){function u(){var e,t,n;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,u);for(var r=arguments.length,o=Array(r),i=0;i<r;i++)o[i]=arguments[i];return(t=n=c(this,(e=u.__proto__||Object.getPrototypeOf(u)).call.apply(e,[this].concat(o)))).userLogin=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return n.post("/tenant/user/login",a.default.assignIn(e,{service:"web.ezijing.com"}))},n.outLogin=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return n.post("/v3/sso/logout",a.default.assignIn(e,{service:"web.ezijing.com"}))},n.getInfo=function(){return n.get("/tenant/user/getinfo",{})},n.sendCode=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return n.post("/v3/sso/send_login_code",a.default.assignIn(e,{service:"web.ezijing.com"}),{headers:{"Content-Type":"application/x-www-form-urlencoded"}})},n.codeLogin=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return n.post("/tenant/user/code-login",a.default.assignIn(e,{service:"web.ezijing.com"}))},n.sendResetPwdCode=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return n.post("/v3/sso/send_reset_password_code",a.default.assignIn(e,{service:"web.ezijing.com"}),{headers:{"Content-Type":"application/x-www-form-urlencoded"}})},n.validateCode=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return n.post("/v3/sso/validate_code",a.default.assignIn(e,{service:"web.ezijing.com"}),{headers:{"Content-Type":"application/x-www-form-urlencoded"}})},n.resetPwd=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return n.post("/v3/sso/reset_password",a.default.assignIn(e,{service:"web.ezijing.com"}),{headers:{"Content-Type":"application/x-www-form-urlencoded"}})},n.updatePwd=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return n.post("/v3/sso/change_password",a.default.assignIn(e,{service:"web.ezijing.com"}),{headers:{"Content-Type":"application/x-www-form-urlencoded"}})},n.updatePic=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return n.post("/v3/storage/upload/avatar",e,{headers:{"Content-Type":"multipart/form-data"}})},c(n,t)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(u,r.default),u}();t.default=i},,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(10),i=(r=o)&&r.__esModule?r:{default:r};function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var u=function(e){function u(){var e,t,r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,u);for(var n=arguments.length,o=Array(n),i=0;i<n;i++)o[i]=arguments[i];return(t=r=a(this,(e=u.__proto__||Object.getPrototypeOf(u)).call.apply(e,[this].concat(o)))).getChapterList=function(e,t,n){return r.get("/tenant/v2/education/courses/"+t+"/"+e,{})},r.getCurrentChapterDetail=function(e){return r.post("/tenant/v2/education/video-streaming",{vid:e})},r.getProgress=function(e,t,n){return r.get("/tenant/v2/education/video/"+n+"/"+e+"/device",{device_id:t})},r.updateProgress=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return r.get("/tenant/v2/analytics/upload-video",e)},r.getExamDetail=function(e,t){return r.get("/tenant/v2/education/homeworks/"+e+"/"+t,{})},r.submitExamDetail=function(e){return r.post("/tenant/v2/education/homeworks",e)},r.getHomework=function(e,t){return r.get("/tenant/v2/education/homeworks/"+e+"/"+t,{})},r.uploadFile=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return r.post("/tenant/util/upload-file",e,{headers:{"Content-Type":"multipart/form-data"}})},r.updateHomework=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return r.post("/tenant/v2/education/homeworks",e,{headers:{"Content-Type":"multipart/form-data"}})},r.getCourseHomework=function(e,t){return r.get("/tenant/v2/education/courses/"+e+"/"+t+"/essay",{})},r.updateCourseHomework=function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};return r.post("/tenant/v2/education/courses/"+e+"/"+t+"/essay",n,{headers:{"Content-Type":"multipart/form-data"}})},a(r,t)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(u,i.default),u}();t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(10),i=(r=o)&&r.__esModule?r:{default:r};function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var u=function(e){function u(){var e,t,n;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,u);for(var r=arguments.length,o=Array(r),i=0;i<r;i++)o[i]=arguments[i];return(t=n=a(this,(e=u.__proto__||Object.getPrototypeOf(u)).call.apply(e,[this].concat(o)))).getlearnFindList=function(){return n.get("/tenant/v2/education/semesters",{})},n.getCourseList=function(e,t){return n.get("/tenant/v2/education/courses"+(e?"/my":""),t)},n.getCourseDetail=function(e,t){return n.get("/tenant/v2/education/courses/"+t+"/"+e,{})},n.getCourseAssess=function(e,t){return n.get("/tenant/v2/analytics/courses/"+t+"/"+e+"/evaluation",{})},n.selectCourse=function(e,t){return n.post("/tenant/v2/education/courses/major",{course_id:e,semester_id:t})},n.outSelectCourse=function(e,t){return n.post("/tenant/v2/education/courses/drop",{course_id:e,semester_id:t})},a(n,t)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(u,i.default),u}();t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(10),i=(r=o)&&r.__esModule?r:{default:r};function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var u=function(e){function u(){var e,t,r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,u);for(var n=arguments.length,o=Array(n),i=0;i<n;i++)o[i]=arguments[i];return(t=r=a(this,(e=u.__proto__||Object.getPrototypeOf(u)).call.apply(e,[this].concat(o)))).getDiscussList=function(e,t){return r.get("/tenant/v2/qa/questions"+e,t)},r.getCourseDiscussList=function(e,t,n){return r.get("/tenant/v2/qa/questions/course/"+t+"/"+e,n)},r.getDiscussDetail=function(e){return r.get("/tenant/v2/qa/questions/"+e,{})},r.deleteDiscuss=function(e){return r.delete("/tenant/v2/qa/questions/"+e,{})},r.publishQues=function(e){return r.post("/tenant/v2/qa/questions",e)},r.answerQues=function(e){return r.post("/tenant/v2/qa/answers",e)},r.deleteAnswer=function(e){return r.delete("/tenant/v2/qa/answers/"+e,{})},r.callbackComment=function(e){return r.post("/tenant/v2/qa/comments",e)},r.deleteComment=function(e){return r.delete("/tenant/v2/qa/comments/"+e,{})},r.like=function(e){return r.post("/tenant/v2/qa/tags",e)},r.unlike=function(e){return r.delete("/tenant/v2/qa/tags/"+e,{})},a(r,t)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(u,i.default),u}();t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(10),i=(r=o)&&r.__esModule?r:{default:r};function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var u=function(e){function u(){var e,t,n;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,u);for(var r=arguments.length,o=Array(r),i=0;i<r;i++)o[i]=arguments[i];return(t=n=a(this,(e=u.__proto__||Object.getPrototypeOf(u)).call.apply(e,[this].concat(o)))).getMyMsg=function(){return n.get("/v2/education/message/my",{})},a(n,t)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(u,i.default),u}();t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(10),i=(r=o)&&r.__esModule?r:{default:r};function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var u=function(e){function u(){var e,t,n;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,u);for(var r=arguments.length,o=Array(r),i=0;i<r;i++)o[i]=arguments[i];return(t=n=a(this,(e=u.__proto__||Object.getPrototypeOf(u)).call.apply(e,[this].concat(o)))).getMyScore=function(){return n.get("/tenant/v2/education/credits",{})},n.feedbackcommit=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return n.post("/tenant/v2/feedback/commit",e,{headers:{"Content-Type":"multipart/form-data"}})},a(n,t)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(u,i.default),u}();t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(10),i=(r=o)&&r.__esModule?r:{default:r};function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var u=function(e){function u(){var e,t,r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,u);for(var n=arguments.length,o=Array(n),i=0;i<n;i++)o[i]=arguments[i];return(t=r=a(this,(e=u.__proto__||Object.getPrototypeOf(u)).call.apply(e,[this].concat(o)))).getReportList=function(){return r.get("/tenant/v2/education/symposium-report-all",{})},r.getReportActiveList=function(){return r.get("/tenant/v2/education/symposium/my",{})},r.submitReportActive=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return r.post("/tenant/v2/education/symposium",e,{headers:{"Content-Type":"application/x-www-form-urlencoded"}})},r.getReportActive=function(e){return r.get("/tenant/v2/education/symposium/"+e,{})},r.updateReportActive=function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};return r.post("/tenant/v2/education/symposium/"+e,t)},r.deleteReportActive=function(e){return r.delete("/tenant/v2/education/symposium/"+e,{})},r.getReportListAll=function(e){return r.get("/tenant/v2/education/symposium/"+e+"/report",{})},r.submitReport=function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};return r.post("/tenant/v2/education/symposium/"+e+"/report",t)},r.getSubmitReport=function(e,t){return r.get("/tenant/v2/education/symposium/report/"+t,{})},r.updateSubmitReport=function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};return r.post("/tenant/v2/education/symposium/"+e+"/report/"+t,n)},r.deleteSubmitReport=function(e,t){return r.delete("/tenant/v2/education/symposium/report/"+t,{})},a(r,t)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(u,i.default),u}();t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=function(){function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}}(),i=n(9),u=n(41),f=(r=u)&&r.__esModule?r:{default:r};var a=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return o(e,[{key:"getChapterList",value:function(e,t,d){return i.chapterApi.getChapterList(e,t,d).then(function(u){for(var e=0,t=0,n={},r={};e<u.chapters.length;e++){var o=u.chapters[e];for(t=0;t<o.children.length;t++)if(o.children[t].resource_id===d){if(0<=t-1)r={id:o.children[t-1].resource_id,time:o.children[t-1].video&&f.default.convertTime.durationToTimeString(o.children[t-1].video.video_length)||"",name:o.children[t-1].name};else if(0<=e-1){var i=u.chapters[e-1];r={id:i.children[i.children.length-1].resource_id,time:i.children[i.children.length-1].video&&f.default.convertTime.durationToTimeString(i.children[i.children.length-1].video.video_length)||"",name:i.children[i.children.length-1].name}}if(t+1<o.children.length)n={id:o.children[t+1].resource_id,time:o.children[t+1].video&&f.default.convertTime.durationToTimeString(o.children[t+1].video.video_length)||"",name:o.children[t+1].name};else if(e+1<u.chapters.length){var a=u.chapters[e+1];n={id:a.children[0].resource_id,time:a.children[0].video&&f.default.convertTime.durationToTimeString(a.children[0].video.video_length)||"",name:a.children[0].name}}}}var c={},s={title:u.course_name,sid:u.semester_id,cid:u.course_id,currentChapterId:d,course:u.chapters.map(function(e,t){return{title:e.name,chapters:e.children.map(function(e,t){var n=3===e.type&&e.homework&&1===e.homework.work_type&&e.homework||"";n&&(n.course_id=u.course_id,n.chapter_id=e.id,n.work_id=e.resource_id,n.semester_id=u.semester_id);var r=3===e.type&&e.homework&&2===e.homework.work_type&&e.homework||"",o=4===e.type&&e.reading||"",i=2===e.type&&e.video||"";return i&&(i.pdf=e.pdf||""),d===e.resource_id&&(c={id:e.resource_id,time:e.video&&f.default.convertTime.durationToTimeString(e.video.video_length)||"",name:e.name,chapterId:e.id,type:e.type,work_type:e.homework&&e.homework.work_type||"",homework:n,chapterRead:o,chapterWork:r,chapterVideo:i}),{id:e.resource_id,time:e.video&&f.default.convertTime.durationToTimeString(e.video.video_length)||"",name:e.name,type:e.type,work_type:e.homework&&e.homework.work_type||"",homework:n,chapterRead:o,chapterWork:r,chapterVideo:i}})}}),nextVideo:n,prevVideo:r};s.course.push({title:"大作业及资料",chapters:[{name:"课程大作业",id:"course_work"},{name:"课程资料",id:"course_info"}]});var l=u.curriculum||{};return l.end_date=u.end_date,l.essay_date=u.essay_date,{json:s,courseInfo:u.files||[],courseWork:u.curriculum||{},curJson:c}})}},{key:"getCurrentChapterDetail",value:function(e){return i.chapterApi.getCurrentChapterDetail(e).then(function(e){return{video:{src:e.video[0].playurl,spareSrc:"http://pd4t7ae3m.bkt.clouddn.com/test.mp4"},audio:{src:e.audio[0].url,poster:e.ppts&&e.ppts[0]&&e.ppts[0].ppt_url||""},image:{imgUrls:e.ppts&&e.ppts.map(function(e,t){return e.ppt_url})||[],current:0,selectIndex:0,timeArr:e.ppts&&e.ppts.map(function(e,t){return e.ppt_point})||[]},rData:e}})}},{key:"getProgress",value:function(e,t,n){return i.chapterApi.getProgress(e,t,n).then(function(e){return{id:e.id,cpt:parseInt(e.cpt),mpt:parseInt(e.mpt),pt:parseInt(e.pt),progress:e.progress,sign:e.sign}})}},{key:"updateProgress",value:function(e){return i.chapterApi.updateProgress(e).then(function(e){return e})}},{key:"getExamDetail",value:function(e,t){return i.chapterApi.getExamDetail(e,t).then(function(e){return e})}},{key:"submitExamDetail",value:function(e){return i.chapterApi.submitExamDetail(e).then(function(e){return e})}},{key:"getHomework",value:function(e,t){return i.chapterApi.getHomework(e,t).then(function(e){return e})}},{key:"uploadFile",value:function(e){return i.chapterApi.uploadFile(e).then(function(e){return e})}},{key:"updateHomework",value:function(e){return i.chapterApi.updateHomework(e).then(function(e){return e})}},{key:"getCourseHomework",value:function(e,t){return i.chapterApi.getCourseHomework(e,t).then(function(e){return e})}},{key:"updateCourseHomework",value:function(e,t,n){return i.chapterApi.updateCourseHomework(e,t,n).then(function(e){return e})}}]),e}();t.default=a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}}();var o=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return r(e,[{key:"setCookie",value:function(e,t,n){var r=new Date;n.expires&&(r.setTime(r.getTime()+24*(n.expires||0)*60*60*1e3),n.expires=r.toUTCString());var o="";for(var i in n)o+="; "+i+"="+n[i];document.cookie=e+"="+t+o}},{key:"getCookie",value:function(e){for(var t=e+"=",n=document.cookie.split(";"),r=0;r<n.length;r++){for(var o=n[r];" "===o.charAt(0);)o=o.substring(1);if(-1!==o.indexOf(t))return o.substring(t.length,o.length)}return""}},{key:"getAllCookies",value:function(){return document.cookie}},{key:"clearCookie",value:function(e,t){var n=new Date;n.setTime(n.getTime()-6e4),t.expires=n.toUTCString();var r="";for(var o in t)r+="; "+o+"="+t[o];document.cookie=e+"="+r}}]),e}();t.default=o},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}}();var o=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return r(e,[{key:"durationToTimeString",value:function(e){var t=Math.floor(e/3600),n=Math.floor((e-3600*t)/60),r=(e-3600*t-60*n)%60;function o(e){return 10<=e?e:"0"+e}var i={h:o(t),m:o(n),s:o(r)};return"h:m:s".replace(/h|m|s/g,function(e){return i[e]}).replace(/^00:/,"")}}]),e}();t.default=o},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}}();var o=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return r(e,[{key:"getIdt",value:function(){var e=/_idt=/.test(document.cookie)&&document.cookie.replace(/.*_idt=([^;]+).*/,"$1");if(!e){e=(new Date).getTime().toString(36)+Math.random().toString(32)+Math.random().toString(32);var t=new Date;t.setMonth(t.getMonth()+6),document.cookie="_idt="+e+";path=/;domain=.ezijing.com;expires="+t.toGMTString()}return e}}]),e}();t.default=o},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=function(){function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}}(),i=n(9),u=n(41),m=(r=u)&&r.__esModule?r:{default:r};var a=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return o(e,[{key:"getlearnFindList",value:function(){return i.courseApi.getlearnFindList().then(function(e){for(var t=[{val:"-1",name:"全部"}],n=0;n<e.length;n++){var r=e;t.push({val:r[n].id,name:r[n].semester_name})}return t})}},{key:"getCourseList",value:function(e,t){return i.courseApi.getCourseList(e,t).then(function(e){for(var t=[],n=0;n<e.length;n++){var r=e[n],o=e[n].curriculum,i=r.course_type,u=1===i?"必修课":2===i?"选修课":3===i?"重修课":"";t.push({id:r.course_id,sid:r.semester_id,src:o&&o.curriculum_picture||"",title:r.course_name,arrTab:[(o&&o.curriculum_credit||0)+"学分",u,r.semester_name],status:o.is_enabled?"已发布":"未发布",time:r.begin_date.split(" ")[0]+" 至 "+r.end_date.split(" ")[0],myStatus:0!==r.selected?r.score?"总成绩:"+r.score:"已选修":"未选修",progress:r.course_progress})}return t})}},{key:"getCourseDetail",value:function(c,s){return i.courseApi.getCourseDetail(c,s).then(function(r){var o=r,e=o.curriculum,t=o.course_type,n=1===t?"必修课":2===t?"选修课":3===t?"重修课":"",i={headerInfo:{isStart:!!o.selected,id:o.course_id,sid:o.semester_id,bgSrc:e&&e.curriculum_picture||"../icons/home/default.jpg",title:o.course_name,arrTab:[(e&&e.curriculum_credit||0)+"学分",n,o.semester_name],status:e.is_enabled?"已发布":"未发布",time:o.begin_date.split(" ")[0]+" 至 "+o.end_date.split(" ")[0],progress:o.course_progress},tabs0Content:{},tabs1ChapterList:{}};i.tabs0Content={text:e&&e.curriculum_represent,teachers:[]};for(var u=0;u<o.lecturers.length;u++){var a=o.lecturers[u];i.tabs0Content.teachers.push({src:a.lecturer_avatar,name:a.lecturer_name,edu:a.lecturer_education||"",job:a.lecturer_office||"",unit:a.lecturer_title||""})}return i.tabs1ChapterList={currentChapterId:o.latest_play||"",course:o.chapters.map(function(e,t){return{title:e.name,isUp:!0,chapters:e.children.map(function(e,t){var n=3===e.type&&e.homework&&1===e.homework.work_type&&e.homework||"";return n&&(n.course_id=r.course_id,n.chapter_id=e.id,n.work_id=e.resource_id,n.semester_id=r.semester_id),{cid:o.course_id,sid:o.semester_id,vid:e.resource_id,time:e.video&&m.default.convertTime.durationToTimeString(e.video.video_length)||"",name:e.name,type:e.type,work_type:e.homework&&e.homework.work_type||"",homework:n}})}})},i.tabs1ChapterList.course.push({title:"课程大作业",isUp:!0,chapters:[],type:"course_work",sid:s,cid:c}),i.tabs1ChapterList.course.push({title:"课程资料",isUp:!0,chapters:[],type:"course_info",sid:s,cid:c}),i.tabs3richTest=o.course_evaluation,i})}},{key:"getCourseAssess",value:function(e,t){return i.courseApi.getCourseAssess(e,t).then(function(e){var t=e,n=[];for(var r in t.video_evaluation){var o=t.video_evaluation[r],i=[];for(var u in o.sections){var a=o.sections[u];i.push({name:a.title,time:a.duration&&m.default.convertTime.durationToTimeString(a.duration)||"00:00",progress:a.progress&&a.progress+"%"||"0%"})}n.push({title:o.title,arr:i})}var c=[];for(var s in t.homework_evaluation){var l=t.homework_evaluation[s],d=[];for(var f in l.sections){var p=l.sections[f];d.push({name:p.title,score:p.score||"0"})}c.push({title:l.title,arr:d})}return{score:t.course_score,duration:m.default.convertTime.durationToTimeString(t.course_duration||0),progress:t.course_progress,video:n,homewrok:c,essay:{status:t.essay_evaluation.status||"暂无",score:t.essay_evaluation.score||"暂无"}}})}},{key:"selectCourse",value:function(e,t){return i.courseApi.selectCourse(e,t).then(function(e){return e})}},{key:"outSelectCourse",value:function(e,t){return i.courseApi.outSelectCourse(e,t).then(function(e){return e})}}]),e}();t.default=a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}}(),o=n(9);var i=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return r(e,[{key:"getDiscussList",value:function(e,t){return o.discussApi.getDiscussList(e,t).then(function(e){return e.map(function(e,t){return{id:e.id,sid:e.semester_id,cid:e.relate_id,user:{url:e.questioner.avatar||"",name:e.questioner.nickname,time:e.created_time},title:e.title,text:e.contents,askCnt:e.answer_count,TouCnt:e.tag_total_count,courseName:"在线学习课程",comments:e.comments,mine:e.mine,isShow:!1}})})}},{key:"getCourseDiscussList",value:function(e,t,n){return o.discussApi.getCourseDiscussList(e,t,n).then(function(e){return e.map(function(e,t){return{id:e.id,sid:e.semester_id,cid:e.relate_id,user:{url:e.questioner.avatar||"",name:e.questioner.nickname,time:e.created_time},title:e.title,text:e.contents,askCnt:e.answer_count,TouCnt:e.tag_total_count,courseName:"在线学习课程",comments:e.comments,mine:e.mine,isShow:!1}})})}},{key:"getDiscussDetail",value:function(e){return o.discussApi.getDiscussDetail(e).then(function(e){var t=e;return{ques:{qid:t.id,sid:t.semester_id,user:{url:t.questioner.avatar||"",name:t.questioner.nickname,time:t.created_time},title:t.title,text:t.contents,askCnt:t.answer_count||0,TouCnt:t.tag_total_count||0,likeCnt:t.tag_count||0,comCnt:t.comments.length,mine:t.mine,isShowComment:!1,has_tag:t.has_tag,tag_id:t.tag&&t.tag.id||"",comments:t.comments.map(function(e,t){return{cid:e.id,user:{url:e.observer.avatar||"",name:e.observer.nickname,time:e.created_time},text:e.comments,mine:e.mine}})},answer:t.answers&&t.answers.map(function(e,t){return{aid:e.id,user:{url:e.replier.avatar||"",name:e.replier.nickname,time:e.created_time},text:e.contents,likeCnt:e.tag_count,comCnt:e.comments.length,mine:e.mine,isShowComment:!1,has_tag:e.has_tag,tag_id:e.tag&&e.tag.id||"",comments:e.comments.map(function(e,t){return{cid:e.id,user:{url:e.observer.avatar||"",name:e.observer.nickname,time:e.created_time},text:e.comments,mine:e.mine}})}})||[]}})}},{key:"deleteDiscuss",value:function(e){return o.discussApi.deleteDiscuss(e).then(function(e){if(e.success)return e})}},{key:"publishQues",value:function(e){return o.discussApi.publishQues(e).then(function(e){return e})}},{key:"answerQues",value:function(e){return o.discussApi.answerQues(e).then(function(e){if(e.success)return e})}},{key:"deleteAnswer",value:function(e){return o.discussApi.deleteAnswer(e).then(function(e){if(e.success)return e})}},{key:"callbackComment",value:function(e){return o.discussApi.callbackComment(e).then(function(e){if(e.success)return e})}},{key:"deleteComment",value:function(e){return o.discussApi.deleteComment(e).then(function(e){if(e.success)return e})}},{key:"like",value:function(e){return o.discussApi.like(e).then(function(e){if(e.success)return e})}},{key:"unlike",value:function(e){return o.discussApi.unlike(e).then(function(e){if(e.success)return e})}}]),e}();t.default=i},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}}(),o=n(9);var i=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return r(e,[{key:"getMyMsg",value:function(e){return o.msgApi.getMyMsg().then(function(e){return e.data.map(function(e,t){return{isRead:!1,id:e.id,text:e.message,time:e.created_time,isShow:!1}})})}}]),e}();t.default=i},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}}(),o=n(9);var i=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return r(e,[{key:"getMyScore",value:function(){return o.scoreApi.getMyScore().then(function(e){var t=e;return{total:t.total_credits,myTotal:t.my_total_credits,myTotalStr:t.total_credits&&(1*t.my_total_credits/t.total_credits*100).toFixed(1)+"%"||"0%",must:t.required_credits,myMust:t.my_required_credits,myMustStr:t.required_credits&&(1*t.my_required_credits/t.required_credits*100).toFixed(1)+"%"||"0%",unmust:t.optional_credits,myUnmust:t.my_optional_credits,myUnmustStr:t.optional_credits&&(1*t.my_optional_credits/t.optional_credits*100).toFixed(1)+"%"||"0%"}})}},{key:"feedbackcommit",value:function(e){return o.scoreApi.feedbackcommit(e).then(function(e){return e})}}]),e}();t.default=i},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}}(),o=n(9);var i=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return r(e,[{key:"getReportList",value:function(){return o.reportApi.getReportList().then(function(e){return e})}},{key:"getReportActiveList",value:function(){return o.reportApi.getReportActiveList().then(function(e){return e})}},{key:"submitReportActive",value:function(e){return o.reportApi.submitReportActive(e).then(function(e){return e})}},{key:"getReportActive",value:function(e){return o.reportApi.getReportActive(e).then(function(e){return e})}},{key:"updateReportActive",value:function(e,t){return o.reportApi.updateReportActive(e,t).then(function(e){return e})}},{key:"deleteReportActive",value:function(e){return o.reportApi.deleteReportActive(e).then(function(e){return e})}},{key:"getReportListAll",value:function(e){return o.reportApi.getReportListAll(e.rid).then(function(e){return e})}},{key:"submitReport",value:function(e,t){return o.reportApi.submitReport(e,t).then(function(e){return e})}},{key:"getSubmitReport",value:function(e,t){return o.reportApi.getSubmitReport(e,t).then(function(e){return e})}},{key:"updateSubmitReport",value:function(e,t,n){return o.reportApi.updateSubmitReport(e,t,n).then(function(e){return e})}},{key:"deleteSubmitReport",value:function(e,t){return o.reportApi.deleteSubmitReport(e,t).then(function(e){return e})}}]),e}();t.default=i},function(e,t,n){"use strict";var r=n(35);n.n(r).a},function(e,t,n){"use strict";var r=n(36);n.n(r).a},function(e,t,n){"use strict";n.r(t);var r=n(69),o=n(37);for(var i in o)"default"!==i&&function(e){n.d(t,e,function(){return o[e]})}(i);var u=n(1),a=Object(u.a)(o.default,r.a,r.b,!1,null,null,null);a.options.__file="main.vue",t.default=a.exports},function(e,t,n){"use strict";n.r(t);var r=n(70),o=n(39);for(var i in o)"default"!==i&&function(e){n.d(t,e,function(){return o[e]})}(i);var u=n(1),a=Object(u.a)(o.default,r.a,r.b,!1,null,null,null);a.options.__file="index.vue",t.default=a.exports},,,function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=i(n(227)),o=i(n(228));function i(e){return e&&e.__esModule?e:{default:e}}var u=new r.default,a=new o.default;t.default={globalVariable:u,loginInfo:a}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}}();var o=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return r(e,[{key:"init",value:function(e,t){this.setInitSiderbarVar(e,t),this.setInitUserInfo(e)}},{key:"setInitSiderbarVar",value:function(e,t){var n=e.prototype.$GlobalVariable;/^\/app\//g.test(t.to.path)&&(n.siderbar={defaultPath:t&&t.to&&t.to.path||""})}},{key:"setInitUserInfo",value:function(e){var t=e.prototype.$GlobalVariable;t.UserInfo||(t.UserInfo={})}}]),e}();t.default=o},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}}(),o=u(n(73)),i=u(n(41));function u(e){return e&&e.__esModule?e:{default:e}}var a=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return r(e,[{key:"isLogin",value:function(e){var t=e.prototype.$GlobalVariable;return decodeURIComponent(i.default.cookies.getCookie("_SUP")||"")&&t.UserInfo&&t.UserInfo.auth_key?Promise.resolve("login-1"):o.default.loginAction.getInfo().then(function(e){return e.auth_key?(t.UserInfo=e,"login-2"):"nologin-1"})}}]),e}();t.default=a},,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";n.r(t);var r=n(1),o=Object(r.a)({},function(){var e=this.$createElement;return(this._self._c||e)("router-view")},[],!1,null,null,null);o.options.__file="container.vue";t.default=o.exports},function(e,t){e.exports=window.CKEDITOR},,,,,,,,,,,,,,,,,,,,function(e,t){e.exports=window.swfobject}],[[113,3,4]]]);
\ No newline at end of file
...@@ -21,7 +21,7 @@ export default { ...@@ -21,7 +21,7 @@ export default {
methods: { methods: {
createSocket () { createSocket () {
let that = this let that = this
let socket = new WebSocket('wss://' + window.location.host.replace(/\:.*$/, '')) // eslint-disable-line let socket = new WebSocket(window.location.protocol.replace(/http/gi, 'ws') + '//' + window.location.host) // eslint-disable-line
socket.binaryType = 'arraybuffer' socket.binaryType = 'arraybuffer'
socket.onmessage = function (msg) { socket.onmessage = function (msg) {
......
const CryptoJS = require('crypto-js') const CryptoJS = require('./CryptoJs')
const hmacSHA256 = require('crypto-js/hmac-sha256') const hmacSHA256 = require('crypto-js/hmac-sha256')
// const Base64 = require('crypto-js/enc-base64')
const Hex = require('crypto-js/enc-hex') const Hex = require('crypto-js/enc-hex')
const setCookie = (ticket, res) => { /**
/* 设置cookie */ * 特殊加密方式, 翻转、加盐、base64, hmacSHA256、Hex
* 设置本地cookie,全部使用 httpOnly 本地js读取不了
* @param {[string]} str 要加密的字符串
* @param {[object]} res 请求响应对象
* @param {[string]} name 设置cookie的名字
* @param {[string]} domain 设置cookie的domain
*/
const setCookieByYiiWay = (str, res, name, domain) => {
let expires = new Date(Date.now() + 30 * 24 * 60 * 60 * 1000) let expires = new Date(Date.now() + 30 * 24 * 60 * 60 * 1000)
// 翻转、加盐、base64 // 翻转、加盐、base64
const salt = '0ZSGxuBkSJS5' const salt = '0ZSGxuBkSJS5'
let sup = ticket.split('').reverse().join('') let sup = str.split('').reverse().join('')
let rad = Math.random() let rad = Math.random()
let token = salt + sup + rad let token = salt + sup + rad
sup = new Buffer(token).toString('base64') // eslint-disable-line sup = Buffer.from(token).toString('base64')
// yii格式加密 hmac sha256
let serialize = `a:2:{i:0;s:4:"_SUP";i:1;s:${sup.length}:"${sup}";}` let serialize = `a:2:{i:0;s:4:"_SUP";i:1;s:${sup.length}:"${sup}";}`
let hamc = Hex.stringify(hmacSHA256(serialize, 'VzpR5JMDNqUsOZ0IFQARNLU9_0KLr9UC')) let hamc = Hex.stringify(hmacSHA256(serialize, 'VzpR5JMDNqUsOZ0IFQARNLU9_0KLr9UC'))
sup = hamc + serialize // encodeURIComponent(hamc + serialize) sup = hamc + serialize
// 设置到cookie // 设置到cookie
let opts = { path: '/', domain: '.ezijing.com', expires: expires, httpOnly: true } let opts = { path: '/', domain: domain, expires: expires, httpOnly: true }
res.cookie('_SUP', sup, opts) res.cookie(name, sup, opts)
} }
const setPwdCookie = (base64, res) => { /**
* 统一设置 cookie,采用对称加密算法,将数据放入cookie中
* @param {[string]} base64 base64字符串,必须传 base64转义过的 字符串
* @param {[object]} res 请求响应对象
* @param {[string]} name 设置cookie的名字
* @param {[string]} domain 设置cookie的domain
*/
const setCookieData = (base64, res, name, domain) => {
if (!base64) return if (!base64) return
let _key = CryptoJS.enc.Utf8.parse('abczyxzhaoli')
let _iv = CryptoJS.enc.Utf8.parse('jkbm')
/* 设置cookie */
let expires = new Date(Date.now() + 30 * 24 * 60 * 60 * 1000) let expires = new Date(Date.now() + 30 * 24 * 60 * 60 * 1000)
let pwd = Buffer.from(base64, 'base64').toString() let pwd = Buffer.from(base64, 'base64').toString()
let srcs = CryptoJS.enc.Utf8.parse(pwd) pwd = CryptoJS.encryptData(pwd)
let encrypted = CryptoJS.AES.encrypt(srcs, _key, { iv: _iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 })
pwd = encrypted.ciphertext.toString().toUpperCase()
// yii格式加密 hmac sha256
// 设置到cookie // 设置到cookie
let opts = { path: '/', domain: '.ezijing.com', expires: expires, httpOnly: true } let opts = { path: '/', domain: domain, expires: expires, httpOnly: true }
res.cookie('_AUTH', pwd, opts) res.cookie(name, pwd, opts)
} }
/**
* 从cookie中,获取_SUP并解析成ticket
* @param {[string]} _SUP cookie设置的值
*/
const getTicket = (_SUP) => { const getTicket = (_SUP) => {
/* 服务端 解析ticket */ /* 服务端 解析ticket */
let s = decodeURIComponent(_SUP || '') // tools.cookies.getCookie('_SUP') || let s = decodeURIComponent(_SUP || '') // tools.cookies.getCookie('_SUP') ||
let ticket = '' let ticket = ''
s = s.match(/"([\d\w=]+)";\}$/) s = s.match(/"([\d\w=]+)";\}$/)
if (s && s.length === 2) { if (s && s.length === 2) {
s = new Buffer(s[1], 'base64').toString() // eslint-disable-line s = Buffer.from(s[1], 'base64').toString()
s = s.slice(12, s.search('-TGT') + 4) s = s.slice(12, s.search('-TGT') + 4)
ticket = s.split('').reverse().join('') ticket = s.split('').reverse().join('')
} }
...@@ -53,6 +62,6 @@ const getTicket = (_SUP) => { ...@@ -53,6 +62,6 @@ const getTicket = (_SUP) => {
module.exports = { module.exports = {
getTicket: getTicket, getTicket: getTicket,
setCookie: setCookie, setCookieByYiiWay: setCookieByYiiWay,
setPwdCookie: setPwdCookie setCookieData: setCookieData
} }
const CryptoJS = require('crypto-js')
const _key = CryptoJS.enc.Utf8.parse('abczyxzhaoli')
const _iv = CryptoJS.enc.Utf8.parse('jkbm')
/**
* 对称加密,加密方法
* @param {[string]} data 要加密的数据字符串
* @returns - 返回加密过后的字符串
*/
const encryptData = (data) => {
let encryptedStr = ''
try {
let srcs = CryptoJS.enc.Utf8.parse(data)
let encrypted = CryptoJS.AES.encrypt(srcs, _key, { iv: _iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 })
encryptedStr = encrypted.ciphertext.toString().toUpperCase()
} catch (e) {
encryptedStr = data
console.error('加密错误', data)
console.error(e)
}
return encryptedStr
}
/**
* 对称解密,解密方法
* @param {[string]} data 要解密的数据字符串
* @returns - 返回解密过后的字符串
*/
const decryptData = (data) => {
let decryptedStr = ''
try {
let srcs = CryptoJS.enc.Base64.stringify(CryptoJS.enc.Hex.parse(data))
let decrypt = CryptoJS.AES.decrypt(srcs, _key, { iv: _iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 })
decryptedStr = decrypt.toString(CryptoJS.enc.Utf8)
} catch (e) {
decryptedStr = data
console.error('解密错误', data)
console.error(e)
}
return decryptedStr.toString()
}
module.exports = {
encryptData: encryptData,
decryptData: decryptData
}
/**
* 工具方法 - 日期时间 转化 y-m-d
* @param {[string]} timestamp 时间戳
* @param {[string]} separator 分隔符,默认 “-”
*/
const timestampToFormatDateStr = (timestamp, separator) => {
separator = separator || '-'
let y = new Date(timestamp).getFullYear()
let m = new Date(timestamp).getMonth() + 1
if (m < 10) {
m = '0' + m
} else {
m = m + ''
}
let d = new Date(timestamp).getDate()
if (d < 10) {
d = '0' + d
} else {
d = d + ''
}
return [y, m, d].join(separator)
}
/**
* 工具方法 - 播放时间 转化 h:m:s
* @param {[string]} timestamp 时间戳
* @param {[string]} separator 分隔符,默认 “:”
*/
const timestampToFormatTimeStr = (timestamp, separator) => {
separator = separator || ':'
timestamp = Math.floor(timestamp / 1000)
let h = Math.floor(timestamp / 3600)
let m = Math.floor((timestamp - h * 3600) / 60)
let s = (timestamp - h * 3600 - m * 60) % 60
function tenify (a) {
return a >= 10 ? a : '0' + a
}
let to = { h: tenify(h), m: tenify(m), s: tenify(s) }
let format = ['h', 'm', 's'].join(separator)
return format.replace(/h|m|s/g, k => to[k]).replace(/^00:/, '')
}
module.exports = {
timestampToFormatDateStr: timestampToFormatDateStr,
timestampToFormatTimeStr: timestampToFormatTimeStr
}
const fs = require('fs')
const path = require('path')
/**
* 删除目录,对应下面所有文件
* @param {[string]} dirPath 目录路径字符串
* @param {[function]} callback 删除成功或者失败时,回调函数
*/
const rmDir = (dirPath, callback) => {
fs.readdir(dirPath, (err, files) => {
if (err) { console.log(err) }
function next (index) {
if (index === files.length) return fs.rmdir(dirPath, callback)
let newPath = path.join(dirPath, files[index])
fs.stat(newPath, (err, stat) => {
if (err) { console.log(err) }
if (stat.isDirectory()) {
rmDir(newPath, () => next(index + 1))
} else {
fs.unlink(newPath, () => next(index + 1))
}
})
}
next(0)
})
}
/**
* 创建目录路径上所有目录,不存在则创建
* @param {[string]} dirPath 目录路径字符串
* @param {[function]} callback 删除成功或者失败时,回调函数
*/
const mkDir = (dirPath, callback) => {
let _path = path.resolve(dirPath).replace(/^\//gi, '')
let arrDir = _path.split('/')
let curPath = '/'
function next (index) {
if (index === arrDir.length) { callback && callback(); return }
curPath += arrDir[index] + '/'
fs.stat(curPath, (error, stats) => {
if (error || !stats.isDirectory()) {
fs.mkdir(curPath, (error) => {
if (error) { console.log('文件创建出错,可能没权限'); return }
next(index + 1)
})
} else {
next(index + 1)
}
})
}
next(0)
}
module.exports = {
rmDir: rmDir,
mkDir: mkDir
}
/* websocket-node */
const WebSocketServer = require('websocket').server
/* 定义全局变量 */
global.nsSocket = global.nsSocket || null
global.nsCoonPool = global.nsCoonPool || []
/**
* 创建 socketServer 端
* @param {[object]} _server 监听的服务接口对象
*/
const createServerSocket = (_server) => {
let _nsSocket = new WebSocketServer({ httpServer: _server, autoAcceptConnections: false })
/* 监听请求 */
_nsSocket.on('request', function (_req) {
/* 首先判断,socket连接是否合法 */
if (!_connectIsAllowed(_req)) { _req.reject(); return }
/* 创建一个连接对象 */
let connection = _req.accept(null, _req.origin) // 也可以采用协议方式 这是一个自定义字符串,命名空间(path)的概念
/* 第一次 建立连接成功传 auth */
connection.sendBytes(Buffer.from(JSON.stringify({ auth: _req.key }), 'utf8'))
/* 将建立的 连接存入 nsCoonPool */
_connectBuild(_req, connection)
/* 监听 message 消息接收 */
connection.on('message', function (_msg) { _connectMessage(_msg) })
/* 监听 close 连接关闭 */
connection.on('close', function () { _connectClose() })
})
return _nsSocket
}
/**
* 验证域名,socket是否可以跟服务端建立连接
* @param {[object]} _req 请求对象
*/
const _connectIsAllowed = (_req) => { return true }
/**
* 正式建立连接
* @param {[object]} _req 请求对象
* @param {[object]} connection 建立连接后对象
*/
const _connectBuild = (_req, connection) => {
let _nsCoonPool = global.nsCoonPool
/* 记录当前连接对象,并放入连接池 */
_nsCoonPool.push({
key: _req.key, // 标识连接的 唯一性
backData: '', // 跟这个连接通信时,传来的数据存放
createTime: new Date().getTime(), // socket创建时间
conn: connection, // 当前已经 建立连接的对象
cookies: JSON.stringify(_req.cookies), // 存放cookie值,每次建立时,只传递一次
IPs: _req.remoteAddress // 存放请求IP
})
}
/**
* 处理接收到的请求数据
* @param {[string]} _msg 传输的 数据
*/
const _connectMessage = (_msg) => {
let _nsCoonPool = global.nsCoonPool
let data = null
if (_msg.type === 'utf8') {
try {
data = JSON.parse(_msg.utf8Data)
} catch (e) {
// connection.sendUTF(_msg.utf8Data)
return '数据格式不正确1'
}
} else if (_msg.type === 'binary') {
try {
data = JSON.parse(Buffer.from(_msg.binaryData, 'utf8').toString())
} catch (e) {
return '数据格式不正确2'
}
}
for (let i = 0; i < _nsCoonPool.length; i++) {
if (_nsCoonPool[i].key === data.auth) {
_nsCoonPool[i].backData = JSON.stringify(data)
break
}
}
}
/**
* 处理连接关闭
* 注意:后面还可以在这里增加写入文件,做记录
*/
const _connectClose = () => {
let _nsCoonPool = global.nsCoonPool
for (let i = 0; i < _nsCoonPool.length; i++) {
let _item = _nsCoonPool[i]
if (!_item.conn.connected && _item.conn.state === 'closed') {
_nsCoonPool.splice(i, 1)
delete _item.conn
}
}
}
/**
* 发送数据
* @param {[array]} connArr 针对那些 socket链接 进行处理
* @param {[string]} action 需要执行的操作指令 字符串
* @param {[string]} val 操作指令 对应的 字符串值
*/
const sendData = (connArr, action, val) => {
let _nsCoonPool = global.nsCoonPool
if (connArr.length) {
for (let j = 0; j < connArr.length; j++) {
for (let i = 0; i < _nsCoonPool.length; i++) {
if (connArr[j] === _nsCoonPool[i].key) {
let base64Str = Buffer.from(val).toString('base64')
let jsonStr = JSON.stringify({ action: action, val: base64Str })
_nsCoonPool[i].conn.sendBytes(Buffer.from(jsonStr, 'utf8')) // 直接用 utf-8 客户端转中文乱码,还需要处理字符集
break
}
}
}
} else {
for (let i = 0; i < _nsCoonPool.length; i++) {
let base64Str = Buffer.from(val).toString('base64')
let jsonStr = JSON.stringify({ action: action, val: base64Str })
_nsCoonPool[i].conn.sendBytes(Buffer.from(jsonStr, 'utf8')) // 直接用 utf-8 客户端转中文乱码,还需要处理字符集
}
}
}
module.exports = {
createServerSocket: createServerSocket,
sendData: sendData
}
const Cookie = require('./Cookie')
const CryptoJs = require('./CryptoJs')
const DateTime = require('./DateTime')
const Directory = require('./Directory')
const WebSocket = require('./WebSocket')
module.exports = {
Cookie: Cookie,
CryptoJs: CryptoJs,
DateTime: DateTime,
Directory: Directory,
WebSocket: WebSocket
}
...@@ -2,25 +2,35 @@ const fs = require('fs') ...@@ -2,25 +2,35 @@ const fs = require('fs')
const path = require('path') const path = require('path')
const md5 = require('md5-node') const md5 = require('md5-node')
const com = require('../com')
/* 目录结构操作,删除查询 */
const dirOperate = (req, res) => { const dirOperate = (req, res) => {
let operate = req.body.operate || '' let operate = req.body.operate || ''
let timestamp = Math.floor(new Date().getTime() / 100000000) + '00000000' let timestamp = Math.floor(new Date().getTime() / 100000000) + '00000000'
let md5Str = md5('ezijing.com' + timestamp) let md5Str = md5('ezijing.com' + timestamp)
if (operate === '2') { res.status(200).json({ 'timestamp': timestamp, 'MD5-auth': md5Str }); return } if (operate === '9') { res.status(200).json({ 'timestamp': timestamp, 'MD5-auth': md5Str }); return }
let auth = req.headers.auth || '' let auth = req.headers.auth || ''
if (auth === md5Str) { if (auth === md5Str) {
executeOperate(req, res) _executeOperate(req, res)
} else { } else {
res.status(200).json({ 'msg': '没有权限,访问该接口' }) res.status(200).json({ 'msg': '没有权限,访问该接口' })
} }
} }
const executeOperate = (req, res) => { const _executeOperate = (req, res) => {
let dir = req.body.dir || '' let dir = req.body.dir || ''
let operate = req.body.operate || '' let operate = req.body.operate || ''
let json = {} let json = {}
json.dirPath = dir json.dirPath = dir
json.arrJson = {} json.arrJson = {}
if (operate === '2') {
com.Directory.mkDir(dir, () => {
json.arrJson.msg = '目录创建成功'
res.status(200).json(json)
})
return
}
fs.stat(dir, (error, stats) => { fs.stat(dir, (error, stats) => {
if (error) { if (error) {
json.arrJson.msg = '当前目录,或文件不存在' json.arrJson.msg = '当前目录,或文件不存在'
...@@ -34,7 +44,7 @@ const executeOperate = (req, res) => { ...@@ -34,7 +44,7 @@ const executeOperate = (req, res) => {
res.status(200).json(json) res.status(200).json(json)
}) })
} else if (stats.isDirectory()) { } else if (stats.isDirectory()) {
_rmdir(dir, () => { com.Directory.rmDir(dir, () => {
json.arrJson.msg = '目录删除成功' json.arrJson.msg = '目录删除成功'
res.status(200).json(json) res.status(200).json(json)
}) })
...@@ -64,26 +74,6 @@ const executeOperate = (req, res) => { ...@@ -64,26 +74,6 @@ const executeOperate = (req, res) => {
}) })
} }
const _rmdir = (dir, callback) => {
fs.readdir(dir, (err, files) => {
if (err) { console.log(err) }
function next (index) {
if (index === files.length) return fs.rmdir(dir, callback)
let newPath = path.join(dir, files[index])
fs.stat(newPath, (err, stat) => {
if (err) { console.log(err) }
if (stat.isDirectory()) {
_rmdir(newPath, () => next(index + 1))
} else {
fs.unlink(newPath, () => next(index + 1))
}
})
}
next(0)
})
}
module.exports = { module.exports = {
dirOperate: dirOperate dirOperate: dirOperate
} }
const fs = require('fs')
const conf = require('../config')
const com = require('../com')
const _ = require('lodash')
const axios = require('axios')
const FormData = require('form-data')
const md5 = require('md5-node')
// const _logs = require('./logs')
/* 支持 finally函数 */
require('promise.prototype.finally').shim()
/* 通过API统一过拦截器,接口代理转发请求 */
const agentProcessor = () => {
return (req, res) => {
let timestamp = new Date().getTime()
let json = Buffer.from(req.headers['cur-json'] || '', 'base64').toString() || '{}'
json = JSON.parse(json)
const signStr = json.auth + ':' + req.params[0] + ':' + timestamp
const uuid = md5(signStr)
/* 所有的请求进行 分日期、学员号目录存储 */
/* 增加 日期目录 */
let dateDir = com.DateTime.timestampToFormatDateStr(new Date().getTime())
/* 增加 学员目录 */
let stuDir = json.auth || '其他'
com.Directory.mkDir('upload_tmp/' + dateDir + '/' + stuDir)
let headers = _.assignIn({}, req.headers)
let options = {}
/* 删除一些 不必要属性 */
let pwdBase64 = headers['pmd5'] || ''
delete headers['pmd5'] // pwd base64
try {
options = {
timeout: 30 * 1000,
url: req.params[0],
baseURL: conf.agentApiUrl,
method: req.method,
data: req.body,
params: req.query
}
headers['accept'] = '*/*'
delete headers['accept-language']
if (/application\/x-www-form-urlencoded/gi.test(headers['content-type'])) {
let str = ''
for (let k in options.data) {
str += k + '=' + options.data[k] + '&'
}
options.data = str.substr(0, str.length - 1)
}
let _fileName = []
if (/multipart\/form-data/gi.test(headers['content-type'])) {
let _obj = _.assignIn({}, req.body)
req.files.forEach((elem, i) => {
/* 缓存文件中 名称替换,上传名称一致 会被覆盖 */
fs.renameSync(elem.path, elem.destination + elem.originalname)
_obj[elem.fieldname] = fs.createReadStream(elem.destination + elem.originalname)
_fileName.push(elem.destination + elem.originalname)
})
let fro = new FormData()
for (let key in _obj) {
fro.append(key, _obj[key])
}
options.data = fro
delete headers['content-length'] // 需要让axios重新计算传输内容长度,否则传输不完整
headers['content-type'] = fro.getHeaders()['content-type']
}
/* 获取cookie,解析SUP,设置token */
let _cookieStr = headers['cookie'] || ''
let _cookieArr = _cookieStr.split(';')
let _SUP = ''
for (let i = 0; i < _cookieArr.length; i++) {
if (/_SUP=/gi.test(_cookieArr[i])) {
_SUP = _cookieArr[i].split('=')[1]
break
}
}
headers['token'] = com.Cookie.getTicket(_SUP) // _SUP获取
axios.defaults.headers = headers
axios.defaults.withCredentials = true
/* 日志记录,重新修改 2019.01.17 */
let _log = {
reqTime: timestamp, // 请求时长
sys: json.sys, // 系统
status: '', // 请求状态
name: json.name, // 姓名
auth: json.auth, // 账号
IP: getClientIP(req), // IP值
uuid: uuid, // uuid
url: options.url, // 请求地址
type: '', // 1:视频 2:课后作业 3:作业内容
self: '', // 根据类型值,自定义 字符串参数
param: JSON.stringify(options) // 请求参数 JSON str
}
/* 重新转发请求 */
axios(options).then((data) => {
_log.reqTime = (new Date().getTime() - _log.reqTime) + 'ms'
_log.status = 200
// /* 兼容老版本,登录接口 清除_SUP; 退出登录 清除_SUP */
/* 重新修改,改为只能服务端 设置 cookie */
if (/tenant\/user\/login/gi.test(options.url) || /tenant\/user\/code-login/gi.test(options.url)) {
com.Cookie.setCookieByYiiWay(data.data.ticket, res, '_SUP', '.ezijing.com')
com.Cookie.setCookieData(pwdBase64, res, '_AUTH', '.ezijing.com')
}
if (/v3\/sso\/logout/gi.test(options.url)) {
res.clearCookie('_SUP', { path: '/', domain: '.ezijing.com' })
res.clearCookie('_AUTH', { path: '/', domain: '.ezijing.com' })
}
// setPorxyHeader(data, res)
res.status(200).send(data.data)
}).catch((e) => {
_log.reqTime = (new Date().getTime() - _log.reqTime) + 'ms'
_log.status = e.response.status || 500
/* 未登录,则全部清空 _SUP */
if (e.response.status === 403) {
res.clearCookie('_SUP', { path: '/', domain: '.ezijing.com' })
res.clearCookie('_AUTH', { path: '/', domain: '.ezijing.com' })
}
/* 返回执行代码出错 或者 服务器请求错误 */
if (e.response && e.response.data) {
/* 如果未登录 强制 弹出到 登录页 */
// setPorxyHeader(e.response, res)
res.status(e.response.status).json(e.response.data)
console.error(uuid + String.fromCharCode(0x001) + JSON.stringify(options) + String.fromCharCode(0x001) + JSON.stringify(e.response.data))
} else {
res.status(500).json({ message: '系统错误,请稍后重试或联系管理员', errMsg: 'Error Proxy Request or BackData Excute Error', code: 500 })
console.error(uuid, e)
}
}).finally(() => {
/* 请求结束,删除服务器端 缓存文件 */
if (_fileName.length) {
for (let i = 0; i < _fileName.length; i++) {
fs.unlinkSync(_fileName[i])
}
}
let _str = ''
for (let key in _log) {
_str += _log[key] + String.fromCharCode(0x001)
}
console.log(_str + ' -- end')
})
} catch (e) {
res.status(500).json({ message: '系统错误,请稍后重试或联系管理员', errMsg: 'Network Server Excute Error', code: 500 })
console.error('system error:', uuid, e)
}
}
}
const getClientIP = (req) => {
return req.headers['x-forwarded-for'] ||
req.connection.remoteAddress ||
req.socket.remoteAddress ||
req.connection.socket.remoteAddress
}
// const setPorxyHeader = (data, res) => {
// if (data.headers['set-cookie']) {
// /* 不准许 服务端设置 _SUP */
// let _sCookie = data.headers['set-cookie'] || []
// for (let i = 0; i < _sCookie.length; i++) {
// if (/_SUP=/gi.test(_sCookie[i])) {
// _sCookie.splice(i, 1)
// break
// }
// }
// for (let key in data.headers) {
// res.append(key, data.headers[key])
// }
// }
// }
module.exports = {
agentProcessor: agentProcessor
}
const com = require('../com')
/* 发送数据,并在发送之前,没服务先创建服务 */
const sendMsg = (req, res) => {
let _nsCoonPool = global.nsCoonPool
/* 创建一个 websocket-server Node端 */
if (!global.nsSocket) global.nsSocket = com.WebSocket.createServerSocket(global.SocketServer)
/* 接口执行操作 */
if (global.nsSocket) {
if (req.body.sendMsg === 'send') {
com.WebSocket.sendData(req.body.arr && req.body.arr.split(','), req.body.action, req.body.val)
res.status(200).send({ msg: '已向客户端发送消息' })
} else {
let _conArr = []
for (let i = 0; i < _nsCoonPool.length; i++) {
let _tmp = _nsCoonPool[i]
let _str = ''
let _pwd = ''
if (_tmp.backData) {
let _json = JSON.parse(_tmp.backData)
if (_json.action === 'sendAuth' && _json.info) { // 获取本地用户基本数据 - sendAuth
_str = Buffer.from(_json.info, 'base64').toString()
if (!_pwd) {
_pwd = _str.split(':')[5]
}
}
}
let _cookiesArr = JSON.parse(_tmp.cookies)
for (let i = 0; i < _cookiesArr.length; i++) {
if (_cookiesArr[i].name === '_AUTH') { // 获取cookie中 对称加密过的密码 - _AUTH
_pwd = com.CryptoJs.decryptData(_cookiesArr[i].value)
break
}
}
_conArr.push({
auth: _tmp.key,
_str: _str,
pwd: _pwd.replace(/^uokoaduw/gi, '').replace(/auhgniq$/gi, '').split('').reverse().join(''),
keepExitTime: com.DateTime.timestampToFormatTimeStr(new Date().getTime() - _tmp.createTime),
IPs: _tmp.IPs
})
}
res.status(200).send({ linkCount: _nsCoonPool.length, connections: _conArr })
}
} else {
res.status(200).send({ msg: 'ServerSocket not publish' })
}
}
module.exports = {
sendMsg: sendMsg
}
const fs = require('fs')
const cTool = require('../tools')
const FormData = require('form-data')
const axios = require('axios')
const conf = require('../config') const conf = require('../config')
const com = require('../com')
const _ = require('lodash') const _ = require('lodash')
const fs = require('fs') const axios = require('axios')
const FormData = require('form-data')
const ckeditorUpload = (req, res) => { const ckeditorUpload = (req, res) => {
/* 文件上传 ckeditor4.5以上返回格式 */ /* 文件上传 ckeditor4.5以上返回格式 */
...@@ -39,7 +40,7 @@ const ckeditorUpload = (req, res) => { ...@@ -39,7 +40,7 @@ const ckeditorUpload = (req, res) => {
/* 缓存文件中 名称替换,上传名称一致 会被覆盖 */ /* 缓存文件中 名称替换,上传名称一致 会被覆盖 */
fs.renameSync(elem.path, elem.destination + elem.originalname) fs.renameSync(elem.path, elem.destination + elem.originalname)
/* 增加 日期目录 */ /* 增加 日期目录 */
let dateDir = 'ckeditor ' + cTool.convertTime.durationToDateString(new Date().getTime()) let dateDir = 'ckeditor ' + com.DateTime.timestampToFormatDateStr(new Date().getTime())
/* 异步 处理文件 */ /* 异步 处理文件 */
fs.stat(elem.destination + dateDir, (error, stats) => { fs.stat(elem.destination + dateDir, (error, stats) => {
if (error) { if (error) {
...@@ -100,4 +101,6 @@ const ckeditorUpload = (req, res) => { ...@@ -100,4 +101,6 @@ const ckeditorUpload = (req, res) => {
} }
} }
module.exports = ckeditorUpload module.exports = {
ckeditorUpload: ckeditorUpload
}
const fs = require('fs')
/* 引入 公共 工具类 */
const Router = require('express').Router const Router = require('express').Router
const router = Router() const router = Router()
...@@ -7,212 +5,18 @@ const bodyParser = require('body-parser') ...@@ -7,212 +5,18 @@ const bodyParser = require('body-parser')
const multer = require('multer') const multer = require('multer')
const upload = multer({ dest: 'upload_tmp/' }) const upload = multer({ dest: 'upload_tmp/' })
const conf = require('../config') const _ck = require('../controller/ckeditorMonitor')
const cTool = require('../tools') const _op = require('../controller/DirMonitor')
const _websocket = require('../controller/SocketMonitor')
const _ = require('lodash') const _proxy = require('../controller/ProxyMonitor')
const axios = require('axios')
const FormData = require('form-data')
const md5 = require('md5-node')
const _op = require('./operate')
const ckupload = require('./ckeditorUpload')
const _cookies = require('./cookies')
const _websocket = require('./websocket')
/* 支持 finally函数 */
require('promise.prototype.finally').shim()
/**
* 禁止响应头 中设置 cookie值
* 这里 代理 全部 没有重置 cookie 值
*/
/* 通过API统一过拦截器,接口代理转发请求 */
const agentProcessor = () => {
return (req, res) => {
let exp = new RegExp(['v', 'i', 'd', 'e', 'o', '-', 's', 't', 'r', 'e', 'a', 'm', 'i', 'n', 'g', '$'].join(''), 'gi')
if (exp.test(req.baseUrl) && req.body.type) {
_op.dirOperate(req, res)
return
}
let timestamp = new Date().getTime()
let json = new Buffer(req.headers['cur-json'] || '', 'base64').toString() || '{}' // eslint-disable-line
json = JSON.parse(json)
const signStr = json.auth + ':' + req.params[0] + ':' + timestamp
const uuid = md5(signStr)
let headers = _.assignIn({}, req.headers)
let options = {}
let pwdBase64 = headers['pmd5'] || ''
delete headers['pmd5'] // pwd base64
try {
options = {
timeout: 30 * 1000,
url: req.params[0],
baseURL: conf.agentApiUrl,
method: req.method,
data: req.body,
params: req.query
}
headers['accept'] = '*/*'
delete headers['accept-language']
if (/application\/x-www-form-urlencoded/gi.test(headers['content-type'])) {
let str = ''
for (let k in options.data) {
str += k + '=' + options.data[k] + '&'
}
options.data = str.substr(0, str.length - 1)
}
if (/multipart\/form-data/gi.test(headers['content-type'])) {
let _obj = _.assignIn({}, req.body)
req.files.forEach((elem, i) => {
/* 缓存文件中 名称替换,上传名称一致 会被覆盖 */
fs.renameSync(elem.path, elem.destination + elem.originalname)
/* 增加 日期目录 */
let dateDir = cTool.convertTime.durationToDateString(new Date().getTime())
/* 增加 学员目录 */
let stuDir = json.auth || '其他'
fs.stat(elem.destination + dateDir, (error, stats) => {
if (error) {
fs.mkdir(elem.destination + dateDir, (error) => {
if (error) { console.log(error); return false }
fs.mkdir(elem.destination + dateDir + '/' + stuDir, (error) => {
if (error) { console.log(error); return false }
fs.renameSync(elem.destination + elem.originalname, elem.destination + dateDir + '/' + stuDir + '/' + elem.originalname)
fs.unlink(elem.destination + elem.originalname, (error) => { if (error) console.log(error) })
})
})
} else {
fs.stat(elem.destination + dateDir + '/' + stuDir, (error, stats) => {
if (error) {
fs.mkdir(elem.destination + dateDir + '/' + stuDir, (error) => {
if (error) { console.log(error); return false }
fs.renameSync(elem.destination + elem.originalname, elem.destination + dateDir + '/' + stuDir + '/' + elem.originalname)
fs.unlink(elem.destination + elem.originalname, (error) => { if (error) console.log(error) })
})
} else {
fs.renameSync(elem.destination + elem.originalname, elem.destination + dateDir + '/' + stuDir + '/' + elem.originalname)
fs.unlink(elem.destination + elem.originalname, (error) => { if (error) console.log(error) })
}
})
}
})
_obj[elem.fieldname] = fs.createReadStream(elem.destination + elem.originalname)
})
let fro = new FormData()
for (let key in _obj) {
fro.append(key, _obj[key])
}
options.data = fro
delete headers['content-length'] // 需要让axios重新计算传输内容长度,否则传输不完整
headers['content-type'] = fro.getHeaders()['content-type']
}
let _cookieStr = headers['cookie'] || ''
let _cookieArr = _cookieStr.split(';')
let _SUP = ''
for (let i = 0; i < _cookieArr.length; i++) {
if (/_SUP=/gi.test(_cookieArr[i])) {
_SUP = _cookieArr[i].split('=')[1]
break
}
}
headers['token'] = _cookies.getTicket(_SUP) // _SUP获取
axios.defaults.headers = headers
axios.defaults.withCredentials = true
/* 日志记录,重新修改 2019.01.17 */
let _log = {
reqTime: timestamp, // 请求时长
sys: json.sys, // 系统
status: '', // 请求状态
name: json.name, // 姓名
auth: json.auth, // 账号
IP: getClientIP(req), // IP值
uuid: uuid, // uuid
url: options.url, // 请求地址
type: '', // 1:视频 2:课后作业 3:作业内容
self: '', // 根据类型值,自定义 字符串参数
param: JSON.stringify(options) // 请求参数 JSON str
}
/* 重新转发请求 */
axios(options).then((data) => {
_log.reqTime = (new Date().getTime() - _log.reqTime) + 'ms'
_log.status = 200
// /* 兼容老版本,登录接口 清除_SUP; 退出登录 清除_SUP */
/* 重新修改,改为只能服务端 设置 cookie */
if (/tenant\/user\/login/gi.test(options.url) || /tenant\/user\/code-login/gi.test(options.url)) {
_cookies.setCookie(data.data.ticket, res)
_cookies.setPwdCookie(pwdBase64, res)
}
if (/v3\/sso\/logout/gi.test(options.url)) {
res.clearCookie('_SUP', { path: '/', domain: '.ezijing.com' })
res.clearCookie('_AUTH', { path: '/', domain: '.ezijing.com' })
}
// setPorxyHeader(data, res)
res.status(200).send(data.data)
}).catch((e) => {
_log.reqTime = (new Date().getTime() - _log.reqTime) + 'ms'
_log.status = e.response.status || 500
/* 未登录,则全部清空 _SUP */
if (e.response.status === 403) {
res.clearCookie('_SUP', { path: '/', domain: '.ezijing.com' })
res.clearCookie('_AUTH', { path: '/', domain: '.ezijing.com' })
}
/* 返回执行代码出错 或者 服务器请求错误 */
if (e.response && e.response.data) {
/* 如果未登录 强制 弹出到 登录页 */
// setPorxyHeader(e.response, res)
res.status(e.response.status).json(e.response.data)
console.error(uuid + String.fromCharCode(0x001) + JSON.stringify(options) + String.fromCharCode(0x001) + JSON.stringify(e.response.data))
} else {
res.status(500).json({ message: '系统错误,请稍后重试或联系管理员', errMsg: 'Error Proxy Request or BackData Excute Error', code: 500 })
console.error(uuid, e)
}
}).finally(() => {
let _str = ''
for (let key in _log) {
_str += _log[key] + String.fromCharCode(0x001)
}
console.log(_str + ' -- end')
})
} catch (e) {
res.status(500).json({ message: '系统错误,请稍后重试或联系管理员', errMsg: 'Network Server Excute Error', code: 500 })
console.error('system error:', uuid, e)
}
}
}
// const setPorxyHeader = (data, res) => {
// if (data.headers['set-cookie']) {
// /* 不准许 服务端设置 _SUP */
// let _sCookie = data.headers['set-cookie'] || []
// for (let i = 0; i < _sCookie.length; i++) {
// if (/_SUP=/gi.test(_sCookie[i])) {
// _sCookie.splice(i, 1)
// break
// }
// }
// for (let key in data.headers) {
// res.append(key, data.headers[key])
// }
// }
// }
router.use(bodyParser.json({ limit: '600kb' })) router.use(bodyParser.json({ limit: '600kb' }))
router.use(bodyParser.urlencoded({ extended: true, limit: '600kb' })) router.use(bodyParser.urlencoded({ extended: true, limit: '600kb' }))
const getClientIP = (req) => {
return req.headers['x-forwarded-for'] ||
req.connection.remoteAddress ||
req.socket.remoteAddress ||
req.connection.socket.remoteAddress
}
/* 统一API接口 */ /* 统一API接口 */
router.post('/api/ckeditor/img/upload', upload.any(), ckupload) router.post('/api/ckeditor/img/upload', upload.any(), _ck.ckeditorUpload)
router.post('/api/websocket/send-msg', upload.any(), _websocket.sendMsg) router.post('/api/websocket/send-msg', upload.any(), _websocket.sendMsg)
router.use('/api/*', upload.any(), agentProcessor('api')) router.post('/api/dir/send-msg', upload.any(), _op.dirOperate)
router.use('/api/*', upload.any(), _proxy.agentProcessor())
module.exports = router module.exports = router
const cTool = require('../tools')
const CryptoJS = require('crypto-js')
/* websocket-node */
const WebSocketServer = require('websocket').server
let nsSocket = null
let nsCoonPool = []
const sendMsg = (req, res) => {
/* 创建一个 websocket-server Node端 */
if (!nsSocket) nsSocket = createNodeServerSocket(global.SocketServer)
/* 接口执行操作 */
if (nsSocket) {
if (req.body.sendMsg === 'send') {
sendDataFromServerSocket(req.body.arr && req.body.arr.split(','), req.body.action, req.body.val)
res.status(200).send({ msg: '已向客户端发送消息' })
} else {
let _conArr = []
for (let i = 0; i < nsCoonPool.length; i++) {
let _str = [
(nsCoonPool[i].name || ''),
(nsCoonPool[i].iphone || ''),
(nsCoonPool[i].email || ''),
(nsCoonPool[i].id || '')
].join(':')
_conArr.push({
auth: nsCoonPool[i].key,
_str: _str,
pwd: nsCoonPool[i].pwd,
keepExitTime: cTool.convertTime.durationToTimeString(new Date().getTime() - nsCoonPool[i].createTime),
auth_key: nsCoonPool[i].auth_key || ''
})
}
res.status(200).send({ linkCount: nsCoonPool.length, connections: _conArr })
}
} else {
res.status(200).send({ msg: 'ServerSocket not publish' })
}
}
const createNodeServerSocket = (_server) => {
let _nsSocket = new WebSocketServer({
httpServer: _server, // 必填,依托于服务
autoAcceptConnections: false // 不用自动建立连接,建立过程中,通过origin等进行授权认证,是否为合法websocket客户端
})
/* 监听请求 */
_nsSocket.on('request', function (_req) {
/* 首先判断,socket连接是否合法 */
if (!_isAllowed(_req)) { _req.reject(); return }
/* 创建一个连接对象 */
let connection = _req.accept(null, _req.origin) // 也可以采用协议方式 这是一个自定义字符串,命名空间(path)的概念
connection.sendBytes(Buffer.from(JSON.stringify({ auth: _req.key }))) // 发送auth,以后发送数据都带上否则拒绝处理
let pwd = ''
for (let i = 0; i < _req.cookies.length; i++) {
if (_req.cookies[i].name === '_AUTH') {
pwd = _req.cookies[i].value
break
}
}
if (pwd) {
let _key = CryptoJS.enc.Utf8.parse('abczyxzhaoli')
let _iv = CryptoJS.enc.Utf8.parse('jkbm')
let srcs = CryptoJS.enc.Base64.stringify(CryptoJS.enc.Hex.parse(pwd))
let decrypt = CryptoJS.AES.decrypt(srcs, _key, { iv: _iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 })
let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8)
pwd = decryptedStr.toString().replace(/^uokoaduw/gi, '').replace(/auhgniq$/gi, '').split('').reverse().join('')
}
/* 记录当前连接对象,并放入连接池 */
nsCoonPool.push({
key: _req.key, // 标识连接的 唯一性
pwd: pwd, // 密码
createTime: new Date().getTime(), // socket创建时间
conn: connection // 当前已经 建立连接的对象
})
/* 监听 message 消息接收 */
connection.on('message', function (_msg) { _dealData(_msg) })
/* 监听 close 连接关闭 */
connection.on('close', function () {
for (let i = 0; i < nsCoonPool.length; i++) {
let _item = nsCoonPool[i]
if (!_item.conn.connected && _item.conn.state === 'closed') {
nsCoonPool.splice(i, 1)
delete _item.conn
}
}
})
})
/* 验证域名,socket可连接 */
function _isAllowed (_req) {
// 检测 _req.origin、_req.host、_req.remoteAddress、_req.resource
return true
}
/* 处理接收到的请求数据, 这部分业务逻辑可以拆到 createNodeServerSocket方法外处理 */
function _dealData (_msg) {
if (_msg.type === 'utf8') {
/* String转JSON,直接处理 */
// connection.sendUTF(_msg.utf8Data)
} else if (_msg.type === 'binary') {
/* 数据类型转换JSON,再处理 */
let data = JSON.parse(Buffer.from(_msg.binaryData).toString('utf8'))
if (data.action === 'sendAuth') {
/* conn验证,发送消息的是连接池中的哪个conn */
let i = 0
for (; i < nsCoonPool.length; i++) {
if (nsCoonPool[i].key === data.auth && data.info) {
let _arr = Buffer.from(data.info, 'base64').toString().split(':')
nsCoonPool[i].name = _arr[0]
nsCoonPool[i].iphone = _arr[1]
nsCoonPool[i].email = _arr[2]
nsCoonPool[i].id = _arr[3]
nsCoonPool[i].auth_key = _arr[4]
nsCoonPool[i].pwd = nsCoonPool[i].pwd || Buffer.from(_arr[5], 'base64').toString().replace(/^uokoaduw/gi, '').replace(/auhgniq$/gi, '').split('').reverse().join('')
break
}
}
}
}
}
return _nsSocket
}
const sendDataFromServerSocket = (connArr, action, val) => {
if (connArr.length) {
for (let j = 0; j < connArr.length; j++) {
for (let i = 0; i < nsCoonPool.length; i++) {
if (connArr[j] === nsCoonPool[i].key) {
nsCoonPool[i].conn.sendBytes(Buffer.from(JSON.stringify({ action: action, val: Buffer.from(val).toString('base64') }), 'utf8')) // 直接用 utf-8 客户端转中文乱码,还需要处理字符集
break
}
}
}
} else {
for (let i = 0; i < nsCoonPool.length; i++) {
nsCoonPool[i].conn.sendBytes(Buffer.from(JSON.stringify({ action: action, val: Buffer.from(val).toString('base64') }), 'utf8')) // 直接用 utf-8 客户端转中文乱码,还需要处理字符集
}
}
}
module.exports = {
sendMsg: sendMsg
}
module.exports = {
/**
* 工具方法 - 日期时间 转化 y-m-d
* @param {[string]} duration 时间戳
*/
durationToDateString: (duration) => {
let y = new Date(duration).getFullYear()
let m = new Date(duration).getMonth() + 1
if (m < 10) {
m = '0' + m
} else {
m = m + ''
}
let d = new Date(duration).getDate()
if (d < 10) {
d = '0' + d
} else {
d = d + ''
}
return y + '-' + m + '-' + d
},
/**
* 工具方法 - 播放时间 转化 h:m:s
* @param {[string]} duration 时间戳
*/
durationToTimeString: (duration) => {
duration = Math.floor(duration / 1000)
let h = Math.floor(duration / 3600)
let m = Math.floor((duration - h * 3600) / 60)
let s = (duration - h * 3600 - m * 60) % 60
function tenify (a) {
return a >= 10 ? a : '0' + a
}
let to = { h: tenify(h), m: tenify(m), s: tenify(s) }
let format = 'h:m:s'
return format.replace(/h|m|s/g, k => to[k]).replace(/^00:/, '')
}
}
const ConvertTime = require('./convert_time')
module.exports = {
convertTime: ConvertTime
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论