import {renderAsync} from "docx-preview"; //let docx = require("docx-preview"); import http from '../../packages/utils/request'; import Vue from 'vue'; import LuckyExcel from 'luckyexcel'; window.openPreviewDialog = async function (fileId, suffixName, previewContainer, pageMarkerfun) { try { let formData = {fileId: fileId, suffixName: suffixName} Vue.prototype.$EventBus.$emit(pageMarkerfun) if (suffixName === 'pdf' || suffixName === 'jpg' || suffixName === 'jpeg' || suffixName === 'png') { if (previewContainer != null) { previewContainer.src = `${window.SITE_CONFIG['apiURL']}/sys/oss/content2?fileId=${fileId}` } else { alert("渲染区域未加载") } } else if (suffixName === 'doc' || suffixName === 'docx') { const response = await http.get('/sys/oss/content2', {params: formData, responseType: 'blob'}); const arrayBuffer = await response.arrayBuffer(); setTimeout(async () => { if (previewContainer != null) { await renderAsync(arrayBuffer, previewContainer); } else { alert("渲染区域未加载") } }, 100); } else if (suffixName === 'xls' || suffixName === 'xlsx') { const response = await http.get('/sys/oss/content2', {params: formData, responseType: 'blob'}); const arrayBuffer = await response.arrayBuffer(); // 使用 LuckyExcel 转换 Excel 文件数据 LuckyExcel.transformExcelToLucky(arrayBuffer, function (exportJson, luckysheetfile) { try { // 使用 Luckysheet 渲染表格 luckysheet.create({ container: pageMarkerfun, data: exportJson.sheets, lang: 'zh', showtoolbar: false, showinfobar: false, }); } catch (err) { console.error('渲染 Luckysheet 时出错:', err); } }); } else { alert("文件类型不支持预览"); } } catch (error) { console.log(error,'错误信息') if (error.message === 'Request failed with status code 404') alert("文件不存在请重新上传!") } } function setAccessoryFormatComm(row, pageMarker, that) { //一行多个文件预览 if (row.accessoryMap) { let data = ''; // 定义 title 函数 window.titleName = async function (suffixName, fileName) { if (suffixName === 'pdf') { that.pdfName = fileName; } else if (suffixName == 'doc' || suffixName == 'docx') { that.docName = fileName; } else if (suffixName == 'jpg' || suffixName == 'jpeg' || suffixName == 'png') { that.imgName = fileName; } else if (suffixName == 'xls' || suffixName == 'xlsx') { that.xlsName = fileName; } } for (let key in row.accessoryMap) { let url = key; let fileName = row.accessoryMap[key]; let suffixName = ''; if (fileName != null) { let arr = fileName.split('.'); suffixName = arr[arr.length - 1].toLowerCase(); } let fileId = /_zt_oss_id=(\d+)/.exec(url); fileId = fileId ? fileId[1] : ''; // 获取匹配的内容,如果为空则赋值为空字符串 let pageMarker2 = pageMarker; if (suffixName == 'pdf' || suffixName == 'doc' || suffixName == 'docx' || suffixName == 'jpg' || suffixName == 'jpeg' || suffixName == 'png' || suffixName == 'xls' || suffixName == 'xlsx') { if (suffixName == 'pdf') { pageMarker2 = pageMarker + '-pdf' } else if (suffixName == 'doc' || suffixName == 'docx') { pageMarker2 = pageMarker + '-doc' } else if (suffixName == 'jpg' || suffixName == 'jpeg' || suffixName == 'png') { pageMarker2 = pageMarker + '-img' } else if (suffixName == 'xls' || suffixName == 'xlsx') { pageMarker2 = pageMarker + '-xls' } // 将 title 函数的引用传递给按钮的点击事件 data += ' ' + fileName + ''; } else { data += '' + fileName + ''; } } return data; } else { return '' } } function setAccessoryFormatSingle(row, pageMarker, that) { //一行单个文件预览 if (row.accessoryMap) { let data = ''; for (let key in row.accessoryMap) { let url = key; let fileName = row.accessoryMap[key]; let suffixName = ''; if (fileName != null) { let arr = fileName.split('.'); suffixName = arr[arr.length - 1].toLowerCase(); } let fileId = /_zt_oss_id=(\d+)/.exec(url); fileId = fileId ? fileId[1] : ''; // 获取匹配的内容,如果为空则赋值为空字符串 let pageMarker2 = pageMarker if (suffixName === 'pdf' || suffixName === 'doc' || suffixName === 'docx' || suffixName === 'jpg' || suffixName === 'jpeg' || suffixName === 'png' || suffixName === 'xls' || suffixName === 'xlsx') { if (suffixName === 'pdf') { pageMarker2 = pageMarker + '-pdf' that.pdfName = fileName; } else if (suffixName === 'doc' || suffixName === 'docx') { pageMarker2 = pageMarker + '-doc' that.docName = fileName; } else if (suffixName === 'jpg' || suffixName === 'jpeg' || suffixName === 'png') { pageMarker2 = pageMarker + '-img' that.imgName = fileName; } else if (suffixName === 'xls' || suffixName === 'xlsx') { pageMarker2 = pageMarker + '-xls' that.xlsName = fileName; } return openPreviewDialog(fileId, suffixName, document.getElementById(pageMarker2), pageMarker2); } else { return alert("文件类型不支持预览") } } return data; } else { return ''; } } function setAccessoryFormatByForm(row, pageMarker, that) { //表单单个文件预览 if (row.files.groups[0].fields[0].files[0]) { let data = ''; let url = row.files.groups[0].fields[0].files[0].url; let fileName = row.files.groups[0].fields[0].files[0].name; let suffixName = ''; if (fileName != null) { let arr = fileName.split('.'); suffixName = arr[arr.length - 1].toLowerCase(); let fileId = /_zt_oss_id=(\d+)/.exec(url); fileId = fileId ? fileId[1] : ''; // 获取匹配的内容,如果为空则赋值为空字符串 let pageMarker2 = pageMarker if (suffixName == 'pdf' || suffixName == 'doc' || suffixName == 'docx' || suffixName == 'jpg' || suffixName == 'jpeg' || suffixName == 'png' || suffixName == 'xls' || suffixName == 'xlsx') { if (suffixName == 'pdf') { pageMarker2 = pageMarker + '-pdf' that.pdfName = fileName; } else if (suffixName == 'doc' || suffixName == 'docx') { pageMarker2 = pageMarker + '-doc' that.docName = fileName; } else if (suffixName == 'jpg' || suffixName == 'jpeg' || suffixName == 'png') { pageMarker2 = pageMarker + '-img' that.imgName = fileName; } else if (suffixName == 'xls' || suffixName == 'xlsx') { pageMarker2 = pageMarker + '-xls' that.xlsName = fileName; } return openPreviewDialog(fileId, suffixName, document.getElementById(pageMarker2), pageMarker2); } else { return alert("文件类型不支持预览") } } return data; } else { return ''; } } export {setAccessoryFormatComm, setAccessoryFormatSingle, setAccessoryFormatByForm}