unknown
2024-06-12 b36d06e85eff7302df612d19ff0810e1a3b304d5
src/components/pdfview/index.vue
@@ -1,10 +1,11 @@
<template>
  <div class="imgbox">
  <div ref="imageBox" class="imageBox">
    <img
      id="image"
      ref="image"
      :onLoad="initFun"
      :onDragStart="dragStart"
      :onWheel="handleScroll"
      @onload="initFun"
      @ondragstart="dragStart"
      @onwheel="handleScroll"
      :src="currentPageSrc"
      alt=""
    />
@@ -54,37 +55,44 @@
  created() {
    this.getFileInfo();
  },
  mounted(){
    // this.initFun()
  },
  methods: {
    initFun() {
      // 初始化拖拽
      let image = this.refs.image;
      let imageBox = this.refs.imageBox;
      let initLeft = imageBox.offsetWidth / 2 - image.offsetWidth / 2;
      image.style.left = initLeft + "px";
      image.style.top = 0 + "px";
      let canMove = false;
      let offsetX, offsetY, oldLeft, oldTop;
      image.onmousedown = function (e) {
        canMove = true;
        offsetX = e.x;
        offsetY = e.y;
        oldLeft = parseFloat(image.style.left.split("px")[0]);
        oldTop = parseFloat(image.style.top.split("px")[0]);
      };
      imageBox.onmousemove = function (e) {
        if (canMove == true) {
          let left = e.clientX - offsetX;
          let top = e.clientY - offsetY;
          image.style.left = oldLeft + left + "px";
          image.style.top = oldTop + top + "px";
        // 初始化拖拽
        let image = this.$refs.image;
        console.log(this,8989);
        if (image) {
          let imageBox = this.$refs.imageBox;
          let initLeft = imageBox.offsetWidth / 2 - image.offsetWidth / 2;
          image.style.left = 0 + "px";
          image.style.top = 0 + "px";
          let canMove = false;
          let offsetX, offsetY, oldLeft, oldTop;
          image.onmousedown = function (e) {
            canMove = true;
            offsetX = e.x;
            offsetY = e.y;
            oldLeft = parseFloat(image.style.left.split("px")[0]);
            oldTop = parseFloat(image.style.top.split("px")[0]);
          };
          imageBox.onmousemove = function (e) {
            if (canMove == true) {
              let left = e.clientX - offsetX;
              let top = e.clientY - offsetY;
              image.style.left = oldLeft + left + "px";
              image.style.top = oldTop + top + "px";
            }
          };
          image.onmouseup = function () {
            canMove = false;
          };
          this.fileLoading = false;
        }
      };
      image.onmouseup = function () {
        canMove = false;
      };
      this.fileLoading = false;
    },
    dragStart(e) {
      console.log(e,'dragStart')
      if (e && e.preventDefault) {
        e.preventDefault();
      } else {
@@ -92,17 +100,18 @@
      }
    },
    handleScroll(e) {
      console.log(e,'handleScroll')
      if (e.nativeEvent.deltaY <= 0) {
        if (this.zoom < 3) {
          let newZoom = this.zoom + 0.1;
          this.zoom = newZoom;
          this.refs.image.style.height = newZoom * 100 + "%";
          this.$refs.image.style.height = newZoom * 100 + "%";
        }
      } else {
        if (this.zoom > 0.5) {
          let newZoom = this.zoom - 0.1;
          this.zoom = newZoom;
          this.refs.image.style.height = newZoom * 100 + "%";
          this.$refs.image.style.height = newZoom * 100 + "%";
        }
      }
    },
@@ -134,12 +143,16 @@
};
</script>
<style scoped lang="less">
.imgbox {
.imageBox {
  width: 100%;
  height: 100%;
  background-color: aquamarine;
  height: 300px;
  overflow: auto;
  position: relative;
  img {
    width: 100%;
    position: absolute;
    width: auto;
    height: 100%;
    transition: transform 0.5s, width 0.3s, height 0.3s;
  }
}
</style>