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}