改名AIPPT

This commit is contained in:
朱浩 2024-12-09 10:51:07 +08:00
parent a78497b263
commit e0a56b37ef
7 changed files with 135 additions and 23 deletions

View File

@ -35,7 +35,7 @@ const getFileTypeIcon = () => {
txt: 'icon-txt',
rar: 'icon-rar',
apt: 'icon-A',
aptist: 'icon-A',
aippt: 'icon-A',
}
if (iconObj[name]) {
return '#' + iconObj[name]

View File

@ -87,6 +87,12 @@ const headerMenus = [
icon: 'icon-gongzuotai',
path: '/desktop'
},
{
name: '教学实践',
id: 4,
icon: 'icon-jiaoxueshijian',
path: '/prepare'
},
{
name: '资源中心',
id: 3,

View File

@ -230,7 +230,7 @@ const HTTP_SERVER_API = (type, params = {}) => {
ppttype: 'file',
title: enpt.coursetitle,
fileurl: '',
filetype: 'aptist',
filetype: 'aippt',
datacontent: '',
filekey: '',
filetag: '',
@ -287,7 +287,7 @@ const handleAll = async(type, row) =>{
break;
}
case 'open': { // -pptist
if (row.filetype != 'aptist') return msgUtils.msgWarning('暂不支持该类型文件操作!')
if (row.filetype != 'aippt') return msgUtils.msgWarning('暂不支持该类型文件操作!')
sessionStore.set('curr.resource', row) //
createWindow('open-win', {
url: '/pptist', //
@ -312,7 +312,7 @@ const handleAll = async(type, row) =>{
// icons type svg
const getIcon = (o, type) => {
let icon = typeof o == 'string' ? o : o?.filetype
if (['aptist'].includes(o?.filetype)) icon = 'pptx'
if (['aippt'].includes(o?.filetype)) icon = 'pptx'
if (!!type) { // icon
switch(type) {
case 'svg': // svg

View File

@ -262,7 +262,7 @@ const createClasscourse = async () => {
// getClasscourseList('update') //
ElMessage.success('创建课程-成功')
// -pptList
if (myClassActive.value.filetype == 'aptist') {
if (myClassActive.value.filetype == 'aippt') {
const msgEl = ElMessage.warning({message:'正在打开公屏,请稍后...',duration: 0})
setTimeout(() => {
msgEl.close()

View File

@ -341,7 +341,7 @@ export default {
cookieData: { ...configObj.data }
})
return
} else if(items.fileFlag === 'aptist') { // aptist PPT-List
} else if(items.fileFlag === 'aippt') { // aippt PPT-List
return this.$emit('change', 'click', items)
}
if (!items||!items.fileSuffix) return;

View File

@ -2,8 +2,20 @@
<div v-loading="isLoading" class="page-resource flex">
<ChooseTextbook @node-click="nodeClick" />
<div class="page-center-wrap">
<el-dropdown class="prepare-center-dropdown">
<el-button type="primary">
新建<el-icon class="el-icon--right"><arrow-down /></el-icon>
</el-button>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item @click="createAptFile">新建文枢课件</el-dropdown-item>
<el-dropdown-item>AI一键生成</el-dropdown-item>
<el-dropdown-item>导入PPT</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
<el-tabs v-model="activeAptTab" style="height: 100%;">
<el-tab-pane label="教学课件" name="教学课件" class="prepare-center-jxkj">
<el-tab-pane label="文枢课件" name="教学课件" class="prepare-center-jxkj">
<div class="prepare-center-header">
<div class="center-create-btn" style="background-color: rgb(64,158,255)" @click="createAptFile">
<div class="create-btn-title"><el-icon><Plus /></el-icon><label>APT</label></div>
@ -145,7 +157,7 @@
<!-- <button @click="test">test</button> -->
</template>
<script setup>
import { Check,Plus } from '@element-plus/icons-vue'
import {Check, Plus, Position} from '@element-plus/icons-vue'
import Reserv from '@/views/prepare/container/reserv.vue'
import { ArrowDown } from '@element-plus/icons-vue'
import PptDialog from '@/views/prepare/container/ppt-dialog.vue'
@ -253,11 +265,11 @@ export default {
},
currentKJFileList() {
// return this.currentFileList.filter((item) => item.fileFlag === 'apt' || item.fileFlag === '')
return this.currentFileList.filter((item) => ['apt','aptist','课件'].includes(item.fileFlag))
return this.currentFileList.filter((item) => ['apt','aippt','课件'].includes(item.fileFlag))
},
currentSCFileList() {
// return this.currentFileList.filter((item) => item.fileFlag !== 'apt' && item.fileFlag !== '')
return this.currentFileList.filter((item) => !['apt','aptist','课件'].includes(item.fileFlag))
return this.currentFileList.filter((item) => !['apt','aippt','课件'].includes(item.fileFlag))
}
},
@ -321,7 +333,7 @@ export default {
if(item.fileFlag === 'apt') {
this.$refs.calssRef.open(item.fileId, classObj)
}
if(item.fileFlag === 'aptist') {
if(item.fileFlag === 'aippt') {
this.$refs.calssRef.open(item.fileId, classObj)
}
},
@ -378,8 +390,8 @@ export default {
}, 1000)
break
}
case 'click': { // --aptist
if (row.fileFlag === 'aptist' && !!row.fileId) {
case 'click': { // --aippt
if (row.fileFlag === 'aippt' && !!row.fileId) {
const res = await getEntpcoursefile(row.fileId)
if (res && res.code === 200) {
sessionStore.set('curr.resource', res.data) //
@ -461,6 +473,93 @@ export default {
},500)
})
},
createAIPPT() {
listEntpcourse({
evalid: this.currentNode.id,
edituserid: this.userStore.userId,
pageSize: 500
}).then((response) => {
if (response.rows.length <= 0) return
let resCourse = response.rows[0]
//
let form = {
parentid: 0,
entpid: this.userStore.deptId,
entpcourseid: resCourse.id,
ppttype: 'file',
title: resCourse.coursetitle,
fileurl: '',
filetype: 'aippt',
datacontent: '',
filekey: '',
filetag: '',
fileidx: 0,
dflag: 0,
status: '',
edituserid: this.userStore.userId
}
addEntpcoursefileReturnId(form).then((slideid) => {
let pagearray = []
//
pagearray.push({
key: '公屏',
title: '公屏页',
slidedata: {
attrs: { width: 1333, height: 749.8125 },
className: 'Stage',
children: [
{
attrs: {},
className: 'Layer',
children: [
{
attrs: {
width: 1333,
height: 749.8125,
fill: 'white',
name: 'fixedbackground',
listening: true
},
className: 'Rect'
}
]
}
]
}
})
//
var form = {
parentid: slideid,
entpid: resCourse.entpid,
entpcourseid: resCourse.id,
ppttype: 'file',
title: '第一页',
fileurl: '',
filetype: 'slide',
datacontent: JSON.stringify(pagearray),
filekey: '',
filetag: '',
fileidx: 0,
dflag: 0,
status: '',
edituserid: this.userStore.userId
}
addEntpcoursefileReturnId(form).then((res) => {
creatAPT({
...this.uploadData,
fileId: slideid,
fileShowName: this.currentNode.itemtitle + '.apt'
}).then((res) => {
this.currentFileList.unshift(res.resData)
setTimeout(()=>{
this.$refs['kjItemRef'+res.resData.id][0].openFileWin(res.resData);
},500)
})
})
})
})
},
createAptFile() {
listEntpcourse({
evalid: this.currentNode.id,
@ -653,7 +752,7 @@ export default {
for (let i = 0; i < this.currentFileList.length; i++) {
let item = this.currentFileList[i]
if (item.fileFlag === 'apt') continue;
if (item.fileFlag === 'aptist') continue;
if (item.fileFlag === 'aippt') continue;
await asyncLocalFile(item)
}
this.asyncAllFileVisiable = false
@ -872,6 +971,13 @@ export default {
margin: 0 5px;
border-radius: 10px;
background-color: white;
position: relative;
.prepare-center-dropdown{
z-index: 9999;
position: absolute;
right: 10px;
top: 4px;
}
.prepare-center-jxkj{
height: 100%;
display: flex;

View File

@ -239,8 +239,8 @@ const HTTP_SERVER_API = (type, params = {}) => {
const node = courseObj.node || {}
const def = {
fileId: '', // id - Entpcoursefile id
fileFlag: 'aptist',
fileShowName: node.itemtitle + '.aptist',
fileFlag: 'aippt',
fileShowName: node.itemtitle + '.aippt',
textbookId: node.rootid,
levelFirstId: node.parentid||node.id,
levelSecondId: node.parentid && node.id,
@ -299,7 +299,7 @@ const getDefParams = (params) => {
ppttype: 'file',
title: enpt.coursetitle,
fileurl: '',
filetype: 'aptist',
filetype: 'aippt',
datacontent: '',
filekey: '',
filetag: '',