aamin 1 年之前
父节点
当前提交
5fe74e97d6
共有 91 个文件被更改,包括 32372 次插入15 次删除
  1. 12 1
      hot/package-lock.json
  2. 2 1
      hot/package.json
  3. 50 7
      hot/src/views/Home.vue
  4. 23 0
      kan/.gitignore
  5. 19 0
      kan/README.md
  6. 5 0
      kan/babel.config.js
  7. 26352 0
      kan/package-lock.json
  8. 31 0
      kan/package.json
  9. 二进制
      kan/public/dotAudio/dingxiang.mp3
  10. 二进制
      kan/public/dotAudio/liyunsheng.mp3
  11. 二进制
      kan/public/img/diBiao.png
  12. 37 0
      kan/public/index.html
  13. 4 0
      kan/public/jquery-2.1.1.min.js
  14. 44 0
      kan/src/App.vue
  15. 二进制
      kan/src/assets/img/Goods/Rcode.png
  16. 二进制
      kan/src/assets/img/Goods/close.png
  17. 二进制
      kan/src/assets/img/Goods/icon2.png
  18. 二进制
      kan/src/assets/img/Goods/icon2Ac.png
  19. 二进制
      kan/src/assets/img/Goods/icon3.png
  20. 二进制
      kan/src/assets/img/Goods/icon3Ac.png
  21. 二进制
      kan/src/assets/img/Goods/icon4.png
  22. 二进制
      kan/src/assets/img/Goods/icon4Ac.png
  23. 二进制
      kan/src/assets/img/Goods/icon5.png
  24. 二进制
      kan/src/assets/img/Goods/icon5Ac.png
  25. 二进制
      kan/src/assets/img/Goods/icon6.png
  26. 二进制
      kan/src/assets/img/Goods/icon6Ac.png
  27. 二进制
      kan/src/assets/img/IMGerror.png
  28. 二进制
      kan/src/assets/img/Index/bg.jpg
  29. 二进制
      kan/src/assets/img/Index/btn1.png
  30. 二进制
      kan/src/assets/img/Index/btn2.png
  31. 二进制
      kan/src/assets/img/Index/flower.png
  32. 二进制
      kan/src/assets/img/Index/info.png
  33. 二进制
      kan/src/assets/img/Index/logo.png
  34. 二进制
      kan/src/assets/img/Index/mbg.jpg
  35. 二进制
      kan/src/assets/img/Index/mflower.png
  36. 二进制
      kan/src/assets/img/Index/minfo.png
  37. 二进制
      kan/src/assets/img/Index/mtitle.png
  38. 二进制
      kan/src/assets/img/Index/title.png
  39. 二进制
      kan/src/assets/img/LeftTop/delete.png
  40. 二进制
      kan/src/assets/img/LeftTop/icon1.png
  41. 二进制
      kan/src/assets/img/LeftTop/icon1Ac.png
  42. 二进制
      kan/src/assets/img/LeftTop/icon2.png
  43. 二进制
      kan/src/assets/img/LeftTop/icon2Ac.png
  44. 二进制
      kan/src/assets/img/LeftTop/icon3.png
  45. 二进制
      kan/src/assets/img/LeftTop/icon3Ac.png
  46. 二进制
      kan/src/assets/img/LeftTop/icon4.png
  47. 二进制
      kan/src/assets/img/LeftTop/icon4Ac.png
  48. 二进制
      kan/src/assets/img/LeftTop/icon5.png
  49. 二进制
      kan/src/assets/img/LeftTop/icon5Ac.png
  50. 二进制
      kan/src/assets/img/LeftTop/iconHot.png
  51. 二进制
      kan/src/assets/img/LeftTop/iconHotAc.png
  52. 二进制
      kan/src/assets/img/LeftTop/title_left.png
  53. 二进制
      kan/src/assets/img/LeftTop/title_right.png
  54. 二进制
      kan/src/assets/img/Union.png
  55. 二进制
      kan/src/assets/img/Union2.png
  56. 二进制
      kan/src/assets/img/back.png
  57. 二进制
      kan/src/assets/img/hotClose.png
  58. 二进制
      kan/src/assets/img/ico1.png
  59. 二进制
      kan/src/assets/img/ico2.png
  60. 二进制
      kan/src/assets/img/inco1.png
  61. 二进制
      kan/src/assets/img/inco1Ac.png
  62. 二进制
      kan/src/assets/img/inco2.png
  63. 二进制
      kan/src/assets/img/inco2Ac.png
  64. 二进制
      kan/src/assets/img/inco3.png
  65. 二进制
      kan/src/assets/img/inco3Ac.png
  66. 二进制
      kan/src/assets/img/loading.gif
  67. 二进制
      kan/src/assets/img/loading.png
  68. 二进制
      kan/src/assets/img/text1.png
  69. 二进制
      kan/src/assets/media/bacMusic.mp3
  70. 50 0
      kan/src/assets/style/base.css
  71. 215 0
      kan/src/components/Audio.vue
  72. 310 0
      kan/src/components/Guide.vue
  73. 607 0
      kan/src/components/Hot.vue
  74. 1163 0
      kan/src/components/Rbottom.vue
  75. 2931 0
      kan/src/components/data.js
  76. 13 0
      kan/src/components/swiper.css
  77. 14 0
      kan/src/components/swiper.js
  78. 28 0
      kan/src/main.js
  79. 29 0
      kan/src/router/index.js
  80. 20 0
      kan/src/utils/api.js
  81. 29 0
      kan/src/utils/browser.js
  82. 77 0
      kan/src/utils/http.js
  83. 11 0
      kan/src/utils/storage.js
  84. 67 0
      kan/src/views/Game.vue
  85. 57 0
      kan/src/views/Home.vue
  86. 136 0
      kan/src/views/Index.vue
  87. 19 0
      kan/vue.config.js
  88. 1 1
      scene/public/index.html
  89. 3 3
      scene/public/static/js/main_2020_show.js
  90. 二进制
      scene/src/assets/images/MOANDI.png
  91. 13 2
      scene/src/views/gui/menu.vue

+ 12 - 1
hot/package-lock.json

@@ -15,7 +15,8 @@
         "vue": "^2.6.11",
         "vue-awesome-swiper": "^4.1.1",
         "vue-lazyload": "^1.3.3",
-        "vue-router": "^3.2.0"
+        "vue-router": "^3.2.0",
+        "weixin-js-sdk": "^1.6.3"
       },
       "devDependencies": {
         "@vue/cli-plugin-babel": "~4.5.0",
@@ -14153,6 +14154,11 @@
         "node": ">=0.8.0"
       }
     },
+    "node_modules/weixin-js-sdk": {
+      "version": "1.6.3",
+      "resolved": "https://registry.npmmirror.com/weixin-js-sdk/-/weixin-js-sdk-1.6.3.tgz",
+      "integrity": "sha512-5jYNtVcxWmgHNqCLSPoX6vXab9G4RPDZx0klX8IsVwGjDTwx/UDmgfF7fkRMGguRpuFv0O7tk1jb+Oay2QiV1w=="
+    },
     "node_modules/which": {
       "version": "1.3.1",
       "resolved": "https://registry.npm.taobao.org/which/download/which-1.3.1.tgz?cache=0&sync_timestamp=1574116720213&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwhich%2Fdownload%2Fwhich-1.3.1.tgz",
@@ -26245,6 +26251,11 @@
       "integrity": "sha1-f4RzvIOd/YdgituV1+sHUhFXikI=",
       "dev": true
     },
+    "weixin-js-sdk": {
+      "version": "1.6.3",
+      "resolved": "https://registry.npmmirror.com/weixin-js-sdk/-/weixin-js-sdk-1.6.3.tgz",
+      "integrity": "sha512-5jYNtVcxWmgHNqCLSPoX6vXab9G4RPDZx0klX8IsVwGjDTwx/UDmgfF7fkRMGguRpuFv0O7tk1jb+Oay2QiV1w=="
+    },
     "which": {
       "version": "1.3.1",
       "resolved": "https://registry.npm.taobao.org/which/download/which-1.3.1.tgz?cache=0&sync_timestamp=1574116720213&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwhich%2Fdownload%2Fwhich-1.3.1.tgz",

+ 2 - 1
hot/package.json

@@ -15,7 +15,8 @@
     "vue": "^2.6.11",
     "vue-awesome-swiper": "^4.1.1",
     "vue-lazyload": "^1.3.3",
-    "vue-router": "^3.2.0"
+    "vue-router": "^3.2.0",
+    "weixin-js-sdk": "^1.6.3"
   },
   "devDependencies": {
     "@vue/cli-plugin-babel": "~4.5.0",

文件差异内容过多而无法显示
+ 50 - 7
hot/src/views/Home.vue


+ 23 - 0
kan/.gitignore

@@ -0,0 +1,23 @@
+.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?

+ 19 - 0
kan/README.md

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

+ 5 - 0
kan/babel.config.js

@@ -0,0 +1,5 @@
+module.exports = {
+  presets: [
+    '@vue/cli-plugin-babel/preset'
+  ]
+}

文件差异内容过多而无法显示
+ 26352 - 0
kan/package-lock.json


+ 31 - 0
kan/package.json

@@ -0,0 +1,31 @@
+{
+  "name": "aa",
+  "version": "0.1.0",
+  "private": true,
+  "scripts": {
+    "serve": "vue-cli-service serve",
+    "build": "vue-cli-service build"
+  },
+  "dependencies": {
+    "axios": "^1.5.1",
+    "core-js": "^3.6.5",
+    "element-ui": "^2.15.10",
+    "v-viewer": "^1.5.1",
+    "vue": "^2.6.11",
+    "vue-lazyload": "^1.3.3",
+    "vue-router": "^3.2.0"
+  },
+  "devDependencies": {
+    "@vue/cli-plugin-babel": "~4.5.13",
+    "@vue/cli-plugin-router": "~4.5.13",
+    "@vue/cli-service": "~4.5.13",
+    "less": "^3.0.4",
+    "less-loader": "^5.0.0",
+    "vue-template-compiler": "^2.6.11"
+  },
+  "browserslist": [
+    "> 1%",
+    "last 2 versions",
+    "not dead"
+  ]
+}

二进制
kan/public/dotAudio/dingxiang.mp3


二进制
kan/public/dotAudio/liyunsheng.mp3


二进制
kan/public/img/diBiao.png


+ 37 - 0
kan/public/index.html

@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<html lang="">
+
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no">
+  <!-- 浏览器不使用缓存 -->
+  <meta http-equiv="pragrma" content="no-cache" />
+  <meta http-equiv="cache-control" content="no-cache, no-store, must-revalidate" />
+  <meta http-equiv="expires" content="0" />
+
+  <link rel="icon" href="<%= BASE_URL %>favicon.ico">
+  <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="./sdk/kankan-sdk-deps.js"></script>
+  <script src="./sdk/kankan-sdk.js"></script> -->
+
+  <script src="./jquery-2.1.1.min.js"></script>
+
+</head>
+
+<body>
+  <noscript>
+    <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled.
+      Please enable it to continue.</strong>
+  </noscript>
+  <div id="app"></div>
+  <!-- built files will be auto injected -->
+</body>
+
+</html>

文件差异内容过多而无法显示
+ 4 - 0
kan/public/jquery-2.1.1.min.js


+ 44 - 0
kan/src/App.vue

@@ -0,0 +1,44 @@
+<template>
+  <div id="app">
+    <Router-view />
+  </div>
+</template>
+<script>
+
+export default {
+  created() {
+    document.addEventListener("contextmenu", function (e) {
+      e.preventDefault();
+    });
+    // 打包环境下
+    if (process.env.NODE_ENV !== "development") {
+      document.onkeydown = () => {
+        //禁用F12
+        if (window.event && window.event.keyCode == 123) {
+          return false;
+          //禁用ctrl+shift+i,
+        } else if (
+          window.event.ctrlKey &&
+          window.event.shiftKey &&
+          window.event.keyCode == 73
+        ) {
+          return false;
+          //屏蔽Shift+F10
+        } else if (window.event.shiftKey && window.event.keyCode == 121) {
+          return false;
+        }
+      };
+    }
+  },
+ 
+};
+</script>
+<style lang="less">
+#app ,body,html{
+  width: 100%;
+  height: 100%;
+  // min-width: 1600px;
+  // min-height: 800px;
+  overflow: hidden;
+}
+</style>

二进制
kan/src/assets/img/Goods/Rcode.png


二进制
kan/src/assets/img/Goods/close.png


二进制
kan/src/assets/img/Goods/icon2.png


二进制
kan/src/assets/img/Goods/icon2Ac.png


二进制
kan/src/assets/img/Goods/icon3.png


二进制
kan/src/assets/img/Goods/icon3Ac.png


二进制
kan/src/assets/img/Goods/icon4.png


二进制
kan/src/assets/img/Goods/icon4Ac.png


二进制
kan/src/assets/img/Goods/icon5.png


二进制
kan/src/assets/img/Goods/icon5Ac.png


二进制
kan/src/assets/img/Goods/icon6.png


二进制
kan/src/assets/img/Goods/icon6Ac.png


二进制
kan/src/assets/img/IMGerror.png


二进制
kan/src/assets/img/Index/bg.jpg


二进制
kan/src/assets/img/Index/btn1.png


二进制
kan/src/assets/img/Index/btn2.png


二进制
kan/src/assets/img/Index/flower.png


二进制
kan/src/assets/img/Index/info.png


二进制
kan/src/assets/img/Index/logo.png


二进制
kan/src/assets/img/Index/mbg.jpg


二进制
kan/src/assets/img/Index/mflower.png


二进制
kan/src/assets/img/Index/minfo.png


二进制
kan/src/assets/img/Index/mtitle.png


二进制
kan/src/assets/img/Index/title.png


二进制
kan/src/assets/img/LeftTop/delete.png


二进制
kan/src/assets/img/LeftTop/icon1.png


二进制
kan/src/assets/img/LeftTop/icon1Ac.png


二进制
kan/src/assets/img/LeftTop/icon2.png


二进制
kan/src/assets/img/LeftTop/icon2Ac.png


二进制
kan/src/assets/img/LeftTop/icon3.png


二进制
kan/src/assets/img/LeftTop/icon3Ac.png


二进制
kan/src/assets/img/LeftTop/icon4.png


二进制
kan/src/assets/img/LeftTop/icon4Ac.png


二进制
kan/src/assets/img/LeftTop/icon5.png


二进制
kan/src/assets/img/LeftTop/icon5Ac.png


二进制
kan/src/assets/img/LeftTop/iconHot.png


二进制
kan/src/assets/img/LeftTop/iconHotAc.png


二进制
kan/src/assets/img/LeftTop/title_left.png


二进制
kan/src/assets/img/LeftTop/title_right.png


二进制
kan/src/assets/img/Union.png


二进制
kan/src/assets/img/Union2.png


二进制
kan/src/assets/img/back.png


二进制
kan/src/assets/img/hotClose.png


二进制
kan/src/assets/img/ico1.png


二进制
kan/src/assets/img/ico2.png


二进制
kan/src/assets/img/inco1.png


二进制
kan/src/assets/img/inco1Ac.png


二进制
kan/src/assets/img/inco2.png


二进制
kan/src/assets/img/inco2Ac.png


二进制
kan/src/assets/img/inco3.png


二进制
kan/src/assets/img/inco3Ac.png


二进制
kan/src/assets/img/loading.gif


二进制
kan/src/assets/img/loading.png


二进制
kan/src/assets/img/text1.png


二进制
kan/src/assets/media/bacMusic.mp3


+ 50 - 0
kan/src/assets/style/base.css

@@ -0,0 +1,50 @@
+* {
+  margin: 0;
+  padding: 0;
+  box-sizing: border-box;
+  user-select: none;
+}
+
+/*修改提示文字的颜色*/
+input::-webkit-input-placeholder {
+  /* WebKit browsers */
+  color: #B7B7B7;
+}
+
+input:-moz-placeholder {
+  /* Mozilla Firefox 4 to 18 */
+  color: #B7B7B7;
+}
+
+input::-moz-placeholder {
+  /* Mozilla Firefox 19+ */
+  color: #B7B7B7;
+}
+
+input:-ms-input-placeholder {
+  /* Internet Explorer 10+ */
+  color: #B7B7B7;
+}
+
+.viewer-title {
+  display: none !important;
+}
+
+.viewer-prev {
+  display: none !important;
+}
+
+.viewer-next {
+  display: none !important;
+}
+
+.viewer-navbar {
+  display: none !important;
+}
+
+.viewer-close {
+  display: none !important;
+}
+.viewer-toolbar {
+  display: none !important;
+}

+ 215 - 0
kan/src/components/Audio.vue

@@ -0,0 +1,215 @@
+<template>
+  <div class="Audio">
+    <audio id="audioTag" :class="`noshow`" :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;
+    }
+  }
+}
+@media screen and (max-width:600px) {
+  .Audio {
+    width:80%;
+  }
+}
+</style>

+ 310 - 0
kan/src/components/Guide.vue

@@ -0,0 +1,310 @@
+<template>
+  <div class="Guide" :class="{ show }" v-show="show">
+    <div class="mainBox">
+      <div class="box1">
+        <!-- 左边按钮 -->
+        <div class="mainll mainrr">
+          <div
+            class="row"
+            v-for="item in leftList"
+            :key="item.id"
+            :class="{ rowAc: item.id === showId }"
+          >
+            <img
+              :src="require(`@/assets/img/LeftTop/icon${item.type}.png`)"
+              alt="" v-if="item.type<=5"
+            />
+             <img
+              :src="require(`@/assets/img/LeftTop/iconHot.png`)"
+              alt="" v-else
+            />
+            <p>{{ item.name }}</p>
+            <!-- 提示框 -->
+            <div class="tit">
+              <h3>
+                <span>{{ item.name }}</span>
+                <div class="ind">{{ showId }}/8</div>
+              </h3>
+              <div class="txt">{{ item.tit }}</div>
+              <div class="btn">
+                <div :class="{ noAc: showId === 1 }" @click="showId--">
+                  <i class="el-icon-arrow-left"></i>上一条
+                </div>
+                <div @click="show = false">跳过</div>
+                <div :class="{ noAc: showId === 8 }" @click="showId++">
+                  下一条<i class="el-icon-arrow-right"></i>
+                </div>
+              </div>
+            </div>
+          </div>
+        </div>
+        <!-- 右边按钮 -->
+        <div class="mainrr" v-show="showId === 7">
+          <!-- 提示框 -->
+          <div class="tit">
+            <h3>
+              <span>更多</span>
+              <div class="ind">{{ showId }}/8</div>
+            </h3>
+            <div class="txt">可回到首页,关闭/开启声音,点赞和分享等</div>
+            <div class="btn">
+              <div :class="{ noAc: showId === 1 }" @click="showId--">
+                <i class="el-icon-arrow-left"></i>上一条
+              </div>
+              <div @click="show = false">跳过</div>
+              <div :class="{ noAc: showId === 8 }" @click="showId++">
+                下一条<i class="el-icon-arrow-right"></i>
+              </div>
+            </div>
+          </div>
+          <div class="row" v-for="item in rightList" :key="item.id">
+            <img
+              :src="require(`@/assets/img/Goods/icon${item.type}.png`)"
+              alt=""
+            />
+            <p>{{ item.name }}</p>
+          </div>
+        </div>
+      </div>
+    </div>
+    <!-- 顶部楼层 -->
+    <div class="titMap" v-show="showId===8">
+      <!-- 提示框 -->
+      <div class="tit">
+        <h3>
+          <span>地图</span>
+          <div class="ind">{{ showId }}/8</div>
+        </h3>
+        <div class="txt">可切换楼层,或查看场景3D模型</div>
+        <div class="btn">
+          <div :class="{ noAc: showId === 1 }" @click="showId--">
+            <i class="el-icon-arrow-left"></i>上一条
+          </div>
+          <div @click="show = false">关闭</div>
+          <div :class="{ noAc: showId === 8 }" @click="showId++">
+            下一条<i class="el-icon-arrow-right"></i>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "Guide",
+  components: {},
+  data() {
+    return {
+      show: true,
+      showId: 1,
+      leftList: [
+        { id: 1, name: "自动漫游", tit: "自动游览线上场馆", type: 1 },
+        { id: 2, name: "场景导览", tit: "查看场景内所有镜头点位", type: 2 },
+        { id: 3, name: "全景漫游", tit: "手动自主漫游", type: 3 },
+        { id: 4, name: "迷你模型", tit: "查看场景3D模型", type: 4 },
+        { id: 5, name: "顶部俯视", tit: "查看场景平面图", type: 5 },
+        { id: 6, name: "热点列表", tit: "查看场景内所有交互热点", type: 6 },
+      ],
+      rightList: [
+       
+        { id: 8, name: "声音", type: 2 },
+        { id: 9, name: "点赞", type: 3 },
+        { id: 12, name: "阅读量", type: 6 },
+        { id: 10, name: "分享", type: 4 },
+        { id: 11, name: "全屏", type: 5 },
+      ],
+    };
+  },
+  computed: {},
+  watch: {
+    show(val){
+      if(!val) sessionStorage.setItem('YHT_SWKK_FLAG',1)
+    }
+  },
+  methods: {},
+  created() {
+    let flag= sessionStorage.getItem('YHT_SWKK_FLAG')
+    if(flag) this.show=false
+  },
+  mounted() {},
+  beforeCreate() {}, //生命周期 - 创建之前
+  beforeMount() {}, //生命周期 - 挂载之前
+  beforeUpdate() {}, //生命周期 - 更新之前
+  updated() {}, //生命周期 - 更新之后
+  beforeDestroy() {}, //生命周期 - 销毁之前
+  destroyed() {}, //生命周期 - 销毁完成
+  activated() {}, //如果页面有keep-alive缓存功能,这个函数会触发
+};
+</script>
+<style lang='less' scoped>
+.Guide {
+  opacity: 0;
+  pointer-events: none;
+  transition: opacity 0.3s;
+  position: absolute;
+  z-index: 20;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  background-color: rgba(0, 0, 0, 0.6);
+  backdrop-filter: blur(4px);
+  .mainBox {
+    position: absolute;
+    bottom: 30px;
+    right: 0px;
+    width: 100%;
+    .box1 {
+      padding: 0 25px;
+      width: 100%;
+      display: flex;
+      justify-content: space-between;
+      .mainrr {
+        display: flex;
+        position: relative;
+        .tit {
+          text-align: left;
+          z-index: 10;
+          position: absolute;
+          top: -180px;
+          left: 0;
+          width: 300px;
+          height: 180px;
+          background-image: url("../assets/img/Union.png");
+          background-size: 100% 100%;
+          color: #fff;
+          padding: 15px;
+          h3 {
+            font-size: 20px;
+            color: #d8b275;
+            display: flex;
+            justify-content: space-between;
+            align-items: center;
+            .ind {
+              color: #fff;
+              font-size: 12px;
+            }
+          }
+          .txt {
+            font-size: 14px;
+            margin: 12px 0;
+          }
+          .btn {
+            margin-top: 24px;
+            display: flex;
+            justify-content: space-around;
+            & > div {
+              cursor: pointer;
+              font-size: 14px;
+              padding: 6px 10px;
+              border: 1px solid #d8b275;
+              border-radius: 3px;
+              i {
+                padding-top: 2px;
+              }
+            }
+            .noAc {
+              border: 1px solid #ccc;
+              color: #ccc;
+              pointer-events: none;
+            }
+          }
+        }
+
+        .row {
+          position: relative;
+          width: 50px;
+          text-align: center;
+          margin-left: 18px;
+          color: #fff;
+
+          & > img {
+            width: 50px;
+          }
+
+          p {
+            font-size: 12px;
+          }
+        }
+      }
+
+      .mainll {
+        .row {
+          opacity: 0;
+          pointer-events: none;
+          width: 80px;
+          margin-left: 0;
+        }
+        .rowAc {
+          opacity: 1;
+          pointer-events: auto;
+        }
+      }
+    }
+  }
+  .titMap {
+    z-index: 10;
+    position: absolute;
+    right: 20px;
+    top: 28px;
+    width: 184px;
+    height: 219px;
+    background-image: url("../assets/img/titMap.jpg");
+    background-size: 100% 100%;
+    border-radius: 6px;
+    .tit {
+      text-align: left;
+      z-index: 10;
+      position: absolute;
+      bottom: -180px;
+      left: -200px;
+      width: 300px;
+      height: 180px;
+      background-image: url("../assets/img/Union2.png");
+      background-size: 100% 100%;
+      color: #fff;
+      padding: 30px 15px 0;
+      h3 {
+        font-size: 20px;
+        color: #d8b275;
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
+        .ind {
+          color: #fff;
+          font-size: 12px;
+        }
+      }
+      .txt {
+        font-size: 14px;
+        margin: 12px 0;
+      }
+      .btn {
+        margin-top: 24px;
+        display: flex;
+        justify-content: space-around;
+        & > div {
+          cursor: pointer;
+          font-size: 14px;
+          padding: 6px 10px;
+          border: 1px solid #d8b275;
+          border-radius: 3px;
+          i {
+            padding-top: 2px;
+          }
+        }
+        .noAc {
+          border: 1px solid #ccc;
+          color: #ccc;
+          pointer-events: none;
+        }
+      }
+    }
+  }
+}
+.show {
+  opacity: 1;
+  pointer-events: auto;
+}
+</style>

文件差异内容过多而无法显示
+ 607 - 0
kan/src/components/Hot.vue


文件差异内容过多而无法显示
+ 1163 - 0
kan/src/components/Rbottom.vue


文件差异内容过多而无法显示
+ 2931 - 0
kan/src/components/data.js


文件差异内容过多而无法显示
+ 13 - 0
kan/src/components/swiper.css


文件差异内容过多而无法显示
+ 14 - 0
kan/src/components/swiper.js


+ 28 - 0
kan/src/main.js

@@ -0,0 +1,28 @@
+import Vue from 'vue'
+import App from './App.vue'
+import router from './router'
+import ElementUI from 'element-ui';
+import 'element-ui/lib/theme-chalk/index.css';
+Vue.use(ElementUI);
+// 图片查看
+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
+let {axios} = require('./utils/http.js')
+
+Vue.prototype.$http = axios
+new Vue({
+  router,
+  render: h => h(App)
+}).$mount('#app')

+ 29 - 0
kan/src/router/index.js

@@ -0,0 +1,29 @@
+import Vue from 'vue'
+import VueRouter from 'vue-router'
+
+Vue.use(VueRouter)
+
+const routes = [
+  {
+    path: '/',
+    name: 'Index',
+    component: () => import('../views/Index.vue')
+  },
+  {
+    path: '/scene/:id',
+    name: 'Home',
+    component: () => import('../views/Home.vue')
+  },
+  {
+    path: '/game',
+    name: 'Game',
+    component: () => import('../views/Game.vue')
+  },
+
+]
+
+const router = new VueRouter({
+  routes
+})
+
+export default router

+ 20 - 0
kan/src/utils/api.js

@@ -0,0 +1,20 @@
+// export const baseURL = 'http://project.4dage.com:8036' //线上地址
+//export const baseURL ='http://192.168.20.55:8036' //本地地址
+
+// 本地化加上
+export const baseURL ='' //甲方有服务器的打包地址
+export const addNumAPI = (type) => {
+  fetch(`${baseURL}/api/visit/saveType`, {
+      method: "post",
+      body: JSON.stringify({
+        moduleType: "web",
+        type,
+      }),
+      headers: {
+        appId: "E9A27605CEB3FFAF48F4D7B86858A03D9868419F60B5A45027FB6E6867F4EDA9",
+        "Content-Type": "application/json",
+      },
+    })
+    .then((res) => res.text()) //请求得到的数据转换为text
+    .then((res) => {});
+}

+ 29 - 0
kan/src/utils/browser.js

@@ -0,0 +1,29 @@
+function versions () {
+    var u = window.navigator.userAgent
+    return {
+      // IE内核
+      trident: u.indexOf('Trident') > -1,
+      // opera内核
+      presto: u.indexOf('Presto') > -1,
+      // 苹果、谷歌内核
+      webKit: u.indexOf('AppleWebKit') > -1,
+      // 火狐内核
+      gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') === -1,
+      // 是否为移动终端 / Tablets use desktop version
+      mobile: (/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)) && !(/Tablet|iPad/i.test(navigator.userAgent)),
+      // ios终端
+      ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/),
+      // android终端或者uc浏览器
+      android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1,
+      // 是否为iPhone或者安卓QQ浏览器
+      iPhone: u.indexOf('iPhone') > -1 || u.indexOf('Mac') > -1,
+      // 是否为iPad
+      iPad: u.indexOf('iPad') > -1,
+      // 是否为web应用程序,没有头部与底部
+      webApp: u.indexOf('Safari') === -1,
+      // 是否为微信浏览器
+      weixin: ~u.indexOf('MicroMessenger')
+    }
+  }
+  
+  export default versions()

+ 77 - 0
kan/src/utils/http.js

@@ -0,0 +1,77 @@
+import axios from 'axios'
+
+// import Vue from 'vue'
+// let vue = new Vue()
+
+var isProduction = process.env.NODE_ENV === 'production'
+/* const serverName = isProduction ? '/museumcms/' : 'https://shmuseum.4dage.com/museumcms/' */
+const serverName = isProduction ? 'http://47.112.166.173:8088' : 'http://47.112.166.173:8088'
+axios.defaults.baseURL ='http://47.112.166.173:8088'
+// axios.defaults.withCredentials = true
+axios.defaults.headers['X-Requested-with'] = 'XMLHttpRequest'
+axios.defaults.headers['Content-Type'] = 'application/json'
+// axios.defaults.headers['Access-Control-Allow-Origin'] = '*'
+
+// 拦截请求,做登陆,或head处理
+axios.interceptors.request.use(
+  function (config) {
+    // vue.$showLoading()
+    if (config.method === 'post') {
+      config.data = {
+        ...config.data,
+        // rnd: Math.random()
+      }
+    } else if (config.method === 'get') {
+      config.params = {
+        // rnd: Math.random(),
+        ...config.params
+      }
+    }
+    return config
+  }, function (error) {
+    // 对请求错误做些什么
+    return Promise.reject(error)
+  }
+)
+
+// 拦截返回,做错误统一处理
+axios.interceptors.response.use(
+  response => {
+    let data = response.data
+    let code = Number(response.data.status)
+    // vue.$hideLoading()
+
+    switch (code) {
+      case -1:
+        break
+      case 4500:
+       
+        break
+      case 5001:
+        
+        break
+      case 5002:
+        
+        break
+      case 500:
+        
+        break
+      case 0:
+        break
+    }
+    // tryHideFullScreenLoading()
+    return data
+  },
+  error => {
+    if (error.response) {
+      switch (error.response.status) {
+        case 500:
+         
+          break
+      }
+    }
+    return Promise.reject(error)
+  }
+)
+
+export { serverName, axios }

+ 11 - 0
kan/src/utils/storage.js

@@ -0,0 +1,11 @@
+const KEY = 'YHT_HISDATA'
+export const setHotHis = (data) => {
+  localStorage.setItem(KEY, JSON.stringify(data))
+}
+export const getHotHis = () => {
+  const data = localStorage.getItem(KEY)
+  return data ? JSON.parse(data) : []
+}
+export const clearHotHis =()=>{
+  localStorage.removeItem(KEY)
+}

+ 67 - 0
kan/src/views/Game.vue

@@ -0,0 +1,67 @@
+<!--  -->
+<template>
+  <div class="Game">
+    <!-- <img class="backIcon" src="@/assets/img/back.png" alt="" @click="$router.go(-1)"> -->
+    <iframe
+      class="iframe"
+      src="https://www.4dmodel.com/SuperTwoCustom/MoLanDi/#/game"
+      frameborder="0"
+    ></iframe>
+  </div>
+</template>
+
+<script>
+//这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
+//例如:import 《组件名称》 from '《组件路径》';
+import browser from "@/utils/browser.js";
+export default {
+  //import引入的组件需要注入到对象中才能使用
+  components: {},
+  data() {
+    //这里存放数据
+    return {
+      isMobile: browser.mobile,
+      link: "MoLanTi_PC/index.html",
+      mlink: "MoLanTi_Phone/index.html",
+    };
+  },
+  //监听属性 类似于data概念
+  computed: {},
+  //监控data中的数据变化
+  watch: {},
+  //方法集合
+  methods: {},
+  //生命周期 - 创建完成(可以访问当前this实例)
+  created() {},
+  //生命周期 - 挂载完成(可以访问DOM元素)
+  mounted() {},
+  beforeCreate() {}, //生命周期 - 创建之前
+  beforeMount() {}, //生命周期 - 挂载之前
+  beforeUpdate() {}, //生命周期 - 更新之前
+  updated() {}, //生命周期 - 更新之后
+  beforeDestroy() {}, //生命周期 - 销毁之前
+  destroyed() {}, //生命周期 - 销毁完成
+  activated() {}, //如果页面有keep-alive缓存功能,这个函数会触发
+};
+</script>
+<style lang="less" scoped>
+//@import url(); 引入公共css类
+.Game {
+  width: 100%;
+  height: 100%;
+  overflow: hidden;
+  .backIcon {
+    position: absolute;
+    left: 2vw;
+    top: 2vw;
+    width: 6vw;
+    z-index: 2;
+    cursor: pointer;
+  }
+  .iframe {
+    width: 100%;
+    height: 100%;
+    overflow: hidden;
+  }
+}
+</style>

+ 57 - 0
kan/src/views/Home.vue

@@ -0,0 +1,57 @@
+<!--  -->
+<template>
+  <div class="Game">
+    <iframe
+      class="iframe"
+      src="https://houseoss.4dkankan.com/project/molandi/scene/index.html#/?m=1397"
+      frameborder="0"
+    ></iframe>
+  </div>
+</template>
+
+<script>
+import Hot from "../components/Hot.vue";
+// import Guide from "../components/Guide.vue";
+import Rbottom from "../components/Rbottom.vue";
+export default {
+  name: "Home",
+  //import引入的组件需要注入到对象中才能使用
+  components: { Rbottom, Hot },
+  data() {},
+  //监听属性 类似于data概念
+  computed: {},
+  //监控data中的数据变化
+  watch: {},
+  //方法集合
+  methods: {},
+  //生命周期 - 创建完成(可以访问当前this实例)
+  created() {},
+  //生命周期 - 挂载完成(可以访问DOM元素)
+  mounted() {},
+  beforeCreate() {}, //生命周期 - 创建之前
+  beforeMount() {}, //生命周期 - 挂载之前
+  beforeUpdate() {}, //生命周期 - 更新之前
+  updated() {}, //生命周期 - 更新之后
+  beforeDestroy() {
+    console.log(this.kankan);
+    this.kankan = null;
+  }, //生命周期 - 销毁之前
+  destroyed() {
+    console.log(this.kankan);
+    this.kankan = null;
+  }, //生命周期 - 销毁完成
+  activated() {}, //如果页面有keep-alive缓存功能,这个函数会触发
+};
+</script>
+<style lang="less" scoped>
+.Game {
+  width: 100%;
+  height: 100%;
+  overflow: hidden;
+  .iframe {
+    width: 100%;
+    height: 100%;
+    overflow: hidden;
+  }
+}
+</style>

+ 136 - 0
kan/src/views/Index.vue

@@ -0,0 +1,136 @@
+<!--  -->
+<template>
+<div :class="['Index',isMobile?'mbg':'bg']">
+    <img src="@/assets/img/Index/logo.png" alt="" class="logo">
+    <img src="@/assets/img/Index/title.png" alt="" class="title" v-if="!isMobile">
+    <img src="@/assets/img/Index/mtitle.png" alt="" class="title" v-else>
+    <img src="@/assets/img/Index/info.png" alt="" class="info" v-if="!isMobile">
+    <img src="@/assets/img/Index/minfo.png" alt="" class="info" v-else>
+    <img src="@/assets/img/Index/flower.png" alt="" class="flower" v-if="!isMobile">
+    <img src="@/assets/img/Index/mflower.png" alt="" class="mflower" v-else>
+    <div class="btns">
+        <img src="@/assets/img/Index/btn1.png" alt="" class="btn1" @click="$router.push({name:'Home',params:{id:'1'}})">
+        <img src="@/assets/img/Index/btn2.png" alt="" class="btn2" @click="$router.push('/game')">
+    </div>
+</div>
+</template>
+
+<script>
+//这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
+//例如:import 《组件名称》 from '《组件路径》';
+import browser from '@/utils/browser.js'
+export default {
+//import引入的组件需要注入到对象中才能使用
+components: {},
+data() {
+//这里存放数据
+return {
+    isMobile:browser.mobile,
+};
+},
+//监听属性 类似于data概念
+computed: {},
+//监控data中的数据变化
+watch: {},
+//方法集合
+methods: {
+
+},
+//生命周期 - 创建完成(可以访问当前this实例)
+created() {
+
+},
+//生命周期 - 挂载完成(可以访问DOM元素)
+mounted() {
+
+},
+beforeCreate() {}, //生命周期 - 创建之前
+beforeMount() {}, //生命周期 - 挂载之前
+beforeUpdate() {}, //生命周期 - 更新之前
+updated() {}, //生命周期 - 更新之后
+beforeDestroy() {}, //生命周期 - 销毁之前
+destroyed() {}, //生命周期 - 销毁完成
+activated() {}, //如果页面有keep-alive缓存功能,这个函数会触发
+}
+</script>
+<style lang='less' scoped>
+//@import url(); 引入公共css类
+    .Index {
+        width:100%;
+        height:100%;
+        &.bg {
+            background:url(../assets/img/Index/bg.jpg)center/100% no-repeat;
+            background-size:cover;
+        }
+        .logo {
+            width:19vw;
+            position:absolute;
+            top:5vh;
+            left:2vw;
+        }
+        .title {
+            width:29vw;
+            position:absolute;
+            left:12vw;
+            top:20vh;
+        }
+        .flower {
+            position:absolute;
+            bottom:0;
+            right:10vw;
+        }
+        .info {
+            position:absolute;
+            bottom:3vh;
+            left:10vw;
+        }
+        .btns {
+            position:absolute;
+            left:5vw;
+            bottom:22vh;
+            img {
+                width:9vw;
+                margin:0 4vw;
+                cursor:pointer;
+            }
+        }
+        &.mbg {
+            background:url(../assets/img/Index/mbg.jpg)center/100% no-repeat;
+            .logo {
+                width:41vw;
+                top:5vw;
+                left:5vw;
+            }
+            .mflower {
+                position:absolute;
+                width:87vw;
+                right:2vw;
+                bottom:15vh;
+            }
+            .title {
+                width:75vw;
+                top:10vh;
+            }
+            .info {
+                width:87vw;
+                left:0;
+                right:0;
+                bottom:2vh;
+                margin:auto;
+            }
+            .btns {
+                width:100%;
+                display:flex;
+                justify-content:center;
+                bottom:12vh;
+                left:0;
+                right:0;
+                margin:auto;
+                img {
+                    width:26vw;
+                    margin:0 10vw;
+                }
+            }
+        }
+    }
+</style>

+ 19 - 0
kan/vue.config.js

@@ -0,0 +1,19 @@
+module.exports = {
+
+  publicPath: './',
+  devServer: {
+    // proxy: {
+    //     '/api': {
+    //         // 此处的写法,目的是为了 将 /api 替换成 https://www.baidu.com/
+    //         target: 'http://47.112.166.173:8088/',
+    //         // 允许跨域
+    //         changeOrigin: true,
+    //         ws:true,
+    //         pathRewrite: {
+    //             '^/api': ''
+    //         }
+    //     }
+    // }
+    proxy: "http://47.112.166.173:8088/"
+}
+}

+ 1 - 1
scene/public/index.html

@@ -6,7 +6,7 @@
     <meta name="viewport"
         content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, minimal-ui">
     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
-    <title>中国大运河博物馆乔治.莫兰迪展厅</title>
+    <title>中国大运河博物馆乔治·莫兰迪展厅</title>
     <meta name="description" content="四维时代">
     <meta property="og:title" content="四维时代">
     <meta property="og:description" content="四维时代">

+ 3 - 3
scene/public/static/js/main_2020_show.js

@@ -14897,10 +14897,10 @@ window.Modernizr = function(n, e, t) {
                     }  
                     $("#volume").show();
                 }else if (g_version === "one"){
-                    SoundManager.setSrc('bgm', manage.dealURL( g_Prefix+"/audio/"+"audio"+window.number + "/background.mp3"))
-                    
-                    
+                    SoundManager.setSrc('bgm', manage.dealURL( g_Prefix+"/audio/"+"audio"+window.number + "/background.mp3"))   
                     $("#volume").show();
+                }else {
+                    $("#volume").hide();
                 }
 
                 //隐藏公司logo

二进制
scene/src/assets/images/MOANDI.png


+ 13 - 2
scene/src/views/gui/menu.vue

@@ -271,7 +271,7 @@
         </div>
 
         <!-- 全屏 -->
-        <div class="toHomeBox">
+        <div class="toHomeBox quanping">
           <!-- 鼠标移入的显示 -->
           <!-- <div class="hoverTit">全屏</div> -->
           <!-- 打开全屏 -->
@@ -369,7 +369,7 @@ export default {
     onVisit() {
       axios
         .get("https://count.4dage.com/api/count/saveVisit/KJ-vAo7DRnQVeK")
-        .then((res) => {});
+        .then(() => {});
     },
     switchBGM(flag) {
       this.musicState = flag;
@@ -695,10 +695,21 @@ export default {
   }
   .btmText {
     font-size: 12px;
+    width: 60px;
     bottom: -20%;
     border-radius: 50px;
     height: 19px;
     line-height: 19px;
   }
+  .quanping {
+    display: none;
+  }
+}
+
+// 小屏幕
+@media screen and (max-width: 350px) {
+  .btmText {
+    font-size: 12px;
+  }
 }
 </style>