Merge pull request 'zdg_dev' (#231) from zdg_dev into main
Reviewed-on: #231
This commit is contained in:
commit
a73a409776
|
@ -289,7 +289,8 @@ export default {
|
||||||
{ color: '#5cb87a', percentage: 100 }, // 绿色
|
{ color: '#5cb87a', percentage: 100 }, // 绿色
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
pptMedia: {} // ppt媒体数据
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
@ -591,43 +592,66 @@ export default {
|
||||||
this.createAIPPTByFile(file, this.currentNode.itemtitle + '.aippt')
|
this.createAIPPTByFile(file, this.currentNode.itemtitle + '.aippt')
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async toRousrceUrl(o) {
|
// 将图片|音频|视频 转换为线上地址
|
||||||
if (!!o.src) { // 如果有src就转换
|
getOnlineFileUrl(data, name){
|
||||||
const isBase64 = /^data:image\/(\w+);base64,/.test(o.src)
|
return new Promise(async (resolve, reject) => {
|
||||||
const isBlobUrl = /^blob:/.test(o.src)
|
let file
|
||||||
// console.log('isBase64', o, isBase64)
|
if (data instanceof Blob) { // blob类型判断
|
||||||
if (isBase64) {
|
const fileName = Date.now() + `.${name||'png'}`
|
||||||
const bolb = commUtils.base64ToBlob(o.src)
|
file = commUtils.blobToFile(data, fileName)
|
||||||
const fileName = Date.now() + '.png'
|
} else if (data instanceof File) { // file类型判断
|
||||||
const file = commUtils.blobToFile(bolb, fileName)
|
file = data
|
||||||
// o.src = fileName
|
} else { // 其他类型 base64
|
||||||
// console.log('file', file)
|
const blob = commUtils.base64ToBlob(data)
|
||||||
|
const fileName = Date.now() + `.${name||'png'}`
|
||||||
|
file = commUtils.blobToFile(blob, fileName)
|
||||||
|
}
|
||||||
const formData = new FormData()
|
const formData = new FormData()
|
||||||
formData.append('file', file)
|
formData.append('file', file)
|
||||||
const res = await Api_server.Other.uploadFile(formData)
|
const res = await Api_server.Other.uploadFile(formData)
|
||||||
if (res && res.code == 200){
|
if (res && res.code == 200){
|
||||||
const url = res?.url
|
resolve(res?.url)
|
||||||
url &&(o.src = url)
|
} else { // 失败
|
||||||
|
reject(res?.msg||'上传失败')
|
||||||
}
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
async toRousrceUrl(o) {
|
||||||
|
if (!!o.src) { // 如果有src就转换
|
||||||
|
const isBase64 = /^data:image\/(\w+);base64,/.test(o.src)
|
||||||
|
const isBlobUrl = /^blob:/.test(o.src)
|
||||||
|
let onLineUrl = '' // 线上地址
|
||||||
|
if (!!o.zipPath) onLineUrl = this.pptMedia[o.zipPath] || '' // 是否已上传过
|
||||||
|
if (onLineUrl) o.src = onLineUrl // 已存在线上地址直接赋值
|
||||||
|
else { // 不存在重新上传
|
||||||
|
if (isBase64) { // 相同资源处理
|
||||||
|
const url = await this.getOnlineFileUrl(o.src)
|
||||||
|
url && o.zipPath && (this.pptMedia[o.zipPath] = url) // 缓存
|
||||||
} else if (isBlobUrl) { // 视频和音频
|
} else if (isBlobUrl) { // 视频和音频
|
||||||
const res = await fetch(o.src)
|
const res = await fetch(o.src)
|
||||||
const blob = await res.blob()
|
const blob = await res.blob()
|
||||||
const fileName = o.type=='video'? Date.now() + '.mp4':Date.now() + '.mp3'
|
const url = await this.getOnlineFileUrl(blob, o.type=='video'?'mp4':'mp3')
|
||||||
const file = commUtils.blobToFile(blob, fileName)
|
URL.revokeObjectURL(o.src) // 释放内存
|
||||||
// o.src = fileName
|
|
||||||
// console.log('file', file)
|
|
||||||
const formData = new FormData()
|
|
||||||
formData.append('file', file)
|
|
||||||
const ress = await Api_server.Other.uploadFile(formData)
|
|
||||||
if (ress && ress.code == 200){
|
|
||||||
const url = ress?.url
|
|
||||||
url &&(o.src = url)
|
url &&(o.src = url)
|
||||||
|
url && o.zipPath && (this.pptMedia[o.zipPath] = url) // 缓存
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// 处理元素为shape 可能存在背景图等
|
||||||
|
const isBg = o?.gradient?.type == 'image' && !!o?.gradient?.image
|
||||||
|
if (isBg) {
|
||||||
|
const {src, zipPath} = o.gradient.image || {}
|
||||||
|
let onLineUrl = '' // 线上地址
|
||||||
|
if (!!zipPath) onLineUrl = this.pptMedia[zipPath] || '' // 是否已上传过
|
||||||
|
if (onLineUrl) o.gradient.image.src = onLineUrl // 已存在线上地址直接赋值
|
||||||
|
else { // 重新上传
|
||||||
|
const url = await this.getOnlineFileUrl(src)
|
||||||
|
o.gradient.image.src = url
|
||||||
|
url && zipPath && (this.pptMedia[zipPath] = url) // 缓存
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (o?.background?.image) await this.toRousrceUrl(o.background.image)
|
if (o?.background?.image) await this.toRousrceUrl(o.background.image)
|
||||||
// if (o?.elements) o.elements.forEach(async o => {await this.toRousrceUrl(o)})
|
|
||||||
if(o?.elements){
|
if(o?.elements){
|
||||||
for (let element of o.elements) {
|
for (let element of o.elements) {
|
||||||
await this.toRousrceUrl(element);
|
await this.toRousrceUrl(element);
|
||||||
|
@ -637,6 +661,7 @@ export default {
|
||||||
async createAIPPTByFile(file,fileShowName) {
|
async createAIPPTByFile(file,fileShowName) {
|
||||||
this.pgDialog.visible = true
|
this.pgDialog.visible = true
|
||||||
this.pgDialog.pg.percentage = 0
|
this.pgDialog.pg.percentage = 0
|
||||||
|
this.pptMedia = {} // 清空媒体数据
|
||||||
const resPptJson = await PPTXFileToJson(file).catch(() => {
|
const resPptJson = await PPTXFileToJson(file).catch(() => {
|
||||||
ElMessageBox.alert('PPT文件转换失败!请点击素材右侧...下载文件后打开另存为PPTX文件格式再进行导入!')
|
ElMessageBox.alert('PPT文件转换失败!请点击素材右侧...下载文件后打开另存为PPTX文件格式再进行导入!')
|
||||||
this.pgDialog.visible = false
|
this.pgDialog.visible = false
|
||||||
|
|
Loading…
Reference in New Issue