jinx 2 месяцев назад
Родитель
Сommit
17db0d8ae9
1 измененных файлов с 70 добавлено и 58 удалено
  1. 70 58
      src/pages/Viewer.vue

+ 70 - 58
src/pages/Viewer.vue

@@ -1,33 +1,34 @@
 <template>
     <Rules v-if="showRules" @close="closeRules" />
 
-    <AppHeader v-show="!fscChecked" :project="project" @getUserId="getUserId" :show-adjust="showAdjust"
-        @update="onPointsUpdate" />
+    <AppHeader v-show="!fscChecked" :project="project" @getUserId="getUserId" :show-adjust="showAdjust" @update="onPointsUpdate" />
     <article>
         <main>
             <div class="split">
-                <iframe ref="sourceFrame" v-if="sourceURL" :src="sourceURL" frameborder="0"
-                    @load="onLoadSource"></iframe>
-                <div class="tools" v-if="source && !showRules && !ruleChecked"
-                    v-show="showWidget && !showAdjust && !fscChecked && (dbsChecked || (!target && !bimChecked))">
+                <iframe ref="sourceFrame" v-if="sourceURL" :src="sourceURL" frameborder="0" @load="onLoadSource"></iframe>
+                <div class="tools" v-if="source && !showRules && !ruleChecked" v-show="showWidget && !showAdjust && !fscChecked && (dbsChecked || (!target && !bimChecked))">
                     <div class="item-date">
-                        <calendar name="source" :count="scenes.length" :controls="controls" :value="sourceDate"
-                            :highlighted="sourceDays" @selected="onSelected" @pick="onPickDate" @prev="onPrevDate"
-                            @next="onNextDate"></calendar>
+                        <calendar
+                            name="source"
+                            :count="scenes.length"
+                            :controls="controls"
+                            :value="sourceDate"
+                            :highlighted="sourceDays"
+                            @selected="onSelected"
+                            @pick="onPickDate"
+                            @prev="onPrevDate"
+                            @next="onNextDate"
+                        ></calendar>
                     </div>
                     <div class="item-mode" v-if="source.type == 2 || source.type == 3">
-                        <div class="iconfont icon-show_roaming" :class="{ active: mode == 0 }" @click="onModeChange(0)">
-                        </div>
-                        <div class="iconfont icon-show_plane" :class="{ active: mode == 1 }" @click="onModeChange(1)">
-                        </div>
+                        <div class="iconfont icon-show_roaming" :class="{ active: mode == 0 }" @click="onModeChange(0)"></div>
+                        <div class="iconfont icon-show_plane" :class="{ active: mode == 1 }" @click="onModeChange(1)"></div>
                     </div>
-                    <div class="item-density" v-if="(source.type == 2 && mode == 1) || (source.type == 3 && mode == 1)"
-                        :class="{ active: showDensity }" @click="showDensity = !showDensity">
+                    <div class="item-density" v-if="(source.type == 2 && mode == 1) || (source.type == 3 && mode == 1)" :class="{ active: showDensity }" @click="showDensity = !showDensity">
                         <span>{{ densityType.text }}</span>
                         <i class="iconfont icon-arrows_down"></i>
                         <ul>
-                            <li v-for="density in densityTypes" @click="onDensityChange(density)">{{ density.text }}
-                            </li>
+                            <li v-for="density in densityTypes" @click="onDensityChange(density)">{{ density.text }}</li>
                         </ul>
                     </div>
                 </div>
@@ -46,9 +47,17 @@
                 <iframe ref="targetFrame" :src="targetURL" frameborder="0" @load="onLoadTarget"></iframe>
                 <div class="tools" v-show="!fscChecked && !bimChecked">
                     <div class="item-date target">
-                        <calendar name="target" :count="scenes.length" :controls="controls" :value="targetDate"
-                            :highlighted="targetDays" @selected="onSelected" @pick="onPickDate" @prev="onPrevDate"
-                            @next="onNextDate"></calendar>
+                        <calendar
+                            name="target"
+                            :count="scenes.length"
+                            :controls="controls"
+                            :value="targetDate"
+                            :highlighted="targetDays"
+                            @selected="onSelected"
+                            @pick="onPickDate"
+                            @prev="onPrevDate"
+                            @next="onNextDate"
+                        ></calendar>
                     </div>
                 </div>
                 <div class="points" v-if="showAdjust">
@@ -63,38 +72,33 @@
                 </div>
             </div>
             <div class="model" v-show="showWidget && !showAdjust && !showRules">
-                <div class="rule" :class="{ active: ruleChecked, 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 v-if="isLogin && isAuth" class="file" :class="{ active: fileChecked, disable: fileDisable }"
-                    v-show="!fscChecked && !showBim && !dbsChecked && !bimChecked && !ruleChecked">
+                <div v-if="isLogin && isAuth" 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 class="bim" :class="{ active: bimChecked, disable: bimDisable }"
-                    v-show="!fscChecked && !showBim && !ruleChecked">
+                <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 && !ruleChecked">
+                <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>
                     </div>
                 </div>
                 <div class="fsc" :class="{ active: fscChecked }" @click="onFscChecked">
-                    <i class="iconfont"
-                        :class="[fscChecked ? 'icon-full_screen_selected' : 'icon-full_screen_normal']"></i>
+                    <i class="iconfont" :class="[fscChecked ? 'icon-full_screen_selected' : 'icon-full_screen_normal']"></i>
                     <span>{{ $t('home.fullScreen') }}</span>
                 </div>
             </div>
@@ -185,7 +189,7 @@ watch(
             // tagsVieww.style.visibility = 'visible'
             // tagsVieww.style.width = '100%'
             // tagsVieww.style.overflow = 'visible'
-            if(bimChecked.value){
+            if (bimChecked.value) {
                 tagsVieww.style.visibility = 'hidden'
             }
         }
@@ -245,7 +249,6 @@ const controls = computed(() => {
     return dbsChecked.value ? scenes.value.length > 2 : scenes.value.length > 1
 })
 const sourceURL = computed(() => {
-
     beforeChangeURL('source')
 
     if (bimChecked.value && !dbsChecked.value) {
@@ -265,11 +268,13 @@ const sourceURL = computed(() => {
 
         let url = ''
         if (process.env.VUE_APP_ENV == 'aws') {
-            url = `smart-laser.html?m=${source.value.num}${isDev ? '&dev' : ''}&lang=${getLocale()}&serve_link=${process.env.VUE_APP_LASER_URL}&panoResourceBasePath=${process.env.VUE_APP_RESOURCE_URL
-                }&resourceBasePath=${process.env.VUE_APP_LASER_RESOURCE_URL}&region=${process.env.VUE_APP_ENV}`
+            url = `smart-laser.html?m=${source.value.num}${isDev ? '&dev' : ''}&lang=${getLocale()}&serve_link=${process.env.VUE_APP_LASER_URL}&panoResourceBasePath=${
+                process.env.VUE_APP_RESOURCE_URL
+            }&resourceBasePath=${process.env.VUE_APP_LASER_RESOURCE_URL}&region=${process.env.VUE_APP_ENV}`
         } else {
-            url = `smart-laser.html?m=${source.value.num}${isDev ? '&dev' : ''}&lang=${getLocale()}&serve_link=${process.env.VUE_APP_LASER_URL}&panoResourceBasePath=${process.env.VUE_APP_RESOURCE_URL
-                }&resourceBasePath=${process.env.VUE_APP_LASER_RESOURCE_URL}`
+            url = `smart-laser.html?m=${source.value.num}${isDev ? '&dev' : ''}&lang=${getLocale()}&serve_link=${process.env.VUE_APP_LASER_URL}&panoResourceBasePath=${
+                process.env.VUE_APP_RESOURCE_URL
+            }&resourceBasePath=${process.env.VUE_APP_LASER_RESOURCE_URL}`
         }
         return url
     }
@@ -309,11 +314,13 @@ const targetURL = computed(() => {
         // 深时场景
         let url = ''
         if (process.env.VUE_APP_ENV == 'aws') {
-            url = `smart-laser.html?m=${target.value.num}${isDev ? '&dev' : ''}&lang=${getLocale()}&serve_link=${process.env.VUE_APP_LASER_URL}&panoResourceBasePath=${process.env.VUE_APP_RESOURCE_URL
-                }&resourceBasePath=${process.env.VUE_APP_LASER_RESOURCE_URL}&region=${process.env.VUE_APP_ENV}`
+            url = `smart-laser.html?m=${target.value.num}${isDev ? '&dev' : ''}&lang=${getLocale()}&serve_link=${process.env.VUE_APP_LASER_URL}&panoResourceBasePath=${
+                process.env.VUE_APP_RESOURCE_URL
+            }&resourceBasePath=${process.env.VUE_APP_LASER_RESOURCE_URL}&region=${process.env.VUE_APP_ENV}`
         } else {
-            url = `smart-laser.html?m=${target.value.num}${isDev ? '&dev' : ''}&lang=${getLocale()}&serve_link=${process.env.VUE_APP_LASER_URL}&panoResourceBasePath=${process.env.VUE_APP_RESOURCE_URL
-                }&resourceBasePath=${process.env.VUE_APP_LASER_RESOURCE_URL}`
+            url = `smart-laser.html?m=${target.value.num}${isDev ? '&dev' : ''}&lang=${getLocale()}&serve_link=${process.env.VUE_APP_LASER_URL}&panoResourceBasePath=${
+                process.env.VUE_APP_RESOURCE_URL
+            }&resourceBasePath=${process.env.VUE_APP_LASER_RESOURCE_URL}`
         }
         return url
     }
@@ -406,10 +413,16 @@ const onLoadSource = () => {
         window.laser.then(sdk => {
             sdk.scene.on('posChange', cameraPos => {
                 tags.value.forEach(tag => {
-                    const info2d = sdk.scene.getScreenByPoint(tag.position,true)
-                    tag.x = info2d.pos.x
-                    tag.y = info2d.pos.y
+                    const info2d = sdk.scene.getScreenByPoint(tag.position, true)
+                    // tag.x = info2d.pos.x
+                    // tag.y = info2d.pos.y
+                    // tag.visible = info2d.trueSide && info2d.inSight
+
                     tag.visible = info2d.trueSide && info2d.inSight
+                    if (tag.visible) {
+                        tag.x = info2d.pos.x
+                        tag.y = info2d.pos.y
+                    }
                 })
             })
 
@@ -703,7 +716,6 @@ const onRuleChecked = () => {
     }
 }
 const getTagList = num => {
-
     const pnum = num ? num : browser.getURLParam('m')
 
     http.post(`smart-site/marking/list`, {
@@ -714,20 +726,20 @@ const getTagList = num => {
     }).then(response => {
         if (response.data && response.data.list) {
             tags.value.length = 0
-            response.data.list.map(item => {
-                item.hotData.visible = false
-                item.hotData.id = item.markingId
-                item.hotData.createTime = item.createTime
-                item.hotData.createBy = item.createBy
-                return item.hotData
-            }).forEach(item => {
-                tags.value.push(item)
-
-            })
+            response.data.list
+                .map(item => {
+                    item.hotData.visible = false
+                    item.hotData.id = item.markingId
+                    item.hotData.createTime = item.createTime
+                    item.hotData.createBy = item.createBy
+                    return item.hotData
+                })
+                .forEach(item => {
+                    tags.value.push(item)
+                })
             if (window['kankan']) {
                 window['kankan'].TagManager.load(tags.value)
             }
-
         }
     })
 }
@@ -920,7 +932,7 @@ main {
         display: flex;
         flex-direction: column;
 
-        >div {
+        > div {
             cursor: pointer;
             width: 50px;
             height: 50px;
@@ -934,7 +946,7 @@ main {
             align-items: center;
             justify-content: center;
 
-            >div {
+            > div {
                 width: 100%;
                 height: 100%;
                 display: flex;
@@ -971,7 +983,7 @@ main {
         color: #fff;
         pointer-events: none;
 
-        >div {
+        > div {
             pointer-events: all;
         }