祖安之光
2 天以前 b7ebccdbc4f29cc7663582213886579091c84dd5
src/views/build/conpanyFunctionConsult/digitalFileDep/techType/index.vue
@@ -32,11 +32,12 @@
      <el-table-column label="名称" prop="templateName" align="center"/>
      <el-table-column label="文件" align="center">
        <template #default="scope">
          <el-button link type="primary" @click="downloadFile(scope.row.filePath)">{{scope.row.templateName}}</el-button>
          <el-link type="primary" @click="openFile(scope.row.filePath)">{{scope.row.templateName + '模板' + scope.row.format}}</el-link>
        </template>
      </el-table-column>
      <el-table-column label="操作" align="center" class-name="small-padding fixed-width" >
        <template #default="scope">
          <el-button link type="primary" @click="downloadFile(scope.row.filePath)">下载</el-button>
          <el-button link type="primary" @click="openDialog('edit',scope.row)">编辑</el-button>
          <el-button link type="danger" @click="handleDelete(scope.row)">删除</el-button>
        </template>
@@ -63,6 +64,7 @@
import editDialog from './components/editDialog.vue'
import useUserStore from "@/store/modules/user";
import {getStandardTemp,delStandardTemp} from "@/api/standardSys/standardSys";
import {renderAsync} from "docx-preview";
const userStore = useUserStore()
const { proxy } = getCurrentInstance();
const loading = ref(false);
@@ -96,7 +98,36 @@
onUnmounted(()=>{
})
const openFile = async(path)=>{
  try {
    // 1. 获取文件
    const response = await fetch(import.meta.env.VITE_APP_BASE_API + '/' + path);
    const arrayBuffer = await response.arrayBuffer();
    // 2. 创建新窗口
    const win = window.open('', '_blank');
    win.document.write(`
      <!DOCTYPE html>
      <html>
        <head>
          <title>预览</title>
          <style>
            body { margin: 20px; font-family: Arial; }
            .docx-container { width: 100%; height: 100%; }
          </style>
        </head>
        <body>
          <div id="container" class="docx-container"></div>
        </body>
      </html>
    `);
    // 3. 渲染 DOCX
    await renderAsync(arrayBuffer, win.document.getElementById('container'));
  } catch (error) {
    console.error('预览失败:', error);
    alert(`预览失败: ${error.message}`);
  }
}
const getList = async () => {
  loading.value = true
  const res = await getStandardTemp(data.queryParams)