|
@@ -53,7 +53,7 @@
|
|
|
import { onMounted, onUnmounted, reactive, watch, watchEffect } from "vue";
|
|
|
import { store } from "@/store/store";
|
|
|
import MarkDrawTrack from "./MarkDrawTrack.vue";
|
|
|
-import type { MarkResult, SliceImage, SpecialTag, Track } from "@/types";
|
|
|
+import type { SliceImage, SpecialTag, Track } from "@/types";
|
|
|
import { useTimers } from "@/setups/useTimers";
|
|
|
import {
|
|
|
getDataUrlForSliceConfig,
|
|
@@ -146,14 +146,13 @@ let maxSliceWidth = 0; // 最大的裁切块宽度,图片容器以此为准
|
|
|
let theFinalHeight = 0; // 最终宽度,用来定位轨迹在第几张图片,不包括image-seperator高度
|
|
|
|
|
|
async function processSliceConfig() {
|
|
|
- let markResult = store.currentTask?.markResult as MarkResult;
|
|
|
+ if (!store.currentTask) return;
|
|
|
+ let markResult = store.currentTask.markResult;
|
|
|
if (hasMarkResultToRender) {
|
|
|
// check if have MarkResult for currentTask
|
|
|
if (!markResult) return;
|
|
|
}
|
|
|
|
|
|
- if (!store.currentTask) return;
|
|
|
-
|
|
|
const images = [];
|
|
|
// 必须要先加载一遍,把“选择整图”的宽高重置后,再算总高度
|
|
|
for (const sliceConfig of store.currentTask.sliceConfig) {
|
|
@@ -257,14 +256,13 @@ async function processSliceConfig() {
|
|
|
}
|
|
|
|
|
|
async function processSplitConfig() {
|
|
|
- let markResult = store.currentTask?.markResult as MarkResult;
|
|
|
+ if (!store.currentTask) return;
|
|
|
+ let markResult = store.currentTask.markResult;
|
|
|
if (hasMarkResultToRender) {
|
|
|
// check if have MarkResult for currentTask
|
|
|
if (!markResult) return;
|
|
|
}
|
|
|
|
|
|
- if (!store.currentTask) return;
|
|
|
-
|
|
|
const images = [];
|
|
|
for (const url of store.currentTask.sliceUrls) {
|
|
|
const image = await loadImage(url);
|
|
@@ -392,7 +390,7 @@ async function processSplitConfig() {
|
|
|
// should not render twice at the same time
|
|
|
let renderLock = false;
|
|
|
const renderPaperAndMark = async () => {
|
|
|
- if (!store) return;
|
|
|
+ if (!store.currentTask) return;
|
|
|
if (!store.isScanImage) return;
|
|
|
if (renderLock) {
|
|
|
console.log("上个任务还未渲染完毕,稍等一秒再尝试渲染");
|
|
@@ -400,19 +398,17 @@ const renderPaperAndMark = async () => {
|
|
|
await renderPaperAndMark();
|
|
|
return;
|
|
|
}
|
|
|
- renderLock = true;
|
|
|
// check if have MarkResult for currentTask
|
|
|
- let markResult = store.currentTask?.markResult;
|
|
|
-
|
|
|
- if ((hasMarkResultToRender && !markResult) || !store.currentTask) {
|
|
|
- renderLock = false;
|
|
|
+ let markResult = store.currentTask.markResult;
|
|
|
+ if (hasMarkResultToRender && !markResult) {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ renderLock = true;
|
|
|
try {
|
|
|
store.globalMask = true;
|
|
|
|
|
|
- const hasSliceConfig = store.currentTask?.sliceConfig?.length;
|
|
|
+ const hasSliceConfig = store.currentTask.sliceConfig?.length;
|
|
|
|
|
|
if (hasSliceConfig) {
|
|
|
await processSliceConfig();
|
|
@@ -508,9 +504,10 @@ if (hasMarkResultToRender) {
|
|
|
|
|
|
// 清除特殊标记轨迹
|
|
|
watchEffect(() => {
|
|
|
+ if (!store.currentTask) return;
|
|
|
for (const sliceImage of sliceImagesWithTrackList) {
|
|
|
sliceImage.tagList = sliceImage.tagList.filter((t) =>
|
|
|
- store.currentTask?.markResult.specialTagList.find(
|
|
|
+ store.currentTaskEnsured.markResult.specialTagList.find(
|
|
|
(st) =>
|
|
|
st.offsetIndex === t.offsetIndex &&
|
|
|
st.offsetX === t.offsetX &&
|
|
@@ -518,7 +515,7 @@ if (hasMarkResultToRender) {
|
|
|
)
|
|
|
);
|
|
|
}
|
|
|
- if (store.currentTask?.markResult.specialTagList.length === 0) {
|
|
|
+ if (store.currentTaskEnsured.markResult.specialTagList.length === 0) {
|
|
|
for (const sliceImage of sliceImagesWithTrackList) {
|
|
|
sliceImage.tagList = [];
|
|
|
}
|