mirror of
https://github.com/kuaifan/dootask.git
synced 2026-04-24 02:38:12 +00:00
perf: 文件打开保存机制
This commit is contained in:
parent
d0c7ee5e47
commit
a723c2a44a
@ -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('参数错误');
|
||||
|
||||
@ -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
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "DooTask",
|
||||
"version": "0.13.67",
|
||||
"version": "0.13.68",
|
||||
"description": "DooTask is task management system.",
|
||||
"scripts": {
|
||||
"start": "./cmd dev",
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user