Compare commits
No commits in common. "5e954bab0bd0f9455ff08735284b38061bb13a52" and "7322056dad51bb1499f38af864410544c8744f7d" have entirely different histories.
5e954bab0b
...
7322056dad
|
@ -59,7 +59,6 @@ export class PPTApi {
|
||||||
|
|
||||||
// 获取所有幻灯片列表 isUpdate为true不更新
|
// 获取所有幻灯片列表 isUpdate为true不更新
|
||||||
static getSlideList(parentid: (Number | String),isUpdate?:Boolean): Promise<Boolean> {
|
static getSlideList(parentid: (Number | String),isUpdate?:Boolean): Promise<Boolean> {
|
||||||
const classcourse = sessionStore.get('curr.classcourse') // 课堂信息
|
|
||||||
return new Promise(async (resolve, reject) => {
|
return new Promise(async (resolve, reject) => {
|
||||||
const params: object = { parentid, orderByColumn: 'fileidx', isAsc: 'asc', pageSize: 9999 }
|
const params: object = { parentid, orderByColumn: 'fileidx', isAsc: 'asc', pageSize: 9999 }
|
||||||
const res: Result = await API_entpcoursefile.listEntpcoursefileNew(params)
|
const res: Result = await API_entpcoursefile.listEntpcoursefileNew(params)
|
||||||
|
@ -80,10 +79,12 @@ export class PPTApi {
|
||||||
// 活动列表处理
|
// 活动列表处理
|
||||||
// const workList = (res.rows || []).map(o => o.activityContent)
|
// const workList = (res.rows || []).map(o => o.activityContent)
|
||||||
const workItem = res.rows ? [...res.rows] : []
|
const workItem = res.rows ? [...res.rows] : []
|
||||||
|
// 写入作业列表数据
|
||||||
|
// slidesStore.setWorkList(workList)
|
||||||
// 获取所有的pptlist的数据
|
// 获取所有的pptlist的数据
|
||||||
slidesStore.setWorkItem(workItem)
|
slidesStore.setWorkItem(workItem)
|
||||||
// 没有上课时调用-作业列表
|
|
||||||
if(!classcourse) this.updateWorkList()
|
this.updateWorkList()
|
||||||
resolve(true)
|
resolve(true)
|
||||||
} else msgUtils.msgError(res.msg || '获取数据失败');resolve(false)
|
} else msgUtils.msgError(res.msg || '获取数据失败');resolve(false)
|
||||||
})
|
})
|
||||||
|
@ -231,22 +232,10 @@ export class PPTApi {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 批量更新缩略图-异步
|
|
||||||
static batchUpdateThumUrl() {
|
|
||||||
return new Promise(async resolve => {
|
|
||||||
const list = slidesStore.workItem || []
|
|
||||||
if (!list.length) return resolve()
|
|
||||||
const upList = []
|
|
||||||
for (const [ind,o] of list.entries()) {
|
|
||||||
const thumUrl = await this.getSlideThumUrl(ind)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// thumbnail-slide thumbnail 缩略图
|
// thumbnail-slide thumbnail 缩略图
|
||||||
static getSlideThumUrl(index?:number): Promise<Boolean> {
|
static getSlideThumUrl(): Promise<Boolean> {
|
||||||
return nextTick().then(async() => {
|
return nextTick().then(async() => {
|
||||||
const slideIndex = index ?? slidesStore.slideIndex
|
const slideIndex = slidesStore.slideIndex
|
||||||
const elements = document.querySelectorAll('.thumbnail-slide')
|
const elements = document.querySelectorAll('.thumbnail-slide')
|
||||||
if (elements.length && slideIndex >= 0) {
|
if (elements.length && slideIndex >= 0) {
|
||||||
const element = elements[slideIndex]
|
const element = elements[slideIndex]
|
||||||
|
|
|
@ -36,8 +36,8 @@
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="tools-right" :class="{ 'visible': rightToolsVisible }"
|
class="tools-right" :class="{ 'visible': rightToolsVisible }"
|
||||||
@mouseleave="toolTrigger('leave')"
|
@mouseleave="rightToolsVisible = false"
|
||||||
@mouseenter="toolTrigger('enter')"
|
@mouseenter="rightToolsVisible = true"
|
||||||
>
|
>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="tool-btn page-number" @click="slideThumbnailModelVisible = true">幻灯片 {{slideIndex + 1}} / {{slides.length}}</div>
|
<div class="tool-btn page-number" @click="slideThumbnailModelVisible = true">幻灯片 {{slideIndex + 1}} / {{slides.length}}</div>
|
||||||
|
@ -50,10 +50,6 @@
|
||||||
<IconPower class="tool-btn" v-tooltip="'结束放映'" @click="exitScreening()" />
|
<IconPower class="tool-btn" v-tooltip="'结束放映'" @click="exitScreening()" />
|
||||||
<IconPower class="tool-btn close" v-if="chat.groupid" v-tooltip="'结束课堂'" @click="exitCourse()" />
|
<IconPower class="tool-btn close" v-if="chat.groupid" v-tooltip="'结束课堂'" @click="exitCourse()" />
|
||||||
</div>
|
</div>
|
||||||
<div :class="['tools-icon',{opacity:iconHide}]" @click.stop="toolTrigger('icon')">
|
|
||||||
<circle-double-down v-if="rightToolsVisible" theme="outline" size="30" fill="#409EFF"/>
|
|
||||||
<circle-double-up v-else="!rightToolsVisible" theme="outline" size="30" fill="#E6A23C"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
@ -75,7 +71,6 @@ import WritingBoardTool from './WritingBoardTool.vue'
|
||||||
import CountdownTimer from './CountdownTimer.vue'
|
import CountdownTimer from './CountdownTimer.vue'
|
||||||
import emitter from '@/utils/mitt';
|
import emitter from '@/utils/mitt';
|
||||||
import Chat from '../../api/chat' // 聊天
|
import Chat from '../../api/chat' // 聊天
|
||||||
import { CircleDoubleDown, CircleDoubleUp } from '@icon-park/vue-next' // icon-park 图标库
|
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
changeViewMode: (mode: 'base' | 'presenter') => void
|
changeViewMode: (mode: 'base' | 'presenter') => void
|
||||||
|
@ -108,15 +103,12 @@ const { exitScreening } = useScreening()
|
||||||
const { fullscreenState, manualExitFullscreen } = useFullscreen()
|
const { fullscreenState, manualExitFullscreen } = useFullscreen()
|
||||||
const chat:any = Chat() // 聊天室
|
const chat:any = Chat() // 聊天室
|
||||||
|
|
||||||
const screenStore =useScreenStore()
|
|
||||||
const rightToolsVisible = ref(false)
|
const rightToolsVisible = ref(false)
|
||||||
const writingBoardToolVisible = ref(false)
|
const writingBoardToolVisible = ref(false)
|
||||||
const timerlVisible = ref(false)
|
const timerlVisible = ref(false)
|
||||||
const slideThumbnailModelVisible = ref(false)
|
const slideThumbnailModelVisible = ref(false)
|
||||||
const laserPen = ref(false)
|
const laserPen = ref(false)
|
||||||
const timer = ref(0) // 记录操作时间
|
const screenStore =useScreenStore()
|
||||||
const iconHide = ref(false) // 工具栏图标是否显示
|
|
||||||
const timerId = ref(null) // 定时器id
|
|
||||||
const contextmenus = (): ContextmenuItem[] => {
|
const contextmenus = (): ContextmenuItem[] => {
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
|
@ -199,30 +191,6 @@ const contextmenus = (): ContextmenuItem[] => {
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
const toolTrigger = (type:string) => {
|
|
||||||
const curT = Date.now()
|
|
||||||
if (curT - timer.value < 200) return
|
|
||||||
iconHide.value = false // 显示图标按钮
|
|
||||||
if (timerId.value) clearTimeout(timerId.value) // 清除定时器
|
|
||||||
switch (type) {
|
|
||||||
case 'icon': // 点击图标
|
|
||||||
timer.value = curT
|
|
||||||
rightToolsVisible.value = !rightToolsVisible.value
|
|
||||||
break
|
|
||||||
case 'enter': // 移入
|
|
||||||
timer.value = curT
|
|
||||||
rightToolsVisible.value = true
|
|
||||||
break
|
|
||||||
case 'leave': // 移出
|
|
||||||
rightToolsVisible.value = false
|
|
||||||
break
|
|
||||||
default:
|
|
||||||
break
|
|
||||||
}
|
|
||||||
timerId.value = setTimeout(() => { // 定时器
|
|
||||||
iconHide.value = true // 隐藏图标按钮
|
|
||||||
}, 2000)
|
|
||||||
}
|
|
||||||
// 下课
|
// 下课
|
||||||
const exitCourse = async () => {
|
const exitCourse = async () => {
|
||||||
// console.log('下课', chat)
|
// console.log('下课', chat)
|
||||||
|
@ -285,18 +253,6 @@ const exitCourse = async () => {
|
||||||
top: -66px;
|
top: -66px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tools-icon{
|
|
||||||
position: absolute;
|
|
||||||
right: 8px;
|
|
||||||
top: -35px;
|
|
||||||
z-index: 1;
|
|
||||||
cursor: pointer;
|
|
||||||
transition: opacity $transitionDelay;
|
|
||||||
&.opacity{
|
|
||||||
opacity: .35;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.content {
|
.content {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|
|
@ -68,7 +68,7 @@ export function textSensitiveWord(data) {
|
||||||
// 图片上传资源库
|
// 图片上传资源库
|
||||||
export function uploadPicture(data) {
|
export function uploadPicture(data) {
|
||||||
return axios({
|
return axios({
|
||||||
url: import.meta.env.VITE_APP_BASE_API + '/smarttalk/file/upload',
|
url: '/dev-api/smarttalk/file/upload',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
headers: {
|
headers: {
|
||||||
'Accept': '*/*',
|
'Accept': '*/*',
|
||||||
|
|
|
@ -194,7 +194,7 @@ import outLink from '@/utils/linkConfig'
|
||||||
import { createWindow, sessionStore, getAppInstallUrl, ipcMsgSend } from '@/utils/tool'
|
import { createWindow, sessionStore, getAppInstallUrl, ipcMsgSend } from '@/utils/tool'
|
||||||
import { cloneDeep } from 'lodash'
|
import { cloneDeep } from 'lodash'
|
||||||
import { delClasswork, listEntpcourse } from '@/api/teaching/classwork'
|
import { delClasswork, listEntpcourse } from '@/api/teaching/classwork'
|
||||||
import { updateClasscourse, getClasscourse } from '@/api/teaching/classcourse'
|
import { updateClasscourse } from '@/api/teaching/classcourse'
|
||||||
import { getClassInfo, getSelfReserv, endClass } from '@/api/classManage'
|
import { getClassInfo, getSelfReserv, endClass } from '@/api/classManage'
|
||||||
import { useGetHomework } from '@/hooks/useGetHomework'
|
import { useGetHomework } from '@/hooks/useGetHomework'
|
||||||
import { editListItem } from '@/hooks/useClassTask'
|
import { editListItem } from '@/hooks/useClassTask'
|
||||||
|
@ -389,13 +389,12 @@ export default {
|
||||||
if (res.code == 200) {
|
if (res.code == 200) {
|
||||||
const resource = res.data
|
const resource = res.data
|
||||||
if (resource.filetype != 'aippt') this.$refs.calssRef.open(aptFileId, row)
|
if (resource.filetype != 'aippt') this.$refs.calssRef.open(aptFileId, row)
|
||||||
else { // aippt 继续上课
|
else {
|
||||||
if (!!sessionStore.get('curr.classcourse')) return ElMessage.warning('公屏已打开,请勿重复操作')
|
if (!!sessionStore.get('curr.classcourse')) return ElMessage.warning('公屏已打开,请勿重复操作')
|
||||||
const { data:classcourse } = await getClasscourse(row.id) // 获取最新课堂信息
|
|
||||||
const msgEl = ElMessage.warning({message:'正在打开公屏,请稍后...',duration: 0})
|
const msgEl = ElMessage.warning({message:'正在打开公屏,请稍后...',duration: 0})
|
||||||
setTimeout(()=>{
|
setTimeout(()=>{
|
||||||
msgEl.close()
|
msgEl.close()
|
||||||
this.openPublicScreen('class', resource, classcourse||row) // 打开公屏-窗口
|
this.openPublicScreen('class', resource, row) // 打开公屏-窗口
|
||||||
}, 2000)
|
}, 2000)
|
||||||
}
|
}
|
||||||
} else ElMessage.error(res.msg||'获取课件信息失败')
|
} else ElMessage.error(res.msg||'获取课件信息失败')
|
||||||
|
|
Loading…
Reference in New Issue