{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/icons/svg/setting.svg","webpack:///./src/components/page-footer.vue?05ed","webpack:///./src/icons/svg/imagefile.svg","webpack:///./src/icons/svg/attention.svg","webpack:///./src/icons/svg/recorder.svg","webpack:///./src/icons/svg/audiofile.svg","webpack:///./src/views/commentBtn.vue?a07c","webpack:///./src/img/logo/white/sok_index_cn.png","webpack:///./src/img/logo/white/audio.png","webpack:///./src/img/logo/white/image.png","webpack:///./src/icons/svg sync nonrecursive \\.svg$","webpack:///./src/views/login.vue?1e47","webpack:///./src/App.vue?3be2","webpack:///./src/App.vue","webpack:///./src/App.vue?38ee","webpack:///./src/App.vue?cc58","webpack:///./src/utils/jsFn.js","webpack:///./src/utils/profile.js","webpack:///./src/api/http.js","webpack:///./src/lang/en.js","webpack:///./src/lang/tw.js","webpack:///./src/lang/cn.js","webpack:///./src/lang/index.js","webpack:///./src/api/coreApi.js","webpack:///./src/api/channeleApi.js","webpack:///./src/api/sokplatform.js","webpack:///./src/api/index.js","webpack:///./src/store/index.js","webpack:///./src/views/login.vue?0637","webpack:///./src/components/page-footer.vue?0bab","webpack:///./src/components/page-footer.vue","webpack:///./src/components/page-footer.vue?f5d3","webpack:///./src/components/page-footer.vue?dcff","webpack:///./src/components/tool/securityCode.vue?d725","webpack:///./src/components/tool/securityCode.vue","webpack:///./src/components/tool/securityCode.vue?3c99","webpack:///./src/components/tool/securityCode.vue?4eab","webpack:///./src/views/login.vue","webpack:///./src/views/login.vue?503d","webpack:///./src/views/login.vue?2766","webpack:///./src/views/crtPointBtn.vue?10e8","webpack:///./src/views/crtPointBtn.vue","webpack:///./src/views/crtPointBtn.vue?0731","webpack:///./src/views/crtPointBtn.vue?93aa","webpack:///./src/views/commentBtn.vue?cd7e","webpack:///./src/views/commentBtn.vue","webpack:///./src/views/commentBtn.vue?76ad","webpack:///./src/views/commentBtn.vue?0054","webpack:///./src/views/chgWebview.vue?f001","webpack:///./src/views/chgWebview.vue","webpack:///./src/views/chgWebview.vue?3004","webpack:///./src/views/chgWebview.vue?22bc","webpack:///./src/router/routes.js","webpack:///./src/router/index.js","webpack:///./src/components/icon/svgIcon.vue?f0fb","webpack:///./src/components/icon/svgIcon.vue","webpack:///./src/components/icon/svgIcon.vue?f735","webpack:///./src/components/icon/svgIcon.vue?349b","webpack:///./src/icons/index.js","webpack:///./src/quasar.js","webpack:///./src/main.js","webpack:///./src/icons/svg/exit.svg","webpack:///./src/img/svg/uparrow.svg","webpack:///./src/views/login.vue?2832","webpack:///./src/icons/svg/tmdring.svg","webpack:///./src/icons/svg/sending.svg","webpack:///./src/img/logo/white/video.png","webpack:///./src/img/logo/white/sok_index_en.png","webpack:///./src/icons/svg/camera.svg","webpack:///./src/icons/svg/video.svg","webpack:///./src/img/svg/white/recstop.svg","webpack:///./src/icons/svg/reset.svg","webpack:///./src/components/tool/securityCode.vue?f101","webpack:///./src/img/svg/white/recording.svg","webpack:///./src/icons/svg/edit.svg","webpack:///./src/icons/svg/certification.svg","webpack:///./src/icons/svg/history.svg","webpack:///./src/views/crtPointBtn.vue?d254","webpack:///./src/icons/svg/add.svg","webpack:///./src/views/crtPointBtn.vue?1517","webpack:///./src/icons/svg/trash.svg","webpack:///./src/img/logo/white/sok_index_tw.png","webpack:///./src/components/icon/svgIcon.vue?cabf","webpack:///./src/icons/svg/preview.svg","webpack:///./src/img/svg/white/accessory.svg","webpack:///./src/icons/svg/check.svg","webpack:///./src/views/commentBtn.vue?7401","webpack:///./src/icons/svg/videofile.svg"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","symbol","add","map","webpackContext","req","id","webpackContextResolve","e","Error","code","keys","resolve","_vm","this","_h","$createElement","_c","_self","staticStyle","attrs","isWebView","staticRenderFns","created","ua","navigator","userAgent","toLowerCase","indexOf","component","IsEmpty","val","undefined","yyyymmdd","str","date","Date","mm","getMonth","dd","getDate","getFullYear","join","isCN","hostname","location","substr","getUUID","now","performance","replace","Math","random","floor","toString","jwtDecode","jwt","convertHHMMSS","parseInt","toLocaleTimeString","hour","minute","second","converDrawerTime","timestamp","temp","monthArr","mounth","getLang","lang","localStorage","getItem","language","browserLanguage","convertToMp3","channelData","Promise","mp3enc","lamejs","Mp3Encoder","buffer","leftData","left","Int16Array","byteLength","rightData","right","remaining","maxSamples","subarray","mp3buf","encodeBuffer","enc","flush","Blob","type","getDateDiffByTimestamp","strTime","endTime","mss","hours","minutes","seconds","jsFn","apiUrl","global","cn","globalrc","cnrc","sokplatform","sokplatformcn","sokplatformrc","sokplatformcnrc","clientID","tmdUrl","serverLocation","refreshing","checkToken","nowTime","cT","parse","eT","oT","btw","refreshToken","axios","post","profile","grant_type","client_id","access_token","then","res","setItem","expires_in","err","console","log","corePost","url","reject","flag","headers","response","channelPost","channelInfo","channelLink","JSON","decodeURIComponent","user_id","channel","config","catch","defaults","timeout","baseURL","interceptors","request","use","error","status","basicInfo","loginClass","changeClass","sendPoint","loginTeamModel","teamModelID","groupNum","pinCode","socrates","err01","err02","err03","err04","err05","err06","err07","err08","err09","err10","logOut","ok","cancel","expertTitle","teacherTitle","selectCharacter","selectYourCharacter","groupQRCode","PIN","selectModel","saySomething","uploadIMG","selectONE","sendSucces","selectExpert_1","selectExpert_2","modelRoot_1","modelRoot_2","modelRoot_3","ENTER","TOPIC","history","historyEditTitle1","historyEditTitle2","historyEditCont","copySuccess","directions","comment","endClass","copy","guest","login","guestLogin","or","leaveComment","iknow","modeltext1","modeltext2","teacher","joinPeoples","logintext_1","modelRoot_4","classTeacher","LabelManagement","ClassroomSetting","save","crtPoint_1","crtPoint_2","crtPoint_3","crtPoint_4","crtPoint_5","crtPoint_6","crtPoint_7","crtPoint_8","crtPoint_9","crtPoint_11","crtPoint_12","basicLabel","channelLabel","myLabel","copyText","clickBtn","mode_ready","mode_quiz_single","mode_quiz_multiple","mode_quiz_judge","mode_quiz_complete","mode_quiz_subjective","mode_quiz_compose","mode_buzzin","mode_competition_single","mode_competition_multiple","mode_competition_judge","mode_competition_complete","mode_competition_subjective","mode_selfpace_start","mode_selfpace_end","mode_attend","mode_collate","mode_close","myCatagory","changeTable","warning","warn_text1","warn_text2","warn_text3","warn_text4","warn_text5","setting","chgLang","editCustomTags","delete","updsuccess","delsuccess","settingRemark","weitStarClass","version","webviewmsg1","webviewmsg2","ios","android","webviewmsg3","notSokMode","devTimeDialog","advertiseInfo1","Vue","VueI18n","i18n","locale","messages","tw","en","loginTMD","redirectUri","response_type","nonce","setTimeout","state","redirect_uri","origin","href","codeLogin","getUserInfo","nonceStr","id_token","initUserTags","product","tags","typeId","typeName","customize","tagList","updUserTags","joinChannel","imData","client_name","pin","getServiceUnixTimeMilliseconds","sendChannelInfo","user","payload","action","clientType","sender","deviceId","waitReturn","target","arguments","connectionId","to","groupname","text","stringify","sendSKBinding","memberID","api_Version","deviceID","memberName","getUserComments","leave","accept","userinfo","isGuest","expertType","params","pin_code","Authorization","hostBlobUrl","blobSAS_read","sas","blobSAS_write","bindingNum","binding_number","getInfo","getTags","getAccessToken","coreApi","channeleApi","signalR","require","Vuex","PAGE_LANG","LOGOUT","SETUSERINFO","SETUSERTAGS","SETHISTORYS","SETCHANNELLINK","SETCHANNELINFO","SETCOMMENTBTNSETTING","SETCOMMENTSDATA","loginFlag","userInfo","userTags","tmdTags","schoolTags","Expert","Teacher","historys","isStrClass","className","pageID","isSokActivity","duration","deltaTime","blobConfig","isDevTimeAbnormal","commentBtnSetting","pointsByTypeId","table","detailType","detail","signalPayload","isSignalLink","baseFileUrl","signalConnection","commentsData","userId","getters","historysReverse","sort","a","b","obsStart","forEach","array","points","item","topic","classTName","pointer","point","langFormat","conet","desc","tagName","teachTypeNum","content","exercise","mutations","sessionStorage","encodeURIComponent","info","userTagsData","urlParams","URLSearchParams","search","myParam","logoutUrl","document","clear","actions","setPageLang","commit","setUserInfo","sessionUserInfo","localUserInfo","setChannelLink","setChannelInfo","setUserTags","setHistorys","context","obj","taday","getTime","datatemp","difference","abs","setCommentsData","api","dispatch","channel_rest_api","leaveChannel","reset","stop","removeItem","setCommentBtnSetting","joinSokPlatform","resFlag","getPlatformInfo","getSkMarkTemplate","tableType","types","initSignal","options","accessTokenFactory","HubConnectionBuilder","withUrl","channel_url","withAutomaticReconnect","nextRetryDelayInMilliseconds","retryContext","elapsedMilliseconds","configureLogging","LogLevel","Information","build","on","message","targetmsg","Text","nTime","heartbeatTime","diffMin","rand","toFixed","announce","hostName","pincode","hostSoftwareVersion","classState","classStartTime","bindingData","errorCode","skMarkTemplate","activityRecordNumber","blobSAS_Read","blobSAS_Write","blobSAS","Message","closable","router","path","ConnectionId","UserId","onclose","start","Store","staticClass","class","loging","_v","_s","$t","logoImgList","_e","ref","loginForm","loginRule","nativeOn","$event","preventDefault","model","callback","$$v","$set","expression","isCanEnterClass","submitClass","signout","loginTeamModelID","guestForm","guestRule","pageLang","langChange","$i18n","methods","mapActions","_l","index","placeholder","directives","rawName","number","domProps","handleInput","composing","props","Number","default","String","focus","Boolean","computed","numberAry","hideKeyboard","activeElement","blur","$refs","input","handleSubmit","$emit","init","mounted","components","PageFooter","securityCode","validateChannel","rule","trim","test","validatePinCode","validator","trigger","required","mapGetters","domain","$tools","$route","query","Base64","decode","gn","$store","validate","valid","$Spin","show","$router","$Message","finally","hide","sub","backPage","commentsTime","setTypeForm","tag","setTagForm","description","cancelTypeForm","categoryModel","slot","typeForm","operating","saveTypeName","delCatagory","tagModel","tagForm","saveLabel","quit","delTag","remark","orgName","getDateDiff","setInterval","_this","$Modal","confirm","title","okText","cancelText","onOk","crtTime","go","drawerflag","settingFlag","showSetting","expertPoint","inputFocus","inputFocusFlag","uploadFile","recordFlag","chageFile","fileType","previewFile","preview","cancelFile","minRows","maxRows","disabled","restNowTimestamp","qrcode_url","setLang","_f","chgGroup","showInfo1","info1Link","$te","teachType","chgTableFlag","setPointBtn","strClassElapsedMin","nowTimestamp","star","starRec","style","width","closeRecord","isRecing","recStarTime","recStar","restDrawer","select","drawerPaneId","selDrawerPane","converTime","pkey","fileUrl","setEditHistoryForm","setDetail","checkPoint","toCustomTags","previewModal","historyEditFlag","editHistoryForm","editHistorys","isPlay","recTemp","recorder","maxSec","recEndTime","paneId","langSet","groupPeoples","contentTypes","corvering","hIndex","pIndex","minutesTemp","publicTimer","publicState","isObsStartSame","sortCommentBtnSettingDetail","order","watch","old","filters","uppercase","toUpperCase","strClasstime","classPassedTime","uploadToBlob","file","fileName","blobAuth","saveAddres","blobServiceClient","BlobServiceClient","containerClient","getContainerClient","blockBlobClient","getBlockBlobClient","uploadBrowserData","blobHTTPHeaders","blobContentType","sendData","expPointType","expPointTypeName","expPointTypeId","time","imageList","videoList","recList","_fileUrl","imgData","successCount","createImage","orgFile","dataURLtoFile","orgFileName","ImgSrc","preFile","preFileName","ImgPre","blob","lastModifiedDate","isExistIndex","unshift","clearInterval","crtQRCode","generateQR","QRCode","toDataURL","margin","files","URL","createObjectURL","size","parseFloat","revokeObjectURL","Recorder","getPermission","sampleBits","sampleRate","numChannels","onprogress","nowSec","tmp","round","onplayend","getChannelData","saveRec","play","destroy","moreMsg","parentElement","classList","contains","remove","createCanvas","canvas","getElementById","canvasTag","createElement","setAttribute","body","appendChild","isPre","reader","FileReader","img","Image","getContext","onload","EXIF","getData","getAllTags","originWidth","originHeight","height","maxWidth","maxHeight","targetWidth","targetHeight","drawImage","dataURL","clearRect","src","readAsDataURL","dataurl","filename","arr","split","mime","match","bstr","atob","u8arr","Uint8Array","charCodeAt","File","setTable","filter","isLeaveClass","leaveFlag","diffTime","clipboard","ClipboardJS","encode","_m","webviewStr","routes","Login","isWebview","ChgWebview","display","meta","requiresAuth","CommentBtn","CrtPointBtn","redirect","VueRouter","originalPush","beforeEach","from","next","sokrateslang","store","matched","some","record","onClick","svgClass","iconName","SvgIcon","requireAll","requireContext","Quasar","plugins","iconSet","productionTip","iView","VueHead","$http","$api","sync","render","h","App","$mount"],"mappings":"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","file":"js/app.90578fc4.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([1,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"setting\",\n \"use\": \"setting-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./page-footer.vue?vue&type=style&index=0&lang=less&\"","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"imagefile\",\n \"use\": \"imagefile-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"attention\",\n \"use\": \"attention-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"recorder\",\n \"use\": \"recorder-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"audiofile\",\n \"use\": \"audiofile-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./commentBtn.vue?vue&type=style&index=0&lang=less&\"","module.exports = __webpack_public_path__ + \"img/sok_index_cn.23c9652f.png\";","module.exports = __webpack_public_path__ + \"img/audio.a8bc81be.png\";","module.exports = __webpack_public_path__ + \"img/image.9c4a1137.png\";","var map = {\n\t\"./add.svg\": \"c2a3\",\n\t\"./attention.svg\": \"2bde\",\n\t\"./audiofile.svg\": \"35ea\",\n\t\"./camera.svg\": \"8ce0\",\n\t\"./certification.svg\": \"b62e\",\n\t\"./check.svg\": \"f75a\",\n\t\"./edit.svg\": \"aa46\",\n\t\"./exit.svg\": \"5dbb\",\n\t\"./history.svg\": \"c023\",\n\t\"./imagefile.svg\": \"2635\",\n\t\"./preview.svg\": \"e6c2\",\n\t\"./recorder.svg\": \"34c7\",\n\t\"./reset.svg\": \"9b4b\",\n\t\"./sending.svg\": \"7a96\",\n\t\"./setting.svg\": \"05ff\",\n\t\"./tmdring.svg\": \"74fa\",\n\t\"./trash.svg\": \"ce30\",\n\t\"./video.svg\": \"8f2b\",\n\t\"./videofile.svg\": \"fa3a\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"51ff\";","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./login.vue?vue&type=style&index=0&lang=less&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"height\":\"100%\"},attrs:{\"id\":\"app\"}},[_c('transition',{attrs:{\"name\":\"page\",\"mode\":\"out-in\"}},[(!_vm.isWebView)?_c('router-view'):_c('router-view',{attrs:{\"name\":\"isWebview\"}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","//\n//\n//\n//\n//\n//\n//\n//\n//\n\r\nexport default {\r\n data() {\r\n return {\r\n isWebView: false\r\n }\r\n },\r\n created() {\r\n const ua = navigator.userAgent.toLowerCase()\r\n // 如果在微信請使用者跳出瀏覽器\r\n if(ua.indexOf('micromessenger') !== -1 || ua.indexOf('alipayclient') !== -1) {\r\n this.isWebView = true\r\n }\r\n }\r\n}\r\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../node_modules/cache-loader/dist/cjs.js??ref--0-1!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../node_modules/cache-loader/dist/cjs.js??ref--0-1!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=e6501070&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import jwt from 'jwt-decode'\r\nimport lamejs from 'lamejs'\r\n\r\n// 是否為空值\r\nfunction IsEmpty(val) {\r\n if (val === '' || val === undefined || val === null || val === false || val === '' || val === 'null') {\r\n return true\r\n } else {\r\n return false\r\n }\r\n}\r\nfunction yyyymmdd(str) {\r\n if(this.IsEmpty(str)) str = ''\r\n let date = new Date()\r\n var mm = date.getMonth() + 1 // getMonth() is zero-based\r\n var dd = date.getDate()\r\n\r\n return [date.getFullYear(),\r\n (mm > 9 ? '' : '0') + mm,\r\n (dd > 9 ? '' : '0') + dd\r\n ].join(str)\r\n}\r\n// 檢查是否為大陸站\r\nfunction isCN() {\r\n let hostname = window.location.hostname\r\n return hostname.substr(hostname.length - 3) === '.cn'\r\n}\r\n// 取得UUID\r\nfunction getUUID() {\r\n var d = Date.now()\r\n if (typeof performance !== 'undefined' && typeof performance.now === 'function') {\r\n d += performance.now()\r\n }\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\r\n var r = (d + Math.random() * 16) % 16 | 0\r\n d = Math.floor(d / 16)\r\n return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16)\r\n })\r\n}\r\n// JWT 解碼\r\nfunction jwtDecode(val) {\r\n return jwt(val)\r\n}\r\n\r\n// HHMMSS\r\nfunction convertHHMMSS(val) {\r\n return val ? new Date(parseInt(val)).toLocaleTimeString('it-IT', {hour: '2-digit', minute: '2-digit', second: '2-digit'}) : ''\r\n}\r\n\r\n// 抽屜的標題時間格式\r\nfunction converDrawerTime(timestamp) {\r\n let temp = parseInt(timestamp)\r\n let data = new Date(temp)\r\n let monthArr = ['JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC']\r\n let mounth = monthArr[data.getMonth()]\r\n return data.getFullYear() + ' ' + mounth + '.' + data.getDate() + ' - ' + data.toLocaleTimeString('it-IT', {hour: '2-digit', minute: '2-digit', second: '2-digit'})\r\n}\r\n\r\n// 取得現在的語系\r\nfunction getLang() {\r\n // 預設抓取瀏覽器的語系\r\n let lang = !IsEmpty(localStorage.getItem('lang')) ? localStorage.getItem('lang').toLowerCase() : (navigator.language || navigator.browserLanguage).toLowerCase()\r\n // 預設為英文版\r\n if (lang === 'zh-tw' && lang === 'zh-cn') { lang = 'en-us' }\r\n return lang\r\n}\r\n\r\n// pcm(wav) to mp3\r\nfunction convertToMp3(channelData) {\r\n return new Promise((resolve) => {\r\n // 获取wav头信息\r\n // const wav = lamejs.WavHeader.readHeader(wavDataView); // 此处其实可以不用去读wav头信息,毕竟有对应的config配置\r\n // const { channels, sampleRate } = wav;\r\n const mp3enc = new lamejs.Mp3Encoder(1, 48000, 128)\r\n // 获取左右通道数据\r\n const result = channelData\r\n const buffer = []\r\n\r\n const leftData = result.left && new Int16Array(result.left.buffer, 0, result.left.byteLength / 2)\r\n const rightData = result.right && new Int16Array(result.right.buffer, 0, result.right.byteLength / 2)\r\n const remaining = leftData.length + (rightData ? rightData.length : 0)\r\n\r\n const maxSamples = 1152\r\n for (let i = 0; i < remaining; i += maxSamples) {\r\n const left = leftData.subarray(i, i + maxSamples)\r\n let mp3buf = null\r\n\r\n mp3buf = mp3enc.encodeBuffer(left)\r\n\r\n if (mp3buf.length > 0) {\r\n buffer.push(mp3buf)\r\n }\r\n }\r\n\r\n const enc = mp3enc.flush()\r\n\r\n if (enc.length > 0) {\r\n buffer.push(enc)\r\n }\r\n\r\n resolve(new Blob(buffer, { type: 'audio/mp3' }))\r\n })\r\n}\r\n\r\nfunction getDateDiffByTimestamp(strTime, endTime) {\r\n var mss = endTime - strTime\r\n var hours = parseInt((mss % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60))\r\n var minutes = parseInt((mss % (1000 * 60 * 60)) / (1000 * 60))\r\n var seconds = parseInt((mss % (1000 * 60)) / 1000)\r\n hours = hours < 10 ? ('0' + hours) : hours\r\n minutes = minutes < 10 ? ('0' + minutes) : minutes\r\n seconds = seconds < 10 ? ('0' + seconds) : seconds < 0 ? 0 : seconds\r\n return hours + ':' + minutes + ':' + seconds\r\n}\r\n\r\nexport const jsFn = {\r\n isCN,\r\n yyyymmdd,\r\n IsEmpty,\r\n getUUID,\r\n jwtDecode,\r\n converDrawerTime,\r\n getLang,\r\n convertHHMMSS,\r\n convertToMp3,\r\n getDateDiffByTimestamp\r\n}\r\n","export default {\r\n apiUrl: {\r\n global: 'https://api2.teammodel.net',\r\n cn: 'https://api2.teammodel.cn',\r\n globalrc: 'https://api2-rc.teammodel.net',\r\n cnrc: 'https://api2-rc.teammodel.cn',\r\n sokplatform: 'https://sokratesmgr.teammodel.org',\r\n sokplatformcn: 'https://sokratesmgr.teammodel.cn',\r\n sokplatformrc: 'https://sokratesmgr.teammodel.org',\r\n sokplatformcnrc: 'https://sokratesmgr.teammodel.cn'\r\n },\r\n clientID: {\r\n global: '626c7285-15aa-4abe-8c0d-2c5ff1381538',\r\n cn: '5bcc16a5-7d20-4cc4-b5c2-8ed0416f32b6',\r\n globalrc: '626c7285-15aa-4abe-8c0d-2c5ff1381538',\r\n cnrc: '5bcc16a5-7d20-4cc4-b5c2-8ed0416f32b6'\r\n },\r\n tmdUrl: {\r\n global: 'https://account.teammodel.net',\r\n cn: 'https://account.teammodel.cn',\r\n globalrc: 'https://account-rc.teammodel.net',\r\n cnrc: 'https://account-rc.teammodel.cn'\r\n }\r\n}\r\n","import axios from 'axios'\r\nimport { jsFn } from '@/utils/jsFn'\r\nimport profile from '@/utils/profile'\r\nlet hostname = window.location.hostname\r\nvar serverLocation = jsFn.isCN() ? 'cn' : 'global'\r\nif(hostname.indexOf('-rc') > 0) {\r\n serverLocation += 'rc'\r\n}\r\nif(hostname.indexOf('localhost') === 0) {\r\n serverLocation = 'globalrc'\r\n}\r\nlet refreshing = false\r\naxios.defaults.timeout = 30000 // 设置超时时长\r\naxios.defaults.baseURL = ''\r\n// http request 拦截器\r\naxios.interceptors.request.use(\r\n (config) => {\r\n return config\r\n },\r\n error => {\r\n return Promise.reject(error)\r\n }\r\n)\r\n\r\n// http response 拦截器\r\naxios.interceptors.response.use(\r\n response => {\r\n return response\r\n },\r\n error => {\r\n if (error && error.response) {\r\n switch (error.response.status) {\r\n case 404:\r\n console.log('找不到該頁面')\r\n break\r\n case 500:\r\n console.log('伺服器出錯')\r\n break\r\n case 503:\r\n console.log('服務失效')\r\n break\r\n default:\r\n console.log(`連接錯誤${error.response.status}`)\r\n }\r\n } else {\r\n console.log('連接到服務器失敗')\r\n }\r\n return Promise.reject(error.response)\r\n }\r\n)\r\n\r\n/** 檢查Token是否快過期 */\r\nfunction checkToken() {\r\n if (!localStorage.getItem('expires_in') || localStorage.getItem('expires_in') === undefined) return false\r\n var nowTime = new Date()\r\n let cT = Date.parse(nowTime)\r\n let eT = Date.parse(localStorage.getItem('expires_in'))\r\n let oT = 0\r\n let btw = eT - oT - cT\r\n if (btw > 10 * 60 * 1000) {\r\n return false\r\n } else {\r\n return true\r\n }\r\n}\r\n\r\n/** 刷新token */\r\nasync function refreshToken() {\r\n refreshing = true\r\n await axios.post(profile.apiUrl[serverLocation] + '/oauth2/token', {\r\n grant_type: 'refresh_token',\r\n client_id: profile.clientID[serverLocation],\r\n access_token: localStorage.getItem('access_token')\r\n }).then(\r\n res => {\r\n localStorage.setItem('access_token', res.data.access_token)\r\n localStorage.setItem('expires_in', res.data.expires_in)\r\n refreshing = false\r\n }, (err) => {\r\n console.log(err)\r\n refreshing = false\r\n }\r\n )\r\n}\r\n\r\n/**\r\n * 封装get方法\r\n * @param url\r\n * @param data\r\n * @returns {Promise}\r\n */\r\nexport function fetch(url, params = {}) {\r\n return new Promise((resolve, reject) => {\r\n axios.get(url, {\r\n params: params\r\n })\r\n .then(response => {\r\n resolve(response.data)\r\n })\r\n .catch(err => {\r\n reject(err)\r\n })\r\n })\r\n}\r\n\r\n/**\r\n * 封装corePost请求\r\n * @param url\r\n * @param data\r\n * @returns {Promise}\r\n */\r\n\r\n export function corePost(url, data = {}) {\r\n return new Promise(async(resolve, reject) => {\r\n if(url.indexOf(profile.apiUrl[serverLocation]) >= 0) {\r\n let flag = checkToken()\r\n if (flag) {\r\n if (!refreshing) {\r\n if (localStorage.getItem('access_token')) {\r\n await refreshToken()\r\n }\r\n }\r\n }\r\n }\r\n\r\n let headers = ''\r\n if (localStorage.getItem('access_token')) {\r\n headers = {\r\n headers:{\r\n 'Content-Type': 'application/json',\r\n 'Authorization': 'Bearer ' + localStorage.getItem('access_token')\r\n }\r\n }\r\n }\r\n axios.post(url, data, headers).then(\r\n response => {\r\n resolve(response.data)\r\n },\r\n err => {\r\n reject(err)\r\n }\r\n )\r\n })\r\n}\r\n\r\n/**\r\n * 封装channelPost请求\r\n * @param url\r\n * @param data\r\n * @returns {Promise}\r\n */\r\n export function channelPost(url, data, channelInfo) {\r\n return new Promise((resolve, reject) => {\r\n let headers = ''\r\n if(localStorage.channelLink !== undefined) {\r\n let channelLink = JSON.parse(decodeURIComponent(localStorage.channelLink,'utf-8'))\r\n headers =\r\n {\r\n headers:{\r\n 'Content-Type': 'application/json',\r\n 'X-Auth-UserID': channelInfo.user_id,\r\n 'X-Auth-Channel': channelInfo.channel,\r\n 'Authorization': 'Bearer ' + channelLink.access_token\r\n }\r\n }\r\n }\r\n axios.post(url, data, headers).then(\r\n response => {\r\n resolve(response.data)\r\n },\r\n err => {\r\n reject(err)\r\n }\r\n )\r\n })\r\n}\r\n\r\n/**\r\n * GET\r\n * @param url\r\n * @returns {Promise}\r\n */\r\nexport function get(url, config = {}) {\r\n return new Promise((resolve, reject) => {\r\n axios.get(url, config).then(\r\n res => {\r\n resolve(res.data)\r\n },\r\n err => {\r\n reject(err)\r\n }\r\n ).catch(e => {\r\n reject(e)\r\n })\r\n })\r\n}\r\n\r\n/**\r\n * POST\r\n * @param url\r\n * @returns {Promise}\r\n */\r\n export function post(url, data = {}, config = {}) {\r\n return new Promise((resolve, reject) => {\r\n axios.post(url, data, config).then(\r\n res => {\r\n resolve(res.data)\r\n },\r\n err => {\r\n reject(err)\r\n }\r\n ).catch(e => {\r\n reject(e)\r\n })\r\n })\r\n}\r\n","export default {\r\n basicInfo: 'Basic information',\r\n loginClass: 'Enter classroom',\r\n changeClass: 'Leave classroom',\r\n sendPoint: 'Send',\r\n loginTeamModel: 'TEAM Model ID login',\r\n teamModelID: 'TEAM Model ID',\r\n name: 'Observer name',\r\n groupNum: 'HiTeach Cloud Classroom NO.',\r\n pinCode: 'PIN NO.',\r\n socrates: 'Sokrates',\r\n err01: 'This field must not be left blank.',\r\n err02: 'Enter alphanumeric characters (a~z , 0~9).',\r\n err03: 'Please log in and try again.',\r\n err04: 'This classs is over.',\r\n err05: 'Login failed ',\r\n err06:'Classroom number or verification code is wrong',\r\n err07:'The number of participants is full, please try again later. ',\r\n err08:'Your file exceeds 10MB, the recommended recording format is below 720P',\r\n err09: 'The host has reset the number of participants in this observation, if you still want to join, please scan QR code again to log in.',\r\n err10: 'Please use TEAM Model ID to join.',\r\n logOut: 'Logout',\r\n ok: 'OK',\r\n cancel: 'Cancel',\r\n expertTitle: 'Expert',\r\n teacherTitle: 'Teacher',\r\n selectCharacter: 'Select role',\r\n selectYourCharacter: 'Select your role',\r\n groupQRCode: 'QR Code',\r\n PIN: 'PIN',\r\n selectModel: 'Choose your mode.',\r\n saySomething: 'Please give your feedback here.',\r\n uploadIMG: 'Please upload a picture.',\r\n selectONE: 'Choose at least one option',\r\n sendSucces: 'Successfully sent!',\r\n selectExpert_1: 'Please enter Verification Code.',\r\n selectExpert_2: 'Wrong Verification Code entered.',\r\n modelRoot_1:'Starting time',\r\n modelRoot_2:'min',\r\n modelRoot_3:'Observation starting time',\r\n ENTER: 'ENTER',\r\n TOPIC:'Course',\r\n history:'Observation records',\r\n historyEditTitle1:'Modify comment',\r\n historyEditTitle2:'Delete tag',\r\n historyEditCont:'Are you sure you want to delete this tag? ',\r\n copySuccess: 'Copy To clipboard',\r\n directions: 'directions',\r\n comment: 'Comment',\r\n endClass: 'Lesson has ended',\r\n copy: 'Copy',\r\n guest: 'Guest',\r\n login: 'Login',\r\n guestLogin: 'or login as a guest',\r\n or: 'OR',\r\n leaveComment: 'Would you like to leave?',\r\n iknow: 'I know.',\r\n modeltext1: 'The new lesson has started,',\r\n modeltext2: 'Your comments will be saved and recorded continuously',\r\n teacher: 'Observer Name',\r\n joinPeoples: 'Participant observers',\r\n logintext_1: 'Guest name...',\r\n modelRoot_4: 'Lesson has not started',\r\n classTeacher: 'Teacher',\r\n 'lang-zh-cn': '簡',\r\n 'lang-zh-tw': '繁',\r\n 'lang-en-us': 'EN',\r\n LabelManagement: 'Custom Tags',\r\n ClassroomSetting: 'Sokrates Observation App',\r\n save: 'Save',\r\n crtPoint_1: 'Create category',\r\n crtPoint_2: 'Category edit',\r\n crtPoint_3: 'Create tag',\r\n crtPoint_4: 'Tag edit',\r\n crtPoint_5: 'Catagory name',\r\n crtPoint_6: 'Remark',\r\n crtPoint_7: 'Create new tag',\r\n crtPoint_8:'Please fill in the category name',\r\n crtPoint_9:'New category exceeds capacity limit',\r\n crtPoint_11:'Please fill in the tag',\r\n crtPoint_12: 'Tag Name',\r\n lang: 'Language',\r\n basicLabel: 'TEAM Model category',\r\n channelLabel: 'School category',\r\n myLabel: 'Custom category',\r\n copyText: 'Copy',\r\n clickBtn: 'Select a tag for marking',\r\n mode_ready: 'Ready',\r\n mode_quiz_single: 'Multiple choice',\r\n mode_quiz_multiple: 'Multiple answers',\r\n mode_quiz_judge: 'True of flase',\r\n mode_quiz_complete: 'Fill in the blank',\r\n mode_quiz_subjective: 'Essay',\r\n mode_quiz_compose: 'Group Qs',\r\n mode_buzzin: 'Buzz-in',\r\n mode_competition_single: 'Multiple choice',\r\n mode_competition_multiple: 'Multiple answers',\r\n mode_competition_judge: 'True of flase',\r\n mode_competition_complete: 'Fill in the blank',\r\n mode_competition_subjective: 'Essay',\r\n mode_selfpace_start: 'Selfpace quiz',\r\n mode_selfpace_end: 'End of quiz',\r\n mode_attend: 'Attend',\r\n mode_collate: 'Task collection',\r\n mode_close: 'End of lesson',\r\n myCatagory: 'My category {value}',\r\n changeTable: 'Change category',\r\n warning: 'Warning',\r\n warn_text1: 'If you change the category, your comments and attachments will be lost ! ! ',\r\n warn_text2: 'If you delete {value}, the following tags will be deleted together ! ! ',\r\n warn_text3: 'You cannot undo after deleting this tag. Do you want to delete it ? ',\r\n warn_text4: 'You have not given permission to record or the browser microphone function is not turned on.',\r\n warn_text5: 'This lesson has ended, you may lose the marked content if you haven\\'t sent it yet, please submit it ASAP!',\r\n setting: 'Setting',\r\n chgLang: 'Change language',\r\n editCustomTags: 'Edit custom tags',\r\n delete: 'Delete',\r\n updsuccess:'Modified successfully',\r\n delsuccess:'Delete successfully',\r\n settingRemark: 'Share this QR Code to other experts and teachers.',\r\n weitStarClass: 'You have successfully joined this observation event, the lesson has not officially started yet, please wait',\r\n version: 'Version',\r\n webviewmsg1: '1. Please click the upper right button',\r\n webviewmsg2: {\r\n ios: '2. Select \"Open in Safari\"',\r\n android: '2. Select \"Open in Browser\"'\r\n },\r\n webviewmsg3: '3. Then you can use Sokrates Classroom Observation',\r\n notSokMode: 'Not Applicable',\r\n devTimeDialog: 'Please check your system clock is set to the current date and time.',\r\n advertiseInfo1: 'Further understanding of AI Sokrates.'\r\n}\r\n","export default {\r\n basicInfo: '基本資料',\r\n loginClass: '進入教室',\r\n changeClass: '離開教室',\r\n sendPoint: '送出',\r\n loginTeamModel: '醍摩豆帳號登入',\r\n teamModelID: '醍摩豆帳號',\r\n name: '觀課者',\r\n groupNum: 'HiTeach雲端教室編號',\r\n pinCode: '驗證碼',\r\n socrates: '蘇格拉底',\r\n err01: '此欄位必填',\r\n err02: '只能輸入英數字',\r\n err03: '請重新登入再試一次',\r\n err04: '課程已結束',\r\n err05: '登入失敗',\r\n err06: '教室編號或驗證碼錯誤',\r\n err07: '參與觀議課人數已滿,請稍後再試。 ',\r\n err08: '您的檔案超過10MB,建議錄影格式720P以下',\r\n err09: '授課者已重設本次參與觀議課人數,若仍想加入,請再次掃碼登入',\r\n err10: '請使用醍摩豆帳號加入',\r\n logOut: '登出',\r\n ok: '確 定',\r\n cancel: '取 消',\r\n expertTitle: '專家',\r\n teacherTitle: '教師',\r\n selectCharacter: '選擇角色',\r\n selectYourCharacter: '選擇你的身分',\r\n groupQRCode: '二維碼',\r\n PIN: '驗證碼',\r\n selectModel: '選擇您的模式',\r\n saySomething: '請在這裡填寫想法',\r\n uploadIMG: '請上傳圖片',\r\n selectONE: '請點選一個想法',\r\n sendSucces: '發送成功',\r\n selectExpert_1: '請輸入驗證碼',\r\n selectExpert_2: '驗證碼錯誤',\r\n modelRoot_1:'加入課堂時間',\r\n modelRoot_2:'分鐘',\r\n modelRoot_3:'開始議課時間',\r\n ENTER: 'ENTER',\r\n TOPIC:'課程名稱',\r\n history: '觀議課紀錄',\r\n historyEditTitle1: '修改標記內容',\r\n historyEditTitle2: '刪除標記',\r\n historyEditCont: '您確定要刪除此標記嗎?',\r\n copySuccess: '複製成功',\r\n directions: '說明',\r\n comment: '標記',\r\n endClass: '目前課程已結束',\r\n copy: '複製',\r\n copyText: '複製所有記錄',\r\n guest: '訪客',\r\n login: '登入',\r\n guestLogin: '或以訪客身分登入',\r\n or: '或',\r\n leaveComment: '請問要離開嗎?',\r\n iknow: '我知道了',\r\n modeltext1: '新的課程已開啟,',\r\n modeltext2: '您的歷史訊息將會保留並接續記錄',\r\n teacher: '觀課者',\r\n joinPeoples: '參與觀議課人數',\r\n logintext_1: '暱稱...',\r\n modelRoot_4: '觀議課尚未開始',\r\n classTeacher: '授課教師',\r\n 'lang-zh-cn': '簡',\r\n 'lang-zh-tw': '繁',\r\n 'lang-en-us': 'EN',\r\n LabelManagement: '自定標記',\r\n ClassroomSetting: '蘇格拉底觀議課',\r\n save: '儲 存',\r\n crtPoint_1: '新增焦點類型',\r\n crtPoint_2: '編輯焦點類型',\r\n crtPoint_3: '新增標記',\r\n crtPoint_4: '編輯標記',\r\n crtPoint_5: '焦點類型名稱',\r\n crtPoint_6: '備註',\r\n crtPoint_7: '增加標記',\r\n crtPoint_8: '請填寫焦點類型名稱',\r\n crtPoint_9: '新建焦點類型已達上限',\r\n crtPoint_11: '請填寫標記',\r\n crtPoint_12: '標記名稱',\r\n lang: '語系',\r\n basicLabel: '醍摩豆焦點類型',\r\n channelLabel: '學校焦點類型',\r\n myLabel: '自定焦點類型',\r\n clickBtn: '請選擇一個標記按鈕',\r\n mode_ready: '上課中',\r\n mode_quiz_single: '單選',\r\n mode_quiz_multiple: '複選',\r\n mode_quiz_judge: '是非',\r\n mode_quiz_complete: '填充',\r\n mode_quiz_subjective: '簡答',\r\n mode_quiz_compose: '題組',\r\n mode_buzzin: '搶權',\r\n mode_competition_single: '單選搶答',\r\n mode_competition_multiple: '複選搶答',\r\n mode_competition_judge: '是非搶答',\r\n mode_competition_complete: '填充搶答',\r\n mode_competition_subjective: '簡答搶答',\r\n mode_selfpace_start: '課堂測驗',\r\n mode_selfpace_end: '測驗結束',\r\n mode_attend: '點名',\r\n mode_collate: '作品收集任務',\r\n mode_close: '課堂已結束',\r\n myCatagory: '我的焦點類型 {value}',\r\n changeTable: '更換焦點類型',\r\n warning: '警告',\r\n warn_text1: '如果更換焦點類型,您的標記內容或附件將會遺失!!',\r\n warn_text2: '如果刪除 {value},以下的標記將會一起刪除!!',\r\n warn_text3: '刪除標記後將無法回复,是否刪除?',\r\n warn_text4: '您未給予錄音權限或未開啟瀏覽器的麥克風功能',\r\n warn_text5: '本課堂已經結束, 您尚未送出標記內容可能會遺失, 請趕快送出!',\r\n setting: '設 定',\r\n chgLang: '變更語言',\r\n editCustomTags: '編輯自定標記',\r\n delete: '刪除',\r\n updsuccess: '修改成功',\r\n delsuccess: '刪除成功',\r\n settingRemark: '將此QR Code分享給其他專家和老師',\r\n weitStarClass: '您已經成功加入本次觀議課, 目前課堂尚未正式開始, 請稍候',\r\n version: '版本',\r\n webviewmsg1: '1. 請點右上方按鈕',\r\n webviewmsg2: {\r\n ios: '2. 選擇 \"在預設瀏覽器開啟\"',\r\n android: '2. 選擇 \"在默認瀏覽器中開啟\"'\r\n },\r\n webviewmsg3: '3. 這樣就能使用蘇格拉底數位觀議課APP了',\r\n notSokMode: '非議課模式',\r\n devTimeDialog: '請確認您的手機或電腦系統時間設置是否正常。',\r\n advertiseInfo1: '進一步了解AI 蘇格拉底'\r\n}\r\n","export default {\r\n basicInfo: '基本信息',\r\n loginClass: '进入教室',\r\n changeClass: '离开教室',\r\n sendPoint: '送出',\r\n loginTeamModel: '醍摩豆账号登录',\r\n teamModelID: '醍摩豆账号',\r\n name: '观课者',\r\n groupNum: 'HiTeach云端教室编号',\r\n pinCode: '验证码',\r\n socrates: '苏格拉底',\r\n err01: '此栏位必填',\r\n err02: '只能输入英数字',\r\n err03: '请重新登录再试一次',\r\n err04: '课程已结束',\r\n err05: '登入失败',\r\n err06: '教室编号或验证码错误',\r\n err07: '参与观议课人数已满,请稍后再试。 ',\r\n err08: '您的文件超过10MB,建议录制格式720P以下',\r\n err09: '授课者已重置本次观议课参与人数,如您仍想加入,请再次扫描二维码登录',\r\n err10: '请使用醍摩豆帐号加入',\r\n logOut: '注 销',\r\n ok: '确 定',\r\n cancel: '取 消',\r\n expertTitle: '专家',\r\n teacherTitle: '教师',\r\n selectCharacter: '选择角色',\r\n selectYourCharacter: '选择你的身分',\r\n groupQRCode: '二维码',\r\n PIN: '验证码',\r\n selectModel: '选择您的模式',\r\n saySomething: '请在这里填写想法',\r\n uploadIMG: '请上传图片',\r\n selectONE: '请点选一个标记',\r\n sendSucces: '发送成功',\r\n selectExpert_1: '请输入验证码',\r\n selectExpert_2: '验证码错误',\r\n modelRoot_1:'加入课堂时间',\r\n modelRoot_2:'分钟',\r\n modelRoot_3:'开始观议课时间',\r\n ENTER: 'ENTER',\r\n TOPIC:'课程名称',\r\n history: '观议课纪录',\r\n historyEditTitle1: '修改标记内容',\r\n historyEditTitle2: '删除标记',\r\n historyEditCont: '您确定要删除此标记吗?',\r\n copySuccess: '复制成功',\r\n directions: '说明',\r\n comment: '标记',\r\n endClass: '目前课程已结束',\r\n copy: '复制',\r\n copyText: '复制所有记录',\r\n guest: '访客',\r\n login: '登入',\r\n guestLogin: '或以访客身分登入',\r\n or: '或',\r\n leaveComment: '请问要离开吗?',\r\n iknow: '我知道了',\r\n modeltext1: '新的课程已开启,',\r\n modeltext2: '您的历史讯息将会保留并接续记录',\r\n teacher: '观课者',\r\n joinPeoples: '参与观议课人数',\r\n logintext_1: '昵称...',\r\n modelRoot_4: '观议课尚未开始',\r\n classTeacher: '授课教师',\r\n 'lang-zh-cn': '简',\r\n 'lang-zh-tw': '繁',\r\n 'lang-en-us': 'EN',\r\n LabelManagement: '自定标记',\r\n ClassroomSetting: '苏格拉底观议课',\r\n save: '储 存',\r\n crtPoint_1: '新增焦点类型',\r\n crtPoint_2: '编辑焦点类型',\r\n crtPoint_3: '新增标记',\r\n crtPoint_4: '编辑标记',\r\n crtPoint_5: '焦点类型名称',\r\n crtPoint_6: '备注',\r\n crtPoint_7: '增加标记',\r\n crtPoint_8: '请填写焦点类型名称',\r\n crtPoint_9: '新建焦点类型已达上限',\r\n crtPoint_11: '请填写标记',\r\n crtPoint_12: '标记名称',\r\n lang: '语系',\r\n basicLabel: '醍摩豆焦点类型',\r\n channelLabel: '学校焦点类型',\r\n myLabel: '自定焦点类型',\r\n clickBtn: '请选择一个标记按钮',\r\n mode_ready: '上课中',\r\n mode_quiz_single: '单选',\r\n mode_quiz_multiple: '复选',\r\n mode_quiz_judge: '判断',\r\n mode_quiz_complete: '填空',\r\n mode_quiz_subjective: '问答',\r\n mode_quiz_compose: '题组',\r\n mode_buzzin: '抢权',\r\n mode_competition_single: '单选抢答',\r\n mode_competition_multiple: '复选抢答',\r\n mode_competition_judge: '判断抢答',\r\n mode_competition_complete: '填空抢答',\r\n mode_competition_subjective: '问答抢答',\r\n mode_selfpace_start: '课堂测验',\r\n mode_selfpace_end: '测验结束',\r\n mode_attend: '点名',\r\n mode_collate: '作品收集任务',\r\n mode_close: '课堂已结束',\r\n myCatagory: '我的焦点类型 {value}',\r\n changeTable: '更换焦点类型',\r\n warning: '警告',\r\n warn_text1: '如果更换焦点类型,您的标记内容或附件将会遗失!!',\r\n warn_text2: '如果删除 {value},以下的标记将会一起删除!!',\r\n warn_text3: '删除标记后将无法回复,是否删除?',\r\n warn_text4: '您未给予录音权限或未开启浏览器的麦克风功能',\r\n warn_text5: '本课堂已经结束, 您尚未送出标记内容可能会遗失, 请赶快提交!',\r\n setting: '设 定',\r\n chgLang: '变更语言',\r\n editCustomTags: '编辑自定标记',\r\n delete: '删除',\r\n updsuccess: '修改成功',\r\n delsuccess: '删除成功',\r\n settingRemark: '将此二维码分享给其他专家和老师',\r\n weitStarClass: '您已经成功加入本次观议课, 目前课堂尚未正式开始, 请稍候',\r\n version: '版本',\r\n webviewmsg1: '1. 请点击右上角按钮',\r\n webviewmsg2: {\r\n ios: '2. 选择 \"在预设浏览器打开\"',\r\n android: '2. 选择 \"在默认浏览器中打开\"'\r\n },\r\n webviewmsg3: '3. 这样就能使用苏格拉底数位观议课APP了',\r\n notSokMode: '非议课模式',\r\n devTimeDialog: '请确认您的手机或电脑系统时间设置是否正常。 ',\r\n advertiseInfo1: '进一步了解AI 苏格拉底'\r\n}\r\n","import Vue from 'vue'\r\nimport VueI18n from 'vue-i18n'\r\nimport { jsFn } from '@/utils/jsFn'\r\n\r\n// i18n\r\nimport en from './en.js'\r\nimport tw from './tw.js'\r\nimport cn from './cn.js'\r\n\r\nVue.use(VueI18n)\r\n\r\nconst i18n = new VueI18n({\r\n locale: jsFn.getLang(),\r\n messages: {\r\n 'zh-tw': tw,\r\n 'zh-cn': cn,\r\n 'en-us': en\r\n }\r\n})\r\n\r\nexport default i18n\r\n","import { corePost, get } from '@/api/http'\r\nimport { jsFn } from '@/utils/jsFn'\r\nimport profile from '@/utils/profile'\r\nimport i18n from '@/lang'\r\n// let hostname = window.location.hostname\r\nvar serverLocation = jsFn.isCN() ? 'cn' : 'global'\r\n// if(hostname.indexOf('-rc') > 0) {\r\n// serverLocation += 'rc'\r\n// }\r\n// if(hostname.indexOf('localhost') === 0) {\r\n// serverLocation = 'globalrc'\r\n// }\r\n\r\nvar clientID = profile.clientID[serverLocation]\r\nvar apiUrl = profile.apiUrl[serverLocation]\r\nvar tmdUrl = profile.tmdUrl[serverLocation]\r\nexport default {\r\n loginTMD: function(redirectUri) {\r\n let data = {\r\n response_type: 'code',\r\n client_id: clientID,\r\n nonce: jsFn.getUUID()\r\n }\r\n setTimeout(function() {\r\n data.state = jsFn.getUUID()\r\n data.redirect_uri = window.location.origin\r\n if(redirectUri !== null) {\r\n data.redirect_uri += '?s=' + redirectUri.s\r\n }\r\n window.location.href = tmdUrl + '/oauth2/authorize?response_type=' + data.response_type + '&client_id=' + data.client_id + '&state=' + data.state + '&nonce=' + data.nonce + '&redirect_uri=' + data.redirect_uri\r\n },1000)\r\n },\r\n // 大雲快速登入\r\n codeLogin: function(code) {\r\n return new Promise((resolve, reject) => {\r\n let data = {\r\n client_id: clientID,\r\n grant_type: 'authorization_code',\r\n code: code\r\n }\r\n corePost(apiUrl + '/oauth2/token', data).then(res => {\r\n if (res.error) {\r\n reject(res)\r\n } else {\r\n resolve(res)\r\n }\r\n }, err => {\r\n reject(err)\r\n })\r\n })\r\n },\r\n // 取得詳細使用者資訊\r\n getUserInfo: function() {\r\n return new Promise((resolve, reject) => {\r\n let nonceStr = jsFn.getUUID()\r\n let data = {\r\n grant_type: 'get',\r\n client_id: clientID,\r\n id_token: localStorage.getItem('id_token'),\r\n nonce: nonceStr\r\n }\r\n corePost(apiUrl + '/oauth2/profile', data).then(res => {\r\n if (res.error) {\r\n reject(new Error(res))\r\n } else {\r\n if (nonceStr === jsFn.jwtDecode(res.id_token).nonce) {\r\n resolve(res)\r\n } else {\r\n resolve({\r\n error: 'nonce'\r\n })\r\n }\r\n }\r\n }, err => {\r\n reject(err)\r\n })\r\n })\r\n },\r\n // 取得個人的按鈕設定檔\r\n initUserTags: function() {\r\n return new Promise((resolve, reject) => {\r\n let data = {\r\n grant_type: 'get',\r\n product: 'sokapp',\r\n id_token: localStorage.getItem('id_token')\r\n }\r\n corePost(apiUrl + '/oauth2/UserSetting', data).then(res => {\r\n if (res.error) {\r\n reject(new Error(res))\r\n } else {\r\n if (res === '') {\r\n let tags = [\r\n {\r\n typeId: jsFn.getUUID(),\r\n typeName: {\r\n customize: i18n.t('myCatagory', {value: 1}),\r\n cn: null,\r\n en: null,\r\n tw: null\r\n },\r\n tagList:[\r\n ]\r\n }\r\n ]\r\n\r\n resolve({error: 0, data: tags})\r\n } else {\r\n resolve({error: 0, data: res.tags})\r\n }\r\n }\r\n }, err => {\r\n reject(err)\r\n })\r\n })\r\n },\r\n // 設定個人標籤\r\n updUserTags: function(tags) {\r\n return new Promise((resolve, reject) => {\r\n let data = {\r\n grant_type: 'update',\r\n id_token: localStorage.getItem('id_token'),\r\n data: {'tags': tags}\r\n }\r\n corePost(apiUrl + '/oauth2/UserSetting', data).then(res => {\r\n if (res.error) {\r\n reject(new Error(res))\r\n } else {\r\n resolve(true)\r\n }\r\n }, err => {\r\n reject(err)\r\n })\r\n })\r\n },\r\n // IM 頻道登入\r\n joinChannel: function(data) {\r\n return new Promise((resolve, reject) => {\r\n let imData = {\r\n client_name: 'sokAPP',\r\n user_id: data.user_id,\r\n channel: data.channel,\r\n pin: data.pin\r\n }\r\n corePost(apiUrl + '/channel/join', imData).then(res => {\r\n if (res.error) {\r\n reject(new Error(res))\r\n } else {\r\n resolve(res)\r\n }\r\n }, err => {\r\n reject(err)\r\n })\r\n })\r\n },\r\n // 取得 azure 伺服器時間\r\n getServiceUnixTimeMilliseconds: function(data) {\r\n return new Promise((resolve, reject) => {\r\n get(apiUrl + '/service/UnixTimeMilliseconds').then(res => {\r\n if (res.error) {\r\n reject(res)\r\n } else {\r\n resolve(res)\r\n }\r\n }, err => {\r\n reject(err)\r\n })\r\n })\r\n }\r\n}\r\n","import { channelPost, get } from '@/api/http'\r\nexport default {\r\n // 詢問取得頻道詳細資訊(return 在監聽中收到)\r\n sendChannelInfo: function(url, channel, user) {\r\n return new Promise((resolve, reject) => {\r\n let payload = {\r\n action: 'Announce.Ask',\r\n clientType: 'SK',\r\n sender: user.deviceId,\r\n timestamp: Math.floor(Date.now()),\r\n waitReturn: false,\r\n payload: ''\r\n }\r\n let data = {\r\n target: 'onMessage',\r\n arguments: [{\r\n connectionId: null,\r\n to: null,\r\n groupname: null,\r\n sender: user.deviceId,\r\n text: JSON.stringify(payload)\r\n }]\r\n }\r\n channelPost(url, data, channel).then(res => {\r\n resolve(true)\r\n }, err => {\r\n reject(err)\r\n })\r\n })\r\n },\r\n // 詢問取得頻道綁定資訊(return 在監聽中收到)\r\n sendSKBinding: function(url, channel, user) {\r\n return new Promise((resolve, reject) => {\r\n let payload = {\r\n action: 'MemberBinding',\r\n clientType: 'SK',\r\n sender: user.deviceId,\r\n timestamp: Math.floor(Date.now()),\r\n waitReturn: false,\r\n payload: {\r\n memberID: user.id,\r\n api_Version: 5,\r\n deviceID: user.deviceId,\r\n clientType: 'SK',\r\n memberName: user.name\r\n }\r\n }\r\n let data = {\r\n target: 'onMessage',\r\n arguments: [{\r\n connectionId: null,\r\n to: null,\r\n groupname: null,\r\n sender: user.deviceId,\r\n text: JSON.stringify(payload)\r\n }]\r\n }\r\n channelPost(url, data, channel).then(res => {\r\n if (res.error) {\r\n reject(res)\r\n } else {\r\n resolve(res)\r\n }\r\n }, err => {\r\n reject(err)\r\n })\r\n })\r\n },\r\n // 取得使用者個人打點Data\r\n getUserComments: function(url) {\r\n return new Promise((resolve, reject) => {\r\n get(url).then(res => {\r\n if (res.error) {\r\n reject(res)\r\n } else {\r\n resolve(res)\r\n }\r\n }, err => {\r\n reject(err)\r\n })\r\n })\r\n },\r\n // 離開教室\r\n leave: function(url, channel, user) {\r\n return new Promise((resolve, reject) => {\r\n let payload = {\r\n action: 'Leave',\r\n clientType: 'SK',\r\n sender: user.deviceId,\r\n timestamp: Math.floor(Date.now()),\r\n waitReturn: true,\r\n payload: {}\r\n }\r\n let data = {\r\n target: 'onMessage',\r\n arguments: [{\r\n connectionId: null,\r\n to: null,\r\n groupname: null,\r\n sender: user.deviceId,\r\n text: JSON.stringify(payload)\r\n }]\r\n }\r\n channelPost(url, data, channel).then(res => {\r\n resolve(true)\r\n }, err => {\r\n reject(err)\r\n })\r\n })\r\n }\r\n}\r\n","import { get, post } from '@/api/http'\r\nimport profile from '@/utils/profile'\r\nimport { jsFn } from '@/utils/jsFn'\r\n\r\nlet hostname = window.location.hostname\r\nvar serverLocation = jsFn.isCN() ? 'sokplatformcn' : 'sokplatform'\r\nif(hostname.indexOf('-rc') > 0) {\r\n serverLocation += 'rc'\r\n}\r\nif(hostname.indexOf('localhost') === 0) {\r\n serverLocation = 'sokplatformrc'\r\n}\r\nvar accept = 'application/vnd.sokradeo.v1+json'\r\nvar clientID = 3\r\nvar apiUrl = profile.apiUrl[serverLocation]\r\n\r\nexport default {\r\n // 登入教室\r\n join: function(data, userinfo) {\r\n return new Promise((resolve, reject) => {\r\n let isGuest = userinfo.expertType === 'Guest'\r\n let url = apiUrl + '/api/school/observation/class/' + (isGuest ? 'guest/' : '') + data.channel\r\n let config = {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Application': 'c1e3deb8-9c20-49b3-9508-109911e5b984',\r\n 'Accept': accept\r\n },\r\n params: {\r\n pin_code: data.pin\r\n }\r\n }\r\n\r\n if(isGuest) {\r\n config.params.guest = userinfo.id\r\n config.headers.Authorization = 'Bearer ' + localStorage.getItem('sokplatform_access_token')\r\n } else {\r\n config.headers.Authorization = 'Bearer ' + localStorage.getItem('id_token')\r\n }\r\n\r\n get(url, config).then(res => {\r\n resolve({\r\n status: res.status, // API 狀態\r\n hostBlobUrl: res.url, // blob位置\r\n blobSAS_read: res.sas,\r\n blobSAS_write: res.sas,\r\n bindingNum: res.binding_number // activityRecordNumber 就是bindingNum\r\n })\r\n }, err => {\r\n reject(err)\r\n })\r\n })\r\n },\r\n // 詢問教室資訊\r\n getInfo: function(url) {\r\n return new Promise((resolve, reject) => {\r\n get(url).then(res => {\r\n resolve(res)\r\n }, err => {\r\n reject(err)\r\n })\r\n })\r\n },\r\n // 取得打點標記\r\n getTags: function(url) {\r\n return new Promise((resolve, reject) => {\r\n get(url).then(res => {\r\n resolve(res)\r\n }, err => {\r\n reject(err)\r\n })\r\n })\r\n },\r\n // 取得AccessToken\r\n getAccessToken: function() {\r\n return new Promise((resolve, reject) => {\r\n let config = {\r\n headers: {\r\n 'Accept': accept\r\n }\r\n }\r\n let data = {\r\n 'grant_type': 'client_credentials',\r\n 'client_id': clientID,\r\n 'client_secret': '9lIRxFY03Br2R5ymBbP8z30UksjbV72WpxD22pBS'\r\n }\r\n post(apiUrl + '/oauth/token', data, config).then(res => {\r\n resolve(res)\r\n }, err => {\r\n reject(err)\r\n })\r\n })\r\n }\r\n}\r\n","import coreApi from './coreApi'\r\nimport channeleApi from './channeleApi'\r\nimport sokplatform from './sokplatform'\r\n\r\nexport default {\r\n coreApi,\r\n channeleApi,\r\n sokplatform\r\n}\r\n","import Vue from 'vue'\r\nimport Vuex from 'vuex'\r\nimport api from '@/api'\r\nimport i18n from '@/lang'\r\nimport router from '@/router'\r\nimport { jsFn } from '@/utils/jsFn'\r\nimport profile from '@/utils/profile'\r\nimport {Message} from 'view-design'\r\nconst signalR = require('@microsoft/signalr')\r\nlet hostname = window.location.hostname\r\nvar serverLocation = jsFn.isCN() ? 'cn' : 'global'\r\nif(hostname.indexOf('-rc') > 0) {\r\n serverLocation += 'rc'\r\n}\r\nif(hostname.indexOf('localhost') === 0) {\r\n serverLocation = 'globalrc'\r\n}\r\nvar clientID = profile.clientID[serverLocation]\r\nvar tmdUrl = profile.tmdUrl[serverLocation]\r\nVue.use(Vuex)\r\n\r\n// TYPES\r\nconst PAGE_LANG = 'PAGE_LANG'\r\nconst LOGOUT = 'LOGOUT'\r\nconst SETUSERINFO = 'SETUSERINFO'\r\nconst SETUSERTAGS = 'SETUSERTAGS'\r\nconst SETHISTORYS = 'SETHISTORYS'\r\nconst SETCHANNELLINK = 'SETCHANNELLINK'\r\nconst SETCHANNELINFO = 'SETCHANNELINFO'\r\nconst SETCOMMENTBTNSETTING = 'SETCOMMENTBTNSETTING'\r\nconst SETCOMMENTSDATA = 'SETCOMMENTSDATA'\r\n\r\n// STATE\r\nconst state = {\r\n lang: '',\r\n loginFlag: false,\r\n userInfo: {\r\n id: '',\r\n name: '',\r\n expertType: ''\r\n },\r\n userTags: [], // 個人焦點標記\r\n tmdTags: [], // 醍摩豆焦點標記\r\n schoolTags: [], // 學校焦點標記\r\n // 打點身分\r\n expertType: {\r\n // 專家\r\n Expert : { id: 'A005F', type: 'Expert' },\r\n // 觀課\r\n Teacher: { id: 'A0060', type: 'Teacher' }\r\n },\r\n historys: [],\r\n channelLink:{}, // access_token, channel_api, channel_rest_api, channel_url, user_id\r\n channelInfo:{\r\n isStrClass: null, // 是否上課中\r\n channel: '', // 教室號碼\r\n pin: '', // Pin code\r\n className: '', // 上課名稱\r\n classTeacher: '', // 上課老師\r\n timestamp: 0, // 開課時間\r\n pageID: '', // 現在頁面的pageID\r\n isSokActivity: false, // 能否議課\r\n duration: 0, // 通用議課用 判斷一堂課預計上多久 0 則不計算\r\n deltaTime: 0, // 用來補正 Hiteach 如果時間錯誤的問題\r\n blobConfig: {\r\n hostBlobUrl: '', // blob位置\r\n bindingNum: '', // activityRecordNumber 就是bindingNum\r\n blobSAS_read: '', // 只能讀的\r\n blobSAS_write: '' // 只能寫入\r\n },\r\n isDevTimeAbnormal: false // 裝置時間異常\r\n },\r\n commentBtnSetting:{ // 打點目前使用的標記\r\n pointsByTypeId: '', // 目前使用的打點類別id\r\n table: {}, // 目前使用的打點按鈕List\r\n detailType: '', // 目前使用的菜盤 basic, school, myself\r\n detail: [] // 目前類別下可選的List\r\n },\r\n signalPayload: '',\r\n isSignalLink: false, // 是不是使用signal\r\n // courseMode: '',\r\n // exerciseType: '',\r\n baseFileUrl: '',\r\n version: 'v2.1.20231227',\r\n signalConnection: null,\r\n commentsData:{\r\n userId: '',\r\n bindingNum:'', // activityRecordNumber 就是bindingNum\r\n data:[]\r\n }\r\n}\r\n\r\n// Getters\r\nconst getters = {\r\n loginFlag: state => state.loginFlag,\r\n expertType: state => state.expertType,\r\n lang: state => state.lang,\r\n userTags: state => state.userTags,\r\n tmdTags: state => state.tmdTags,\r\n schoolTags: state => state.schoolTags,\r\n historys: state => state.historys,\r\n commentsData: state => state.commentsData,\r\n copyText: function(state) {\r\n let text = ''\r\n if(state.historys.length > 0) {\r\n // 處理VUE的深拷貝問題\r\n let historysReverse = JSON.stringify(state.historys)\r\n historysReverse = JSON.parse(historysReverse)\r\n historysReverse.sort(function(a, b) {\r\n return a.obsStart - b.obsStart\r\n })\r\n historysReverse.forEach((i, key, array) => {\r\n i.points.sort(function(a, b) {\r\n return a.timestamp - b.timestamp\r\n })\r\n })\r\n historysReverse.forEach((item) => {\r\n if(item.topic) {\r\n text += i18n.t('TOPIC') + ': ' + item.topic + '\\n'\r\n }\r\n if(item.classTName) {\r\n text += i18n.t('classTeacher') + ': ' + item.classTName + '\\n'\r\n }\r\n text += i18n.t('teacher') + ': ' + item.pointer + '\\n'\r\n text += i18n.t('modelRoot_3') + ': ' + jsFn.converDrawerTime(item.obsStart) + '\\n'\r\n // text += i18n.t('joinPeoples') + ': ' + item.joinPpo + '\\n'\r\n if(item.points.length > 0) {\r\n item.points.forEach((point) => {\r\n let conet = ''\r\n if(point.desc) {\r\n conet = ', ' + i18n.t('directions') + ':' + point.desc\r\n }\r\n let langFormat\r\n switch (state.lang) {\r\n case 'zh-tw':\r\n langFormat = 'tw'\r\n break\r\n case 'zh-cn':\r\n langFormat = 'cn'\r\n break\r\n case 'en-us':\r\n langFormat = 'en'\r\n break\r\n }\r\n text += jsFn.getDateDiffByTimestamp(item.obsStart, point.timestamp) + ' ' + i18n.t('comment') + ': ' + (point.tagName.customize ? point.tagName.customize : point.tagName[langFormat]) + conet + '\\n'\r\n })\r\n }\r\n text += '----------' + '\\n'\r\n })\r\n }\r\n return text\r\n },\r\n channelLink: state => state.channelLink,\r\n channelInfo: state => state.channelInfo,\r\n userInfo: state => state.userInfo,\r\n commentBtnSetting: state => state.commentBtnSetting,\r\n version: state => state.version,\r\n teachTypeNum: function(state) {\r\n let data = -1\r\n if (state.channelInfo.isStrClass !== null && state.channelInfo.isStrClass) {\r\n if(!state.isSignalLink) {\r\n data = 0\r\n } else {\r\n switch (state.signalPayload.mode) {\r\n case 'Quiz':\r\n case 'Quiz_Competition':\r\n switch (state.signalPayload.content.exercise.type) {\r\n case 'Multiple':\r\n data = state.signalPayload.mode === 'Quiz' ? 2 : 8\r\n break\r\n case 'Single':\r\n data = state.signalPayload.mode === 'Quiz' ? 1 : 7\r\n break\r\n case 'Judge':\r\n data = state.signalPayload.mode === 'Quiz' ? 3 : 9\r\n break\r\n case 'Complete':\r\n data = state.signalPayload.mode === 'Quiz' ? 4 : 10\r\n break\r\n case 'Subjective':\r\n data = state.signalPayload.mode === 'Quiz' ? 5 : 11\r\n break\r\n case 'Compose':\r\n data = 6\r\n break\r\n }\r\n break\r\n case 'Quiz_Buzz':\r\n data = 16\r\n break\r\n case 'SelfPace_Start':\r\n data = 12\r\n break\r\n case 'SelfPace_End':\r\n data = 13\r\n break\r\n case 'SelfPace_Check':\r\n data = 12\r\n break\r\n case 'Close':\r\n data = 17\r\n break\r\n case 'Collate_Start':\r\n data = 15\r\n break\r\n case 'Normal':\r\n data = 0\r\n break\r\n default:\r\n data = -1\r\n }\r\n }\r\n } else if (state.channelInfo.isStrClass !== null && !state.channelInfo.isStrClass) {\r\n data = 17\r\n }\r\n return data\r\n },\r\n baseFileUrl: state => state.baseFileUrl,\r\n isSignalLink: state => state.isSignalLink\r\n}\r\n\r\n// MUTATIONS\r\nconst mutations = {\r\n [PAGE_LANG](state, lang) {\r\n state.lang = lang\r\n localStorage.lang = lang\r\n },\r\n [SETUSERINFO](state, userInfo) {\r\n state.userInfo = userInfo\r\n state.loginFlag = true\r\n if(userInfo.expertType === 'Guest') {\r\n sessionStorage.setItem('userInfo', encodeURIComponent(JSON.stringify(userInfo), 'utf-8'))\r\n } else {\r\n localStorage.setItem('userInfo', encodeURIComponent(JSON.stringify(userInfo), 'utf-8'))\r\n }\r\n },\r\n [SETCHANNELLINK](state, info) {\r\n localStorage.channelLink = encodeURIComponent(JSON.stringify(info), 'utf-8')\r\n state.channelLink = info\r\n },\r\n [SETCHANNELINFO](state, info) {\r\n localStorage.channelInfo = encodeURIComponent(JSON.stringify(info), 'utf-8')\r\n state.channelInfo = info\r\n },\r\n [SETUSERTAGS](state, info) {\r\n localStorage.userTagsData = encodeURIComponent(JSON.stringify(info), 'utf-8')\r\n state.userTags = info\r\n },\r\n [LOGOUT](state) {\r\n const urlParams = new URLSearchParams(window.location.search)\r\n const myParam = urlParams.get('s')\r\n let logoutUrl = tmdUrl + '/logout?client_id=' + clientID + '&id=' + state.userInfo.id + '&callback=' + document.location.origin\r\n if(!jsFn.IsEmpty(myParam)) {\r\n logoutUrl += '?s=' + myParam\r\n }\r\n state.loginFlag = false\r\n state.userInfo = {}\r\n // 保留 historys\r\n let historys = localStorage.getItem('historys')\r\n localStorage.clear()\r\n sessionStorage.clear()\r\n localStorage.setItem('historys', historys)\r\n window.location.href = logoutUrl\r\n },\r\n [SETHISTORYS](state, data) {\r\n let historys = !jsFn.IsEmpty(localStorage.getItem('historys')) ? JSON.parse(decodeURIComponent(localStorage.getItem('historys'), 'utf-8')) : {}\r\n historys[state.userInfo.id.toString()] = data\r\n localStorage.historys = encodeURIComponent(JSON.stringify(historys), 'utf-8')\r\n state.historys = data\r\n },\r\n [SETCOMMENTBTNSETTING](state, data) {\r\n state.commentBtnSetting.pointsByTypeId = data.pointsByTypeId\r\n state.commentBtnSetting.table = data.table\r\n state.commentBtnSetting.detailType = data.detailType\r\n state.commentBtnSetting.detail = data.detail\r\n localStorage.commentBtnSetting = encodeURIComponent(JSON.stringify(state.commentBtnSetting), 'utf-8')\r\n },\r\n [SETCOMMENTSDATA](state, data) {\r\n localStorage.commentsData = encodeURIComponent(JSON.stringify(data), 'utf-8')\r\n state.commentsData = data\r\n }\r\n}\r\n\r\n// ACTIONS\r\nconst actions = ({\r\n // 設定語系\r\n setPageLang({ commit }, lang) {\r\n commit(PAGE_LANG, lang)\r\n },\r\n // 設定基本資訊\r\n setUserInfo({ commit }, info) {\r\n if(!jsFn.IsEmpty(info)) {\r\n commit(SETUSERINFO, info)\r\n } else if(!jsFn.IsEmpty(localStorage.getItem('userInfo'))) {\r\n let localUserInfo = JSON.parse(decodeURIComponent(localStorage.userInfo, 'utf-8'))\r\n commit(SETUSERINFO, localUserInfo)\r\n } else if(!jsFn.IsEmpty(sessionStorage.getItem('userInfo'))) {\r\n let sessionUserInfo = JSON.parse(decodeURIComponent(sessionStorage.userInfo, 'utf-8'))\r\n commit(SETUSERINFO, sessionUserInfo)\r\n }\r\n },\r\n // 設定頻道連線資訊\r\n setChannelLink({ commit }, info) {\r\n if(!jsFn.IsEmpty(info)) {\r\n commit(SETCHANNELLINK, info)\r\n } else if(!jsFn.IsEmpty(localStorage.channelLink)) {\r\n let data = JSON.parse(decodeURIComponent(localStorage.channelLink,'utf-8'))\r\n commit(SETCHANNELLINK, data)\r\n }\r\n },\r\n // 設定頻道基本資訊\r\n setChannelInfo({ commit }, info) {\r\n if(!jsFn.IsEmpty(info)) {\r\n commit(SETCHANNELINFO, info)\r\n } else if(!jsFn.IsEmpty(localStorage.channelInfo)) {\r\n let data = JSON.parse(decodeURIComponent(localStorage.channelInfo,'utf-8'))\r\n commit(SETCHANNELINFO, data)\r\n }\r\n },\r\n // 設定教師標籤\r\n setUserTags({ commit }, info) {\r\n if(!jsFn.IsEmpty(info)) {\r\n commit(SETUSERTAGS, info)\r\n } else if (!jsFn.IsEmpty(localStorage.userTagsData)) {\r\n let data = JSON.parse(decodeURIComponent(localStorage.userTagsData,'utf-8'))\r\n commit(SETUSERTAGS, data)\r\n }\r\n },\r\n // 設定打點紀錄(取得一筆 存到陣列)\r\n setHistorys(context, obj) {\r\n let data = []\r\n if(!jsFn.IsEmpty(obj)) {\r\n data = obj\r\n } else if(!jsFn.IsEmpty(localStorage.historys)) {\r\n data = JSON.parse(decodeURIComponent(localStorage.historys, 'utf-8'))\r\n data = data[context.state.userInfo.id]\r\n }\r\n if(!jsFn.IsEmpty(data)) {\r\n let taday = new Date().getTime()\r\n let datatemp = []\r\n data.forEach((item) => {\r\n // 只留下沒超過一天的\r\n let difference = parseInt(Math.abs(taday - parseInt(item.obsStart)) / (1000 * 60 * 60 * 24))\r\n if(difference === 0 && !jsFn.IsEmpty(item.points) && item.points.length > 0) {\r\n datatemp.push(item)\r\n }\r\n })\r\n\r\n context.commit(SETHISTORYS, datatemp)\r\n }\r\n },\r\n // 設定Blob打點紀錄\r\n setCommentsData({commit}, obj) {\r\n if(!jsFn.IsEmpty(obj)) {\r\n commit(SETCOMMENTSDATA, obj)\r\n } else if (!jsFn.IsEmpty(localStorage.commentsData)) {\r\n let data = JSON.parse(decodeURIComponent(localStorage.commentsData,'utf-8'))\r\n commit(SETCOMMENTSDATA, data)\r\n }\r\n },\r\n // 登出\r\n logOut(context) {\r\n context.commit(LOGOUT)\r\n },\r\n loginTMD(context, redirectUri) {\r\n api.coreApi.loginTMD(redirectUri)\r\n },\r\n codeLogin(context, code) {\r\n return new Promise((resolve, reject) => {\r\n api.coreApi.codeLogin(code).then(res => {\r\n localStorage.setItem('id_token', res.id_token)\r\n localStorage.setItem('access_token', res.access_token)\r\n localStorage.setItem('expires_in', res.expires_in)\r\n resolve(true)\r\n }).catch(err => {\r\n reject(err)\r\n })\r\n })\r\n },\r\n // 初始化使用者自訂標籤\r\n initUserTags(context, item) {\r\n return new Promise((resolve, reject) => {\r\n api.coreApi.initUserTags().then(res => {\r\n context.dispatch('setUserTags', res.data)\r\n resolve(true)\r\n }).catch(err => {\r\n reject(err)\r\n })\r\n })\r\n },\r\n // 更新教師自訂標籤\r\n updUserTags(context) {\r\n return new Promise((resolve, reject) => {\r\n api.coreApi.updUserTags(context.state.userTags).then(res => {\r\n context.dispatch('setUserTags', context.state.userTags)\r\n context.dispatch('setCommentBtnSetting', context.state.commentBtnSetting)\r\n resolve(true)\r\n }).catch(err => {\r\n reject(err)\r\n })\r\n })\r\n },\r\n // 加入頻道\r\n joinChannel(context, data) {\r\n return new Promise((resolve, reject) => {\r\n api.coreApi.joinChannel(data).then(res => {\r\n context.state.channelInfo.channel = data.channel\r\n context.state.channelInfo.pin = data.pin\r\n context.dispatch('setChannelInfo', context.state.channelInfo)\r\n context.dispatch('setChannelLink', res)\r\n resolve(true)\r\n }).catch(err => {\r\n reject(err)\r\n })\r\n })\r\n },\r\n // 發送詢問頻道詳細內容\r\n sendChannelInfo(context) {\r\n return new Promise((resolve, reject) => {\r\n api.channeleApi.sendChannelInfo(\r\n context.state.channelLink.channel_rest_api,\r\n context.state.channelInfo,\r\n context.state.userInfo\r\n ).then(res => {\r\n resolve(true)\r\n }).catch(err => {\r\n reject(err)\r\n })\r\n })\r\n },\r\n // 發送Binding\r\n sendSKBinding(context) {\r\n return new Promise((resolve, reject) => {\r\n api.channeleApi.sendSKBinding(\r\n context.state.channelLink.channel_rest_api,\r\n context.state.channelInfo,\r\n context.state.userInfo).then(() => {\r\n resolve(true)\r\n }).catch(err => {\r\n reject(err)\r\n })\r\n })\r\n },\r\n // 離開教室\r\n leaveChannel(context) {\r\n return new Promise((resolve) => {\r\n function reset() {\r\n if(context.state.isSignalLink) {\r\n context.state.signalConnection.stop()\r\n }\r\n\r\n localStorage.removeItem('channelInfo')\r\n localStorage.removeItem('commentBtnSetting')\r\n // 清空signal\r\n context.state.signalConnection = null\r\n\r\n // 清空當下選擇的打點\r\n context.state.commentBtnSetting = {\r\n pointsByTypeId: '',\r\n table: {},\r\n detailType: '',\r\n detail: []\r\n }\r\n\r\n let channelInfo = {\r\n isStrClass: null, // 是否上課中\r\n channel: '', // 教室號碼\r\n pin: '', // Pin code\r\n className: '', // 上課名稱\r\n classTeacher: '', // 上課老師\r\n timestamp: 0, // 開課時間\r\n pageID: '', // 現在頁面的pageID\r\n isSokActivity: false, // 能否議課\r\n duration: 0, // 通用議課用 判斷一堂課預計上多久 0 則不計算\r\n blobConfig: {\r\n hostBlobUrl: '', // blob位置\r\n bindingNum: '', // activityRecordNumber 就是bindingNum\r\n blobSAS_read: '', // 只能讀的\r\n blobSAS_write: '' // 只能寫入\r\n }\r\n }\r\n context.commit(SETCHANNELINFO, channelInfo)\r\n }\r\n api.channeleApi.leave(\r\n context.state.channelLink.channel_rest_api,\r\n context.state.channelInfo,\r\n context.state.userInfo\r\n ).then(() => {\r\n reset()\r\n resolve(true)\r\n }).catch(() => {\r\n reset()\r\n resolve(true)\r\n })\r\n })\r\n },\r\n // 取得使用者個人打點Data\r\n getUserComments(context) {\r\n return new Promise((resolve) => {\r\n let url = context.state.channelInfo.blobConfig.hostBlobUrl + '/' + context.state.baseFileUrl + 'comments.json?' + context.state.channelInfo.blobConfig.blobSAS_read\r\n api.channeleApi.getUserComments(url).then(res => {\r\n resolve(res)\r\n }).catch(() => {\r\n resolve(null)\r\n })\r\n })\r\n },\r\n // 保持議課打點的按鈕\r\n setCommentBtnSetting(context, info) {\r\n if(!jsFn.IsEmpty(info)) {\r\n context.commit(SETCOMMENTBTNSETTING, info)\r\n } else if (!jsFn.IsEmpty(localStorage.commentBtnSetting)) {\r\n let data = JSON.parse(decodeURIComponent(localStorage.commentBtnSetting,'utf-8'))\r\n context.commit(SETCOMMENTBTNSETTING, data)\r\n }\r\n },\r\n // 加入通用教研教室\r\n joinSokPlatform(context, data) {\r\n return new Promise(async(resolve, reject) => {\r\n if(context.state.userInfo.expertType === 'Guest') {\r\n await api.sokplatform.getAccessToken().then(res => {\r\n localStorage.setItem('sokplatform_access_token', res.access_token)\r\n })\r\n }\r\n\r\n api.sokplatform.join(data, context.state.userInfo).then(res => {\r\n let resFlag = false\r\n if(res.status === 0) {\r\n resFlag = true\r\n context.state.channelInfo.channel = data.channel\r\n context.state.channelInfo.pin = data.pin\r\n context.state.channelInfo.blobConfig.hostBlobUrl = res.hostBlobUrl\r\n context.state.channelInfo.blobConfig.bindingNum = res.bindingNum\r\n context.state.channelInfo.blobConfig.blobSAS_read = res.blobSAS_read\r\n context.state.channelInfo.blobConfig.blobSAS_write = res.blobSAS_write\r\n context.dispatch('setChannelInfo', context.state.channelInfo)\r\n }\r\n resolve(resFlag)\r\n }).catch(err => {\r\n reject(err)\r\n })\r\n })\r\n },\r\n // 取得通用教研教室\r\n getPlatformInfo(context) {\r\n return new Promise((resolve) => {\r\n let url = context.state.channelInfo.blobConfig.hostBlobUrl + '/' + context.state.channelInfo.blobConfig.bindingNum + '/observation.json?' + context.state.channelInfo.blobConfig.blobSAS_read\r\n api.sokplatform.getInfo(url).then(res => {\r\n let channelInfo = context.state.channelInfo\r\n switch (res.status) {\r\n case 'R':\r\n channelInfo.isStrClass = null\r\n break\r\n case 'E':\r\n channelInfo.isStrClass = false\r\n break\r\n case 'S':\r\n channelInfo.isStrClass = true\r\n channelInfo.isSokActivity = true\r\n break\r\n }\r\n channelInfo.duration = res.duration * 1000 // 調整格式到毫秒\r\n channelInfo.timestamp = jsFn.IsEmpty(res.timestamp) ? res.timestamp : res.timestamp * 1000 // 調整格式到毫秒\r\n channelInfo.className = res.className\r\n channelInfo.classTeacher = res.classTeacher\r\n\r\n context.state.baseFileUrl = context.state.channelInfo.blobConfig.bindingNum + '/Sokrates/' + context.state.userInfo.id + '/'\r\n let nowTime = new Date().getTime()\r\n let endTime = channelInfo.timestamp + channelInfo.duration\r\n if(!jsFn.IsEmpty(channelInfo.timestamp) && nowTime >= endTime) { // 已到達指定下課時間\r\n channelInfo.isStrClass = false\r\n }\r\n\r\n // 如果現在時間與上課時間已經超過課堂限制時間,回報時間異常\r\n // let diffTime = Math.abs(channelInfo.timestamp - nowTime)\r\n // // console.log('diffTime', diffTime)\r\n // if(diffTime > channelInfo.duration) {\r\n // context.state.channelInfo.isDevTimeAbnormal = true\r\n // } else {\r\n // context.state.channelInfo.isDevTimeAbnormal = false\r\n // }\r\n\r\n context.dispatch('setChannelInfo', channelInfo)\r\n resolve(true)\r\n }).catch(() => {\r\n resolve(null)\r\n })\r\n })\r\n },\r\n // 取得焦點標記\r\n getSkMarkTemplate(context) {\r\n return new Promise((resolve) => {\r\n let url = context.state.channelInfo.blobConfig.hostBlobUrl + '/' + context.state.channelInfo.blobConfig.bindingNum + '/observation_tags.json?' + context.state.channelInfo.blobConfig.blobSAS_read\r\n api.sokplatform.getTags(url).then(res => {\r\n res.forEach(function(item) {\r\n if (item.tableType === 'school') {\r\n context.state.schoolTags = item.types\r\n } else if (item.tableType === 'tmd') {\r\n context.state.tmdTags = item.types\r\n // 預設議課目前的打點選項\r\n if (context.state.commentBtnSetting.detail.length <= 0) {\r\n context.dispatch('setCommentBtnSetting', {table: context.state.tmdTags[0], detail: context.state.tmdTags, pointsByTypeId: context.state.tmdTags[0].typeId, detailType: 'tmd'})\r\n }\r\n }\r\n })\r\n resolve(true)\r\n }).catch(() => {\r\n resolve(null)\r\n })\r\n })\r\n },\r\n initSignal(context) {\r\n const options = {\r\n accessTokenFactory: () => context.state.channelLink.access_token\r\n }\r\n context.state.signalConnection = new signalR.HubConnectionBuilder()\r\n .withUrl(context.state.channelLink.channel_url, options)\r\n .withAutomaticReconnect({\r\n nextRetryDelayInMilliseconds: (retryContext) => {\r\n if (retryContext.elapsedMilliseconds < 60000) {\r\n // If we've been reconnecting for less than 60 seconds so far,\r\n // wait between 0 and 3 seconds before the next reconnect attempt.\r\n return Math.random() * 3000\r\n } else {\r\n // If we've been reconnecting for more than 60 seconds so far, stop reconnecting.\r\n return 10000\r\n }\r\n }\r\n }).configureLogging(signalR.LogLevel.Information).build()\r\n\r\n context.state.signalConnection.on('onMessage', function(message) {\r\n let targetmsg = null\r\n\r\n if (message.Text) targetmsg = JSON.parse(message.Text)\r\n else if (message.text) targetmsg = JSON.parse(message.text)\r\n\r\n if(targetmsg.sender === context.state.channelLink.user_id) {\r\n switch (targetmsg.action) {\r\n case 'State':\r\n context.state.signalPayload = targetmsg.payload\r\n // context.state.courseMode = targetmsg.payload.mode\r\n // context.state.exerciseType = targetmsg.payload.content.exercise.type\r\n\r\n context.state.channelInfo.pageID = targetmsg.payload.pageID\r\n context.state.channelInfo.isSokActivity = targetmsg.payload.isSokActivity\r\n // let now = new Date().getTime()\r\n // context.state.channelInfo.deltaTime = targetmsg.timestamp - now // 暫時註解矯正值\r\n\r\n // 裝置時間異常檢查\r\n // console.log('targetmsg.timestamp', targetmsg.timestamp)\r\n // console.log('now.timestamp', new Date().getTime())\r\n let nTime = Math.floor(new Date().getTime() / 1000)\r\n let heartbeatTime = Math.floor(targetmsg.timestamp / 1000)\r\n let diffMin = Math.floor(Math.abs(heartbeatTime - nTime) / 60)\r\n\r\n // 差距10分鐘顯示裝置時間異常\r\n if(diffMin > 10) {\r\n context.state.channelInfo.isDevTimeAbnormal = true\r\n } else {\r\n context.state.channelInfo.isDevTimeAbnormal = false\r\n }\r\n\r\n context.dispatch('setChannelInfo', context.state.channelInfo)\r\n break\r\n case 'Class.Start':\r\n console.log('開始上課-Class.Start-詢問課堂狀態...')\r\n let rand = Math.random().toFixed(1)\r\n setTimeout(function() {\r\n console.log('等待' + rand + '秒')\r\n context.dispatch('sendChannelInfo').then(() => {\r\n console.log('sendChannelInfo OK')\r\n }).catch((err) => {\r\n console.log(err, 'sendChannelInfo-err')\r\n })\r\n }, (1000 * rand))\r\n console.log('------------------------')\r\n break\r\n case 'Class.Close':\r\n context.state.channelInfo.isStrClass = false\r\n context.dispatch('setChannelInfo', context.state.channelInfo)\r\n console.log('結束上課')\r\n break\r\n case 'Announce.Push':\r\n let announce = targetmsg.payload.announce\r\n console.log('取得課堂狀態...')\r\n context.state.channelInfo.className = announce.className\r\n context.state.channelInfo.classTeacher = announce.hostName\r\n context.state.channelInfo.pin = announce.pincode\r\n\r\n if(!jsFn.IsEmpty(announce.hostSoftwareVersion) && announce.hostSoftwareVersion.toString() !== '0') {\r\n console.log('------508-開始Binding--------')\r\n console.log('詢問教室設置...')\r\n rand = Math.random().toFixed(1)\r\n setTimeout(function() {\r\n console.log('等待' + rand + '秒')\r\n context.dispatch('sendSKBinding').then(() => {\r\n console.log('sendSKBinding OK')\r\n }).catch((err) => {\r\n console.log(err, 'sendSKBinding-err')\r\n })\r\n }, (1000 * rand))\r\n }\r\n\r\n switch (announce.classState) {\r\n case 'Preparing': // (準備中)\r\n context.state.channelInfo.isStrClass = null\r\n break\r\n case 'Finished': // (已完成)\r\n context.state.channelInfo.isStrClass = false\r\n // _this.teachTypeNum = 17\r\n break\r\n case 'InProcess': // (進行中)\r\n context.state.channelInfo.isStrClass = true\r\n context.state.channelInfo.timestamp = announce.classStartTime\r\n\r\n // 詢問課堂BLOB\r\n if(jsFn.IsEmpty(announce.hostSoftwareVersion) || announce.hostSoftwareVersion.toString() === '0') {\r\n console.log('詢問教室設置...')\r\n let rand = Math.random().toFixed(1)\r\n setTimeout(function() {\r\n console.log('等待' + rand + '秒')\r\n context.dispatch('sendSKBinding').then(() => {\r\n console.log('sendSKBinding OK')\r\n }).catch((err) => {\r\n console.log(err, 'sendSKBinding-err')\r\n })\r\n }, (1000 * rand))\r\n }\r\n break\r\n }\r\n context.dispatch('setChannelInfo', context.state.channelInfo)\r\n console.log('取得完成...')\r\n break\r\n case 'BindingResult':\r\n console.log('取得教室設置...')\r\n let bindingData = targetmsg.payload\r\n // console.log(bindingData, 'bindingData')\r\n if (bindingData.errorCode === 0) {\r\n let bindingData = targetmsg.payload\r\n if(bindingData.skMarkTemplate) {\r\n let skMarkTemplate = JSON.parse(bindingData.skMarkTemplate)\r\n skMarkTemplate.forEach(function(item) {\r\n if (item.tableType === 'school') {\r\n context.state.schoolTags = item.types\r\n } else if (item.tableType === 'tmd') {\r\n context.state.tmdTags = item.types\r\n // 預設議課目前的打點選項\r\n if (context.state.commentBtnSetting.detail.length <= 0) {\r\n context.dispatch('setCommentBtnSetting', {table: context.state.tmdTags[0], detail: context.state.tmdTags, pointsByTypeId: context.state.tmdTags[0].typeId, detailType: 'tmd'})\r\n }\r\n }\r\n })\r\n }\r\n context.state.channelInfo.blobConfig = {\r\n hostBlobUrl: bindingData.hostBlobUrl, // blob位置\r\n bindingNum: bindingData.activityRecordNumber // activityRecordNumber 就是bindingNum\r\n }\r\n // 配合版本調整的\r\n if (jsFn.IsEmpty(bindingData.blobSAS_Read) || jsFn.IsEmpty(bindingData.blobSAS_Write)) {\r\n context.state.channelInfo.blobConfig.blobSAS_read = bindingData.blobSAS // 只能讀的\r\n context.state.channelInfo.blobConfig.blobSAS_write = bindingData.blobSAS // 只能寫入\r\n } else {\r\n context.state.channelInfo.blobConfig.blobSAS_read = bindingData.blobSAS_Read // 只能讀的\r\n context.state.channelInfo.blobConfig.blobSAS_write = bindingData.blobSAS_Write // 只能寫入\r\n }\r\n console.log('取得完成...')\r\n context.state.baseFileUrl = 'records/' + context.state.channelInfo.blobConfig.bindingNum + '/Sokrates/' + context.state.userInfo.id + '/'\r\n context.dispatch('setChannelInfo', context.state.channelInfo)\r\n } else {\r\n console.log('取得失敗...')\r\n Message.info({\r\n content: i18n.t('err07'),\r\n duration: 3,\r\n closable: true\r\n })\r\n context.dispatch('leaveChannel').then(() => {\r\n router.push({path: '/login'})\r\n })\r\n }\r\n break\r\n case 'FuckOff':\r\n Message.info({\r\n content: i18n.t('err09'),\r\n duration: 10,\r\n closable: true\r\n })\r\n context.dispatch('leaveChannel').then(() => {\r\n router.push({path: '/login'})\r\n })\r\n break\r\n }\r\n }\r\n })\r\n context.state.signalConnection.on('onDisconnected', function(message) {\r\n if(message.ConnectionId === context.state.channelLink.user_id) {\r\n console.log(message)\r\n }\r\n })\r\n context.state.signalConnection.on('onConnected', function(message) {\r\n console.log('onConnected-詢問課堂狀態...')\r\n if(context.state.userInfo.deviceId === message.UserId) {\r\n let rand = Math.random().toFixed(1)\r\n setTimeout(function() {\r\n console.log('等待' + rand + '秒')\r\n context.dispatch('sendChannelInfo').then(() => {\r\n console.log('sendChannelInfo OK')\r\n }).catch((err) => {\r\n console.log(err, 'sendChannelInfo-err')\r\n })\r\n }, (1000 * rand))\r\n }\r\n })\r\n\r\n context.state.signalConnection.onclose(() => {\r\n console.log('close connection')\r\n context.state.isSignalLink = false\r\n context.state.signalConnection\r\n .start()\r\n .then(() => console.log('re-connection!'))\r\n .catch(setTimeout(() => context.state.signalConnection.start(), 2000))\r\n })\r\n\r\n console.log('connecting...')\r\n context.state.signalConnection.start()\r\n .then(() => {\r\n context.state.isSignalLink = true\r\n console.log('Start connect OK!')\r\n }).catch(() => {\r\n console.log('Start connect fail!!')\r\n context.dispatch('leaveChannel').then(() => {\r\n router.push({path: '/login'})\r\n })\r\n })\r\n },\r\n // 取得伺服器現在時間\r\n getServiceUnixTimeMilliseconds(context) {\r\n return new Promise((resolve) => {\r\n api.coreApi.getServiceUnixTimeMilliseconds().then(res => {\r\n resolve(res)\r\n }).catch(() => {\r\n resolve(null)\r\n })\r\n })\r\n }\r\n})\r\n\r\nexport default new Vuex.Store({\r\n state,\r\n getters,\r\n mutations,\r\n actions\r\n})\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"login\",class:{loging: !_vm.loginFlag},attrs:{\"id\":\"login\"}},[(_vm.loginFlag)?_c('div',{staticClass:\"sky\"},[_vm._v(_vm._s(_vm.$t('ClassroomSetting')))]):_c('img',{staticStyle:{\"position\":\"absolute\",\"top\":\"0px\",\"left\":\"0\",\"width\":\"100%\"},attrs:{\"src\":_vm.logoImgList[_vm.lang]}}),(!_vm.loginFlag)?_c('div',{staticStyle:{\"height\":\"300px\",\"max-width\":\"560px\",\"width\":\"100%\"}}):_vm._e(),_c('div',{staticClass:\"box\"},[(_vm.loginFlag)?_c('Form',{ref:\"loginForm\",staticClass:\"text-center loginForm\",attrs:{\"model\":_vm.loginForm,\"rules\":_vm.loginRule},nativeOn:{\"submit\":function($event){$event.preventDefault();}}},[_c('FormItem',{staticClass:\"nameItem\"},[_c('span',{staticClass:\"welcome\"},[_vm._v(_vm._s('WELCOME'))]),_c('div',{staticClass:\"nameBox\"},[_c('h3',{staticClass:\"name\"},[_vm._v(_vm._s(_vm.userInfo.name))]),_c('div',{staticClass:\"icon\"},[_c('SokIcon',{attrs:{\"type\":\"certification\",\"size\":\"15\"}})],1)])]),_c('FormItem',{staticClass:\"channel\",attrs:{\"prop\":\"channel\"}},[_c('span',[_vm._v(_vm._s(_vm.$t('groupNum')))]),_c('security-code',{staticClass:\"input-channel\",attrs:{\"focus\":true,\"number\":6},model:{value:(_vm.loginForm.channel),callback:function ($$v) {_vm.$set(_vm.loginForm, \"channel\", $$v)},expression:\"loginForm.channel\"}})],1),_c('FormItem',{staticClass:\"pin\",attrs:{\"prop\":\"pinCode\"}},[_c('span',[_vm._v(_vm._s(_vm.$t('pinCode')))]),_c('div',[_c('Input',{staticClass:\"sok-btn pincode\",staticStyle:{\"width\":\"150px\"},attrs:{\"element-id\":\"pinCode\",\"type\":\"tel\"},model:{value:(_vm.loginForm.pinCode),callback:function ($$v) {_vm.$set(_vm.loginForm, \"pinCode\", $$v)},expression:\"loginForm.pinCode\"}})],1)]),_c('FormItem',{staticStyle:{\"margin-bottom\":\"7px\"}},[_c('Button',{staticClass:\"sok-btn\",attrs:{\"disabled\":_vm.isCanEnterClass,\"long\":\"\"},on:{\"click\":function($event){return _vm.submitClass('loginForm')}}},[_vm._v(_vm._s(_vm.$t('loginClass')))])],1),_c('FormItem',[_c('Button',{staticClass:\"sok-btn\",attrs:{\"long\":\"\"},on:{\"click\":function($event){return _vm.signout()}}},[_vm._v(_vm._s(_vm.$t('logOut')))])],1),(_vm.userInfo.expertType !== 'Guest')?_c('FormItem',{staticStyle:{\"margin-top\":\"27px\"}},[_c('Button',{staticClass:\"sok-btn\",attrs:{\"to\":\"/crtpointbtn\",\"long\":\"\"}},[_vm._v(_vm._s(_vm.$t('LabelManagement')))])],1):_vm._e()],1):_c('div',{staticClass:\"logoPage\"},[_c('div',{staticClass:\"tmdLogin\"},[_c('Button',{staticClass:\"sok-btn\",attrs:{\"long\":\"\"},on:{\"click\":function($event){return _vm.loginTeamModelID()}}},[_c('div',{staticStyle:{\"display\":\"flex\",\"justify-content\":\"center\"}},[_c('SokIcon',{staticClass:\"icon\",attrs:{\"type\":\"tmdring\",\"size\":\"20\"}}),_c('span',{staticStyle:{\"vertical-align\":\"middle\"}},[_vm._v(_vm._s(_vm.$t('loginTeamModel')))])],1)])],1),_c('div',{staticClass:\"guestLogin\"},[_c('Form',{ref:\"guestForm\",staticClass:\"guestForm\",staticStyle:{\"max-width\":\"380px\",\"margin\":\"auto\"},attrs:{\"model\":_vm.guestForm,\"rules\":_vm.guestRule},nativeOn:{\"submit\":function($event){$event.preventDefault();}}},[_c('p',[_vm._v(_vm._s(_vm.$t('guestLogin')))]),_c('FormItem',{staticStyle:{\"padding\":\"0\"},attrs:{\"prop\":\"name\"}},[_c('Row',{attrs:{\"type\":\"flex\",\"justify\":\"space-between\"}},[_c('Col',{attrs:{\"span\":\"17\"}},[_c('Input',{staticClass:\"sok-btn tuning\",attrs:{\"placeholder\":_vm.$t('logintext_1')},model:{value:(_vm.guestForm.name),callback:function ($$v) {_vm.$set(_vm.guestForm, \"name\", $$v)},expression:\"guestForm.name\"}})],1),_c('Col',{attrs:{\"span\":\"6\"}},[_c('Button',{staticClass:\"sok-btn\",attrs:{\"long\":\"\"},on:{\"click\":function($event){return _vm.guestLogin('guestForm')}}},[_vm._v(_vm._s(_vm.$t('login')))])],1)],1)],1)],1)],1)])],1),_c('div',{staticClass:\"login-footer\"},[_c('page-footer'),_c('div',{staticClass:\"intellectual\"},[(_vm.isCN)?_c('span',[_c('a',{attrs:{\"href\":\"http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=51010402000615\"}},[_vm._v(\"蜀ICP备18027363号\")]),_vm._v(\" | \")]):_vm._e(),_c('span',[_vm._v(\"HABOOK.Group © | \"+_vm._s(_vm.version))])])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"footer\",attrs:{\"id\":\"page-footer\"}},[_c('div',{staticClass:\"detail\"},[_c('a',{staticClass:\"lang\",class:{'select':_vm.pageLang=='zh-tw'},attrs:{\"type\":\"text\"},on:{\"click\":function($event){return _vm.langChange('zh-tw')}}},[_vm._v(\"中文(繁體)‎\")]),_vm._v(\" | \"),_c('a',{staticClass:\"lang\",class:{'select':_vm.pageLang=='zh-cn'},attrs:{\"type\":\"text\"},on:{\"click\":function($event){return _vm.langChange('zh-cn')}}},[_vm._v(\"中文(简体)‎‎‎\")]),_vm._v(\" | \"),_c('a',{staticClass:\"lang\",class:{'select':_vm.pageLang=='en-us'},attrs:{\"type\":\"text\"},on:{\"click\":function($event){return _vm.langChange('en-us')}}},[_vm._v(\"English\")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\r\nimport { mapActions } from 'vuex'\r\nexport default {\r\n name: 'page-footer',\r\n data() {\r\n return {\r\n pageLang: this.$i18n.locale\r\n }\r\n },\r\n created: function() {\r\n },\r\n methods: {\r\n ...mapActions(['setPageLang']),\r\n langChange(val) {\r\n this.pageLang = val\r\n this.$i18n.locale = val\r\n this.setPageLang(val)\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./page-footer.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./page-footer.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./page-footer.vue?vue&type=template&id=58e65945&\"\nimport script from \"./page-footer.vue?vue&type=script&lang=js&\"\nexport * from \"./page-footer.vue?vue&type=script&lang=js&\"\nimport style0 from \"./page-footer.vue?vue&type=style&index=0&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"security-code-wrap\"},[_c('label',{attrs:{\"for\":\"code\"}},[_c('ul',{staticClass:\"security-code-container\"},_vm._l((_vm.numberAry),function(item,index){return _c('li',{key:index,staticClass:\"field-wrap\"},[_c('i',{staticClass:\"char-field\"},[_vm._v(_vm._s(item || _vm.placeholder))])])}),0)]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.value),expression:\"value\"}],ref:\"input\",staticClass:\"input-code\",attrs:{\"id\":\"code\",\"name\":\"code\",\"type\":\"tel\",\"maxlength\":_vm.number,\"autocorrect\":\"off\",\"autocomplete\":\"off\",\"autocapitalize\":\"off\"},domProps:{\"value\":(_vm.value)},on:{\"keyup\":function($event){return _vm.handleInput($event)},\"input\":function($event){if($event.target.composing){ return; }_vm.value=$event.target.value}}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\r\nexport default {\r\n name: 'SecurityCode',\r\n props: {\r\n number: {\r\n type: Number,\r\n default: 4\r\n },\r\n placeholder: {\r\n type: String,\r\n default: '-'\r\n },\r\n focus: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n computed:{\r\n numberAry() {\r\n let array = []\r\n for (var i = 0; i < this.number; i++) {\r\n array.push(this.value.substr(i, 1))\r\n }\r\n return array\r\n }\r\n },\r\n data() {\r\n return {\r\n value: ''\r\n }\r\n },\r\n methods: {\r\n hideKeyboard() {\r\n // 輸入完成隱藏鍵盤\r\n document.activeElement.blur() // ios隱藏鍵盤\r\n this.$refs.input.blur() // android隱藏鍵盤\r\n },\r\n handleSubmit() {\r\n this.$emit('input', this.value)\r\n },\r\n handleInput(e) {\r\n this.$refs.input.value = this.value\r\n if (this.value.length >= this.number) {\r\n // this.hideKeyboard()\r\n }\r\n this.handleSubmit()\r\n },\r\n init() {\r\n if(this.focus) {\r\n this.$refs.input.focus()\r\n }\r\n }\r\n },\r\n mounted() {\r\n this.init()\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./securityCode.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./securityCode.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./securityCode.vue?vue&type=template&id=1d47e3ee&scoped=true&\"\nimport script from \"./securityCode.vue?vue&type=script&lang=js&\"\nexport * from \"./securityCode.vue?vue&type=script&lang=js&\"\nimport style0 from \"./securityCode.vue?vue&type=style&index=0&id=1d47e3ee&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1d47e3ee\",\n null\n \n)\n\nexport default component.exports","//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport { mapActions, mapGetters } from 'vuex'\nimport PageFooter from '@/components/page-footer'\nimport securityCode from '@/components/tool/securityCode'\nimport { jsFn } from '@/utils/jsFn'\nimport { Base64 } from 'js-base64'\n\nexport default {\n name: 'login',\n components:{\n 'page-footer': PageFooter,\n 'security-code': securityCode\n },\n data() {\n var validateChannel = (rule, value, callback) => {\n if (value.trim() === '') {\n callback(new Error(this.$t('err01')))\n } else if (!(/^[A-Za-z0-9 ]+$/.test(value))) {\n callback(new Error(this.$t('err02')))\n } else {\n callback()\n }\n }\n var validatePinCode = (rule, value, callback) => {\n if (value.trim() === '') {\n callback(new Error(this.$t('err01')))\n } else if (!(/^[A-Za-z0-9 ]+$/.test(value))) {\n callback(new Error(this.$t('err02')))\n } else {\n callback()\n }\n }\n return {\n logoImgList: {\n 'zh-tw': require('@/img/logo/white/sok_index_tw.png'),\n 'zh-cn': require('@/img/logo/white/sok_index_cn.png'),\n 'en-us': require('@/img/logo/white/sok_index_en.png')\n },\n callback: '',\n loginForm: {\n channel: '',\n pinCode: ''\n },\n loginRule: {\n channel: [\n { validator: validateChannel, trigger: 'blur' }\n ],\n pinCode: [\n { validator: validatePinCode, trigger: 'blur' }\n ]\n },\n guestForm: {\n name: ''\n },\n guestRule: {\n name: [\n { required: true, message: this.$t('err01'), trigger: 'change' }\n ]\n }\n }\n },\n computed: {\n ...mapGetters([\n 'loginFlag',\n 'userInfo',\n 'lang',\n 'version'\n ]),\n isCN: function() {\n let domain = document.domain\n if (domain.indexOf('.cn') >= 0) {\n return true\n } else {\n return false\n }\n },\n isCanEnterClass: function() {\n let flag = true\n if(this.loginForm.channel.length === 6 && this.loginForm.pinCode !== '') flag = false\n return flag\n }\n },\n async created() {\n let s = this.$tools.IsEmpty(this.$route.query.s) ? '' : this.$route.query.s\n if (s !== '') {\n s = JSON.parse(Base64.decode(decodeURIComponent(s, 'utf-8')))\n this.loginForm.channel = this.$tools.IsEmpty(s.gn) ? '' : s.gn\n this.loginForm.pinCode = this.$tools.IsEmpty(s.pin) ? '' : s.pin\n }\n let code = this.$tools.IsEmpty(this.$route.query.code) ? '' : this.$route.query.code\n if (!this.$tools.IsEmpty(this.$route.query.code)) {\n await this.codeLogin(code)\n }\n\n if (this.loginFlag) {\n let localUserInfo = !this.$tools.IsEmpty(localStorage.userInfo) ? JSON.parse(decodeURIComponent(localStorage.userInfo, 'utf-8')) : null\n // 如果已在登入中且身分在localstorage裡面是訪客就登出,因為之後的訪客資訊只會存在在session\n if(!this.$tools.IsEmpty(localUserInfo) && localUserInfo.expertType === 'Guest') {\n this.logOut()\n } else {\n // 如果已在登入中重新取得焦點\n if (this.userInfo.expertType !== 'Guest') {\n this.$store.dispatch('initUserTags')\n }\n\n // 如果已在登入中,並且URL有教室ID,執行登入教室\n if (!this.$tools.IsEmpty(this.loginForm.channel) && !this.$tools.IsEmpty(this.loginForm.pinCode)) {\n this.loginClass()\n }\n }\n }\n },\n methods: {\n ...mapActions([\n 'setUserInfo',\n 'logOut'\n ]),\n submitClass(name) { // 登入教室表單檢查\n this.$refs[name].validate((valid) => {\n if (valid) {\n this.loginClass()\n }\n })\n },\n loginTeamModelID() { // 登入TeamModelID\n // 回調網址\n let redirectUri = null\n let s = this.$tools.IsEmpty(this.$route.query.s) ? '' : this.$route.query.s\n if(!this.$tools.IsEmpty(s)) {\n redirectUri = {s: s}\n }\n\n this.$store.dispatch('loginTMD', redirectUri)\n },\n async loginClass() { // 登入教室\n if (this.$tools.IsEmpty(this.loginForm.channel) || this.$tools.IsEmpty(this.loginForm.pinCode)) {\n return false\n } else {\n this.$Spin.show() // 開啟加載畫面\n let channelData = {\n user_id: this.userInfo.deviceId,\n channel: this.loginForm.channel,\n pin: this.loginForm.pinCode\n }\n\n // 如果是0或9開頭的channel就是通用議課\n if (channelData.channel.indexOf(0) === 0 || channelData.channel.indexOf(9) === 0) {\n // 呼叫API取得Blob位置\n await this.$store.dispatch('joinSokPlatform', channelData).then((res) => {\n if(res) {\n this.$router.push({ path: '/commentbtn' })\n } else {\n this.$Message.warning({ content: this.$t('err07', {channel: this.loginForm.channel, pin: this.loginForm.pinCode}), duration: 3,closable: true })\n }\n }).catch(() => {\n this.$Message.warning({ content: this.$t('err06', {channel: this.loginForm.channel, pin: this.loginForm.pinCode}), duration: 3,closable: true })\n }).finally(() => {\n this.$Spin.hide() // 開啟加載畫面\n })\n } else {\n await this.$store.dispatch('joinChannel', channelData).then(() => {\n this.$router.push({ path: '/commentbtn' })\n }).catch(() => {\n this.$Message.warning({ content: this.$t('err06', {channel: this.loginForm.channel, pin: this.loginForm.pinCode}), duration: 3,closable: true })\n }).finally(() => {\n this.$Spin.hide() // 開啟加載畫面\n })\n }\n }\n },\n signout() {\n this.$Spin.show() // 關閉加載畫面\n this.logOut()\n },\n // 票券登入檢查\n async codeLogin(code) {\n this.$Spin.show() // 開啟加載畫面\n await this.$store.dispatch('codeLogin', code).then(\n res => {\n let user = jsFn.jwtDecode(localStorage.getItem('id_token'))\n let info = { id: user.sub, expertType: 'Teacher', name: user.name, deviceId: jsFn.getUUID() }\n this.$store.dispatch('setUserInfo', info)\n this.$store.dispatch('initUserTags')\n this.loginClass()\n },\n () => {\n this.$Message.warning({ content: this.$t('err05'), duration: 3, closable: true })\n }\n ).finally(() => {\n this.$Spin.hide() // 關閉加載畫面\n })\n },\n // 訪客登入\n guestLogin(name) {\n this.$refs[name].validate((valid) => {\n if (valid) {\n let info = { id: jsFn.getUUID(), expertType: 'Guest', name: this.guestForm.name, deviceId: jsFn.getUUID() }\n this.$store.dispatch('setUserInfo', info)\n this.loginClass()\n }\n })\n }\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./login.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./login.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./login.vue?vue&type=template&id=e03935d6&scoped=true&\"\nimport script from \"./login.vue?vue&type=script&lang=js&\"\nexport * from \"./login.vue?vue&type=script&lang=js&\"\nimport style0 from \"./login.vue?vue&type=style&index=0&lang=less&\"\nimport style1 from \"./login.vue?vue&type=style&index=1&id=e03935d6&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e03935d6\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"crtPointBtn\",attrs:{\"id\":\"crtPointBtn\"}},[_c('div',{staticClass:\"box\"},[_c('div',{staticClass:\"sky\"},[_c('Icon',{staticClass:\"backPage\",attrs:{\"size\":\"25\",\"type\":\"ios-arrow-back\"},on:{\"click\":function($event){return _vm.backPage()}}}),_c('div',{staticClass:\"sky-title\"},[_vm._v(\" \"+_vm._s(_vm.$t('LabelManagement'))+\" \"),_c('span',{staticClass:\"time\"},[_vm._v(_vm._s(_vm.commentsTime))])]),_c('SokIcon',{staticClass:\"addClass\",attrs:{\"type\":\"add\",\"size\":\"25\"},on:{\"on-click\":function($event){return _vm.setTypeForm('crt')}}})],1),_c('div',{staticClass:\"scrollstyle tagBox\"},_vm._l((_vm.userTags),function(data,key){return _c('div',{key:key,staticClass:\"type\"},[_c('div',{staticClass:\"title\"},[_c('span',[_vm._v(_vm._s(data.typeName.customize))]),_c('SokIcon',{staticClass:\"icon\",attrs:{\"type\":\"edit\",\"size\":\"15\"},on:{\"on-click\":function($event){return _vm.setTypeForm('upd', data.typeId, data.typeName.customize)}}})],1),_c('div',{staticClass:\"cont\"},[_vm._l((data.tagList),function(tag,index){return _c('div',{key:index,staticClass:\"tags\",on:{\"click\":function($event){return _vm.setTagForm('upd' ,data.typeId, tag.id, tag.name.customize, tag.description)}}},[_c('span',{staticClass:\"tags-cont\"},[_vm._v(_vm._s(tag.name.customize))]),_c('div',{staticClass:\"tags-info scrollstyle\"},[_c('span',[_vm._v(_vm._s(tag.description ? tag.description.customize : ''))])]),_c('div',{staticClass:\"box-triangle\"})])}),_c('div',{staticClass:\"tags crtTag\",on:{\"click\":function($event){return _vm.setTagForm('crt' ,data.typeId)}}},[_c('SokIcon',{staticClass:\"icon\",attrs:{\"type\":\"add\",\"size\":\"25\"}}),_vm._v(\" \"+_vm._s(_vm.$t('crtPoint_7'))+\" \")],1)],2)])}),0)]),_c('Modal',{attrs:{\"mask-closable\":false,\"width\":\"300\",\"class-name\":\"titleSetting\"},on:{\"on-cancel\":function($event){return _vm.cancelTypeForm()}},model:{value:(_vm.categoryModel),callback:function ($$v) {_vm.categoryModel=$$v},expression:\"categoryModel\"}},[_c('p',{staticClass:\"title\",attrs:{\"slot\":\"header\"},slot:\"header\"},[_vm._v(\" \"+_vm._s(_vm.typeForm.operating === 'crt' ? _vm.$t('crtPoint_1') : _vm.$t('crtPoint_2'))+\" \")]),_c('div',{staticClass:\"body\"},[_c('Input',{staticClass:\"sok-btn\",attrs:{\"placeholder\":_vm.$t('crtPoint_5')+'...'},model:{value:(_vm.typeForm.name),callback:function ($$v) {_vm.$set(_vm.typeForm, \"name\", $$v)},expression:\"typeForm.name\"}})],1),_c('div',{staticStyle:{\"display\":\"flex\"},attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('Button',{staticClass:\"sok-btn\",attrs:{\"long\":\"\",\"disabled\":_vm.$tools.IsEmpty(_vm.typeForm.name)},on:{\"click\":function($event){return _vm.saveTypeName()}}},[_vm._v(_vm._s(_vm.$t('save')))]),(_vm.typeForm.operating === 'crt')?_c('Button',{staticClass:\"sok-btn\",attrs:{\"long\":\"\"},on:{\"click\":function($event){return _vm.cancelTypeForm()}}},[_vm._v(_vm._s(_vm.$t('cancel')))]):(_vm.typeForm.operating === 'upd')?_c('Button',{staticClass:\"sok-btn\",attrs:{\"long\":\"\"},on:{\"click\":function($event){return _vm.delCatagory()}}},[_vm._v(_vm._s(_vm.$t('delete')))]):_vm._e()],1)]),_c('Modal',{attrs:{\"mask-closable\":false,\"width\":\"300\",\"class-name\":\"crtTagBox\"},on:{\"on-cancel\":function($event){return _vm.cancelTypeForm()}},model:{value:(_vm.tagModel),callback:function ($$v) {_vm.tagModel=$$v},expression:\"tagModel\"}},[_c('p',{staticClass:\"title\",attrs:{\"slot\":\"header\"},slot:\"header\"},[_vm._v(\" \"+_vm._s(_vm.tagForm.operating === 'crt' ? _vm.$t('crtPoint_3') : _vm.$t('crtPoint_4'))+\" \")]),_c('div',{staticClass:\"body\"},[_c('Input',{staticClass:\"sok-btn\",staticStyle:{\"margin-bottom\":\"14px\"},attrs:{\"placeholder\":_vm.$t('crtPoint_12') +'...'},model:{value:(_vm.tagForm.name),callback:function ($$v) {_vm.$set(_vm.tagForm, \"name\", $$v)},expression:\"tagForm.name\"}}),_c('Input',{staticStyle:{\"margin-bottom\":\"14px\"},attrs:{\"type\":\"textarea\",\"rows\":4,\"placeholder\":_vm.$t('crtPoint_6')},model:{value:(_vm.tagForm.remark),callback:function ($$v) {_vm.$set(_vm.tagForm, \"remark\", $$v)},expression:\"tagForm.remark\"}})],1),_c('div',{staticStyle:{\"display\":\"flex\"},attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('Button',{staticClass:\"sok-btn\",attrs:{\"long\":\"\",\"disabled\":_vm.$tools.IsEmpty(_vm.tagForm.name)},on:{\"click\":function($event){return _vm.saveLabel()}}},[_vm._v(_vm._s(_vm.$t('save')))]),(_vm.tagForm.operating === 'crt')?_c('Button',{staticClass:\"sok-btn\",attrs:{\"long\":\"\"},on:{\"click\":function($event){return _vm.quit()}}},[_vm._v(_vm._s(_vm.$t('cancel')))]):(_vm.tagForm.operating === 'upd')?_c('Button',{staticClass:\"sok-btn\",attrs:{\"long\":\"\"},on:{\"click\":function($event){return _vm.delTag()}}},[_vm._v(_vm._s(_vm.$t('delete')))]):_vm._e()],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport {mapGetters} from 'vuex'\nimport { jsFn } from '@/utils/jsFn'\nexport default {\n name: 'crtPointBtn',\n data() {\n return {\n categoryModel: false,\n tagModel: false,\n tagForm: {\n operating: '',\n typeId: 0,\n id: '',\n name: '',\n remark: '' // 備註\n },\n typeForm:{\n operating: '',\n id: '',\n name: '',\n orgName: ''\n },\n commentsTime: '' // 上課經過時間\n }\n },\n computed: {\n ...mapGetters([\n 'userTags',\n 'userInfo',\n 'channelInfo'\n ])\n },\n created: function() {\n console.log(this.userTags)\n // 顯示時間-計算相差時間\n this.getDateDiff()\n setInterval(() => {\n this.getDateDiff()\n }, 1000)\n },\n methods: {\n // 開啟修改類別標題\n setTypeForm(operating, id, name) {\n this.typeForm.operating = operating\n this.typeForm.id = id\n this.typeForm.name = name\n this.typeForm.orgName = name\n this.categoryModel = true\n },\n // 離開修改標題\n cancelTypeForm() {\n this.typeForm = {\n operating: '',\n id:'',\n name: '',\n orgName: ''\n }\n this.categoryModel = false\n },\n // 儲存標題\n saveTypeName() {\n if(this.$tools.IsEmpty(this.typeForm.name)) {\n this.$Message.warning({ content: this.$t('crtPoint_8'), duration: 5,closable: true })\n } else {\n this.$Spin.show() // 開啟加載畫面\n let _this = this\n if(this.typeForm.operating === 'upd') {\n this.userTags.forEach(item => {\n if(item.typeId === _this.typeForm.id) {\n item.typeName.customize = _this.typeForm.name\n }\n })\n } else {\n if(_this.userTags.length >= 5) {\n this.$Message.warning({ content: this.$t('crtPoint_9'), duration: 5,closable: true })\n } else {\n this.userTags.push({\n typeId: jsFn.getUUID(),\n typeName: {\n customize: _this.typeForm.name,\n cn: null,\n en: null,\n tw: null\n },\n tagList:[]\n })\n }\n }\n this.$store.dispatch('updUserTags').then(() => {\n this.cancelTypeForm()\n this.$Spin.hide() // 關閉加載畫面\n })\n }\n },\n // 刪除類別\n delCatagory() {\n let _this = this\n this.$Modal.confirm({\n title: this.$t('warning'),\n content: '

' + this.$t('warn_text2', {value: this.typeForm.orgName}) + '

',\n okText: this.$t('ok'),\n cancelText: this.$t('cancel'),\n onOk: () => {\n this.$Spin.show() // 開啟加載畫面\n this.userTags.forEach((item, index, array) => {\n if(item.typeId === _this.typeForm.id) {\n array.splice(index, 1)\n }\n })\n if(this.userTags.length === 0) {\n let _this = this\n this.userTags.push({\n typeId: jsFn.getUUID(),\n typeName: {\n customize: _this.$t('myCatagory', {value: 1}),\n cn: null,\n en: null,\n tw: null\n },\n tagList:[\n ]\n })\n }\n console.log(this.userTags, 'this.userTags')\n _this.$store.dispatch('updUserTags').then(() => {\n _this.cancelTypeForm()\n this.$Spin.hide() // 關閉加載畫面\n })\n }\n })\n },\n // 開啟修改標籤\n setTagForm(operating, typeId, id, name, remark) {\n if(!this.$tools.IsEmpty(remark)) {\n remark = remark.customize\n }\n this.tagForm.operating = operating\n this.tagForm.typeId = typeId\n this.tagForm.id = id\n this.tagForm.name = name\n this.tagForm.remark = remark\n this.tagModel = true\n },\n // 儲存標籤\n saveLabel() {\n if(this.$tools.IsEmpty(this.tagForm.name)) {\n this.$Message.warning({ content: this.$t('crtPoint_10'), duration: 5, closable: true })\n } else {\n this.$Spin.show() // 開啟加載畫面\n let _this = this\n if(this.tagForm.operating === 'crt') {\n this.userTags.forEach(item => {\n if(item.typeId === _this.tagForm.typeId) {\n item.tagList.push({\n id: jsFn.getUUID(),\n name: {\n customize: _this.tagForm.name,\n cn: null,\n en: null,\n tw: null\n },\n description: {\n customize: _this.tagForm.remark ? _this.tagForm.remark : '',\n cn: null,\n en: null,\n tw: null\n },\n crtTime: _this.$tools.yyyymmdd('-')\n })\n }\n })\n } else {\n this.userTags.forEach(item => {\n if(item.typeId === _this.tagForm.typeId) {\n item.tagList.forEach(tag => {\n if(tag.id === _this.tagForm.id) {\n tag.name.customize = _this.tagForm.name\n tag.description = {customize : _this.tagForm.remark ? _this.tagForm.remark : ''}\n tag.crtTime = _this.$tools.yyyymmdd('-')\n }\n })\n }\n })\n }\n this.$store.dispatch('updUserTags').then(() => {\n this.quit()\n this.$Spin.hide() // 關閉加載畫面\n })\n }\n },\n // 刪除標籤\n delTag() {\n let _this = this\n this.$Modal.confirm({\n title: this.$t('warning'),\n content: '

' + this.$t('warn_text3') + '

',\n okText: this.$t('ok'),\n cancelText: this.$t('cancel'),\n onOk: () => {\n this.$Spin.show() // 開啟加載畫面\n this.userTags.forEach((item) => {\n if(item.typeId === _this.tagForm.typeId) {\n item.tagList.forEach((tag, index, array) => {\n if(tag.id === _this.tagForm.id) {\n array.splice(index, 1)\n }\n })\n }\n })\n _this.$store.dispatch('updUserTags').then(() => {\n _this.quit()\n this.$Spin.hide() // 關閉加載畫面\n })\n }\n })\n },\n // 離開標籤\n quit() {\n this.tagModel = false\n this.tagForm = {\n operating: '',\n typeId: 0,\n id: '',\n name: '',\n remark: ''\n }\n },\n backPage() {\n this.$router.go(-1)\n },\n getDateDiff: function() {\n if(this.channelInfo.isStrClass && parseInt(this.channelInfo.timestamp)) {\n // var now = new Date().getTime() + this.channelInfo.deltaTime // 增加校正值 (暫時註解矯正值)\n var now = new Date().getTime()\n var mss = now - parseInt(this.channelInfo.timestamp)\n var hours = parseInt((mss % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60))\n var minutes = parseInt((mss % (1000 * 60 * 60)) / (1000 * 60))\n var seconds = parseInt((mss % (1000 * 60)) / 1000)\n hours = hours < 10 ? ('0' + hours) : hours\n minutes = minutes < 10 ? ('0' + minutes) : minutes\n seconds = seconds < 10 ? ('0' + seconds) : seconds < 0 ? 0 : seconds\n this.commentsTime = hours + ':' + minutes + ':' + seconds\n } else {\n this.commentsTime = ''\n }\n }\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./crtPointBtn.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./crtPointBtn.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./crtPointBtn.vue?vue&type=template&id=8fcb6842&scoped=true&\"\nimport script from \"./crtPointBtn.vue?vue&type=script&lang=js&\"\nexport * from \"./crtPointBtn.vue?vue&type=script&lang=js&\"\nimport style0 from \"./crtPointBtn.vue?vue&type=style&index=0&lang=less&\"\nimport style1 from \"./crtPointBtn.vue?vue&type=style&index=1&id=8fcb6842&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8fcb6842\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"commentBtn\",attrs:{\"id\":\"commentBtn\"}},[_c('div',{staticClass:\"sky\"},[_c('div',{staticClass:\"sky-icon\",on:{\"click\":function($event){_vm.drawerflag = true}}},[_c('SokIcon',{staticClass:\"icon\",attrs:{\"type\":\"history\",\"size\":\"18\"}})],1),_c('div',{staticClass:\"sky-middle\"},[_c('div',{staticClass:\"sky-middle-cont ellipsis\"},[(_vm.channelInfo.isStrClass && !_vm.channelInfo.isSokActivity)?_c('span',{staticStyle:{\"color\":\"#07B8FB\",\"font-weight\":\"600\"}},[_vm._v(_vm._s(_vm.$t('notSokMode')))]):[_vm._v(\" \"+_vm._s(!_vm.settingFlag ? _vm.channelInfo.className : _vm.$t('setting'))+\" \")]],2)]),_c('div',{staticClass:\"sky-icon\",on:{\"click\":function($event){return _vm.showSetting()}}},[(!_vm.settingFlag)?_c('SokIcon',{staticClass:\"icon\",attrs:{\"type\":\"setting\",\"size\":\"18\"}}):_c('SokIcon',{staticClass:\"icon\",attrs:{\"type\":\"exit\",\"size\":\"18\"}})],1)]),(!_vm.settingFlag)?_c('div',{staticClass:\"footer\"},[(!_vm.expertPoint.id)?_c('div',{staticClass:\"noPoint\"},[_c('SokIcon',{staticClass:\"attention\",attrs:{\"type\":\"attention\",\"size\":\"20\"},on:{\"on-click\":_vm.restNowTimestamp}}),_vm._v(\" \"+_vm._s(_vm.$t('clickBtn'))+\" \")],1):[_c('div',{staticClass:\"footer-icon flex-grow-2\",class:{inputFocus: _vm.inputFocusFlag}},[(_vm.uploadFile == null)?[_c('label',{attrs:{\"for\":\"film\"}},[_c('SokIcon',{attrs:{\"type\":\"video\",\"size\":\"25\"}})],1),_c('label',[_c('SokIcon',{attrs:{\"type\":\"recorder\",\"size\":\"25\"},on:{\"on-click\":function($event){_vm.recordFlag = true}}})],1),_c('label',{attrs:{\"for\":\"image\"}},[_c('SokIcon',{attrs:{\"type\":\"camera\",\"size\":\"25\"}})],1),_c('input',{staticStyle:{\"display\":\"none\"},attrs:{\"type\":\"file\",\"accept\":\"video/mp4, video/x-m4v, video/*\",\"capture\":\"camcorder\",\"id\":\"film\"},on:{\"change\":_vm.chageFile}}),_c('input',{staticStyle:{\"display\":\"none\"},attrs:{\"type\":\"file\",\"accept\":\"image/png, image/jpeg, image/gif, image/jpg\",\"id\":\"image\"},on:{\"change\":_vm.chageFile}})]:[_c('div',{staticClass:\"fileBorder\",attrs:{\"id\":\"fileBorder\"}},[(_vm.fileType == 'image')?_c('label',[_c('SokIcon',{staticClass:\"file\",attrs:{\"type\":\"imagefile\",\"size\":\"25\"}})],1):(_vm.fileType == 'audio')?_c('label',[_c('SokIcon',{staticClass:\"file\",attrs:{\"type\":\"audiofile\",\"size\":\"25\"}})],1):_c('label',[_c('SokIcon',{staticClass:\"file\",attrs:{\"type\":\"videofile\",\"size\":\"25\"}})],1),_c('label',{on:{\"click\":function($event){return _vm.previewFile(_vm.fileType, _vm.preview)}}},[_c('SokIcon',{staticClass:\"crtBtn\",attrs:{\"type\":\"preview\",\"size\":\"25\"}})],1),_c('label',{on:{\"click\":function($event){return _vm.cancelFile()}}},[_c('SokIcon',{staticClass:\"crtBtn\",attrs:{\"type\":\"trash\",\"size\":\"25\"}})],1)])]],2),_c('div',{staticClass:\"footer-middle\",class:{inputFocus: _vm.inputFocusFlag}},[(_vm.inputFocusFlag)?_c('Icon',{staticStyle:{\"margin\":\"0 10px\"},attrs:{\"size\":\"30\",\"type\":\"ios-arrow-forward\"},on:{\"click\":function($event){_vm.inputFocusFlag=false}}}):_vm._e(),_c('Input',{attrs:{\"type\":\"textarea\",\"autosize\":{minRows: 2,maxRows: 5}},on:{\"on-focus\":function($event){_vm.inputFocusFlag = true},\"on-blur\":function($event){_vm.inputFocusFlag = false}},model:{value:(_vm.expertPoint.desc),callback:function ($$v) {_vm.$set(_vm.expertPoint, \"desc\", $$v)},expression:\"expertPoint.desc\"}})],1),_c('div',{staticClass:\"footer-icon\",class:{disabled: !_vm.channelInfo.isSokActivity}},[_c('SokIcon',{staticClass:\"sending\",attrs:{\"type\":\"sending\",\"size\":\"25\"},on:{\"on-click\":function($event){return _vm.sendPoint()}}})],1)]],2):_vm._e(),(!_vm.settingFlag)?_c('div',{staticClass:\"box\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.channelInfo.isDevTimeAbnormal || _vm.isDevTimeAbnormal),expression:\"channelInfo.isDevTimeAbnormal || isDevTimeAbnormal\"}],staticClass:\"statusBox\"},[_c('span',{staticClass:\"cont\"},[_vm._v(_vm._s(_vm.$t('devTimeDialog')))]),_c('SokIcon',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.channelInfo.isDevTimeAbnormal),expression:\"!channelInfo.isDevTimeAbnormal\"}],staticClass:\"icon\",attrs:{\"type\":\"exit\",\"size\":\"13\"},on:{\"on-click\":function($event){_vm.isDevTimeAbnormal = false}}})],1),(_vm.teachTypeNum == 17 && _vm.showInfo1)?_c('div',{staticClass:\"statusBox info\"},[_c('a',{staticClass:\"cont\",attrs:{\"target\":\"_blank\",\"href\":_vm.info1Link[_vm.lang]}},[_vm._v(\" \"+_vm._s(_vm.$t('advertiseInfo1'))+\" \"),_c('Icon',{attrs:{\"color\":\"#ffffff\",\"type\":\"md-arrow-forward\"}})],1),_c('SokIcon',{staticClass:\"icon\",attrs:{\"type\":\"exit\",\"size\":\"13\"},on:{\"on-click\":function($event){_vm.showInfo1 = false}}})],1):_vm._e(),_c('div',{staticClass:\"selectBox\"},[_vm._v(\" \"+_vm._s(_vm.commentsTime)+_vm._s(_vm.$te(_vm.teachType[_vm.teachTypeNum]) ? ' - ' + _vm.$t(_vm.teachType[_vm.teachTypeNum]) + '...' : '')+\" \")]),(_vm.channelInfo.isStrClass != null && _vm.commentBtnSetting.detail.length > 0)?_c('div',{staticClass:\"point\"},[_c('div',{staticClass:\"accordion\"},[_c('div',{staticClass:\"pane\"},[_c('div',{staticClass:\"pane-title\"},[_vm._v(\" \"+_vm._s(_vm.commentBtnSetting.table.typeName.customize ? _vm.commentBtnSetting.table.typeName.customize : _vm.commentBtnSetting.table.typeName[_vm.langFormat])+\" \"),_c('Button',{staticClass:\"chgBtn\",attrs:{\"type\":\"text\"},on:{\"click\":function($event){_vm.chgTableFlag=true}}},[_vm._v(_vm._s(_vm.$t('changeTable')))])],1),_c('div',{staticClass:\"pane-cont scrollstyle\"},_vm._l((_vm.commentBtnSetting.table.tagList),function(tags,key){return _c('div',{key:key,staticClass:\"cont-box\",class:{'select': _vm.expertPoint.id == tags.id},on:{\"click\":function($event){return _vm.setPointBtn(_vm.commentBtnSetting.table.typeId, _vm.commentBtnSetting.table.typeName, tags.id, tags.name, _vm.commentBtnSetting.detailType)}}},[_c('div',{staticClass:\"box-title\"},[_vm._v(_vm._s(tags.name.customize ? tags.name.customize : tags.name[_vm.langFormat]))]),_c('div',{staticClass:\"box-subTitle scrollstyle\"},[_vm._v(_vm._s(tags.description ? tags.description.customize ? tags.description.customize : tags.description[_vm.langFormat] : ''))]),_c('div',{staticClass:\"box-pointTime\"},[_c('span',[_vm._v(_vm._s(_vm.strClassElapsedMin(_vm.channelInfo.timestamp, _vm.nowTimestamp)))])]),_c('SokIcon',{staticClass:\"box-reset\",attrs:{\"type\":\"reset\",\"size\":\"20\"},on:{\"on-click\":_vm.restNowTimestamp}}),_c('div',{staticClass:\"box-triangle\"})],1)}),0)])])]):_c('div',{staticClass:\"point\",staticStyle:{\"display\":\"flex\",\"justify-content\":\"center\",\"align-items\":\"center\",\"font-size\":\"25px\",\"font-weight\":\"700\",\"flex-direction\":\"column\"}},[_c('div',{staticStyle:{\"font-size\":\"30px\",\"border-bottom\":\"2px solid #515a6e\"}},[_vm._v(_vm._s(_vm.userInfo.name))]),_c('hr'),_c('div',{staticStyle:{\"width\":\"300px\",\"max-width\":\"100%\",\"padding\":\"10px\",\"font-size\":\"17px\",\"margin-bottom\":\"150px\"},domProps:{\"innerHTML\":_vm._s(_vm.$t('weitStarClass')+'...')}})])]):_c('div',{staticClass:\"setting\"},[_c('div',{staticClass:\"marginTop personInfo\"},[_c('div',{staticClass:\"info\"},[_c('div',[_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t('groupNum')))]),_c('div',{staticClass:\"cont \"},[_vm._v(_vm._s(_vm.channelInfo.channel))])]),_c('div',[_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t('TOPIC')))]),_c('div',{staticClass:\"cont\"},[_vm._v(_vm._s(_vm.channelInfo.className))])]),_c('div',{staticClass:\"remark\"},[_vm._v(_vm._s(_vm.$t('settingRemark')))])]),_c('div',{staticClass:\"qrcode\"},[_c('img',{attrs:{\"src\":_vm.qrcode_url}})])]),_c('div',{staticClass:\"marginTop\"},[_c('div',{staticClass:\"block\"},[_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t('name')))]),_c('span',{staticClass:\"cont \"},[_vm._v(_vm._s(_vm.userInfo.name))])]),_c('div',{staticClass:\"block\"},[_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t('teamModelID')))]),_c('span',{staticClass:\"cont\"},[_vm._v(_vm._s(_vm.userInfo.expertType == 'Guest' ? _vm.$t('guest') : _vm.userInfo.id))])])]),_c('div',{staticClass:\"marginTop\"},[_c('div',{staticClass:\"block\"},[_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t('groupNum')))]),_c('span',{staticClass:\"cont\"},[_vm._v(_vm._s(_vm.channelInfo.channel))])]),_c('div',{staticClass:\"block\"},[_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t('PIN')))]),_c('span',{staticClass:\"cont \"},[_vm._v(_vm._s(_vm.channelInfo.pin))])]),_c('div',{staticClass:\"block\"},[_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t('TOPIC')))]),_c('span',{staticClass:\"cont \"},[_vm._v(_vm._s(_vm.channelInfo.className))])]),_c('div',{staticClass:\"block\"},[_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t('classTeacher')))]),_c('span',{staticClass:\"cont \"},[_vm._v(_vm._s(_vm.channelInfo.classTeacher))])])]),_c('Dropdown',{staticStyle:{\"width\":\"100%\"},attrs:{\"trigger\":\"click\",\"placement\":\"bottom-end\",\"transfer\":true,\"transfer-class-name\":\"menuSty\"},on:{\"on-click\":_vm.setLang}},[_c('div',{staticClass:\"block marginTop\"},[_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t('lang'))+\" / \"+_vm._s(_vm._f(\"uppercase\")(_vm.langFormat)))]),_c('span',{staticClass:\"cont lang\"},[_vm._v(_vm._s(_vm.$t('chgLang')))])]),_c('DropdownMenu',{attrs:{\"slot\":\"list\"},slot:\"list\"},_vm._l((_vm.langSet),function(item){return _c('DropdownItem',{key:item,attrs:{\"name\":item}},[_vm._v(_vm._s(_vm.$t('lang-' + item)))])}),1)],1),_c('div',{staticClass:\"block marginTop\"},[_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t('version')))]),_c('span',{staticClass:\"cont\"},[_vm._v(_vm._s(_vm.version))])]),_c('div',{staticClass:\"btnGroup\",staticStyle:{\"display\":\"flex\",\"margin-top\":\"10px\",\"justify-content\":\"space-around\"}},[(_vm.userInfo.expertType !== 'Guest')?_c('Button',{staticClass:\"sok-btn btnGroup-btn\",attrs:{\"to\":\"/crtpointbtn\"}},[_vm._v(_vm._s(_vm.$t('LabelManagement')))]):_vm._e(),_c('Button',{staticClass:\"sok-btn btnGroup-btn\",class:{'noMargin': _vm.userInfo.expertType == 'Guest'},on:{\"click\":function($event){return _vm.chgGroup()}}},[_vm._v(_vm._s(_vm.$t('changeClass')))])],1)],1),_c('div',{staticClass:\"record\",class:{show: _vm.recordFlag}},[_c('div',{staticClass:\"recBox\"},[_c('div',{staticClass:\"graph\",class:{star: _vm.starRec},style:({width: _vm.duration})}),_vm._v(\" \"),_c('SokIcon',{staticClass:\"quit\",attrs:{\"type\":\"exit\",\"size\":\"18\"},on:{\"on-click\":_vm.closeRecord}}),_vm._v(\" \"),_c('div',{staticClass:\"recCtrl\"},[(_vm.corvering)?_c('Spin',{attrs:{\"fix\":\"\"}}):_vm._e(),(!_vm.isRecing)?_c('img',{staticClass:\"recCtrl-icon\",attrs:{\"src\":require(\"@/img/svg/white/recording.svg\")},on:{\"click\":_vm.recStar}}):[_c('img',{staticClass:\"recCtrl-icon\",attrs:{\"src\":require(\"@/img/svg/white/recstop.svg\")},on:{\"click\":_vm.stop}}),_c('span',[_vm._v(_vm._s(_vm.recStarTime))])]],2)],1)]),_c('Drawer',{staticClass:\"drawerBox\",attrs:{\"class-name\":\"drawerClass\",\"width\":\"90%\",\"title\":_vm.$t('history'),\"scrollable\":true,\"placement\":\"left\",\"closable\":true,\"inner\":true,\"transfer\":false},on:{\"on-visible-change\":_vm.restDrawer},model:{value:(_vm.drawerflag),callback:function ($$v) {_vm.drawerflag=$$v},expression:\"drawerflag\"}},[_c('div',{staticStyle:{\"display\":\"flex\",\"align-items\":\"center\",\"padding-top\":\"16px\"},attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('p',[_vm._v(_vm._s(_vm.$t('history')))]),(_vm.copyText)?_c('Button',{staticClass:\"sok-btn recordList\",staticStyle:{\"font-size\":\"12px\",\"height\":\"25px\",\"box-shadow\":\"none\"},attrs:{\"data-clipboard-text\":_vm.copyText}},[_vm._v(_vm._s(_vm.$t('copyText')))]):_vm._e()],1),_vm._l((_vm.historys),function(item,key){return _c('div',{key:key,staticClass:\"pane\",class:{select: _vm.drawerPaneId === key}},[_c('div',{staticClass:\"pane-title\",on:{\"click\":function($event){return _vm.selDrawerPane(key)}}},[_vm._v(\" \"+_vm._s(_vm.converTime(item.obsStart))+\" \"),_c('Icon',{attrs:{\"size\":\"20\",\"type\":\"ios-arrow-down\"}})],1),_c('div',{staticClass:\"pane-cont\"},_vm._l((item.points),function(point,pkey){return _c('div',{key:pkey,staticClass:\"pointMsg\"},[_c('div',{staticClass:\"msg\"},[_c('div',{staticClass:\"msg-time\"},[_vm._v(\" \"+_vm._s(_vm.$tools.getDateDiffByTimestamp(item.obsStart, point.timestamp))+\" \")]),_c('div',{staticClass:\"msg-title\"},[_vm._v(\" \"+_vm._s(point.tagName.customize ? point.tagName.customize : point.tagName[_vm.langFormat])+\" \"),(point.fileUrl)?_c('img',{attrs:{\"src\":require(\"@/img/svg/white/accessory.svg\")}}):_vm._e()]),_c('div',{staticClass:\"msg-msg\"},[_vm._v(_vm._s(point.desc))]),(point.fileType == 'image')?_c('img',{staticClass:\"msg-preview\",attrs:{\"src\":require(\"@/img/logo/white/image.png\")},on:{\"click\":function($event){return _vm.previewFile(point.fileType, point.fileUrl)}}}):(point.fileType == 'audio')?_c('img',{staticClass:\"msg-preview\",attrs:{\"src\":require(\"@/img/logo/white/audio.png\")},on:{\"click\":function($event){return _vm.previewFile(point.fileType, point.fileUrl)}}}):(point.fileType == 'video')?_c('img',{staticClass:\"msg-preview\",attrs:{\"src\":require(\"@/img/logo/white/video.png\")},on:{\"click\":function($event){return _vm.previewFile(point.fileType, point.fileUrl)}}}):_vm._e()]),_c('div',{staticClass:\"tool\"},[(_vm.channelInfo.isStrClass && _vm.channelInfo.timestamp === item.obsStart)?[_c('SokIcon',{staticClass:\"crtBtn\",attrs:{\"type\":\"trash\",\"size\":\"16\"},on:{\"on-click\":function($event){return _vm.setEditHistoryForm('del', _vm.userInfo.id, point.timestamp, key, pkey)}}}),_c('SokIcon',{staticClass:\"crtBtn\",attrs:{\"type\":\"edit\",\"size\":\"16\"},on:{\"on-click\":function($event){return _vm.setEditHistoryForm('upd', _vm.userInfo.id, point.timestamp, key, pkey, point.desc)}}})]:_vm._e()],2)])}),0)])})],2),_c('Drawer',{attrs:{\"class-name\":\"chgTable\",\"placement\":\"bottom\",\"height\":\"49%\",\"closable\":false,\"inner\":true,\"transfer\":false,\"scrollable\":true},model:{value:(_vm.chgTableFlag),callback:function ($$v) {_vm.chgTableFlag=$$v},expression:\"chgTableFlag\"}},[_c('Tabs',{staticClass:\"chgBox\",attrs:{\"value\":_vm.commentBtnSetting.detailType,\"animated\":false},on:{\"on-click\":_vm.setDetail}},[(_vm.tmdTags.length > 0)?_c('TabPane',{attrs:{\"index\":1,\"label\":_vm.$t('basicLabel'),\"name\":\"tmd\"}},_vm._l((_vm.sortCommentBtnSettingDetail),function(item,key){return _c('div',{key:key,staticClass:\"detail-title\",class:{'select': _vm.commentBtnSetting.pointsByTypeId === item.typeId},on:{\"click\":function($event){return _vm.checkPoint(item.typeId, 'tmd')}}},[_vm._v(_vm._s(item.typeName.customize ? item.typeName.customize : item.typeName[_vm.langFormat])),_c('SokIcon',{staticClass:\"check\",attrs:{\"type\":\"check\",\"size\":\"15\"}})],1)}),0):_vm._e(),(_vm.schoolTags.length > 0)?_c('TabPane',{attrs:{\"index\":2,\"label\":_vm.$t('channelLabel'),\"name\":\"school\"}},_vm._l((_vm.sortCommentBtnSettingDetail),function(item,key){return _c('div',{key:key,staticClass:\"detail-title\",class:{'select': _vm.commentBtnSetting.pointsByTypeId === item.typeId},on:{\"click\":function($event){return _vm.checkPoint(item.typeId, 'school')}}},[_vm._v(_vm._s(item.typeName.customize ? item.typeName.customize : item.typeName[_vm.langFormat])),_c('SokIcon',{staticClass:\"check\",attrs:{\"type\":\"check\",\"size\":\"15\"}})],1)}),0):_vm._e(),(_vm.userInfo.expertType !== 'Guest' && _vm.userTags.length > 0)?_c('TabPane',{attrs:{\"index\":3,\"label\":_vm.$t('myLabel'),\"name\":\"person\"}},[_vm._l((_vm.sortCommentBtnSettingDetail),function(item,key){return _c('div',{key:key,staticClass:\"detail-title\",class:{'select': _vm.commentBtnSetting.pointsByTypeId === item.typeId},on:{\"click\":function($event){return _vm.checkPoint(item.typeId, 'person')}}},[_vm._v(_vm._s(item.typeName.customize ? item.typeName.customize : item.typeName[_vm.langFormat])),_c('SokIcon',{staticClass:\"check\",attrs:{\"type\":\"check\",\"size\":\"15\"}})],1)}),_c('div',{staticClass:\"detail-title editTags\",on:{\"click\":function($event){return _vm.toCustomTags()}}},[_c('SokIcon',{staticClass:\"edit\",attrs:{\"type\":\"edit\",\"size\":\"15\"}}),_vm._v(\" \"+_vm._s(_vm.$t('editCustomTags'))+\" \")],1)],2):_vm._e()],1)],1),_c('Modal',{attrs:{\"closable\":false,\"footer-hide\":true,\"width\":\"320\",\"class-name\":\"previewMoal\"},model:{value:(_vm.previewModal.flag),callback:function ($$v) {_vm.$set(_vm.previewModal, \"flag\", $$v)},expression:\"previewModal.flag\"}},[_c('div',{staticStyle:{\"text-align\":\"center\"}},[(_vm.previewModal.type == 'image')?_c('img',{staticStyle:{\"width\":\"100%\",\"max-width\":\"300px\"},attrs:{\"src\":_vm.previewModal.url}}):(_vm.previewModal.type == 'audio')?_c('audio',{staticStyle:{\"width\":\"100%\",\"max-width\":\"300px\"},attrs:{\"src\":_vm.previewModal.url,\"controls\":\"\"}}):_c('video',{staticStyle:{\"width\":\"100%\",\"max-width\":\"300px\"},attrs:{\"src\":_vm.previewModal.url,\"controls\":\"controls\"}})])]),_c('Modal',{attrs:{\"mask-closable\":false,\"width\":\"300\"},model:{value:(_vm.historyEditFlag),callback:function ($$v) {_vm.historyEditFlag=$$v},expression:\"historyEditFlag\"}},[_c('p',{staticStyle:{\"text-align\":\"center\"},attrs:{\"slot\":\"header\"},slot:\"header\"},[_vm._v(\" \"+_vm._s(_vm.editHistoryForm.type === 'upd' ? _vm.$t('historyEditTitle1') : _vm.$t('historyEditTitle2'))+\" \")]),_c('div',{staticStyle:{\"text-align\":\"center\"}},[(_vm.editHistoryForm.type === 'upd')?[_c('Input',{attrs:{\"type\":\"textarea\",\"autosize\":{minRows: 3,maxRows: 5}},model:{value:(_vm.editHistoryForm.desc),callback:function ($$v) {_vm.$set(_vm.editHistoryForm, \"desc\", $$v)},expression:\"editHistoryForm.desc\"}})]:[_vm._v(\" \"+_vm._s(_vm.$t('historyEditCont'))+\" \")]],2),_c('div',{staticStyle:{\"display\":\"flex\"},attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('Button',{staticClass:\"sok-btn\",attrs:{\"long\":\"\"},on:{\"click\":function($event){return _vm.editHistorys()}}},[_vm._v(_vm._s(_vm.$t('ok')))]),_c('Button',{staticClass:\"sok-btn\",attrs:{\"long\":\"\"},on:{\"click\":function($event){_vm.historyEditFlag=false}}},[_vm._v(_vm._s(_vm.$t('cancel')))])],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport { mapActions, mapGetters } from 'vuex'\nimport { BlobServiceClient } from'@azure/storage-blob'\nimport QRCode from 'qrcode'\nimport Recorder from 'js-audio-recorder'\nimport ClipboardJS from 'clipboard'\nimport { jsFn } from '@/utils/jsFn'\nimport EXIF from 'exif-js'\nimport { Base64 } from 'js-base64'\n\nexport default {\n name: 'commentBtn',\n data() {\n return {\n previewModal: { // 歷史訊息預覽畫面\n flag: false,\n type: '',\n url:''\n },\n isPlay: false, // 播放中\n starRec: false, // 開始錄音\n preview: '', // 打點檔案預覽\n recTemp: null, // 錄音檔完成暫存檔案\n recorder: null, // 錄音物件喧染\n duration: 0, // 錄音進度條\n fileType: '', // 檔案類型 audio, image, video\n uploadFile: null, // 要上傳的檔案\n isRecing: false, // 開始錄音與否\n recordFlag: false, // 錄音介面開關\n maxSec: 60, // 上限秒數\n recStarTime: '00:00', // 錄音開始秒數\n recEndTime: '00:00', // 錄音結束秒數\n paneId: '', // 現在被開啟的標籤pane\n drawerPaneId: '', // 現在被開啟的抽屜pane\n nowTimestamp:'', // 現在的打點時間\n qrcode_url: '', // qrcode URL\n langSet: [], // 語系\n groupPeoples: 0, // 現在加入教室的人\n settingFlag: false, // 開啟設定資訊\n drawerflag: false, // 抽屜Flag\n chgTableFlag: false, // 更換Table Flag\n commentsTime: '00:00:00', // 開課時間\n contentTypes: { // 上傳檔案類型\n 'image/jpeg': '.jpeg',\n 'image/png': '.png',\n 'video/mp4': '.mp4',\n 'video/3gpp': '.3gp',\n 'video/x-msvideo': '.avi',\n 'audio/wav': '.wav',\n 'video/quicktime': '.mov'\n },\n expertPoint: { // 打點資訊\n type: '',\n typeName: '',\n id: '',\n tagName: '',\n desc: '',\n tableType: '' // 標籤性質: 個人:person, 學校: school, 醍摩豆: tmd\n },\n teachType: [\n 'mode_ready', // 0\n 'mode_quiz_single', // 1\n 'mode_quiz_multiple', // 2\n 'mode_quiz_judge', // 3\n 'mode_quiz_complete', // 4\n 'mode_quiz_subjective', // 5\n 'mode_quiz_compose', // 6\n 'mode_competition_single', // 7\n 'mode_competition_multiple', // 8\n 'mode_competition_judge', // 9\n 'mode_competition_complete', // 10\n 'mode_competition_subjective', // 11\n 'mode_selfpace_start', // 12\n 'mode_selfpace_end', // 13\n 'mode_attend', // 14\n 'mode_collate', // 15\n 'mode_buzzin', // 16\n 'mode_close' // 17\n ],\n pageID: '', // Hiteach page id\n corvering: false, // mp3 轉型中\n historyEditFlag: false, // 歷史紀錄Modal\n editHistoryForm:{\n type: '', // 修改類型 upd, del\n userId: '', // 使用者id\n timestamp: '', // 打點時間\n hIndex: '', // hIndex\n pIndex: '', // pIndex\n desc: '' // 修改打點內容\n },\n minutesTemp: '00:00:00', // 經過時間的暫存\n inputFocusFlag: false, // 隱藏按鈕與否\n publicTimer: null, // 通用議課Timer\n publicState: '', // 通用議課狀態\n isDevTimeAbnormal: false, // 裝置時間是否與伺服器時間有差距10分鐘以上\n showInfo1: false,\n info1Link: {\n 'zh-tw': 'https://www.habook.com/zh-tw/product.php?act=view&id=32',\n 'zh-cn': 'https://www.habook.com.cn/cloud.php?act=view&id=23',\n 'en-us': 'https://www.habook.com/en/product.php?act=view&id=32'\n }\n }\n },\n computed: {\n ...mapGetters([\n 'userTags',\n 'historys',\n 'copyText',\n 'channelInfo',\n 'channelLink',\n 'userInfo',\n 'lang',\n 'commentBtnSetting',\n 'version',\n 'teachTypeNum',\n 'tmdTags',\n 'schoolTags',\n 'baseFileUrl',\n 'isSignalLink',\n 'commentsData'\n ]),\n langFormat: function() {\n let res\n switch (this.lang) {\n case 'zh-tw':\n res = 'tw'\n break\n case 'zh-cn':\n res = 'cn'\n break\n case 'en-us':\n res = 'en'\n break\n }\n return res\n },\n isObsStartSame: function() {\n return this.historys.length > 0 && this.historys[0].obsStart === this.channelInfo.timestamp\n },\n sortCommentBtnSettingDetail: function() {\n let data = this.commentBtnSetting.detail\n data.sort(\n function(a,b) {\n return a.order - b.order\n }\n )\n return data\n }\n },\n watch: {\n 'channelInfo.isStrClass': function(val, old) {\n if(this.isSignalLink && val !== null && !val) { // 下課\n if(!jsFn.IsEmpty(this.expertPoint.id)) {\n this.$Message.warning({\n content: this.$t('warn_text5'),\n duration: 15,\n closable: true\n })\n } else {\n this.drawerflag = true\n this.showInfo1 = true\n }\n }\n\n if(!old && val) { // 重新上課\n // 清空打點\n this.expertPoint.type = ''\n this.expertPoint.typeName = ''\n this.expertPoint.id = ''\n this.expertPoint.tagName = ''\n this.expertPoint.desc = ''\n this.expertPoint.tableType = ''\n this.nowTimestamp = ''\n this.fileType = ''\n this.uploadFile = null\n }\n }\n },\n filters: {\n uppercase: function(val) {\n return val.toUpperCase()\n },\n convertHHMMSS(val) {\n return val ? new Date(parseInt(val)).toLocaleTimeString('it-IT', {hour: '2-digit', minute: '2-digit', second: '2-digit'}) : ''\n }\n },\n methods: {\n ...mapActions(['setPageLang', 'logOut']),\n strClassElapsedMin: function(strClasstime, timestamp) {\n if(this.channelInfo.isStrClass && timestamp > strClasstime) {\n this.minutesTemp = jsFn.getDateDiffByTimestamp(strClasstime, timestamp)\n }\n return this.minutesTemp\n },\n classPassedTime: function() {\n if(this.channelInfo.isStrClass) {\n let strTime = parseInt(this.channelInfo.timestamp)\n // let endTime = new Date().getTime() + this.channelInfo.deltaTime // 增加校正值(暫時註解矯正值)\n let endTime = new Date().getTime()\n this.commentsTime = jsFn.getDateDiffByTimestamp(strTime, endTime)\n } else {\n this.commentsTime = '00:00:00'\n }\n },\n converTime: function(timestamp) {\n return jsFn.converDrawerTime(timestamp)\n },\n uploadToBlob: function(file, fileName, fileType = '') {\n return new Promise((resolve, reject) => {\n let blobAuth = this.channelInfo.blobConfig.hostBlobUrl + '?' + this.channelInfo.blobConfig.blobSAS_write\n let saveAddres = this.baseFileUrl + fileName\n const blobServiceClient = new BlobServiceClient(blobAuth)\n const containerClient = blobServiceClient.getContainerClient('')\n let blockBlobClient = containerClient.getBlockBlobClient(saveAddres)\n fileType = fileType !== '' ? fileType : file.type\n blockBlobClient.uploadBrowserData(file, {\n blobHTTPHeaders: { blobContentType: fileType }\n // onProgress: function (e) {\n // console.log(e, '123') // 可以用來跑上傳百分比\n // }\n }).then(\n () => {\n resolve({error:0})\n },\n () => {\n reject(new Error({error: 1}))\n }\n )\n })\n },\n sendPoint: async function() {\n if(!this.channelInfo.isSokActivity) {\n this.$Message.info({\n content: this.$t('modelRoot_4'),\n duration: 3,\n closable: true\n })\n } else {\n let _this = this\n this.$Spin.show() // 開啟加載畫面\n\n let sendData = {\n timestamp: this.nowTimestamp, // 打點時間\n id: this.userInfo.id, // 使用者ID\n name: this.userInfo.name, // 使用者Name\n expertType: this.userInfo.expertType, // 使用者身份 Guest: 訪客, Teacher: 老師\n desc: this.expertPoint.desc.trim(), // 講解資訊\n tableType: this.expertPoint.tableType, // 標籤來源\n expPointType: this.expertPoint.type, // 標籤Type\n expPointTypeName: this.expertPoint.typeName, // 標籤Type name {}\n expPointTypeId: this.expertPoint.id, // 標籤id\n tagName: this.expertPoint.tagName, // 標籤Name 是一個{}\n time: (this.nowTimestamp - this.channelInfo.timestamp) / 1000, // 相隔時間\n imageList: null, // 圖片上傳\n videoList: null, // 影片上傳\n recList: null, // 錄音上傳\n pageID: this.pageID // 頁面ID\n }\n\n let _fileUrl = this.baseFileUrl\n if(this.uploadFile != null) {\n let fileName = Date.now()\n switch (this.fileType) {\n case 'image':\n // 如果是圖片要再壓縮一張 100 X 100的縮圖\n let orgFile\n let preFile\n let imgData = {}\n let successCount = 0\n // 原圖\n await this.createImage(this.uploadFile, false).then(e => {\n orgFile = _this.dataURLtoFile(e, fileName)\n })\n let orgFileName = fileName + '.jpeg'\n await this.uploadToBlob(orgFile, orgFileName, 'image/jpeg').then(res => {\n if(res.error === 0) {\n imgData.ImgSrc = orgFileName\n successCount++\n } else {\n console.log('orgFile 上傳失敗')\n }\n })\n // 縮圖\n await this.createImage(this.uploadFile, true).then(e => {\n preFile = _this.dataURLtoFile(e, fileName)\n })\n let preFileName = fileName + '_pre' + '.jpeg'\n await this.uploadToBlob(preFile, preFileName, 'image/jpeg').then(res => {\n if(res.error === 0) {\n imgData.ImgPre = preFileName\n successCount++\n } else {\n console.log('preFile 上傳失敗')\n }\n })\n if(successCount === 2) {\n _fileUrl += orgFileName\n sendData.imageList = [imgData]\n }\n break\n case 'video':\n fileName = fileName + '.mp4'\n await this.uploadToBlob(this.uploadFile, fileName, 'video/mp4').then(res => {\n if(res.error === 0) {\n _fileUrl += fileName\n sendData.videoList = [{'video':fileName}]\n } else {\n console.log('video 上傳失敗')\n }\n })\n break\n case 'audio':\n fileName = fileName + '.mp3'\n await this.uploadToBlob(this.uploadFile, fileName).then(res => {\n if(res.error === 0) {\n _fileUrl += fileName\n sendData.recList = [{'rec':fileName}]\n } else {\n console.log('audio 上傳失敗')\n }\n })\n break\n }\n }\n\n if(this.commentsData.bindingNum === this.channelInfo.blobConfig.bindingNum && this.commentsData.userId === this.userInfo.id) {\n this.commentsData.data.push(sendData)\n } else {\n this.commentsData.bindingNum = this.channelInfo.blobConfig.bindingNum\n this.commentsData.userId = this.userInfo.id\n this.commentsData.data = [\n sendData\n ]\n }\n\n this.$store.dispatch('setCommentsData',this.commentsData) // 設定打點紀錄\n\n let fileName = 'comments.json'\n var blob = new Blob([JSON.stringify(this.commentsData.data)],{type:'application/json,charset=utf-8;'})\n blob.lastModifiedDate = new Date()\n blob.name = fileName\n await this.uploadToBlob(blob, fileName).then(res => {\n this.$Message.info({\n content: this.$t('sendSucces'),\n duration: 3,\n closable: true\n })\n // 觀議課紀錄\n let isExistIndex = ''\n this.historys.forEach((item, index) => {\n if(parseInt(item.obsStart) === parseInt(_this.channelInfo.timestamp)) {\n isExistIndex = index\n }\n })\n\n if(isExistIndex !== '') {\n this.historys[isExistIndex].points.unshift({\n id: _this.expertPoint.id,\n tagName: _this.expertPoint.tagName,\n desc: _this.expertPoint.desc,\n timestamp: _this.nowTimestamp,\n fileUrl: _this.fileType ? _this.channelInfo.blobConfig.hostBlobUrl + '/' + _fileUrl + '?' + _this.channelInfo.blobConfig.blobSAS_read : '',\n fileType: _this.fileType\n })\n } else {\n this.historys.unshift({\n obsStart: _this.channelInfo.timestamp,\n topic: _this.channelInfo.className,\n classTName: _this.channelInfo.classTeacher,\n pointer: _this.userInfo.name,\n // joinPpo: _this.groupPeoples,\n points:[\n {\n id: _this.expertPoint.id,\n tagName: _this.expertPoint.tagName,\n desc: _this.expertPoint.desc,\n timestamp: _this.nowTimestamp,\n fileUrl: _this.fileType ? _this.channelInfo.blobConfig.hostBlobUrl + '/' + _fileUrl + '?' + _this.channelInfo.blobConfig.blobSAS_read : '',\n fileType: _this.fileType\n }\n ]\n })\n }\n\n this.$store.dispatch('setHistorys', this.historys) // 設定打點紀錄\n\n this.expertPoint.type = ''\n this.expertPoint.typeName = ''\n this.expertPoint.id = ''\n this.expertPoint.tagName = ''\n this.expertPoint.desc = ''\n this.expertPoint.tableType = ''\n this.nowTimestamp = ''\n this.fileType = ''\n this.uploadFile = null\n }).catch(err => {\n console.log(err)\n })\n this.$Spin.hide() // 關閉加載畫面\n }\n },\n showSetting: function() {\n this.settingFlag = !this.settingFlag\n },\n setLang: function(val) {\n this.$i18n.locale = val\n this.setPageLang(val)\n },\n chgGroup: function() {\n // 如果是通用議課則跳出以下資訊並停掉Timer\n if(!this.$tools.IsEmpty(this.publicTimer)) {\n clearInterval(this.publicTimer)\n }\n // 刪除教室資訊\n this.$store.dispatch('leaveChannel').then(() => {\n this.$router.push({path: '/login'})\n })\n },\n crtQRCode: function(text) {\n var generateQR = QRCode.toDataURL(text, { margin: 0 })\n return generateQR\n },\n selDrawerPane: function(index) {\n if(index === this.drawerPaneId) {\n this.drawerPaneId = ''\n } else {\n this.drawerPaneId = index\n }\n },\n setPointBtn: function(type, typeName, id, tagName, tableType) {\n this.expertPoint.type = type\n this.expertPoint.typeName = typeName\n this.expertPoint.id = id\n this.expertPoint.tagName = tagName\n this.expertPoint.tableType = tableType\n if(jsFn.IsEmpty(this.nowTimestamp)) {\n // this.nowTimestamp = (new Date().getTime() + this.channelInfo.deltaTime) // 暫時註解矯正值\n this.nowTimestamp = new Date().getTime()\n }\n },\n restNowTimestamp: function() {\n // if(this.channelInfo.isStrClass) this.nowTimestamp = (new Date().getTime() + this.channelInfo.deltaTime) // 暫時註解矯正值\n if(this.channelInfo.isStrClass) this.nowTimestamp = new Date().getTime()\n },\n chageFile: function(e) {\n this.uploadFile = e.target.files[0]\n this.preview = window.URL.createObjectURL(this.uploadFile) // 預覽功能\n if(this.uploadFile.type === 'image/jpeg' || this.uploadFile.type === 'image/png') {\n this.fileType = 'image'\n } else if (this.uploadFile.type === 'audio/mp3') {\n this.fileType = 'audio'\n } else {\n this.fileType = 'video'\n let size = parseFloat(this.uploadFile.size / 1000000).toFixed(1)\n if(size > 10) {\n this.cancelFile()\n this.$Message.info({\n content: this.$t('err08'),\n duration: 3,\n closable: true\n })\n }\n }\n window.URL.revokeObjectURL(this.uploadFile) // 預覽功能\n },\n recStar: function() {\n this.starRec = true\n let _this = this\n if(this.recorder == null) {\n Recorder.getPermission().then(() => {\n console.log('給權限了')\n }, () => {\n _this.$Modal.warning({\n title: _this.$t('warning'),\n content: '

' + _this.$t('warn_text4') + '

'\n })\n })\n this.recorder = new Recorder({\n sampleBits: 16, // 采样位数,支持 8 或 16,默认是16\n sampleRate: 44100, // 采样率,支持 11025、16000、22050、24000、44100、48000,根据浏览器默认值,我的chrome是48000\n numChannels: 1 // 声道,支持 1 或 2, 默认是1\n })\n }\n this.recorder.start().then(() => {\n // 开始录音\n _this.isRecing = true\n }, (error) => {\n // 出错了\n console.log(`${error.name} : ${error.message}`)\n })\n\n this.recorder.onprogress = function(params) {\n let nowSec = Math.floor(params.duration)\n if(_this.maxSec >= nowSec) {\n let tmp = _this.maxSec - nowSec\n _this.recStarTime = '00:' + (tmp < 10 ? ('0' + tmp) : tmp < 0 ? 0 : tmp)\n _this.recEndTime = '00:' + (nowSec < 10 ? ('0' + nowSec) : nowSec < 0 ? 0 : nowSec)\n _this.duration = (Math.round(nowSec / _this.maxSec * 10000) / 100.00) + '%'\n } else {\n _this.stop()\n }\n }\n this.recorder.onplayend = function() {\n _this.isPlay = false\n }\n },\n stop: function() {\n let _this = this\n this.corvering = true\n let temp = this.recorder.getChannelData()\n setTimeout(function() {\n jsFn.convertToMp3(temp).then(res => {\n _this.uploadFile = res\n _this.preview = window.URL.createObjectURL(_this.uploadFile) // 預覽功能\n window.URL.revokeObjectURL(_this.uploadFile) // 預覽功能\n _this.fileType = 'audio'\n _this.closeRecord()\n })\n }, 1000)\n },\n saveRec: function() {\n jsFn.convertToMp3(this.recorder.getChannelData(this.recTemp)).then(res => {\n this.uploadFile = res\n // this.preview = window.URL.createObjectURL(this.uploadFile) // 預覽功能\n // window.URL.revokeObjectURL(this.uploadFile) // 預覽功能\n this.fileType = 'audio'\n this.closeRecord()\n })\n },\n play: function() {\n if(!this.isPlay) {\n this.isPlay = true\n this.recorder.play()\n }\n },\n destroy: function() {\n let _this = this\n this.recorder.destroy().then(function() {\n _this.isRecing = false\n _this.recorder = null\n _this.duration = 0\n })\n },\n closeRecord: function() {\n this.corvering = false\n this.recordFlag = false\n this.isRecing = false\n this.starRec = false\n if(this.recorder != null) {\n let _this = this\n this.recorder.destroy().then(function() {\n _this.recorder = null\n _this.duration = 0\n })\n }\n },\n moreMsg: function(e) {\n if(!e.target.parentElement.parentElement.classList.contains('more')) {\n e.target.parentElement.parentElement.classList.add('more')\n } else {\n e.target.parentElement.parentElement.classList.remove('more')\n }\n },\n cancelFile: function() {\n this.preview = ''\n this.uploadFile = null\n this.fileType = ''\n },\n previewFile: function(type, url) {\n this.previewModal.flag = true\n this.previewModal.type = type\n this.previewModal.url = url\n },\n createCanvas: function() {\n var canvas = document.getElementById('canvas')\n if(!canvas) {\n var canvasTag = document.createElement('canvas')\n canvasTag.setAttribute('id','canvas')\n canvasTag.setAttribute('style','display:none')\n document.body.appendChild(canvasTag)\n canvas = document.getElementById('canvas')\n }\n return canvas\n },\n createImage: function(file, isPre = false) {\n return new Promise((resolve) => {\n var reader = new FileReader()\n var img = new Image()\n // 缩放图片需要的canvas\n var canvas = this.createCanvas()\n var context = canvas.getContext('2d')\n reader.onload = function() {\n var result = this.result\n img.onload = function() {\n EXIF.getData(img, function() {\n EXIF.getAllTags(this)\n\n // 图片原始尺寸\n var originWidth = this.width\n var originHeight = this.height\n // 最大尺寸限制\n var maxWidth = isPre ? 100 : 1024\n var maxHeight = isPre ? 100 : 1024\n // 目标尺寸\n var targetWidth = originWidth\n var targetHeight = originHeight\n\n // 图片尺寸超过限制\n if(originWidth > maxWidth || originHeight > maxHeight) {\n if(originWidth / originHeight > maxWidth / maxHeight) {\n // 更宽,按照宽度限定尺寸\n targetWidth = maxWidth\n targetHeight = Math.round(maxWidth * (originHeight / originWidth))\n } else {\n targetHeight = maxHeight\n targetWidth = Math.round(maxHeight * (originWidth / originHeight))\n }\n }\n\n // canvas对图片进行缩放\n canvas.width = targetWidth\n canvas.height = targetHeight\n\n // 图片压缩\n context.drawImage(img, 0, 0, targetWidth, targetHeight)\n var dataURL = canvas.toDataURL('image/jpeg', 0.8)\n // 清除画布\n context.clearRect(0, 0, targetWidth, targetHeight)\n resolve(dataURL)\n })\n }\n img.src = result\n }\n reader.readAsDataURL(file)\n })\n },\n dataURLtoFile(dataurl, filename) {\n let arr = dataurl.split(',')\n let mime = arr[0].match(/:(.*?);/)[1]\n let bstr = atob(arr[1])\n let n = bstr.length\n let u8arr = new Uint8Array(n)\n while(n--) {\n u8arr[n] = bstr.charCodeAt(n)\n }\n return new File([u8arr], filename, {type:mime})\n },\n restDrawer: function() {\n if(this.isObsStartSame) {\n this.drawerPaneId = 0\n }\n },\n setEditHistoryForm(type, userId, timestamp, hIndex, pIndex, desc) {\n this.editHistoryForm.type = type // 修改類型 upd, del\n this.editHistoryForm.userId = userId // 使用者id\n this.editHistoryForm.timestamp = timestamp // 打點時間\n this.editHistoryForm.hIndex = hIndex // hIndex\n this.editHistoryForm.pIndex = pIndex // pIndex\n this.editHistoryForm.desc = desc // 修改打點內容\n this.historyEditFlag = true\n },\n editHistorys: async function() {\n if(!this.channelInfo.isStrClass) {\n return\n }\n var blob\n let fileName = 'comments.json'\n let _this = this\n\n if(this.commentsData.data.length > 0) {\n switch (this.editHistoryForm.type) {\n case 'upd':\n // BLOB 內容的 Index\n this.commentsData.data.forEach(function(item, index, array) {\n if(item.id === _this.editHistoryForm.userId && item.timestamp === _this.editHistoryForm.timestamp) {\n item.desc = _this.editHistoryForm.desc\n }\n })\n // 上傳 commentsData\n blob = new Blob([JSON.stringify(this.commentsData.data)],{type:'application/json,charset=utf-8;'})\n blob.lastModifiedDate = new Date()\n blob.name = fileName\n await this.uploadToBlob(blob, fileName).then(() => {\n this.$Message.info({\n content: this.$t('updsuccess'),\n duration: 3,\n closable: true\n })\n this.historys[_this.editHistoryForm.hIndex].points[_this.editHistoryForm.pIndex].desc = _this.editHistoryForm.desc\n this.$store.dispatch('setHistorys', this.historys) // 設定個人歷史紀錄\n this.$store.dispatch('setCommentsData',this.commentsData) // 設定Bolo內容\n })\n break\n case 'del':\n // BLOB 內容的 Index\n this.commentsData.data.forEach(function(item, index, array) {\n if(item.id === _this.editHistoryForm.userId && item.timestamp === _this.editHistoryForm.timestamp) {\n array.splice(index, 1)\n }\n })\n // 上傳 commentsData\n blob = new Blob([JSON.stringify(this.commentsData.data)],{type:'application/json,charset=utf-8;'})\n blob.lastModifiedDate = new Date()\n blob.name = fileName\n await this.uploadToBlob(blob, fileName).then(() => {\n this.$Message.info({\n content: this.$t('delsuccess'),\n duration: 3,\n closable: true\n })\n this.historys[_this.editHistoryForm.hIndex].points.splice(_this.editHistoryForm.pIndex, 1)\n this.$store.dispatch('setHistorys', this.historys) // 設定打點紀錄\n this.$store.dispatch('setCommentsData',this.commentsData) // 設定Bolo內容\n })\n break\n }\n this.historyEditFlag = false\n }\n },\n setDetail: function(type) {\n switch (type) {\n case 'tmd':\n this.commentBtnSetting.detail = this.tmdTags\n break\n case 'school':\n this.commentBtnSetting.detail = this.schoolTags\n break\n case 'person':\n this.commentBtnSetting.detail = this.userTags // 個人標籤\n break\n }\n this.$store.dispatch('setCommentBtnSetting', this.commentBtnSetting)\n },\n checkPoint: function(typeId, detailType) {\n if(!jsFn.IsEmpty(this.expertPoint.desc) || !jsFn.IsEmpty(this.fileType)) {\n this.$Modal.confirm({\n title: this.$t('warning'),\n content: '

' + this.$t('warn_text1') + '

',\n okText: this.$t('ok'),\n cancelText: this.$t('cancel'),\n onOk: () => {\n this.setTable(typeId, detailType)\n }\n })\n } else {\n this.setTable(typeId, detailType)\n }\n },\n setTable: function(typeId, detailType) {\n this.commentBtnSetting.detailType = detailType\n this.commentBtnSetting.pointsByTypeId = typeId\n let temp = this.commentBtnSetting.detail.filter((item) => {\n return item.typeId === typeId\n })\n this.commentBtnSetting.table = temp[0]\n this.$store.dispatch('setCommentBtnSetting', this.commentBtnSetting)\n this.chgTableFlag = false\n\n // 清空打點\n this.expertPoint.type = ''\n this.expertPoint.typeName = ''\n this.expertPoint.id = ''\n this.expertPoint.tagName = ''\n this.expertPoint.desc = ''\n this.expertPoint.tableType = ''\n this.nowTimestamp = ''\n this.fileType = ''\n this.uploadFile = null\n },\n toCustomTags() {\n this.$router.push({path: 'crtpointbtn'})\n },\n isLeaveClass: function() { // 這個功能目前只給通用議課用\n let nowTime = new Date().getTime()\n let endTime = this.channelInfo.timestamp + this.channelInfo.duration\n let leaveFlag = false\n\n if(this.channelInfo.isStrClass != null) {\n if(this.expertPoint.id === '' && !this.drawerflag && this.publicState === 'EndClass') { // 沒有打點中 沒有開啟觀議課 並已有下課狀態\n if(!this.channelInfo.isStrClass) { // 已下課強迫離開教室\n leaveFlag = true\n } else if(nowTime >= endTime) { // 超過設定時間強迫下課\n leaveFlag = true\n }\n } else if(!this.channelInfo.isStrClass) { // 已下課給予下課狀態\n this.publicState = 'EndClass'\n this.drawerflag = true\n }\n }\n\n if(leaveFlag) {\n this.$Message.info({\n content: this.$t('mode_close'),\n duration: 15,\n closable: true\n })\n this.chgGroup()\n }\n }\n },\n created: function() {\n if(this.$tools.IsEmpty(this.channelInfo.channel) || this.$tools.IsEmpty(this.channelInfo.pin)) this.$router.push({path: '/'})\n console.log(this.commentsData, 'this.commentsData')\n console.log(this.channelInfo, 'this.channelInfo')\n console.log(this.userInfo, 'this.userInfo')\n console.log(this.channelLink, 'this.channelLink')\n console.log(this.userTags, 'this.userTags')\n\n // 分類是通用觀議課還是HiTeach開課\n if (this.channelInfo.channel.indexOf(0) === 0 || this.channelInfo.channel.indexOf(9) === 0) {\n this.$store.dispatch('getPlatformInfo')\n this.$store.dispatch('getSkMarkTemplate')\n this.publicTimer = setInterval(() => {\n this.$store.dispatch('getPlatformInfo').then(() => {\n this.isLeaveClass()\n })\n }, 10000)\n\n // 檢查時間是否正常\n this.$store.dispatch('getServiceUnixTimeMilliseconds').then(res => {\n let nowTime = new Date().getTime()\n let diffTime = Math.abs(res - nowTime)\n\n if(diffTime > 10 * 60 * 1000) {\n this.isDevTimeAbnormal = true\n }\n })\n } else {\n // signal 連線\n this.$store.dispatch('initSignal')\n }\n\n // init\n this.$store.dispatch('setHistorys') // 設定打點紀錄\n this.$store.dispatch('setCommentsData') // 設定上傳Blob的DATA內容\n\n if(this.isObsStartSame) {\n this.drawerPaneId = 0\n }\n const _this = this\n var clipboard = new ClipboardJS('.recordList')\n clipboard.on('success', function(e) {\n _this.$Message.info({\n content: _this.$t('copySuccess'),\n duration: 3,\n closable: true\n })\n })\n },\n async mounted() {\n let s = {gn: this.channelInfo.channel, pin: this.channelInfo.pin}\n s = Base64.encode(JSON.stringify(s))\n this.qrcode_url = await this.crtQRCode(document.location.origin + '?s=' + s)\n this.langSet = Object.keys(this.$i18n.messages)\n // 顯示時間-計算相差時間\n this.classPassedTime()\n setInterval(() => {\n this.classPassedTime()\n }, 1000)\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./commentBtn.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./commentBtn.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./commentBtn.vue?vue&type=template&id=0208f33e&scoped=true&\"\nimport script from \"./commentBtn.vue?vue&type=script&lang=js&\"\nexport * from \"./commentBtn.vue?vue&type=script&lang=js&\"\nimport style0 from \"./commentBtn.vue?vue&type=style&index=0&lang=less&\"\nimport style1 from \"./commentBtn.vue?vue&type=style&index=1&id=0208f33e&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0208f33e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"chgWebview\",staticStyle:{\"width\":\"100%\"}},[_vm._m(0),_c('div',{staticStyle:{\"float\":\"right\",\"width\":\"100%\",\"display\":\"flex\",\"justify-content\":\"center\"}},[_c('div',{staticStyle:{\"font-weight\":\"bold\",\"font-size\":\"16px\",\"color\":\"rgb(11, 128, 248)\",\"white-space\":\"pre-wrap\"}},[_vm._v(\" \"+_vm._s(_vm.$t('webviewmsg1'))),_c('br'),_vm._v(\" \"+_vm._s(_vm.$t('webviewmsg2' + '.' + _vm.webviewStr))),_c('br'),_vm._v(\" \"+_vm._s(_vm.$t('webviewmsg3'))),_c('br')])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"type\":\"flex\",\"align\":\"right\"}},[_c('img',{staticStyle:{\"width\":\"30%\"},attrs:{\"src\":require(\"@/img/svg/uparrow.svg\")}})])}]\n\nexport { render, staticRenderFns }","//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\r\nexport default {\r\n name: 'chgWebview',\r\n data() {\r\n return {\r\n webviewStr: 'android'\r\n }\r\n },\r\n created() {\r\n const ua = navigator.userAgent.toLowerCase()\r\n if (ua.indexOf('ipad') !== -1) {\r\n this.webviewStr = 'ios'\r\n } else if (ua.indexOf('iphone') !== -1) {\r\n this.webviewStr = 'ios'\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./chgWebview.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./chgWebview.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./chgWebview.vue?vue&type=template&id=4166c8d0&\"\nimport script from \"./chgWebview.vue?vue&type=script&lang=js&\"\nexport * from \"./chgWebview.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Login from '@/views/login.vue'\r\nimport CrtPointBtn from '@/views/crtPointBtn.vue'\r\n// import RECORDTEST from '@/views/recordTEST'\r\n// import SelectExpert from '@/views/select-expert'\r\nimport CommentBtn from '@/views/commentBtn.vue'\r\nimport ChgWebview from '@/views/chgWebview.vue'\r\n\r\nexport const routes = [\r\n {\r\n path: '/',\r\n name:'Login',\r\n components: {\r\n default: Login,\r\n isWebview: ChgWebview\r\n },\r\n display: 'Login',\r\n meta: { requiresAuth: false }\r\n },\r\n {\r\n path: '/commentbtn',\r\n name: 'CommentBtn',\r\n components: {\r\n default: CommentBtn,\r\n isWebview: ChgWebview\r\n },\r\n display: 'commentBtn',\r\n meta: { requiresAuth: true }\r\n },\r\n {\r\n path: '/crtpointbtn',\r\n name: 'CrtPointBtn',\r\n components: {\r\n default: CrtPointBtn,\r\n isWebview: ChgWebview\r\n },\r\n display: 'crtPointBtn',\r\n meta: { requiresAuth: true }\r\n },\r\n // { path: '/selectexpert', component: SelectExpert, display: 'SelectExpert', meta: { requiresAuth: true }},\r\n // {path: '/recordtest', name:'recordtest', component: RECORDTEST, display: 'RECORDTEST', meta: { requiresAuth: false }},\r\n {path: '/*',redirect: '/'}\r\n]\r\n","import Vue from 'vue'\r\nimport VueRouter from 'vue-router'\r\nimport store from '@/store'\r\nimport { routes } from './routes'\r\nimport i18n from '@/lang'\r\n\r\nVue.use(VueRouter)\r\n\r\nlet router = new VueRouter({\r\n mode: 'history',\r\n routes\r\n})\r\n\r\n// 解决重复点击路由报错的BUG\r\nconst originalPush = VueRouter.prototype.push\r\nVueRouter.prototype.push = function push(location) {\r\n return originalPush.call(this, location).catch((err) => err)\r\n}\r\n\r\n// 登錄中間驗證,頁面需要登錄而沒有登錄的情況直接跳轉登錄\r\nrouter.beforeEach((to, from, next) => {\r\n // console.log('to=', to.fullPath, '| from=', from.fullPath)\r\n let sokrateslang = to.query.sokrateslang\r\n if(typeof sokrateslang !== 'undefined') {\r\n sokrateslang = sokrateslang.toLowerCase()\r\n if(sokrateslang !== 'zh-cn' && sokrateslang !== 'zh-tw') {\r\n sokrateslang = 'en-us'\r\n }\r\n i18n.locale = sokrateslang\r\n store.dispatch('setPageLang', sokrateslang)\r\n }\r\n\r\n if (to.matched.some(record => record.meta.requiresAuth)) {\r\n if (store.state.loginFlag) {\r\n next()\r\n } else {\r\n next({\r\n path: '/'\r\n // query: { redirect: to.fullPath }\r\n })\r\n }\r\n } else {\r\n next()\r\n }\r\n})\r\n\r\nexport default router\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('i',{staticStyle:{\"line-height\":\"0.5\"},on:{\"click\":_vm.onClick}},[_c('svg',{class:_vm.svgClass,style:({width: _vm.size + 'px', height: _vm.size + 'px'}),attrs:{\"aria-hidden\":\"true\"}},[_c('use',{attrs:{\"xlink:href\":_vm.iconName}})])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","//\n//\n//\n//\n//\n//\n//\n//\n\r\nexport default {\r\n name: 'SvgIcon',\r\n props: {\r\n type: {\r\n type: String,\r\n required: true\r\n },\r\n className: {\r\n type: String,\r\n default: ''\r\n },\r\n size: {\r\n type: String,\r\n default: '15'\r\n }\r\n },\r\n computed: {\r\n iconName() {\r\n return `#${this.type}`\r\n },\r\n svgClass() {\r\n if (this.className) {\r\n return 'svg-icon ' + this.className\r\n } else {\r\n return 'svg-icon'\r\n }\r\n }\r\n },\r\n methods: {\r\n onClick: function() {\r\n this.$emit('on-click')\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./svgIcon.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./svgIcon.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./svgIcon.vue?vue&type=template&id=20cfcd60&\"\nimport script from \"./svgIcon.vue?vue&type=script&lang=js&\"\nexport * from \"./svgIcon.vue?vue&type=script&lang=js&\"\nimport style0 from \"./svgIcon.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\r\nimport SvgIcon from '@/components/icon/svgIcon.vue'// svg component\r\n\r\n// register globally\r\nVue.component('SokIcon', SvgIcon)\r\n\r\nconst req = require.context('./svg', false, /\\.svg$/)\r\nconst requireAll = (requireContext) => requireContext.keys().map(requireContext)\r\nrequireAll(req)\r\n","import Vue from 'vue'\r\n\r\nimport './styles/quasar.sass'\r\nimport iconSet from 'quasar/icon-set/fontawesome-v5.js'\r\nimport '@quasar/extras/fontawesome-v5/fontawesome-v5.css'\r\nimport { Quasar } from 'quasar'\r\n\r\nVue.use(Quasar, {\r\n config: {},\r\n components: { /* not needed if importStrategy is not 'manual' */ },\r\n directives: { /* not needed if importStrategy is not 'manual' */ },\r\n plugins: {\r\n },\r\n iconSet: iconSet\r\n })\r\n","import Vue from 'vue'\r\nimport App from './App.vue'\r\nimport router from './router'\r\nimport store from './store'\r\nimport axios from 'vue-axios'\r\nimport 'view-design/dist/styles/iview.css'\r\nimport iView from 'view-design'\r\nimport './css/site.less'\r\nimport i18n from './lang'\r\nimport { sync } from 'vuex-router-sync'\r\nimport { jsFn } from '@/utils/jsFn'\r\nimport api from '@/api'\r\nimport VueHead from 'vue-head'\r\nimport '@/icons'\r\nimport './quasar'\r\n\r\nVue.config.productionTip = false\r\n\r\nVue.use(iView)\r\nVue.use(VueHead)\r\n\r\n// 全局API请求\r\nVue.prototype.$http = axios\r\nVue.prototype.$tools = jsFn\r\nVue.prototype.$api = api\r\n\r\nsync(store, router)\r\n\r\n// 处理刷新的时候vuex被清空但是用户已经登录的情况\r\nstore.dispatch('setPageLang', jsFn.getLang()) // 設定語系\r\nstore.dispatch('setUserInfo') // 設定個人資訊\r\nstore.dispatch('setUserTags') // 設定教師自訂標籤\r\nstore.dispatch('setChannelLink') // 設定頻道連線資訊\r\nstore.dispatch('setChannelInfo') // 設定頻道基本資訊\r\nstore.dispatch('setCommentBtnSetting') // 設定頻已選擇的打點類別\r\n\r\nnew Vue({\r\n router,\r\n store,\r\n i18n,\r\n VueHead,\r\n render: h => h(App)\r\n}).$mount('#app')\r\n","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"exit\",\n \"use\": \"exit-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","module.exports = __webpack_public_path__ + \"img/uparrow.07284e48.svg\";","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./login.vue?vue&type=style&index=1&id=e03935d6&lang=less&scoped=true&\"","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"tmdring\",\n \"use\": \"tmdring-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"sending\",\n \"use\": \"sending-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","module.exports = __webpack_public_path__ + \"img/video.6635e7ab.png\";","module.exports = __webpack_public_path__ + \"img/sok_index_en.d67fa7d6.png\";","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"camera\",\n \"use\": \"camera-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"video\",\n \"use\": \"video-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","module.exports = __webpack_public_path__ + \"img/recstop.079ff256.svg\";","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"reset\",\n \"use\": \"reset-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./securityCode.vue?vue&type=style&index=0&id=1d47e3ee&scoped=true&lang=less&\"","module.exports = __webpack_public_path__ + \"img/recording.9e538206.svg\";","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"edit\",\n \"use\": \"edit-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"certification\",\n \"use\": \"certification-usage\",\n \"viewBox\": \"0 0 256 256\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"history\",\n \"use\": \"history-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./crtPointBtn.vue?vue&type=style&index=0&lang=less&\"","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"add\",\n \"use\": \"add-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./crtPointBtn.vue?vue&type=style&index=1&id=8fcb6842&lang=less&scoped=true&\"","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"trash\",\n \"use\": \"trash-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","module.exports = __webpack_public_path__ + \"img/sok_index_tw.061e1508.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./svgIcon.vue?vue&type=style&index=0&lang=css&\"","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"preview\",\n \"use\": \"preview-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","module.exports = __webpack_public_path__ + \"img/accessory.2ac2952f.svg\";","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"check\",\n \"use\": \"check-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./commentBtn.vue?vue&type=style&index=1&id=0208f33e&lang=less&scoped=true&\"","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"videofile\",\n \"use\": \"videofile-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol"],"sourceRoot":""}