|
@@ -6,7 +6,7 @@
|
|
:key="index"
|
|
:key="index"
|
|
class="single-image-container"
|
|
class="single-image-container"
|
|
>
|
|
>
|
|
- <img :src="item.url" />
|
|
|
|
|
|
+ <img :src="item.url" @click="makeMark" />
|
|
<MarkDrawTrack
|
|
<MarkDrawTrack
|
|
:track-list="item.trackList"
|
|
:track-list="item.trackList"
|
|
:original-image="item.originalImage"
|
|
:original-image="item.originalImage"
|
|
@@ -41,7 +41,7 @@ interface SliceImage {
|
|
export default defineComponent({
|
|
export default defineComponent({
|
|
name: "MarkBody",
|
|
name: "MarkBody",
|
|
components: { MarkDrawTrack },
|
|
components: { MarkDrawTrack },
|
|
- setup() {
|
|
|
|
|
|
+ setup(props, context) {
|
|
const container = ref(null);
|
|
const container = ref(null);
|
|
let sliceImagesWithTrackList: Array<SliceImage> = reactive([]);
|
|
let sliceImagesWithTrackList: Array<SliceImage> = reactive([]);
|
|
watchEffect(async () => {
|
|
watchEffect(async () => {
|
|
@@ -208,10 +208,48 @@ export default defineComponent({
|
|
});
|
|
});
|
|
|
|
|
|
const answerPaperScale = computed(() => {
|
|
const answerPaperScale = computed(() => {
|
|
|
|
+ // 放大、缩小不影响页面之前的滚动条定位
|
|
|
|
+ let percentWidth = 0;
|
|
|
|
+ let percentTop = 0;
|
|
|
|
+ if (document.querySelector(".mark-body-container")) {
|
|
|
|
+ const container = document.querySelector(
|
|
|
|
+ ".mark-body-container"
|
|
|
|
+ ) as HTMLDivElement;
|
|
|
|
+ const scrollLeft = container.scrollLeft;
|
|
|
|
+ const scrollTop = container.scrollTop;
|
|
|
|
+ const scrollWidth = container.scrollWidth;
|
|
|
|
+ const scrollHeight = container.scrollHeight;
|
|
|
|
+ percentWidth = scrollLeft / scrollWidth;
|
|
|
|
+ percentTop = scrollTop / scrollHeight;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ setTimeout(() => {
|
|
|
|
+ if (document.querySelector(".mark-body-container")) {
|
|
|
|
+ const container = document.querySelector(
|
|
|
|
+ ".mark-body-container"
|
|
|
|
+ ) as HTMLDivElement;
|
|
|
|
+ const scrollWidth = container.scrollWidth;
|
|
|
|
+ const scrollHeight = container.scrollHeight;
|
|
|
|
+ container.scrollTo({
|
|
|
|
+ left: scrollWidth * percentWidth,
|
|
|
|
+ top: scrollHeight * percentTop,
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ }, 10);
|
|
const scale = store.setting.uiSetting["answer.paper.scale"] || 1;
|
|
const scale = store.setting.uiSetting["answer.paper.scale"] || 1;
|
|
return scale * 100 + "%";
|
|
return scale * 100 + "%";
|
|
});
|
|
});
|
|
- return { container, store, sliceImagesWithTrackList, answerPaperScale };
|
|
|
|
|
|
+
|
|
|
|
+ const makeMark = (event: Event) => {
|
|
|
|
+ console.log(event);
|
|
|
|
+ };
|
|
|
|
+ return {
|
|
|
|
+ container,
|
|
|
|
+ store,
|
|
|
|
+ sliceImagesWithTrackList,
|
|
|
|
+ answerPaperScale,
|
|
|
|
+ makeMark,
|
|
|
|
+ };
|
|
},
|
|
},
|
|
});
|
|
});
|
|
</script>
|
|
</script>
|