shaogen1995 2 年之前
父節點
當前提交
739ded40ab
共有 100 個文件被更改,包括 1036 次插入56594 次删除
  1. 65 4
      SWKK/package-lock.json
  2. 3 1
      SWKK/package.json
  3. 1 0
      SWKK/public/index.html
  4. 2 2
      全景看看/public/static/lib/jquery-2.1.1.min.js
  5. 二進制
      SWKK/src/assets/img/Hot/inco1.png
  6. 二進制
      SWKK/src/assets/img/Hot/inco1Ac.png
  7. 二進制
      SWKK/src/assets/img/Hot/inco2.png
  8. 二進制
      SWKK/src/assets/img/Hot/inco2Ac.png
  9. 二進制
      SWKK/src/assets/img/Hot/inco3.png
  10. 二進制
      SWKK/src/assets/img/Hot/inco3Ac.png
  11. 二進制
      SWKK/src/assets/img/Hot/inco4.png
  12. 二進制
      SWKK/src/assets/img/Hot/inco4Ac.png
  13. 二進制
      SWKK/src/assets/img/Hot/left.png
  14. 二進制
      SWKK/src/assets/img/Hot/play.png
  15. 二進制
      SWKK/src/assets/img/Hot/right.png
  16. 二進制
      SWKK/src/assets/img/Hot/stop.png
  17. 二進制
      SWKK/src/assets/img/Hot/videoBac.png
  18. 二進制
      SWKK/src/assets/img/IMGerror.png
  19. 二進制
      SWKK/src/assets/img/hotClose.png
  20. 二進制
      SWKK/src/assets/img/loading.gif
  21. 210 0
      SWKK/src/components/Audio.vue
  22. 443 0
      SWKK/src/components/Hot.vue
  23. 1 1
      SWKK/src/components/Rbottom.vue
  24. 181 0
      SWKK/src/components/aa.vue
  25. 13 0
      SWKK/src/main.js
  26. 88 2
      SWKK/src/views/Home.vue
  27. 3 0
      SWKK/vue.config.js
  28. 二進制
      vue/src/assets/img/Home/bac.jpg
  29. 22 6
      vue/src/views/Goods/components/Three.vue
  30. 1 1
      vue/src/views/Video/index.vue
  31. 3 0
      vue/vue.config.js
  32. 0 3
      全景看看/.browserslistrc
  33. 0 6
      全景看看/.env
  34. 0 8
      全景看看/.env.bendidev
  35. 0 7
      全景看看/.env.bendiprod
  36. 0 6
      全景看看/.env.prod
  37. 0 6
      全景看看/.env.test
  38. 0 8
      全景看看/.env.testprod
  39. 0 22
      全景看看/.eslintrc.js
  40. 0 24
      全景看看/.gitignore
  41. 0 24
      全景看看/README.md
  42. 0 14
      全景看看/babel.config.js
  43. 0 9
      全景看看/jsconfig.json
  44. 0 35907
      全景看看/package-lock.json
  45. 0 46
      全景看看/package.json
  46. 二進制
      全景看看/public/favicon.ico
  47. 二進制
      全景看看/public/fonts/element-icons.ttf
  48. 二進制
      全景看看/public/fonts/element-icons.woff
  49. 0 2
      全景看看/public/hls.js
  50. 0 35
      全景看看/public/show.html
  51. 0 69
      全景看看/public/showMobile.html
  52. 0 175
      全景看看/public/static/css/alivideo.css
  53. 0 4663
      全景看看/public/static/css/redefine.css
  54. 0 1523
      全景看看/public/static/css/response.css
  55. 0 1311
      全景看看/public/static/css/zui-theme.css
  56. 0 17
      全景看看/public/static/css/zui.min.css
  57. 二進制
      全景看看/public/static/fonts/captcha.ttf
  58. 二進制
      全景看看/public/static/fonts/zenicon.woff
  59. 二進制
      全景看看/public/static/images/kr/close.png
  60. 二進制
      全景看看/public/static/images/kr/left-white.png
  61. 二進制
      全景看看/public/static/images/kr/radar-active.png
  62. 二進制
      全景看看/public/static/images/kr/radar-out.png
  63. 二進制
      全景看看/public/static/images/kr/right-white.png
  64. 二進制
      全景看看/public/static/images/kr/tourpoint.png
  65. 二進制
      全景看看/public/static/images/kr/vr-btn-scene.png
  66. 二進制
      全景看看/public/static/images/loading.gif
  67. 二進制
      全景看看/public/static/images/skin1/bgmusic-close.png
  68. 二進制
      全景看看/public/static/images/skin1/bgmusic-open.png
  69. 二進制
      全景看看/public/static/images/skin1/commentclose.png
  70. 二進制
      全景看看/public/static/images/skin1/footmark.png
  71. 二進制
      全景看看/public/static/images/skin1/full-screen.png
  72. 二進制
      全景看看/public/static/images/skin1/full-stop.png
  73. 二進制
      全景看看/public/static/images/skin1/gyro-close.png
  74. 二進制
      全景看看/public/static/images/skin1/gyro-open.png
  75. 二進制
      全景看看/public/static/images/skin1/iconfont-link.png
  76. 二進制
      全景看看/public/static/images/skin1/more.png
  77. 二進制
      全景看看/public/static/images/skin1/music-close.png
  78. 二進制
      全景看看/public/static/images/skin1/music-open.png
  79. 二進制
      全景看看/public/static/images/skin1/radar.png
  80. 二進制
      全景看看/public/static/images/skin1/radar_open.png
  81. 二進制
      全景看看/public/static/images/skin1/vr-btn-comment.png
  82. 二進制
      全景看看/public/static/images/skin1/vr-btn-desc.png
  83. 二進制
      全景看看/public/static/images/skin1/vr-btn-good-click.png
  84. 二進制
      全景看看/public/static/images/skin1/vr-btn-good.png
  85. 二進制
      全景看看/public/static/images/skin1/vr-btn-scene.png
  86. 二進制
      全景看看/public/static/images/skin1/vr-btn-share.png
  87. 二進制
      全景看看/public/static/images/skin1/vrmode.png
  88. 二進制
      全景看看/public/static/img/g.png
  89. 0 4336
      全景看看/public/static/js/alivideo.js
  90. 0 5
      全景看看/public/static/js/jquery-1.9.1.js
  91. 0 22
      全景看看/public/static/js/object.js
  92. 0 271
      全景看看/public/static/js/uhweb.js
  93. 0 517
      全景看看/public/static/js/vrshow.js
  94. 0 6448
      全景看看/public/static/js/zui.js
  95. 0 755
      全景看看/public/static/lib/Tween.js
  96. 0 11
      全景看看/public/static/lib/animate/animate.min.css
  97. 0 236
      全景看看/public/static/lib/audio.min.1.0.4.js
  98. 0 1
      全景看看/public/static/lib/base64.min.js
  99. 0 90
      全景看看/public/static/lib/bytebuffer.min.js
  100. 0 0
      全景看看/public/static/lib/canvas2Image.js

+ 65 - 4
SWKK/package-lock.json

@@ -9,7 +9,9 @@
       "version": "0.1.0",
       "dependencies": {
         "core-js": "^3.6.5",
+        "v-viewer": "^1.5.1",
         "vue": "^2.6.11",
+        "vue-lazyload": "^1.3.3",
         "vue-router": "^3.2.0"
       },
       "devDependencies": {
@@ -12484,6 +12486,14 @@
         "node": ">=4.0.0"
       }
     },
+    "node_modules/throttle-debounce": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmmirror.com/throttle-debounce/-/throttle-debounce-2.3.0.tgz",
+      "integrity": "sha512-H7oLPV0P7+jgvrk+6mwwwBDmxTaxnu9HMXmloNLXwnNO0ZxZ31Orah2n8lU1eMPvsaowP2CX+USCgyovXfdOFQ==",
+      "engines": {
+        "node": ">=8"
+      }
+    },
     "node_modules/through2": {
       "version": "2.0.5",
       "resolved": "https://registry.npmmirror.com/through2/-/through2-2.0.5.tgz",
@@ -13085,6 +13095,19 @@
         "uuid": "bin/uuid"
       }
     },
+    "node_modules/v-viewer": {
+      "version": "1.6.4",
+      "resolved": "https://registry.npmmirror.com/v-viewer/-/v-viewer-1.6.4.tgz",
+      "integrity": "sha512-LVkiUHpmsbsZXebeNXnu8krRCi5i2n07FeLFxoIVGhw8lVvTBO0ffpbDC6mLEuacCjrIh09HjIqpciwUtWE8lQ==",
+      "dependencies": {
+        "throttle-debounce": "^2.0.1",
+        "viewerjs": "^1.5.0"
+      },
+      "engines": {
+        "node": ">=4",
+        "npm": ">=3"
+      }
+    },
     "node_modules/validate-npm-package-license": {
       "version": "3.0.4",
       "resolved": "https://registry.npmmirror.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
@@ -13130,6 +13153,11 @@
       "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==",
       "dev": true
     },
+    "node_modules/viewerjs": {
+      "version": "1.11.0",
+      "resolved": "https://registry.npmmirror.com/viewerjs/-/viewerjs-1.11.0.tgz",
+      "integrity": "sha512-TE3XvfEXqKV+LdHsRdMSPsCaq0PfKDXm4SjGzfty7CzVxlDbBbT4x38vAqfXfNITmHhHUQefdxdg0Vv4ia+Z9w=="
+    },
     "node_modules/vm-browserify": {
       "version": "1.1.2",
       "resolved": "https://registry.npmmirror.com/vm-browserify/-/vm-browserify-1.1.2.tgz",
@@ -13151,6 +13179,11 @@
       "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==",
       "dev": true
     },
+    "node_modules/vue-lazyload": {
+      "version": "1.3.4",
+      "resolved": "https://registry.npmmirror.com/vue-lazyload/-/vue-lazyload-1.3.4.tgz",
+      "integrity": "sha512-K0frbPQJuvFHVpdl/ov5CqCR/CHWeLGs8E8V1d/09DIETqBjeGhC1fLMmwUy3Go2Yd/VX610AZ7Mdn4B54592Q=="
+    },
     "node_modules/vue-loader": {
       "version": "15.10.0",
       "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-15.10.0.tgz",
@@ -16117,7 +16150,8 @@
       "version": "4.5.19",
       "resolved": "https://registry.npmmirror.com/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.5.19.tgz",
       "integrity": "sha512-DUmfdkG3pCdkP7Iznd87RfE9Qm42mgp2hcrNcYQYSru1W1gX2dG/JcW8bxmeGSa06lsxi9LEIc/QD1yPajSCZw==",
-      "dev": true
+      "dev": true,
+      "requires": {}
     },
     "@vue/cli-service": {
       "version": "4.5.19",
@@ -16275,7 +16309,8 @@
       "version": "1.1.2",
       "resolved": "https://registry.npmmirror.com/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.2.tgz",
       "integrity": "sha512-LIZMuJk38pk9U9Ur4YzHjlIyMuxPlACdBIHH9/nGYVTsaGKOSnSuELiE8vS9wa+dJpIYspYUOqk+L1Q4pgHQHQ==",
-      "dev": true
+      "dev": true,
+      "requires": {}
     },
     "@vue/web-component-wrapper": {
       "version": "1.3.0",
@@ -16514,13 +16549,15 @@
       "version": "1.0.1",
       "resolved": "https://registry.npmmirror.com/ajv-errors/-/ajv-errors-1.0.1.tgz",
       "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==",
-      "dev": true
+      "dev": true,
+      "requires": {}
     },
     "ajv-keywords": {
       "version": "3.5.2",
       "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
       "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
-      "dev": true
+      "dev": true,
+      "requires": {}
     },
     "alphanum-sort": {
       "version": "1.0.2",
@@ -24557,6 +24594,11 @@
         }
       }
     },
+    "throttle-debounce": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmmirror.com/throttle-debounce/-/throttle-debounce-2.3.0.tgz",
+      "integrity": "sha512-H7oLPV0P7+jgvrk+6mwwwBDmxTaxnu9HMXmloNLXwnNO0ZxZ31Orah2n8lU1eMPvsaowP2CX+USCgyovXfdOFQ=="
+    },
     "through2": {
       "version": "2.0.5",
       "resolved": "https://registry.npmmirror.com/through2/-/through2-2.0.5.tgz",
@@ -25054,6 +25096,15 @@
       "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
       "dev": true
     },
+    "v-viewer": {
+      "version": "1.6.4",
+      "resolved": "https://registry.npmmirror.com/v-viewer/-/v-viewer-1.6.4.tgz",
+      "integrity": "sha512-LVkiUHpmsbsZXebeNXnu8krRCi5i2n07FeLFxoIVGhw8lVvTBO0ffpbDC6mLEuacCjrIh09HjIqpciwUtWE8lQ==",
+      "requires": {
+        "throttle-debounce": "^2.0.1",
+        "viewerjs": "^1.5.0"
+      }
+    },
     "validate-npm-package-license": {
       "version": "3.0.4",
       "resolved": "https://registry.npmmirror.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
@@ -25095,6 +25146,11 @@
         }
       }
     },
+    "viewerjs": {
+      "version": "1.11.0",
+      "resolved": "https://registry.npmmirror.com/viewerjs/-/viewerjs-1.11.0.tgz",
+      "integrity": "sha512-TE3XvfEXqKV+LdHsRdMSPsCaq0PfKDXm4SjGzfty7CzVxlDbBbT4x38vAqfXfNITmHhHUQefdxdg0Vv4ia+Z9w=="
+    },
     "vm-browserify": {
       "version": "1.1.2",
       "resolved": "https://registry.npmmirror.com/vm-browserify/-/vm-browserify-1.1.2.tgz",
@@ -25116,6 +25172,11 @@
       "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==",
       "dev": true
     },
+    "vue-lazyload": {
+      "version": "1.3.4",
+      "resolved": "https://registry.npmmirror.com/vue-lazyload/-/vue-lazyload-1.3.4.tgz",
+      "integrity": "sha512-K0frbPQJuvFHVpdl/ov5CqCR/CHWeLGs8E8V1d/09DIETqBjeGhC1fLMmwUy3Go2Yd/VX610AZ7Mdn4B54592Q=="
+    },
     "vue-loader": {
       "version": "15.10.0",
       "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-15.10.0.tgz",

+ 3 - 1
SWKK/package.json

@@ -9,7 +9,9 @@
   "dependencies": {
     "core-js": "^3.6.5",
     "vue": "^2.6.11",
-    "vue-router": "^3.2.0"
+    "vue-router": "^3.2.0",
+    "v-viewer": "^1.5.1",
+    "vue-lazyload": "^1.3.3"
   },
   "devDependencies": {
     "@vue/cli-plugin-babel": "~4.5.13",

+ 1 - 0
SWKK/public/index.html

@@ -8,6 +8,7 @@
     <title>雨花台烈士纪念馆</title>
     <script src="//4dkk.4dage.com/v4/sdk/4.2.0/kankan-sdk-deps.js"></script>
     <script src="//4dkk.4dage.com/v4/sdk/4.2.0/kankan-sdk.js"></script>
+    <script src="./jquery-2.1.1.min.js"></script>
   
   </head>
   <body>

文件差異過大導致無法顯示
+ 2 - 2
全景看看/public/static/lib/jquery-2.1.1.min.js


二進制
SWKK/src/assets/img/Hot/inco1.png


二進制
SWKK/src/assets/img/Hot/inco1Ac.png


二進制
SWKK/src/assets/img/Hot/inco2.png


二進制
SWKK/src/assets/img/Hot/inco2Ac.png


二進制
SWKK/src/assets/img/Hot/inco3.png


二進制
SWKK/src/assets/img/Hot/inco3Ac.png


二進制
SWKK/src/assets/img/Hot/inco4.png


二進制
SWKK/src/assets/img/Hot/inco4Ac.png


二進制
SWKK/src/assets/img/Hot/left.png


二進制
SWKK/src/assets/img/Hot/play.png


二進制
SWKK/src/assets/img/Hot/right.png


二進制
SWKK/src/assets/img/Hot/stop.png


二進制
SWKK/src/assets/img/Hot/videoBac.png


二進制
SWKK/src/assets/img/IMGerror.png


二進制
SWKK/src/assets/img/hotClose.png


二進制
SWKK/src/assets/img/loading.gif


+ 210 - 0
SWKK/src/components/Audio.vue

@@ -0,0 +1,210 @@
+<template>
+  <div class="Audio">
+    <audio id="audioTag" class="noshow" autoplay :src="audioSrc"></audio>
+    <div class="audiocon">
+      <!-- 按钮 -->
+      <div class="leftBtn">
+        <div class="play">
+          <img
+            @click="bofang"
+            :src="require(`@/assets/img/Hot/${isPlay ? 'stop' : 'play'}.png`)"
+            alt=""
+          />
+        </div>
+      </div>
+      <div class="adcon">
+        <div class="bar">
+          <div class="activeLine" @click="seekTime">
+            <div :style="{ width: currentPosi + '%' }" class="dot"></div>
+          </div>
+        </div>
+        <div class="time">
+          <span>{{ time }}</span
+          ><span> / {{ allTime }}</span>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "Audio",
+  props: {
+    audioSrc: {
+      type: String,
+    },
+  },
+  data() {
+    return {
+      active: 0,
+      time: 0,
+      _audio: "",
+      isPlay: this.isMobile,
+      currentPosi: 0,
+      allTime: 0,
+    };
+  },
+  methods: {
+    bofang() {
+      if (this._audio.paused) {
+        this._audio.play();
+        this.isPlay = true;
+      } else {
+        this._audio.pause();
+        this.isPlay = false;
+      }
+    },
+    transTime(time) {
+      var duration = parseInt(time);
+      var minute = parseInt(duration / 60);
+      var sec = (duration % 60) + "";
+      var isM0 = ":";
+      if (minute == 0) {
+        minute = "00";
+      } else if (minute < 10) {
+        minute = "0" + minute;
+      }
+      if (sec.length == 1) {
+        sec = "0" + sec;
+      }
+      return minute + isM0 + sec;
+    },
+    updateProgress() {
+      this.currentPosi = (this._audio.currentTime / this._audio.duration) * 100;
+      this.time = this.transTime(this._audio.currentTime);
+    },
+
+    audioEnded() {
+      this._audio.currentTime = 0;
+      this._audio.pause();
+      this.isPlay = false;
+    },
+
+    seekTime(e) {
+      var rate = e.offsetX / e.target.clientWidth;
+      this._audio.currentTime = this._audio.duration * rate;
+      this.updateProgress();
+    },
+  },
+  mounted() {
+    this.$nextTick(() => {
+      this._audio = $("#audioTag")[0];
+      $("#audioTag").on("loadedmetadata", (e) => {
+        this.time = this.isMobile
+          ? "00:00"
+          : this.transTime(e.currentTarget.duration);
+        this.allTime = this.transTime(e.currentTarget.duration);
+        this._audio.play();
+        this.isPlay = true;
+      });
+
+      document.addEventListener(
+        "WeixinJSBridgeReady",
+        function () {
+          this._audio.play();
+        },
+        false
+      );
+
+      $("#audioTag").on("timeupdate", () => {
+        this.updateProgress();
+      });
+
+      $("#audioTag").on("timeupdate", () => {
+        this.updateProgress();
+      });
+
+      $("#audioTag").on("ended", () => {
+        this.audioEnded();
+      });
+    });
+  },
+  activated() {
+    this.isPlay = this.isMobile;
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.Audio {
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  transform: translate(-50%, -50%);
+  z-index: 10;
+  width: 1000px;
+  height: 200px;
+  .audiocon {
+    display: flex;
+    align-items: center;
+  }
+  .leftBtn {
+    cursor: pointer;
+  }
+  .adcon {
+    position: relative;
+    z-index: 10;
+    width: 100%;
+    height: 40px;
+    display: flex;
+    align-items: center;
+    .bar {
+      width: 80%;
+      padding-left: 30px;
+      position: relative;
+      height: 40px;
+      display: flex;
+      align-items: center;
+      .activeLine {
+        position: absolute;
+        top: 0;
+        left: 40px;
+        z-index: 10;
+        width: 96%;
+        height: 40px;
+        cursor: pointer;
+        &::before {
+          content: "";
+          position: absolute;
+          width: 100%;
+          height: 10px;
+          top: 50%;
+          left: 0;
+          transform: translateY(-50%);
+          border-radius: 4px;
+
+          background-color: #d8b174;
+        }
+      }
+      .dot {
+        border-radius: 4px;
+        z-index: 11;
+        pointer-events: none;
+        position: absolute;
+        height: 10px;
+        top: 50%;
+        left: 0px;
+        transform: translateY(-50%);
+        background-color: #930909;
+        &::before {
+          content: "";
+          position: absolute;
+          top: -10px;
+          right: -10px;
+          width: 24px;
+          height: 24px;
+          border-radius: 50%;
+          border: 3px solid #930909;
+          background-color: #d8b174;
+        }
+      }
+    }
+    .time {
+      text-align: center;
+      width: 20%;
+      color: #930909;
+    }
+  }
+}
+</style>

+ 443 - 0
SWKK/src/components/Hot.vue

@@ -0,0 +1,443 @@
+<template>
+  <div class="Hot" :class="{ active: show }" @click.stop="">
+    <div class="close" @click="$emit('hotClose')">
+      <img src="../assets/img/hotClose.png" alt="" />
+    </div>
+
+    <!-- 查看图片 -->
+    <viewer class="viewerCla" ref="viewer" :images="lookPics">
+      <img :src="lookPics[0]" alt="" />
+    </viewer>
+
+    <!-- 轮播图 -->
+    <div class="swBox">
+      <div class="swiper-container" ref="mySwiper" :key="type">
+        <div class="swiper-wrapper">
+          <div class="swiper-slide" v-for="(item, index) in data" :key="index">
+            <div
+              class="infoTxt"
+              :class="{ videoAc: type === 'video' }"
+              v-if="item.title"
+            >
+              <h3>{{ item.title.split("&")[0] }}</h3>
+              <div v-html="item.content" v-show="type !== 'video'"></div>
+            </div>
+
+            <!-- 图片 -->
+            <template v-if="type === 'image'">
+              <img
+                @click="
+                  lookImg(
+                    `https://4dkk.4dage.com/scene_edit_data/${KKNum}/user/${item.media.image[0].src}`
+                  )
+                "
+                v-if="item.media && item.media.image[0]"
+                v-lazy="
+                  `https://4dkk.4dage.com/scene_edit_data/${KKNum}/user/${item.media.image[0].src}`
+                "
+                alt=""
+              />
+              <img
+                src="../assets/img/IMGerror.png"
+                style="pointer-events: none"
+                alt=""
+                v-else
+              />
+            </template>
+            <!-- 视频 -->
+            <template v-else-if="type === 'video'">
+              <div class="videoBox">
+                <div>
+                  <video
+                    v-if="item.media && item.media.video[0]"
+                    controls
+                    :src="`https://4dkk.4dage.com/scene_edit_data/${KKNum}/user/${item.media.video[0].src}`"
+                  ></video>
+                </div>
+              </div>
+            </template>
+            <!-- 模型 -->
+            <template v-else-if="type === 'link'">
+              <div class="ifrBox">
+                <iframe
+                  v-if="item.media && item.media.link[0]"
+                  :src="`${item.media.link[0].src}`"
+                  frameborder="0"
+                ></iframe>
+              </div>
+            </template>
+            <!-- 音乐 -->
+            <template v-else>
+              <Audio
+                v-if="item.media && item.media.audio[0]"
+                :audioSrc="`https://4dkk.4dage.com/scene_edit_data/${KKNum}/user/${item.media.audio[0].src}`"
+              />
+            </template>
+          </div>
+        </div>
+
+        <div class="swiper-pagination" v-show="data.length > 1"></div>
+
+        <div
+          class="swiper-button-prev swiper-button-white"
+          v-show="data.length > 1"
+          :class="{ noneAc: true }"
+        ></div>
+        <div
+          class="swiper-button-next swiper-button-white"
+          v-show="data.length > 1"
+          :class="{ noneAc: true }"
+        ></div>
+      </div>
+    </div>
+
+    <!-- 右下角的按钮 -->
+    <div class="mainrr">
+      <div
+        class="row"
+        v-show="item.show"
+        v-for="item in rightList"
+        :key="item.id"
+        @click="type = item.type"
+        :class="{ active: item.type === type }"
+      >
+        <img
+          :src="
+            require(`@/assets/img/Hot/inco${item.id}${
+              item.type === type ? 'Ac' : ''
+            }.png`)
+          "
+          alt=""
+        />
+
+        <p>{{ item.name }}</p>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import Audio from "./Audio.vue";
+import Swiper from "./swiper.js";
+export default {
+  props: {
+    info: {
+      type: Object,
+      default: () => {},
+    },
+  },
+  name: "Hot",
+  components: { Audio },
+  data() {
+    //这里存放数据
+    return {
+      lookPics: [],
+
+      show: false,
+      data: [],
+      type: "",
+      rightList: [
+        { name: "视频", id: 1, show: false, type: "video" },
+        { name: "模型", id: 2, show: false, type: "link" },
+        { name: "音乐", id: 3, show: false, type: "audio" },
+        { name: "图片", id: 4, show: false, type: "image" },
+      ],
+      Swiper: null,
+      KKNum: window.KKNum,
+    };
+  },
+  //监听属性 类似于data概念
+  computed: {},
+  //监控data中的数据变化
+  watch: {
+    type(val) {
+      if (val === "video") {
+        this.$nextTick(() => {
+          setTimeout(() => {
+            let videoDoms = document.querySelectorAll(".Hot video");
+            videoDoms[0].play();
+          }, 200);
+        });
+      }
+
+      this.Swiper = null;
+      this.data = this.info[val];
+      this.$nextTick(() => {
+        setTimeout(() => {
+          this.Swiper = new Swiper(".swiper-container", {
+            slidesPerView: 1,
+            // 如果需要前进后退按钮
+            navigation: {
+              nextEl: ".swiper-button-next",
+              prevEl: ".swiper-button-prev",
+            },
+            pagination: {
+              el: ".swiper-pagination",
+            },
+            on: {
+              slideChange: () => {
+                if (val === "video") {
+                  let dom = document.querySelectorAll(
+                    ".Hot .swiper-pagination-bullet"
+                  );
+                  let index;
+                  dom.forEach((v, i) => {
+                    if (v.className.includes("swiper-pagination-bullet-active"))
+                      index = i;
+                  });
+
+                  this.$nextTick(() => {
+                    setTimeout(() => {
+                      let videoDoms = document.querySelectorAll(".Hot video");
+                      videoDoms.forEach((v, i) => {
+                        if (i === index) v.play();
+                        else v.pause();
+                      });
+                    }, 200);
+                  });
+                }
+              },
+            },
+          });
+        }, 100);
+      });
+    },
+
+    info: {
+      handler(val) {
+        this.info = val;
+        let obj = {
+          video: 0,
+          link: 1,
+          audio: 2,
+          image: 3,
+        };
+        for (const k in val) {
+          this.rightList[obj[k]].show = true;
+        }
+        if (val["image"]) this.type = "image";
+        else if (val["video"]) this.type = "video";
+        else if (val["link"]) this.type = "link";
+        else if (val["audio"]) this.type = "audio";
+      },
+      immediate: true,
+    },
+  },
+  //方法集合
+  methods: {
+    // 点击查看大图
+    lookImg(url) {
+      let dom = this.$refs.viewer.$viewer;
+      this.lookPics = [url];
+      dom.show();
+    },
+  },
+  //生命周期 - 创建完成(可以访问当前this实例)
+  created() {},
+  //生命周期 - 挂载完成(可以访问DOM元素)
+  mounted() {
+    setTimeout(() => {
+      this.show = true;
+    }, 300);
+  },
+  beforeCreate() {}, //生命周期 - 创建之前
+  beforeMount() {}, //生命周期 - 挂载之前
+  beforeUpdate() {}, //生命周期 - 更新之前
+  updated() {}, //生命周期 - 更新之后
+  beforeDestroy() {}, //生命周期 - 销毁之前
+  destroyed() {}, //生命周期 - 销毁完成
+  activated() {}, //如果页面有keep-alive缓存功能,这个函数会触发
+};
+</script>
+<style lang='less' scoped>
+@import "./swiper.css";
+.viewerCla img {
+  display: none;
+}
+.Hot {
+  opacity: 0.3;
+  pointer-events: none;
+  transition: opacity 0.3s;
+  position: absolute;
+  top: 0;
+  left: 0;
+  z-index: 99;
+  width: 100%;
+  height: 100%;
+  background-color: rgba(255, 251, 245, 0.9);
+  backdrop-filter: blur(4px);
+  .close {
+    cursor: pointer;
+    width: 60px;
+    position: absolute;
+    z-index: 10;
+    top: 45px;
+    right: 45px;
+    img {
+      width: 60px;
+    }
+  }
+
+  .mainrr {
+    display: flex;
+    position: absolute;
+    bottom: 30px;
+    right: 40px;
+    z-index: 10;
+    .row {
+      position: relative;
+      cursor: pointer;
+      width: 50px;
+      text-align: center;
+      margin-left: 15px;
+      color: #666666;
+
+      & > img {
+        width: 50px;
+      }
+      p {
+        font-size: 12px;
+      }
+      .likeMove {
+        color: #930909;
+        position: absolute;
+        top: 10px;
+        width: 100%;
+        text-align: center;
+      }
+    }
+    .active {
+      color: #930909;
+      font-weight: 700;
+      p {
+        font-size: 12px;
+      }
+    }
+  }
+
+  .swBox {
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+    .swiper-container {
+      cursor: grab;
+      height: 100%;
+      .swiper-slide {
+        position: relative;
+        .infoTxt {
+          z-index: 10;
+          position: absolute;
+          top: 40px;
+          left: 40px;
+          width: 450px;
+          & > h3 {
+            font-size: 20px;
+            color: #930909;
+            font-weight: 700;
+            line-height: 28px;
+            margin-bottom: 15px;
+          }
+          & > div {
+            color: #666666;
+            font-size: 16px;
+          }
+        }
+        .videoAc {
+          pointer-events: none;
+          width: 1200px;
+          height: 680px;
+          position: absolute;
+          top: 50%;
+          left: 50%;
+          transform: translate(-50%, -50%);
+          padding: 74px 0 0 140px;
+          z-index: 30;
+          h3 {
+            color: #ffffff;
+          }
+        }
+        .videoBox {
+          width: 1200px;
+          height: 680px;
+          position: absolute;
+          top: 50%;
+          left: 50%;
+          transform: translate(-50%, -50%);
+          background-image: url("../assets/img/Hot/videoBac.png");
+          background-size: 100% 100%;
+          padding: 135px 90px 0 140px;
+          & > div {
+            width: 100%;
+            height: 100%;
+            overflow: hidden;
+            video {
+              height: 100%;
+            }
+          }
+        }
+        .ifrBox {
+          position: absolute;
+          top: 0;
+          left: 0;
+          width: 100%;
+          height: 100%;
+          overflow: hidden;
+          iframe {
+            width: 100%;
+            height: 100%;
+          }
+        }
+        img {
+          cursor: pointer;
+          position: absolute;
+          top: 50%;
+          left: 50%;
+          transform: translate(-50%, -50%);
+          max-width: 900px;
+          max-height: 700px;
+          object-fit: cover;
+        }
+      }
+      .swiper-pagination {
+        bottom: 50px;
+      }
+      .swiper-button-next {
+        // opacity: 1;
+        // pointer-events: auto;
+        width: 40px;
+        height: 60px;
+        right: 60px;
+        background-image: url("../assets/img/Hot/right.png");
+        background-size: 100% 100%;
+        color: transparent;
+      }
+      .swiper-button-prev {
+        // opacity: 1;
+        // pointer-events: auto;
+        width: 40px;
+        height: 60px;
+        left: 60px;
+        background-image: url("../assets/img/Hot/left.png");
+        background-size: 100% 100%;
+        color: transparent;
+      }
+      /deep/.swiper-pagination-bullet {
+        width: 70px;
+        height: 4px;
+        border-radius: 1px;
+        opacity: 1;
+        background-color: #999999;
+      }
+      /deep/.swiper-pagination-bullet-active {
+        background-color: #930909;
+      }
+    }
+  }
+}
+.active {
+  opacity: 1;
+  pointer-events: auto;
+}
+</style>

+ 1 - 1
SWKK/src/components/Rbottom.vue

@@ -267,7 +267,7 @@ export default {
       this.isFullscreen = !this.isFullscreen;
     },
     rightClisk(type) {
-      if (type === 1) this.$router.replace("/");
+      if (type === 1)  window.location.replace('/YHT/index.html')
       else if (type === 2) {
         let dom = document.querySelector("#bacMusic");
         window.bacMusic = dom.paused;

+ 181 - 0
SWKK/src/components/aa.vue

@@ -0,0 +1,181 @@
+<!DOCTYPE html>
+<html lang="en">
+    <head>
+        <meta charset="UTF-8" />
+        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+        <title>Document</title>
+        <style>
+            *,
+            *::before,
+            *::after {
+                box-sizing: border-box;
+            }
+            html,
+            body {
+                width: 100%;
+                height: 100%;
+                margin: 0;
+                overflow: hidden;
+            }
+            .scene {
+                width: 100%;
+                height: 100%;
+            }
+            #toolbar {
+                position: absolute;
+                left: 50%;
+                top: 0;
+                z-index: 10000;
+            }
+            [xui_tags_view] .tag-body {
+                position: absolute;
+                left: 50%;
+                bottom: 50px;
+                transform: translateX(-50%) scale(0);
+                transform-origin: bottom;
+                transition: all 0.3s cubic-bezier(0.35, 0.32, 0.65, 0.63);
+            }
+            [xui_tags_view] .tag-body.show {
+                transform: translateX(-50%) scale(1);
+            }
+            [xui_tags_view] .tag-body .tag-image {
+                min-width: 230px;
+                height: 76px;
+                background: hsla(0, 0%, 100%, 0.8);
+                box-shadow: 0 3px 6px 0 rgb(0 0 0 / 16%);
+                border-radius: 2px;
+                position: relative;
+                margin-bottom: 30px;
+            }
+            [xui_tags_view] .tag-body .tag-image::before {
+                content: '';
+                display: inline-block;
+                left: 50%;
+                transform: translateX(-50%);
+                width: 2px;
+                height: 28px;
+                bottom: -30px;
+                background: linear-gradient(145deg, hsla(0, 0%, 100%, 0.8), hsla(0, 0%, 100%, 0));
+                position: absolute;
+            }
+            [xui_tags_view] .tag-body .tag-image .tag-avatar {
+                position: absolute;
+                z-index: 99;
+                width: 80px;
+                height: 80px;
+                background: #fff;
+                box-shadow: 0 3px 6px 0 rgb(0 0 0 / 16%);
+                border-radius: 2px;
+                top: -14px;
+                left: -12px;
+                background-size: cover;
+                pointer-events: none;
+            }
+            [xui_tags_view] .tag-body .tag-image .tag-title {
+                padding: 10px 10px 10px 76px;
+                overflow: hidden;
+                text-overflow: ellipsis;
+                white-space: nowrap;
+                width: 240px;
+            }
+            [xui_tags_view] .tag-body .tag-image .tag-info {
+                padding: 0 20px 0 76px;
+                font-size: 12px;
+                overflow: hidden;
+                text-overflow: ellipsis;
+                white-space: nowrap;
+            }
+        </style>
+    </head>
+    <body>
+        <div class="tag-audi-q3" style="display: none">
+            <span class="tag-icon animate"></span>
+            <div class="tag-body">
+                <div class="tag-image">
+                    <div class="tag-avatar"></div>
+                    <div class="tag-title"></div>
+                    <div class="tag-info"></div>
+                </div>
+            </div>
+        </div>
+        <div id="scene" class="scene"></div>
+        <script src="//4dkk.4dage.com/v4/sdk/4.2.2/kankan-sdk-deps.js"></script>
+        <script src="//4dkk.4dage.com/v4/sdk/4.2.2/kankan-sdk.js"></script>
+        <script>
+            var kankan = new KanKan({
+                dom: '#scene',
+                num: 'KJ-JYo2ZZyKKJ'
+            })
+            kankan
+                .use('TagView', {
+                    render(data) {
+                        if (data.type == 'image') {
+                            if (data.sid === 'rLQekq473993') {
+                                // dom方式渲染
+                                var tag = document.querySelector('.tag-audi-q3')
+                                tag.querySelector('.tag-icon').style.backgroundImage = `url(${data.icon})`
+
+                                var container = tag.querySelector('.tag-image')
+                                
+                                var avatar = container.querySelector('.tag-avatar')
+                                avatar.style.backgroundImage = `url(${kankan.resource.getUserResourceURL(data.media[data.type][0].src)})`
+
+                                var title = container.querySelector('.tag-title')
+                                title.innerHTML = data.title
+
+                                var info = container.querySelector('.tag-info')
+                                info.innerHTML = data.content
+
+                                return tag
+                            } else {
+                                // 字符串方式渲染
+                                return `
+                                    <span class="tag-icon animate" style="background-image:url(${data.icon})"></span>
+                                    <div class="tag-body">
+                                    <div class="tag-image">
+                                            <div style="background-image:url(${kankan.resource.getUserResourceURL(data.media[data.type][0].src)})" class="tag-avatar"></div>
+                                            <div class="tag-title">${data.title}</div>
+                                            <div class="tag-info">${data.content}</div>
+                                        </div>
+                                    </div>
+                                `
+                            }
+                        } else {
+                            // 只渲染图标
+                            return `
+                                <span class="tag-icon animate" style="background-image:url({{icon}})"></span>
+                            `
+                        }
+                    },
+                })
+                .then(TagView => {
+                    // 监听手动点击事件
+                    TagView.on('click', e => {
+                        var tag = e.data
+
+                        // 如果只需监听热点点击,实现其他逻辑操作,下面的代码不需要调用
+
+                        // 聚焦当前点击的热点
+                        TagView.focus(tag.sid)
+                    })
+
+                    // 所有热点渲染完毕
+                    TagView.on('rendered',()=>{
+                        // 当前视角聚焦事件
+                        TagView.on('focus', e => {
+                            document.querySelectorAll('[xui_tags_view] >div').forEach(el => {
+                                if (el.getAttribute('data-tag-type') == 'image') {
+                                    el.querySelector('.tag-body').classList.remove('show')
+                                }
+                            })
+                            // 只有图片类型才自动显示
+                            if (e.data.type == 'image') {
+                                e.target.querySelector('.tag-body').classList.add('show')
+                            }
+                        })
+                    })
+                })
+            kankan.render()
+        </script>
+    </body>
+</html>

+ 13 - 0
SWKK/src/main.js

@@ -2,6 +2,19 @@ import Vue from 'vue'
 import App from './App.vue'
 import router from './router'
 
+
+// 图片查看
+import 'viewerjs/dist/viewer.css'
+import Viewer from 'v-viewer'
+
+// 图片懒加载
+import VueLazyLoad from 'vue-lazyload'
+Vue.use(VueLazyLoad, {
+  error: require('@/assets/img/IMGerror.png'),
+  loading: require('@/assets/img/loading.gif')
+})
+Vue.use(Viewer)
+
 import './assets/style/base.css'
 
 Vue.config.productionTip = false

+ 88 - 2
SWKK/src/views/Home.vue

@@ -43,15 +43,19 @@
         南京雨花台烈士纪念馆{{ num === "1" ? "一" : "二" }}楼
       </div>
     </div>
+
+    <!-- 点击热点出来的界面 -->
+    <Hot v-if="sonInfo" :info="sonInfo" @hotClose="hotClose" />
   </div>
 </template>
 
 <script>
+import Hot from "../components/Hot.vue";
 import Rbottom from "../components/Rbottom.vue";
 export default {
   name: "Home",
   //import引入的组件需要注入到对象中才能使用
-  components: { Rbottom },
+  components: { Rbottom, Hot },
   data() {
     //这里存放数据
     return {
@@ -66,6 +70,7 @@ export default {
       progress: 0,
       disable: false,
       playing: false,
+      sonInfo: null,
     };
   },
   //监听属性 类似于data概念
@@ -74,6 +79,16 @@ export default {
   watch: {},
   //方法集合
   methods: {
+    // 热点点击关闭
+    hotClose() {
+      this.sonInfo = null;
+      if (window.bacMusic) {
+        setTimeout(() => {
+          this.$refs.RbottomRef.opMusic(true);
+        }, 100);
+      }
+    },
+
     onceClickMusic() {
       this.$refs.RbottomRef.opMusic(true);
       setTimeout(() => {
@@ -117,7 +132,7 @@ export default {
     // 切换楼层
     cutFool(val) {
       // window.location.replace(`#/Swkk${val}`)
-      window.location.replace(`#/${val}`);
+      window.location.replace(`/YHT/Swkk/index.html#/${val}`);
       setTimeout(() => {
         location.reload(true);
       }, 200);
@@ -142,6 +157,7 @@ export default {
     this.num = num;
     if (num === "1") num = "KJ-aigSkgvRWR";
     else if (num === "2") num = "KJ-ufjLwlSXba";
+    window.KKNum = num;
     let kankan = new KanKan({
       dom: ".box",
       num,
@@ -184,6 +200,76 @@ export default {
     kankan.TourManager.on("loaded", (tours) => {
       this.$refs.RbottomRef.baseSw(tours);
     });
+
+    // 全部热点数据
+    kankan.store.on("tags", (tags) => {
+      this.baseHotData = tags.tags;
+      let temp = [];
+      tags.tags.forEach((v) => {
+        let arrTitle = v.title.split("&");
+        // 显示在页面的热点图标
+        if (arrTitle[2]) {
+          temp.push(v);
+        }
+      });
+    });
+
+    // 热点
+    kankan
+      .use("TagView", {
+        render(data) {
+          let arrTitle = data.title.split("&");
+          let flag = false;
+          if (arrTitle[2] || !data.title.includes("&")) flag = true;
+
+          let title = data.title.split("&")[0];
+
+          return `<span class="tag-icon animate" title=${title} style="${
+            flag ? "" : "display: none;"
+          };background-image:url({{icon}})"></span><div class="tag-body"></div>`;
+        },
+      })
+      .then((TagView) => {
+        // 监听手动点击事件
+        TagView.on("click", (e) => {
+          // 点击热点的时候当前背景音乐的播放状态
+          let dom = document.querySelector("#bacMusic");
+          window.bacMusic = !dom.paused;
+          setTimeout(() => {
+            this.$refs.RbottomRef.opMusic(false);
+          }, 200);
+
+          let temp = [];
+
+          // 如果是多个热点合并
+          if (e.data.title.split("&")[1]) {
+            this.baseHotData.forEach((v) => {
+              if (v.title.split("&")[1] === e.data.title.split("&")[1]) {
+                temp.push(v);
+              }
+            });
+            let obj = {
+              image: [],
+              audio: [],
+              link: [],
+              video: [],
+            };
+            temp.forEach((v) => {
+              obj[v.type].push(v);
+            });
+            this.sonInfo = obj;
+          } else {
+            // 单个热点
+            this.sonInfo = { audio: [e.data] };
+          }
+
+          // 如果只需监听热点点击,实现其他逻辑操作,下面的代码不需要调用
+
+          // 聚焦当前点击的热点
+          TagView.focus(e.data.sid);
+        });
+      });
+
     kankan.render();
 
     kankan.Scene.on("loaded", () => {

+ 3 - 0
SWKK/vue.config.js

@@ -0,0 +1,3 @@
+module.exports = {
+  publicPath: './'
+}

二進制
vue/src/assets/img/Home/bac.jpg


+ 22 - 6
vue/src/views/Goods/components/Three.vue

@@ -50,7 +50,14 @@
           src="https://4dscene.4dage.com/culturalrelics/NSRDYT/Model2.html?m=nsr01"
           frameborder="0"
         ></iframe>
-        <h3>民国时期邓中夏烈士读书时期用的煤油灯</h3>
+        <div class="txtInfo">
+          <h3>民国时期邓中夏烈士读书时期用的煤油灯</h3>
+          <p>年代:中华民国(1912~1949)</p>
+          <p>类别:其他</p>
+          <p>级别:二级</p>
+          <p>质地:玻璃</p>
+          <p>尺寸:17.5*9.2cm</p>
+        </div>
         <div
           class="close"
           @click="(modelBoxShow = false), (modelShow = false), (move = false)"
@@ -155,6 +162,7 @@ export default {
 
     look3D(id) {
       this.modelShow = true;
+      this.modelBoxShow = true;
     },
     mousedown(e) {
       this.move = true;
@@ -237,6 +245,7 @@ export default {
     height: 100%;
     backdrop-filter: blur(4px);
     .model {
+      opacity: 0;
       border-bottom: 6px solid #cea763;
       border-top: 6px solid #cea763;
       position: absolute;
@@ -319,14 +328,21 @@ export default {
         width: 100%;
         height: 100%;
       }
-      h3 {
+      .txtInfo {
         position: absolute;
-        width: 260px;
+        width: 400px;
         top: 44px;
         left: 40px;
-        color: #930909;
-        font-size: 20px;
-        line-height: 26px;
+        h3 {
+          color: #930909;
+          font-size: 20px;
+          line-height: 26px;
+        }
+        p {
+          margin: 15px 0;
+          color: #666666;
+          font-size: 16px;
+        }
       }
       .close {
         position: absolute;

+ 1 - 1
vue/src/views/Video/index.vue

@@ -37,7 +37,7 @@ export default {
   //方法集合
   methods: {
     toSwkk(){
-      window.location.replace('/Swkk/#/1')
+      window.location.replace('/YHT/Swkk/index.html#/1')
     }
   },
   //生命周期 - 创建完成(可以访问当前this实例)

+ 3 - 0
vue/vue.config.js

@@ -0,0 +1,3 @@
+module.exports = {
+  publicPath: './'
+}

+ 0 - 3
全景看看/.browserslistrc

@@ -1,3 +0,0 @@
-> 1%
-last 2 versions
-not dead

+ 0 - 6
全景看看/.env

@@ -1,6 +0,0 @@
-VUE_APP_MAIN_COLOR=''
-VUE_APP_STATIC_DIR=static
-VUE_APP_INNERNET=https://fcb.intranet.4dkankan.com
-VUE_APP_CDN=''
-VUE_APP_PROXY_URL=''
-VUE_APP_URL_FILL='/'

+ 0 - 8
全景看看/.env.bendidev

@@ -1,8 +0,0 @@
-VUE_APP_MAIN_COLOR=''
-VUE_APP_STATIC_DIR=static
-VUE_APP_INNERNET=https://fcb.intranet.4dkankan.com
-# todo gongbei: 场景数据所在地址
-# VUE_APP_CDN="http://44.47.28.123:8080/"
-VUE_APP_CDN="http://127.0.0.1:8080/"
-VUE_APP_PROXY_URL='http://127.0.0.1:8001/'
-VUE_APP_URL_FILL='/'

+ 0 - 7
全景看看/.env.bendiprod

@@ -1,7 +0,0 @@
-VUE_APP_MAIN_COLOR=''
-VUE_APP_STATIC_DIR=static
-VUE_APP_INNERNET=https://fcb.intranet.4dkankan.com
-# todo gongbei: 场景数据所在地址
-VUE_APP_CDN='/'
-VUE_APP_PROXY_URL='http://www.4dkankan.com/qjkankan/'
-VUE_APP_URL_FILL=/qjkankan

+ 0 - 6
全景看看/.env.prod

@@ -1,6 +0,0 @@
-VUE_APP_MAIN_COLOR=''
-VUE_APP_STATIC_DIR=static
-VUE_APP_INNERNET=https://fcb.intranet.4dkankan.com
-VUE_APP_CDN=https://4dkk.4dage.com
-VUE_APP_PROXY_URL='http://www.4dkankan.com/qjkankan/'
-VUE_APP_URL_FILL=/qjkankan

+ 0 - 6
全景看看/.env.test

@@ -1,6 +0,0 @@
-VUE_APP_MAIN_COLOR=''
-VUE_APP_STATIC_DIR=static
-VUE_APP_INNERNET=https://fcb.intranet.4dkankan.com
-VUE_APP_CDN=https://oss-xiaoan.oss-cn-shenzhen.aliyuncs.com
-VUE_APP_PROXY_URL='http://test.4dkankan.com/qjkankan/'
-VUE_APP_URL_FILL=/qjkankan

+ 0 - 8
全景看看/.env.testprod

@@ -1,8 +0,0 @@
-NODE_ENV=production
-VUE_APP_MAIN_COLOR=''
-VUE_APP_STATIC_DIR=static
-VUE_APP_INNERNET=https://fcb.intranet.4dkankan.com
-VUE_APP_CDN=https://oss-xiaoan.oss-cn-shenzhen.aliyuncs.com
-VUE_APP_PROXY_URL='http://test.4dkankan.com/qjkankan/'
-VUE_APP_PROXY_4DKANKAN_URL=''
-VUE_APP_URL_FILL=/qjkankan

+ 0 - 22
全景看看/.eslintrc.js

@@ -1,22 +0,0 @@
-module.exports = {
-  root: true,
-  env: {
-    node: true,
-    browser: true,
-    es6: true,
-    commonjs: true,
-    jquery: true,
-  },
-  'extends': [
-    'plugin:vue/essential',
-    'eslint:recommended'
-  ],
-  parserOptions: {
-    parser: 'babel-eslint'
-  },
-  rules: {
-    'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
-    'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
-    'no-unused-vars': 'off',
-  },
-}

+ 0 - 24
全景看看/.gitignore

@@ -1,24 +0,0 @@
-dist.zip
-.DS_Store
-node_modules
-/dist
-
-
-# local env files
-.env.local
-.env.*.local
-
-# Log files
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-pnpm-debug.log*
-
-# Editor directories and files
-.idea
-.vscode
-*.suo
-*.ntvs*
-*.njsproj
-*.sln
-*.sw?

+ 0 - 24
全景看看/README.md

@@ -1,24 +0,0 @@
-# code2.6
-
-## Project setup
-```
-npm install
-```
-
-### Compiles and hot-reloads for development
-```
-npm run serve
-```
-
-### Compiles and minifies for production
-```
-npm run build
-```
-
-### Lints and fixes files
-```
-npm run lint
-```
-
-### Customize configuration
-See [Configuration Reference](https://cli.vuejs.org/config/).

+ 0 - 14
全景看看/babel.config.js

@@ -1,14 +0,0 @@
-module.exports = {
-  presets: [
-    '@vue/cli-plugin-babel/preset'
-  ],
-  plugins: [
-    [
-      "component",
-      {
-        "libraryName": "element-ui",
-        "styleLibraryName": "theme-chalk"
-      }
-    ]
-  ]
-}

+ 0 - 9
全景看看/jsconfig.json

@@ -1,9 +0,0 @@
-{
-  "compilerOptions": {
-    "baseUrl": ".",
-    "paths": {
-      "@/*": ["./src/*"]
-    }
-  },
-  "exclude": ["node_modues", "dist"],
-}

文件差異過大導致無法顯示
+ 0 - 35907
全景看看/package-lock.json


+ 0 - 46
全景看看/package.json

@@ -1,46 +0,0 @@
-{
-  "name": "code2.6",
-  "version": "0.1.0",
-  "private": true,
-  "scripts": {
-    "serve": "vue-cli-service serve",
-    "serve-prod": "vue-cli-service serve --mode prod",
-    "serve-bendidev": "vue-cli-service serve --mode bendidev",
-    "build": "vue-cli-service build",
-    "build-prod": "vue-cli-service build --mode prod",
-    "build-bendiprod": "vue-cli-service build --mode bendiprod",
-    "lint": "vue-cli-service lint"
-  },
-  "dependencies": {
-    "axios": "^0.27.2",
-    "core-js": "^3.8.2",
-    "element-ui": "^2.15.10",
-    "html2canvas": "^1.4.1",
-    "js-base64": "^3.7.2",
-    "photoswipe": "^4.1.3",
-    "swiper": "^5.3.8",
-    "v-viewer": "^1.5.1",
-    "video.js": "^7.11.8",
-    "vue": "^2.6.12",
-    "vue-awesome-swiper": "^4.1.1",
-    "vue-cropperjs": "^4.2.0",
-    "vue-i18n": "^8.22.3",
-    "vue-photo-preview": "^1.1.3",
-    "vue-router": "^3.4.9",
-    "vuedraggable": "^2.24.3",
-    "vuex": "^3.6.0"
-  },
-  "devDependencies": {
-    "@vue/cli-plugin-babel": "^4.5.9",
-    "@vue/cli-plugin-eslint": "^4.5.9",
-    "@vue/cli-plugin-router": "^4.5.9",
-    "@vue/cli-service": "^4.5.9",
-    "babel-eslint": "^10.1.0",
-    "babel-plugin-component": "^1.1.1",
-    "eslint": "^6.8.0",
-    "eslint-plugin-vue": "^6.2.2",
-    "less": "^3.13.1",
-    "less-loader": "^5.0.0",
-    "vue-template-compiler": "^2.6.12"
-  }
-}

二進制
全景看看/public/favicon.ico


二進制
全景看看/public/fonts/element-icons.ttf


二進制
全景看看/public/fonts/element-icons.woff


文件差異過大導致無法顯示
+ 0 - 2
全景看看/public/hls.js


+ 0 - 35
全景看看/public/show.html

@@ -1,35 +0,0 @@
-<!DOCTYPE html>
-<html lang="zh">
-
-<head>
-  <meta charset="utf-8">
-  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-  <meta name="viewport" content="width=device-width,initial-scale=1.0">
-  <link rel="stylesheet" href="<%= VUE_APP_STATIC_DIR %>/lib/iconfontQJ/iconfont.css" />
-  <link rel="stylesheet" href="<%= VUE_APP_STATIC_DIR %>/lib/scrollbar/perfect-scrollbar.css" />
-  <link rel="icon" href="./favicon.ico" />
-  <title>珠海市拱北重点区域警务可视化</title>
-  <style>
-    .v-modal {
-      display: none !important;
-    }
-    .v-popup-layer{
-      display: none !important;
-    }
-  </style>
-</head>
-
-<body>
-  <script src="./hls.js"></script>
-  <div id="app"></div>
-  <!-- built files will be auto injected -->
-  <script src="<%= VUE_APP_STATIC_DIR %>/lib/jquery-2.1.1.min.js"></script>
-  <script src="<%= VUE_APP_STATIC_DIR %>/lib/krpano/js/tour.js"></script>
-  <script src="<%= VUE_APP_STATIC_DIR %>/lib/mCustomScrollbar/jquery.mCustomScrollbar.concat.min.js"></script>
-  <script src="<%= VUE_APP_STATIC_DIR %>/lib/scrollbar/perfect-scrollbar.min.js"></script>
-  <script src="<%= VUE_APP_STATIC_DIR %>/lib/sly.min.js"></script>
-
-</body>
-
-</html>

+ 0 - 69
全景看看/public/showMobile.html

@@ -1,69 +0,0 @@
-<!DOCTYPE html>
-<html lang="zh">
-  <head>
-    <meta charset="utf-8">
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <meta content="yes" name="apple-mobile-web-app-capable" />  
-    <meta name="viewport" content="width=device-width,height=device-height,inital-scale=1.0,maximum-scale=1.0,user-scalable=no" />
-    <link rel="stylesheet" href="<%= VUE_APP_STATIC_DIR %>/lib/iconfontQJ/iconfont.css"/>
-    <link rel="stylesheet" href="<%= VUE_APP_STATIC_DIR %>/lib/animate/animate.min.css" />
-    <link rel="icon" href="./favicon.ico" />
-    <!-- <style>
-      #consoleLog{ 
-        width: 120px;
-        height: 153px;
-        position: fixed;
-        right: 0px;
-        bottom: 160px;
-        z-index: 999999;
-        color: black;
-        opacity: 0.9;
-        font-size: 12px;
-      }
-    </style> -->
-    <title>VR作品</title>
-  </head>
-  <body>
-    <div id="app"></div>
-    <!-- built files will be auto injected -->
-    <script src="<%= VUE_APP_STATIC_DIR %>/lib/jquery-2.1.1.min.js"></script>
-    <script src="<%= VUE_APP_STATIC_DIR %>/lib/krpano/js/tour.js"></script>
-    <script src="https://res2.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
-
-<!-- 
-    <script>
-      let href = window.location.href
-
-      var changeLog = ()=>{
-      
-          if(href.indexOf('724')>-1){
-              var textarea = document.createElement('textarea');
-                textarea.id = "consoleLog";
-
-                document.getElementsByTagName("body")[0].appendChild(textarea);
-                var list = ["log", "error", "warn", "debug", "info", "time", "timeEnd"]
-                var exchange = function (o) {
-                  console["old" + o] = console[o];
-                  console[o] = function (str) {
-                    console["old" + o](str);
-                    var t = document.getElementById("consoleLog").innerHTML;
-                    document.getElementById("consoleLog").innerHTML = str + "\n\n" + t;
-                  }
-                }
-
-                for (var i = 0; i < list.length; i++) {
-                  exchange(list[i])
-                } 
-         
-          }
-          
-      }
-
-      setTimeout(() => {
-        changeLog()
-      }, 1000);
-  </script> -->
-
-  </body>
-</html>

+ 0 - 175
全景看看/public/static/css/alivideo.css

@@ -1,175 +0,0 @@
-/**
- * @fileoverview 默认皮肤的样式
- * @author 首作<aloysious.ld@taobao.com>
- * @date 2015-01-12
- *
- * 约定:
- * 1. 这个文件只定义所有ui组件的尺寸、在prite图中的位置(background、width、height);
- * 2. 与layout相关的属性(position、margin等)不在此定义,而交由js的layout模块完成;
- * 3. 对于复杂的ui组件,其内层的所有样式都可以在这个文件定制(如进度条、音量控制条);
- * 4. 在首次迭代中,这个文件开发者会手动编辑,以后与sprite图相关的属性应由代码自动化生成。
- */
-.prism-player .prism-big-play-btn {
-  width: 90px;
-  height: 90px;
-  background: url("//gw.alicdn.com/tps/TB1YuE3KFXXXXaAXFXXXXXXXXXX-256-512.png") no-repeat -2px -2px;
-}
-.prism-player .prism-play-btn {
-  width: 27px;
-  height: 30px;
-  background: url("//gw.alicdn.com/tps/TB1YuE3KFXXXXaAXFXXXXXXXXXX-256-512.png") no-repeat -2px -250px;
-}
-.prism-player .prism-live-display {
-  width: 56px;
-  height: 19px;
-  background: url("//gw.alicdn.com/tps/TB1YuE3KFXXXXaAXFXXXXXXXXXX-256-512.png") no-repeat -186px -2px;
-}
-.prism-player .prism-play-btn.playing {
-  width: 27px;
-  height: 30px;
-  background: url("//gw.alicdn.com/tps/TB1YuE3KFXXXXaAXFXXXXXXXXXX-256-512.png") no-repeat -208px -269px;
-}
-.prism-player .prism-fullscreen-btn {
-  width: 30px;
-  height: 30px;
-  background: url("//gw.alicdn.com/tps/TB1YuE3KFXXXXaAXFXXXXXXXXXX-256-512.png") no-repeat -124px -190px;
-}
-.prism-player .prism-fullscreen-btn.fullscreen {
-  width: 30px;
-  height: 30px;
-  background: url("//gw.alicdn.com/tps/TB1YuE3KFXXXXaAXFXXXXXXXXXX-256-512.png") no-repeat -161px -183px;
-}
-.prism-player .prism-volume {
-  width: 33px;
-  height: 30px;
-  background: url("//gw.alicdn.com/tps/TB1YuE3KFXXXXaAXFXXXXXXXXXX-256-512.png") no-repeat -199px -119px;
-}
-.prism-player .prism-volume.mute {
-  width: 33px;
-  height: 30px;
-  background: url("//gw.alicdn.com/tps/TB1YuE3KFXXXXaAXFXXXXXXXXXX-256-512.png") no-repeat -164px -151px;
-}
-.prism-player {
-  background-color: #000;
-  position: relative;
-  /* bigPlayButton */
-  /* controlBar */
-  /* playButton */
-  /* liveDisplay */
-  /* timeDisplay */
-  /* fullscreenButton */
-  /* volume */
-  /* progress */
-}
-.prism-player .prism-cover {
-  width: 100%;
-  height: 100%;
-  background-color: #000;
-  background-repeat: no-repeat;
-  background-position: center;
-  background-size: contain;
-  position: absolute;
-  top: 0;
-  left: 0;
-}
-.prism-player .prism-controlbar {
-  width: 100%;
-  height: 61px;
-  position: relative;
-  z-index: 1;
-}
-.prism-player .prism-controlbar .prism-controlbar-bg {
-  background-color: #262626;
-  width: 100%;
-  height: 50px;
-  position: absolute;
-  bottom: 0;
-  left: 0;
-  z-index: -1;
-}
-.prism-player .prism-time-display {
-  height: 33px;
-  line-height: 33px;
-  color: #666666;
-}
-.prism-player .prism-time-display .current-time {
-  color: #fff;
-}
-.prism-player .prism-progress {
-  width: 100%;
-  height: 6px;
-  margin-top: 5px;
-  background-color: #363636;
-  position: relative;
-}
-.prism-player .prism-progress .prism-progress-loaded {
-  position: absolute;
-  top: 0;
-  left: 0;
-  width: 0;
-  height: 100%;
-  background-color: #7e2c1f;
-}
-.prism-player .prism-progress .prism-progress-played {
-  position: absolute;
-  top: 0;
-  left: 0;
-  width: 0;
-  height: 100%;
-  background-color: #ee2a10;
-}
-.prism-player .prism-progress .prism-progress-cursor {
-  position: absolute;
-  width: 8px;
-  height: 8px;
-  top: -5px;
-  left: 0;
-  margin-left: -8px;
-  background-color: #5b5b5b;
-  border: 4px solid #fff;
-  border-radius: 8px;
-  -webkit-box-shadow: 0 0 5px #000;
-  box-shadow: 0 0 5px #000;
-  overflow: hidden;
-  -webkit-box-sizing: content-box;
-  -moz-box-sizing: content-box;
-  box-sizing: content-box;
-}
-:-webkit-full-screen {
-  width: 100%!important;
-  height: 100%!important;
-}
-:-moz-full-screen {
-  width: 100%!important;
-  height: 100%!important;
-}
-:-ms-full-screen {
-  width: 100%!important;
-  height: 100%!important;
-}
-:-ms-fullscreen {
-  width: 100%!important;
-  height: 100%!important;
-}
-:fullscreen {
-  width: 100%!important;
-  height: 100%!important;
-}
-body.prism-full-window {
-  padding: 0;
-  margin: 0;
-  height: 100%;
-  overflow-y: auto;
-}
-.prism-fullscreen {
-  position: fixed;
-  overflow: hidden;
-  z-index: 99999;
-  left: 0;
-  top: 0;
-  bottom: 0;
-  right: 0;
-  width: 100% !important;
-  height: 100% !important;
-  _position: absolute;
-}

文件差異過大導致無法顯示
+ 0 - 4663
全景看看/public/static/css/redefine.css


文件差異過大導致無法顯示
+ 0 - 1523
全景看看/public/static/css/response.css


文件差異過大導致無法顯示
+ 0 - 1311
全景看看/public/static/css/zui-theme.css


文件差異過大導致無法顯示
+ 0 - 17
全景看看/public/static/css/zui.min.css


二進制
全景看看/public/static/fonts/captcha.ttf


二進制
全景看看/public/static/fonts/zenicon.woff


二進制
全景看看/public/static/images/kr/close.png


二進制
全景看看/public/static/images/kr/left-white.png


二進制
全景看看/public/static/images/kr/radar-active.png


二進制
全景看看/public/static/images/kr/radar-out.png


二進制
全景看看/public/static/images/kr/right-white.png


二進制
全景看看/public/static/images/kr/tourpoint.png


二進制
全景看看/public/static/images/kr/vr-btn-scene.png


二進制
全景看看/public/static/images/loading.gif


二進制
全景看看/public/static/images/skin1/bgmusic-close.png


二進制
全景看看/public/static/images/skin1/bgmusic-open.png


二進制
全景看看/public/static/images/skin1/commentclose.png


二進制
全景看看/public/static/images/skin1/footmark.png


二進制
全景看看/public/static/images/skin1/full-screen.png


二進制
全景看看/public/static/images/skin1/full-stop.png


二進制
全景看看/public/static/images/skin1/gyro-close.png


二進制
全景看看/public/static/images/skin1/gyro-open.png


二進制
全景看看/public/static/images/skin1/iconfont-link.png


二進制
全景看看/public/static/images/skin1/more.png


二進制
全景看看/public/static/images/skin1/music-close.png


二進制
全景看看/public/static/images/skin1/music-open.png


二進制
全景看看/public/static/images/skin1/radar.png


二進制
全景看看/public/static/images/skin1/radar_open.png


二進制
全景看看/public/static/images/skin1/vr-btn-comment.png


二進制
全景看看/public/static/images/skin1/vr-btn-desc.png


二進制
全景看看/public/static/images/skin1/vr-btn-good-click.png


二進制
全景看看/public/static/images/skin1/vr-btn-good.png


二進制
全景看看/public/static/images/skin1/vr-btn-scene.png


二進制
全景看看/public/static/images/skin1/vr-btn-share.png


二進制
全景看看/public/static/images/skin1/vrmode.png


二進制
全景看看/public/static/img/g.png


文件差異過大導致無法顯示
+ 0 - 4336
全景看看/public/static/js/alivideo.js


文件差異過大導致無法顯示
+ 0 - 5
全景看看/public/static/js/jquery-1.9.1.js


+ 0 - 22
全景看看/public/static/js/object.js

@@ -1,22 +0,0 @@
-//flag 标识是否从预览页打开 true
-function obj_buildframes(oid,sceneName){
-	var krpano = document.getElementById('krpanoSWFObject');
-	var objs = getObj(oid,sceneName);
-	for(var i=0 ; i<objs.length; i++){
-		var fname = 'frame'+i;
-		krpano.call('addplugin('+fname+');'+
-				 'plugin['+fname+'].loadstyle(frame);'+
-				 'set(plugin['+fname+'].url,'+objs[i].imgsrc+');');
-	}
-	toggleBtns(false);
-	krpano.call("set(currentframe,0);set(framecount,"+objs.length+");set(oldmousex,0);showframe(0);");
-}
-function getObj(oid,sceneName){
-	var objs = data.hotspot[sceneName]['obj'];
-	for(var i= 0 ; i< objs.length;i++){
-		var o = objs[i];
-		if (o.objid == oid) {
-			return o.objs;
-		}
-	}
-}

+ 0 - 271
全景看看/public/static/js/uhweb.js

@@ -1,271 +0,0 @@
-/**
- *UHWEB JS
- */
-(function (w, d, undefined) {
-    /*
-     *生成全局遮罩层
-     */
-    //document.writeln('<div id="div_Mask" style="width:100%;position:absolute; z-index:99999; top:0; left:0; background:#E6E6E6; height:' + 0/*document.documentElement.clientHeight*/ + 'px;"><div style="z-index:99999;font-size:12px;color: #ce8f22;position:absolute;top:0px;right:0px;padding:2px 10px 2px 10px;">' +
-    //    '加载中,请稍候......</div></div>');
-    //document.close();
-
-    /**
-     * 定义全局作用域变量UHWEB
-     */
-    w.UHWEB = (function (w, d, undefined) {
-        /**
-         *是否是IE浏览器
-         */
-        var isIE = (navigator.userAgent.toLowerCase().indexOf('msie') != -1),
-            /**
-             * 创建UHWEB对象的临时变量
-             */
-            U,
-            /**
-             * 缓存document.getElementsByTagName
-             */
-            queryTag = function (tag) {
-                return this.getElementsByTagName(tag);
-            },
-            /**
-             * 缓存document.createElement
-             */
-            createEl = function (tag) {
-                return this.createElement(tag);
-            },
-            /**
-             * 是否是服务器模式,uhweb可在静态环境和服务器环境运行
-             */
-            isServer = !(d.domain == ''),
-            /**
-             * 业务js,就是定义在uhweb.js的script节点上的bizjs属性
-             */
-            bizJs,
-            /**
-             *业务css,就是定义在uhweb.js的script节点上的bizcss属性
-             */
-            bizCss,
-            /**
-             * 是否是客户端缓存服务端
-             */
-            clientCache,
-            isLoginPage = "false",
-
-        /*
-         * 调试模式,静态模式或者服务器模式下在url后拼接uhweb-debug=true即可开启调试模式.
-         * 要查看调试信息,请开启浏览器控制台
-         */
-            _DEBUG = false;
-        if (!isServer || w.location.search.indexOf('uhweb-debug=true') > 0) {
-            _DEBUG = true;
-        }
-
-        /**
-         * 获取uhweb所在的根目录
-         * @return {String}
-         */
-        var getRoot = function () {
-            var s = queryTag.call(d, 'script'),
-                /**
-                 * 某些情况时需要添加例外
-                 */
-                id = 0;
-            var p = s[id].src, sign = "uhweb.js", realpath = "uhweb/uhweb.js";
-            if (p.lastIndexOf(sign) > 0) {
-                bizJs = s[id].getAttribute('bizjs');
-                isLoginPage = s[id].getAttribute('isLoginPage');
-                bizCss = s[id].getAttribute('bizcss');
-                clientCache = s[id].getAttribute('CacheServer');
-                return p.replace(realpath, '');
-            } else {
-                throw '引入的uhweb.js的script节点必须放在页面引用的第一个script节点上!';
-            }
-        };
-        var head = queryTag.call(d, 'HEAD').item(0),
-        //静态运行时加载js
-            local = function (url, func) {
-                var s = createEl.call(d, 'script');
-                s.language = 'javascript';
-                s.type = 'text/javascript';
-                s.async = false;
-                s['src'] = url;
-                s.onload = s.onreadystatechange = function () {
-                    var st = this.readyState;
-                    if (!st || st == 'loaded' || st == 'complete') {
-                        _U.log('finishLoad js file ' + url);
-                        s.onload = s.onreadystatechange = null;
-                        if (func) {
-                            func.delay(10);
-                        }
-                    }
-                };
-                head.appendChild(s);
-                return s;
-            },
-        //服务器模式时加载js
-            server = function (url, func) {
-                var req = ((w.ActiveXObject) ? new ActiveXObject('MsXml2.XmlHttp') : new XMLHttpRequest());
-                req.open('get', url, false);
-                req.setRequestHeader('Content-Type', 'text/plain;charset=gb2312');
-                req.send(null);
-                if (req.readyState == 4) {
-                    if (req.status == 200) {
-                        if (req.responseText != '') {
-                            if (isIE) {
-                                execScript(req.responseText);
-                            } else {
-                                w.eval(req.responseText);
-                            }
-                            if (func)func();
-                        }
-                    }
-                }
-            };
-        U = {
-            //版本号
-            ver: 'V1.0',
-            //全局根目录
-            root: getRoot(),
-            isLoginPage : isLoginPage,
-            //是否是开发模式
-            isDev: (typeof jQuery === 'undefined'),
-            //是否是服务器端运行
-            isServer: isServer,
-            //调试开关
-            debug: _DEBUG,
-            //加载js
-            loadJs: function (url, f) {
-                (isServer) ? server(url, f) : local(url, f);
-            },
-            //加载css
-            loadCss: function (url) {
-                var link = createEl.call(d, 'link');
-                link.href = url;
-                link.type = 'text/css';
-                link.rel = 'stylesheet';
-                head.appendChild(link);
-            },
-            //初始化配置文件
-            initCfg: function (cfg) {
-                var me = this;
-                me.config = cfg;
-                if (me.process) {
-                    me.process();
-                } else {
-                    _U.loadCss('../uhweb/styles/' + _U.getCfg('style').sys_style + '/uhweb_min.css');
-                }
-                //加载业务js文件
-                var bizjs = (bizJs) ? eval(bizJs) : [], url, bizcss = (bizCss) ? eval(bizCss) : [];
-                for (i = 0; i < bizjs.length; i++) {
-                    url = me.root + bizjs[i];
-                    _U.log('add bizjs ' + url, 'uhweb');
-                    me.loadJs(url);
-                }
-                for (i = 0; i < bizcss.length; i++) {
-                    url = me.root + bizcss[i];
-                    _U.log('add bizcss ' + url, 'uhweb');
-                    me.loadCss(url);
-                }
-            },
-            //获取配置信息
-            getCfg: function (name) {
-                return this.config[name];
-            }
-        };
-        //实现默认的浅拷贝
-        U.mix = function (o) {
-            var me = this;
-            for (var k in o) {
-                if (me[k]) {
-                    me.warn('UHWEB对象已经有属性[' + k + ']!', 'uhweb');
-                } else {
-                    me[k] = o[k];
-                }
-            }
-        };
-        U.getParamFromUrl = function (param) {
-            var query = window.location.search;
-            var v = query.match(new RegExp("(^|&)" + param + "=([^&]*)(&|$)", "i"));
-            if (v != null) {
-                v = unescape(v[2]);
-            }
-            return v;
-        };
-        //全局屏蔽一些按键
-        U.shielding = function () {
-            var s = _U.getCfg('shields');
-            $(window).addEvent((Browser.firefox) ? 'keypress' : 'keydown', function (e) {
-                var k = e.key, c = e.control, el = $(e.target);
-                if ((k == 'f5' || (c && k == 'r')) && s.f5) {
-                    e.stop();
-                    return false;
-                } else if (k == 'backspace' && s.backspace) {
-                    var type = el.get('type') || el.get('tag');
-                    if (!['button', 'text', 'password', 'textarea', 'submit'].contains(type)) {
-                        e.stop();
-                        return false;
-                    }
-                }
-            });
-            if (s.contextMenu) {
-                $(document).oncontextmenu = function (e) {
-                    return false;
-                }
-            }
-        };
-        //统一处理iframe的初始化以及跳转
-        //解决按下backspace或者浏览器回退键会使iframe变为空白的问题
-        U.setIfrSrc = function (ifr, src) {
-            ifr.src = src;
-            ifr.contentWindow.location.replace(src);
-            /*//要注意跨域的问题.可能无跨域问题
-             Function.attempt(function () {
-             }, function () {
-
-             })*/
-        };
-        return U;
-    })(w, d, undefined);
-    /**
-     * 新增一个别名,减少字符开销
-     */
-    var _U = w._U = w.Uhweb = w.UHWEB,
-        /**
-         *日志输出级别,为兼容,暂支持4种级别
-         */
-        mtd = ['log', 'warn', 'error', 'info'];
-    /**
-     * 隐藏蒙版,框架启动加载完毕之后会调用
-     */
-    for (var k = 0; k < mtd.length; k++) {
-        _U[mtd[k]] = (function (c) {
-            return function (msg, src) {
-                U_LOG(msg, c, src);
-            }
-        })(mtd[k]);
-    }
-    /**
-     * 日志输出
-     * @param msg 要输出的信息
-     * @param cat 级别
-     * @param src 信息来源
-     */
-    function U_LOG(msg, cat, src) {
-        if (_U.debug) {
-            msg = ((src) ? src : 'SYSTEM') + ': ' + msg;
-            if (w['console'] !== undefined && console.log) {
-                console[cat && console[cat] ? cat : 'log'](msg);
-            }
-        }
-    }
-
-    _U.process = function () {
-
-    };
-
-    //加载子界面.
-    _U.initSubPage = function (ns, func) {
-        $.fn[ns] = {};
-        func($, $.fn[ns], _U);
-    };
-})(window, document, undefined);

+ 0 - 517
全景看看/public/static/js/vrshow.js

@@ -1,517 +0,0 @@
-var pk_works_main;
-var mapModalEl;
-var _user_view_uuid;
-var _name;
-var _userList;
-var plugins_init_function = new Array();//接收显示时的init方法
-
-//krpano loadcomplete调用
-function showPanoBtns(sceneCount){
-    if (sceneCount > 1) {
-        $(".vrshow_container_3_min .img_desc_container_min:eq(0)").show();
-    }else{
-        $(".vrshow_container_3_min .img_desc_container_min:eq(0)").hide();
-    }
-    $("#panoBtns").show();
-}
-
-function fullscreen(el){
-    //krpano.call("switch(fullscreen);");
-    //launchFullScreen(document.documentElement);
-    if($(el).hasClass('btn_fullscreen')){
-        launchFullScreen(document.getElementById('fullscreenid'));
-        var krpano = document.getElementById('krpanoSWFObject');
-        krpano.call("skin_showthumbs(false);");
-    }else{
-        exitFullscreen();
-    }
-    toggleFullscreenBtn(el);
-}
-
-function launchFullScreen(element) {
-    if(element.requestFullscreen) {
-        element.requestFullscreen();
-    } else if(element.mozRequestFullScreen) {
-        element.mozRequestFullScreen();
-    } else if(element.webkitRequestFullscreen) {
-        element.webkitRequestFullscreen();
-    } else if(element.msRequestFullscreen) {
-        element.msRequestFullscreen();
-    }
-}
-
-function exitFullscreen() {
-    if (document.exitFullscreen) {
-        document.exitFullscreen();
-    }
-    else if (document.mozCancelFullScreen) {
-        document.mozCancelFullScreen();
-    }
-    else if (document.webkitCancelFullScreen) {
-        document.webkitCancelFullScreen();
-    }
-    else if (document.msExitFullscreen) {
-        document.msExitFullscreen();
-    }
-}
-
-function toggleFullscreenBtn(el){
-    if($(el).hasClass("btn_fullscreen")){
-        $(el).removeClass("btn_fullscreen");
-        $(el).addClass("btn_fullscreen_off");
-    }else{
-        $(el).removeClass("btn_fullscreen_off");
-        $(el).addClass("btn_fullscreen");
-    }
-}
-
-function toggleBtns(flag){
-    if(flag){
-        $("#panoBtns").show();
-    }else{
-        $("#panoBtns").hide();
-        var krpano = document.getElementById('krpanoSWFObject');
-        krpano.call('skin_showthumbs(false);');
-    }
-}
-
-function showWebVR(){
-    var krpano = document.getElementById('krpanoSWFObject');
-    var webvr = krpano.get("webvr");
-    webvr.entervr();
-}
-
-
-
-function showthumbs(){
-    var krpano = document.getElementById('krpanoSWFObject');
-    krpano.call("skin_showthumbs();");
-}
-
-
-
-function hidePictext() {
-    $('#pictextModal').modal('hide');
-    toggleBtns(true);
-}
-
-function showPictext(title,content) {
-    toggleBtns(false);
-    //var data = $("body").data("panoData");
-    // $('#pictextWorkName').text('');
-    // $('#pictextContent').text('');
-    $('#pictextWorkName').text(title);
-    $('#pictextContent').html(imgtext_decode(content));
-    //$('#pictextContent').append(content);
-    $('#pictextModal').modal("show");
-}
-
-//krpano调用 初始化高级设置
-function initAdvancedSetting(sceneName){
-    //initViewSetting(sceneName);
-    initEffectSetting(sceneName);
-    initHotspotSetting(sceneName);
-    initSandTableSetting(sceneName);
-    initTourGuideSetting(sceneName);
-    //作者信息 TODO
-    // initAuthourInfo(sceneName);
-}
-
-function initTourGuideSetting(sceneName){
-    var krpano = document.getElementById('krpanoSWFObject');
-    var tourGuideObj = $("body").data("panoData").tour_guide;
-    if(tourGuideObj.points.length > 0){
-        $('#pano .vrshow_tour_btn').show();
-    }else{
-        $('#pano .vrshow_tour_btn').hide();
-    }
-}
-
-var lsTourGuideObj = null;
-function startTourGuide(){
-    toggleBtns(false);
-    lsTourGuideObj = $("body").data("panoData").tour_guide;
-    var krpano = document.getElementById('krpanoSWFObject');
-    //krpano.call('showlog(true)');
-    var curSceneName = krpano.get('xml.scene');
-    var firstPoint = lsTourGuideObj.points[0];
-    if(lsTourGuideObj.useStartImg){
-        krpano.call('show_tour_guide_alert('+lsTourGuideObj.startImgUrl+');');
-    }
-    if(this.sceneName != curSceneName){
-        krpano.call('loadscene('+firstPoint.sceneName+', null, MERGE);');
-    }
-    var curfov = krpano.get('view.fov');
-    krpano.call('lookto('+firstPoint.ath+','+firstPoint.atv+','+curfov+',smooth(720,-720,720),true,true,js(looktoCallBack('+1+')));');
-}
-
-function looktoCallBack(idx){
-    var krpano = document.getElementById('krpanoSWFObject');
-    if(idx < lsTourGuideObj.points.length){
-        var pointObj = lsTourGuideObj.points[idx];
-        var curSceneName = krpano.get('xml.scene');
-        var curfov = krpano.get('view.fov');
-        if(pointObj.sceneName != curSceneName){
-            krpano.call('loadscene('+pointObj.sceneName+', null, MERGE);');
-            krpano.call('lookto('+pointObj.ath+','+pointObj.atv+','+curfov+',smooth(720,-720,720),true,true,js(looktoCallBack('+(parseInt(idx)+1)+')));');
-        }else{
-            krpano.call('lookto('+pointObj.ath+','+pointObj.atv+','+curfov+',tween(easeInOutQuad,'+parseInt(pointObj.moveTime)+'),true,true,js(looktoCallBack('+(parseInt(idx)+1)+')));');
-        }
-    }else{
-        if(lsTourGuideObj.useEndImg){
-            krpano.call('show_tour_guide_alert('+lsTourGuideObj.endImgUrl+');');
-        }
-        toggleBtns(true);
-    }
-}
-
-function initSandTableSetting(sceneName){
-    var krpano = document.getElementById('krpanoSWFObject');
-    var sandTableObj = $("body").data("panoData").sand_table;
-    var existFlag = false;
-    $(sandTableObj.sandTables).each(function(idx){
-        if(this.sceneOpt[sceneName]){
-            //设置背景图片
-            krpano.set("layer[map].url",this.imgPath);
-            $.each(this.sceneOpt,function(sceneName,value){
-                var spotName = 'spot_'+sceneName;
-                addRadarSpot(spotName,value.krpLeft,value.krpTop);
-            });
-            var hlookatIncre = krpano.get('view.hlookat') - this.sceneOpt[sceneName].hlookat;
-            krpano.call('activatespot('+(parseFloat(this.sceneOpt[sceneName].rotate)+parseFloat(hlookatIncre))+');');
-            existFlag = true;
-            return false;
-        }
-    });
-    if(!existFlag){
-        $('.vrshow_radar_btn').hide();
-        krpano.set('layer[mapcontainer].visible',false);
-    }else{
-        $('.vrshow_radar_btn').show();
-        if(sandTableObj.isOpen){
-            krpano.set('layer[mapcontainer].visible',true);
-        }
-    }
-}
-
-function toggleKrpSandTable(){
-    var krpano = document.getElementById('krpanoSWFObject');
-    var isVisible = krpano.get('layer[mapcontainer].visible');
-    if(isVisible){
-        krpano.set('layer[mapcontainer].visible',false);
-    }else{
-        krpano.set('layer[mapcontainer].visible',true);
-    }
-}
-
-function addRadarSpot(name,x,y){
-    //console.log(x+','+y);
-    var krpano = document.getElementById('krpanoSWFObject');
-    krpano.call('addlayer('+name+');');
-    krpano.set('layer['+name+'].style','spot');
-    krpano.set('layer['+name+'].x',x);
-    krpano.set('layer['+name+'].y',y);
-    krpano.set('layer['+name+'].parent','radarmask');
-    krpano.call('layer['+name+'].loadstyle(spot);');
-    //krpano.set('layer['+name+'].keep','true');
-    //krpano.set('layer['+name+'].visible','true');
-}
-
-function initHotspotSetting(sceneName){
-    var krpano = document.getElementById('krpanoSWFObject');
-    var hotspotObj = ($("body").data("panoData").hotspot)[sceneName];
-    if(hotspotObj){
-        $.each(hotspotObj,function(key,value){
-            if(key == 'scene'){
-                $(value).each(function(idx){
-                    krpano.call('addSceneChangeHotSpot("'+this.imgPath+'","'+ (this.name) +'",'+this.linkedscene+','+(this.ath)+','+(this.atv)+','+this.isDynamic+',false,true)');
-                });
-            }else if(key == 'link'){
-                $(value).each(function(idx){
-                    krpano.call('addLinkHotSpot("'+this.imgPath+'","'+ (this.name) +'",'+html_encode(this.hotspotTitle)+','+(this.ath)+','+(this.atv)+','+this.isDynamic+',false,true,'+this.link+','+this.isShowSpotName+')');
-                });
-            }else if(key == 'image'){
-                $(value).each(function(idx){
-                    krpano.call('addImgHotSpot("'+this.imgPath+'","'+ (this.name) +'",'+html_encode(this.hotspotTitle)+','+(this.ath)+','+(this.atv)+','+this.isDynamic+',false,true,'+this.galleryName+','+this.isShowSpotName+')');
-                });
-            }else if(key == 'text'){
-                $(value).each(function(idx){
-                    krpano.call('addWordHotSpot("'+this.imgPath+'","'+ (this.name) +'",'+html_encode(this.hotspotTitle)+','+(this.ath)+','+(this.atv)+','+this.isDynamic+',false,true,'+html_encode(this.wordContent)+','+this.isShowSpotName+')');
-                });
-            }else if(key == 'voice'){
-                $(value).each(function(idx){
-                    krpano.call('addVoiceHotSpot("'+this.imgPath+'","'+ (this.name) +'",'+html_encode(this.hotspotTitle)+','+(this.ath)+','+(this.atv)+','+this.isDynamic+',false,true,'+this.musicSrc+','+this.isShowSpotName+')');
-                });
-            }else if(key == 'around'){
-                $(value).each(function(idx){
-                    krpano.call('addAroundHotSpot("'+this.imgPath+'","'+ (this.name) +'",'+html_encode(this.hotspotTitle)+','+(this.ath)+','+(this.atv)+','+this.isDynamic+',false,true,'+this.aroundPath+','+this.fileCount+','+this.isShowSpotName+')');
-                });
-            }else if(key == 'imgtext'){
-                $(value).each(function(idx){
-                    krpano.call('addImgTextHotSpot("'+this.imgPath+'","'+ (this.name) +'",'+html_encode(this.hotspotTitle)+','+(this.ath)+','+(this.atv)+','+this.isDynamic+',false,true,'+imgtext_encode(this.imgtext_wordContent)+','+this.isShowSpotName+')');
-                });
-            }else if(key == 'obj'){
-                $(value).each(function(idx){
-                    krpano.call('addObjHotSpot("'+this.imgPath+'","'+ (this.name) +'",'+html_encode(this.hotspotTitle)+','+(this.ath)+','+(this.atv)+','+this.isDynamic+',false,true,'+this.objid+','+this.isShowSpotName+')');
-                });
-            }else if(key == 'video'){
-                $(value).each(function(idx){
-                    krpano.call('addVideoHotSpot("'+this.imgPath+'","'+ (this.name) +'",'+html_encode(this.hotspotTitle)+','+(this.ath)+','+(this.atv)+','+this.isDynamic+',false,true,'+this.location+','+this.isShowSpotName+')');
-                });
-            }
-        });
-    }
-}
-
-function initEffectSetting(sceneName){
-    var krpano = document.getElementById('krpanoSWFObject');
-    var effectObj = null;
-    var effectData = $("body").data("panoData").special_effects;
-    $(effectData.effectSettings).each(function(idx){
-        if(this.sceneName == sceneName){
-            effectObj = this;
-            return false;
-        }
-    });
-    if(effectObj){
-        if(effectObj.isOpen){
-            if(effectObj.effectType == 'sunshine'){
-                //krpano.set('lensflares[obj].item[lensitemobj].scene',sceneName);
-                //krpano.set('lensflares[obj].item[lensitemobj].ath',effectObj.ath);
-                //krpano.set('lensflares[obj].item[lensitemobj].atv',effectObj.atv);
-                krpano.call('addLensflares('+effectObj.ath+','+effectObj.atv+')');
-            }else{
-                krpano.call('addEffect("'+effectObj.effectType+'","'+effectObj.effectImgPath+'")');
-            }
-        }
-    }
-}
-
-function littlePlaneOpen(sceneName){
-    var krpano = document.getElementById('krpanoSWFObject');
-    var lookatObj = null;
-    var angleData = $("body").data("panoData").angle_of_view;
-    $(angleData.viewSettings).each(function(idx){
-        if(this.sceneName == sceneName){
-            lookatObj = this;
-            return false;
-        }
-    });
-    if(lookatObj){
-        krpano.set('view.vlookat',lookatObj.vlookat);
-        krpano.set('view.hlookat',lookatObj.hlookat);
-        krpano.set('view.fov',lookatObj.fov);
-        krpano.set('view.fovmax',lookatObj.fovmax);
-        if(lookatObj.hlookatmin){
-            krpano.set('view.hlookatmin',lookatObj.hlookatmin);
-        }
-        if(lookatObj.hlookatmax){
-            krpano.set('view.hlookatmax',lookatObj.hlookatmax);
-        }
-        krpano.call('skin_setup_littleplanetintro('+lookatObj.fovmin+','+(-1*lookatObj.vlookatmax)+','+(-1*lookatObj.vlookatmin)+','+(lookatObj.keepView ? "off" : "0.0")+');');
-    }else{
-        krpano.call('skin_setup_littleplanetintro(5,-90,90,"0.0");');
-    }
-}
-
-//场景载入时加载视角设置
-function initViewSetting(sceneName){
-    var krpano = document.getElementById('krpanoSWFObject');
-    var lookatObj = null;
-    var angleData = $("body").data("panoData").angle_of_view;
-    $(angleData.viewSettings).each(function(idx){
-        if(this.sceneName == sceneName){
-            lookatObj = this;
-            return false;
-        }
-    });
-    if(lookatObj){
-        krpano.set('view.vlookat',lookatObj.vlookat);
-        krpano.set('view.hlookat',lookatObj.hlookat);
-        krpano.set('view.fov',lookatObj.fov);
-        krpano.set('view.fovmin',lookatObj.fovmin);
-        krpano.set('view.fovmax',lookatObj.fovmax);
-        krpano.set('view.vlookatmin',-1*lookatObj.vlookatmax);
-        krpano.set('view.vlookatmax',-1*lookatObj.vlookatmin);
-        krpano.set('autorotate.horizon',lookatObj.keepView ? "off" : "0.0");
-        if(lookatObj.hlookatmin){
-            krpano.set('view.hlookatmin',lookatObj.hlookatmin);
-        }
-        if(lookatObj.hlookatmax){
-            krpano.set('view.hlookatmax',lookatObj.hlookatmax);
-        }
-    }
-}
-
-function loadGallery(){
-    var krpano = document.getElementById('krpanoSWFObject');
-    var hotspotObj = $("body").data("panoData").hotspot;
-    //var xmlStr = '';
-    $.each(hotspotObj,function(sceneName,value){
-        if(value){
-            $(value.image).each(function(idx){
-                var xmlStr = '<gallery name="'+this.galleryName+'" title="">';
-                $(this.imgs).each(function(idx){
-                    xmlStr += '<img name="img'+idx+'" url="'+this.src+'" title="" />';
-                });
-                xmlStr += '</gallery>';
-                krpano.call('loadxml('+xmlStr+');');
-            });
-        }
-    });
-}
-
-function reloadGallery(gallery){
-    var krpano = document.getElementById('krpanoSWFObject');
-    var ua = window.navigator.userAgent.toLowerCase();
-    if(typeof(wx)!='undefined' && ua.match(/MicroMessenger/i) == 'micromessenger'){
-        //整合gallery的图片到数组 
-        var urls = new Array();
-        for(var i=0; i<krpano.get('gallery['+gallery+'].img.count'); i++){
-            urls.push(krpano.get('gallery['+gallery+'].img['+i+'].url'));
-        }
-        wx.previewImage({
-            current: krpano.get('gallery['+gallery+'].img[0].url'), // 当前显示图片的http链接
-            urls: urls // 需要预览的图片http链接列表
-        }); 
-    }
-    else{
-        toggleBtns();
-        krpano.call('show_gallery('+gallery+')');   
-    }
-}
-
-function getWorkPrivacyFlag(){
-    var privacy_flag = '0';
-
-    return privacy_flag;
-}
-
-
-
-function initPano(){//TODO
-   
-   if(data.pk_works_main == undefined){
-       window.location.href = '/404.html';
-       return ;
-   }
-   //微信分享
-   // initWxConfig(data);
-   // initQQShare(data);
-   //存储作者的信息
-   // _user_view_uuid = data.user_view_uuid;
-   _user_view_uuid = "admin";
-
-   _name = data.name;
-   //$("#thumb_img").attr("src",data.absolutelocation);
-   //var descContent='';
-   //if(data.profile){
-   //    descContent = data.profile;
-   //}else{
-   //    descContent = data.name;
-   //}
-   //$("head").append('<meta name="description" content="'+descContent+'"/>');
-
-   $("body").data("panoData",data);
-   pk_works_main = data.pk_works_main;
-   var settings = {};
-   settings["events[skin_events].onloadcomplete"] = "skin_showloading(false);";
-   settings["onstart"] = '';
-   
-   //是否开始时弹出场景选择
-   if (data.scenechoose=='1') {
-       settings["events[skin_events].onloadcomplete"] += "open_show_scene_thumb();";
-   }
-   
-   //统计人气
-   if(data.browsing_num!='0'){
-       $("#user_viewNum").text(parseInt(data.browsing_num)+1);
-   }else{
-       $("#user_viewNum").text("1");
-   }
-   //启动画面
-   var loadingObj = data.loading_img;
-   if (loadingObj && loadingObj.useLoading) {
-       settings["onstart"] += "showloadingimg('" + loadingObj.loadingImgPathWebsite + "','" + loadingObj.loadingImgPathMobile + "');";
-   }
-   for(var i=0 ; i<plugins_init_function.length;i++){
-        plugins_init_function[i](data,settings);
-   }
-   if(data.scene_group.sceneGroups.length>0) {
-         $(".vrshow_container_3_min .img_desc_container_min:eq(0) img").attr('src',data.scene_group.sceneGroups[0].imgPath);
-    }
-   settings['skin_settings.littleplanetintro'] = data.littleplanet=="1" ? true : false;
-
-   settings['autorotate.enabled'] = data.autorotate=="1" ? true : false;
-   embedpano({
-       swf: "tour.swf",
-       xml: "tour.xml",
-       target: "pano",
-       html5:'prefer',
-       //flash:'only',
-       wmode:'opaque-flash',
-       mobilescale:0.7,
-       vars: settings
-   });
-}
-function html_encode(str)
-  {
-    var s = "";
-    if (str.length == 0) return "";
-    s = str.replace(/\'/g, "&#39;");
-    s = s.replace(/\"/g, "&quot;");
-    s = s.replace(/\(/g, "(");
-    s = s.replace(/\)/g, ")");
-    s = s.replace(/,/g, ",");
-    return s;
-  }
-function imgtext_encode(str){
-     var s = "";
-    if (str.length == 0) return "";
-    s = str.replace(/\'/g, "&#39;");
-    s = s.replace(/\"/g, "&quot;");
-    s = s.replace(/\(/g, "(");
-    s = s.replace(/\)/g, ")");
-    s = s.replace(/\,/g,"%2C");
-    return s;
-}
-function imgtext_decode(str){
-     var s = "";
-    if (str.length == 0) return "";
-    s = str.replace(/&quot;/g, "\"");
-     s = s.replace(/%2C/g,",");
-    return s;
-}
-
-function showFullscreenBtn(){
-    $(".btn_fullscreen").show();
-}
-
-
-
-function radarRotate(sceneName,hlookat){
-
-}
-
-function openSpeechVoiceBtn(){
-    var voiceOff = $('.btn_music_off');
-    voiceOff.removeClass('btn_music_off');
-    voiceOff.addClass('btn_music');
-}
-var player ;
-function playvideo(url){
-   var location = window.location.href;
-   url = location.substring(0,location.lastIndexOf("\/")+1)+url;
-   player = new prismplayer({
-      id: "J_prismPlayer", // 容器id
-      source:url,
-      autoplay: true,      // 自动播放
-      width: "100%",       // 播放器宽度
-      height: "400px"      // 播放器高度
-    });
-   $("#video_player_modal").modal('show');
-}
-function close_video_player(){
-    player.pause();
-    $("#video_player_modal").modal('hide');
-}

文件差異過大導致無法顯示
+ 0 - 6448
全景看看/public/static/js/zui.js


+ 0 - 755
全景看看/public/static/lib/Tween.js

@@ -1,755 +0,0 @@
-/**
- * Tween.js - Licensed under the MIT license
- * https://github.com/sole/tween.js
- * ----------------------------------------------
- *
- * See https://github.com/sole/tween.js/graphs/contributors for the full list of contributors.
- * Thank you all, you're awesome!
- */
-
-// Date.now shim for (ahem) Internet Explo(d|r)er
-if ( Date.now === undefined ) {
-
-	Date.now = function () {
-
-		return new Date().valueOf();
-
-	};
-
-}
-
-var TWEEN = TWEEN || ( function () {
-
-	var _tweens = [];
-
-	return {
-
-		REVISION: '14',
-
-		getAll: function () {
-
-			return _tweens;
-
-		},
-
-		removeAll: function () {
-
-			_tweens = [];
-
-		},
-
-		add: function ( tween ) {
-
-			_tweens.push( tween );
-
-		},
-
-		remove: function ( tween ) {
-
-			var i = _tweens.indexOf( tween );
-
-			if ( i !== -1 ) {
-
-				_tweens.splice( i, 1 );
-
-			}
-
-		},
-
-		update: function ( time ) {
-
-			if ( _tweens.length === 0 ) return false;
-
-			var i = 0;
-
-			time = time !== undefined ? time : ( typeof window !== 'undefined' && window.performance !== undefined && window.performance.now !== undefined ? window.performance.now() : Date.now() );
-
-			while ( i < _tweens.length ) {
-
-				if ( _tweens[ i ].update( time ) ) {
-
-					i++;
-
-				} else {
-
-					_tweens.splice( i, 1 );
-
-				}
-
-			}
-
-			return true;
-
-		}
-	};
-
-} )();
-
-TWEEN.Tween = function ( object ) {
-
-	var _object = object;
-	var _valuesStart = {};
-	var _valuesEnd = {};
-	var _valuesStartRepeat = {};
-	var _duration = 1000;
-	var _repeat = 0;
-	var _yoyo = false;
-	var _isPlaying = false;
-	var _reversed = false;
-	var _delayTime = 0;
-	var _startTime = null;
-	var _easingFunction = TWEEN.Easing.Linear.None;
-	var _interpolationFunction = TWEEN.Interpolation.Linear;
-	var _chainedTweens = [];
-	var _onStartCallback = null;
-	var _onStartCallbackFired = false;
-	var _onUpdateCallback = null;
-	var _onCompleteCallback = null;
-	var _onStopCallback = null;
-
-	// Set all starting values present on the target object
-	for ( var field in object ) {
-
-		_valuesStart[ field ] = parseFloat(object[field], 10);
-
-	}
-
-	this.to = function ( properties, duration ) {
-
-		if ( duration !== undefined ) {
-
-			_duration = duration;
-
-		}
-
-		_valuesEnd = properties;
-
-		return this;
-
-	};
-
-	this.start = function ( time ) {
-
-		TWEEN.add( this );
-
-		_isPlaying = true;
-
-		_onStartCallbackFired = false;
-
-		_startTime = time !== undefined ? time : ( typeof window !== 'undefined' && window.performance !== undefined && window.performance.now !== undefined ? window.performance.now() : Date.now() );
-		_startTime += _delayTime;
-
-		for ( var property in _valuesEnd ) {
-
-			// check if an Array was provided as property value
-			if ( _valuesEnd[ property ] instanceof Array ) {
-
-				if ( _valuesEnd[ property ].length === 0 ) {
-
-					continue;
-
-				}
-
-				// create a local copy of the Array with the start value at the front
-				_valuesEnd[ property ] = [ _object[ property ] ].concat( _valuesEnd[ property ] );
-
-			}
-
-			_valuesStart[ property ] = _object[ property ];
-
-			if( ( _valuesStart[ property ] instanceof Array ) === false ) {
-				_valuesStart[ property ] *= 1.0; // Ensures we're using numbers, not strings
-			}
-
-			_valuesStartRepeat[ property ] = _valuesStart[ property ] || 0;
-
-		}
-
-		return this;
-
-	};
-
-	this.stop = function () {
-
-		if ( !_isPlaying ) {
-			return this;
-		}
-
-		TWEEN.remove( this );
-		_isPlaying = false;
-
-		if ( _onStopCallback !== null ) {
-
-			_onStopCallback.call( _object );
-
-		}
-
-		this.stopChainedTweens();
-		return this;
-
-	};
-
-	this.stopChainedTweens = function () {
-
-		for ( var i = 0, numChainedTweens = _chainedTweens.length; i < numChainedTweens; i++ ) {
-
-			_chainedTweens[ i ].stop();
-
-		}
-
-	};
-
-	this.delay = function ( amount ) {
-
-		_delayTime = amount;
-		return this;
-
-	};
-
-	this.repeat = function ( times ) {
-
-		_repeat = times;
-		return this;
-
-	};
-
-	this.yoyo = function( yoyo ) {
-
-		_yoyo = yoyo;
-		return this;
-
-	};
-
-
-	this.easing = function ( easing ) {
-
-		_easingFunction = easing;
-		return this;
-
-	};
-
-	this.interpolation = function ( interpolation ) {
-
-		_interpolationFunction = interpolation;
-		return this;
-
-	};
-
-	this.chain = function () {
-
-		_chainedTweens = arguments;
-		return this;
-
-	};
-
-	this.onStart = function ( callback ) {
-
-		_onStartCallback = callback;
-		return this;
-
-	};
-
-	this.onUpdate = function ( callback ) {
-
-		_onUpdateCallback = callback;
-		return this;
-
-	};
-
-	this.onComplete = function ( callback ) {
-
-		_onCompleteCallback = callback;
-		return this;
-
-	};
-
-	this.onStop = function ( callback ) {
-
-		_onStopCallback = callback;
-		return this;
-
-	};
-
-	this.update = function ( time ) {
-
-		var property;
-
-		if ( time < _startTime ) {
-
-			return true;
-
-		}
-
-		if ( _onStartCallbackFired === false ) {
-
-			if ( _onStartCallback !== null ) {
-
-				_onStartCallback.call( _object );
-
-			}
-
-			_onStartCallbackFired = true;
-
-		}
-
-		var elapsed = ( time - _startTime ) / _duration;
-		elapsed = elapsed > 1 ? 1 : elapsed;
-
-		var value = _easingFunction( elapsed );
-
-		for ( property in _valuesEnd ) {
-
-			var start = _valuesStart[ property ] || 0;
-			var end = _valuesEnd[ property ];
-
-			if ( end instanceof Array ) {
-
-				_object[ property ] = _interpolationFunction( end, value );
-
-			} else {
-
-				// Parses relative end values with start as base (e.g.: +10, -3)
-				if ( typeof(end) === "string" ) {
-					end = start + parseFloat(end, 10);
-				}
-
-				// protect against non numeric properties.
-				if ( typeof(end) === "number" ) {
-					_object[ property ] = start + ( end - start ) * value;
-				}
-
-			}
-
-		}
-
-		if ( _onUpdateCallback !== null ) {
-
-			_onUpdateCallback.call( _object, value );
-
-		}
-
-		if ( elapsed == 1 ) {
-
-			if ( _repeat > 0 ) {
-
-				if( isFinite( _repeat ) ) {
-					_repeat--;
-				}
-
-				// reassign starting values, restart by making startTime = now
-				for( property in _valuesStartRepeat ) {
-
-					if ( typeof( _valuesEnd[ property ] ) === "string" ) {
-						_valuesStartRepeat[ property ] = _valuesStartRepeat[ property ] + parseFloat(_valuesEnd[ property ], 10);
-					}
-
-					if (_yoyo) {
-						var tmp = _valuesStartRepeat[ property ];
-						_valuesStartRepeat[ property ] = _valuesEnd[ property ];
-						_valuesEnd[ property ] = tmp;
-					}
-
-					_valuesStart[ property ] = _valuesStartRepeat[ property ];
-
-				}
-
-				if (_yoyo) {
-					_reversed = !_reversed;
-				}
-
-				_startTime = time + _delayTime;
-
-				return true;
-
-			} else {
-
-				if ( _onCompleteCallback !== null ) {
-
-					_onCompleteCallback.call( _object );
-
-				}
-
-				for ( var i = 0, numChainedTweens = _chainedTweens.length; i < numChainedTweens; i++ ) {
-
-					_chainedTweens[ i ].start( time );
-
-				}
-
-				return false;
-
-			}
-
-		}
-
-		return true;
-
-	};
-
-};
-
-
-TWEEN.Easing = {
-
-	Linear: {
-
-		None: function ( k ) {
-
-			return k;
-
-		}
-
-	},
-
-	Quadratic: {
-
-		In: function ( k ) {
-
-			return k * k;
-
-		},
-
-		Out: function ( k ) {
-
-			return k * ( 2 - k );
-
-		},
-
-		InOut: function ( k ) {
-
-			if ( ( k *= 2 ) < 1 ) return 0.5 * k * k;
-			return - 0.5 * ( --k * ( k - 2 ) - 1 );
-
-		}
-
-	},
-
-	Cubic: {
-
-		In: function ( k ) {
-
-			return k * k * k;
-
-		},
-
-		Out: function ( k ) {
-
-			return --k * k * k + 1;
-
-		},
-
-		InOut: function ( k ) {
-
-			if ( ( k *= 2 ) < 1 ) return 0.5 * k * k * k;
-			return 0.5 * ( ( k -= 2 ) * k * k + 2 );
-
-		}
-
-	},
-
-	Quartic: {
-
-		In: function ( k ) {
-
-			return k * k * k * k;
-
-		},
-
-		Out: function ( k ) {
-
-			return 1 - ( --k * k * k * k );
-
-		},
-
-		InOut: function ( k ) {
-
-			if ( ( k *= 2 ) < 1) return 0.5 * k * k * k * k;
-			return - 0.5 * ( ( k -= 2 ) * k * k * k - 2 );
-
-		}
-
-	},
-
-	Quintic: {
-
-		In: function ( k ) {
-
-			return k * k * k * k * k;
-
-		},
-
-		Out: function ( k ) {
-
-			return --k * k * k * k * k + 1;
-
-		},
-
-		InOut: function ( k ) {
-
-			if ( ( k *= 2 ) < 1 ) return 0.5 * k * k * k * k * k;
-			return 0.5 * ( ( k -= 2 ) * k * k * k * k + 2 );
-
-		}
-
-	},
-
-	Sinusoidal: {
-
-		In: function ( k ) {
-
-			return 1 - Math.cos( k * Math.PI / 2 );
-
-		},
-
-		Out: function ( k ) {
-
-			return Math.sin( k * Math.PI / 2 );
-
-		},
-
-		InOut: function ( k ) {
-
-			return 0.5 * ( 1 - Math.cos( Math.PI * k ) );
-
-		}
-
-	},
-
-	Exponential: {
-
-		In: function ( k ) {
-
-			return k === 0 ? 0 : Math.pow( 1024, k - 1 );
-
-		},
-
-		Out: function ( k ) {
-
-			return k === 1 ? 1 : 1 - Math.pow( 2, - 10 * k );
-
-		},
-
-		InOut: function ( k ) {
-
-			if ( k === 0 ) return 0;
-			if ( k === 1 ) return 1;
-			if ( ( k *= 2 ) < 1 ) return 0.5 * Math.pow( 1024, k - 1 );
-			return 0.5 * ( - Math.pow( 2, - 10 * ( k - 1 ) ) + 2 );
-
-		}
-
-	},
-
-	Circular: {
-
-		In: function ( k ) {
-
-			return 1 - Math.sqrt( 1 - k * k );
-
-		},
-
-		Out: function ( k ) {
-
-			return Math.sqrt( 1 - ( --k * k ) );
-
-		},
-
-		InOut: function ( k ) {
-
-			if ( ( k *= 2 ) < 1) return - 0.5 * ( Math.sqrt( 1 - k * k) - 1);
-			return 0.5 * ( Math.sqrt( 1 - ( k -= 2) * k) + 1);
-
-		}
-
-	},
-
-	Elastic: {
-
-		In: function ( k ) {
-
-			var s, a = 0.1, p = 0.4;
-			if ( k === 0 ) return 0;
-			if ( k === 1 ) return 1;
-			if ( !a || a < 1 ) { a = 1; s = p / 4; }
-			else s = p * Math.asin( 1 / a ) / ( 2 * Math.PI );
-			return - ( a * Math.pow( 2, 10 * ( k -= 1 ) ) * Math.sin( ( k - s ) * ( 2 * Math.PI ) / p ) );
-
-		},
-
-		Out: function ( k ) {
-
-			var s, a = 0.1, p = 0.4;
-			if ( k === 0 ) return 0;
-			if ( k === 1 ) return 1;
-			if ( !a || a < 1 ) { a = 1; s = p / 4; }
-			else s = p * Math.asin( 1 / a ) / ( 2 * Math.PI );
-			return ( a * Math.pow( 2, - 10 * k) * Math.sin( ( k - s ) * ( 2 * Math.PI ) / p ) + 1 );
-
-		},
-
-		InOut: function ( k ) {
-
-			var s, a = 0.1, p = 0.4;
-			if ( k === 0 ) return 0;
-			if ( k === 1 ) return 1;
-			if ( !a || a < 1 ) { a = 1; s = p / 4; }
-			else s = p * Math.asin( 1 / a ) / ( 2 * Math.PI );
-			if ( ( k *= 2 ) < 1 ) return - 0.5 * ( a * Math.pow( 2, 10 * ( k -= 1 ) ) * Math.sin( ( k - s ) * ( 2 * Math.PI ) / p ) );
-			return a * Math.pow( 2, -10 * ( k -= 1 ) ) * Math.sin( ( k - s ) * ( 2 * Math.PI ) / p ) * 0.5 + 1;
-
-		}
-
-	},
-
-	Back: {
-
-		In: function ( k ) {
-
-			var s = 1.70158;
-			return k * k * ( ( s + 1 ) * k - s );
-
-		},
-
-		Out: function ( k ) {
-
-			var s = 1.70158;
-			return --k * k * ( ( s + 1 ) * k + s ) + 1;
-
-		},
-
-		InOut: function ( k ) {
-
-			var s = 1.70158 * 1.525;
-			if ( ( k *= 2 ) < 1 ) return 0.5 * ( k * k * ( ( s + 1 ) * k - s ) );
-			return 0.5 * ( ( k -= 2 ) * k * ( ( s + 1 ) * k + s ) + 2 );
-
-		}
-
-	},
-
-	Bounce: {
-
-		In: function ( k ) {
-
-			return 1 - TWEEN.Easing.Bounce.Out( 1 - k );
-
-		},
-
-		Out: function ( k ) {
-
-			if ( k < ( 1 / 2.75 ) ) {
-
-				return 7.5625 * k * k;
-
-			} else if ( k < ( 2 / 2.75 ) ) {
-
-				return 7.5625 * ( k -= ( 1.5 / 2.75 ) ) * k + 0.75;
-
-			} else if ( k < ( 2.5 / 2.75 ) ) {
-
-				return 7.5625 * ( k -= ( 2.25 / 2.75 ) ) * k + 0.9375;
-
-			} else {
-
-				return 7.5625 * ( k -= ( 2.625 / 2.75 ) ) * k + 0.984375;
-
-			}
-
-		},
-
-		InOut: function ( k ) {
-
-			if ( k < 0.5 ) return TWEEN.Easing.Bounce.In( k * 2 ) * 0.5;
-			return TWEEN.Easing.Bounce.Out( k * 2 - 1 ) * 0.5 + 0.5;
-
-		}
-
-	}
-
-};
-
-TWEEN.Interpolation = {
-
-	Linear: function ( v, k ) {
-
-		var m = v.length - 1, f = m * k, i = Math.floor( f ), fn = TWEEN.Interpolation.Utils.Linear;
-
-		if ( k < 0 ) return fn( v[ 0 ], v[ 1 ], f );
-		if ( k > 1 ) return fn( v[ m ], v[ m - 1 ], m - f );
-
-		return fn( v[ i ], v[ i + 1 > m ? m : i + 1 ], f - i );
-
-	},
-
-	Bezier: function ( v, k ) {
-
-		var b = 0, n = v.length - 1, pw = Math.pow, bn = TWEEN.Interpolation.Utils.Bernstein, i;
-
-		for ( i = 0; i <= n; i++ ) {
-			b += pw( 1 - k, n - i ) * pw( k, i ) * v[ i ] * bn( n, i );
-		}
-
-		return b;
-
-	},
-
-	CatmullRom: function ( v, k ) {
-
-		var m = v.length - 1, f = m * k, i = Math.floor( f ), fn = TWEEN.Interpolation.Utils.CatmullRom;
-
-		if ( v[ 0 ] === v[ m ] ) {
-
-			if ( k < 0 ) i = Math.floor( f = m * ( 1 + k ) );
-
-			return fn( v[ ( i - 1 + m ) % m ], v[ i ], v[ ( i + 1 ) % m ], v[ ( i + 2 ) % m ], f - i );
-
-		} else {
-
-			if ( k < 0 ) return v[ 0 ] - ( fn( v[ 0 ], v[ 0 ], v[ 1 ], v[ 1 ], -f ) - v[ 0 ] );
-			if ( k > 1 ) return v[ m ] - ( fn( v[ m ], v[ m ], v[ m - 1 ], v[ m - 1 ], f - m ) - v[ m ] );
-
-			return fn( v[ i ? i - 1 : 0 ], v[ i ], v[ m < i + 1 ? m : i + 1 ], v[ m < i + 2 ? m : i + 2 ], f - i );
-
-		}
-
-	},
-
-	Utils: {
-
-		Linear: function ( p0, p1, t ) {
-
-			return ( p1 - p0 ) * t + p0;
-
-		},
-
-		Bernstein: function ( n , i ) {
-
-			var fc = TWEEN.Interpolation.Utils.Factorial;
-			return fc( n ) / fc( i ) / fc( n - i );
-
-		},
-
-		Factorial: ( function () {
-
-			var a = [ 1 ];
-
-			return function ( n ) {
-
-				var s = 1, i;
-				if ( a[ n ] ) return a[ n ];
-				for ( i = n; i > 1; i-- ) s *= i;
-				return a[ n ] = s;
-
-			};
-
-		} )(),
-
-		CatmullRom: function ( p0, p1, p2, p3, t ) {
-
-			var v0 = ( p2 - p0 ) * 0.5, v1 = ( p3 - p1 ) * 0.5, t2 = t * t, t3 = t * t2;
-			return ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1;
-
-		}
-
-	}
-
-};

文件差異過大導致無法顯示
+ 0 - 11
全景看看/public/static/lib/animate/animate.min.css


+ 0 - 236
全景看看/public/static/lib/audio.min.1.0.4.js

@@ -1,236 +0,0 @@
-/*
- * $(selector).initAudioPlayer();
- * 不支持自动播放-想了下,用播放器样式的一般都不自动播放,影响用户体验。一般要自动播放的都不需要进度条之类的,需要一个切换按钮即可。
- * 不支持audio的浏览器直接return
- */
-
-(function($, window, document, undefined) {
-  // 播放器样式 - 替换到css更改样式即可
-  console.log("tete");
-  var onMobile = "ontouchstart" in window,
-    eStart = onMobile ? "touchstart" : "mousedown",
-    eMove = onMobile ? "touchmove" : "mousemove",
-    eCancel = onMobile ? "touchcancel" : "mouseup",
-    hackPrefixes = ["webkit", "moz", "ms", "o"],
-    hackHiddenProperty = getHackHidden();
-
-  $.fn.initAudioPlayer = function() {
-    // 遍历处理audio
-    console.log(this);
-    this.each(function() {
-      if (
-        $(this)
-          .prop("tagName")
-          .toLowerCase() !== "audio"
-      ) {
-        return;
-      }
-
-      var $this = $(this),
-        file = $this.attr("src"),
-        isSupport = false;
-
-      if (canFilePlay(file)) {
-        isSupport = true;
-      } else {
-        $this.find("source").each(function() {
-          if (canFilePlay($(this).attr("src"))) {
-            isSupport = true;
-            return false;
-          }
-        });
-      }
-
-      if (!isSupport) {
-        return;
-      }
-
-      // 添加播放器盒子
-      var $player = $(
-          '<div class="ppq-audio-player">' +
-            $("<div>")
-              .append($this.eq(0).clone())
-              .html() +
-            '<div class="play-pause-btn"><a href="javascript: void(0);" class="play-pause-icon"></a></div></div>'
-        ),
-        audioEle = $player.find("audio")[0];
-
-      $player.find("audio").addClass("audio-hidden");
-      $player.append(
-        '<div class="player-time player-time-current"></div>\
-				<div class="player-time player-time-duration"></div>\
-				<div class="player-bar">\
-					<div class="player-bar-loaded"></div>\
-					<div class="player-bar-played"></div>\
-				</div>'
-      );
-
-      var $bar = $player.find(".player-bar"),
-        $played = $player.find(".player-bar-played"),
-        $loaded = $player.find(".player-bar-loaded"),
-        $current = $player.find(".player-time-current"),
-        $duration = $player.find(".player-time-duration");
-
-      $current.html("00:00");
-      $duration.html("&hellip;");
-
-      initAudioEvents();
-      bindPageEvents();
-      $this.replaceWith($player);
-
-      function initAudioEvents() {
-        // 监听loadeddata,渲染进度条和时间
-        audioEle.addEventListener("loadeddata", function() {
-          var loadTimer = setInterval(function() {
-            if (audioEle.buffered.length < 1) {
-              return true;
-            }
-            $loaded.width(
-              (audioEle.buffered.end(0) / audioEle.duration) * 100 + "%"
-            );
-            if (
-              Math.floor(audioEle.buffered.end(0)) >=
-              Math.floor(audioEle.duration)
-            ) {
-              clearInterval(loadTimer);
-            }
-          }, 100);
-          $duration.html(
-            $.isNumeric(audioEle.duration)
-              ? convertTimeStr(audioEle.duration)
-              : "&hellip;"
-          );
-        });
-
-        // 监听timeupdate,更新时间和进度条
-        audioEle.addEventListener("timeupdate", function() {
-          $current.html(convertTimeStr(audioEle.currentTime));
-          $played.width((audioEle.currentTime / audioEle.duration) * 100 + "%");
-        });
-
-        // 监听ended,播放完恢复暂停状态
-        audioEle.addEventListener("ended", function() {
-          $player.removeClass("player-playing").addClass("player-paused");
-        });
-      }
-
-      function bindPageEvents() {
-        // 监听进度条touch,更新进度条和播放进度
-        $bar
-          .on(eStart, function(e) {
-            audioEle.currentTime = getCurrentTime(e);
-            $bar.on(eMove, function(e) {
-              audioEle.currentTime = getCurrentTime(e);
-            });
-          })
-          .on(eCancel, function() {
-            $bar.unbind(eMove);
-          });
-
-        // 监听播放暂停按钮click
-        $player.find(".play-pause-btn").on("click", function() {
-          if ($player.hasClass("player-playing")) {
-            $player.removeClass("player-playing").addClass("player-paused");
-            audioEle.pause();
-          } else {
-            $player.addClass("player-playing").removeClass("player-paused");
-            audioEle.play();
-          }
-          return false;
-        });
-      }
-
-      function getCurrentTime(e) {
-        var et = onMobile ? e.originalEvent.touches[0] : e;
-        return Math.round(
-          (audioEle.duration * (et.pageX - $bar.offset().left)) / $bar.width()
-        );
-      }
-
-      if (hackHiddenProperty) {
-        var evtname =
-          hackHiddenProperty.replace(/[H|h]idden/, "") + "visibilitychange";
-        document.addEventListener(
-          evtname,
-          function() {
-            if (isHidden() || getHackVisibilityState() === "hidden") {
-              $player.removeClass("player-playing").addClass("player-paused");
-              audioEle.pause();
-            }
-          },
-          false
-        );
-      }
-
-      window.addEventListener(
-        "beforeunload",
-        function() {
-          $player.removeClass("player-playing").addClass("player-paused");
-          audioEle.pause();
-        },
-        false
-      );
-    });
-    return this;
-  };
-
-  // 秒转为时间字符串
-  function convertTimeStr(secs) {
-    var m = Math.floor(secs / 60),
-      s = Math.floor(secs - m * 60);
-    return (m < 10 ? "0" + m : m) + ":" + (s < 10 ? "0" + s : s);
-  }
-
-  // 判断文件能不能播放
-  function canFilePlay(file) {
-    if (!file) {
-      return false;
-    }
-    var media = document.createElement("audio");
-    if (typeof media.canPlayType !== "function") {
-      return false;
-    }
-
-    var res = media.canPlayType(
-      "audio/" +
-        file
-          .split(".")
-          .pop()
-          .toLowerCase()
-    );
-    return res === "probably" || res === "maybe";
-  }
-
-  function getHackHidden() {
-    if ("hidden" in document) {
-      return "hidden";
-    }
-    for (var i = 0; i < hackPrefixes.length; i++) {
-      if (hackPrefixes[i] + "Hidden" in document) {
-        return hackPrefixes[i] + "Hidden";
-      }
-    }
-    return null;
-  }
-
-  function getHackVisibilityState() {
-    if ("visibilityState" in document) {
-      return "visibilityState";
-    }
-    for (var i = 0; i < hackPrefixes.length; i++) {
-      if (hackPrefixes[i] + "VisibilityState" in document) {
-        return hackPrefixes[i] + "VisibilityState";
-      }
-    }
-    return null;
-  }
-
-  function isHidden() {
-    var hide = getHackHidden();
-    if (!hide) {
-      return false;
-    }
-
-    return document[hide];
-  }
-})(jQuery, window, document);

文件差異過大導致無法顯示
+ 0 - 1
全景看看/public/static/lib/base64.min.js


文件差異過大導致無法顯示
+ 0 - 90
全景看看/public/static/lib/bytebuffer.min.js


+ 0 - 0
全景看看/public/static/lib/canvas2Image.js


部分文件因文件數量過多而無法顯示