diff --git a/package.json b/package.json index 423a3fa..818c4c2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "aix-win", - "version": "1.0.5", + "version": "1.0.7", "description": "An Electron application with Vue", "main": "./out/main/index.js", "author": "example.com", diff --git a/src/main/file.js b/src/main/file.js index 9cc20ea..d3eede2 100644 --- a/src/main/file.js +++ b/src/main/file.js @@ -250,7 +250,9 @@ export default async function ({ app, shell, BrowserWindow, ipcMain }) { onDownloadStarted: async ({ id, item, webContents }) => { // Do something with the download id }, - onDownloadProgress: async ({ id, item, percentCompleted }) => {}, + onDownloadProgress: async ({ id, item, percentCompleted }) => { + e.reply('download-file-default-prog' + fileName, percentCompleted) + }, onDownloadCompleted: async ({ id, item }) => { console.log('完成') e.reply('download-file-default' + fileName, true) diff --git a/src/main/index.js b/src/main/index.js index 5991699..62f565b 100644 --- a/src/main/index.js +++ b/src/main/index.js @@ -253,4 +253,4 @@ function handleAll() { const win = BrowserWindow.fromId(wid) win.webContents.send('pinia-state-set', storeName, jsonStr) }) -} \ No newline at end of file +} diff --git a/src/main/update.js b/src/main/update.js index d59d155..e2f7332 100644 --- a/src/main/update.js +++ b/src/main/update.js @@ -42,6 +42,11 @@ const updateInit = (win) => { logger.error('检查更新失败') }) + // 监听下载进度 + autoUpdater.on('download-progress', (progressObj) => { + win.webContents.send('update-app-progress', progressObj.percent); + }); + // 跟新下载完毕 autoUpdater.on('update-downloaded', () => { dialog @@ -58,4 +63,4 @@ const updateInit = (win) => { }) } -export default updateInit \ No newline at end of file +export default updateInit diff --git a/src/renderer/src/api/classManage/index.js b/src/renderer/src/api/classManage/index.js index 14a8314..6db5913 100644 --- a/src/renderer/src/api/classManage/index.js +++ b/src/renderer/src/api/classManage/index.js @@ -130,3 +130,46 @@ export function addStudentmainByNameArray(data) { data: data }) } +//新增课程预约 +export function addSmartClassReserv(data) { + return request({ + url: '/smarttalk/classReserv/addSmartClassReserv', + method: 'post', + data: data + }) +} +//修改课程预约 +export function updateSmartClassReserv(data) { + return request({ + url: '/smarttalk/classReserv/updateSmartClassReserv', + method: 'post', + data: data + }) +} +//查询课程预约 +export function getSelfReserv() { + return request({ + url: '/smarttalk/classReserv/getSelfReserv', + method: 'get' + }) +} +export function deleteSmartReserv(id) { + return request({ + url: '/smarttalk/classReserv/' + id, + method: 'delete' + }) +} +export function startClass(id) { + return request({ + url: '/smarttalk/classReserv/startClass', + method: 'get', + params: {id} + }) +} +export function endClass(id) { + return request({ + url: '/smarttalk/classReserv/endClass', + method: 'get', + params: {id} + }) +} diff --git a/src/renderer/src/assets/iconfont/iconfont.css b/src/renderer/src/assets/iconfont/iconfont.css index a56adb1..fd25490 100644 --- a/src/renderer/src/assets/iconfont/iconfont.css +++ b/src/renderer/src/assets/iconfont/iconfont.css @@ -1,9 +1,9 @@ @font-face { font-family: "iconfont"; /* Project id 2794390 */ - src: url('iconfont.woff2?t=1723186593107') format('woff2'), - url('iconfont.woff?t=1723186593107') format('woff'), - url('iconfont.ttf?t=1723186593107') format('truetype'), - url('iconfont.svg?t=1723186593107#iconfont') format('svg'); + src: url('iconfont.woff2?t=1723452423265') format('woff2'), + url('iconfont.woff?t=1723452423265') format('woff'), + url('iconfont.ttf?t=1723452423265') format('truetype'), + url('iconfont.svg?t=1723452423265#iconfont') format('svg'); } .iconfont { @@ -14,6 +14,10 @@ -moz-osx-font-smoothing: grayscale; } +.icon-zanwushuju:before { + content: "\e655"; +} + .icon-xiangzuo:before { content: "\e64d"; } diff --git a/src/renderer/src/assets/iconfont/iconfont.js b/src/renderer/src/assets/iconfont/iconfont.js index b8bbfb9..ed5d6de 100644 --- a/src/renderer/src/assets/iconfont/iconfont.js +++ b/src/renderer/src/assets/iconfont/iconfont.js @@ -1 +1 @@ -window._iconfont_svg_string_2794390='',function(l){var h=(h=document.getElementsByTagName("script"))[h.length-1],c=h.getAttribute("data-injectcss"),h=h.getAttribute("data-disable-injectsvg");if(!h){var a,v,t,z,i,p=function(h,c){c.parentNode.insertBefore(h,c)};if(c&&!l.__iconfont__svg__cssinject__){l.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(h){console&&console.log(h)}}a=function(){var h,c=document.createElement("div");c.innerHTML=l._iconfont_svg_string_2794390,(c=c.getElementsByTagName("svg")[0])&&(c.setAttribute("aria-hidden","true"),c.style.position="absolute",c.style.width=0,c.style.height=0,c.style.overflow="hidden",c=c,(h=document.body).firstChild?p(c,h.firstChild):h.appendChild(c))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(a,0):(v=function(){document.removeEventListener("DOMContentLoaded",v,!1),a()},document.addEventListener("DOMContentLoaded",v,!1)):document.attachEvent&&(t=a,z=l.document,i=!1,d(),z.onreadystatechange=function(){"complete"==z.readyState&&(z.onreadystatechange=null,M())})}function M(){i||(i=!0,t())}function d(){try{z.documentElement.doScroll("left")}catch(h){return void setTimeout(d,50)}M()}}(window); \ No newline at end of file +window._iconfont_svg_string_2794390='',function(l){var h=(h=document.getElementsByTagName("script"))[h.length-1],c=h.getAttribute("data-injectcss"),h=h.getAttribute("data-disable-injectsvg");if(!h){var a,v,t,z,i,p=function(h,c){c.parentNode.insertBefore(h,c)};if(c&&!l.__iconfont__svg__cssinject__){l.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(h){console&&console.log(h)}}a=function(){var h,c=document.createElement("div");c.innerHTML=l._iconfont_svg_string_2794390,(c=c.getElementsByTagName("svg")[0])&&(c.setAttribute("aria-hidden","true"),c.style.position="absolute",c.style.width=0,c.style.height=0,c.style.overflow="hidden",c=c,(h=document.body).firstChild?p(c,h.firstChild):h.appendChild(c))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(a,0):(v=function(){document.removeEventListener("DOMContentLoaded",v,!1),a()},document.addEventListener("DOMContentLoaded",v,!1)):document.attachEvent&&(t=a,z=l.document,i=!1,o(),z.onreadystatechange=function(){"complete"==z.readyState&&(z.onreadystatechange=null,M())})}function M(){i||(i=!0,t())}function o(){try{z.documentElement.doScroll("left")}catch(h){return void setTimeout(o,50)}M()}}(window); \ No newline at end of file diff --git a/src/renderer/src/assets/iconfont/iconfont.json b/src/renderer/src/assets/iconfont/iconfont.json index b240442..fd3dafa 100644 --- a/src/renderer/src/assets/iconfont/iconfont.json +++ b/src/renderer/src/assets/iconfont/iconfont.json @@ -5,6 +5,13 @@ "css_prefix_text": "icon-", "description": "", "glyphs": [ + { + "icon_id": "9689424", + "name": "暂无数据", + "font_class": "zanwushuju", + "unicode": "e655", + "unicode_decimal": 58965 + }, { "icon_id": "6176588", "name": "向左", diff --git a/src/renderer/src/assets/iconfont/iconfont.svg b/src/renderer/src/assets/iconfont/iconfont.svg index 21c7399..99a0abf 100644 --- a/src/renderer/src/assets/iconfont/iconfont.svg +++ b/src/renderer/src/assets/iconfont/iconfont.svg @@ -14,6 +14,8 @@ /> + + diff --git a/src/renderer/src/assets/iconfont/iconfont.ttf b/src/renderer/src/assets/iconfont/iconfont.ttf index 25f16da..477afd5 100644 Binary files a/src/renderer/src/assets/iconfont/iconfont.ttf and b/src/renderer/src/assets/iconfont/iconfont.ttf differ diff --git a/src/renderer/src/assets/iconfont/iconfont.woff b/src/renderer/src/assets/iconfont/iconfont.woff index 60e8778..397925d 100644 Binary files a/src/renderer/src/assets/iconfont/iconfont.woff and b/src/renderer/src/assets/iconfont/iconfont.woff differ diff --git a/src/renderer/src/assets/iconfont/iconfont.woff2 b/src/renderer/src/assets/iconfont/iconfont.woff2 index 7432906..7f2c06e 100644 Binary files a/src/renderer/src/assets/iconfont/iconfont.woff2 and b/src/renderer/src/assets/iconfont/iconfont.woff2 differ diff --git a/src/renderer/src/components/choose-textbook/index.vue b/src/renderer/src/components/choose-textbook/index.vue index 9693126..bdd14b9 100644 --- a/src/renderer/src/components/choose-textbook/index.vue +++ b/src/renderer/src/components/choose-textbook/index.vue @@ -42,7 +42,7 @@ diff --git a/src/renderer/src/components/pdf/index.vue b/src/renderer/src/components/pdf/index.vue index afc4acb..e588373 100644 --- a/src/renderer/src/components/pdf/index.vue +++ b/src/renderer/src/components/pdf/index.vue @@ -73,11 +73,6 @@ const renderPage = async (canvasobj) => { canvasContext: canvasobj.context, viewport: viewport } - // console.log(renderContext,22222222222222222222) - // const textContent = await page.getTextContent(); - // console.log(textContent); - // const annotations = await page.getAnnotations(); - // console.log(annotations); page.render(renderContext).promise.then((res) => { const img = document.createElement('img') img.src = canvasobj.canvas.toDataURL('image/png') @@ -90,7 +85,6 @@ const renderPage = async (canvasobj) => { if (canvasobj.index == 0) { canvasFabricVue.value.canvas.setWidth(screenWidth) canvasFabricVue.value.canvas.setHeight(screenHeight) - // updateCanvasBackgroundImage(canvasFabricVue,img) displayData(canvasFabricVue, canvsStore, canvasobj, fabric, img) } else { canvas1FabricVue.value.canvas.setWidth(screenWidth) @@ -198,10 +192,7 @@ const initPdf = async (type = 'default') => { }) } // 保存数据 - // savecanvsStore(imgarr, canvsStore) - if (props.pdfObj.numberOfPdf == 1) { - // imgarr.value[0] canvasFabricVue.value.history.clean() } else { canvasFabricVue.value.history.clean() @@ -380,14 +371,16 @@ defineExpose({ savaDataStore }) watchEffect(() => { - console.log(toolState.isToolWin,'监听') - console.log(toolState,'监听111') - if(toolState.isToolWin){ - ispointer.value=false - }else{ - ispointer.value=true - } + setTimeout(() => { + console.log(toolState,'监听') + + }, 300) if(toolState.isPdfWin){ + // if(toolState.isToolWin){ + // ispointer.value=false + // }else{ + // ispointer.value=true + // } watchToolState() //监听工具栏 } }) diff --git a/src/renderer/src/hooks/useGetHomework.js b/src/renderer/src/hooks/useGetHomework.js new file mode 100644 index 0000000..c881f94 --- /dev/null +++ b/src/renderer/src/hooks/useGetHomework.js @@ -0,0 +1,125 @@ +import useUserStore from '@/store/modules/user' +import { homeworklist, listEntpcourse } from '@/api/teaching/classwork' +import { addEntpcourse } from '@/api/teaching/classwork' + +const userStore = useUserStore() +// 当前选中教材章节节点 +let curNode = null +// 查询作业列表所需要的ID +let chapterId = null + +export const useGetHomework = async (node) => { + /** + * node + */ + if (!node) return + curNode = node + + // 获取查询作业列表所需ID + let { rows } = await getChapterId() + if (rows.length > 0) { + chapterId = rows[0].id + } else { + // 没有则 传教新的entpcourse 再次查询 + await createEntpcourse() + let { rows } = await getChapterId() + chapterId = rows[0].id + } + + return await getHomeWorkList() + + +} + +// 根据教材章节ID 查询作业列表所需ID +const getChapterId = () => { + return listEntpcourse({ + evalid: curNode.id ? curNode.id : curNode.parentNode.id, + edituserid: userStore.user.userId, + pageSize: 500 + }) +} + +// 创建新的entpcourse +const createEntpcourse = () => { + // 参照 web AIx 传入参数 + var cform = {} + cform.entpid = userStore.user.deptId + cform.level = 1 + cform.parentid = 0 + cform.dictid = 0 + cform.evalid = curNode.id + cform.evalparentid = 0 + cform.edusubject = curNode.edusubject + cform.edudegree = curNode.edudegree + cform.edustage = curNode.edustage + cform.coursetype = '课标学科' + cform.coursetitle = curNode.itemtitle + cform.coursedesc = '' + cform.status = '' + cform.dflag = 0 + cform.edituserid = userStore.user.userId + cform.createblankfile = 'yes' + return addEntpcourse(cform) +} + +const getHomeWorkList = async () => { + return await homeworklist({ + entpcourseid: chapterId, + edituserid: userStore.user.userId, + pageSize: 100 + }).then((res) => { + //以下代码 参照AIx web端 作业布置 + let list = [] + for (var i = 0; i < res.rows.length; i++) { + res.rows[i].taskconfig = [] + + // 找child + for (var j = 0; j < res.rows.length; j++) { + if (res.rows[j].parentid == res.rows[i].id) { + var ss = [] + if (res.rows[j].classworkdatastudentids != null) { + ss = JSON.parse('[' + res.rows[j].classworkdatastudentids + ']') + } + var js = { + id: res.rows[j].id, + classid: res.rows[j].classid, + classcaption: res.rows[j].classcaption, + parentid: 0, + worktype: '', + workkey: res.rows[j].workkey, + worktag: '', + entpcourseid: 0, + evalid: 0, + edusubject: '', + edudegree: '', + workdate: '', + title: '', + workcodes: '', + studentlist: ss, + deaddate: res.rows[j].deaddate, + timelength: res.rows[j].timelength, + weights: res.rows[j].weights, + feedtype: res.rows[j].feedtype + } + res.rows[i].taskconfig.push(js) + } + } + res.rows[i].fileShowName = res.rows[i].uniquekey + + // 注意slideid>0的,这一些作业是添加到PPT页面的,所以在作业管理中不能出现 + // 2024-05-15,酉阳,jackyshen + if (res.rows[i].classid == 0 && res.rows[i].slideid == 0) { + list.push(res.rows[i]) + } + + // 如果是习题训练任务,则检查一共有多少道 + if (res.rows[i].entpcourseworklist != '') { + res.rows[i].entpcourseworklistarray = JSON.parse('[' + res.rows[i].entpcourseworklist + ']') + } else { + res.rows[i].entpcourseworklistarray = [] + } + } + return list + }) +} diff --git a/src/renderer/src/layout/components/Header.vue b/src/renderer/src/layout/components/Header.vue index 00deb25..799bf33 100644 --- a/src/renderer/src/layout/components/Header.vue +++ b/src/renderer/src/layout/components/Header.vue @@ -35,6 +35,7 @@ @@ -224,8 +245,9 @@ onMounted(() => { .homework { width: 100%; + height: 100%; position: absolute; - + flex-direction: column; } .homework-content { @@ -317,6 +339,18 @@ onMounted(() => { .unit-top-center{ margin: 0 auto; } - +} +.unit-content{ + height: calc(100% - 50px); +} +.no-data{ + padding-top: 30px; + color: #d7d7d7; + align-items: center; + flex-direction: column; + color: 12px; + .icon-zanwushuju{ + font-size: 50px; + } } \ No newline at end of file diff --git a/src/renderer/src/views/tool/components/imChat.vue b/src/renderer/src/views/tool/components/imChat.vue index f3db31d..90d5af1 100644 --- a/src/renderer/src/views/tool/components/imChat.vue +++ b/src/renderer/src/views/tool/components/imChat.vue @@ -6,6 +6,7 @@ import useUserStore from '@/store/modules/user' import * as http from '@/api/apiService' // 自定义api service // import { ipcMsgSend, ipcHandle, ipcMain, ipcMsgInvoke } from '@/utils/tool' // 相关工具 const userStore = useUserStore() +const emits = defineEmits(['change']) let imChat onMounted(() => { // console.log(userStore) @@ -48,13 +49,15 @@ const createGroup = async (groupName) => { // if (res && res.code == 0) { // const timGroupId = res?.json_param?.create_group_result_groupid // } + const params = {type:'createGroup', data: imChat.timGroupId} + emits('change', params) } // 退出 const logout = () => imChat?.logout() // 解散群 const deleteGroup = () => imChat?.deleteGroup() -defineExpose({ logout, deleteGroup }) +defineExpose({ logout, deleteGroup, imChat }) - \ No newline at end of file + \ No newline at end of file diff --git a/src/renderer/src/views/tool/sphere.vue b/src/renderer/src/views/tool/sphere.vue index 98c775f..e6bf859 100644 --- a/src/renderer/src/views/tool/sphere.vue +++ b/src/renderer/src/views/tool/sphere.vue @@ -10,7 +10,7 @@ - +
@@ -38,7 +38,8 @@