txt文件预览提交

This commit is contained in:
wangxk 2025-03-28 17:28:41 +08:00
parent fc32e0fecd
commit bdac9db39a
4 changed files with 59 additions and 30 deletions

View File

@ -186,7 +186,6 @@ export default function useFileData() {
case 'audio': openAudio(row); break; case 'audio': openAudio(row); break;
default: tishi(row); default: tishi(row);
} }
// clearSelection(); // clearSelection();
} else { } else {
if (row.type === 'ROOT') { if (row.type === 'ROOT') {

View File

@ -31,6 +31,10 @@ const props = defineProps({
type: String, type: String,
default: false default: false
}, },
fileUrl: {
type: String,
required: true
},
}); });
const statusMessage = ref('') const statusMessage = ref('')
onMounted(() => { onMounted(() => {
@ -49,14 +53,27 @@ const editor = useEditor({
}) })
const txtloading = ref(false) const txtloading = ref(false)
// //
const loadContent = () => { // const loadContent = () => {
txtloading.value = true // txtloading.value = true
apicontent({ id: props.rowId }).then((res) => { // apicontent({ id: props.rowId }).then((res) => {
// debugger // // debugger
editor.value.commands.setContent(convertNewlinesToParagraphs(res.data)) // editor.value.commands.setContent(convertNewlinesToParagraphs(res.data))
txtloading.value = false // txtloading.value = false
// })
}) // }
const loadContent = async () => {
txtloading.value = true;
try {
const response = await fetch(props.fileUrl);
if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`);
const text = await response.text();
editor.value.commands.setContent(convertNewlinesToParagraphs(text));
// ElMessage.success('');
} catch (error) {
ElMessage.error(`加载失败: ${error.message}`);
} finally {
txtloading.value = false;
}
} }
function convertNewlinesToParagraphs(text) { function convertNewlinesToParagraphs(text) {
return text.split('\n').map(line => `<p>${line}</p>`).join(''); return text.split('\n').map(line => `<p>${line}</p>`).join('');
@ -70,10 +87,7 @@ function convertParagraphsToNewlines(html) {
// //
const saveCcontent = () => { const saveCcontent = () => {
// debugger
console.log(editor.value.getHTML())
const content = convertParagraphsToNewlines(editor.value.getHTML()) const content = convertParagraphsToNewlines(editor.value.getHTML())
console.log(content)
saveContent({ id: props.rowId, content: content }).then((res) => { saveContent({ id: props.rowId, content: content }).then((res) => {
loadContent() loadContent()
ElMessage.success('保存成功') ElMessage.success('保存成功')

View File

@ -774,7 +774,6 @@ function copyMove(type: any) {
// tableIdarr.value // tableIdarr.value
} }
function paste() { function paste() {
debugger
let norepeat = [] let norepeat = []
let repeatObj: any = { let repeatObj: any = {
newPath: '', newPath: '',
@ -1506,10 +1505,12 @@ function handleCustomEvent(row: any) {
// //
const textedit = ref(false) const textedit = ref(false)
const rowId = ref('') const rowId = ref('')
const fileUrl1 = ref('')
function testClick(row: any) { function testClick(row: any) {
rowId.value = row.id rowId.value = row.id
textedit.value = true textedit.value = true
title.value = '编辑 - ' + row.workPath + row.fileName title.value = '编辑 - ' + row.workPath + row.fileName
fileUrl1.value = row.url
} }
function textClose() { function textClose() {
textedit.value = false textedit.value = false
@ -1959,7 +1960,7 @@ function texexceltClose() {
@update="CloseView" /> @update="CloseView" />
<el-dialog :title="title" v-model="textedit" :before-close="textClose" top="30px" draggable width="60%" <el-dialog :title="title" v-model="textedit" :before-close="textClose" top="30px" draggable width="60%"
destroy-on-close> destroy-on-close>
<textEdit :rowId="rowId" /> <textEdit :rowId="rowId" :fileUrl="fileUrl1"/>
<!-- <txtexl :file-url="fileUrl" /> --> <!-- <txtexl :file-url="fileUrl" /> -->
</el-dialog> </el-dialog>

View File

@ -12,6 +12,7 @@ import { tstaskList, getTsNodesTree, tsFilesPage, deleteTsFilesByIds } from "@/a
import { listLocalAndBackup, compare, uploadToBackup, downloadToLocal, deleteTsFilesById } from "@/api/fileSynchronization"; import { listLocalAndBackup, compare, uploadToBackup, downloadToLocal, deleteTsFilesById } from "@/api/fileSynchronization";
//text //text
import textEdit from '@/components/textEditing/index.vue' import textEdit from '@/components/textEditing/index.vue'
import txtexl from '@/components/textEditing/txtexl.vue'
// //
import useFileUpload from "@/components/file/file/useFileUpload"; import useFileUpload from "@/components/file/file/useFileUpload";
import useHeaderStorageList from "@/components/header/useHeaderStorageList"; import useHeaderStorageList from "@/components/header/useHeaderStorageList";
@ -478,7 +479,6 @@ function delhuifu() {
restoreArr.value.forEach((item: any) => { restoreArr.value.forEach((item: any) => {
ids.value.push(item.id) ids.value.push(item.id)
}) })
// debugger
deleteTsFilesByIds({ ids: ids.value.join(','), type: 'minio' }).then((res: any) => { deleteTsFilesByIds({ ids: ids.value.join(','), type: 'minio' }).then((res: any) => {
if (res.code == '0') { if (res.code == '0') {
ElMessage.success("删除成功") ElMessage.success("删除成功")
@ -598,16 +598,12 @@ const title1 = ref('')
const isViewfile = ref(false) const isViewfile = ref(false)
const fileType = ref('') const fileType = ref('')
function openPreview(row: any) { function openPreview(row: any) {
// debugger
if (getFileExtension(row.fileName) == 'pdf' || getFileExtension(row.fileName) == 'pptx' || getFileExtension(row.fileName) == 'xlsx' || getFileExtension(row.fileName) == 'xls' || getFileExtension(row.fileName) == 'docx' || getFileExtension(row.fileName) == 'doc' || getFileExtension(row.fileName) == 'bin') { if (getFileExtension(row.fileName) == 'pdf' || getFileExtension(row.fileName) == 'pptx' || getFileExtension(row.fileName) == 'xlsx' || getFileExtension(row.fileName) == 'xls' || getFileExtension(row.fileName) == 'docx' || getFileExtension(row.fileName) == 'doc' || getFileExtension(row.fileName) == 'bin') {
// debugger
title1.value = row.fileName title1.value = row.fileName
ViewfileUrl.value = row.url ViewfileUrl.value = row.url
isViewfile.value = true isViewfile.value = true
fileType.value = getFileExtension(row.fileName) fileType.value = getFileExtension(row.fileName)
} else if (getFileExtension(row.fileName) == 'txt') {
testClick(row)
} else { } else {
row.fileType = getFileType(row.fileName) row.fileType = getFileType(row.fileName)
filePreview.value = row filePreview.value = row
@ -615,17 +611,32 @@ function openPreview(row: any) {
openRow(row) openRow(row)
} }
} }
const textedit = ref(false) const textedit = ref(false)
const rowId = ref('') const rowId = ref('')
const title = ref('') const title = ref('')
const fileUrl1 = ref('')
function testClick(row: any) { function testClick(row: any) {
rowId.value = row.id rowId.value = row.id
textedit.value = true textedit.value = true
title.value = '编辑 - ' + row.fileName title.value = '编辑 - ' + row.fileName
fileUrl1.value = row.url
} }
function textClose() { function textClose() {
textedit.value = false textedit.value = false
} }
//
const textedit1 = ref(false)
const fileUrl = ref('')
function testexcelClick(row: any) {
rowId.value = row.id
textedit1.value = true
title.value = row.fileName
fileUrl.value = row.url
}
function texexceltClose() {
textedit1.value = false
}
function getFileExtension(filename: any) { function getFileExtension(filename: any) {
// //
const lastIndex = filename.lastIndexOf('.'); const lastIndex = filename.lastIndexOf('.');
@ -732,7 +743,7 @@ function CloseView() {
}"> }">
<div class="menu-item" @click="handleMenuClick('backups', 'local')">备份</div> <div class="menu-item" @click="handleMenuClick('backups', 'local')">备份</div>
<div class="menu-item" @click="handleMenuClick('delete', 'local')">删除</div> <div class="menu-item" @click="handleMenuClick('delete', 'local')">删除</div>
<div class="menu-item" @click="handleMenuClick('preview', 'local')">预览</div> <div v-if="currentNode && currentNode.isFile == 'FILE'" class="menu-item" @click="handleMenuClick('preview', 'local')">预览</div>
</div> </div>
</el-scrollbar> </el-scrollbar>
@ -765,7 +776,7 @@ function CloseView() {
}"> }">
<div class="menu-item" @click="handleMenuClick('restore', 'minio')">恢复</div> <div class="menu-item" @click="handleMenuClick('restore', 'minio')">恢复</div>
<div class="menu-item" @click="handleMenuClick('delete', 'minio')">删除</div> <div class="menu-item" @click="handleMenuClick('delete', 'minio')">删除</div>
<div class="menu-item" @click="handleMenuClick('preview', 'minio')">预览</div> <div v-if="currentNode && currentNode.isFile == 'FILE'" class="menu-item" @click="handleMenuClick('preview', 'minio')">预览</div>
</div> </div>
</el-scrollbar> </el-scrollbar>
@ -931,9 +942,13 @@ function CloseView() {
@update="CloseView" /> @update="CloseView" />
<el-dialog :title="title" v-model="textedit" :before-close="textClose" top="30px" draggable width="60%" <el-dialog :title="title" v-model="textedit" :before-close="textClose" top="30px" draggable width="60%"
destroy-on-close> destroy-on-close>
<textEdit :rowId="rowId" /> <textEdit :rowId="rowId" :fileUrl="fileUrl1" />
<!-- </el-scrollbar> --> <!-- </el-scrollbar> -->
</el-dialog> </el-dialog>
<el-dialog :title="title" v-model="textedit1" :before-close="texexceltClose" top="30px" draggable
width="60%" destroy-on-close>
<txtexl :file-url="fileUrl" :rowId="rowId" />
</el-dialog>
</div> </div>
</section> </section>