添加文件的预览选项

main
于阔 9 months ago
parent dc99902c4e
commit 9af08e2cbc

@ -0,0 +1,3 @@
import PreViewFile from './src/PreViewFile.vue'
export { PreViewFile }

@ -0,0 +1,60 @@
<script setup lang="ts">
import VueOfficeDocx from "@vue-office/docx";
import mammoth from 'mammoth';
import "@vue-office/docx/lib/index.css";
import { reactive,ref } from "vue";
import { useRoute } from 'vue-router';
const route = useRoute();
// 线
let docxSrc = ref("");
//
const pageQuery = ref(route || null);
const fileData = pageQuery.value?.query?.fileData;
//
let rendered = ()=>{
console.log("渲染完成");
}
let htmlContent = ref("");
const fetchDocFile = async ()=>{
try {
// APIDOC
// const response = await axios.get('/api/get-doc-file', {
// responseType: 'blob' // blob
// });
const arrayBuffer = new Blob(fileData).arrayBuffer();
// 使FileReader
// const reader = new FileReader();
// reader.onload = function(event) {
// const arrayBuffer = event.target.result;
// // arrayBuffer
// };
// reader.onerror = function(error) {
// console.error(':', error);
// //
// };
// reader.readAsArrayBuffer(fileData);
const result = mammoth.convertToHtml({ arrayBuffer });
console.log(result,"result信息");
// HTMLhtmlContent
htmlContent.value = result.value; // result.value HTML
// 使 result.messages
} catch (error) {
console.error('Error fetching or converting DOC file:', error);
}
}
fetchDocFile();
</script>
<template>
<div>
<!-- <input type="file" @change="handleChange" /> -->
<!-- <VueOfficeDocx :src="docxSrc" :rendered="rendered" /> -->
<div v-html="htmlContent"></div>
</div>
</template>
<style scoped></style>

@ -86,6 +86,17 @@ export const constantRouterMap: AppRouteRecordRaw[] = [
noTagsView: true, noTagsView: true,
}, },
}, },
/* ----------------------在线Word的预览开始------------------------- */
{
path: '/PreViewFile',
component: () => import('@/components/PreViewFile/src/PreViewFile.vue'),
name: 'PreViewFile',
meta: {
title: '文件预览',
hidden:true
},
},
/* ----------------------在线Word的预览结束------------------------- */
// 可疑案例处理界面 // 可疑案例处理界面
{ {
path: '/caseManageT', path: '/caseManageT',

@ -22,7 +22,9 @@ import { Dialog } from '@/components/Dialog'
import { getWidth, transfDictList } from '@/utils'; import { getWidth, transfDictList } from '@/utils';
import Detail from './components/Detail.vue' import Detail from './components/Detail.vue'
import { REPORTING_STATUS_LIST } from './constants' import { REPORTING_STATUS_LIST } from './constants'
import { useRouter } from 'vue-router';
const router = useRouter()
const { t } = useI18n() const { t } = useI18n()
const ids = ref<string[]>([]) const ids = ref<string[]>([])
@ -115,6 +117,9 @@ const tableColumns = reactive<TableColumn[]>([
default: (data: any) => { default: (data: any) => {
return ( return (
<> <>
<ElLink type="primary" underline={false} onClick={() => ShowPreViewFile(data.row)}>
预览
</ElLink>
<ElLink type="primary" underline={false} onClick={() => action(data.row, 'edit')}> <ElLink type="primary" underline={false} onClick={() => action(data.row, 'edit')}>
{t('tableDemo.edit')} {t('tableDemo.edit')}
</ElLink> </ElLink>
@ -134,6 +139,7 @@ const tableColumns = reactive<TableColumn[]>([
}} }}
onConfirm={() => delData(data.row)} onConfirm={() => delData(data.row)}
></ElPopconfirm> ></ElPopconfirm>
</> </>
) )
} }
@ -171,7 +177,20 @@ const searchSchema = reactive<FormSchema[]>([
component: 'DatePicker' component: 'DatePicker'
} }
]) ])
/** 预览 **/
const ShowPreViewFile = (data)=>{
const routeData = router.resolve({
name:'PreViewFile',
query:{
fileData:data.fileFlow,
}
})
router.push({name:'PreViewFile',
query:{
fileData:data.fileFlow,
}});
// window.open(routeData.href,'_blank')
}
const searchParams = ref({}) const searchParams = ref({})
const setSearchParams = (data: any) => { const setSearchParams = (data: any) => {
searchParams.value = data searchParams.value = data
@ -207,7 +226,7 @@ const action = async (row: TableData, type: string) => {
} }
const AddAction = () => { const AddAction = () => {
dialogTitle.value = t('tableDemo.add') dialogTitle.value = "上传模板";
currentRow.value = undefined currentRow.value = undefined
dialogVisible.value = true dialogVisible.value = true
actionType.value = 'add' actionType.value = 'add'

Loading…
Cancel
Save