Browse Source

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

xzw 2 years ago
parent
commit
302e3a230b

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


+ 1 - 1
src/graphic/CanvasStyle/default.js

@@ -58,7 +58,7 @@ const CurveLan = {
 
 
 const Text = {
 const Text = {
   strokeStyle: "rgb(0,0,0,1)",
   strokeStyle: "rgb(0,0,0,1)",
-  fillStyle: "rgb(0,0,0,1)",
+  fillStyle: "#2F8FFF",
   fontSize: 14,
   fontSize: 14,
   strokeStyle_adding: "rgba(243, 255, 0, 0.8)",
   strokeStyle_adding: "rgba(243, 255, 0, 0.8)",
   fillStyle_adding: "rgba(243, 255, 0, 0.8)",
   fillStyle_adding: "rgba(243, 255, 0, 0.8)",

+ 1 - 1
src/graphic/Renderer/Draw.js

@@ -517,7 +517,7 @@ export default class Draw {
     }
     }
 
 
     const dires =
     const dires =
-      vector.category === UIEvents.MeasureLine
+      vector.category === UIEvents.DoubleArrow
         ? [
         ? [
             [start, end],
             [start, end],
             [end, start],
             [end, start],

+ 44 - 0
src/views/scene/TrackMeasure.vue

@@ -0,0 +1,44 @@
+<template>
+  <ButtonPane class="photo-btn fun-ctrl" :size="80" @click="active = true">
+    <ui-icon type="line_h" class="icon" :class="{active}" />
+  </ButtonPane>
+</template>
+<script setup lang="ts">
+import UiIcon from "@/components/base/components/icon/index.vue";
+import ButtonPane from "@/components/button-pane/index.vue";
+import {startMeasure, SuccessMeasureAtom} from "@/views/scene/linkage/measure";
+import {ref, watchEffect} from "vue";
+
+const props = defineProps<{ onConfirm: (data: SuccessMeasureAtom) => void }>()
+const active = ref(false)
+watchEffect(() => {
+  if (active.value) {
+    startMeasure('L_LINE', 'red')
+      .then((measure) => {
+        props.onConfirm(measure)
+      })
+  }
+})
+</script>
+
+<style lang="scss" scoped>
+.photo-btn {
+  position: absolute;
+  margin-bottom: 16px;
+  top: 50%;
+  left: 15px;
+
+
+  .icon {
+    &.active {
+      color: var(--colors-primary-base);
+    }
+
+    position: absolute;
+    left: 50%;
+    transform: translateX(-50%);
+    font-size: 28px;
+  }
+}
+
+</style>

+ 2 - 0
src/views/scene/linkage/measure.ts

@@ -9,9 +9,11 @@ type TempCanvasMeasureAtom = Omit<CanvasMeasureAtom, "canvas"> & {
   canvas: StartMeasure;
   canvas: StartMeasure;
 };
 };
 
 
+export type SuccessMeasureAtom = MeasureAtom & {length: number}
 
 
 let prevMeasure: TempCanvasMeasureAtom
 let prevMeasure: TempCanvasMeasureAtom
 
 
+
 export const startMeasure = (type: MeasureType, color: string, firstClickMarker?: () => void) => {
 export const startMeasure = (type: MeasureType, color: string, firstClickMarker?: () => void) => {
   if (prevMeasure) {
   if (prevMeasure) {
     prevMeasure.canvas.bus.emit("quit")
     prevMeasure.canvas.bus.emit("quit")

+ 1 - 1
src/views/scene/menus/menus.ts

@@ -1,5 +1,5 @@
 import {findMenuByAttr, generateMixMenus as generateMixMenusRaw} from '@/utils/menus'
 import {findMenuByAttr, generateMixMenus as generateMixMenusRaw} from '@/utils/menus'
-import {computed, nextTick, Ref, ref} from "vue";
+import {nextTick, ref} from "vue";
 import {useSDK} from "@/hook";
 import {useSDK} from "@/hook";
 import {laserModeStack, modeDisabled} from '@/hook/custom/index'
 import {laserModeStack, modeDisabled} from '@/hook/custom/index'
 import {Mode} from "@/sdk";
 import {Mode} from "@/sdk";

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

@@ -1,10 +1,13 @@
 import {router} from "@/router";
 import {router} from "@/router";
 import writeRouteName from "../../router/constant";
 import writeRouteName from "../../router/constant";
-import {startMeasure} from '../scene/linkage/measure'
+import {startMeasure, SuccessMeasureAtom} from '../scene/linkage/measure'
 import {ref, watchEffect} from "vue";
 import {ref, watchEffect} from "vue";
 import {useAsyncSDK} from '@/hook/useLaser'
 import {useAsyncSDK} from '@/hook/useLaser'
 import {customMap, laserModeStack} from '@/hook/custom/index'
 import {customMap, laserModeStack} from '@/hook/custom/index'
 import {Mode} from "@/sdk";
 import {Mode} from "@/sdk";
+import {mount} from "@/components/base/utils/componentHelper";
+import TrackMeasure from "@/views/scene/TrackMeasure.vue";
+import {list} from '@/store/measure'
 
 
 
 
 export const trackMode = ref(false)
 export const trackMode = ref(false)
@@ -14,11 +17,25 @@ export const trackMeasureWidth = async () => {
   trackMode.value = true
   trackMode.value = true
   await router.push({ name: writeRouteName.scene })
   await router.push({ name: writeRouteName.scene })
   const sdk = await useAsyncSDK()
   const sdk = await useAsyncSDK()
+  list.value.forEach(item => sdk.carry.measureMap.get(item).hide())
+
   laserModeStack.push(ref(Mode.cloud))
   laserModeStack.push(ref(Mode.cloud))
+  await new Promise(resolve => setTimeout(resolve, 10))
   sdk.enterTopView()
   sdk.enterTopView()
-  const measure = await startMeasure('LINE', 'red')
+  const measure = await new Promise<SuccessMeasureAtom>(resolve => {
+    const { destroy } = mount(TrackMeasure, {
+      props: {
+        onConfirm: data => {
+          destroy()
+          resolve(data)
+        }
+      },
+      element: document.body
+    } as any)
+  })
   laserModeStack.pop()
   laserModeStack.pop()
   await router.back()
   await router.back()
+  list.value.forEach(item => sdk.carry.measureMap.get(item).show())
   await new Promise(resolve => setTimeout(resolve, 100))
   await new Promise(resolve => setTimeout(resolve, 100))
   sdk.leaveTopView()
   sdk.leaveTopView()
   trackMode.value = false
   trackMode.value = false