diff --git a/src/renderer/src/AixPPTist/src/api/index.ts b/src/renderer/src/AixPPTist/src/api/index.ts index 057dcf3..aa255d2 100644 --- a/src/renderer/src/AixPPTist/src/api/index.ts +++ b/src/renderer/src/AixPPTist/src/api/index.ts @@ -3,22 +3,22 @@ * @author zdg * @date 2024-11-26 */ -import { toRaw, nextTick } from 'vue' +import { toRaw } from 'vue' import type { Result } from './types' // 接口类型 import msgUtils from '@/plugins/modal' // 消息工具 import * as API_entpcoursefile from '@/api/education/entpcoursefile' // 相关api import * as API_smarttalk from '@/api/file' // 相关api -import * as Api_server from '@/api/apiService' // 相关api -import * as CreateHomework from '@/views/tool/createHomework' // 统计相关 import * as useStore from '../store' // pptist-状态管理 import { sessionStore } from '@/utils/store' // electron-store 状态管理 import useUserStore from '@/store/modules/user' // 外部-用户信息 -import { toPng, toJpeg } from 'html-to-image' // 引入html-to-image库 -// import * as commUtils from '@/utils/comm.js' -import { createWindow } from '@/utils/tool' -import { useToolState } from '@/store/modules/tool' +import * as Api_server from '@/api/apiService' // 相关api +import * as commUtils from '@/utils/comm.js' const slidesStore = useStore.useSlidesStore() const userStore = useUserStore() + +import { getClassWorkList,getStudentClassWorkData } from '@/views/tool/createHomework' +import {createWindow} from '@/utils/tool' +import { useToolState } from '@/store/modules/tool' const toolStore = useToolState() /** 工具类 */ export class Utils { @@ -147,8 +147,6 @@ export class PPTApi { // 更新幻灯片 static updateSlide(data: object): Promise { return new Promise(async (resolve, reject) => { - const thumUrl = await this.getSlideThumUrl() - data.base64Code = thumUrl // 更新缩略图 const res: Result = await API_entpcoursefile.updateEntpcoursefileNew(data) console.log(data,'data'); console.log(res,'dresata'); @@ -193,40 +191,30 @@ export class PPTApi { else msgUtils.msgError(res.msg || '更新失败');return false }) } - // thumbnail-slide thumbnail - static getSlideThumUrl(): Promise { - return nextTick().then(async() => { - const slideIndex = slidesStore.slideIndex - const elements = document.querySelectorAll('.thumbnail-slide') - if (elements.length && slideIndex >= 0) { - const element = elements[slideIndex] - return await toPng(element) - } - return null - }) - } // 图片|音频|视频 转换为在线地址 - static toRousrceUrl =async (file: File|any) => { - const formData = new FormData() - formData.append('file', file) - const res = await Api_server.Other.uploadFile(formData) - if (res && res.code == 200){ - const url = res?.url - url &&(o.src = url) - return url - } - } + static toRousrceUrl =async (o:any) => { + const formData = new FormData() + formData.append('file', o) + const res = await Api_server.Other.uploadFile(formData) + if (res && res.code == 200){ + const url = res?.url + url &&(o.src = url) + return url + } + +} } export class Homework{ // 作业弹窗 static async showHomework(id: any) { - let result = await CreateHomework.getClassWorkList(id) - result = await CreateHomework.getStudentClassWorkData() - localStorage.setItem('teachClassWorkItem', JSON.stringify(result[0])); - toolStore.isTaskWin=true; // 设置打开批改窗口 - createWindow('open-taskwin',{url:'/teachClassTask'}); + let result = await getClassWorkList(id) +   result = await getStudentClassWorkData() +   localStorage.setItem('teachClassWorkItem', JSON.stringify(result[0])); +   toolStore.isTaskWin=true; // 设置打开批改窗口 + //   emit('closeActive') +   createWindow('open-taskwin',{url:'/teachClassTask'}); } } export default PPTApi \ No newline at end of file diff --git a/src/renderer/src/AixPPTist/src/store/screen.ts b/src/renderer/src/AixPPTist/src/store/screen.ts index ec99745..e4fe1f5 100644 --- a/src/renderer/src/AixPPTist/src/store/screen.ts +++ b/src/renderer/src/AixPPTist/src/store/screen.ts @@ -1,17 +1,26 @@ import { defineStore } from 'pinia' export interface ScreenState { - screening: boolean + screening: boolean, + like: number, + doubt: number, } export const useScreenStore = defineStore('screen', { state: (): ScreenState => ({ screening: false, // 是否进入放映状态 + like:0, // 点赞数量 + doubt:0, // 疑问数量 }), actions: { setScreening(screening: boolean) { this.screening = screening }, + // 打开点赞或疑问 + openUpvote(type: 'like' | 'doubt'){ + if (type === 'like') this.like++ + else this.doubt++ + } }, }) \ No newline at end of file diff --git a/src/renderer/src/AixPPTist/src/store/slides.ts b/src/renderer/src/AixPPTist/src/store/slides.ts index 78e9d02..79f1e66 100644 --- a/src/renderer/src/AixPPTist/src/store/slides.ts +++ b/src/renderer/src/AixPPTist/src/store/slides.ts @@ -5,9 +5,12 @@ import type { Slide, SlideTheme, PPTElement, PPTAnimation } from '../types/slide import { slides } from '../mocks/slides' import { theme } from '../mocks/theme' import { layouts } from '../mocks/layout' +import { sessionStore } from '@/utils/store' // electron-store 状态管理 +import useUserStore from '@/store/modules/user' // 外部-用户信息 +import * as API_entpcoursefile from '@/api/education/entpcoursefile' // 相关api import PPTApi from '../api/store' - +const userStore = useUserStore() interface RemovePropData { id: string propName: string | string[] @@ -142,16 +145,46 @@ export const useSlidesStore = defineStore('slides', { setWorkItem(list: Object[]) { this.workItem = list }, + addWorkItem(data: any) { + const id = data?.parentid + if (!id) return + this.workItem.splice(this.slideIndex, 0, data) + }, addSlide(slide: Slide | Slide[]) { + const resource = sessionStore.get('curr.resource')||{} + const enpt = sessionStore.get('curr.entp')||{} + const {id, ...content} = slide + const params = { + parentid: resource.id, + activityContent:null, + entpid: userStore.user.deptId, + entpcourseid: enpt.id, + ppttype: 'file', + title: '', + fileurl: '', + filetype: 'slide', + datacontent: JSON.stringify(content), + filekey: '', + filetag: '', + fileidx: 0, + dflag: 0, + status: '', + edituserid: userStore.id, + } const slides = Array.isArray(slide) ? slide : [slide] for (const slide of slides) { if (slide.sectionTag) delete slide.sectionTag } - - const addIndex = this.slideIndex + 1 - this.slides.splice(addIndex, 0, ...slides) - this.slideIndex = addIndex + API_entpcoursefile.addEntpcoursefileReturnId(params).then((rid:number) => { + if(!!rid){ + params.id = rid + this.addWorkItem(params) + const addIndex = this.slideIndex + 1 + this.slides.splice(addIndex, 0, ...slides) + this.slideIndex = addIndex + } + }) }, updateSlide(props: Partial, slideId?: string) { @@ -188,6 +221,7 @@ export const useSlidesStore = defineStore('slides', { const isDel = await PPTApi.delSlide(deletedId) if (isDel) { // 后端删除成功,更新页面数据 + this.workItem.splice(index, 1) deleteSlidesIndex.push(index) slides.splice(index, 1) } diff --git a/src/renderer/src/AixPPTist/src/views/Editor/Toolbar/ElementStylePanel/Active/index.vue b/src/renderer/src/AixPPTist/src/views/Editor/Toolbar/ElementStylePanel/Active/index.vue index bc658cf..a2e20b9 100644 --- a/src/renderer/src/AixPPTist/src/views/Editor/Toolbar/ElementStylePanel/Active/index.vue +++ b/src/renderer/src/AixPPTist/src/views/Editor/Toolbar/ElementStylePanel/Active/index.vue @@ -36,8 +36,8 @@
{{item.worktype}} - -
{{item.evaltitle}}
+ +
{{item.uniquekey}}
删除
@@ -62,7 +62,7 @@ > - +