bill 2 mēneši atpakaļ
vecāks
revīzija
ebf8d4c45f

+ 1 - 2
public/static/kankan.html

@@ -97,9 +97,8 @@
           $old.classList.remove('active')
         }
         const $item = document.querySelector(`#floors > li[attr-id='${id}']`)
-        console.log(id)
         kankan.Scene.gotoFloor(Number(id))
-        $item.classList.add('active')
+        $item && $item.classList.add('active')
       }
 
       const renderFloors = (floors) => {

+ 3 - 0
src/core/components/group/group.vue

@@ -74,6 +74,7 @@ const { shape, tData, data } = useComponentStatus<Rect, GroupData>({
         };
       },
       handler: debounce((data, mat) => {
+        if (autoUpdate.value) return;
         setShapeTransform(shape.value!.getNode(), mat);
         matResponse({ data, mat, store }, prevMat);
         prevMat = mat;
@@ -85,6 +86,7 @@ const { shape, tData, data } = useComponentStatus<Rect, GroupData>({
         history.onceTrack(
           () =>
             new Promise<void>((resolve) => {
+              console.log("onceTrack");
               transformResolve = resolve;
             })
         );
@@ -93,6 +95,7 @@ const { shape, tData, data } = useComponentStatus<Rect, GroupData>({
         autoUpdate.value = true;
         transformResolve();
         callback();
+        console.log("callback");
       },
     });
   },

+ 3 - 3
src/core/hook/use-expose.ts

@@ -114,7 +114,7 @@ export const useShortcutKey = () => {
     "keydown",
     (ev) => {
       if (ev.target !== document.body) return;
-
+      console.log(operMode.value.mulSelection, ev.key, )
       if (ev.key === "z" && ev.ctrlKey) {
         ev.preventDefault();
         history.hasUndo.value && history.undo();
@@ -182,12 +182,12 @@ export const useShortcutKey = () => {
             status.actives = [];
           }
         }
-      } else if (operMode.value.mulSelection && ev.key === "A") {
+      } else if (operMode.value.mulSelection && ev.key === "a") {
         ev.preventDefault();
         if (status.selects.length) {
           status.selects = [];
         } else {
-          
+          console.log('多选')
           status.selects = getChildren().filter(shape => !eSelection.value.includes(shape.id()));
         }
       }

+ 1 - 1
src/core/hook/use-status.ts

@@ -87,7 +87,7 @@ export const useOperMode = installGlobalVar(() => {
 
   return computed(() => ({
     // 多选模式
-    mulSelection: keys.has('Shift') && !keys.has(' ') && !keys.has('Alt'),
+    mulSelection: keys.has('Ctrl') && !keys.has(' ') && !keys.has('Alt'),
     // mulSelection: false,
     // 自由移动视图
     freeView: keys.has(' '),

+ 2 - 1
src/example/components/container/container.vue

@@ -80,6 +80,7 @@ defineExpose({
   display: flex;
   flex-direction: column;
   align-items: stretch;
+  min-width: 980px;
   height: 100vh;
   background: #f0f2f5;
   --top: 0px;
@@ -87,7 +88,7 @@ defineExpose({
   overflow: hidden;
 
   .container {
-    height: calc(100vh - var(--headerSize) - var(--top));
+    height: calc(100% - var(--headerSize) - var(--top));
     display: flex;
     align-items: stretch;
   }

+ 34 - 11
src/example/fuse/views/overview/header.vue

@@ -13,7 +13,7 @@
 
 <script lang="ts" setup>
 import Header from "../../../components/header/index.vue";
-import { ElButton } from "element-plus";
+import { ElButton, ElMessage } from "element-plus";
 import { useDraw } from "../../../components/container/use-draw.ts";
 import { selectScene } from "../../../dialog/vr/index.ts";
 import { Scene } from "../../../platform/platform-resource.ts";
@@ -35,6 +35,7 @@ import { router } from "../../router.ts";
 import { overviewId, params, tabulationId } from "@/example/env.ts";
 import { listener } from "@/utils/event.ts";
 import { repeatedlyOnly } from "@/utils/shared.ts";
+import saveAs from "@/utils/file-serve.ts";
 
 const props = defineProps<{ title: string }>();
 const draw = useDraw();
@@ -66,8 +67,24 @@ const actions = [
       ...baseActions.expose,
       children: baseActions.expose.children.map((item) => ({
         ...item,
-        handler() {
-          return item.handler(props.title);
+        async handler() {
+          const format = item.text.toLowerCase();
+          if (format !== "dxf") {
+            const blob = await draw.enterTemp(async () => {
+              const back = draw.config.back;
+              const [_, recover] = await setViewToTableCover();
+              if (format === "jpg") draw.config.back = back;
+              await nextTick();
+              const blob = await getImage(draw, `image/${format}`);
+              recover();
+              await nextTick();
+              return blob;
+            });
+            await saveAs(blob, `${props.title}.${format}`);
+            ElMessage.success("导出成功");
+          } else {
+            await item.handler(props.title);
+          }
         },
       })),
     },
@@ -139,31 +156,37 @@ const setViewToTableCover = async () => {
 
 const saveHandler = repeatedlyOnly(async () => {
   const storeData = draw.getData();
-  const [blob, scale, rect] = await draw.enterTemp(async () => {
+  const [tabBlob, listBlob, scale, rect] = await draw.enterTemp(async () => {
+    const back = draw.config.back;
     const [rect, recover] = await setViewToTableCover();
     await nextTick();
     const mat = draw.viewer.transform.invert();
     const scale =
       lineLen(mat.point({ x: 1, y: 0 }), mat.point({ x: 0, y: 0 })) *
       draw.store.config.proportion.scale;
-    const blob = await getImage(draw, "image/png");
+    const tabBlob = await getImage(draw, "image/png");
+    draw.config.back = back;
+    await nextTick();
+    const listBlob = await getImage(draw, "image/jpg");
     recover();
     await nextTick();
-    return [blob, scale, rect] as const;
+    return [tabBlob, listBlob, scale, rect] as const;
   });
 
-  const url = await window.platform.uploadResourse(
-    new File([blob], `tabulation-cover.png`)
-  );
+  const [tabUrl, listUrl] = await Promise.all([
+    window.platform.uploadResourse(new File([tabBlob], `tabulation-cover.png`)),
+    window.platform.uploadResourse(new File([listBlob], `list-cover.png`)),
+  ]);
+
   overviewId.value = await window.platform.saveOverviewData(overviewId.value, {
     ...overviewData.value,
-    listCover: url,
+    listCover: listUrl,
     store: storeData,
     viewport: draw!.viewer.transform.m,
   });
 
   const cover = {
-    url,
+    url: tabUrl,
     width: rect.width,
     height: rect.height,
     proportion: { ...draw.store.config.proportion, scale },