|
@@ -66,7 +66,7 @@ import { Transform } from "konva/lib/Util";
|
|
|
import { MathUtils } from "three";
|
|
import { MathUtils } from "three";
|
|
|
import { components } from "@/core/components";
|
|
import { components } from "@/core/components";
|
|
|
import { ShapeType } from "@/index";
|
|
import { ShapeType } from "@/index";
|
|
|
-import { mergeFuns, round } from "@/utils/shared";
|
|
|
|
|
|
|
+import { copy, mergeFuns, round } from "@/utils/shared";
|
|
|
import { getImageSize } from "@/utils/shape";
|
|
import { getImageSize } from "@/utils/shape";
|
|
|
import { tabCustomStyle } from "../defStyle";
|
|
import { tabCustomStyle } from "../defStyle";
|
|
|
import { defaultLayer } from "@/constant";
|
|
import { defaultLayer } from "@/constant";
|
|
@@ -172,27 +172,43 @@ const setMapHandler = async (config: { url: string; size: Size }) => {
|
|
|
if (!draw.value || !serialTable.value) return;
|
|
if (!draw.value || !serialTable.value) return;
|
|
|
const un = draw.value.menusFilter.setShapeMenusFilter(
|
|
const un = draw.value.menusFilter.setShapeMenusFilter(
|
|
|
serialTable.value.id,
|
|
serialTable.value.id,
|
|
|
- (menu) => [{ label: ui18n.t("sys.update"), handler: updateSerialTable }, ...menu]
|
|
|
|
|
|
|
+ (menu) => [
|
|
|
|
|
+ { label: ui18n.t("sys.update"), handler: () => updateSerialTable(false) },
|
|
|
|
|
+ ...menu,
|
|
|
|
|
+ ]
|
|
|
);
|
|
);
|
|
|
onCleanup(un);
|
|
onCleanup(un);
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
- const updateSerialTable = () => {
|
|
|
|
|
|
|
+ const updateSerialTable = (autoGen = true) => {
|
|
|
const d = draw.value;
|
|
const d = draw.value;
|
|
|
const overview = overviewData.value?.store.layers.default;
|
|
const overview = overviewData.value?.store.layers.default;
|
|
|
const serials = overview.serial;
|
|
const serials = overview.serial;
|
|
|
- if (!d || !serials?.length) return;
|
|
|
|
|
|
|
+ if (!d) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ const pack = autoGen
|
|
|
|
|
+ ? d.history.preventTrack.bind(d.history)
|
|
|
|
|
+ : (run: () => void) => run();
|
|
|
|
|
+ if (!serials?.length) {
|
|
|
|
|
+ if (serialTable.value) {
|
|
|
|
|
+ pack(() => {
|
|
|
|
|
+ d.store.delItem("table", serialTable.value!.id);
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
const table = serialTable.value || addTable(d as any);
|
|
const table = serialTable.value || addTable(d as any);
|
|
|
const syncSerials = serials.map((item) => {
|
|
const syncSerials = serials.map((item) => {
|
|
|
let desc = "";
|
|
let desc = "";
|
|
|
if (item.joinIds) {
|
|
if (item.joinIds) {
|
|
|
- desc = item.joinIds
|
|
|
|
|
|
|
+ const names = item.joinIds
|
|
|
.map((id) => {
|
|
.map((id) => {
|
|
|
const img = overview.image?.find((image) => image.id === id)?.name;
|
|
const img = overview.image?.find((image) => image.id === id)?.name;
|
|
|
return img || overview.icon?.find((image) => image.id === id)?.name;
|
|
return img || overview.icon?.find((image) => image.id === id)?.name;
|
|
|
})
|
|
})
|
|
|
- .filter(Boolean)
|
|
|
|
|
- .join("、");
|
|
|
|
|
|
|
+ .filter(Boolean);
|
|
|
|
|
+ desc = names.join("、");
|
|
|
}
|
|
}
|
|
|
return {
|
|
return {
|
|
|
...item,
|
|
...item,
|
|
@@ -223,7 +239,7 @@ const setMapHandler = async (config: { url: string; size: Size }) => {
|
|
|
const self = syncSerials[i];
|
|
const self = syncSerials[i];
|
|
|
for (let j = i + 1; j < syncSerials.length; j++) {
|
|
for (let j = i + 1; j < syncSerials.length; j++) {
|
|
|
if (syncSerials[j].content === self.content) {
|
|
if (syncSerials[j].content === self.content) {
|
|
|
- if (syncSerials[j].desc) {
|
|
|
|
|
|
|
+ if (syncSerials[j].desc && self.desc !== syncSerials[j].desc) {
|
|
|
self.desc = self.desc + "、" + syncSerials[j].desc;
|
|
self.desc = self.desc + "、" + syncSerials[j].desc;
|
|
|
}
|
|
}
|
|
|
syncSerials.splice(j--, 1);
|
|
syncSerials.splice(j--, 1);
|
|
@@ -234,7 +250,7 @@ const setMapHandler = async (config: { url: string; size: Size }) => {
|
|
|
draw.value?.runHook(() => syncTable(table, syncSerials));
|
|
draw.value?.runHook(() => syncTable(table, syncSerials));
|
|
|
|
|
|
|
|
if (serialTable.value) {
|
|
if (serialTable.value) {
|
|
|
- d.history.preventTrack(() => {
|
|
|
|
|
|
|
+ pack(() => {
|
|
|
d.store.setItem("table", {
|
|
d.store.setItem("table", {
|
|
|
id: serialTable.value!.id,
|
|
id: serialTable.value!.id,
|
|
|
value: serialTable.value!,
|
|
value: serialTable.value!,
|
|
@@ -242,7 +258,7 @@ const setMapHandler = async (config: { url: string; size: Size }) => {
|
|
|
});
|
|
});
|
|
|
} else {
|
|
} else {
|
|
|
table.key = tableSerialTableKey;
|
|
table.key = tableSerialTableKey;
|
|
|
- d.history.preventTrack(() => {
|
|
|
|
|
|
|
+ pack(() => {
|
|
|
d.store.addItem("table", table);
|
|
d.store.addItem("table", table);
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
@@ -253,7 +269,7 @@ const setMapHandler = async (config: { url: string; size: Size }) => {
|
|
|
(draw) => {
|
|
(draw) => {
|
|
|
if (!draw) return;
|
|
if (!draw) return;
|
|
|
if (!serialTable.value) {
|
|
if (!serialTable.value) {
|
|
|
- setTimeout(updateSerialTable, 500);
|
|
|
|
|
|
|
+ setTimeout(() => updateSerialTable(true), 500);
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
{ immediate: true }
|
|
{ immediate: true }
|
|
@@ -277,12 +293,12 @@ const setCover = (paperKey: PaperKey, draw: Draw) => {
|
|
|
cleanups.length = 0;
|
|
cleanups.length = 0;
|
|
|
};
|
|
};
|
|
|
let cover = draw.store.items.find((item) => item.key === tableCoverKey) as ImageData;
|
|
let cover = draw.store.items.find((item) => item.key === tableCoverKey) as ImageData;
|
|
|
- if (import.meta.env.DEV && cover) {
|
|
|
|
|
- draw.history.preventTrack(() => {
|
|
|
|
|
- draw.store.delItem("image", cover!.id);
|
|
|
|
|
- cover = null as any;
|
|
|
|
|
- });
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ // if (import.meta.env.DEV && cover) {
|
|
|
|
|
+ // draw.history.preventTrack(() => {
|
|
|
|
|
+ // draw.store.delItem("image", cover!.id);
|
|
|
|
|
+ // cover = null as any;
|
|
|
|
|
+ // });
|
|
|
|
|
+ // }
|
|
|
const { margin, size } = getPaperConfig(
|
|
const { margin, size } = getPaperConfig(
|
|
|
paperConfigs[paperKey].size,
|
|
paperConfigs[paperKey].size,
|
|
|
paperConfigs[paperKey].scale
|
|
paperConfigs[paperKey].scale
|
|
@@ -343,12 +359,12 @@ const setCover = (paperKey: PaperKey, draw: Draw) => {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
let text = draw.store.items.find((item) => item.key === tableCoverScaleKey) as TextData;
|
|
let text = draw.store.items.find((item) => item.key === tableCoverScaleKey) as TextData;
|
|
|
- if (import.meta.env.DEV && text) {
|
|
|
|
|
- draw.history.preventTrack(() => {
|
|
|
|
|
- draw.store.delItem("text", text!.id);
|
|
|
|
|
- text = null as any;
|
|
|
|
|
- });
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ // if (import.meta.env.DEV && text) {
|
|
|
|
|
+ // draw.history.preventTrack(() => {
|
|
|
|
|
+ // draw.store.delItem("text", text!.id);
|
|
|
|
|
+ // text = null as any;
|
|
|
|
|
+ // });
|
|
|
|
|
+ // }
|
|
|
if (!text) {
|
|
if (!text) {
|
|
|
const width = getRealPixel(30, paperKey);
|
|
const width = getRealPixel(30, paperKey);
|
|
|
const heihgt = getRealPixel(4.8, paperKey);
|
|
const heihgt = getRealPixel(4.8, paperKey);
|