askbot-dragon 1.4.44 → 1.4.46

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "askbot-dragon",
3
- "version": "1.4.44",
3
+ "version": "1.4.46",
4
4
  "scripts": {
5
5
  "serve": "vue-cli-service serve",
6
6
  "build": "vue-cli-service build",
package/public/index.html CHANGED
@@ -38,7 +38,7 @@
38
38
  <script src="https://guoranopen-zjk.oss-cn-zhangjiakou.aliyuncs.com/cdn-common/pdfJS2.1.266/pdf_viewer.js" referrerpolicy="no-referrer"></script>
39
39
  <link rel="stylesheet" href="https://guoranopen-zjk.oss-cn-zhangjiakou.aliyuncs.com/cdn-common/pdfJS2.1.266/pdf_viewer_01.css" referrerpolicy="no-referrer" />
40
40
  <!-- hammer.js -->
41
- <script src="https://cdnjs.cloudflare.com/ajax/libs/hammer.js/2.0.8/hammer.min.js" integrity="sha512-UXumZrZNiOwnTcZSHLOfcTs0aos2MzBWHXOHOuB0J/R44QB0dwY5JgfbvljXcklVf65Gc4El6RjZ+lnwd2az2g==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
41
+ <!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/hammer.js/2.0.8/hammer.min.js" integrity="sha512-UXumZrZNiOwnTcZSHLOfcTs0aos2MzBWHXOHOuB0J/R44QB0dwY5JgfbvljXcklVf65Gc4El6RjZ+lnwd2az2g==" crossorigin="anonymous" referrerpolicy="no-referrer"></script> -->
42
42
  <style>
43
43
  *{
44
44
  margin: 0;
@@ -1,72 +1,90 @@
1
1
  //定义缩放方法,接收一个element参数:使用export暴露该方法
2
2
  export function zoomElement (el) {
3
+ let store = {
4
+ scale: 1
5
+ };
6
+ // 缩放事件的处理
7
+ el.addEventListener('touchstart', function (event) {
8
+ let touches = event.touches;
9
+ let events = touches[0];
10
+ let events2 = touches[1];
11
+ // event.preventDefault();
12
+ // 第一个触摸点的坐标
13
+ store.pageX = events.pageX;
14
+ store.pageY = events.pageY;
3
15
 
4
- let x = 0;//x轴偏移
5
- let y = 0;//y轴偏移
6
- let lastScale = 1;//上次缩放值
7
- let currentScale = 1;//当前缩放值
8
- let center;//双指中心点
9
- //初始化hammer
10
- let hammer = new window.Hammer(el);
11
- //缩放事件默认是关闭的,需要设置启用
12
- hammer.get('pinch').set({ enable: true });
13
- //监听缩放事件
14
- hammer.on("pinchmove pinchstart pinchin pinchout", e => {
15
- //缩放开始时获取上一次缩放值与双指中心点
16
- if (e.type == "pinchstart") {
17
- lastScale = currentScale || 1;
18
- center = e.center;
19
- console.log("centerX:" + center.x)
20
- console.log("centerY:" + center.y)
21
- }
22
- //当前缩放值 = 上一次缩放值 * 缩放比例
23
- currentScale = lastScale * e.scale;
24
- //如果缩放值小于1,重置为1
25
- if (currentScale < 1) {
26
- currentScale = 1;
27
- }
28
- if(currentScale > 2) {
29
- currentScale = 2;
16
+ store.moveable = true;
17
+
18
+ if (events2) {
19
+ store.pageX2 = events2.pageX;
20
+ store.pageY2 = events2.pageY;
30
21
  }
31
- //偏移量 = 双指中心点 - 当前缩放值 * 双指中心点 = 双指中心点 *(1-当前缩放值)
32
- x = center.x * (1 - currentScale)
33
- y = center.y * (1 - currentScale)
34
- //设置transform
35
- el.style.transform = "translateX(" + (x) + "px)" + "translateY(" + (y) + "px)" + "scale(" + (currentScale) + ")"
22
+ store.originScale = store.scale || 1;
36
23
  });
37
- //监听滑动事件
38
- hammer.on('panright panleft panup pandown', (e) => {
39
- //滑动时:偏移量 = 滑动距离 + 当前偏移量
40
- let translateX = e.deltaX + x
41
- let translateY = e.deltaY + y
42
- //如果偏移X值大于0:表示视图已经滑到最左侧,重置为0
43
- if (translateX > 0) {
44
- translateX = 0
24
+ document.addEventListener('touchmove', function (event) {
25
+ if (!store.moveable) {
26
+ return;
45
27
  }
46
- //如果偏移Y值大于0:表示视图已经滑到最顶部,重置为0
47
- if (translateY > 0) {
48
- translateY = 0
49
- }
50
- //如果偏移X值小于(屏幕宽度-元素宽度):表示视图已经滑到最左侧,重置为0
51
- //屏幕宽度 = el.clientWidth
52
- //元素宽度 = el.getBoundingClientRect().width
53
- if (translateX < el.clientWidth - el.getBoundingClientRect().width) {
54
- translateX = el.clientWidth - el.getBoundingClientRect().width
55
- }
56
- //如果偏移Y值大于(屏幕高度-元素高度):表示视图已经滑到最左侧,重置为0
57
- //屏幕高度 = el.clientHeight
58
- //元素高度 = el.getBoundingClientRect().height
59
- if (translateY < el.clientHeight - el.getBoundingClientRect().height) {
60
- translateY = el.clientHeight - el.getBoundingClientRect().height
28
+
29
+ // event.preventDefault();
30
+
31
+ let touches = event.touches;
32
+ let events = touches[0];
33
+ let events2 = touches[1];
34
+ // 双指移动
35
+ if (events2) {
36
+ // 第2个指头坐标在touchmove时候获取
37
+ if (!store.pageX2) {
38
+ store.pageX2 = events2.pageX;
39
+ }
40
+ if (!store.pageY2) {
41
+ store.pageY2 = events2.pageY;
42
+ }
43
+
44
+ // 获取坐标之间的举例
45
+ let getDistance = function (start, stop) {
46
+ return Math.hypot(stop.x - start.x, stop.y - start.y);
47
+ };
48
+ // 双指缩放比例计算
49
+ let zoom = getDistance({
50
+ x: events.pageX,
51
+ y: events.pageY
52
+ }, {
53
+ x: events2.pageX,
54
+ y: events2.pageY
55
+ }) /
56
+ getDistance({
57
+ x: store.pageX,
58
+ y: store.pageY
59
+ }, {
60
+ x: store.pageX2,
61
+ y: store.pageY2
62
+ });
63
+ // 应用在元素上的缩放比例
64
+ let newScale = store.originScale * zoom;
65
+ // 最大缩放比例限制
66
+ if (newScale > 3) {
67
+ newScale = 3;
68
+ }
69
+ // 最小缩放比例限制
70
+ if(newScale < 1) {
71
+ newScale = 1;
72
+ }
73
+ // 记住使用的缩放值
74
+ store.scale = newScale;
75
+ // 图像应用缩放效果
76
+ el.style.transform = 'scale(' + newScale + ')';
61
77
  }
62
- //设置transform
63
- el.style.transform = "translateX(" + (translateX) + "px)" + "translateY(" + (translateY) + "px)" + "scale(" + (currentScale) + ")"
64
78
  });
65
- hammer.on('panend', (e) => {
66
- //滑动结束:记录当前偏移量
67
- x = e.deltaX + x;
68
- y = e.deltaY + y;
69
- console.log("panendx:" + x)
70
- console.log("panendy:" + y)
71
- })
79
+ document.addEventListener('touchend', function () {
80
+ store.moveable = false;
81
+ delete store.pageX2;
82
+ delete store.pageY2;
83
+ });
84
+ document.addEventListener('touchcancel', function () {
85
+ store.moveable = false;
86
+ delete store.pageX2;
87
+ delete store.pageY2;
88
+ });
89
+
72
90
  }
@@ -72,6 +72,7 @@
72
72
  border="0"></iframe>
73
73
  </template>
74
74
  <template v-else>
75
+
75
76
  <iframe class="preview_iframe" :src="previewUrl" style="border:none;"></iframe>
76
77
  </template>
77
78
  </template>
@@ -84,7 +85,7 @@
84
85
 
85
86
  <script>
86
87
  import pdfPosition from './pdfPosition.vue'
87
- // import { zoomElement } from '../assets/js/hammer'
88
+ import { zoomElement } from '../assets/js/hammer'
88
89
  export default {
89
90
  data () {
90
91
  return {
@@ -99,7 +100,6 @@ export default {
99
100
  }
100
101
  },
101
102
  mounted() {
102
- // zoomElement(document.getElementById('drawer_content_pre'))
103
103
  },
104
104
  props:{
105
105
  url:{
@@ -118,6 +118,16 @@ export default {
118
118
  components:{
119
119
  pdfPosition
120
120
  },
121
+ watch:{
122
+ drawer(value) {
123
+ if(value) {
124
+ this.$nextTick(() =>{
125
+ this.loading = false
126
+ zoomElement(document.getElementById('drawer_content_pre'))
127
+ })
128
+ }
129
+ }
130
+ },
121
131
  computed:{
122
132
  previewUrl() {
123
133
  console.debug('VUE_APP_ENV',process.env.VUE_APP_ENV)
@@ -260,6 +270,8 @@ export default {
260
270
  height: 100%;
261
271
  }
262
272
  #drawer_content_pre {
273
+ overflow: auto;
263
274
  height: 100%;
275
+ background: #FFF;
264
276
  }
265
277
  </style>