mirror of
https://github.com/kuaifan/dootask.git
synced 2025-12-12 03:01:12 +00:00
perf: 支持更多办公文件格式
This commit is contained in:
parent
bcc74dd927
commit
0d6fd903f1
@ -79,9 +79,28 @@ class File extends AbstractModel
|
||||
* office文件
|
||||
*/
|
||||
const officeExt = [
|
||||
'doc', 'docx',
|
||||
'xls', 'xlsx',
|
||||
'ppt', 'pptx',
|
||||
// 文本文件
|
||||
'doc', 'docx', // Microsoft Word 文档
|
||||
'dot', 'dotx', // Word 模板
|
||||
'odt', // OpenDocument 文本格式
|
||||
'ott', // OpenDocument 文本模板
|
||||
'rtf', // 富文本格式
|
||||
|
||||
// 电子表格
|
||||
'xls', 'xlsx', // Microsoft Excel 电子表格
|
||||
'xlsm', // Excel 含宏的工作簿
|
||||
'xlt', 'xltx', // Excel 模板
|
||||
'ods', // OpenDocument 电子表格格式
|
||||
'ots', // OpenDocument 电子表格模板
|
||||
'csv', // 逗号分隔值
|
||||
'tsv', // 制表符分隔值
|
||||
|
||||
// 演示文稿
|
||||
'ppt', 'pptx', // Microsoft PowerPoint 演示文稿
|
||||
'pps', 'ppsx', // PowerPoint 幻灯片放映
|
||||
'pot', 'potx', // PowerPoint 模板
|
||||
'odp', // OpenDocument 演示文稿格式
|
||||
'otp', // OpenDocument 演示文稿模板
|
||||
];
|
||||
|
||||
/**
|
||||
@ -264,9 +283,9 @@ class File extends AbstractModel
|
||||
'text', 'md', 'markdown' => 'document',
|
||||
'drawio' => 'drawio',
|
||||
'mind' => 'mind',
|
||||
'doc', 'docx' => "word",
|
||||
'xls', 'xlsx' => "excel",
|
||||
'ppt', 'pptx' => "ppt",
|
||||
'doc', 'docx', 'dot', 'dotx', 'odt', 'ott', 'rtf' => "word",
|
||||
'xls', 'xlsx', 'xlsm', 'xlt', 'xltx', 'ods', 'ots', 'csv', 'tsv' => "excel",
|
||||
'ppt', 'pptx', 'pps', 'ppsx', 'pot', 'potx', 'odp', 'otp' => "ppt",
|
||||
'wps' => "wps",
|
||||
'jpg', 'jpeg', 'webp', 'png', 'gif', 'bmp', 'ico', 'raw', 'svg' => "picture",
|
||||
'rar', 'zip', 'jar', '7-zip', 'tar', 'gzip', '7z', 'gz', 'apk', 'dmg' => "archive",
|
||||
|
||||
@ -2017,7 +2017,7 @@ class Base
|
||||
$type = ['mp3', 'wma', 'wav', 'amr'];
|
||||
break;
|
||||
case 'excel':
|
||||
$type = ['xls', 'xlsx'];
|
||||
$type = ['xls', 'xlsx', 'xlsm', 'xlt', 'xltx', 'ods', 'ots', 'csv', 'tsv'];
|
||||
break;
|
||||
case 'app':
|
||||
$type = ['apk'];
|
||||
|
||||
@ -1,11 +1,8 @@
|
||||
<template>
|
||||
<div class="component-only-office">
|
||||
<template v-if="$A.isDesktop()">
|
||||
<Alert v-if="loadError" class="load-error" type="error" show-icon>{{$L('组件加载失败!')}}</Alert>
|
||||
<div :id="id" class="placeholder"></div>
|
||||
</template>
|
||||
<IFrame v-else class="preview-iframe" :src="previewUrl" @on-load="onFrameLoad"/>
|
||||
<div v-if="loading" class="office-loading"><Loading/></div>
|
||||
<Alert v-if="loadError" class="load-error" type="error" show-icon>{{$L('组件加载失败!')}}</Alert>
|
||||
<div :id="id" class="placeholder"></div>
|
||||
<div v-if="loadIng > 0" class="office-loading"><Loading/></div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -60,15 +57,11 @@
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
// 只有桌面端才使用 OnlyOffice
|
||||
|
||||
import {mapState} from "vuex";
|
||||
import IFrame from "../pages/manage/components/IFrame";
|
||||
import {languageName} from "../language";
|
||||
|
||||
export default {
|
||||
name: "OnlyOffice",
|
||||
components: {IFrame},
|
||||
props: {
|
||||
id: {
|
||||
type: String,
|
||||
@ -99,7 +92,7 @@ export default {
|
||||
|
||||
data() {
|
||||
return {
|
||||
loading: false,
|
||||
loadIng: 0,
|
||||
loadError: false,
|
||||
|
||||
docEditor: null,
|
||||
@ -138,10 +131,6 @@ export default {
|
||||
}
|
||||
}
|
||||
return fileUrl;
|
||||
},
|
||||
|
||||
previewUrl() {
|
||||
return $A.apiUrl(this.fileUrl) + "&down=preview"
|
||||
}
|
||||
},
|
||||
|
||||
@ -151,10 +140,7 @@ export default {
|
||||
if (!id) {
|
||||
return;
|
||||
}
|
||||
if (!$A.isDesktop()) {
|
||||
return;
|
||||
}
|
||||
this.loading = true;
|
||||
this.loadIng++;
|
||||
this.loadError = false;
|
||||
$A.loadScript($A.mainUrl("office/web-apps/apps/api/documents/api.js")).then(_ => {
|
||||
if (!this.documentKey) {
|
||||
@ -172,27 +158,16 @@ export default {
|
||||
}).catch(_ => {
|
||||
this.loadError = true
|
||||
}).finally(_ => {
|
||||
this.loading = false
|
||||
setTimeout(_ => {
|
||||
this.loadIng--;
|
||||
}, 300)
|
||||
})
|
||||
},
|
||||
immediate: true,
|
||||
},
|
||||
|
||||
previewUrl: {
|
||||
handler() {
|
||||
if (!$A.isDesktop()) {
|
||||
this.loading = true;
|
||||
}
|
||||
},
|
||||
immediate: true
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
onFrameLoad() {
|
||||
this.loading = false;
|
||||
},
|
||||
|
||||
getType(type) {
|
||||
switch (type) {
|
||||
case 'word':
|
||||
@ -219,7 +194,7 @@ export default {
|
||||
}
|
||||
//
|
||||
let codeId = this.code || this.value.id;
|
||||
let fileName = $A.strExists(this.fileName, '.') ? this.fileName : (this.fileName + '.' + this.fileType);
|
||||
let fileName = $A.strExists(this.fileName, '.') ? this.fileName : (this.fileName + '.' + (this.value.ext || this.fileType));
|
||||
let fileKey = `${this.fileType}-${keyAppend||codeId}`;
|
||||
if (this.historyId > 0) {
|
||||
fileKey += `-${this.historyId}`
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user