perf: office文件预览

This commit is contained in:
kuaifan 2021-12-30 10:58:51 +08:00
parent 28abad0276
commit 27158e1ee7
4 changed files with 21 additions and 16 deletions

View File

@ -96,9 +96,10 @@ class FileController extends AbstractController
{ {
$id = Request::input('id'); $id = Request::input('id');
// //
$permission = 0;
if (Base::isNumber($id)) { if (Base::isNumber($id)) {
User::auth(); User::auth();
$file = File::permissionFind(intval($id)); $file = File::permissionFind(intval($id), 0, $permission);
} elseif ($id) { } elseif ($id) {
$fileLink = FileLink::whereCode($id)->first(); $fileLink = FileLink::whereCode($id)->first();
$file = $fileLink?->file; $file = $fileLink?->file;
@ -108,7 +109,10 @@ class FileController extends AbstractController
} else { } else {
return Base::retError('参数错误'); return Base::retError('参数错误');
} }
return Base::retSuccess('success', $file); //
$array = $file->toArray();
$array['permission'] = $permission;
return Base::retSuccess('success', $array);
} }
/** /**

View File

@ -164,7 +164,7 @@ export default {
"callbackUrl": 'http://nginx/api/file/content/office?id=' + fileKey + '&token=' + this.userToken, "callbackUrl": 'http://nginx/api/file/content/office?id=' + fileKey + '&token=' + this.userToken,
} }
}; };
if (this.isPreview) { if (this.readOnly) {
config.editorConfig.mode = "view"; config.editorConfig.mode = "view";
config.editorConfig.callbackUrl = null; config.editorConfig.callbackUrl = null;
if (!config.editorConfig.user.id) { if (!config.editorConfig.user.id) {

View File

@ -280,11 +280,11 @@
<!--查看/修改文件--> <!--查看/修改文件-->
<DrawerOverlay <DrawerOverlay
v-model="editShow" v-model="fileShow"
class="page-file-drawer" class="page-file-drawer"
:mask-closable="false"> :mask-closable="false">
<FileContent v-if="editInfo.permission > 0" v-model="editShow" :file="editInfo"/> <FilePreview v-if="fileInfo.permission === 0" :file="fileInfo"/>
<FilePreview v-else-if="editInfo.permission > -1" :file="editInfo"/> <FileContent v-else v-model="fileShow" :file="fileInfo"/>
</DrawerOverlay> </DrawerOverlay>
</div> </div>
@ -384,8 +384,8 @@ export default {
linkData: {}, linkData: {},
linkLoad: 0, linkLoad: 0,
editShow: false, fileShow: false,
editInfo: {permission: -1}, fileInfo: {permission: -1},
uploadDir: false, uploadDir: false,
uploadIng: 0, uploadIng: 0,
@ -499,9 +499,9 @@ export default {
this.$store.state.method.setStorage("fileTableMode", val) this.$store.state.method.setStorage("fileTableMode", val)
}, },
editShow(val) { fileShow(val) {
if (val) { if (val) {
this.$store.dispatch("websocketPath", "file/content/" + this.editInfo.id); this.$store.dispatch("websocketPath", "file/content/" + this.fileInfo.id);
} else { } else {
this.$store.dispatch("websocketPath", "file"); this.$store.dispatch("websocketPath", "file");
this.getFileList(); this.getFileList();
@ -754,8 +754,8 @@ export default {
if (this.$Electron) { if (this.$Electron) {
this.openSingle(item); this.openSingle(item);
} else { } else {
this.editInfo = item; this.fileInfo = item;
this.editShow = true; this.fileShow = true;
} }
} }
}, },

View File

@ -1,19 +1,20 @@
<template> <template>
<div class="electron-file"> <div class="single-file">
<PageTitle :title="fileInfo.name"/> <PageTitle :title="fileInfo.name"/>
<Loading v-if="loadIng > 0"/> <Loading v-if="loadIng > 0"/>
<template v-else> <template v-else>
<FilePreview v-if="code" :code="code" :file="fileInfo"/> <FilePreview v-if="code || fileInfo.permission === 0" :code="code" :file="fileInfo"/>
<FileContent v-else v-model="fileShow" :file="fileInfo"/> <FileContent v-else v-model="fileShow" :file="fileInfo"/>
</template> </template>
</div> </div>
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
.electron-file { .single-file {
display: flex; display: flex;
align-items: center; align-items: center;
.file-content { .file-content,
.file-preview {
border-radius: 0; border-radius: 0;
} }
} }