aamin hai 1 ano
achega
2ad534d10b
Modificáronse 100 ficheiros con 28242 adicións e 0 borrados
  1. 3 0
      hot/.browserslistrc
  2. 17 0
      hot/.eslintrc.js
  3. 23 0
      hot/.gitignore
  4. 24 0
      hot/README.md
  5. 5 0
      hot/babel.config.js
  6. 26499 0
      hot/package-lock.json
  7. 32 0
      hot/package.json
  8. 16 0
      hot/public/index.html
  9. 22 0
      hot/src/App.vue
  10. 34 0
      hot/src/assets/base.css
  11. BIN=BIN
      hot/src/assets/images/IMGerror.png
  12. BIN=BIN
      hot/src/assets/images/loading.gif
  13. BIN=BIN
      hot/src/assets/images/pc/audio.png
  14. BIN=BIN
      hot/src/assets/images/pc/audioAc.png
  15. BIN=BIN
      hot/src/assets/images/pc/icon-left.png
  16. BIN=BIN
      hot/src/assets/images/pc/icon-right.png
  17. BIN=BIN
      hot/src/assets/images/pc/icon1.png
  18. BIN=BIN
      hot/src/assets/images/pc/icon1Ac.png
  19. BIN=BIN
      hot/src/assets/images/pc/icon2.png
  20. BIN=BIN
      hot/src/assets/images/pc/icon2Ac.png
  21. BIN=BIN
      hot/src/assets/images/pc/icon3.png
  22. BIN=BIN
      hot/src/assets/images/pc/icon3Ac.png
  23. BIN=BIN
      hot/src/assets/images/pc/left.png
  24. BIN=BIN
      hot/src/assets/images/pc/right.png
  25. BIN=BIN
      hot/src/assets/logo.png
  26. 59 0
      hot/src/components/HelloWorld.vue
  27. 23 0
      hot/src/main.js
  28. 27 0
      hot/src/router/index.js
  29. 29 0
      hot/src/utils/browser.js
  30. 0 0
      hot/src/utils/http.js
  31. 5 0
      hot/src/views/About.vue
  32. 567 0
      hot/src/views/Home.vue
  33. 3 0
      hot/vue.config.js
  34. BIN=BIN
      netbook/bg.jpg
  35. 854 0
      netbook/index.html
  36. BIN=BIN
      netbook/pages/1/1.png
  37. BIN=BIN
      netbook/pages/1/10.png
  38. BIN=BIN
      netbook/pages/1/11.png
  39. BIN=BIN
      netbook/pages/1/12.png
  40. BIN=BIN
      netbook/pages/1/13.png
  41. BIN=BIN
      netbook/pages/1/14.png
  42. BIN=BIN
      netbook/pages/1/15.png
  43. BIN=BIN
      netbook/pages/1/16.png
  44. BIN=BIN
      netbook/pages/1/17.png
  45. BIN=BIN
      netbook/pages/1/18.png
  46. BIN=BIN
      netbook/pages/1/19.png
  47. BIN=BIN
      netbook/pages/1/2.png
  48. BIN=BIN
      netbook/pages/1/20.png
  49. BIN=BIN
      netbook/pages/1/21.png
  50. BIN=BIN
      netbook/pages/1/22.png
  51. BIN=BIN
      netbook/pages/1/23.png
  52. BIN=BIN
      netbook/pages/1/24.png
  53. BIN=BIN
      netbook/pages/1/25.png
  54. BIN=BIN
      netbook/pages/1/26.png
  55. BIN=BIN
      netbook/pages/1/27.png
  56. BIN=BIN
      netbook/pages/1/28.png
  57. BIN=BIN
      netbook/pages/1/29.png
  58. BIN=BIN
      netbook/pages/1/3.png
  59. BIN=BIN
      netbook/pages/1/30.png
  60. BIN=BIN
      netbook/pages/1/31.png
  61. BIN=BIN
      netbook/pages/1/32.png
  62. BIN=BIN
      netbook/pages/1/33.png
  63. BIN=BIN
      netbook/pages/1/34.png
  64. BIN=BIN
      netbook/pages/1/35.png
  65. BIN=BIN
      netbook/pages/1/36.png
  66. BIN=BIN
      netbook/pages/1/37.png
  67. BIN=BIN
      netbook/pages/1/38.png
  68. BIN=BIN
      netbook/pages/1/39.png
  69. BIN=BIN
      netbook/pages/1/4.png
  70. BIN=BIN
      netbook/pages/1/40.png
  71. BIN=BIN
      netbook/pages/1/41.png
  72. BIN=BIN
      netbook/pages/1/42.png
  73. BIN=BIN
      netbook/pages/1/43.png
  74. BIN=BIN
      netbook/pages/1/44.png
  75. BIN=BIN
      netbook/pages/1/45.png
  76. BIN=BIN
      netbook/pages/1/46.png
  77. BIN=BIN
      netbook/pages/1/47.png
  78. BIN=BIN
      netbook/pages/1/48.png
  79. BIN=BIN
      netbook/pages/1/49.png
  80. BIN=BIN
      netbook/pages/1/5.png
  81. BIN=BIN
      netbook/pages/1/50.png
  82. BIN=BIN
      netbook/pages/1/51.png
  83. BIN=BIN
      netbook/pages/1/52.png
  84. BIN=BIN
      netbook/pages/1/53.png
  85. BIN=BIN
      netbook/pages/1/54.png
  86. BIN=BIN
      netbook/pages/1/55.png
  87. BIN=BIN
      netbook/pages/1/56.png
  88. BIN=BIN
      netbook/pages/1/57.png
  89. BIN=BIN
      netbook/pages/1/58.png
  90. BIN=BIN
      netbook/pages/1/59.png
  91. BIN=BIN
      netbook/pages/1/6.png
  92. BIN=BIN
      netbook/pages/1/60.png
  93. BIN=BIN
      netbook/pages/1/61.png
  94. BIN=BIN
      netbook/pages/1/62.png
  95. BIN=BIN
      netbook/pages/1/63.png
  96. BIN=BIN
      netbook/pages/1/64.png
  97. BIN=BIN
      netbook/pages/1/65.png
  98. BIN=BIN
      netbook/pages/1/66.png
  99. BIN=BIN
      netbook/pages/1/67.png
  100. 0 0
      netbook/pages/1/68.png

+ 3 - 0
hot/.browserslistrc

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

+ 17 - 0
hot/.eslintrc.js

@@ -0,0 +1,17 @@
+module.exports = {
+  root: true,
+  env: {
+    node: 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'
+  }
+}

+ 23 - 0
hot/.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?

+ 24 - 0
hot/README.md

@@ -0,0 +1,24 @@
+# hotspot
+
+## 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/).

+ 5 - 0
hot/babel.config.js

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

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 26499 - 0
hot/package-lock.json


+ 32 - 0
hot/package.json

@@ -0,0 +1,32 @@
+{
+  "name": "hotspot",
+  "version": "0.1.0",
+  "private": true,
+  "scripts": {
+    "serve": "vue-cli-service serve",
+    "build": "vue-cli-service build",
+    "lint": "vue-cli-service lint"
+  },
+  "dependencies": {
+    "axios": "^0.20.0",
+    "core-js": "^3.6.5",
+    "swiper": "^5.4.5",
+    "v-viewer": "^1.5.1",
+    "vue": "^2.6.11",
+    "vue-awesome-swiper": "^4.1.1",
+    "vue-lazyload": "^1.3.3",
+    "vue-router": "^3.2.0"
+  },
+  "devDependencies": {
+    "@vue/cli-plugin-babel": "~4.5.0",
+    "@vue/cli-plugin-eslint": "~4.5.0",
+    "@vue/cli-plugin-router": "~4.5.0",
+    "@vue/cli-service": "~4.5.0",
+    "babel-eslint": "^10.1.0",
+    "eslint": "^6.7.2",
+    "eslint-plugin-vue": "^6.2.2",
+    "less": "^3.0.4",
+    "less-loader": "^5.0.0",
+    "vue-template-compiler": "^2.6.11"
+  }
+}

+ 16 - 0
hot/public/index.html

@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html lang="en">
+  <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">
+    <title><%= htmlWebpackPlugin.options.title %></title>
+  </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>

+ 22 - 0
hot/src/App.vue

@@ -0,0 +1,22 @@
+<template>
+  <div id="app">
+    <router-view/>
+  </div>
+</template>
+
+<style lang="less">
+html,body{
+  width: 100%;
+  height: 100%;
+  overflow: hidden;
+}
+*{
+  margin: 0;
+  padding: 0;
+}
+#app {
+  width: 100%;
+  height: 100%;
+}
+
+</style>

+ 34 - 0
hot/src/assets/base.css

@@ -0,0 +1,34 @@
+* {
+  margin: 0;
+  padding: 0;
+  box-sizing: border-box;
+}
+body{
+  user-select: none;
+}
+.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;
+}
+
+@media screen and (max-width: 800px) {
+  .viewer-footer {
+    bottom: auto;
+    top: 10px;
+  }
+}

BIN=BIN
hot/src/assets/images/IMGerror.png


BIN=BIN
hot/src/assets/images/loading.gif


BIN=BIN
hot/src/assets/images/pc/audio.png


BIN=BIN
hot/src/assets/images/pc/audioAc.png


BIN=BIN
hot/src/assets/images/pc/icon-left.png


BIN=BIN
hot/src/assets/images/pc/icon-right.png


BIN=BIN
hot/src/assets/images/pc/icon1.png


BIN=BIN
hot/src/assets/images/pc/icon1Ac.png


BIN=BIN
hot/src/assets/images/pc/icon2.png


BIN=BIN
hot/src/assets/images/pc/icon2Ac.png


BIN=BIN
hot/src/assets/images/pc/icon3.png


BIN=BIN
hot/src/assets/images/pc/icon3Ac.png


BIN=BIN
hot/src/assets/images/pc/left.png


BIN=BIN
hot/src/assets/images/pc/right.png


BIN=BIN
hot/src/assets/logo.png


+ 59 - 0
hot/src/components/HelloWorld.vue

@@ -0,0 +1,59 @@
+<template>
+  <div class="hello">
+    <h1>{{ msg }}</h1>
+    <p>
+      For a guide and recipes on how to configure / customize this project,<br>
+      check out the
+      <a href="https://cli.vuejs.org" target="_blank" rel="noopener">vue-cli documentation</a>.
+    </p>
+    <h3>Installed CLI Plugins</h3>
+    <ul>
+      <li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-babel" target="_blank" rel="noopener">babel</a></li>
+      <li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-router" target="_blank" rel="noopener">router</a></li>
+      <li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-eslint" target="_blank" rel="noopener">eslint</a></li>
+    </ul>
+    <h3>Essential Links</h3>
+    <ul>
+      <li><a href="https://vuejs.org" target="_blank" rel="noopener">Core Docs</a></li>
+      <li><a href="https://forum.vuejs.org" target="_blank" rel="noopener">Forum</a></li>
+      <li><a href="https://chat.vuejs.org" target="_blank" rel="noopener">Community Chat</a></li>
+      <li><a href="https://twitter.com/vuejs" target="_blank" rel="noopener">Twitter</a></li>
+      <li><a href="https://news.vuejs.org" target="_blank" rel="noopener">News</a></li>
+    </ul>
+    <h3>Ecosystem</h3>
+    <ul>
+      <li><a href="https://router.vuejs.org" target="_blank" rel="noopener">vue-router</a></li>
+      <li><a href="https://vuex.vuejs.org" target="_blank" rel="noopener">vuex</a></li>
+      <li><a href="https://github.com/vuejs/vue-devtools#vue-devtools" target="_blank" rel="noopener">vue-devtools</a></li>
+      <li><a href="https://vue-loader.vuejs.org" target="_blank" rel="noopener">vue-loader</a></li>
+      <li><a href="https://github.com/vuejs/awesome-vue" target="_blank" rel="noopener">awesome-vue</a></li>
+    </ul>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'HelloWorld',
+  props: {
+    msg: String
+  }
+}
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style scoped lang="less">
+h3 {
+  margin: 40px 0 0;
+}
+ul {
+  list-style-type: none;
+  padding: 0;
+}
+li {
+  display: inline-block;
+  margin: 0 10px;
+}
+a {
+  color: #42b983;
+}
+</style>

+ 23 - 0
hot/src/main.js

@@ -0,0 +1,23 @@
+import Vue from 'vue'
+import App from './App.vue'
+import router from './router'
+import axios from 'axios'
+import 'viewerjs/dist/viewer.css'
+import Viewer from 'v-viewer'
+// 图片懒加载
+import VueLazyLoad from 'vue-lazyload'
+Vue.use(VueLazyLoad, {
+  error: require('@/assets/images/IMGerror.png'),
+  loading: require('@/assets/images/loading.gif')
+})
+
+Vue.config.productionTip = false
+Vue.prototype.$http = axios
+
+Vue.use(Viewer)
+
+import './assets/base.css'
+new Vue({
+  router,
+  render: h => h(App)
+}).$mount('#app')

+ 27 - 0
hot/src/router/index.js

@@ -0,0 +1,27 @@
+import Vue from 'vue'
+import VueRouter from 'vue-router'
+import Home from '../views/Home.vue'
+
+Vue.use(VueRouter)
+
+const routes = [
+  {
+    path: '/',
+    name: 'Home',
+    component: Home
+  },
+  {
+    path: '/about',
+    name: 'About',
+    // route level code-splitting
+    // this generates a separate chunk (about.[hash].js) for this route
+    // which is lazy-loaded when the route is visited.
+    component: () => import(/* webpackChunkName: "about" */ '../views/About.vue')
+  }
+]
+
+const router = new VueRouter({
+  routes
+})
+
+export default router

+ 29 - 0
hot/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()

+ 0 - 0
hot/src/utils/http.js


+ 5 - 0
hot/src/views/About.vue

@@ -0,0 +1,5 @@
+<template>
+  <div class="about">
+    <h1>This is an about page</h1>
+  </div>
+</template>

+ 567 - 0
hot/src/views/Home.vue

@@ -0,0 +1,567 @@
+<template>
+  <div class="home">
+    <div class="main">
+      <div class="mainCon" v-show="!oneTxt">
+        <!-- 音频播放器 -->
+        <audio id="myAudio" v-if="audio" v-show="isOneAduio" :src="audio" controls></audio>
+        <!-- 音频图标 -->
+        <div class="audioIcon" v-if="audio && !isOneAduio" @click="audioSta = !audioSta"
+          :title="audioSta ? '关闭音频' : '打开音频'">
+          <img :src="require(`@/assets/images/pc/audio${audioSta ? 'Ac' : ''}.png`)
+            " alt="" />
+        </div>
+
+        <!-- 如果只有一个模块 -->
+        <div class="oneTabNum" v-if="flooTab.length === 1 && data[myType] && data[myType].length">
+          {{ myInd + 1 }} / {{ data[myType].length }}
+        </div>
+
+        <!-- 底部的tab -->
+        <div class="flooTabBox" v-if="flooTab.length > 1">
+          <div @click="myType = item.type" class="tabRow" :class="{ tabRowAc: myType === item.type }"
+            v-for="item in flooTab" :key="item.id">
+            <img :src="require(`@/assets/images/pc/icon${item.id}${myType === item.type ? 'Ac' : ''
+              }.png`)
+              " alt="" />
+            {{ item.name }}
+            <span v-if="data[item.type] &&
+              data[item.type].length &&
+              data[item.type].length > 1
+              ">{{ item.type === myType ? myInd + 1 + "/" : null
+  }}{{ data[item.type].length }}</span>
+          </div>
+        </div>
+
+        <!-- 主要内容 -->
+
+        <div class="contenBoxMain">
+          <div class="contenBox" :class="{ contenBoxAc: index === myInd }" v-for="(item, index) in data[myType]"
+            :key="myType === 'video' ? item.url : item">
+            <!-- 模型页面 -->
+            <div class="modelBox" v-if="myType === 'model'">
+              <iframe :src="item" frameborder="0" v-if="index === myInd"></iframe>
+            </div>
+            <!-- 视频页面 -->
+            <div class="videoBox" v-else-if="myType === 'video'">
+              <video controls :src="item.url" v-if="index === myInd"></video>
+            </div>
+            <!-- 图片页面 -->
+            <div class="imgBox" v-else-if="myType === 'img'">
+              <div class="smImgBox" @click="lookImg(item)">
+                <img v-lazy="item" alt="" />
+              </div>
+            </div>
+          </div>
+          <!-- 左右箭头 -->
+          <div @click="cutMyInd(-1, myInd === 0)" class="leftJJ awccJJ" :class="{ noClick: myInd === 0 }"
+            v-if="data[myType] && data[myType].length > 1"></div>
+          <div @click="cutMyInd(1, myInd === data[myType].length - 1)" class="rightJJ awccJJ"
+            :class="{ noClick: myInd === data[myType].length - 1 }" v-if="data[myType] && data[myType].length > 1"></div>
+        </div>
+      </div>
+
+      <!-- 下面的文字介绍 -->
+      <div class="flooTxt" :class="{ flooTxtOne: oneTxt }">
+        <div class="flooTxtBox">
+          <div class="myTitle">{{ myTitle }}</div>
+          <!-- 视频的介绍 -->
+          <div class="myTxt" v-if="myType === 'video' && videoTxt[myInd]">
+            {{ videoTxt[myInd] }}
+          </div>
+          <div class="myTxt" v-if="myType === 'img' && imgTxt[myInd]">
+            {{ imgTxt[myInd] }}
+          </div>
+          <div class="myTxt" v-html="myTxt"></div>
+        </div>
+      </div>
+    </div>
+    <!-- 查看图片 -->
+    <viewer class="viewerCla" ref="viewer" :images="lookPics">
+      <img :src="lookPics[0]" alt="" />
+    </viewer>
+  </div>
+</template>
+
+
+<script>
+export default {
+  name: "Home",
+  data() {
+    return {
+      m: this.$route.query.m,
+      id: this.$route.query.id,
+      // 音频地址
+      audio: "",
+      // 如果只有单独的音频
+      isOneAduio: false,
+      // 音频状态
+      audioSta: false,
+
+      data: {
+        // 模型数组
+        model: [],
+        // 视频数组
+        video: [],
+        // 图片数组
+        img: [],
+      },
+      // 当前 type
+      myType: "",
+
+      // 底部的tab
+      flooTab: [],
+
+      // 当前索引
+      myInd: 0,
+
+      // 查看图片
+      lookPics: [],
+
+      // 标题
+      myTitle: "",
+      // 内容
+      myTxt: "",
+      // 视频内容
+      videoTxt: [],
+      imgTxt: [],
+
+      // 只有标题和文字(没有视频,没有模型,没有图片)
+      oneTxt: false,
+    };
+  },
+  watch: {
+    myType() {
+      this.myInd = 0;
+    },
+    // 音频的开启和关闭
+    audioSta(val) {
+      const dom = document.querySelector("#myAudio");
+      if (val) {
+        dom.play();
+        dom.onended = () => {
+          // console.log("----音频播放完毕");
+          this.audioSta = false;
+        };
+      } else dom.pause();
+    },
+  },
+  computed: {},
+  components: {},
+  methods: {
+    // 点击左右箭头
+    cutMyInd(num, flag) {
+      if (flag) return;
+      this.myInd += num;
+    },
+    // 点击查看大图
+    lookImg(url) {
+      let dom = this.$refs.viewer.$viewer;
+      this.lookPics = [url];
+      dom.show();
+    },
+    async getData() {
+      // https://www.4dmodel.com/
+      let url = `https://super.4dage.com/data/${this.id
+        }/hot/js/data.js?time=${Math.random()}`;
+      let result = (await this.$http.get(url)).data;
+      const resData = result[this.m];
+      console.log("----", resData);
+      if (resData) {
+        this.audio = resData.backgroundMusic;
+        // 只有单独的音频上传
+        if (
+          resData.backgroundMusic &&
+          !resData.model &&
+          !resData.video &&
+          !resData.images
+        ) {
+          this.isOneAduio = true;
+        }
+        // 底部的tab
+        const arr = [];
+        const obj = {};
+        if (resData.model) {
+          obj.model = resData.model;
+          arr.push({ id: 1, type: "model", name: "模型" });
+        }
+        if (resData.video) {
+          obj.video = resData.video;
+          arr.push({ id: 2, type: "video", name: "视频" });
+        }
+        if (resData.images) {
+          obj.img = resData.images;
+          arr.push({ id: 3, type: "img", name: "图片" });
+        }
+        this.flooTab = arr;
+        this.data = obj;
+
+        // 当前type的值 应该为
+        if (resData.model) this.myType = "model";
+        else if (resData.video) this.myType = "video";
+        else if (resData.images) this.myType = "img";
+
+        this.myTitle = resData.title || "";
+        this.myTxt = resData.content || "";
+        this.videoTxt = resData.videosDesc || [];
+        this.imgTxt = resData.imagesDesc || [];
+
+        // 只有 标题和 文字介绍(没有视频,没有模型,没有图片)
+        if (!obj.model && !obj.video && !obj.img && !resData.backgroundMusic) {
+          this.oneTxt = true;
+        }
+      }
+    },
+  },
+  mounted() {
+    this.getData();
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.home {
+  .viewerCla img {
+    display: none;
+  }
+
+  width: 100%;
+  height: 100%;
+  background-color: #0f4a61d2;
+  // backdrop-filter: blur(10px);
+  position: relative;
+
+  #myAudio {
+    z-index: 11;
+    position: absolute;
+    top: 50%;
+    left: 50%;
+    transform: translate(-50%, -50%);
+    width: 500px;
+    height: 60px;
+  }
+
+  .main {
+    width: 1200px;
+    margin: 0 auto;
+    height: 100%;
+    padding-top: 40px;
+
+    .mainCon {
+      position: relative;
+      border-radius: 6px;
+      overflow: hidden;
+      width: 100%;
+      height: calc(100% - 200px);
+      background: linear-gradient(#929292, #c5c5c5);
+
+      .audioIcon {
+        z-index: 10;
+        cursor: pointer;
+        position: absolute;
+        right: 20px;
+        bottom: 30px;
+      }
+
+      .oneTabNum {
+        z-index: 10;
+        position: absolute;
+        bottom: 30px;
+        left: 50%;
+        transform: translateX(-50%);
+        font-size: 14px;
+      }
+
+      .flooTabBox {
+        z-index: 10;
+        position: absolute;
+        bottom: 30px;
+        left: 50%;
+        transform: translateX(-50%);
+        display: flex;
+
+        .tabRow {
+          cursor: pointer;
+          display: flex;
+          align-items: center;
+          margin: 0 12px;
+          font-size: 12px;
+          background-color: #0f4a61d2;
+          color: #e5d6b2;
+          padding: 0px 14px;
+          height: 36px;
+          border-radius: 18px;
+
+          &>img {
+            margin-right: 6px;
+          }
+        }
+
+        .tabRowAc {
+          background-color: #e5d6b2;
+          pointer-events: none;
+          color: #0f4a61;
+        }
+      }
+
+      .contenBoxMain {
+        position: relative;
+        width: 100%;
+        height: 100%;
+      }
+
+      .contenBox {
+        width: 100%;
+        height: 100%;
+        position: absolute;
+        top: 0;
+        left: 0;
+        opacity: 0;
+        pointer-events: none;
+        transition: all 0.5s;
+
+        .modelBox,
+        .videoBox,
+        .imgBox {
+          width: 100%;
+          height: 100%;
+        }
+
+        .modelBox {
+          iframe {
+            width: 100%;
+            height: 100%;
+          }
+        }
+
+        .videoBox {
+          padding: 100px 100px 120px;
+
+          video {
+            width: 100%;
+            height: 100%;
+          }
+        }
+
+        .imgBox {
+          padding: 100px 100px 120px;
+
+          .smImgBox {
+            width: 100%;
+            height: 100%;
+            cursor: zoom-in;
+
+            &>img {
+              pointer-events: none;
+              width: 100%;
+              height: 100%;
+              object-fit: contain;
+            }
+          }
+        }
+      }
+
+      .contenBoxAc {
+        opacity: 1;
+        pointer-events: auto;
+      }
+
+      .awccJJ {
+        cursor: pointer;
+        position: absolute;
+        top: 50%;
+        transform: translateY(-50%);
+        left: 10px;
+        width: 37px;
+        height: 37px;
+        background-image: url("../assets/images/pc/left.png");
+        background-size: 100% 100%;
+
+        &:focus {
+          outline: none;
+        }
+      }
+
+      .rightJJ {
+        left: auto;
+        right: 10px;
+        background-image: url("../assets/images/pc/right.png");
+      }
+
+      .noClick {
+        cursor: default;
+        opacity: 0.4;
+      }
+    }
+
+    .flooTxt {
+      margin-top: 20px;
+      width: 100%;
+      height: 160px;
+
+      .flooTxtBox {
+        width: 100%;
+        height: 100%;
+        overflow-y: auto;
+
+        .myTitle {
+          color: #c89d45;
+          font-size: 22px;
+          font-weight: 700;
+          margin-bottom: 10px;
+          text-align: center;
+        }
+
+        .myTxt {
+          font-size: 16px;
+          color: #c89d45;
+          line-height: 24px;
+        }
+
+        &::-webkit-scrollbar {
+          /*滚动条整体样式*/
+          width: 3px;
+          /*高宽分别对应横竖滚动条的尺寸*/
+          height: 1px;
+        }
+
+        &::-webkit-scrollbar-thumb {
+          /*滚动条里面小方块*/
+          border-radius: 10px;
+          -webkit-box-shadow: inset 0 0 5px transparent;
+          background: #e5d6b2;
+        }
+
+        &::-webkit-scrollbar-track {
+          /*滚动条里面轨道*/
+          -webkit-box-shadow: inset 0 0 5px transparent;
+          border-radius: 10px;
+          background: transparent;
+        }
+      }
+    }
+
+    .flooTxtOne {
+      height: 600px;
+    }
+  }
+}
+
+// 移动端
+@media screen and (max-width: 1000px) {
+  .home {
+    #myAudio {
+      width: 90vw;
+      max-width: 500px;
+    }
+
+    .main {
+      width: 100%;
+      height: 94%;
+      padding: 0;
+      position: absolute;
+      top: 50%;
+      left: 50%;
+      transform: translate(-50%, -50%);
+
+      .mainCon {
+        border-radius: 8px 8px 0 0;
+        height: calc(50%);
+        background: none;
+
+
+
+        .audioIcon {
+          cursor: default;
+          right: auto;
+          bottom: auto;
+          top: 6px;
+          left: 6px;
+
+          &>img {
+            width: 30px;
+          }
+        }
+
+        .flooTabBox {
+          width: 100%;
+          bottom: 20px;
+          justify-content: center;
+
+          .tabRow {
+            cursor: default;
+            margin: 0 6px;
+            padding: 0 10px;
+            height: 32px;
+
+            &>img {
+              width: 16px;
+            }
+          }
+        }
+
+        .contenBox {
+          .videoBox {
+            padding: 0px 0;
+            position: relative;
+
+            video {
+              width: 96%;
+              max-height: 100%;
+              height: auto;
+              position: absolute;
+              top: 50%;
+              left: 2%;
+              transform: translateY(-50%);
+            }
+          }
+
+          .imgBox {
+            padding: 0;
+
+            .smImgBox {
+              cursor: default;
+            }
+          }
+        }
+
+        .awccJJ {
+          left: 0;
+          width: 28px;
+          height: 57px;
+          cursor: default;
+          background-image: url("../assets/images/pc/icon-left.png");
+        }
+
+        .rightJJ {
+          left: auto;
+          right: 0;
+          background-image: url("../assets/images/pc/icon-right.png");
+        }
+      }
+
+      .flooTxt {
+        margin-top: 0;
+        padding: 20px 15px 15px;
+        height: 200px;
+        // background-color: #fff;
+        border-radius: 0 0 8px 8px;
+
+        .flooTxtBox {
+          .myTitle {
+            font-size: 18px;
+          }
+
+          .myTxt {
+            font-size: 14px;
+            line-height: 22px;
+          }
+        }
+      }
+
+      .flooTxtOne {
+        height: 100%;
+      }
+    }
+  }
+}</style>
+

+ 3 - 0
hot/vue.config.js

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

BIN=BIN
netbook/bg.jpg


+ 854 - 0
netbook/index.html

@@ -0,0 +1,854 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<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,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
+    <title>电子书</title>
+    <link rel="stylesheet" href="./public/member/manual/css/animate.min.css">
+    <link rel="stylesheet" href="./public/member/manual/css/tooltipster.bundle.min.css">
+    <link rel="stylesheet" href="./public/member/manual/css/tooltipster-sideTip-borderless.min.css">
+    <link rel="stylesheet" href="./public/member/manual/css/progressJS.css">
+    <link rel="stylesheet" href="./public/member/manual/css/zdialog.css">
+    <link rel="stylesheet" href="./public/member/manual/css/style.min.css">
+    <script src="./public/member/manual/js/jquery1.9.0.js"></script>
+    <script src="./public/member/manual/js/jquery-ui-1.9.2.min.js"></script>
+    <script src="./public/member/manual/js/jquery.touchSwipe.min.js"></script>
+    <script src="./public/member/manual/js/modernizr.2.5.3.min.js"></script>
+    <script src="./public/member/manual/js/tooltipster.bundle.js"></script>
+    <script src="./public/member/manual/js/jquery.qrcode.min.js"></script>
+    <script src="./public/member/manual/js/jquery.panzoom.min.js"></script>
+    <script src="./public/member/manual/js/jquery.dragscroll.js"></script>
+    <script src="./public/member/manual/js/jquery.mousewheel.min.js"></script>
+    <script src="./public/member/manual/js/wow.min.js"></script>
+    <script src="./public/member/manual/js/progressJS.js"></script>
+    <script src="./public/member/manual/js/zdialog.js"></script>
+    <script src="./public/data.js"></script>
+    <link rel="stylesheet" href="./public/panonn/static/css/puc.css">
+    <script>
+
+        let page = getQueryParamByKey('pages') || 'pages';
+        let mode = getQueryParamByKey('mode');
+        let currentpage = pages[page]
+
+        var imgWid = currentpage.size[0];
+        var imgHig = currentpage.size[1];
+        var bookArr = [];
+        for (let i = 0; i < currentpage.total; i++) {
+            bookArr.push(`./pages/${page}/${i + 1}.${currentpage.type || 'png'}`)
+        }
+
+        var box_w = window.innerWidth;
+        var box_y = window.innerHeight;
+        var sacle = 1;
+        console.log('比例', imgWid / imgHig, box_w / box_y)
+        if (imgWid / imgHig < box_w / box_y) {
+            sacle = imgWid / box_w;
+            imgWid = imgWid / sacle;
+            imgHig = imgHig / sacle;
+        } else {
+            sacle = imgHig / box_y;
+            imgWid = imgWid / sacle;
+            imgHig = imgHig / sacle;
+        }
+
+        // 信息配置
+        $OP = {
+            list: bookArr,
+            thumbnail: [],
+            width: imgWid,// 图片宽度
+            height: imgHig// 图片高度
+        }
+        console.log('输出OP', $OP)
+    </script>
+    <style>
+        * {
+            touch-action: pan-y;
+        }
+
+        html {
+            background-image: url(./bg.jpg);
+            background-size: cover;
+        }
+
+        .flipbook-panzoom {
+            position: fixed;
+            top: 0px;
+            left: 0px;
+            z-index: 7;
+        }
+    </style>
+</head>
+
+<body ondragstart="window.event.returnValue=false" oncontextmenu="window.event.returnValue=false"
+    onselectstart="event.returnValue=false">
+    <div class="flipbook-panzoom">
+        <div class="flipbook-viewport nomatrix">
+            <div class="container">
+                <div id="flipbook" class="flipbook"></div>
+            </div>
+        </div>
+    </div>
+    <!-- 附属模块 -->
+    <div class="config">
+        <!-- 底部功能栏 -->
+        <div class="bottom_box bottom_p">
+            <div class="bottom_bar">
+                <!-- <div class="btnbox tooltip thumbnail" title="缩略图"></div> -->
+                <div class="btnbox tooltip playpage" title="自动翻页" style="background-size: auto 75%"></div>
+                <div class="btnbox tooltip shangyiye" title="上一页"></div>
+                <div class="btninput tooltip" title="当前页面/总页数">
+                    <input id="pagenum" type="text" onkeyup="value=value.replace(/[^\d]/g,'')">
+                </div>
+                <div class="btnbox tooltip xiayiye" title="下一页"></div>
+                <div class="btnbox tooltip flsize" title="放大/还原" style="background-size: auto 75%;"></div>
+                <div class="btnbox tooltip bangzhu" title="使用帮助" style="display: none;"></div>
+                <div class="qrcode">
+                    <div class="btnbox" style="margin: 3px;display: none;"><img
+                            src="./public/member/manual/img/erweima2.svg"></div>
+                    <div class="qrimg">
+                        <p>扫一扫,手机阅读</p>
+                    </div>
+                </div>
+            </div>
+        </div>
+        <!-- pc缩略图 -->
+        <div class="thumbnail_box_p">
+            <div class="thumbnail_p">
+                <ul></ul>
+            </div>
+        </div>
+        <!-- 移动缩略图 -->
+        <div class="thumbnail_box_v animated">
+            <div class="title">
+                <h3 style="line-height: 2.8;">缩略图列表</h3>
+                <img class="off" src="./public/member/manual/img/off.svg">
+            </div>
+            <div class="box_list">
+                <ul></ul>
+            </div>
+        </div>
+        <!-- 自动播放速度控制器 -->
+        <div class="speed_p" style="z-index: 8">
+            <span>翻页速度</span>
+            <img src="./public/member/manual/img/minus.svg" style="left: 82px;">
+            <div class="spran">
+                <div class="progress_p"></div>
+            </div>
+            <img src="./public/member/manual/img/add.svg" style="right: 5px;">
+        </div>
+        <div class="speed_v" style="z-index: 8">
+            <span>翻页速度</span>
+            <img src="./public/member/manual/img/add.svg" style="top: 5px;">
+            <div class="spran">
+                <div class="progress_v"></div>
+            </div>
+            <img src="./public/member/manual/img/minus.svg" style="bottom: 47px;">
+        </div>
+        <!-- 帮助 -->
+        <div class="help help_p">
+            <div class="helpbox">
+                <div>
+                    <p>缩略图</p>
+                    <img src="./public/member/manual/img/1xian.png">
+                </div>
+                <div>
+                    <p>自动翻页</p>
+                    <img src="./public/member/manual/img/2xian.png">
+                </div>
+                <div>
+                    <p>上一页</p>
+                    <img src="./public/member/manual/img/3xian.png">
+                </div>
+                <div style="width: 70px;">
+                    <p>当前页面/总页数</p>
+                    <img src="./public/member/manual/img/4xian.png">
+                </div>
+                <div>
+                    <p>下一页</p>
+                    <img src="./public/member/manual/img/3xian.png">
+                </div>
+                <div>
+                    <p>放大/还原</p>
+                    <img src="./public/member/manual/img/2xian.png">
+                </div>
+                <div>
+                    <p>使用帮助</p>
+                    <img src="./public/member/manual/img/1xian.png">
+                </div>
+                <div class="helpqr">
+                    <p>手机扫码阅读</p>
+                    <img src="./public/member/manual/img/1xian.png">
+                </div>
+            </div>
+        </div>
+        <div class="help_m"></div>
+    </div>
+    <div class="puc_bg" style="display: block;"></div>
+    <i class="puc_col2 book_close" style="display: none;"> </i>
+    <script>
+        var thumbnailoff = false // 缩略图开关
+        var thumbnailinit = true
+        var onpalyer = false // 自动翻页开关
+        var palytime = null // 定时器
+        var timenum = 5000 // 定时器
+        var flsizeoff = false // 缩放开关
+        var helptem = false // 帮助开关
+        var blsalc = 1 // 书的缩放比例
+        var winsalc = 1 // 缩放比例
+        var panzoom = null// 放大拖动
+        if (/windows phone|iphone|android/ig.test(window.navigator.userAgent)) {
+            $(".book_close").css("top", ".3rem");
+            $(".book_close").css("right", ".3rem");
+        }
+        $("#flipbook").append('<div class="page" style="width:' + $OP.width + 'px;height:' + $OP.height + 'px"><img style="width:100%;height:100%" src = "' + $OP.list[0] + '"/></div>');
+
+        // 缩略图
+        $(".thumbnail").click(function () {
+            if (thumbnailinit) {
+                var tem = ''
+                if ($OP.list.length % 2 == 0) {
+                    for (var i = 0; i < $OP.list.length; i++) {
+                        $(".thumbnail_box_v ul").append('<li data-page="' + (Number([i]) + 1) + '"><div class="xv"><img src="' + $OP.thumbnail[i] + '"><div></div></div></li>');
+                        if (i == 0 || i == $OP.list.length - 1) {
+                            tem += '<li data-page="' + (Number([i]) + 1) + '"><div class="pagebox"><div data-page="' + (Number([i]) + 1) + '"><img src="' + $OP.thumbnail[i] + '"></div></div></li>'
+                        } else if (i % 2 == 0) {
+                            tem += '<div data-page="' + (Number([i]) + 1) + '"><img src="' + $OP.thumbnail[i] + '"></div></li>'
+                        } else {
+                            tem += '<li data-page="' + (Number([i]) + 1) + '"><div class="pagebox"><div data-page="' + (Number([i]) + 1) + '"><img src="' + $OP.thumbnail[i] + '"></div>'
+                        }
+                    }
+                } else {
+                    for (var i = 0; i < $OP.list.length; i++) {
+                        $(".thumbnail_box_v ul").append('<li data-page="' + (Number([i]) + 1) + '"><div class="xv"><img src="' + $OP.thumbnail[i] + '"><div></div></div></li>');
+                        if (i == 0) {
+                            tem += '<li data-page="' + (Number([i]) + 1) + '"><div class="pagebox"><div data-page="' + (Number([i]) + 1) + '"><img src="' + $OP.thumbnail[i] + '"></div></div></li>'
+                        } else if (i % 2 == 0) {
+                            tem += '<div data-page="' + (Number([i]) + 1) + '"><img src="' + $OP.thumbnail[i] + '"></div></li>'
+                        } else {
+                            tem += '<li data-page="' + (Number([i]) + 1) + '"><div class="pagebox"><div data-page="' + (Number([i]) + 1) + '"><img src="' + $OP.thumbnail[i] + '"></div>'
+                        }
+                    }
+                }
+
+                $(".thumbnail_box_p ul").append(tem);
+                tem = null
+                $(".pagebox>div").css("width", 70 * ($OP.width / $OP.height) + "px")
+                $(".xv").css("padding-bottom", $OP.height / $OP.width * 100 + "%")
+                thumbnailinit = false
+            }
+            thumbnailoff = !thumbnailoff
+            if (thumbnailoff) {
+                $(this).css("background-color", "rgba(0, 0, 0, 0.5) !important")
+                var pagenum = $('.flipbook').turn('page')
+                if ($(window).width() >= 600) {
+                    $(".thumbnail_box_p").fadeIn()
+                    var Oact_p = $(".thumbnail_box_p li div[data-page='" + pagenum + "']").parent().parent()
+                    Oact_p.addClass("active").siblings().removeClass("active")
+                } else {
+                    $(".thumbnail_box_v").fadeIn().addClass('fadeInUp').removeClass("fadeOutDownBig");
+                    var Oact_v = $(".thumbnail_box_v li[data-page='" + pagenum + "']")
+                    Oact_v.addClass("active").siblings().removeClass("active")
+                }
+            } else {
+                offthum()
+            }
+            pansepalyer()
+        })
+
+        // 缩略图拖动
+        $('.thumbnail_box_p ul').dragscroll({
+            direction: 'scrollLeft',
+        });
+
+        // 关闭缩略图
+        function offthum() {
+            thumbnailoff = false
+            $(".thumbnail").css("background-color", "")
+            $(".thumbnail_box_p").fadeOut()
+            $(".thumbnail_box_v").fadeOut()
+        }
+
+        // 缩略图跳转
+        $(".thumbnail_box_p").on("click", "li", function () {
+            $('.flipbook').turn('page', $(this).data("page"))
+            $(this).addClass("active").siblings().removeClass("active")
+
+        })
+        $(".thumbnail_box_v").on("click", "li", function () {
+            thumbnailoff = !thumbnailoff
+            $(".thumbnail_box_v").fadeOut().addClass('fadeOutDownBig').removeClass("fadeInUp");
+            $('.flipbook').turn('page', $(this).data("page"))
+
+        })
+        $(".thumbnail_box_v .off").click(function () {
+            thumbnailoff = !thumbnailoff
+            $(".thumbnail_box_v").addClass('fadeOutDownBig').removeClass("fadeInUp");
+            offthum()
+        })
+
+        // 自动翻页
+        $(".playpage").click(function () {
+            onpalyer = !onpalyer
+            if (onpalyer) {
+                $(".playpage").css("background-image", "url(./public/member/manual/img/pause.png)")
+                palytime = setInterval(function () {
+                    if ($('.flipbook').turn('page') != $('.flipbook').turn('pages')) {
+                        $('.flipbook').turn('next');
+
+                    } else {
+                        $('.flipbook').turn('page', 1);
+
+                    }
+                }, timenum)
+                if ($(window).width() >= 600) {
+                    speedOff('.speed_p')
+                } else {
+                    speedOff('.speed_v')
+                }
+                offthum()
+            } else {
+                pansepalyer()
+            }
+        })
+
+        // 拉杆4秒自动隐藏
+        var disout
+        function speedOff(e) {
+            $(e).fadeIn()
+            if (disout) clearTimeout(disout);
+            disout = setTimeout(function () {
+                $(e).fadeOut()
+            }, 4000)
+        }
+
+        // 翻页时间控制
+        var progress_p = new Progress('.progress_p', {
+            val: 80,
+            size: 4,
+            precision: 0,
+            drag: true,
+            direction: 'horizontal',
+            getVal: function (el) {
+                speedOff('.speed_p')
+                timenum = ((100 - el.val) / 100 * 20 + 1) * 1000
+                clearInterval(palytime)
+                palytime = setInterval(function () {
+                    if ($('.flipbook').turn('page') != $('.flipbook').turn('pages')) {
+                        $('.flipbook').turn('next');
+
+                    } else {
+                        $('.flipbook').turn('page', 1);
+
+                    }
+                }, timenum)
+            }
+        })
+        var progress_v = new Progress('.progress_v', {
+            val: 80, //初始值 取值范围:0-100
+            size: 4, //控件大小默认值为10,可结合css自行修改样式
+            precision: 0, //val精度配置,默认保留0位小数,最多配位4位
+            drag: true, //默认开启拖拽,关闭设为false,不配置默认为true
+            direction: 'vertical', //方向 默认水平 vertical 垂直
+            getVal: function (el) {
+                speedOff('.speed_v')
+                timenum = ((100 - el.val) / 100 * 20 + 1) * 1000
+                clearInterval(palytime)
+                palytime = setInterval(function () {
+                    if ($('.flipbook').turn('page') != $('.flipbook').turn('pages')) {
+                        $('.flipbook').turn('next');
+
+                    } else {
+                        $('.flipbook').turn('page', 1);
+
+                    }
+                }, timenum)
+            }
+        })
+
+        // 取消自动翻页
+        function pansepalyer() {
+            onpalyer = false
+            $(".playpage").css("background-image", "url(./public/member/manual/img/play.png)")
+            $(".speed_p").fadeOut()
+            $(".speed_v").fadeOut()
+            clearInterval(palytime)
+        }
+
+        // 上一页
+        $(".shangyiye").click(function () {
+            onprevious()
+            offthum()
+        })
+
+        // 页码跳转
+        var isval
+        $("#pagenum").focus(function () {
+            isval = $("#pagenum").val()
+            $("#pagenum").val("")
+        })
+        $("#pagenum").keyup(function (event) {
+            if (event.keyCode == 13) {
+                gopage()
+            }
+        })
+        $("#pagenum").blur(function () {
+            gopage()
+        })
+        function gopage() {
+            if ($("#pagenum").val() == isval.replace("/", "")) {
+                $("#pagenum").val(isval)
+                return
+            }
+            if ($("#pagenum").val() == "") {
+                $("#pagenum").val(isval)
+            } else {
+                if ($("#pagenum").val() <= 0) {
+                    $('.flipbook').turn('page', "1");
+                } else if ($("#pagenum").val() > $('.flipbook').turn('pages')) {
+                    $('.flipbook').turn('page', $('.flipbook').turn('pages'));
+                } else {
+                    $('.flipbook').turn('page', $("#pagenum").val());
+                }
+                pansepalyer()
+                isval = $("#pagenum").val()
+            }
+        }
+
+        // 下一页
+        $(".xiayiye").click(function () {
+            onnext()
+            offthum()
+        })
+
+        // 初始化panzoom
+        $(".flipbook-panzoom").panzoom()
+        flmove(true)
+        var offs
+        $(".flipbook-panzoom").on('panzoomzoom', function (event, scale) {
+            flsizeoff = true
+            enlarge()
+            if (offs) clearTimeout(offs);
+            offs = setTimeout(function () {
+                if (scale.scale < 1) {
+                    narrow()
+                } else {
+                    $.DialogByZ.Autofade({ Content: "双击可还原" })
+                }
+            }, 300)
+        });
+
+        // 放大与还原
+        $(".flsize").click(function () {
+            offthum()
+            if (!flsizeoff) {
+                enlarge()
+                $.DialogByZ.Autofade({ Content: "双击可还原" })
+            } else {
+                narrow()
+            }
+            pansepalyer()
+        })
+
+        // 放大时双击还原
+        let clicked = 1
+        let clickedTime = {
+            timeA: '',
+            timeB: ''
+        }
+        $(".flipbook-panzoom").on('panzoomend', function (e, panzoom, matrix, changed) {
+            // if (changed) {
+            // 屏幕点击控制
+            if ($(window).width() >= 600) {
+                if (onpalyer) {
+                    speedOff('.speed_p')
+                }
+            } else {
+                if (onpalyer) {
+                    speedOff('.speed_v')
+                }
+            }
+            // } else {
+            // 放大时双击还原
+            if (clicked === 1) {
+                clickedTime.timeA = new Date()
+                clicked++
+            } else if (clicked === 2) {
+                clickedTime.timeB = new Date()
+                if (Math.abs(clickedTime.timeA - clickedTime.timeB) < 200) {
+                    if (flsizeoff) {
+                        narrow()
+                    } else {
+                        enlarge()
+                    }
+                    clicked = 1
+                } else {
+                    clickedTime.timeA = new Date()
+                }
+            }
+            // }
+            offthum()
+        });
+
+        // 放大
+        function enlarge() {
+            flsizeoff = true
+            $(".flipbook-panzoom").panzoom("zoom", blsalc = 2, { // 缩放
+                silent: true
+            });
+            $(".flsize").css("background-image", "url(./public/member/manual/img/narrow_icon.png)")
+
+            flmove(false)
+        }
+
+        // 还原
+        function narrow() {
+            flsizeoff = false
+            $(".flsize").css("background-image", "url(./public/member/manual/img/enlarge_icon.png)")
+
+            $(".flipbook-panzoom").panzoom("reset")
+            blsalc = 1
+            flmove(true)
+        }
+
+        // 是否禁止拖动
+        function flmove(off) {
+            $(".flipbook-panzoom").panzoom("option", {
+                disableXAxis: off,
+                disableYAxis: off,
+            })
+        }
+
+        // 帮助
+        $(".bangzhu").click(function () {
+            offthum()
+            helptem = !helptem
+            if (helptem) {
+                $(".help").fadeIn()
+                $(".help_m").css("display", "block")
+            } else {
+                $(".help").fadeOut()
+                $(".help_m").css("display", "none")
+            }
+            pansepalyer()
+        })
+        $(".help_m").click(function () {
+            helptem = !helptem
+            $(".help").fadeOut()
+            $(".help_m").css("display", "none")
+        })
+
+        // 二维码
+        $('.qrimg').qrcode({
+            render: "canvas", //也可以替换为table
+            text: window.location.href,
+            size: 135,
+            mode: 0,
+            fill: "#000",
+            background: "#fff",
+            radius: .5
+        });
+
+        function isChrome() {
+            return navigator.userAgent.indexOf('Chrome') != -1;
+        }
+
+        // 初始配置
+        function loadApp() {
+            var flipbook = $('.flipbook');
+            // 检查CSS是否已经加载
+            if (flipbook.width() == 0 || flipbook.height() == 0) {
+                setTimeout(loadApp, 10);
+                return;
+            }
+            // 翻书主体配置项
+            $('.flipbook').turn({
+                elevation: 50,// 转换期间页面的高度
+                acceleration: !isChrome(),// 设置硬件加速模式,对于触摸设备(移动端),此值必须为真。
+                pages: $OP.list.length,
+                direction: mode || 'ltr',  //rtl从右到左,ltr左到右
+                autoCenter: true, // 居中
+                gradients: false,// 显示渐变阴影
+                duration: 1000,// 设置翻页动画持续时间即翻页的快慢,默认600
+                when: {
+                    // 页面启动时触发
+                    start: function (e, page, view) {
+                        setTimeout(function () {
+                            getpagenum()
+                            updateDepth()
+                        }, 100)
+                    },
+                    // 当前范围需要某些页面时 触发此事件
+                    missing: function (event, pages) {
+                        for (var i = 0; i < pages.length; i++) {
+                            addPage(pages[i]);
+                        }
+                    }
+                }
+            });
+            getpagenum()
+        }
+
+        // 配置依赖文件
+        yepnope({
+            test: Modernizr.csstransforms,
+            yep: ['./public/member/manual/lib/turn.min.js'],
+            nope: ['./public/member/manual/lib/turn.html4.min.js'],
+            both: ['./public/member/manual/js/index.js', './public/member/manual/lib/scissor.min.js', './public/member/manual/css/fl.css'],
+            complete: loadApp
+        });
+
+        // 配置缩略图信息
+        $OP.list.forEach(val => {
+            var i = val.lastIndexOf(".")
+            $OP.thumbnail.push(val.slice(0, i) + val.slice(i))
+        });
+
+        // 动态加载内容图片
+        function addPage(page) {
+            var pages = $('.flipbook').turn('pages');
+            var element = $('<div class="page" style="width:' + $OP.width + 'px;height:' + $OP.height + 'px"></div>', {});
+            if ($('.flipbook').turn('addPage', element, page)) {
+                console.log('查看', page, $OP.list.length)
+                if (page == $OP.list.length) {
+                    element.html('<img style="width:100%;height:100%" src = "' + './pages/1/73.png' + '"/>');
+                } else {
+                    element.html('<img style="width:100%;height:100%" src = "' + $OP.list[page] + '"/>');
+                }
+
+            }
+        }
+
+        //鼠标滚轮事件
+        $('.flipbook-viewport').mousewheel(function (event, delta, deltaX, deltaY) {
+            if (blsalc <= 1) {
+                if (delta == 1) {
+                    $('.flipbook').turn('previous');
+                } else {
+                    $('.flipbook').turn('next');
+                }
+                flsizeoff = false
+                $(".flsize").css("background-image", "url(./public/member/manual/img/comiisfangda.png)")
+                pansepalyer()
+            } else {
+                if (delta == 1) {
+                    if (blsalc > 5) return
+                    blsalc = blsalc + 0.1
+                } else {
+                    if (blsalc <= 1) return
+                    blsalc = blsalc - 0.1
+                }
+                flsizeoff = true
+                $(".flipbook-panzoom").panzoom("zoom", blsalc, {
+                    silent: true
+                });
+                $(".flsize").css("background-image", "url(./public/member/manual/img/comiissuoxiao.png)")
+                flmove(false)
+            }
+        })
+        // wow动画
+        if (!(/msie [6|7|8|9]/i.test(navigator.userAgent))) {
+            new WOW().init();
+        };
+
+        // 手机阅读二维码
+        $(".qrcode").hover(function () {
+            $(".qrimg").fadeIn()
+        }, function () {
+            $(".qrimg").fadeOut()
+        })
+
+        // 页码显示
+        function getpagenum() {
+            $("#pagenum").val($('.flipbook').turn('page') + '/' + $('.flipbook').turn('pages'))
+        }
+
+        // 执行上一页
+        function onprevious() {
+            if ($('.flipbook').turn('page') == 1) {
+                $.DialogByZ.Autofade({ Content: "这是第一页" })
+            }
+            $('.flipbook').turn('previous');
+            pansepalyer()
+        }
+
+        // 执行下一页
+        function onnext() {
+            if ($('.flipbook').turn('page') == $('.flipbook').turn('pages')) {
+                $.DialogByZ.Autofade({ Content: "这是最后一页" })
+            }
+            $('.flipbook').turn('next');
+            pansepalyer()
+        }
+
+        // 翻书厚度
+        function updateDepth() {
+            if ($(window).width() >= 600) {
+                if ($(".p" + $('.flipbook').turn('pages')).length) {
+                    $(".p" + $('.flipbook').turn('pages')).addClass("plast")
+                }
+                $(".odd").each(function () {
+                    if ($(this).find(".oddshadow").length == 0) {
+                        $(this).append("<div class='oddshadow'></div>")
+                    }
+                })
+                $(".even").each(function () {
+                    if ($(this).find(".evenshadow").length == 0) {
+                        $(this).append("<div class='evenshadow'></div>")
+                    }
+                })
+            }
+            var page = $('.flipbook').turn('page'),
+                pages = $('.flipbook').turn('pages'),
+                depthWidth = page / 4
+            if (page == pages || page == 1) {
+                $('.flipbook .thickness_left').css({
+                    width: 0,
+                    left: 0
+                });
+                $('.flipbook .thickness').css({
+                    width: 0,
+                    right: 0
+                });
+            } else {
+                $('.flipbook .thickness_left').css({
+                    width: depthWidth / winsalc,
+                    left: -depthWidth / winsalc
+                });
+                $('.flipbook .thickness').css({
+                    width: (pages / 4 - depthWidth) / winsalc,
+                    right: -(pages / 4 - depthWidth) / winsalc
+                });
+            }
+        }
+
+        $(function () {
+            // 翻书触摸触发翻页
+            // $("#flipbook").swipe({
+            //     swipeLeft: function () {
+            //         if (!flsizeoff) {
+            //             onnext()
+            //         }
+            //     },
+            //     swipeRight: function () {
+            //         if (!flsizeoff) {
+            //             onprevious()
+            //         }
+            //     }
+            // })
+
+            // 翻书触摸触发翻页
+            $("#flipbook").swipe({
+                swipeLeft: function () {
+                    if (!flsizeoff) {
+                        if (window.location.href.includes('rtl')) onprevious()
+                        else onnext()
+                    }
+                },
+                swipeRight: function () {
+                    if (!flsizeoff) {
+                        if (window.location.href.includes('rtl')) onnext()
+                        else onprevious()
+                    }
+                }
+            })
+
+
+            // title提示语
+            $('.tooltip').tooltipster({
+                theme: 'tooltipster-borderless',
+                delay: 600,
+            });
+        })
+
+        // 宽度大小适配
+        function windowonresize() {
+            if ($(window).width() >= 600) {
+                // PC
+                $('.flipbook').turn('display', "double");
+                $(".bottom_box").addClass("bottom_p").removeClass("bottom_v")
+                $(".help").addClass("help_p").removeClass("help_v")
+                $(".qrcode").fadeIn()
+                if ($OP.width * 2 > $(window).width() || $OP.height > $(window).height()) {
+                    winsalc = ($(window).width() - 100) / ($OP.width * 2)
+                    var heisalc = ($(window).height() - 120) / $OP.height
+                    var salc = winsalc > heisalc ? heisalc : winsalc
+                    $(".flipbook-viewport").css({
+                        "transform": "scale(" + salc + ")",
+                    })
+                } else {
+                    $(".flipbook-viewport").css({
+                        "transform": "scale(1)",
+                    })
+                }
+                $(".flipbook-viewport .flipbook").css({ "width": ($OP.width * 2) + "px", "height": $OP.height + "px", "left": "-" + $OP.width + "px", "top": "-" + ($OP.height / 2) + "px" })
+                $(".page").css("height", $OP.height)
+            } else {
+                // 移动端
+                $(".odd .oddshadow").remove()
+                $(".even .evenshadow").remove()
+                $('.flipbook').turn('display', "single");
+                $(".bottom_box").addClass("bottom_v").removeClass("bottom_p")
+                $(".help").addClass("help_v").removeClass("help_p")
+                $(".qrcode").fadeOut()
+                if ($OP.width * 2 > $(window).width()) {
+                    winsalc = $(window).width() / ($OP.width * 2)
+                    $(".flipbook-viewport").css({
+                        "transform": "scale(" + winsalc + ")",
+                    })
+                } else {
+                    $(".flipbook-viewport").css({
+                        "transform": "scale(1)",
+                    })
+                }
+                $(".flipbook-viewport .flipbook").css({ "width": ($OP.width * 2) + "px", "height": $OP.height * 2 + "px", "left": "-" + $OP.width + "px", "top": "-" + ($OP.height) + "px" })
+                $(".page").css("height", $OP.height * 2)
+            }
+            offthum()
+            $(".speed_p").hide()
+            $(".speed_v").hide()
+            pansepalyer()
+        }
+
+        // 监听窗口
+        var timer;
+        $(window).resize(function () {
+            if (timer) clearTimeout(timer);
+            timer = setTimeout(function () {
+                windowonresize()
+                setTimeout(() => {
+                    windowonresize()
+                }, 500);
+            }, 300)
+        })
+
+
+
+
+        // 微信禁止拖动
+        // document.body.addEventListener('touchmove', function (evt) {
+        //     evt.preventDefault()
+        // }, { passive: false })
+
+        // 苹果
+        function isIOS() {
+            var u = navigator.userAgent;
+            var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
+            if (isiOS) {
+                $(".bottom_v").css("height", "60px")
+            }
+        }
+        // 公共关闭弹窗
+        $(document).on('click', '.book_close', function () {
+            if (window.parent.vue_app) {
+                window.parent.vue_app.close_iframe();
+                return
+            }
+            window.parent.close_iframe();
+        });
+    </script>
+</body>
+
+</html>

BIN=BIN
netbook/pages/1/1.png


BIN=BIN
netbook/pages/1/10.png


BIN=BIN
netbook/pages/1/11.png


BIN=BIN
netbook/pages/1/12.png


BIN=BIN
netbook/pages/1/13.png


BIN=BIN
netbook/pages/1/14.png


BIN=BIN
netbook/pages/1/15.png


BIN=BIN
netbook/pages/1/16.png


BIN=BIN
netbook/pages/1/17.png


BIN=BIN
netbook/pages/1/18.png


BIN=BIN
netbook/pages/1/19.png


BIN=BIN
netbook/pages/1/2.png


BIN=BIN
netbook/pages/1/20.png


BIN=BIN
netbook/pages/1/21.png


BIN=BIN
netbook/pages/1/22.png


BIN=BIN
netbook/pages/1/23.png


BIN=BIN
netbook/pages/1/24.png


BIN=BIN
netbook/pages/1/25.png


BIN=BIN
netbook/pages/1/26.png


BIN=BIN
netbook/pages/1/27.png


BIN=BIN
netbook/pages/1/28.png


BIN=BIN
netbook/pages/1/29.png


BIN=BIN
netbook/pages/1/3.png


BIN=BIN
netbook/pages/1/30.png


BIN=BIN
netbook/pages/1/31.png


BIN=BIN
netbook/pages/1/32.png


BIN=BIN
netbook/pages/1/33.png


BIN=BIN
netbook/pages/1/34.png


BIN=BIN
netbook/pages/1/35.png


BIN=BIN
netbook/pages/1/36.png


BIN=BIN
netbook/pages/1/37.png


BIN=BIN
netbook/pages/1/38.png


BIN=BIN
netbook/pages/1/39.png


BIN=BIN
netbook/pages/1/4.png


BIN=BIN
netbook/pages/1/40.png


BIN=BIN
netbook/pages/1/41.png


BIN=BIN
netbook/pages/1/42.png


BIN=BIN
netbook/pages/1/43.png


BIN=BIN
netbook/pages/1/44.png


BIN=BIN
netbook/pages/1/45.png


BIN=BIN
netbook/pages/1/46.png


BIN=BIN
netbook/pages/1/47.png


BIN=BIN
netbook/pages/1/48.png


BIN=BIN
netbook/pages/1/49.png


BIN=BIN
netbook/pages/1/5.png


BIN=BIN
netbook/pages/1/50.png


BIN=BIN
netbook/pages/1/51.png


BIN=BIN
netbook/pages/1/52.png


BIN=BIN
netbook/pages/1/53.png


BIN=BIN
netbook/pages/1/54.png


BIN=BIN
netbook/pages/1/55.png


BIN=BIN
netbook/pages/1/56.png


BIN=BIN
netbook/pages/1/57.png


BIN=BIN
netbook/pages/1/58.png


BIN=BIN
netbook/pages/1/59.png


BIN=BIN
netbook/pages/1/6.png


BIN=BIN
netbook/pages/1/60.png


BIN=BIN
netbook/pages/1/61.png


BIN=BIN
netbook/pages/1/62.png


BIN=BIN
netbook/pages/1/63.png


BIN=BIN
netbook/pages/1/64.png


BIN=BIN
netbook/pages/1/65.png


BIN=BIN
netbook/pages/1/66.png


BIN=BIN
netbook/pages/1/67.png


+ 0 - 0
netbook/pages/1/68.png


Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio