perf: 文件打开保存机制

This commit is contained in:
kuaifan 2022-04-24 14:38:38 +08:00
parent d0c7ee5e47
commit a723c2a44a
8 changed files with 36 additions and 11 deletions

View File

@ -492,7 +492,7 @@ class FileController extends AbstractController
*/
public function content__save()
{
Base::checkClientVersion('0.9.13');
Base::checkClientVersion('0.13.68');
$user = User::auth();
//
$id = Base::getPostInt('id');
@ -535,9 +535,10 @@ class FileController extends AbstractController
$contentString = $content;
$file->ext = 'mind';
break;
case 'code':
case 'txt':
$contentString = $content;
case 'code':
$contentArray = Base::json2array($content);
$contentString = $contentArray['content'];
break;
default:
return Base::retError('参数错误');

View File

@ -374,13 +374,15 @@ class File extends AbstractModel
if (in_array($fileExt, self::codeExt) && $fileSize < 2 * 1024 * 1024)
{
// 文本预览限制2M内的文件
$data['content'] = file_get_contents($publicPath) ?: 'Content deleted';
$data['content'] = [
'content' => file_get_contents($publicPath) ?: 'Content deleted',
];
$data['file_mode'] = 'code';
}
elseif (in_array($fileExt, File::officeExt))
{
// office预览
$data['content'] = '';
$data['content'] = json_decode('{}');
$data['file_mode'] = 'office';
}
else

View File

@ -1,6 +1,6 @@
{
"name": "DooTask",
"version": "0.13.67",
"version": "0.13.68",
"description": "DooTask is task management system.",
"scripts": {
"start": "./cmd dev",

View File

@ -52,7 +52,7 @@
</template>
<Drawio v-else-if="file.type=='drawio'" ref="myFlow" v-model="contentDetail" :title="file.name" @saveData="handleClick('saveBefore')"/>
<Minder v-else-if="file.type=='mind'" ref="myMind" v-model="contentDetail" @saveData="handleClick('saveBefore')"/>
<AceEditor v-else-if="['code', 'txt'].includes(file.type)" v-model="contentDetail" :ext="file.ext" @saveData="handleClick('saveBefore')"/>
<AceEditor v-else-if="['code', 'txt'].includes(file.type)" v-model="contentDetail.content" :ext="file.ext" @saveData="handleClick('saveBefore')"/>
<OnlyOffice v-else-if="['word', 'excel', 'ppt'].includes(file.type)" v-model="contentDetail" :documentKey="documentKey"/>
</div>
</template>

View File

@ -29,7 +29,7 @@
</template>
<Drawio v-else-if="file.type=='drawio'" ref="myFlow" :value="contentDetail" :title="file.name" readOnly/>
<Minder v-else-if="file.type=='mind'" ref="myMind" :value="contentDetail" readOnly/>
<AceEditor v-else-if="['code', 'txt'].includes(file.type)" :value="contentDetail" :ext="file.ext" readOnly/>
<AceEditor v-else-if="['code', 'txt'].includes(file.type)" :value="contentDetail.content" :ext="file.ext" readOnly/>
<OnlyOffice v-else-if="['word', 'excel', 'ppt'].includes(file.type)" :value="contentDetail" :code="code" :documentKey="documentKey" readOnly/>
</div>
</template>

View File

@ -333,9 +333,10 @@
<DrawerOverlay
v-model="fileShow"
class="page-file-drawer"
:beforeClose="fileBeforeClose"
:mask-closable="false">
<FilePreview v-if="fileInfo.permission === 0" :file="fileInfo"/>
<FileContent v-else v-model="fileShow" :file="fileInfo"/>
<FileContent v-else ref="fileContent" v-model="fileShow" :file="fileInfo"/>
</DrawerOverlay>
<!--预览文件-->
@ -1517,6 +1518,27 @@ export default {
});
},
fileBeforeClose() {
return new Promise(resolve => {
if (!this.$refs.fileContent) {
resolve();
return;
}
if (this.$refs.fileContent.equalContent) {
resolve()
return
}
$A.modalConfirm({
content: '文件尚未保存,是否放弃修改?',
cancelText: '取消',
okText: '放弃',
onOk: () => {
resolve()
}
});
})
},
/********************文件上传部分************************/
uploadUpdate(fileList) {

View File

@ -7,7 +7,7 @@
<TEditor v-else-if="isType('text')" :value="msgDetail.content.content" height="100%" readOnly/>
<Drawio v-else-if="isType('drawio')" v-model="msgDetail.content" :title="msgDetail.msg.name" readOnly/>
<Minder v-else-if="isType('mind')" :value="msgDetail.content" readOnly/>
<AceEditor v-else-if="isType('code')" v-model="msgDetail.content" :ext="msgDetail.msg.ext" class="view-editor" readOnly/>
<AceEditor v-else-if="isType('code')" v-model="msgDetail.content.content" :ext="msgDetail.msg.ext" class="view-editor" readOnly/>
<OnlyOffice v-else-if="isType('office')" v-model="officeContent" :code="officeCode" :documentKey="documentKey" readOnly/>
<iframe v-else-if="isType('preview')" class="preview-iframe" :src="previewUrl"/>
<div v-else class="no-support">{{$L('不支持单独查看此消息')}}</div>

View File

@ -7,7 +7,7 @@
<TEditor v-else-if="isType('text')" :value="fileDetail.content.content" height="100%" readOnly/>
<Drawio v-else-if="isType('drawio')" v-model="fileDetail.content" :title="fileDetail.name" readOnly/>
<Minder v-else-if="isType('mind')" :value="fileDetail.content" readOnly/>
<AceEditor v-else-if="isType('code')" v-model="fileDetail.content" :ext="fileDetail.ext" class="view-editor" readOnly/>
<AceEditor v-else-if="isType('code')" v-model="fileDetail.content.content" :ext="fileDetail.ext" class="view-editor" readOnly/>
<OnlyOffice v-else-if="isType('office')" v-model="officeContent" :code="officeCode" :documentKey="documentKey" readOnly/>
<iframe v-else-if="isType('preview')" class="preview-iframe" :src="previewUrl"/>
<div v-else class="no-support">{{$L('不支持单独查看此消息')}}</div>