tav-ui
Version:
1 lines • 23.6 kB
Source Map (JSON)
{"version":3,"file":"file-view2.mjs","sources":["../../../../../../../packages/components/file-view/src/file-view.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { computed, defineComponent, nextTick, reactive, ref, toRefs, watch } from 'vue'\nimport { CloseOutlined, LeftOutlined, RightOutlined } from '@ant-design/icons-vue'\nimport { Button, Image, Modal, Spin } from 'ant-design-vue'\nimport { useMessage } from '@tav-ui/hooks/web/useMessage'\nimport { download } from '@tav-ui/utils/file/_download'\nimport { useGlobalConfig } from '@tav-ui/hooks/global/useGlobalConfig'\nimport { tavI18n } from '@tav-ui/locales'\nimport { fileViewProps } from './types'\nimport type { FileViewItemType } from './types'\nimport type { Ref } from 'vue'\nimport type { Nullable } from '../../modal/src/types'\n\nexport default defineComponent({\n name: 'TaFileView',\n components: {\n Modal,\n Spin,\n LeftOutlined,\n RightOutlined,\n Button,\n CloseOutlined,\n Image,\n },\n props: fileViewProps,\n emits: ['update:show'],\n setup(props, { emit }) {\n const globalConfig = useGlobalConfig('components') as Ref<Record<string, any>>\n const { createMessage } = useMessage()\n const state = reactive({\n index: props.index,\n filePath: '',\n showModal: false,\n pageLoading: false,\n supportWPS: false,\n })\n const fileViewContentElRef = ref<HTMLElement | null>(null)\n\n const loadFileTypes = {\n office: ['doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'pdf'],\n pic: ['gif', 'jpeg', 'jpg', 'png'],\n }\n const ignoreList = [\n ...['zip', 'tar', '7z'], // previous ignoreList\n ...['mp3', 'mp3', 'wav', 'rm', 'rpm'], // audio\n ...['mpeg', 'mpg', 'avi', 'movie'], // video\n ...['txt'], // text\n ]\n const currentFile = computed((): FileViewItemType => props.list[state.index] || {})\n const fileType = computed(() => {\n let type: Nullable<string> = null\n const suffix = currentFile.value?.suffix\n if (suffix) {\n for (const item in loadFileTypes) {\n //@ts-ignore\n if ((loadFileTypes[item] as any).some((v: any) => suffix == v)) {\n type = item\n break\n }\n }\n }\n return type\n })\n const loadIframeHandle = () => {\n const iframeEle = window.document.getElementById('fileIframe')\n if (iframeEle) {\n // iframeEle.onload = (data) => {\n // let iframeWindow = iframeEle.contentWindow;\n // let removeNode = iframeWindow.document.getElementById(\"HeaderTopBars\");\n // console.log(iframeWindow);\n // console.log(removeNode);\n // };\n }\n }\n const afterCloseHandle = () => {\n emit('update:show', false)\n }\n const getFile = (cb?: any) => {\n if (!globalConfig.value || !globalConfig.value.TaFileView) {\n afterCloseHandle()\n return\n }\n // 防止多次请求\n const id = currentFile.value?.fileId || currentFile.value?.id\n if (state.pageLoading || !id || fileType.value == '') {\n afterCloseHandle()\n return\n }\n\n state.filePath = ''\n state.pageLoading = true\n // const previewFile = globalConfig.value.TaFileView.previewFile\n const previewWPSFile = globalConfig.value.TaFileView.previewWPSFile\n console.log(currentFile.value)\n\n previewWPSFile(id, props.AppId)\n .then((res: any) => {\n state.pageLoading = false\n state.supportWPS = !!res?.data?.wps\n cb && cb()\n if (state.supportWPS) {\n const {\n createByName,\n createTime,\n fileId,\n fileName,\n fileSize,\n officeType,\n pageUrl,\n suffix,\n token,\n watermark,\n wpsAppId,\n } = res.data\n\n const options = {\n officeType,\n fileId,\n appId: wpsAppId,\n token,\n suffix,\n fileName,\n fileSize,\n userName: createByName,\n time: `${new Date(createTime).getTime()}`,\n watermarker: watermark,\n from: 'desktop',\n }\n\n state.filePath = `${pageUrl}/wps-file-view/?${encodeURIComponent(\n new URLSearchParams({ ...options }) as unknown as string\n )}`\n } else {\n state.filePath = res.data.onlineUrl\n // previewFile(id, props.AppId)\n // .then((_res) => {\n // state.pageLoading = false\n // state.filePath = _res.data\n // loadIframeHandle()\n // cb && cb()\n // })\n // .catch(() => {\n // // console.log(err);\n // state.pageLoading = false\n // setTimeout(afterCloseHandle, 1000)\n // // state.pageLoading = false;\n // })\n }\n })\n .catch(() => {\n // console.log(err);\n state.pageLoading = false\n setTimeout(afterCloseHandle, 1000)\n // state.pageLoading = false;\n })\n }\n\n const goPrev = () => {\n if (state.index > 0) {\n state.index--\n nextTick(() => {\n getFile()\n })\n }\n }\n const goNext = () => {\n if (state.index < props.list.length - 1) {\n state.index++\n nextTick(() => {\n getFile()\n })\n }\n }\n const downloadFile = () => {\n download(currentFile.value)\n }\n watch(\n () => props.show,\n (newData) => {\n if (newData && ignoreList.includes(currentFile.value.suffix)) {\n createMessage.warning(tavI18n('Tav.file.message.1'))\n afterCloseHandle()\n return\n }\n if (newData) {\n state.index = props.index\n getFile(() => {\n state.showModal = newData\n state.index = props.index\n })\n } else {\n afterCloseHandle()\n state.filePath = ''\n }\n }\n )\n // watch(\n // () => currentFile.value,\n // () => {\n // nextTick(() => {\n // getFile()\n // })\n // // console.log(\"文件改变\");\n // }\n // )\n return {\n ...toRefs(state),\n fileViewContentElRef,\n tavI18n,\n currentFile,\n fileType,\n downloadFile,\n goPrev,\n goNext,\n afterCloseHandle,\n }\n },\n})\n</script>\n\n<template>\n <Modal\n v-model:visible=\"showModal\"\n :destroy-on-close=\"true\"\n :footer=\"null\"\n width=\"100%\"\n :after-close=\"afterCloseHandle\"\n :wrap-class-name=\"`file-view-modal ${supportWPS ? 'hide-modal-header' : ''}`\"\n >\n <template #title>\n <!-- <div class=\"file-view-action\">\n <Button type=\"text\" @click=\"downloadFile\">下载</Button>\n </div>\n <span class=\"file-view-num\">{{ index + 1 }}/{{ list.length }}</span> -->\n <Button type=\"text\" class=\"file-view-close-btn\" @click=\"() => (showModal = !showModal)\">\n <template #icon><CloseOutlined /></template>\n {{ tavI18n('Tav.common.closeText') }}\n </Button>\n <div class=\"line line--vertical\" />\n <div class=\"file-view-title\">\n <template v-if=\"fileType === 'pic'\">\n <svg\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M3 3a2 2 0 0 1 2-2h9.586a1 1 0 0 1 .707.293l5.414 5.414a1 1 0 0 1 .293.707V21a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V3Z\"\n fill=\"#FFC60A\"\n />\n <path\n opacity=\"0.8\"\n d=\"M15 1.483a.2.2 0 0 1 .341-.142L20.66 6.66a.2.2 0 0 1-.142.341H17a2 2 0 0 1-2-2V1.483Z\"\n fill=\"#D99904\"\n />\n <path\n d=\"M8.372 10a1 1 0 0 0-1 1v.182a1 1 0 0 0 1 1h.181a1 1 0 0 0 1-1V11a1 1 0 0 0-1-1h-.181Zm8.323 2.76a.6.6 0 0 1 1.04.408V18.5a.5.5 0 0 1-.5.5H7.401a.4.4 0 0 1-.307-.657l2.926-3.49a1 1 0 0 1 1.532 0l1.523 1.816 3.62-3.91Z\"\n fill=\"#fff\"\n />\n </svg>\n </template>\n <!-- <template v-if=\"fileType === 'audio'\">\n <svg width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\"><defs><path d=\"M1.5 0h14.086a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V26.5a1.5 1.5 0 01-1.5 1.5h-19A1.5 1.5 0 010 26.5v-25A1.5 1.5 0 011.5 0z\" id=\"icon_file_audio_nor_svg__a\"></path><path d=\"M16.293.293l5.414 5.414A1 1 0 0121.91 6H17.5A1.5 1.5 0 0116 4.5V.09a1 1 0 01.293.203z\" id=\"icon_file_audio_nor_svg__b\"></path></defs><g fill=\"none\" fill-rule=\"evenodd\"><g transform=\"translate(5 2)\"><use fill=\"#34C724\" xlink:href=\"#icon_file_audio_nor_svg__a\"></use><use fill=\"#2EA121\" xlink:href=\"#icon_file_audio_nor_svg__b\"></use></g><path d=\"M7.649 10.703h16.648V27.35H7.65z\"></path><path d=\"M15.566 11.947l.076.01 4.687 1.1c.158.037.275.17.29.332l.193 1.974a.378.378 0 01-.458.406l-3.787-.835a.151.151 0 00-.183.162l.764 8.012a.51.51 0 01-.043.246 3.026 3.026 0 01-6.05-.127 3.027 3.027 0 014.864-2.405l-.74-8.463a.378.378 0 01.463-.402z\" fill=\"#FFF\"></path></g></svg>\n </template>\n <template v-if=\"fileType === 'video'\">\n <svg width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\"><defs><path d=\"M1.5 0h14.086a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V26.5a1.5 1.5 0 01-1.5 1.5h-19A1.5 1.5 0 010 26.5v-25A1.5 1.5 0 011.5 0z\" id=\"icon_file_video_nor_svg__a\"></path><path d=\"M16.293.293l5.414 5.414A1 1 0 0121.91 6H17.5A1.5 1.5 0 0116 4.5V.09a1 1 0 01.293.203z\" id=\"icon_file_video_nor_svg__b\"></path></defs><g fill=\"none\" fill-rule=\"evenodd\"><g transform=\"translate(5 2)\"><use fill=\"#3370FF\" xlink:href=\"#icon_file_video_nor_svg__a\"></use><use fill=\"#245BDB\" xlink:href=\"#icon_file_video_nor_svg__b\"></use></g><path d=\"M7 11h16.649v16.649H7z\"></path><path d=\"M10.757 15h7.486c.383 0 .7.285.75.654l.007.103v7.486c0 .383-.285.7-.654.75l-.103.007h-7.486a.757.757 0 01-.75-.654L10 23.243v-7.486c0-.383.285-.7.654-.75l.103-.007h7.486zm11.819 1.792a.568.568 0 01.075.282v4.854a.568.568 0 01-.85.493l-1.799-1.028v-3.784l1.8-1.028a.568.568 0 01.774.211zM13.1 16.5h-1.2a.4.4 0 00-.4.4v1.2c0 .22.18.4.4.4h1.2a.4.4 0 00.4-.4v-1.2a.4.4 0 00-.4-.4z\" fill=\"#FFF\"></path></g></svg>\n </template>\n <template v-if=\"fileType === 'text'\">\n <svg width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M3 3a2 2 0 0 1 2-2h9.586a1 1 0 0 1 .707.293l5.414 5.414a1 1 0 0 1 .293.707V21a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V3Z\" fill=\"#336DF4\"></path><path opacity=\"0.7\" d=\"M15 1.483a.2.2 0 0 1 .341-.142L20.66 6.66a.2.2 0 0 1-.142.341H17a2 2 0 0 1-2-2V1.483Z\" fill=\"#0442D2\"></path><path d=\"M12.546 10.727v7.5a.136.136 0 0 1-.137.136h-.818a.136.136 0 0 1-.136-.136v-7.5h-3.41a.136.136 0 0 1-.136-.136v-.818c0-.076.061-.137.137-.137h7.909c.075 0 .136.061.136.137v.818a.136.136 0 0 1-.136.136h-3.41Z\" fill=\"#fff\"></path></svg>\n </template> -->\n <div class=\"file-view-title-content\">\n <div class=\"ant-row\">\n <span class=\"file-name main\">{{ currentFile?.name + '.' + currentFile?.suffix }}</span>\n </div>\n <div class=\"ant-row\">\n <span class=\"file-size other\">{{ currentFile?.fileSize }}</span>\n <span class=\"user-name other\">{{ currentFile?.createByName }}</span>\n <span class=\"time other\">{{ currentFile?.createTime }}</span>\n </div>\n </div>\n </div>\n </template>\n <template v-if=\"list.length > 1\">\n <div class=\"file-view-modal-prev\" @click=\"goPrev\">\n <a href=\"javascript:;\"><LeftOutlined /></a>\n </div>\n <div class=\"file-view-modal-next\" @click=\"goNext\">\n <a href=\"javascript:;\"><RightOutlined /></a>\n </div>\n </template>\n <Spin :spinning=\"pageLoading\" size=\"default\" :tip=\"tavI18n('Tav.common.loadingText')\">\n <div ref=\"fileViewContentElRef\" class=\"file-view-content\">\n <template v-if=\"supportWPS\">\n <iframe id=\"wps-file-view\" :src=\"filePath\" frameborder=\"0\" />\n </template>\n <template v-else>\n <!-- <template v-if=\"fileType === 'office'\">\n <iframe id=\"fileIframe\" :src=\"filePath\" frameborder=\"0\" />\n </template>\n <template v-if=\"fileType === 'audio'\">\n <audio :src=\"filePath\" />\n </template>\n <template v-if=\"fileType === 'video'\">\n <video :src=\"filePath\" />\n </template>\n <template v-if=\"fileType === 'mpeg'\">\n <iframe id=\"fileIframe\" :src=\"filePath\" frameborder=\"0\" />\n </template> -->\n <template v-if=\"fileType === 'pic'\">\n <!-- <img :src=\"filePath\" alt=\"\" /> -->\n <Image\n :style=\"{ display: 'none' }\"\n :src=\"filePath\"\n :preview=\"{ visible: true, getContainer: fileViewContentElRef }\"\n />\n </template>\n <!-- <template v-if=\"fileType === 'text'\">\n <div class=\"text-page\">\n <iframe id=\"fileIframe\" :src=\"filePath\" frameborder=\"0\" />\n </div>\n </template> -->\n <template v-if=\"fileType === ''\">\n <div class=\"empty\">{{ tavI18n('Tav.file.message.1') }} {{ fileType }}</div>\n </template>\n </template>\n </div>\n </Spin>\n </Modal>\n</template>\n"],"names":["_createElementVNode","_resolveComponent","_withCtx","_createCommentVNode","_createVNode","_createTextVNode","_toDisplayString","_openBlock","_createElementBlock","_Fragment"],"mappings":"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"}