Forráskód Böngészése

feat: 激光场景支持测量

rindy 2 éve
szülő
commit
071f0f5b8b
1 módosított fájl, 24 hozzáadás és 11 törlés
  1. 24 11
      src/pages/Viewer.vue

+ 24 - 11
src/pages/Viewer.vue

@@ -6,7 +6,7 @@
         <main>
             <div class="split">
                 <iframe ref="sourceFrame" v-if="sourceURL" :src="sourceURL" frameborder="0" @load="onLoadSource"></iframe>
-                <div class="tools" v-if="source && !showRules" v-show="showWidget && !showAdjust && !fscChecked && (dbsChecked || (!target && !bimChecked))">
+                <div class="tools" v-if="source && !showRules && !ruleChecked" v-show="showWidget && !showAdjust && !fscChecked && (dbsChecked || (!target && !bimChecked))">
                     <div class="item-date">
                         <calendar
                             name="source"
@@ -72,25 +72,25 @@
                 </div>
             </div>
             <div class="model" v-show="showWidget && !showAdjust && !showRules">
-                <div v-if="isLogin" class="file" :class="{ active: fileChecked, disable: fileDisable }" v-show="!fscChecked && !showBim && !dbsChecked && !bimChecked">
+                <div v-if="isLogin" class="file" :class="{ active: fileChecked, disable: fileDisable }" v-show="!fscChecked && !showBim && !dbsChecked && !bimChecked && !ruleChecked">
                     <div @click="onFileChecked">
                         <i class="iconfont icon-note1"></i>
                         <span>{{ $t('home.tag') }}</span>
                     </div>
                 </div>
-                <div v-if="source?.type < 2" class="rule" :class="{ active: fileChecked, disable: fileDisable }" v-show="!fscChecked && !showBim && !dbsChecked && !bimChecked">
+                <div class="rule" :class="{ active: ruleChecked, disable: fileDisable }" v-show="!fscChecked && !showBim && !dbsChecked && !bimChecked">
                     <div @click="onRuleChecked">
                         <i class="iconfont icon-measurement"></i>
                         <span>{{ $t('common.measure') }}</span>
                     </div>
                 </div>
-                <div class="bim" :class="{ active: bimChecked, disable: bimDisable }" v-show="!fscChecked && !showBim">
+                <div class="bim" :class="{ active: bimChecked, disable: bimDisable }" v-show="!fscChecked && !showBim && !ruleChecked">
                     <div @click="onBimChecked">
                         <i class="iconfont icon-BIM"></i>
                         <span>BIM</span>
                     </div>
                 </div>
-                <div class="dbs" :class="{ active: dbsChecked, disable: dbsDisable }" v-show="!fscChecked && !showBim">
+                <div class="dbs" :class="{ active: dbsChecked, disable: dbsDisable }" v-show="!fscChecked && !showBim && !ruleChecked">
                     <div @click="onDbsChecked">
                         <i class="iconfont icon-split_screen"></i>
                         <span>{{ $t('home.splitScreen') }}</span>
@@ -123,7 +123,7 @@ import i18n from '@/i18n'
 import Rules from './Rules'
 const { t } = i18n.global
 const isDev = process.env.VUE_APP_TEST == 1
-
+const rules = []
 const tags = ref([])
 const notify = ref(null)
 const isEdit = ref(false)
@@ -153,6 +153,7 @@ const bimChecked = ref()
 const dbsChecked = ref(null)
 const fscChecked = ref(null)
 const fileChecked = ref(false)
+const ruleChecked = ref(false)
 
 const datepickName = ref(null)
 
@@ -554,11 +555,23 @@ const onP2Click = type => {
     flyToP1P2(points.value.p2)
 }
 const onRuleChecked = () => {
-    showRules.value = true
-    window.kankan.TagManager.startMeasure()
-
-    // store.commit('SetPlayerOptions', { showRulesWidgets: true })
-    // emits('close')
+    if (ruleChecked.value) {
+        ruleChecked.value = false
+        rules.forEach(rule=>{
+            rule.clear()
+        })
+        return
+    }
+    if (source.value.type<2) {
+        showRules.value = true
+        window.kankan.TagManager.startMeasure()
+    } else {
+        sync.sourceInst.loaded.then(sdk => {
+            const rule = sdk.startMeasure()
+            rules.push(rule)
+        })
+        ruleChecked.value = true
+    }
 }
 
 onMounted(() => {