jinx 2 years ago
parent
commit
556d5a3499

File diff suppressed because it is too large
+ 0 - 314
public/static/html/FG.html


File diff suppressed because it is too large
+ 1 - 26042
server/test/a0k4xu045_202305311600080410/attach/sceneStore


+ 2 - 1
src/views/scene/index.vue

@@ -14,7 +14,7 @@
         <div class="info-top-left" :class="{ full: viewStatus }">
         <div class="info-top-left" :class="{ full: viewStatus }">
           <Container @loaded="loaded = true" />
           <Container @loaded="loaded = true" />
           <template v-if="loaded && !trackMode">
           <template v-if="loaded && !trackMode">
-            <Menus v-if="viewStatus" @enter-child="childPage = true" @leave-child="childPage = false" />
+            <Menus v-if="viewStatus"  @enter-child="childPage = true" @leave-child="childPage = false" />
             <BasePoints v-if="currentView" />
             <BasePoints v-if="currentView" />
             <FixPoints />
             <FixPoints />
             <Measures />
             <Measures />
@@ -108,6 +108,7 @@ const stopReg = watchEffect(() => {
 });
 });
 const viewStatus = ref(false);
 const viewStatus = ref(false);
 const onScale = () => {
 const onScale = () => {
+  console.error(123)
   viewStatus.value = !viewStatus.value;
   viewStatus.value = !viewStatus.value;
 };
 };
 const goItem = (item) => {
 const goItem = (item) => {

+ 2 - 2
src/views/scene/menus/pane.vue

@@ -1,5 +1,5 @@
 <template>
 <template>
-  <ActionMenus v-if="!store.child.value" class="menus" :class="{ level: level === 2 }" :menus="store.menus as any" :active-key="store.activeMenuKey.value" dire="column" />
+  <ActionMenus v-if="!store.child.value" class="menus abc" :class="{ level: level === 2 }" :menus="store.menus as any" :active-key="store.activeMenuKey.value" dire="column" />
   <scene-menus :parentKey="store.activeMenuKey.value" v-if="store.child.value" @back="store.child.value = null" :menus="store.child.value as MenuRaw[]" :level="level + 1" />
   <scene-menus :parentKey="store.activeMenuKey.value" v-if="store.child.value" @back="store.child.value = null" :menus="store.child.value as MenuRaw[]" :level="level + 1" />
 </template>
 </template>
 
 
@@ -12,6 +12,7 @@ import { disabledMap, laserModeStack } from '@/hook';
 import { Mode } from '@/sdk';
 import { Mode } from '@/sdk';
 
 
 const props = withDefaults(defineProps<{ menus?: MenuRaw[]; level?: number; parentKey?: string }>(), { level: 1 });
 const props = withDefaults(defineProps<{ menus?: MenuRaw[]; level?: number; parentKey?: string }>(), { level: 1 });
+console.error(props);
 const emit = defineEmits<{
 const emit = defineEmits<{
   (e: 'back'): void;
   (e: 'back'): void;
   (e: 'enterChild'): void;
   (e: 'enterChild'): void;
@@ -43,7 +44,6 @@ watchEffect((onCleanup) => {
     onCleanup(() => {});
     onCleanup(() => {});
   }
   }
 });
 });
-console.error(props);
 if (props.level === 1) {
 if (props.level === 1) {
   watchEffect(() => {
   watchEffect(() => {
     disabledMap.photo = !store.child.value?.length;
     disabledMap.photo = !store.child.value?.length;

+ 40 - 49
src/views/scene/photo.vue

@@ -1,47 +1,43 @@
 <template>
 <template>
   <img :src="tempPhoto" class="face-animation" v-if="tempPhoto" ref="coverRef" />
   <img :src="tempPhoto" class="face-animation" v-if="tempPhoto" ref="coverRef" />
-
   <div class="photo-layout" v-if="disabledMap.photo">
   <div class="photo-layout" v-if="disabledMap.photo">
     <ButtonPane class="photo-btn fun-ctrl" :size="80" @click="photo">
     <ButtonPane class="photo-btn fun-ctrl" :size="80" @click="photo">
       <ui-icon type="photo" class="icon" />
       <ui-icon type="photo" class="icon" />
     </ButtonPane>
     </ButtonPane>
 
 
-    <img
-      v-if="showCoverUrl"
-      :src="showCoverUrl.value"
-      class="cover"
-      :style="{ opacity: showCoverUrl ? '1' : 0 }"
-      @click="router.push(writeRouteName.photos)"
-    />
+    <img v-if="showCoverUrl" :src="showCoverUrl.value" class="cover" :style="{ opacity: showCoverUrl ? '1' : 0 }" @click="router.push(writeRouteName.photos)" />
   </div>
   </div>
 </template>
 </template>
 
 
 <script setup lang="ts">
 <script setup lang="ts">
-import UiIcon from "@/components/base/components/icon/index.vue";
-import ButtonPane from "@/components/button-pane/index.vue";
-import { list } from "@/store/measure";
-import { fixPoints } from "@/store/fixPoint";
-import { baseLines } from "@/store/baseLine";
-import { basePoints } from "@/store/basePoint";
-import { photos } from "@/store/photos";
-import { useSDK } from "@/hook/useLaser";
-import { genUseLoading } from "@/hook";
-import { disabledMap } from "@/hook/custom";
-import { base64ToBlob, formatDate, getId } from "@/utils";
-import { computed, nextTick, ref } from "vue";
-import { api, downloadImage, uploadImage } from "@/store/sync";
-import { router, writeRouteName } from "@/router";
-import { LaserSDK, Pos, Pos3D } from "@/sdk";
-import { useStaticUrl } from "@/hook/useStaticUrl";
-import { Loading } from "@kankan/components/index";
-
+import UiIcon from '@/components/base/components/icon/index.vue';
+import ButtonPane from '@/components/button-pane/index.vue';
+import { list } from '@/store/measure';
+import { fixPoints } from '@/store/fixPoint';
+import { baseLines } from '@/store/baseLine';
+import { basePoints } from '@/store/basePoint';
+import { photos } from '@/store/photos';
+import { useSDK } from '@/hook/useLaser';
+import { genUseLoading } from '@/hook';
+
+import { disabledMap } from '@/hook/custom';
+import { base64ToBlob, formatDate, getId } from '@/utils';
+import { computed, nextTick, ref, watchEffect } from 'vue';
+import { api, downloadImage, uploadImage } from '@/store/sync';
+import { router, writeRouteName } from '@/router';
+import { LaserSDK, Pos, Pos3D } from '@/sdk';
+import { useStaticUrl } from '@/hook/useStaticUrl';
+import { Loading } from '@kankan/components/index';
+import { generateMixMenus, MenuRaw, menus, findMenuByKey } from './menus/menus';
+const menusMix = computed(() => menus);
+const store = generateMixMenus('children', (m) => m, menusMix.value);
 const showCoverUrl = computed(() => {
 const showCoverUrl = computed(() => {
   if (photos.value[photos.value.length - 1]?.url) {
   if (photos.value[photos.value.length - 1]?.url) {
     return useStaticUrl(photos.value[photos.value.length - 1].url);
     return useStaticUrl(photos.value[photos.value.length - 1].url);
   }
   }
 });
 });
 
 
-import mp3url from "./camera1.mp3";
+import mp3url from './camera1.mp3';
 const tempPhoto = ref<string>();
 const tempPhoto = ref<string>();
 const coverRef = ref<HTMLImageElement>();
 const coverRef = ref<HTMLImageElement>();
 const audio = new Audio(mp3url);
 const audio = new Audio(mp3url);
@@ -50,18 +46,18 @@ const getCurrentScreen = (pos: Pos3D): Pos => {
   const data = sdk.scene.getScreenByPoint(pos);
   const data = sdk.scene.getScreenByPoint(pos);
   return data.trueSide ? data.pos : null;
   return data.trueSide ? data.pos : null;
 };
 };
-
+watchEffect(() => {
+  disabledMap.photo = !store.child.value?.length;
+});
 const screenshot = async (sdk: LaserSDK) => {
 const screenshot = async (sdk: LaserSDK) => {
   const dom = sdk.scene.el;
   const dom = sdk.scene.el;
-  dom.style.pointerEvents = "none";
+  dom.style.pointerEvents = 'none';
 
 
   const getScreenshot = async (down = false) => {
   const getScreenshot = async (down = false) => {
     const data = sdk.scene.screenshot(dom.offsetWidth, dom.offsetHeight);
     const data = sdk.scene.screenshot(dom.offsetWidth, dom.offsetHeight);
     const { dataUrl: base64 } = await data.finishPromise;
     const { dataUrl: base64 } = await data.finishPromise;
     const blob = base64ToBlob(base64);
     const blob = base64ToBlob(base64);
-    const filename = `img_${formatDate(new Date(), "yyyyMMddhhmmss")}_${
-      data.meterPerPixel || 1
-    }.jpg`;
+    const filename = `img_${formatDate(new Date(), 'yyyyMMddhhmmss')}_${data.meterPerPixel || 1}.jpg`;
     const url = await uploadImage(blob, filename);
     const url = await uploadImage(blob, filename);
     if (down) {
     if (down) {
       await downloadImage(blob, filename);
       await downloadImage(blob, filename);
@@ -79,7 +75,7 @@ const screenshot = async (sdk: LaserSDK) => {
   baseLines.value.concat(list.value).forEach((item) => (item.show = true));
   baseLines.value.concat(list.value).forEach((item) => (item.show = true));
   await nextTick();
   await nextTick();
 
 
-  dom.style.pointerEvents = "all";
+  dom.style.pointerEvents = 'all';
   return {
   return {
     rawUrl: screenshotRaw.url,
     rawUrl: screenshotRaw.url,
     url: screenshot.url,
     url: screenshot.url,
@@ -87,28 +83,27 @@ const screenshot = async (sdk: LaserSDK) => {
   };
   };
 };
 };
 
 
-const getCurrentScreens = (poss: Array<Pos3D>): Array<Pos> =>
-  poss.map(getCurrentScreen).filter((pos) => !!pos);
+const getCurrentScreens = (poss: Array<Pos3D>): Array<Pos> => poss.map(getCurrentScreen).filter((pos) => !!pos);
 
 
 const photo = async () => {
 const photo = async () => {
   Loading.show();
   Loading.show();
-  console.log("播放音频");
+  console.log('播放音频');
   try {
   try {
     await audio.play();
     await audio.play();
   } catch (e) {
   } catch (e) {
-    console.error("播放音频错误", e);
+    console.error('播放音频错误', e);
   }
   }
-  console.log("音频播放结束");
+  console.log('音频播放结束');
   const sdk = useSDK();
   const sdk = useSDK();
-  console.log("开始截图");
+  console.log('开始截图');
   const data = await screenshot(sdk);
   const data = await screenshot(sdk);
-  console.log("截图完成");
+  console.log('截图完成');
   tempPhoto.value = await api.getFile(data.rawUrl);
   tempPhoto.value = await api.getFile(data.rawUrl);
-  console.log("获取到临时文件");
+  console.log('获取到临时文件');
   await nextTick();
   await nextTick();
 
 
   const handler = async () => {
   const handler = async () => {
-    coverRef.value.removeEventListener("animationend", handler);
+    coverRef.value.removeEventListener('animationend', handler);
     tempPhoto.value = null;
     tempPhoto.value = null;
 
 
     photos.value.push({
     photos.value.push({
@@ -127,18 +122,14 @@ const photo = async () => {
           }
           }
         })
         })
         .filter((poss) => poss?.pos.length === 2),
         .filter((poss) => poss?.pos.length === 2),
-      baseLines: baseLines.value
-        .map((data) => getCurrentScreens(data.points))
-        .filter((poss) => poss.length === 2),
-      fixPoints: fixPoints.value
-        .map((data) => ({ text: data.text, pos: getCurrentScreen(data.pos) }))
-        .filter((data) => !!data.pos),
+      baseLines: baseLines.value.map((data) => getCurrentScreens(data.points)).filter((poss) => poss.length === 2),
+      fixPoints: fixPoints.value.map((data) => ({ text: data.text, pos: getCurrentScreen(data.pos) })).filter((data) => !!data.pos),
       basePoints: getCurrentScreens(basePoints.value.map((data) => data.pos)),
       basePoints: getCurrentScreens(basePoints.value.map((data) => data.pos)),
     });
     });
 
 
     Loading.hide();
     Loading.hide();
   };
   };
-  coverRef.value.addEventListener("animationend", handler);
+  coverRef.value.addEventListener('animationend', handler);
 };
 };
 </script>
 </script>
 
 

+ 4 - 1
src/views/tables/demo.vue

@@ -2,7 +2,7 @@
 <template>
 <template>
   <MainPanel>
   <MainPanel>
     <template v-slot:header>
     <template v-slot:header>
-      <Header :title="info.title" type="return">
+      <Header :title="info.title" type="return" :on-back="() => onBack()">
         <!-- <ui-button type="primary" width="96px"> 完成 </ui-button> -->
         <!-- <ui-button type="primary" width="96px"> 完成 </ui-button> -->
       </Header>
       </Header>
     </template>
     </template>
@@ -39,6 +39,9 @@ const list = ref([
 ]);
 ]);
 let index = Number(router.currentRoute.value.params.id);
 let index = Number(router.currentRoute.value.params.id);
 const info = ref(list.value[index - 1]);
 const info = ref(list.value[index - 1]);
+const onBack = () => {
+  router.back();
+};
 onMounted(() => {});
 onMounted(() => {});
 onActivated(() => {
 onActivated(() => {
   index = Number(router.currentRoute.value.params.id);
   index = Number(router.currentRoute.value.params.id);