From 50ee7232f3c98fe24a1f2e31dba9508cfec14887 Mon Sep 17 00:00:00 2001 From: gjj <Ganjj@probim.com.cn> Date: Fri, 21 Feb 2025 17:35:39 +0800 Subject: [PATCH] 模型预览 --- public/config.js | 6 ++- src/Dashboard.vue | 6 +- src/views/Home.vue | 68 +++++++++++++++++++++++++++++----- 3 files changed, 65 insertions(+), 15 deletions(-) diff --git a/public/config.js b/public/config.js index 0089ef1..298537a 100644 --- a/public/config.js +++ b/public/config.js @@ -6,6 +6,8 @@ workflowWebURL: "http://workflow.probim.cn", pid: "71f7a5df-a7e3-42f4-bcea-36d7d2924ddd", mapboxToken: 'pk.eyJ1Ijoiemhlbmd4dWZhbmciLCJhIjoiY2w5ejNiOWJ1MDE0bTN1cnp4MjNmM2dpNCJ9.qy3k-99E6-XSK5ldYUFz-A', - modelUrl: '//multiverse-server.vothing.com', // 模型服务 数据请求地址 - + modelUrl: '//dev.vothing.com/scenemanagerVothing/#/', // 模型预览地址 + panoUrl: '//47.95.223.61:6004', // 全景预览地址 + panoBaseUrl: '//47.95.223.61:6003', // 全景图及文档接口 + sceneUrl: 'http://dev.vothing.com/#/sceneDetail?linkToken=YjkzMWEyMzItNjQwOC00OTljLTlmOGItY2UxYWI4Mzc5YzQyLDFjMTc5NjE3LWE3ZDktNDI0My1iODEzLTg0ZmE1NWExN2NlNyxjODA0YzAzMS02ZGRmLTRkNmItYTM2ZC0xY2ExZjM4MzJiYTk=', // 场景地址 } \ No newline at end of file diff --git a/src/Dashboard.vue b/src/Dashboard.vue index 5e6dc05..d9c19bd 100644 --- a/src/Dashboard.vue +++ b/src/Dashboard.vue @@ -2,14 +2,13 @@ * @Author: gjj Ganjj@probim.com.cn * @Date: 2025-02-14 14:32:17 * @LastEditors: gjj Ganjj@probim.com.cn - * @LastEditTime: 2025-02-20 15:46:39 + * @LastEditTime: 2025-02-21 16:54:08 * @FilePath: \北京交通大学\src\Dashboard.vue --> <!-- eslint-disable vue/no-textarea-mustache --> <!-- eslint-disable vue/html-self-closing --> <template> <main - v-loading="isAuthenticating || isLoadingPrjList" id="appWrapper" class="absolute top-[50%] left-[50%] -translate-x-[50%] w-screen h-screen -translate-y-[50%] font-pingfang text-white select-none" :style="{ @@ -98,7 +97,8 @@ }, data() { return { - backgroundImage: new URL('@/assets/images/backgrounds/screen.png', import.meta.url).href + backgroundImage: new URL('@/assets/images/backgrounds/screen.png', import.meta.url).href, + currentProjectId: '1c179617-a7d9-4243-b813-84fa55a17ce7' }; }, computed: { diff --git a/src/views/Home.vue b/src/views/Home.vue index 9e8fbf5..da552b2 100644 --- a/src/views/Home.vue +++ b/src/views/Home.vue @@ -55,15 +55,19 @@ </div> <!-- 主要内容区域 --> - <div class="main-content"> + <div class="main-content" v-loading="isLoading"> <!-- 模型 --> - <div class="content" v-if="currentView === 'model'"> - <iframe id="model-iframe" class="content-frame" src="" frameborder="0"></iframe> + <div class="w-full h-full" v-if="currentView === 'model'" > + <iframe id="model-iframe" class="content-frame w-full h-[588px]" src="" frameborder="0"></iframe> </div> <!-- 720 --> - <div class="pano-content" v-if="currentView === '720'"> - <div id="panoviewpreview" class="pano-frame"> + <div class="w-full h-full bg-white" v-if="currentView === '720'"> + <div id="panoviewpreview" class="pano-frame w-full h-[588px]"> </div> + </div> + <!-- 项目 --> + <div class="w-full h-full" v-if="currentView === 'project'" > + <iframe id="scene-iframe" class="scene-frame w-full h-[588px]" src="" frameborder="0"></iframe> </div> </div> </div> @@ -86,6 +90,7 @@ </template> <script> +import { nextTick } from 'vue' export default { name: 'Home', components: { @@ -102,24 +107,68 @@ } }, bottomImage: new URL('@/assets/images/titles/shigong.png', import.meta.url).href, + isLoading: false } }, methods: { handleChange(view) { + this.isLoading = true this.currentView = view - + if (view === 'model') { + removepano('krpanoSWFObject') + nextTick(() => { + this.modelShow() + }) + } else if (view === '720') { + nextTick(() => { + this.panoShow() + }) + } else if (view === 'project') { + nextTick(() => { + this.sceneShow() + }) + } }, modelShow() { const iframe = document.getElementById('model-iframe') - let token = '' + const token = '08168BBAD572518D1AB6EC233A13C3E2FA9C16340A21C6B6D0F2785DBDF2CB3506A0873877DA22C7E7ADA6CB1012493B4C702FC75B529ABD' + const projectId = '1c179617-a7d9-4243-b813-84fa55a17ce7' let ifrSrc = '' console.log('模型中查看') - ifrSrc = `${window.IP_CONFIG.SCENE_URL}?token=${token}&projectId=${_this.projectID}&isPreview=1&edit=false` + ifrSrc = `${window.ProjectConfig.modelUrl}?token=${token}&projectId=${projectId}&isPreview=1&edit=false` iframe.src = ifrSrc console.log('加载iframe地址', ifrSrc) + this.isLoading = false + }, + panoShow(item, scene) { + this.isLoading = false + const basepath = `${window.ProjectConfig.panoUrl}/Panorama${item.PbUrl}/vtour/` + const xmlurl = `${basepath}tour.xml?r=${(Math.random() * 100000 + 1)}` + let setting = {} + if (scene) { + const scenename = 'scene_' + scene.PsScenename + setting = { startscene: scenename } + } + this.$nextTick(() => { + embedpano({ + xml: xmlurl, + target: 'panoviewpreview', + basepath, + vars: setting, + html5: 'auto', + passQueryParameters: true + }) + }) + }, + sceneShow() { + const iframe = document.getElementById('scene-iframe') + const ifrSrc = window.ProjectConfig.sceneUrl + iframe.src = ifrSrc + this.isLoading = false } }, mounted() { + this.isLoading = true this.modelShow() }, } @@ -245,8 +294,7 @@ .main-content { flex: 1; - padding: 20px; - background-color: #0a1931; + background-color: #fff; width: 100%; height: 588px; } -- Gitblit v1.9.3