26 コミット 0de97d717b ... 151243c4ec

作者 SHA1 メッセージ 日付
  jinx 151243c4ec Merge branch 'dev' into release 2 ヶ月 前
  rindy 3b6dc2ad7e feat: 修复点云场景热点超过视图显示问题 4 ヶ月 前
  rindy 1344cefe7d feat: 修复热点问题 4 ヶ月 前
  rindy 6a4287118c feat: . 4 ヶ月 前
  rindy 8058b54768 feat: 修改热点分屏时的样式 4 ヶ月 前
  jinx eaa989df95 fix: . 5 ヶ月 前
  jinx 9857477cdf fix: env修改 5 ヶ月 前
  jinx 21bd87af52 fix: . 6 ヶ月 前
  jinx 035fdd7c01 fix: . 6 ヶ月 前
  jinx 4a15d73598 fix: . 6 ヶ月 前
  jinx 8412fbd133 fix: . 6 ヶ月 前
  jinx bd70f64c64 fix: . 6 ヶ月 前
  jinx 66df2cba1f fix: . 6 ヶ月 前
  xzw c3e68acfbb Merge branch 'dev' of http://192.168.0.115:3000/4dkankan/4dkankan_bim into dev 6 ヶ月 前
  xzw a7b1d88e2d fix: 报错 6 ヶ月 前
  jinx 49c2f010b6 fix: . 6 ヶ月 前
  jinx 1ec1f3be1c fix:. 6 ヶ月 前
  jinx 34c426a3e6 fix: . 6 ヶ月 前
  jinx 28ae8b90aa fix: . 6 ヶ月 前
  jinx c279eeef33 fix: . 6 ヶ月 前
  jinx 44ead4ac0a fix: . 6 ヶ月 前
  jinx e2fc6d9ce0 fix: . 6 ヶ月 前
  jinx 1c100cc850 fix: . 6 ヶ月 前
  jinx 7ec4865f83 fix: . 6 ヶ月 前
  jinx be820fd7bd fix: test-eur 6 ヶ月 前
  jinx 47ff058059 fix: eur 6 ヶ月 前

+ 20 - 0
.env.eur

@@ -0,0 +1,20 @@
+NODE_ENV=production
+# 静态资源地址
+VUE_APP_CDN_URL=https://eurs3.4dkankan.com/v4/www/
+# sdk文件地址
+VUE_APP_SDK_DIR=https://eurs3.4dkankan.com/v4/www/sdk/
+# 激光接口地址
+VUE_APP_LASER_URL=https://eurlaser.4dkankan.com/backend/
+# 静态资源目录
+VUE_APP_STATIC_DIR=static
+# 场景资源地址
+VUE_APP_SERVER_URL=/
+VUE_APP_RESOURCE_URL=https://eurs3.4dkankan.com
+VUE_APP_LASER_RESOURCE_URL=https://eurs3.4dkankan.com
+VUE_APP_TEST=0
+#环境区分
+VUE_APP_ENV=aws
+#ico 地址
+VUE_APP_ICO=//eurs3.4dkankan.com/v4/www/editor/favicon.ico
+
+

+ 18 - 0
.env.test-eur

@@ -0,0 +1,18 @@
+NODE_ENV=production
+# 静态资源地址
+VUE_APP_CDN_URL=https://testeurs3.4dkankan.com/v4/www/
+# sdk文件地址
+VUE_APP_SDK_DIR=https://testeurs3.4dkankan.com/v4/www/sdk-bim/
+# 激光接口地址
+VUE_APP_LASER_URL=https://test-eurlaser.4dkankan.com/
+# 静态资源目录
+VUE_APP_STATIC_DIR=static
+# 场景资源地址
+VUE_APP_SERVER_URL=/
+VUE_APP_RESOURCE_URL=https://testeurs3.4dkankan.com
+VUE_APP_LASER_RESOURCE_URL=https://testeurs3.4dkankan.com
+VUE_APP_TEST=0
+#环境区分
+VUE_APP_ENV=aws
+#ico 地址
+VUE_APP_ICO=//testeurs3.4dkankan.com/v4/www/editor/favicon.ico

+ 3 - 1
package.json

@@ -5,9 +5,11 @@
   "scripts": {
     "serve": "vue-cli-service serve",
     "build": "vue-cli-service build",
-    "build:jp": "vue-cli-service build --mode jp",
     "build:test": "vue-cli-service build --mode test",
+    "build:jp": "vue-cli-service build --mode jp",
     "build:test-jp": "vue-cli-service build --mode test-jp",
+    "build:eur": "vue-cli-service build --mode eur",
+    "build:test-eur": "vue-cli-service build --mode test-eur",
     "langs": "node ./scripts/update-i18n.js"
   },
   "dependencies": {

ファイルの差分が大きいため隠しています
+ 2 - 2
public/js/2.js


ファイルの差分が大きいため隠しています
+ 1 - 1
public/js/3.js


ファイルの差分が大きいため隠しています
+ 5 - 5
public/js/chunk-vendors.js


ファイルの差分が大きいため隠しています
+ 2 - 2
public/js/smart.js


ファイルの差分が大きいため隠しています
+ 5961 - 1709
public/static/lib/potree/potree.js


ファイルの差分が大きいため隠しています
+ 1 - 1
public/static/lib/potree/potree.js.map


ファイルの差分が大きいため隠しています
+ 3272 - 87
public/static/lib/potree/workers/BinaryDecoderWorker.js


+ 1 - 0
src/components/files/TagManager.vue

@@ -65,5 +65,6 @@ const initLaserTag = () => {
     width: 100%;
     height: 100%;
     z-index: 1000;
+    overflow: hidden;
 }
 </style>

+ 3 - 3
src/components/header/Login.vue

@@ -9,7 +9,7 @@
                         <span class="icon">
                             <i class="iconfont icon-user"></i>
                         </span>
-                        <input type="text" v-model.trim="username" :placeholder="env == 'jp' ? $t('header.inputEmail') : $t('header.inputPhoneNum')" />
+                        <input type="text" v-model.trim="username" :placeholder="env == 'jp' || env == 'aws' ? $t('header.inputEmail') : $t('header.inputPhoneNum')" />
                         <div class="tips" v-show="errors.username">{{ errors.username }}</div>
                     </div>
                     <div class="input">
@@ -79,10 +79,10 @@ const checkLanguage = () => {
 const onLogin = () => {
     errors.value = {}
     if (!username.value) {
-        errors.value.username = process.env.VUE_APP_ENV == 'jp' ? t('header.phoneTexten') : t('header.phoneText1')
+        errors.value.username = process.env.VUE_APP_ENV == 'jp' || process.env.VUE_APP_ENV == 'aws' ? t('header.phoneTexten') : t('header.phoneText1')
         return
     }
-    if (process.env.VUE_APP_ENV == 'jp') {
+    if (process.env.VUE_APP_ENV == 'jp' || process.env.VUE_APP_ENV == 'aws') {
         if (!/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$/.test(username.value)) {
             errors.value.username = t('header.phoneText3')
             return

+ 11 - 1
src/pages/SViewer.vue

@@ -94,7 +94,17 @@ const sourceURL = computed(() => {
     if (source.value.type < 2) {
         return `smart-kankan.html?m=${source.value.num}`
     } else {
-        return `smart-laser.html?m=${source.value.num}${isDev ? '&dev' : ''}&serve_link=${process.env.VUE_APP_LASER_URL}&panoResourceBasePath=${process.env.VUE_APP_RESOURCE_URL}&resourceBasePath  =${process.env.VUE_APP_LASER_RESOURCE_URL}`
+        let url = ''
+        if (process.env.VUE_APP_ENV == 'aws') {
+            url = `smart-laser.html?m=${source.value.num}${isDev ? '&dev' : ''}&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' : ''}&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
     }
 })
 

+ 141 - 46
src/pages/Viewer.vue

@@ -1,34 +1,33 @@
 <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>
@@ -47,17 +46,9 @@
                 <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">
@@ -72,33 +63,38 @@
                 </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>
@@ -122,6 +118,7 @@ import TagManager from '@/components/files/TagManager'
 import sync, { beforeChangeURL, loadSourceScene, loadTargetScene, setPanoWithBim, flyToP1P2 } from '@/utils/sync'
 import i18n, { getLocale, useI18n, useScope, setI18nLanguage, loadLocaleMessages } from '@/i18n'
 import Rules from './Rules'
+let tagsNum = null
 const { t } = useI18n({ useScope: 'global' })
 const isDev = process.env.VUE_APP_TEST == 1
 const rules = []
@@ -176,6 +173,40 @@ const target = ref(null)
 const project = ref(null)
 const points = ref({ p1: null, p2: null })
 
+watch(
+    () => dbsChecked.value,
+    (val, old) => {
+        let tagsVieww = document.querySelector(`div[xui_tags_view]`)
+        if (val) {
+            // tagsVieww.style.visibility = 'hidden'
+            // tagsVieww.style.width = '50%'
+            // tagsVieww.style.overflow = 'hidden'
+        } else {
+            // tagsVieww.style.visibility = 'visible'
+            // tagsVieww.style.width = '100%'
+            // tagsVieww.style.overflow = 'visible'
+            if(bimChecked.value){
+                tagsVieww.style.visibility = 'hidden'
+            }
+        }
+    }
+)
+watch(
+    () => bimChecked.value,
+    (val, old) => {
+        let tagsVieww = document.querySelector(`div[xui_tags_view]`)
+        if (val) {
+            if (!dbsChecked.value) {
+                tagsVieww.style.visibility = 'hidden'
+            }
+        } else {
+            if (!dbsChecked.value) {
+                tagsVieww.style.visibility = 'visible'
+            }
+        }
+    }
+)
+
 const densityTypes = ref([
     { type: 'high', text: t('common.high') },
     { type: 'middle', text: t('common.middle') },
@@ -214,6 +245,7 @@ const controls = computed(() => {
     return dbsChecked.value ? scenes.value.length > 2 : scenes.value.length > 1
 })
 const sourceURL = computed(() => {
+
     beforeChangeURL('source')
 
     if (bimChecked.value && !dbsChecked.value) {
@@ -230,9 +262,16 @@ const sourceURL = computed(() => {
     } else {
         getLaserInfo(source.value.num)
         // 深时场景
-        return `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}`
+
+        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}`
+        } 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}`
+        }
+        return url
     }
 })
 const noPanorama = ref(true)
@@ -268,9 +307,15 @@ const targetURL = computed(() => {
         return `smart-kankan.html?m=${target.value.num}${isDev ? '&dev' : ''}&lang=${getLocale()}&serve_link=${process.env.VUE_APP_LASER_URL}`
     } else {
         // 深时场景
-        return `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}`
+        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}`
+        } 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}`
+        }
+        return url
     }
 })
 const sourceDate = computed(() => {
@@ -364,7 +409,7 @@ const onLoadSource = () => {
                     const info2d = sdk.scene.getScreenByPoint(tag.position)
                     tag.x = info2d.pos.x
                     tag.y = info2d.pos.y
-                    tag.visible = info2d.trueSide
+                    tag.visible = info2d.trueSide && info2d.inSight
                 })
             })
 
@@ -658,20 +703,31 @@ const onRuleChecked = () => {
     }
 }
 const getTagList = num => {
+
+    const pnum = num ? num : browser.getURLParam('m')
+
     http.post(`smart-site/marking/list`, {
         projectId: projectId,
         pageNum: 1,
         pageSize: 200,
-        num: num ? num : browser.getURLParam('m'),
+        num: pnum,
     }).then(response => {
         if (response.data && response.data.list) {
-            tags.value = response.data.list.map(item => {
+            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)
+
             })
+            if (window['kankan']) {
+                window['kankan'].TagManager.load(tags.value)
+            }
+
         }
     })
 }
@@ -752,40 +808,48 @@ article {
     height: 100%;
     overflow: hidden;
 }
+
 aside {
     width: 160px;
     height: 100%;
     background-color: rgba(0, 0, 0, 0.8);
+
     h4 {
         font-size: 16px;
         text-align: center;
     }
+
     ul {
         margin-top: 20px;
     }
+
     li {
         margin: 0;
         padding: 0;
         font-size: 16px;
         margin-left: 20px;
         cursor: pointer;
+
         &:hover,
         &.active {
             color: #00c8af;
         }
     }
 }
+
 main {
     flex: 1;
     width: 100%;
     height: 100%;
     position: relative;
     display: flex;
+
     &.full {
         .split {
             width: 50%;
         }
     }
+
     iframe {
         position: absolute;
         left: 0;
@@ -796,12 +860,14 @@ main {
         border: none;
         outline: none;
     }
+
     .split {
         margin-left: 2px;
         width: 100%;
         height: 100%;
         overflow: hidden;
         position: relative;
+
         &:first-child,
         &:last-child {
             margin-left: 0;
@@ -829,12 +895,15 @@ main {
                 flex-direction: column;
                 align-items: center;
                 justify-content: center;
+
                 &.active {
                     color: #0076f6;
                 }
+
                 i {
                     font-size: 24px;
                 }
+
                 span {
                     font-size: 16px;
                     margin-top: 10px;
@@ -842,6 +911,7 @@ main {
             }
         }
     }
+
     .model {
         position: absolute;
         left: 50px;
@@ -849,7 +919,8 @@ main {
         z-index: 1000;
         display: flex;
         flex-direction: column;
-        > div {
+
+        >div {
             cursor: pointer;
             width: 50px;
             height: 50px;
@@ -863,7 +934,7 @@ main {
             align-items: center;
             justify-content: center;
 
-            > div {
+            >div {
                 width: 100%;
                 height: 100%;
                 display: flex;
@@ -871,12 +942,15 @@ main {
                 align-items: center;
                 justify-content: center;
             }
+
             &.active {
                 color: #0076f6;
             }
+
             &.disable {
                 opacity: 0.5;
             }
+
             span {
                 font-size: 12px;
                 padding-top: 1px;
@@ -885,6 +959,7 @@ main {
             }
         }
     }
+
     .tools {
         position: absolute;
         width: 100%;
@@ -895,7 +970,8 @@ main {
         align-items: center;
         color: #fff;
         pointer-events: none;
-        > div {
+
+        >div {
             pointer-events: all;
         }
 
@@ -912,17 +988,21 @@ main {
             margin-right: 10px;
             font-size: 16px;
             padding: 0 16px;
+
             div {
                 cursor: pointer;
                 font-size: 18px;
             }
+
             div:last-child {
                 margin-left: 20px;
             }
+
             div.active {
                 color: #0076f6;
             }
         }
+
         .item-density {
             position: relative;
             cursor: pointer;
@@ -939,21 +1019,26 @@ main {
             margin-right: 10px;
             font-size: 16px;
             padding: 0 16px;
+
             &.active {
                 ul {
                     display: block;
                 }
+
                 i {
                     transform: scale(0.8) rotate(180deg);
                 }
             }
+
             span {
                 margin-right: 4px;
             }
+
             i {
                 transform: scale(0.8);
                 font-size: 14px;
             }
+
             ul {
                 display: none;
                 position: absolute;
@@ -967,8 +1052,10 @@ main {
                 box-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.25);
                 border: 1px solid #000000;
                 list-style: none;
+
                 li {
                     padding: 5px 0;
+
                     &:hover {
                         color: #0076f6;
                     }
@@ -984,6 +1071,7 @@ main {
     display: flex;
     flex-direction: column;
 }
+
 .vuejs3-datepicker__calendar {
     background: rgba(27, 27, 28, 0.8);
     box-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.25);
@@ -993,9 +1081,11 @@ main {
     filter: blur(undefinedpx);
     color: #fff;
 }
+
 .vuejs3-datepicker__calendar-topbar {
     display: none !important;
 }
+
 .vuejs3-datepicker__calendar header .up:not(.disabled):hover {
     background: rgba(0, 0, 0, 0.3);
     color: #fff;
@@ -1005,6 +1095,7 @@ main {
     border-left: 1px solid #fff;
     border-bottom: 1px solid #fff;
 }
+
 .vuejs3-datepicker__calendar header .prev:not(.disabled):hover {
     background: rgba(0, 0, 0, 0.3);
 }
@@ -1013,17 +1104,21 @@ main {
     border-top: 1px solid #fff;
     border-right: 1px solid #fff;
 }
+
 .vuejs3-datepicker__calendar header .next:not(.disabled):hover {
     background: rgba(0, 0, 0, 0.3);
 }
+
 .vuejs3-datepicker__calendar .cell {
     font-size: 16px !important;
     border-radius: 4px;
 }
+
 .highlighted {
     color: #076ede !important;
     background: transparent !important;
 }
+
 .selected {
     color: #fff !important;
     background: #0076f6 !important;

+ 9 - 2
src/pages/kankan.js

@@ -13,7 +13,13 @@ loadLocaleMessages(i18n, local).then(() => {
         'common.meter': t('unit.meter'),
     }
     const server = browser.valueFromUrl('app_server') || process.env.VUE_APP_SERVER_URL || ''
-    const resource = browser.valueFromUrl('app_resource') || process.env.VUE_APP_RESOURCE_URL || ''
+    const resource =
+        browser.valueFromUrl('app_resource') || process.env.VUE_APP_RESOURCE_URL
+            ? process.env.VUE_APP_ENV == 'aws'
+                ? process.env.VUE_APP_RESOURCE_URL + '/'
+                : process.env.VUE_APP_RESOURCE_URL
+            : process.env.VUE_APP_RESOURCE_URL || ''
+
     window.app = new KanKan({
         dom: '#app',
         num: browser.valueFromUrl('m'),
@@ -27,7 +33,8 @@ loadLocaleMessages(i18n, local).then(() => {
             ja: lan,
         },
         server,
-        resource
+        resource,
+        region: process.env.VUE_APP_ENV,
     })
 
     app.use('TagEditor')

+ 1 - 1
src/utils/ConvertViews.js

@@ -692,7 +692,7 @@ export default class ConvertViews extends THREE.EventDispatcher{
                 target,
                 up:info.up,  
                 //前三个缺一不可  
-                fov: data.fov ,      //fov 用setCameraStatus 无效
+                fov: data.fov || info.fov,      //fov 用setCameraStatus 无效
             }
              
             bimViewer.setCameraStatus(msg)    

+ 3 - 1
vue.config.js

@@ -3,6 +3,7 @@ const path = require('path')
 const localIP = require('ip').address()
 const isPord = process.env.NODE_ENV !== 'development'
 const isDev = process.env.NODE_ENV === 'development'
+
 if (isDev) {
     process.env.VUE_APP_VERSION = pkg.version + '-' + Date.now()
 } else {
@@ -54,13 +55,14 @@ const config = {
     },
     devServer: devServer,
     configureWebpack: {
+        devtool: 'source-map',
         resolve: {
             symlinks: false,
             alias: {
                 vue: path.resolve(`node_modules/vue`)
             }
         }
-    }
+    },
 }
 
 module.exports = config