diff --git a/src/renderer/public/pdfjs-dist/web/viewer.mjs b/src/renderer/public/pdfjs-dist/web/viewer.mjs index 0ae4fbc..08b3d5d 100644 --- a/src/renderer/public/pdfjs-dist/web/viewer.mjs +++ b/src/renderer/public/pdfjs-dist/web/viewer.mjs @@ -13097,15 +13097,15 @@ const PDFViewerApplication = { } if (isValidSpreadMode(spread)) { //默认双页 - // this.pdfViewer.spreadMode = spread; - this.pdfViewer.spreadMode = 1; + this.pdfViewer.spreadMode = spread; + // this.pdfViewer.spreadMode = 1; } }; this.isInitialViewSet = true; this.pdfSidebar?.setInitialView(sidebarView); //默认双页 - // setViewerModes(scrollMode, spreadMode); - setViewerModes(scrollMode, 1); + setViewerModes(scrollMode, spreadMode); + // setViewerModes(scrollMode, 1); if (this.initialBookmark) { setRotation(this.initialRotation); delete this.initialRotation; diff --git a/src/renderer/src/AixPPTist/src/views/Editor/CanvasTool/index.vue b/src/renderer/src/AixPPTist/src/views/Editor/CanvasTool/index.vue index 879865f..18ac469 100644 --- a/src/renderer/src/AixPPTist/src/views/Editor/CanvasTool/index.vue +++ b/src/renderer/src/AixPPTist/src/views/Editor/CanvasTool/index.vue @@ -114,7 +114,7 @@ /> - + { // }) } +/** +* base64转图片File +* @param {String} base64 图片base64 +* @param {String} fileName 图片名称| 默认 → myimg +* @returns File 返回转换后的file数据类型 +*/ +const base64ToFile = (base64: string, fileName = '试题图片') => { + // 将base64按照 , 进行分割 将前缀 与后续内容分隔开 + let data = base64.split(','), + // 利用正则表达式 从前缀中获取图片的类型信息(image/png、image/jpeg、image/webp等) + type = data[0].match(/:(.*?);/)[1], + // 从图片的类型信息中 获取具体的文件格式后缀(png、jpeg、webp) + suffix = type.split('/')[1], + // 使用atob()对base64数据进行解码 结果是一个文件数据流 以字符串的格式输出 + bstr = window.atob(data[1]), + // 获取解码结果字符串的长度 + n = bstr.length, + // 根据解码结果字符串的长度创建一个等长的整形数字数组 + // 但在创建时 所有元素初始值都为 0 + u8arr = new Uint8Array(n) + + // 将整形数组的每个元素填充为解码结果字符串对应位置字符的UTF-16 编码单元 + while (n--) { + // charCodeAt():获取给定索引处字符对应的 UTF-16 代码单元 + u8arr[n] = bstr.charCodeAt(n) + } + // 利用构造函数创建File文件对象 + // new File(bits, name, options) + const file = new File([u8arr], `${fileName}.${suffix}`, { + type: type + }) + // 返回file + return file +} + + const onhtml2canvas = async (html: HTMLElement) => { - const ele = await toPng(html); - createImageElement(ele); + const base64Dta = await toPng(html); + const toFile = base64ToFile(base64Dta) + // 上传图片转为线上地址 + PPTApi.toRousrceUrl(toFile).then(data=>{ + createImageElement(data) + }) + // createImageElement(ele); } const shapePoolVisible = ref(false) diff --git a/src/renderer/src/plugins/imChat/msgEnum.js b/src/renderer/src/plugins/imChat/msgEnum.js index 4b1d56b..4c728d9 100644 --- a/src/renderer/src/plugins/imChat/msgEnum.js +++ b/src/renderer/src/plugins/imChat/msgEnum.js @@ -82,6 +82,8 @@ export class MsgEnum { MSG_classcourseopen : 'classcourseopen', /** @desc: 学生的测练结果反馈 */ MSG_classquizfeedback : 'classquizfeedback', + /** @desc: 学生提交作业 */ + MSG_finishHomework : 'finishHomework', /** @desc: 老师端:接收到学生反馈消息-课堂测练中的其他任务 */ MSG_classtaskfeedback : 'classtaskfeedback', /** @desc: 老师端:学生反馈的消息,具体要看其中的feedbackkey,类别较繁杂 */ diff --git a/src/renderer/src/utils/comm.js b/src/renderer/src/utils/comm.js index fc3b89e..35d87f6 100644 --- a/src/renderer/src/utils/comm.js +++ b/src/renderer/src/utils/comm.js @@ -395,6 +395,6 @@ export const dataSetJson = { "课标-高中-英语": "e889fcac9fd011efb22a0242ac140006", "课标-高中-数学": "e03aa4fe9fd011ef91270242ac140006", "课标-高中-地理": "270516829fd111efb13c0242ac140006", - "课标-高中-政治": "a7df2b01aafd11ef8bb40242ac140002", + "课标-高中-政治": "a2f0b247b85d11ef84290242ac140005", "鉴权": "ragflow-IwMDI1MGU2YTU3NjExZWZiNWEzMDI0Mm" } \ No newline at end of file diff --git a/src/renderer/src/views/classTask/teachClassTask.vue b/src/renderer/src/views/classTask/teachClassTask.vue index b75c739..d0be63a 100644 --- a/src/renderer/src/views/classTask/teachClassTask.vue +++ b/src/renderer/src/views/classTask/teachClassTask.vue @@ -162,9 +162,10 @@ import ItemDialogScore from '@/views/classTask/container/classTask/item-dialog-s import quizStats from '@/views/classTask/container/quizStats.vue' import ClassOverview from '@/views/classTask/container/classOverview.vue' import {sessionStore} from '@/utils/store' -import Chat from '@/utils/chat' // im 登录初始化 - - +// import Chat from '@/utils/chat' // im 登录初始化 +import MsgEnum from '@/plugins/imChat/msgEnum' // im 消息枚举 +import ChatWs from '@/plugins/socket' // 聊天socket +if (!ChatWs.ws) ChatWs.init() const { proxy } = getCurrentInstance() const emit = defineEmits(['cle-click']) const props = defineProps({ @@ -715,25 +716,35 @@ const closeDialog = () => { const msgHandle = (msg) => { const { type, data } = msg switch(type) { - case 'TIMAddRecvNewMsgCallback': // 收到新消息 data=[] - { - (data||[]).forEach(o => { - const msgArr = o?.message_elem_array||[] - msgArr.forEach(info => { - const msgType = info?.elem_type // 消息类型 TIMElemType - const msgData = !!info.text_elem_content ? JSON.parse(info.text_elem_content)||'' : '' - // 处理学生端反馈得消息 - //console.log('msgData->', msgData); - if (msgData.msgKey == "finishHomework"){ - // 刷新 - const data = JSON.parse(localStorage.getItem('teachClassWorkItem')); - //console.log('data->', data); - openDialog(data, false); - } - }) - }) - } - break + case MsgEnum.HEADS.MSG_closed: // 下课: + window.close() // 关闭窗口 + break + case MsgEnum.HEADS.MSG_finishHomework: // 跟新作业: + const data = JSON.parse(localStorage.getItem('teachClassWorkItem')); + openDialog(data, false); + break + case MsgEnum.HEADS.MSG_slideFlapping: // 切换页面 + window.close() // 关闭窗口 + break + // case 'TIMAddRecvNewMsgCallback': // 收到新消息 data=[] + // { + // (data||[]).forEach(o => { + // const msgArr = o?.message_elem_array||[] + // msgArr.forEach(info => { + // const msgType = info?.elem_type // 消息类型 TIMElemType + // const msgData = !!info.text_elem_content ? JSON.parse(info.text_elem_content)||'' : '' + // // 处理学生端反馈得消息 + // //console.log('msgData->', msgData); + // if (msgData.msgKey == "finishHomework"){ + // // 刷新 + // const data = JSON.parse(localStorage.getItem('teachClassWorkItem')); + // //console.log('data->', data); + // openDialog(data, false); + // } + // }) + // }) + // } + // break } } @@ -750,11 +761,21 @@ onMounted(() => { isReloadTimer(); // im监听消息 - if (!Chat.imChat) { - Chat.init(true, true, msgHandle); - } else { - Chat.listenMsg(msgHandle); - } + if (ChatWs.ws) { + ChatWs.watch((msg, e) => { + try { + msgHandle(JSON.parse(msg)) + } catch (error) { + console.error('socket 解析异常 ', error, e) + msgHandle(msg) + } + }) + } + // if (!Chat.imChat) { + // Chat.init(true, true, msgHandle); + // } else { + // Chat.listenMsg(msgHandle); + // } }) const isReloadTimer = () =>{ clearInterval(reloadTimer.value) // 关闭定时器