index.vue 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <template>
  2. <div style="width: 100%;height:100%;position:absolute;text-align: center">
  3. <el-watermark :font="font" :content="watertext" style="width: 100%;height:100%;position:absolute">
  4. <el-image :src="props.src" v-if="ismobile && ispic"></el-image>
  5. <PicShow :src="props.src" v-if="ispic && !ismobile" />
  6. <iframe v-loading style="width:100%;height:100%;border:none" v-if="!ispic " :src="`${currentPdf}`" />
  7. <!-- <div style="height: 100%;overflow-y: auto" v-if="!usepdf">-->
  8. <!-- &lt;!&ndash; <div v-for="page in pages" :key="page" style="width: 100%;">-->
  9. <!-- <VuePDF :pdf="pdf" fit-parent :watermark-text="watermarkText" :watermark-options="watermarkOptions" :page="page">-->
  10. <!-- <div v-loading="true"></div>-->
  11. <!-- </VuePDF>-->
  12. <!-- </div> &ndash;&gt;-->
  13. <!-- </div>-->
  14. </el-watermark>
  15. </div>
  16. </template>
  17. <script lang="ts" setup>
  18. import {ref, onMounted, watchEffect} from 'vue'
  19. const { proxy } = getCurrentInstance() as ComponentInternalInstance;
  20. // import { VuePDF, usePDF } from '@tato30/vue-pdf'
  21. import { propTypes } from '@/utils/propTypes';
  22. import moment from 'moment';
  23. import useUserStore from '@/store/modules/user';
  24. import PicShow from "./picShow.vue"
  25. const route = useRoute()
  26. const userStore = useUserStore();
  27. document.oncontextmenu = function(){
  28. return false;
  29. }
  30. const { watermark } = toRefs<any>();
  31. const usepdf=ref(true);
  32. const props = defineProps({
  33. src: propTypes.string.def(''),
  34. size:propTypes.number.def(0),
  35. ispic:propTypes.bool.def(false),
  36. isprint:propTypes.number.def(0),
  37. });
  38. const content = ref(["text"])
  39. const font = ref({
  40. color: 'rgba(0, 0, 0, .15)',
  41. })
  42. const watertext = ref();
  43. const ispic = ref(false);
  44. const ismobile = ref(false);
  45. const currentPdf = ref(props.src)
  46. watchEffect(() => {
  47. ispic.value = props.ispic;
  48. ismobile.value = route.fullPath.indexOf("h5")!=-1;
  49. if(props.size>1024*1024*3){
  50. usepdf.value = false;
  51. }else{
  52. usepdf.value = true;
  53. }
  54. if (usepdf.value) {
  55. // if(props.size>1024*1024*20){
  56. // }else{
  57. currentPdf.value = `https://filesystem.njdnyjs.com/preview/?url=${encodeURIComponent(props.src)}&isprint=${props.isprint}`
  58. // }
  59. // currentPdf.value = `/preview/onlinePreview?url=${encodeURIComponent(base64.encode(props.src))}&watermarkTxt=${encodeURIComponent(watertext.value)}`;
  60. // currentPdf.value = `/preview/web/viewer.html?file=${encodeURIComponent(props.src)}`
  61. // currentPdf.value = `https://filesystem.njdnyjs.com/preview?url=${encodeURIComponent(props.src)}`
  62. // http://localhost:8083/preview/?url=https%3A%2F%2Fraw.githubusercontent.com%2Fmozilla%2Fpdf.js%2Fba2edeae%2Fweb%2Fcompressed.tracemonkey-pldi-09.pdf
  63. } else {
  64. currentPdf.value = props.src+"#toolbar=1";
  65. }
  66. //http://127.0.0.1:8012/onlinePreview?url='+encodeURIComponent(base64Encode(url))
  67. // currentPdf.value = props.src.replaceAll("https://njdnyjsfilesystem.s3.cn-east-1.qiniucs.com","http://sdrqczwd3.hd-bkt.clouddn.com");
  68. })
  69. onMounted(()=>{
  70. proxy?.getConfigKey("sys.file.preview.watermark").then(res => {
  71. if(res.data){
  72. watertext.value = res.data.replaceAll("{username}",userStore.nickname).replaceAll("{time}",moment().format("yyyy-MM-DD HH:mm:ss"))
  73. }
  74. })
  75. })
  76. // const { pdf, pages } = usePDF(currentPdf)
  77. </script>
  78. <style lang="scss" >
  79. </style>