zzw
2023-11-17 40eb98bcf3028ca1de391ac140f44920eddd9e8b
web/src/commonJS/commonFile.js
@@ -2,71 +2,112 @@
//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}
    console.log(previewContainer)
    Vue.prototype.$EventBus.$emit(pageMarkerfun)
    if (suffixName == 'pdf') {
    if (suffixName == 'pdf' || suffixName == 'jpg' || suffixName == 'jpeg' || suffixName == 'png') {
      if (previewContainer != null) {
        previewContainer.src = `${window.SITE_CONFIG['apiURL']}/sys/oss/content2?fileId=${fileId}`;
        previewContainer.src = `${window.SITE_CONFIG['apiURL']}/sys/oss/content2?fileId=${fileId}`
      } else {
        alert("iframe未加载")
        alert("渲染区域未加载")
      }
    } else if (suffixName == 'doc' || suffixName == 'docx') {
      const response = await http.get('/sys/oss/content2', {params: formData, responseType: 'blob'});
      console.log(response)
      response.success = true;
      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.transformExcelToLucky(
        arrayBuffer,
        function (exportJson, luckysheetfile) {
          luckysheet.create({
            container: pageMarkerfun,
            data: exportJson.sheets,
            lang: 'zh',
            showtoolbar: false,
            showinfobar: false,
          });
        })
    } else {
      alert("仅支持Word文件和PDF文件预览");
      alert("文件类型不支持预览");
    }
  } catch(error) {
    if (error.message=='Request failed with status code 404')
    alert("文件不存在请重新上传!")
  } catch (error) {
    if (error.message == 'Request failed with status code 404')
      alert("文件不存在请重新上传!")
  }
}
function setAccessoryFormatComm(row, pageMarker) {
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') {
      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'
        }
        data += '<span><a href="javascript:void(0)" onclick="openPreviewDialog(\'' + fileId + '\',\'' + suffixName + '\',document.getElementById(\'' + pageMarker2 + '\'),\'' + pageMarker2 + '\');return false;"> <button>预览</button></a></span>';
        // 将 title 函数的引用传递给按钮的点击事件
        data += '<span><a href="javascript:void(0)" onclick="openPreviewDialog(\'' + fileId + '\',\'' + suffixName + '\',document.getElementById(\'' + pageMarker2 + '\'),\'' + pageMarker2 + '\');return false;"> <button onclick="titleName(\'' + suffixName + '\', \'' + fileName + '\')">预览</button></a>' + fileName + '</span>';
      } else {
        data += '<span><a href="' + url + '" style="display:block;overflow:hidden;word-break:keep-all;white-space:nowrap;text-overflow:ellipsis;">' + fileName + '</a></span>';
      }
      data += '<span><a href="' + url + '" style="display:block;overflow:hidden;word-break:keep-all;white-space:nowrap;text-overflow:ellipsis;">' + fileName + '</a></span>';
    }
    return data;
  } else {
    return '<span></span>'
  }
}
function setAccessoryFormat2(row, pageMarker) {
function setAccessoryFormat2(row, pageMarker,that) {
  if (row.accessoryMap) {
    console.log(111)
    let data = '';
    for (let key in row.accessoryMap) {
      let url = key;
@@ -79,18 +120,23 @@
      let fileId = /_zt_oss_id=(\d+)/.exec(url);
      fileId = fileId ? fileId[1] : ''; // 获取匹配的内容,如果为空则赋值为空字符串
      let pageMarker2 = pageMarker
      console.log(111)
      if (suffixName == 'pdf' || suffixName == 'doc' || suffixName == 'docx') {
      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;
        }
        console.log(111)
        return openPreviewDialog(fileId, suffixName, document.getElementById(pageMarker2), pageMarker2);
      } else {
        alert("目前仅支持Word文件和PDF文件预览")
        return alert("文件类型不支持预览")
      }
    }
    return data;
@@ -99,4 +145,41 @@
  }
}
export {setAccessoryFormatComm, setAccessoryFormat2}
function setAccessoryFormat3(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 '<span></span>';
  }
}
export {setAccessoryFormatComm, setAccessoryFormat2, setAccessoryFormat3}