Bladeren bron

Merge branch 'dev' of http://192.168.0.115:3000/bill/traffic-laser into dev

xzw 1 jaar geleden
bovenliggende
commit
2683790a77

+ 6 - 6
src/components/button-pane/index.vue

@@ -5,7 +5,7 @@
 </template>
 
 <script setup lang="ts">
-import { computed, onMounted, ref } from "vue";
+import { computed, onMounted, onUpdated, ref } from "vue";
 
 const props = withDefaults(
   defineProps<{
@@ -20,11 +20,11 @@ const props = withDefaults(
 
 const pane = ref<HTMLDivElement>();
 const height = ref<number>(1000);
-onMounted(
-  () =>
-    (height.value =
-      props.dire === "row" ? pane.value.offsetWidth : pane.value.offsetHeight)
-);
+const updateHeight = () =>
+  (height.value =
+    props.dire === "row" ? pane.value.offsetWidth : pane.value.offsetHeight);
+onUpdated(updateHeight);
+onMounted(updateHeight);
 
 const style = computed(() => {
   const isRow = props.dire === "row";

+ 17 - 15
src/views/scene/covers/actions.vue

@@ -1,29 +1,31 @@
 <template>
   <div class="action-layout">
     <ButtonPane
-        v-for="menu in menus"
-        :key="menu.key"
-        @touchstart.stop
-        @click.stop="menu.action"
-        class="action"
-        :style="{backgroundColor: menu.color}">
-      <UiIcon :type="menu.icon" class="icon" :style="{color: menu.iconColor}"/>
+      v-for="menu in menus"
+      :key="menu.key"
+      @touchstart.stop
+      @click.stop="menu.action"
+      class="action"
+      :style="{ backgroundColor: menu.color }"
+    >
+      <UiIcon :type="menu.icon" class="icon" :style="{ color: menu.iconColor }" />
     </ButtonPane>
   </div>
 </template>
 <script lang="ts" setup>
-import ButtonPane from '@/components/button-pane/index.vue'
+import ButtonPane from "@/components/button-pane/index.vue";
 import UiIcon from "@/components/base/components/icon/index.vue";
+import { DrawStatus, drawstatus } from "../fixManage";
 
 type ActionItem = {
-  key: string
-  icon: string,
-  iconColor: string,
-  color: string,
-  action: () => void
-}
+  key: string;
+  icon: string;
+  iconColor: string;
+  color: string;
+  action: () => void;
+};
 
-defineProps<{ menus: ActionItem[] }>()
+defineProps<{ menus: ActionItem[] }>();
 </script>
 
 <style lang="scss" scoped>

+ 2 - 5
src/views/scene/covers/basePoints.vue

@@ -16,7 +16,7 @@
   <!--  <ActionsPanel :menus="activeActionMenus" v-if="active" />-->
   <div ref="menu" @touchstart.stop class="action-menus" v-if="!trackBaseIng">
     <ActionMenus
-      v-if="customMap.activeBasePoint"
+      v-if="drawstatus !== DrawStatus.ing && customMap.activeBasePoint"
       :menus="activeActionMenus"
       :active-key="customMap.activeBasePoint"
       dire="row"
@@ -27,12 +27,9 @@
 <script setup lang="ts">
 import { basePoints } from "@/store/basePoint";
 import BasePoint from "./basePoint.vue";
-import { ref } from "vue";
-import { FixPoint } from "@/store/fixPoint";
-import ActionsPanel from "@/views/scene/covers/actions.vue";
 import { customMap, useSDK } from "@/hook";
 import ActionMenus from "@/components/group-button/index.vue";
-import { trackBaseIng } from "../fixManage";
+import { DrawStatus, drawstatus, trackBaseIng } from "../fixManage";
 
 const activeActionMenus = [
   {

+ 2 - 1
src/views/scene/covers/fixPoints.vue

@@ -13,8 +13,9 @@
 
   <div ref="menu" @touchstart.stop class="action-menus">
     <!--    <ActionsPanel :menus="activeActionMenus" v-show="customMap.activeFixPoint" />-->
+
     <ActionMenus
-      v-if="customMap.activeFixPoint"
+      v-if="drawstatus !== DrawStatus.ing && customMap.activeFixPoint"
       :menus="activeActionMenus"
       :type="0"
       :active-key="edit ? 'edit' : null"

+ 6 - 1
src/views/scene/covers/measures.vue

@@ -9,7 +9,11 @@
   />
 
   <div ref="menu" @touchstart.stop class="action-menus">
-    <ActionMenus v-if="active" :menus="activeActionMenus" dire="row" />
+    <ActionMenus
+      v-if="drawstatus !== DrawStatus.ing && active"
+      :menus="activeActionMenus"
+      dire="row"
+    />
   </div>
 </template>
 
@@ -22,6 +26,7 @@ import ActionsPanel from "@/views/scene/covers/actions.vue";
 import { customMap } from "@/hook";
 import ActionMenus from "@/components/group-button/index.vue";
 import * as process from "process";
+import { drawstatus, DrawStatus } from "../fixManage";
 
 const active = ref<MeasureAtom>();
 const getStore = (item: MeasureAtom) =>

+ 14 - 0
src/views/scene/menus/actions.ts

@@ -34,6 +34,7 @@ import {
   measureMode,
   trackBaseIng,
 } from "../fixManage";
+import { disableCover } from "../sceneStatus";
 
 const trackPosMenuAction = (
   onComplete: () => void,
@@ -76,6 +77,7 @@ const trackMeasureMenuAction = (
   let startTipEd = false;
   let endTipEd = false;
   const startTip = () => {
+    disableCover.value = true;
     hide && hide();
     if (!startTipEd) {
       hide = Message.success({ msg: `请绘制${name}` });
@@ -94,6 +96,7 @@ const trackMeasureMenuAction = (
   // customMap.magnifier = true
   const onAddMeasure = (data: MeasureAtom) => {
     if (data) {
+      disableCover.value = false;
       data.id = getId();
       onAddStore(data);
       onComplete();
@@ -111,6 +114,7 @@ const trackMeasureMenuAction = (
 
   return () => {
     stopMeasure();
+    disableCover.value = false;
     hide();
   };
 };
@@ -118,6 +122,7 @@ const trackMeasureMenuAction = (
 const menuActions = {
   [menuEnum.BASE_POINT]: (_, onComplete) => {
     let hide = Message.success({ msg: "请单击选择基准点位置" });
+    disableCover.value = true;
     const onDestroy = trackPosMenuAction(
       () => {
         hide && hide();
@@ -130,10 +135,12 @@ const menuActions = {
           hide();
           hide = null;
         }
+        disableCover.value = false;
       },
       false
     );
     return () => {
+      disableCover.value = false;
       onDestroy();
       hide && hide();
     };
@@ -141,11 +148,13 @@ const menuActions = {
   [menuEnum.FIX_POINT]: (_, onComplete) => {
     const add = () => {
       hide = Message.success({ msg: "请单击选择固定点位置" });
+      disableCover.value = true;
       onDestroy = trackPosMenuAction(
         () => {
           hide && hide();
           onComplete();
           trackBaseIng.value = false;
+          disableCover.value = false;
         },
         (pos) => {
           const len = fixPoints.value.push({
@@ -166,6 +175,7 @@ const menuActions = {
           trackBaseIng.value = false;
 
           getFix3d(fixPoints.value[len - 1]);
+          disableCover.value = false;
         },
         false
       );
@@ -192,6 +202,7 @@ const menuActions = {
       onDestroy && onDestroy();
       hide && hide();
       stop && stop();
+      disableCover.value = false;
       trackBaseIng.value = false;
     };
   },
@@ -199,6 +210,7 @@ const menuActions = {
     let hide;
     const add = () => {
       hide = Message.success({ msg: "请单击绘制固定点形状" });
+      disableCover.value = true;
       showMenus.value = false;
       const data: FixPoint = reactive({
         id: getId(),
@@ -214,6 +226,7 @@ const menuActions = {
       fix3d.bus.on("graphDrawComplete", (complete) => {
         console.error("????");
         showMenus.value = true;
+        disableCover.value = false;
         trackBaseIng.value = false;
         if (complete) {
           const len = fixPoints.value.push(data);
@@ -246,6 +259,7 @@ const menuActions = {
     }
     return () => {
       showMenus.value = true;
+      disableCover.value = false;
       drawstatus.value = DrawStatus.quit;
       trackBaseIng.value = false;
       hide && hide();

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

@@ -1,5 +1,5 @@
 <template>
-  <Container @loaded="loaded = true" :viewStatus="viewStatus" />
+  <Container @loaded="loaded = true" :viewStatus="viewStatus" :class="{ disableCover }" />
   <template v-if="loaded && !trackMode">
     <Menus
       v-if="viewStatus"
@@ -34,6 +34,7 @@ import customSetup from "../../hook/custom";
 import { ref, watchEffect } from "vue";
 import { trackMode } from "@/views/scene/trackMeasureWidth";
 import { showMenus } from "./menus/menus";
+import { disableCover } from "./sceneStatus";
 
 withDefaults(defineProps<{ viewStatus: boolean }>(), { viewStatus: true });
 defineEmits<{ (e: "update:viewStatus", v: boolean): void }>();

+ 3 - 0
src/views/scene/sceneStatus.ts

@@ -0,0 +1,3 @@
+import { ref } from "vue";
+
+export const disableCover = ref(false);

+ 2 - 0
src/views/scene/trackMeasureWidth.ts

@@ -8,11 +8,13 @@ import { Mode } from "@/sdk";
 import { mount } from "@/components/base/utils/componentHelper";
 import TrackMeasure from "@/views/scene/TrackMeasure.vue";
 import { list } from "@/store/measure";
+import { disableCover } from "./sceneStatus";
 
 export const trackMode = ref(false);
 
 export const trackMeasureWidth = async () => {
   trackMode.value = true;
+  disableCover.value = true;
   // await router.push({ name: writeRouteName.scene });
   await router.push("/scene?full=1");
   const sdk = await useAsyncSDK();