|
@@ -6,7 +6,7 @@
|
|
|
<iframe ref="sourceFrame" v-if="sourceURL" :src="sourceURL" frameborder="0" @load="onLoadSource"></iframe>
|
|
|
<div class="tools" v-if="source" v-show="!showAdjust && !fscChecked && (dbsChecked || (!target && !bimChecked))">
|
|
|
<div class="item-date">
|
|
|
- <calendar name="source" :count="scenes.length" :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">
|
|
|
<div class="iconfont icon-show_roaming" :class="{ active: mode == 0 }" @click="onModeChange(0)"></div>
|
|
@@ -28,12 +28,12 @@
|
|
|
<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" :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">
|
|
|
<div :class="{ active: points.p1 }" @click="onP1Click('right')">
|
|
|
- <i class="iconfont" :class="[points.p1 ? 'icon-positioning01' : 'icon-positioning02']"></i>
|
|
|
+ <i class="iconfont" :class="[points.p1 ? 'icon-positioning01' : 'icon-positioning02']"></i>
|
|
|
<span>P1</span>
|
|
|
</div>
|
|
|
<div :class="{ active: points.p2 }" @click="onP2Click('right')">
|
|
@@ -43,15 +43,17 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="model" v-show="!showAdjust">
|
|
|
- <div class="bim" :class="{ active: bimChecked, disable: project && !project.bimData }" v-show="!fscChecked">
|
|
|
+ <div class="bim" :class="{ active: bimChecked, disable: bimDisable }" v-show="!fscChecked && !showBim">
|
|
|
<div @click="onBimChecked">
|
|
|
<i class="iconfont icon-BIM"></i>
|
|
|
<span>BIM</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div class="dbs" :class="{ active: dbsChecked, disable: scenes.length < 2 && !bimChecked }" @click="onDbsChecked" v-show="!fscChecked">
|
|
|
- <i class="iconfont icon-split_screen"></i>
|
|
|
- <span>分屏</span>
|
|
|
+ <div class="dbs" :class="{ active: dbsChecked, disable: dbsDisable }" v-show="!fscChecked && !showBim">
|
|
|
+ <div @click="onDbsChecked">
|
|
|
+ <i class="iconfont icon-split_screen"></i>
|
|
|
+ <span>分屏</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>
|
|
@@ -70,7 +72,7 @@ import browser from '@/utils/browser'
|
|
|
import Toast from '@/components/dialog/Toast'
|
|
|
import AppHeader from '@/components/header'
|
|
|
import Calendar from '@/components/calendar'
|
|
|
-import sync, { beforeChangeURL, loadSourceScene, loadTargetScene, setPanoWithBim, flyToP1P2} from '@/utils/sync'
|
|
|
+import sync, { laserChangeMode, beforeChangeURL, loadSourceScene, loadTargetScene, setPanoWithBim, flyToP1P2} from '@/utils/sync'
|
|
|
|
|
|
// 是否BIM模式
|
|
|
const showBim = ref(browser.urlHasValue('bim'))
|
|
@@ -107,6 +109,12 @@ const scenes = computed(() => {
|
|
|
}
|
|
|
})
|
|
|
})
|
|
|
+const controls = computed(()=>{
|
|
|
+ if(bimChecked.value){
|
|
|
+ return scenes.value.length>1
|
|
|
+ }
|
|
|
+ return dbsChecked.value? scenes.value.length>2: scenes.value.length>1
|
|
|
+})
|
|
|
const sourceURL = computed(() => {
|
|
|
|
|
|
beforeChangeURL('source' )
|
|
@@ -185,13 +193,28 @@ const targetDays = computed(() => {
|
|
|
}
|
|
|
})
|
|
|
|
|
|
+const bimDisable = computed(()=>{
|
|
|
+ if(!project.value || !project.value.bimData){
|
|
|
+ return true
|
|
|
+ }
|
|
|
+})
|
|
|
+
|
|
|
+const dbsDisable = computed(()=>{
|
|
|
+ if(scenes.value.length == 0){ // 没有场景的情况
|
|
|
+ return 1
|
|
|
+ }
|
|
|
+ if(!bimChecked.value && scenes.value.length == 1){ // 只有1个场景的情况
|
|
|
+ return 2
|
|
|
+ }
|
|
|
+})
|
|
|
+
|
|
|
const onLoadSource = () => {
|
|
|
if (bimChecked.value && !dbsChecked.value) {
|
|
|
// BIM单屏模式
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- loadSourceScene(sourceFrame, source.value.type < 2 ? 'kankan' : 'laser')
|
|
|
+ loadSourceScene(sourceFrame, source.value.type < 2 ? 'kankan' : 'laser', mode.value)
|
|
|
}
|
|
|
const onLoadTarget = () => {
|
|
|
if (bimChecked.value) {
|
|
@@ -206,6 +229,7 @@ const onModeChange = targetMode => {
|
|
|
if (sync.sourceInst) {
|
|
|
sync.sourceInst.loaded.then(sdk => sdk.scene.changeMode(targetMode))
|
|
|
mode.value = targetMode
|
|
|
+ sync.views.laserChangeMode(mode.value)
|
|
|
}
|
|
|
}
|
|
|
const onPickDate = name => {
|
|
@@ -256,7 +280,7 @@ const onPrevDate = name => {
|
|
|
index = scenes.value.length - 1
|
|
|
}
|
|
|
|
|
|
- if (target.value) {
|
|
|
+ if (target.value && !bimChecked.value) {
|
|
|
// 分屏模式判断
|
|
|
if (name == 'source') {
|
|
|
if (scenes.value[index].createTime == target.value.createTime) {
|
|
@@ -289,7 +313,7 @@ const onNextDate = name => {
|
|
|
index = 0
|
|
|
}
|
|
|
|
|
|
- if (target.value) {
|
|
|
+ if (target.value && !bimChecked.value) {
|
|
|
// 分屏模式判断
|
|
|
if (name == 'source') {
|
|
|
if (scenes.value[index].createTime == target.value.createTime) {
|
|
@@ -311,9 +335,8 @@ const onNextDate = name => {
|
|
|
|
|
|
// bim点击
|
|
|
const onBimChecked = () => {
|
|
|
- if (!project.value || !project.value.bimData) {
|
|
|
- showTips.value = '未发现BIM文件'
|
|
|
- return
|
|
|
+ if (bimDisable.value) {
|
|
|
+ return showTips.value = '未发现BIM文件'
|
|
|
}
|
|
|
if (bimChecked.value) {
|
|
|
bimChecked.value = false
|
|
@@ -341,15 +364,14 @@ const onBimChecked = () => {
|
|
|
|
|
|
// 分屏点击
|
|
|
const onDbsChecked = () => {
|
|
|
- if (!dbsChecked.value && scenes.value.length < 2 && !bimChecked.value) {
|
|
|
- showTips.value = '未发现对比场景'
|
|
|
- return
|
|
|
+ if(dbsDisable.value && !dbsChecked.value){
|
|
|
+ return showTips.value = '未发现对比场景'
|
|
|
}
|
|
|
dbsChecked.value = !dbsChecked.value
|
|
|
if (dbsChecked.value) {
|
|
|
if (bimChecked.value) {
|
|
|
// BIM分屏
|
|
|
- source.value = scenes.value[0]
|
|
|
+ source.value = scenes.value[scenes.value.length-1]
|
|
|
target.value = project.value.bimData
|
|
|
} else {
|
|
|
// 四维看看、激光场景分屏
|
|
@@ -364,8 +386,6 @@ const onDbsChecked = () => {
|
|
|
}
|
|
|
} else {
|
|
|
target.value = null
|
|
|
- //targetApp = null
|
|
|
- views.clear()
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -427,7 +447,7 @@ const onP2Click = (type) =>{
|
|
|
onMounted(() => {
|
|
|
const num = browser.valueFromUrl('m') || ''
|
|
|
const projectId = browser.valueFromUrl('projectId') || 1
|
|
|
- http.get(`smart-site/project/info?projectId=${projectId}`)
|
|
|
+ http.get(`smart-site/project/info?projectId=${projectId}&sceneOrder=asc`)
|
|
|
.then(response => {
|
|
|
if (response.success) {
|
|
|
if (response.data) {
|
|
@@ -451,14 +471,18 @@ onMounted(() => {
|
|
|
else if (project.value.sceneList.length) {
|
|
|
if (num) {
|
|
|
source.value = project.value.sceneList.find(c => c.num == num)
|
|
|
+ } else {
|
|
|
+ source.value = project.value.sceneList[project.value.sceneList.length-1]
|
|
|
}
|
|
|
if (!source.value) {
|
|
|
- source.value = project.value.sceneList[0]
|
|
|
+ return showTips.value = '当前场景已被删除,无法进行查看'
|
|
|
}
|
|
|
if (showAdjust.value || showSplit.value) {
|
|
|
onBimChecked()
|
|
|
nextTick(() => onDbsChecked())
|
|
|
}
|
|
|
+ } else {
|
|
|
+ return showTips.value = '当前场景已被删除,无法进行查看'
|
|
|
}
|
|
|
}
|
|
|
} else {
|