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 +1 -1
- package/public/index.html +1 -1
- package/src/assets/js/hammer.js +81 -63
- package/src/components/previewPdf.vue +14 -2
package/package.json
CHANGED
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;
|
package/src/assets/js/hammer.js
CHANGED
|
@@ -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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
if (
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
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
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
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
|
-
|
|
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>
|