{"version":3,"file":"FilePreview.mjs","sources":["../../../../src/components/FilePreview/FilePreview.vue"],"sourcesContent":["<template>\r\n  <div class=\"FilePreview\">\r\n    <a-modal :transitionName=\"''\" :maskTransitionName=\"''\" :mask=\"false\" destroyOnClose centered width=\"100%\"\r\n             wrap-class-name=\"full-modal\" ref=\"userOrgPosSelectorRef\" v-model:visible=\"visible\" @cancel=\"modalClear\">\r\n      <template #title>\r\n        <div style=\"display: flex;flex-direction: column;justify-content: center;align-items: center\">\r\n          <div style=\"width: 100%; text-align: center\">{{ _fileName }}</div>\r\n        </div>\r\n      </template>\r\n      <template #footer>\r\n        <div style=\"display: flex; flex-direction: row; justify-content: center; align-items: center; padding: 12px\">\r\n          <a-space wrap>\r\n            <a-button :icon=\"h(SyncOutlined)\" type=\"primary\" block @click=\"refresh\">刷新</a-button>\r\n            <a-button :icon=\"h(PlusCircleOutlined)\" type=\"primary\" block v-if=\"attachmentType == 'IMAGE'\"\r\n                      @click=\"imageCtrl('放大')\">放大\r\n            </a-button>\r\n            <a-button :icon=\"h(MinusCircleOutlined)\" type=\"primary\" v-if=\"attachmentType == 'IMAGE'\"\r\n                      @click=\"imageCtrl('缩小')\">缩小\r\n            </a-button>\r\n            <a-button :icon=\"h(UndoOutlined)\" type=\"primary\" v-if=\"attachmentType == 'IMAGE'\"\r\n                      @click=\"imageCtrl('旋转')\">旋转\r\n            </a-button>\r\n            <a-button :icon=\"h(LogoutOutlined)\" type=\"link\" block @click=\"modalClear\">退出</a-button>\r\n          </a-space>\r\n        </div>\r\n      </template>\r\n      <div\r\n          style=\"width: 100%; height: 100%; display: flex; flex-direction: column; justify-content: flex-start; align-items: flex-start\">\r\n        <div\r\n            style=\"width: 100%; height: 20%; display: flex; flex-direction: row; justify-content: center; align-items: center\"\r\n            v-if=\"loading\">\r\n          <a-spin :spinning=\"loading && !showProgress\" :indicator=\"indicator\"></a-spin>\r\n          <a-progress v-if=\"showProgress\" type=\"circle\" :percent=\"progress\" />\r\n        </div>\r\n        <iframe v-if=\"showIframe\" v-show=\"!loading\" ref=\"iframe\" width=\"100%\" height=\"100%\" :src=\"src\"></iframe>\r\n      </div>\r\n    </a-modal>\r\n  </div>\r\n</template>\r\n<script setup name=\"FilePreview\">\r\nimport {h} from 'vue'\r\nimport {\r\n  LoadingOutlined,\r\n  SyncOutlined,\r\n  PlusCircleOutlined,\r\n  MinusCircleOutlined,\r\n  UndoOutlined,\r\n  LogoutOutlined\r\n} from '@ant-design/icons-vue'\r\nimport downloadFile from \"@/utils/downloadFile.js\";\r\n//import { ref } from 'vue'\r\nconst indicator = h(LoadingOutlined, {\r\n  style: {\r\n    fontSize: '34px'\r\n  },\r\n  spin: true\r\n})\r\nlet showProgress = ref(false)\r\nlet progress = ref(0)\r\nlet iframeHost = __APP_ENV__.VITE_PREVIEW_HOST\r\nlet iframeAddress = __APP_ENV__.VITE_PREVIEW_ADDRESS\r\nlet visible = ref(false)\r\nlet loading = ref(true)\r\nlet address = ref(iframeAddress)\r\nlet iframe = ref()\r\nlet _fileName = ref(undefined)\r\nlet _id = ref(undefined)\r\nlet _type = ref(undefined)\r\nlet showIframe = ref(true)\r\nlet attachmentType = ref(undefined)\r\nlet src = ref('')\r\nconst imageCtrl = (type) => {\r\n  try {\r\n    iframe.value.contentWindow.postMessage(\r\n        JSON.stringify({\r\n          attachmentCtrl: {\r\n            type\r\n          }\r\n        }),\r\n        iframeHost\r\n    )\r\n  } catch (e) {\r\n  }\r\n}\r\nconst refresh = () => {\r\n  showIframe.value = false\r\n  loading.value = true\r\n  setTimeout(() => {\r\n    showIframe.value = true\r\n    setData({id: _id.value, fileName: _fileName.value, type: _type.value})\r\n  }, 50)\r\n}\r\nconst showModal = () => {\r\n  showIframe.value = true\r\n  visible.value = true\r\n}\r\nconst modalClear = (e) => {\r\n  window.removeEventListener('message', listenFileLoad)\r\n  visible.value = false\r\n  showIframe.value = false\r\n  loading.value = true\r\n}\r\nconst listenFileLoad = (res) => {\r\n  try {\r\n    let data = JSON.parse(res.data)\r\n    if (data.event == 'loading' && data.bool === true) {\r\n      loading.value = true\r\n    } else if (data.event == 'loading' && data.bool === false) {\r\n      loading.value = false\r\n    } else if (data.event == 'loading' && data.bool === false && data.errorMsg) {\r\n      loading.value = false\r\n    } else if (data.event == 'progress' && data.hasOwnProperty('percentComplete') && !data.errorMsg) {\r\n      showProgress.value = true\r\n      progress.value = data.percentComplete\r\n      if (progress.value === 100) {\r\n        setTimeout(() => {\r\n          showProgress.value = false\r\n        }, 500)\r\n      }\r\n    }\r\n  } catch (e) {\r\n  }\r\n}\r\nconst setData = ({id, type, fileName, lengthComputable}) => {\r\n  showProgress.value = false\r\n  progress.value = 0\r\n  if (/(\\.gif|\\.jpeg|\\.png|\\.jpg|\\.bmp)/gi.test(fileName)) {\r\n    attachmentType.value = 'IMAGE'\r\n  } else if (/(\\.pdf)/gi.test(fileName)) {\r\n    attachmentType.value = 'PDF'\r\n  } else if (/(\\.doc|\\.docx|\\.xls|\\.xlsx|\\.ppt|\\.pptx)/gi.test(fileName)) {\r\n    attachmentType.value = 'WORD'\r\n  } else if (/(\\.txt)/gi.test(fileName)) {\r\n    attachmentType.value = 'TXT'\r\n  } else {\r\n    attachmentType.value = 'NO_TYPE'\r\n  }\r\n  loading.value = true\r\n  _fileName.value = fileName\r\n  _id.value = id\r\n  _type.value = type\r\n  window.removeEventListener('message', listenFileLoad)\r\n  window.addEventListener('message', listenFileLoad)\r\n  showModal()\r\n  return new Promise((resolve, reject) => {\r\n    downloadFile.fileGetInfo(id, type, fileName, (xhr) => {\r\n      src.value = address.value + '?token=' + xhr.token + '&fileName=' + xhr.fileName + '&url=' + xhr.url + '&lengthComputable=' + lengthComputable\r\n      console.log('src.value------------------>', src.value)\r\n    })\r\n  })\r\n}\r\ndefineExpose({\r\n  showModal,\r\n  modalClear,\r\n  setData\r\n})\r\n</script>\r\n<style lang=\"less\" scoped>\r\n.FilePreview {\r\n}\r\n</style>\r\n<style lang=\"less\">\r\n.full-modal {\r\n  .ant-modal {\r\n    max-width: 100%;\r\n    top: 0;\r\n    padding-bottom: 0;\r\n    margin: 0;\r\n  }\r\n  .ant-modal-content {\r\n    display: flex;\r\n    flex-direction: column;\r\n    height: calc(100vh);\r\n  }\r\n  .ant-modal-body {\r\n    flex: 1;\r\n    padding: 0;\r\n  }\r\n  .ant-modal-footer,\r\n  .ant-modal-header {\r\n    background-color: #f5f5f5;\r\n  }\r\n}\r\n</style>\r\n"],"names":["_openBlock","_createElementBlock","_createVNode","_unref","_createElementVNode","_toDisplayString","_createBlock"],"mappings":"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"}