Browse Source

页面初始化

master
xuhuajiao 1 year ago
parent
commit
ae26fdaca8
  1. 11
      .env.development
  2. 9
      .env.production
  3. 197
      .eslintrc.js
  4. 23
      .gitignore
  5. 38
      README.md
  6. 11
      babel.config.js
  7. 61
      package.json
  8. 20
      public/index.html
  9. 3514
      public/static/adapter.min.js
  10. 5
      public/static/config.js
  11. 305
      public/static/webrtcstreamer.js
  12. 313
      public/static/webrtcstreamer2.js
  13. BIN
      public/webA/textures/3.jpg
  14. BIN
      public/webTotal/asset/Line.glb
  15. BIN
      public/webTotal/asset/TotalCamera.glb
  16. BIN
      public/webTotal/asset/total2.glb
  17. BIN
      public/webTotal/asset/totalw.glb
  18. BIN
      public/webTotal/img/bl9.png
  19. BIN
      public/webTotal/img/bof.gif
  20. BIN
      public/webTotal/img/logo.png
  21. BIN
      public/webTotal/img/logok.gif
  22. BIN
      public/webTotal/img/sky.jpg
  23. BIN
      public/webTotal/img/x02.png
  24. BIN
      public/webTotal/img/yxlogo.png
  25. 866
      public/webTotal/index.html
  26. 1016
      public/webTotal/index.js
  27. 16
      public/webTotal/js/babylon.gui.min.js
  28. 16
      public/webTotal/js/babylon.js
  29. 16
      public/webTotal/js/babylonjs.loaders.min.js
  30. 104
      public/webTotal/js/draco_wasm_wrapper_gltf.js
  31. 2
      public/webTotal/js/jquery-3.5.1.min.js
  32. 18706
      public/webTotal/js/jquery-ui.js
  33. 11008
      public/webTotal/js/jquery.js
  34. 1473
      public/webTotal/js/pep.js
  35. 1
      public/webTotal/js/qrcode.min.js
  36. BIN
      public/webTotal/logok.gif
  37. BIN
      public/webTotal/textures/4.jpg
  38. BIN
      public/webTotal/textures/5.jpg
  39. BIN
      public/webTotal/textures/Flare.png
  40. BIN
      public/webTotal/textures/a.png
  41. BIN
      public/webTotal/textures/b.png
  42. BIN
      public/webTotal/textures/ball_light_01.png
  43. BIN
      public/webTotal/textures/circular_03.png
  44. BIN
      public/webTotal/textures/environmentSpecular.env
  45. BIN
      public/webTotal/textures/sun.png
  46. BIN
      public/webTotal/textures/textures.rar
  47. 41
      src/App.vue
  48. 175
      src/api/library.js
  49. BIN
      src/assets/fonts/DingTalk_JinBuTi_Regular.ttf
  50. 6
      src/assets/fonts/fonts.css
  51. BIN
      src/assets/images/1.png
  52. BIN
      src/assets/images/2.png
  53. BIN
      src/assets/images/3.png
  54. BIN
      src/assets/images/4.png
  55. BIN
      src/assets/images/5-1.png
  56. BIN
      src/assets/images/5.png
  57. BIN
      src/assets/images/6.png
  58. BIN
      src/assets/images/bg2.png
  59. BIN
      src/assets/images/data_border_default.png
  60. BIN
      src/assets/images/data_border_warn.png
  61. BIN
      src/assets/images/fixed-icon.png
  62. BIN
      src/assets/images/fixed-icon1.png
  63. BIN
      src/assets/images/header-bg.png
  64. BIN
      src/assets/images/header_03.png
  65. BIN
      src/assets/images/header_05.png
  66. BIN
      src/assets/images/header_07.png
  67. BIN
      src/assets/images/header_09.png
  68. BIN
      src/assets/images/header_11.png
  69. BIN
      src/assets/images/header_13.png
  70. BIN
      src/assets/images/header_13_b.png
  71. BIN
      src/assets/images/header_15.png
  72. BIN
      src/assets/images/icon-video5.png
  73. BIN
      src/assets/images/icon1.png
  74. BIN
      src/assets/images/icon2.png
  75. BIN
      src/assets/images/icon3.png
  76. BIN
      src/assets/images/icon4.png
  77. BIN
      src/assets/images/icon5.png
  78. BIN
      src/assets/images/icon6.png
  79. BIN
      src/assets/images/icon7.png
  80. BIN
      src/assets/images/mapBg.png
  81. BIN
      src/assets/images/page4_02.png
  82. BIN
      src/assets/images/page4_03.png
  83. BIN
      src/assets/images/title-big.png
  84. BIN
      src/assets/images/title-small.png
  85. 244
      src/assets/js/rollSlide.js
  86. 336
      src/assets/js/tagscloud.js
  87. 23
      src/assets/json/lib.json
  88. 1
      src/assets/json/qy.json
  89. BIN
      src/assets/logo.png
  90. 821
      src/assets/styles/index.scss
  91. 86
      src/assets/styles/style.scss
  92. 147
      src/common/flexible.js
  93. 61
      src/common/scrollMixins.js
  94. 63
      src/components/SvgIcon/index.vue
  95. 234
      src/components/alarm copy.vue
  96. 240
      src/components/alarm.vue
  97. 185
      src/components/echart/water.vue
  98. 153
      src/components/echart/waterPressure.vue
  99. 153
      src/components/echart/waterPressureOutDoor.vue
  100. 61
      src/components/hkVideo.vue

11
.env.development

@ -0,0 +1,11 @@
ENV = 'development'
# 接口地址
# 许镇-本地服地址
VUE_APP_BASE_API = 'http://192.168.99.67:6066'
# VUE_APP_BASE_API = 'http://27.19.209.92:13244'
VUE_APP_LIB_API = 'http://118.253.150.248:8099'
# 是否启用 babel-plugin-dynamic-import-node插件
VUE_CLI_BABEL_TRANSPILE_MODULES = true

9
.env.production

@ -0,0 +1,9 @@
ENV = 'production'
# 如果使用 Nginx 代理后端接口,那么此处需要改为 '/',文件查看 Docker 部署篇,Nginx 配置
# 接口地址,注意协议,如果你没有配置 ssl,需要将 https 改为 http
VUE_APP_BASE_API = 'http://192.168.1.80:7070'
VUE_APP_LIB_API = 'http://118.253.150.248:8099'
# VUE_APP_BASE_API = 'http://127.0.0.1:8080'
# 如果接口是 http 形式, wss 需要改为 ws
VUE_APP_WS_API = 'ws://192.168.1.80:7071'

197
.eslintrc.js

@ -0,0 +1,197 @@
module.exports = {
root: true,
parserOptions: {
parser: 'babel-eslint',
sourceType: 'module'
},
env: {
browser: true,
node: true,
es6: true,
},
extends: ['plugin:vue/recommended', 'eslint:recommended'],
rules: {
"vue/max-attributes-per-line": [2, {
"singleline": 10,
"multiline": {
"max": 1,
"allowFirstLine": false
}
}],
"vue/singleline-html-element-content-newline": "off",
"vue/multiline-html-element-content-newline":"off",
"vue/name-property-casing": ["error", "PascalCase"],
"vue/no-v-html": "off",
'accessor-pairs': 2,
'arrow-spacing': [2, {
'before': true,
'after': true
}],
'block-spacing': [2, 'always'],
'brace-style': [2, '1tbs', {
'allowSingleLine': true
}],
'camelcase': [0, {
'properties': 'always'
}],
'comma-dangle': [2, 'never'],
'comma-spacing': [2, {
'before': false,
'after': true
}],
'comma-style': [2, 'last'],
'constructor-super': 2,
'curly': [2, 'multi-line'],
'dot-location': [2, 'property'],
'eol-last': 2,
'eqeqeq': ["error", "always", {"null": "ignore"}],
'generator-star-spacing': [2, {
'before': true,
'after': true
}],
'handle-callback-err': [2, '^(err|error)$'],
'indent': [2, 2, {
'SwitchCase': 1
}],
'jsx-quotes': [2, 'prefer-single'],
'key-spacing': [2, {
'beforeColon': false,
'afterColon': true
}],
'keyword-spacing': [2, {
'before': true,
'after': true
}],
'new-cap': [2, {
'newIsCap': true,
'capIsNew': false
}],
'new-parens': 2,
'no-array-constructor': 2,
'no-caller': 2,
'no-console': 'off',
'no-class-assign': 2,
'no-cond-assign': 2,
'no-const-assign': 2,
'no-control-regex': 0,
'no-delete-var': 2,
'no-dupe-args': 2,
'no-dupe-class-members': 2,
'no-dupe-keys': 2,
'no-duplicate-case': 2,
'no-empty-character-class': 2,
'no-empty-pattern': 2,
'no-eval': 2,
'no-ex-assign': 2,
'no-extend-native': 2,
'no-extra-bind': 2,
'no-extra-boolean-cast': 2,
'no-extra-parens': [2, 'functions'],
'no-fallthrough': 2,
'no-floating-decimal': 2,
'no-func-assign': 2,
'no-implied-eval': 2,
'no-inner-declarations': [2, 'functions'],
'no-invalid-regexp': 2,
'no-irregular-whitespace': 2,
'no-iterator': 2,
'no-label-var': 2,
'no-labels': [2, {
'allowLoop': false,
'allowSwitch': false
}],
'no-lone-blocks': 2,
'no-mixed-spaces-and-tabs': 2,
'no-multi-spaces': 2,
'no-multi-str': 2,
'no-multiple-empty-lines': [2, {
'max': 1
}],
'no-native-reassign': 2,
'no-negated-in-lhs': 2,
'no-new-object': 2,
'no-new-require': 2,
'no-new-symbol': 2,
'no-new-wrappers': 2,
'no-obj-calls': 2,
'no-octal': 2,
'no-octal-escape': 2,
'no-path-concat': 2,
'no-proto': 2,
'no-redeclare': 2,
'no-regex-spaces': 2,
'no-return-assign': [2, 'except-parens'],
'no-self-assign': 2,
'no-self-compare': 2,
'no-sequences': 2,
'no-shadow-restricted-names': 2,
'no-spaced-func': 2,
'no-sparse-arrays': 2,
'no-this-before-super': 2,
'no-throw-literal': 2,
'no-trailing-spaces': 2,
'no-undef':'off',
'no-undef-init': 2,
'no-unexpected-multiline': 2,
'no-unmodified-loop-condition': 2,
'no-unneeded-ternary': [2, {
'defaultAssignment': false
}],
'no-unreachable': 2,
'no-unsafe-finally': 2,
'no-unused-vars': [2, {
'vars': 'all',
'args': 'none'
}],
'no-useless-call': 2,
'no-useless-computed-key': 2,
'no-useless-constructor': 2,
'no-useless-escape': 0,
'no-whitespace-before-property': 2,
'no-with': 2,
'one-var': [2, {
'initialized': 'never'
}],
'operator-linebreak': [2, 'after', {
'overrides': {
'?': 'before',
':': 'before'
}
}],
'padded-blocks': [2, 'never'],
'quotes': [2, 'single', {
'avoidEscape': true,
'allowTemplateLiterals': true
}],
'semi': [2, 'never'],
'semi-spacing': [2, {
'before': false,
'after': true
}],
'space-before-blocks': [2, 'always'],
'space-before-function-paren': [2, 'never'],
'space-in-parens': [2, 'never'],
'space-infix-ops': 2,
'space-unary-ops': [2, {
'words': true,
'nonwords': false
}],
'spaced-comment': [2, 'always', {
'markers': ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ',']
}],
'template-curly-spacing': [2, 'never'],
'use-isnan': 2,
'valid-typeof': 2,
'wrap-iife': [2, 'any'],
'yield-star-spacing': [2, 'both'],
'yoda': [2, 'never'],
'prefer-const': 2,
'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,
'object-curly-spacing': [2, 'always', {
objectsInObjects: false
}],
'array-bracket-spacing': [2, 'never']
}
}

23
.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*
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
package-lock.json

38
README.md

@ -0,0 +1,38 @@
智慧安消全景数字看板
```bash
# install dependency
npm install
# develop
npm run serve
# 构建生产环境
npm run build
```
```bash
## 项目结构
├── src # 源代码
│ ├── api # 所有请求
│ ├── assets # 主题 字体等静态资源
│ ├── components # 全局组件
│ │ ├── echart # echart
│ ├── router # 路由
│ ├── views # views 所有页面
│ │ ├── header # 头部
│ │ ├── map # 地图页 第二页
│ │ ├── pageFour # 第四页
│ │ ├── pageOne # 第一页
│ │ ├── pageThree # 第三页
│ │ ├── index # 主页
│ ├── App.vue # 入口页面
│ ├── main.js # 入口文件 加载组件 初始化等
├── .env.xxx # 环境变量配置
├── .eslintrc.js # eslint 配置项
├── .babelrc # babel-loader 配置
├── .travis.yml # 自动化CI配置
├── vue.config.js # vue-cli 配置
├── postcss.config.js # postcss 配置
└── package.json # package.json
```

11
babel.config.js

@ -0,0 +1,11 @@
const plugins = ['@vue/babel-plugin-transform-vue-jsx', '@babel/plugin-proposal-optional-chaining', '@babel/plugin-proposal-nullish-coalescing-operator']
// 生产环境移除console
if (process.env.NODE_ENV === 'production') {
plugins.push('transform-remove-console')
}
module.exports = {
plugins: plugins,
presets: [
'@vue/cli-plugin-babel/preset'
]
}

61
package.json

@ -0,0 +1,61 @@
{
"name": "qy-big-screen",
"version": "1.0.0",
"description": "智慧安消全景数字看板",
"scripts": {
"serve": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve",
"build": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build",
"lint": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service lint"
},
"dependencies": {
"@babel/core": "^7.19.0",
"@babel/preset-env": "^7.19.0",
"@jiaminghi/data-view": "^2.7.3",
"@types/echarts": "^4.4.3",
"axios": "^0.27.2",
"core-js": "^3.6.4",
"echarts": "^5.6.0",
"element-ui": "^2.15.10",
"jquery": "^3.7.1",
"svg-sprite-loader": "^6.0.11",
"v-scale-screen": "^1.0.0",
"vue": "^2.7.14",
"vue-awesome": "^4.0.2",
"vue-count-to": "^1.0.13",
"vue-router": "^3.1.5",
"vue-seamless-scroll": "^1.1.23",
"vuex": "^3.1.2"
},
"devDependencies": {
"@vue/cli-plugin-babel": "^4.2.0",
"@vue/cli-plugin-eslint": "^4.2.0",
"@vue/cli-service": "^4.2.0",
"babel-eslint": "^10.0.3",
"babel-plugin-transform-remove-console": "^6.9.4",
"eslint": "^6.7.2",
"eslint-plugin-vue": "^6.1.2",
"sass": "^1.25.0",
"sass-loader": "^8.0.2",
"videojs-contrib-hls": "^5.15.0",
"vue-awesome-swiper": "^3.1.3",
"vue-template-compiler": "^2.6.11"
},
"eslintConfig": {
"root": true,
"env": {
"node": true
},
"extends": [
"plugin:vue/essential",
"eslint:recommended"
],
"parserOptions": {
"parser": "babel-eslint"
},
"rules": {}
},
"browserslist": [
"> 1%",
"last 2 versions"
]
}

20
public/index.html

@ -0,0 +1,20 @@
<!DOCTYPE html>
<html lang="zh">
<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">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title><%= htmlWebpackPlugin.options.title %></title>
<script src="/static/adapter.min.js"></script>
<script src="/static/webrtcstreamer.js"></script>
<script type="text/javascript" src="/static/config.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>

3514
public/static/adapter.min.js
File diff suppressed because it is too large
View File

5
public/static/config.js

@ -0,0 +1,5 @@
window.g = {
AXIOS_TIMEOUT: 10000,
ApiUrl: 'http://192.168.99.107:6066', // 配置服务器地址,
LibUrl: 'http://118.253.150.248:8099' // 图创地址
}

305
public/static/webrtcstreamer.js

@ -0,0 +1,305 @@
var WebRtcStreamer = (function() {
/**
* Interface with WebRTC-streamer API
* @constructor
* @param {string} videoElement - id of the video element tag
* @param {string} srvurl - url of webrtc-streamer (default is current location)
*/
var WebRtcStreamer = function WebRtcStreamer (videoElement, srvurl) {
if (typeof videoElement === "string") {
this.videoElement = document.getElementById(videoElement);
} else {
this.videoElement = videoElement;
}
this.srvurl = srvurl || location.protocol+"//"+window.location.hostname+":"+window.location.port;
this.pc = null;
this.mediaConstraints = { offerToReceiveAudio: true, offerToReceiveVideo: true };
this.iceServers = null;
this.earlyCandidates = [];
}
WebRtcStreamer.prototype._handleHttpErrors = function (response) {
if (!response.ok) {
throw Error(response.statusText);
}
return response;
}
/**
* Connect a WebRTC Stream to videoElement
* @param {string} videourl - id of WebRTC video stream
* @param {string} audiourl - id of WebRTC audio stream
* @param {string} options - options of WebRTC call
* @param {string} stream - local stream to send
*/
WebRtcStreamer.prototype.connect = function(videourl, audiourl, options, localstream) {
this.disconnect();
// getIceServers is not already received
if (!this.iceServers) {
console.log("Get IceServers");
fetch(this.srvurl + "/api/getIceServers")
.then(this._handleHttpErrors)
.then( (response) => (response.json()) )
.then( (response) => this.onReceiveGetIceServers(response, videourl, audiourl, options, localstream))
.catch( (error) => this.onError("getIceServers " + error ))
} else {
this.onReceiveGetIceServers(this.iceServers, videourl, audiourl, options, localstream);
}
}
/**
* Disconnect a WebRTC Stream and clear videoElement source
*/
WebRtcStreamer.prototype.disconnect = function() {
if (this.videoElement?.srcObject) {
this.videoElement.srcObject.getTracks().forEach(track => {
track.stop()
this.videoElement.srcObject.removeTrack(track);
});
}
if (this.pc) {
fetch(this.srvurl + "/api/hangup?peerid=" + this.pc.peerid)
.then(this._handleHttpErrors)
.catch( (error) => this.onError("hangup " + error ))
try {
this.pc.close();
}
catch (e) {
console.log ("Failure close peer connection:" + e);
}
this.pc = null;
}
}
/*
* GetIceServers callback
*/
WebRtcStreamer.prototype.onReceiveGetIceServers = function(iceServers, videourl, audiourl, options, stream) {
this.iceServers = iceServers;
this.pcConfig = iceServers || {"iceServers": [] };
try {
this.createPeerConnection();
var callurl = this.srvurl + "/api/call?peerid=" + this.pc.peerid + "&url=" + encodeURIComponent(videourl);
if (audiourl) {
callurl += "&audiourl="+encodeURIComponent(audiourl);
}
if (options) {
callurl += "&options="+encodeURIComponent(options);
}
if (stream) {
this.pc.addStream(stream);
}
// clear early candidates
this.earlyCandidates.length = 0;
// create Offer
this.pc.createOffer(this.mediaConstraints).then((sessionDescription) => {
console.log("Create offer:" + JSON.stringify(sessionDescription));
this.pc.setLocalDescription(sessionDescription)
.then(() => {
fetch(callurl, { method: "POST", body: JSON.stringify(sessionDescription) })
.then(this._handleHttpErrors)
.then( (response) => (response.json()) )
.catch( (error) => this.onError("call " + error ))
.then( (response) => this.onReceiveCall(response) )
.catch( (error) => this.onError("call " + error ))
}, (error) => {
console.log ("setLocalDescription error:" + JSON.stringify(error));
});
}, (error) => {
alert("Create offer error:" + JSON.stringify(error));
});
} catch (e) {
this.disconnect();
alert("connect error: " + e);
}
}
WebRtcStreamer.prototype.getIceCandidate = function() {
fetch(this.srvurl + "/api/getIceCandidate?peerid=" + this.pc.peerid)
.then(this._handleHttpErrors)
.then( (response) => (response.json()) )
.then( (response) => this.onReceiveCandidate(response))
.catch( (error) => this.onError("getIceCandidate " + error ))
}
/*
* create RTCPeerConnection
*/
WebRtcStreamer.prototype.createPeerConnection = function() {
console.log("createPeerConnection config: " + JSON.stringify(this.pcConfig));
this.pc = new RTCPeerConnection(this.pcConfig);
var pc = this.pc;
pc.peerid = Math.random();
pc.onicecandidate = (evt) => this.onIceCandidate(evt);
pc.onaddstream = (evt) => this.onAddStream(evt);
pc.oniceconnectionstatechange = (evt) => {
console.log("oniceconnectionstatechange state: " + pc.iceConnectionState);
if (this.videoElement) {
if (pc.iceConnectionState === "connected") {
this.videoElement.style.opacity = "1.0";
}
else if (pc.iceConnectionState === "disconnected") {
this.videoElement.style.opacity = "0.25";
}
else if ( (pc.iceConnectionState === "failed") || (pc.iceConnectionState === "closed") ) {
this.videoElement.style.opacity = "0.5";
} else if (pc.iceConnectionState === "new") {
this.getIceCandidate();
}
}
}
pc.ondatachannel = function(evt) {
console.log("remote datachannel created:"+JSON.stringify(evt));
evt.channel.onopen = function () {
console.log("remote datachannel open");
this.send("remote channel openned");
}
evt.channel.onmessage = function (event) {
console.log("remote datachannel recv:"+JSON.stringify(event.data));
}
}
pc.onicegatheringstatechange = function() {
if (pc.iceGatheringState === "complete") {
const recvs = pc.getReceivers();
recvs.forEach((recv) => {
if (recv.track && recv.track.kind === "video") {
console.log("codecs:" + JSON.stringify(recv.getParameters().codecs))
}
});
}
}
try {
var dataChannel = pc.createDataChannel("ClientDataChannel");
dataChannel.onopen = function() {
console.log("local datachannel open");
this.send("local channel openned");
}
dataChannel.onmessage = function(evt) {
console.log("local datachannel recv:"+JSON.stringify(evt.data));
}
} catch (e) {
console.log("Cannor create datachannel error: " + e);
}
console.log("Created RTCPeerConnnection with config: " + JSON.stringify(this.pcConfig) );
return pc;
}
/*
* RTCPeerConnection IceCandidate callback
*/
WebRtcStreamer.prototype.onIceCandidate = function (event) {
if (event.candidate) {
if (this.pc.currentRemoteDescription) {
this.addIceCandidate(this.pc.peerid, event.candidate);
} else {
this.earlyCandidates.push(event.candidate);
}
}
else {
console.log("End of candidates.");
}
}
WebRtcStreamer.prototype.addIceCandidate = function(peerid, candidate) {
fetch(this.srvurl + "/api/addIceCandidate?peerid="+peerid, { method: "POST", body: JSON.stringify(candidate) })
.then(this._handleHttpErrors)
.then( (response) => (response.json()) )
.then( (response) => {console.log("addIceCandidate ok:" + response)})
.catch( (error) => this.onError("addIceCandidate " + error ))
}
/*
* RTCPeerConnection AddTrack callback
*/
WebRtcStreamer.prototype.onAddStream = function(event) {
console.log("Remote track added:" + JSON.stringify(event));
this.videoElement.srcObject = event.stream;
var promise = this.videoElement.play();
if (promise !== undefined) {
promise.catch((error) => {
console.warn("error:"+error);
this.videoElement.setAttribute("controls", true);
});
}
}
/*
* AJAX /call callback
*/
WebRtcStreamer.prototype.onReceiveCall = function(dataJson) {
console.log("offer: " + JSON.stringify(dataJson));
var descr = new RTCSessionDescription(dataJson);
this.pc.setRemoteDescription(descr).then(() => {
console.log ("setRemoteDescription ok");
while (this.earlyCandidates.length) {
var candidate = this.earlyCandidates.shift();
this.addIceCandidate(this.pc.peerid, candidate);
}
this.getIceCandidate()
}
, (error) => {
console.log ("setRemoteDescription error:" + JSON.stringify(error));
});
}
/*
* AJAX /getIceCandidate callback
*/
WebRtcStreamer.prototype.onReceiveCandidate = function(dataJson) {
console.log("candidate: " + JSON.stringify(dataJson));
if (dataJson) {
for (var i=0; i<dataJson.length; i++) {
var candidate = new RTCIceCandidate(dataJson[i]);
console.log("Adding ICE candidate :" + JSON.stringify(candidate) );
this.pc.addIceCandidate(candidate).then( () => { console.log ("addIceCandidate OK"); }
, (error) => { console.log ("addIceCandidate error:" + JSON.stringify(error)); } );
}
this.pc.addIceCandidate();
}
}
/*
* AJAX callback for Error
*/
WebRtcStreamer.prototype.onError = function(status) {
console.log("onError:" + status);
}
return WebRtcStreamer;
})();
if (typeof window !== 'undefined' && typeof window.document !== 'undefined') {
window.WebRtcStreamer = WebRtcStreamer;
}
if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {
module.exports = WebRtcStreamer;
}

313
public/static/webrtcstreamer2.js

@ -0,0 +1,313 @@
var WebRtcStreamer = (function() {
/**
* Interface with WebRTC-streamer API
* @constructor
* @param {string} videoElement - id of the video element tag
* @param {string} srvurl - url of webrtc-streamer (default is current location)
*/
var WebRtcStreamer = function WebRtcStreamer (videoElement, srvurl) {
if (typeof videoElement === "string") {
this.videoElement = document.getElementById(videoElement);
} else {
this.videoElement = videoElement;
}
this.srvurl = srvurl || location.protocol+"//"+window.location.hostname+":"+window.location.port;
this.pc = null;
this.mediaConstraints = { offerToReceiveAudio: true, offerToReceiveVideo: true };
this.iceServers = null;
this.earlyCandidates = [];
}
WebRtcStreamer.prototype._handleHttpErrors = function (response) {
if (!response.ok) {
throw Error(response.statusText);
}
return response;
}
/**
* Connect a WebRTC Stream to videoElement
* @param {string} videourl - id of WebRTC video stream
* @param {string} audiourl - id of WebRTC audio stream
* @param {string} options - options of WebRTC call
* @param {string} stream - local stream to send
* @param {string} prefmime - prefered mime
*/
WebRtcStreamer.prototype.connect = function(videourl, audiourl, options, localstream, prefmime) {
this.disconnect();
// getIceServers is not already received
if (!this.iceServers) {
console.log("Get IceServers");
fetch(this.srvurl + "/api/getIceServers")
.then(this._handleHttpErrors)
.then( (response) => (response.json()) )
.then( (response) => this.onReceiveGetIceServers(response, videourl, audiourl, options, localstream, prefmime))
.catch( (error) => this.onError("getIceServers " + error ))
} else {
this.onReceiveGetIceServers(this.iceServers, videourl, audiourl, options, localstream, prefmime);
}
}
/**
* Disconnect a WebRTC Stream and clear videoElement source
*/
WebRtcStreamer.prototype.disconnect = function() {
if (this.videoElement?.srcObject) {
this.videoElement.srcObject.getTracks().forEach(track => {
track.stop()
this.videoElement.srcObject.removeTrack(track);
});
}
if (this.pc) {
fetch(this.srvurl + "/api/hangup?peerid=" + this.pc.peerid)
.then(this._handleHttpErrors)
.catch( (error) => this.onError("hangup " + error ))
try {
this.pc.close();
}
catch (e) {
console.log ("Failure close peer connection:" + e);
}
this.pc = null;
}
}
/*
* GetIceServers callback
*/
WebRtcStreamer.prototype.onReceiveGetIceServers = function(iceServers, videourl, audiourl, options, stream, prefmime) {
this.iceServers = iceServers;
this.pcConfig = iceServers || {"iceServers": [] };
try {
this.createPeerConnection();
var callurl = this.srvurl + "/api/call?peerid=" + this.pc.peerid + "&url=" + encodeURIComponent(videourl);
if (audiourl) {
callurl += "&audiourl="+encodeURIComponent(audiourl);
}
if (options) {
callurl += "&options="+encodeURIComponent(options);
}
if (stream) {
this.pc.addStream(stream);
}
// clear early candidates
this.earlyCandidates.length = 0;
// create Offer
this.pc.createOffer(this.mediaConstraints).then((sessionDescription) => {
console.log("Create offer:" + JSON.stringify(sessionDescription));
console.log(`video codecs:${Array.from(new Set(RTCRtpReceiver.getCapabilities("video")?.codecs?.map(codec => codec.mimeType)))}`)
console.log(`audio codecs:${Array.from(new Set(RTCRtpReceiver.getCapabilities("audio")?.codecs?.map(codec => codec.mimeType)))}`)
if (prefmime != undefined) {
//set prefered codec
const [prefkind] = prefmime.split('/');
const codecs = RTCRtpReceiver.getCapabilities(prefkind).codecs;
const preferedCodecs = codecs.filter(codec => codec.mimeType === prefmime);
console.log(`preferedCodecs:${JSON.stringify(preferedCodecs)}`);
this.pc.getTransceivers().filter(transceiver => transceiver.receiver.track.kind === prefkind).forEach(tcvr => {
if(tcvr.setCodecPreferences != undefined) {
tcvr.setCodecPreferences(preferedCodecs);
}
});
}
this.pc.setLocalDescription(sessionDescription)
.then(() => {
fetch(callurl, { method: "POST", body: JSON.stringify(sessionDescription) })
.then(this._handleHttpErrors)
.then( (response) => (response.json()) )
.catch( (error) => this.onError("call " + error ))
.then( (response) => this.onReceiveCall(response) )
.catch( (error) => this.onError("call " + error ))
}, (error) => {
console.log ("setLocalDescription error:" + JSON.stringify(error));
});
}, (error) => {
alert("Create offer error:" + JSON.stringify(error));
});
} catch (e) {
this.disconnect();
alert("connect error: " + e);
}
}
WebRtcStreamer.prototype.getIceCandidate = function() {
fetch(this.srvurl + "/api/getIceCandidate?peerid=" + this.pc.peerid)
.then(this._handleHttpErrors)
.then( (response) => (response.json()) )
.then( (response) => this.onReceiveCandidate(response))
.catch( (error) => this.onError("getIceCandidate " + error ))
}
/*
* create RTCPeerConnection
*/
WebRtcStreamer.prototype.createPeerConnection = function() {
console.log("createPeerConnection config: " + JSON.stringify(this.pcConfig));
this.pc = new RTCPeerConnection(this.pcConfig);
var pc = this.pc;
pc.peerid = Math.random();
pc.onicecandidate = (evt) => this.onIceCandidate(evt);
pc.onaddstream = (evt) => this.onAddStream(evt);
pc.oniceconnectionstatechange = (evt) => {
console.log("oniceconnectionstatechange state: " + pc.iceConnectionState);
if (this.videoElement) {
if (pc.iceConnectionState === "connected") {
this.videoElement.style.opacity = "1.0";
}
else if (pc.iceConnectionState === "disconnected") {
this.videoElement.style.opacity = "0.25";
}
else if ( (pc.iceConnectionState === "failed") || (pc.iceConnectionState === "closed") ) {
this.videoElement.style.opacity = "0.5";
} else if (pc.iceConnectionState === "new") {
this.getIceCandidate();
}
}
}
pc.ondatachannel = function(evt) {
console.log("remote datachannel created:"+JSON.stringify(evt));
evt.channel.onopen = function () {
console.log("remote datachannel open");
this.send("remote channel openned");
}
evt.channel.onmessage = function (event) {
console.log("remote datachannel recv:"+JSON.stringify(event.data));
}
}
try {
var dataChannel = pc.createDataChannel("ClientDataChannel");
dataChannel.onopen = function() {
console.log("local datachannel open");
this.send("local channel openned");
}
dataChannel.onmessage = function(evt) {
console.log("local datachannel recv:"+JSON.stringify(evt.data));
}
} catch (e) {
console.log("Cannor create datachannel error: " + e);
}
console.log("Created RTCPeerConnnection with config: " + JSON.stringify(this.pcConfig) );
return pc;
}
/*
* RTCPeerConnection IceCandidate callback
*/
WebRtcStreamer.prototype.onIceCandidate = function (event) {
if (event.candidate) {
if (this.pc.currentRemoteDescription) {
this.addIceCandidate(this.pc.peerid, event.candidate);
} else {
this.earlyCandidates.push(event.candidate);
}
}
else {
console.log("End of candidates.");
}
}
WebRtcStreamer.prototype.addIceCandidate = function(peerid, candidate) {
fetch(this.srvurl + "/api/addIceCandidate?peerid="+peerid, { method: "POST", body: JSON.stringify(candidate) })
.then(this._handleHttpErrors)
.then( (response) => (response.json()) )
.then( (response) => {console.log("addIceCandidate ok:" + response)})
.catch( (error) => this.onError("addIceCandidate " + error ))
}
/*
* RTCPeerConnection AddTrack callback
*/
WebRtcStreamer.prototype.onAddStream = function(event) {
console.log("Remote track added:" + JSON.stringify(event));
this.videoElement.srcObject = event.stream;
var promise = this.videoElement.play();
if (promise !== undefined) {
promise.catch((error) => {
console.warn("error:"+error);
this.videoElement.setAttribute("controls", true);
});
}
}
/*
* AJAX /call callback
*/
WebRtcStreamer.prototype.onReceiveCall = function(dataJson) {
console.log("offer: " + JSON.stringify(dataJson));
var descr = new RTCSessionDescription(dataJson);
this.pc.setRemoteDescription(descr).then(() => {
console.log ("setRemoteDescription ok");
while (this.earlyCandidates.length) {
var candidate = this.earlyCandidates.shift();
this.addIceCandidate(this.pc.peerid, candidate);
}
this.getIceCandidate()
}
, (error) => {
console.log ("setRemoteDescription error:" + JSON.stringify(error));
});
}
/*
* AJAX /getIceCandidate callback
*/
WebRtcStreamer.prototype.onReceiveCandidate = function(dataJson) {
console.log("candidate: " + JSON.stringify(dataJson));
if (dataJson) {
for (var i=0; i<dataJson.length; i++) {
var candidate = new RTCIceCandidate(dataJson[i]);
console.log("Adding ICE candidate :" + JSON.stringify(candidate) );
this.pc.addIceCandidate(candidate).then( () => { console.log ("addIceCandidate OK"); }
, (error) => { console.log ("addIceCandidate error:" + JSON.stringify(error)); } );
}
this.pc.addIceCandidate();
}
}
/*
* AJAX callback for Error
*/
WebRtcStreamer.prototype.onError = function(status) {
console.log("onError:" + status);
}
return WebRtcStreamer;
})();
if (typeof window !== 'undefined' && typeof window.document !== 'undefined') {
window.WebRtcStreamer = WebRtcStreamer;
}
if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {
module.exports = WebRtcStreamer;
}

BIN
public/webA/textures/3.jpg

Before

Width: 655  |  Height: 300  |  Size: 14 KiB

BIN
public/webTotal/asset/Line.glb

BIN
public/webTotal/asset/TotalCamera.glb

BIN
public/webTotal/asset/total2.glb

BIN
public/webTotal/asset/totalw.glb

BIN
public/webTotal/img/bl9.png

After

Width: 2000  |  Height: 100  |  Size: 29 KiB

BIN
public/webTotal/img/bof.gif

After

Width: 61  |  Height: 61  |  Size: 6.0 KiB

BIN
public/webTotal/img/logo.png

After

Width: 389  |  Height: 87  |  Size: 6.8 KiB

BIN
public/webTotal/img/logok.gif

After

Width: 436  |  Height: 140  |  Size: 206 KiB

BIN
public/webTotal/img/sky.jpg

After

Width: 1024  |  Height: 1024  |  Size: 30 KiB

BIN
public/webTotal/img/x02.png

After

Width: 64  |  Height: 64  |  Size: 745 B

BIN
public/webTotal/img/yxlogo.png

After

Width: 54  |  Height: 54  |  Size: 3.6 KiB

866
public/webTotal/index.html

@ -0,0 +1,866 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html" charset="UTF-8" />
<meta name="screen-orientation" content="landscape" charset="UTF-8" />
<meta content="width=device-width, initial-scale=0.4, maximum-scale=0.4, user-scalable=0" name="viewport">
<meta http-equiv="Pragma" content="Cache-control: max-age=10000" />
<title>全景图</title>
<style>
html,
body {
overflow: hidden;
margin: 0;
padding: 0;
}
img {
width: 100%;
height: auto;
}
video {
width: 100%;
height: auto;
}
.font22 {
font-size: 20px;
}
.jiazaiimg {
width: 436px;
height: auto;
margin: 50% auto 0;
padding: 0px 200px;
font-size: 30px;
}
.zc {
color: white;
width: 436px;
height: 140px;
margin: 85% auto 0;
padding: 0px 240px;
font-size: 30px;
}
.zcpc {
color: white;
width: 100%;
height: 40px;
font-size: 20px;
position: fixed;
bottom: 10px;
text-align: center;
}
.divTransform {
position: absolute;
width: 100%;
height: 100%;
}
#renderCanvas {
width: 100%;
height: 100vh;
touch-action: none;
outline: none;
-webkit-tap-highlight-color: rgba(255, 255, 255, 0);
/* mobile webkit */
touch-action: none;
background-repeat: no-repeat no-repeat;
background-size: cover;
}
#show {
width: 100%;
font-size: 35px;
line-height: 70px;
}
.mytitle {
width: 100%;
text-align: center;
font-size: 43px;
font-weight: 700;
color: white;
margin-top: 75px;
margin-bottom: 20px;
}
.introduce {
width: 600px;
height: auto;
background: url('img/shuomingkuang@2x.png') no-repeat;
background-size: 100% 100%;
position: fixed;
top: 38%;
left: 19%;
z-index: 99;
color: white;
padding: 35px 28px;
font-size: 10px;
display: none;
}
.introduce2{
width: 520px;
height: auto;
background: url('img/shuomingkuang@2x.png') no-repeat;
background-size: 100% 100%;
position: fixed;
bottom: 10%;
left: 30%;
z-index: 99;
color: white;
padding:20px;
font-size: 14px;
line-height: 19px;
display: none;
}
.xingshang {
width: 100%;
position: fixed;
bottom: 0px;
left: 0;
height: 340px;
box-sizing: border-box;
padding: 20px 30px;
color: white;
background-color: rgba(0, 0, 0, 0.6);
overflow-x: hidden;
overflow-y: hidden;
border-radius: 35px 35px 0 0;
display: none;
}
.xingshangpc {
width: 520px;
height: 100%;
margin: 0 auto;
box-sizing: border-box;
padding: 20px 30px;
color: white;
}
.zuoimg {
width: 38px;
height: 72px;
margin: 48px 29px;
}
.zuoimgpc {
width: 13px;
height: 22px;
margin: 18px 7px;
}
.xsul {
width: 100%;
display: flex;
justify-content: space-between;
margin-top: 50px;
}
.xsli {
/* margin: 0 10px; */
font-size: 28px;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.xslipc {
font-size: 14px;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.xsimg {
width: 72px;
height: 72px;
margin: 25px;
}
.xsimgpc {
width: 32px;
height: 32px;
margin: 12px;
}
.jiange {
width: 22px;
height: 22px;
margin-top: 53px;
}
.jiangepc {
width: 15px;
height: 15px;
margin-top: 22px;
}
.beijing {
width: 100%;
position: fixed;
bottom: 0px;
left: 0;
height: 420px;
box-sizing: border-box;
padding: 20px 30px;
color: white;
background-color: rgba(0, 0, 0, 0.6);
overflow-x: hidden;
overflow-y: hidden;
border-radius: 35px 35px 0 0;
display: none;
}
.beijingpc-di,.xingsh-di{
width: 81.2%;
position: fixed;
bottom: 30px;
left: 0px;
height: 220px;
background-image: linear-gradient(to right, rgba(0,0,0,0) 0 , rgba(0,0,0,0.3) 8%, rgba(0,0,0,0.5) 18%,rgba(0,0,0,0.5) 80%, rgba(0,0,0,0.3) 90%, rgba(0,0,0,0) 100%);
display: none;
}
/*.xingsh-di{
display: block;
}*/
.beijingpc {
width: 50%;
height: 100%;
margin: 0 auto;
box-sizing: border-box;
padding: 10px 15px;
color: white;
display: flex;
justify-content: center;
align-items: center;
}
.leftpc,.rightpc{
width: 12px;
height: 21px;
margin:0 12px;
display: flex;
align-items: center;
}
.leftimgpc,.rightimgpc{
width: 12px;
height: 21px;
margin-top: 25px;
}
.zhongj{
width: 93%;
max-width: 880px;
height: 100%;
overflow-x: auto;
overflow-y: hidden;
}
.bjtit {
font-size: 38px;
display: flex;
justify-content: space-between;
margin: 37px 0 27px;
}
.bjtitpc {
font-size: 18px;
display: flex;
justify-content: space-between;
margin: 14px 0;
}
.ycdiv {
display: flex;
justify-content: space-between;
align-items: center;
width: 132px;
}
.ycdivpc {
display: flex;
justify-content: space-between;
align-items: center;
width: 45px;
font-size: 11px;
}
.ycimg {
width: 38px;
height: 28px;
}
.ycimgpc {
width: 16px;
height: 12px;
}
.bjul {
width: 100%;
display: flex;
margin: 0;
padding: 0;
overflow-y: hidden;
overflow-x: auto;
}
.bjulpc {
/*width: 100%;*/
height: 140px;
display: flex;
}
.bjulpc-di{
width: 100%;
height: 140px;
display: flex;
margin: 0;
padding: 0;
overflow-y: hidden;
overflow-x: auto;
}
.bjulpc-di::-webkit-scrollbar {
display: none
}
.bjli {
margin: 0 10px;
font-size: 36px;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.bjlipc {
margin: 0 5px;
font-size: 14px;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.bjdiv {
height: 188px;
display: flex;
justify-content: center;
align-items: flex-end;
}
.bjdivpc {
height: 120px;
display: flex;
justify-content: center;
align-items: flex-end;
}
.bjimg {
width: 138px;
height: 138px;
margin-bottom: 20px;
border-radius: 14px;
}
.bjimgpc {
width: 98px;
height: 98px;
margin-bottom: 10px;
border-radius: 6px;
}
.contint2 {
width: 100%;
position: fixed;
bottom: 0px;
left: 0;
height: 300px;
box-sizing: border-box;
padding: 20px 30px;
color: white;
background-color: rgba(0, 0, 0, 0.6);
overflow-x: hidden;
overflow-y: hidden;
border-radius: 35px 35px 0 0;
}
.contint2::-webkit-scrollbar {
display: none;
}
.main2 {
width: 100%;
height: auto;
display: none;
}
.shangla,
.xiala {
width: 100%;
height: 160px;
text-align: center;
position: fixed;
bottom: 140px;
left: 0;
border-radius: 35px 35px 0 0;
display: block;
z-index: 99;
background-image: linear-gradient(to top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.18));
}
.xialaimg {
width: 80px;
height: 11px;
margin-top: 44px;
}
.oprition {
width: 100%;
position: fixed;
top: 30px;
left: 0;
z-index: 999;
display: flex;
justify-content: center;
}
.listimg {
width: 150px;
position: relative;
display: flex;
flex-direction: column;
align-items: center;
}
.listimg img {
width: 103px;
height: 103px;
}
.conts {
width: 100%;
font-size: 28px;
color: white;
height: 101px;
box-sizing: border-box;
padding: 30px;
text-align: center;
border-radius: 5px;
text-align: center;
}
.contcj,
.contzk,
.contxx {
width: 124px;
}
.contbj,
.conthy,
.contcz {
width: 178px;
}
.mengban {
position: fixed;
top: 0;
left: 0;
width: 100%;
z-index: 1000;
background-color: rgba(0, 0, 0, 0);
}
/* .articcont {
width: 100%;
position: fixed;
top: 30%;
left: 0;
z-index: 9999;
background-color: rgba(0, 0, 0, 0.6);
border-radius: 10px;
padding: 30px;
box-sizing: border-box;
display: none;
}
.articcont:after {
content: '';
display: inline-block;
width: 0;
height: 0;
border: 20px solid transparent;
border-bottom: 20px solid rgba(0, 0, 0, 0.6);
position: absolute;
top: -38px;
right: 48%;
}*/
.ul {
width: 100%;
}
.shoushi {
width: 800px;
height: auto;
padding: 110px
}
.span1 {
font-size: 66px;
color: white;
margin-right: 13px;
position: relative;
bottom: 10px;
}
.know {
width: 200px;
text-align: center;
padding: 16px 0;
font-size: 32px;
margin: 30px auto 0;
border-radius: 10px;
color: white;
font-weight: 600;
}
.ikngb {
width: 57px;
height: 57px;
}
/*pc端*/
.mains {
width: 18.8%;
display: none;
box-sizing: border-box;
}
.contint {
width: 100%;
/*height: 250px;*/
box-sizing: border-box;
color: white;
background-color: rgba(0, 0, 0, 0.6);
overflow-x: hidden;
overflow-y: hidden;
background: #151837;
}
.title2 {
width: 100%;
height: 62px;
background-color: #151837;
color: white;
display: flex;
justify-content: space-between;
align-items: center;
box-sizing: border-box;
padding: 0 20px;
font-size: 22px;
font-weight: 700;
}
.oprition2 {
position: fixed;
top: 10px;
right: 19%;
width: 56px;
}
.listimg2 {
margin-top: 20px;
position: relative;
}
.listimg2 img {
width: 47px;
height: 47px;
}
.conts2 {
background: rgb(0, 0, 0, 0.5);
font-size: 14px;
color: white;
height: 32px;
line-height: 32px;
box-sizing: border-box;
text-align: center;
border-radius: 3px;
position: absolute;
right: 73px;
top: 10px;
display: none;
}
.conts2:after {
content: '';
display: inline-block;
width: 0;
height: 0;
border: 7px solid transparent;
border-left: 7px solid rgba(0, 0, 0, 0.8);
position: absolute;
top: 7px;
right: -14px;
}
/* .articcont2 {
width: 800px;
height: 700px;
margin: 50px auto;
background-color: rgba(0, 0, 0, 0.6);
border-radius: 10px;
padding: 20px;
box-sizing: border-box;
}
.articcont2:after {
content: '';
display: inline-block;
width: 0;
height: 0;
border: 10px solid transparent;
border-top: 10px solid rgba(0, 0, 0, 0.6);
position: absolute;
top: 202px;
right: 48%;
}
*/
.ul2 {
width: 100%;
color: white;
}
.li2 {
width: 100%;
font-size: 14px;
line-height: 19px;
}
.mengban2 {
position: fixed;
top: 0;
left: 0;
width: 81.2%;
background-color: rgba(0, 0, 0, 0.2);
display: none;
z-index: 10;
}
.knowpc {
font-size: 14px;
width: 83px;
height: 33px;
line-height: 33px;
text-align: center;
background-color: #008aff;
margin: 20px auto 0;
border-radius: 5px;
color: white;
font-weight: 600;
cursor: pointer;
}
.span2 {
font-size: 36px;
color: white;
margin-right: 13px;
position: relative;
bottom: 3px;
}
.shuop1 {
font-size: 15px;
}
.oka {
width: 100%;
height: 100%;
background: #021941;
position: fixed;
z-index: 99;
/* padding: 35px 28px; */
font-size: 30px;
/*display: none;*/
}
/*下面是音乐的css*/
.lohingif {
width: 100%;
height: auto;
display: flex;
justify-content: center;
}
.lohingifpc {
width: 100%;
height: auto;
display: flex;
top: 50%; /*偏移*/
transform: translateY(-50%);
}
.feitimg {
width: 20px;
height: auto;
position: relative;
top: 3px;
}
.fatherdiv {
margin: 25px;
width: 72px;
height: 72px;
position: relative;
background-color: #f3f3f3;
border-radius: 50%;
}
.persentdiv {
display: none;
margin: -24px 0px 0px 0px;
width: 72px;
height: 72px;
border-radius: 50%;
position: absolute;
clip: rect(0, 72px, 72px, 36px);
}
.persentleft {
position: absolute;
width: 72px;
height: 72px;
border: 10px solid #1890ff;
box-sizing: border-box;
border-radius: 50%;
clip: rect(0, 36px, 72px, 0);
}
.persentright {
position: absolute;
width: 72px;
height: 72px;
border: 10px solid #1890ff;
box-sizing: border-box;
border-radius: 50%;
clip: rect(0, 72px, 72px, 36px);
}
.persentdivpc {
display: none;
margin: -10px 0px 0px 0px;
width: 32px;
height: 32px;
border-radius: 50%;
position: absolute;
clip: rect(0, 32px, 32px, 16px);
}
.persentleftpc {
position: absolute;
width: 32px;
height: 32px;
border: 5px solid #1890ff;
box-sizing: border-box;
border-radius: 50%;
clip: rect(0,16px, 32px, 0);
}
.persentrightpc {
position: absolute;
width: 32px;
height: 32px;
border: 5px solid #1890ff;
box-sizing: border-box;
border-radius: 50%;
clip: rect(0, 32px, 32px, 16px);
}
.wth0 {
width: 0;
}
.num {
position: absolute;
box-sizing: border-box;
width: 130px;
height: 130px;
line-height: 130px;
text-align: center;
font-size: 32px;
left: 10px;
top: 10px;
border-radius: 50%;
background-color: #fff;
color: #1890ff;
z-index: 1;
}
.clip-auto {
clip: rect(auto, auto, auto, auto);
}
.rotate {
-webkit-animation: rotating 3s linear infinite;
animation: rotating 3s linear infinite;
animation-play-state: running;
-webkit-animation-play-state: running;
/* Safari 和 Chrome */
}
.rotate-pause {
animation-play-state: paused;
-webkit-animation-play-state: paused;
/* Safari 和 Chrome */
}
@-webkit-keyframes rotating {
from {
-webkit-transform: rotate(0)
}
to {
-webkit-transform: rotate(360deg)
}
}
@keyframes rotating {
from {
transform: rotate(0)
}
to {
transform: rotate(360deg)
}
}
@-moz-keyframes rotating {
from {
-moz-transform: rotate(0)
}
to {
-moz-transform: rotate(360deg)
}
}
</style>
</head>
<body>
<div class="divTransform">
<canvas id="renderCanvas" style="background: transparent;" touch-action="none"></canvas>
</div>
<div id="customLoadingScreenDiv_first" style="position: absolute;left: 0px;top: 0px;width: 1158.1px;height: 1211px;display: initial;">
<!-- <div class="oka"><div class="lohingif"><img src="./logok.gif" class="jiazaiimg">
</div><div class="zcpc">&nbsp;&nbsp;</div>
</div> -->
</div>
<!--div id="ddx" style="position: absolute;left: 0px;top: 0px;width: 200.1px;height: 211px;display: initial;">
<input id="da" type="text" name="lname" value="档案柜02"><br>
<input type="submit" value="提交" onclick=" var vx=document.getElementById('da').value; movebyName(vx)">
</div-->
<!--- Link to the last version of BabylonJS --->
<script src="./js/jquery-3.5.1.min.js"></script>
<script src="./js/pep.js"></script>
<script src="./js/babylon.js"></script>
<script src="./js/babylonjs.loaders.min.js"></script>
<script src="./js/babylon.gui.min.js"></script>
<script src="./js/draco_wasm_wrapper_gltf.js"></script>
<script src="./index.js"></script>
</body>
</html>

1016
public/webTotal/index.js
File diff suppressed because it is too large
View File

16
public/webTotal/js/babylon.gui.min.js
File diff suppressed because it is too large
View File

16
public/webTotal/js/babylon.js
File diff suppressed because it is too large
View File

16
public/webTotal/js/babylonjs.loaders.min.js
File diff suppressed because it is too large
View File

104
public/webTotal/js/draco_wasm_wrapper_gltf.js

@ -0,0 +1,104 @@
var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.arrayIteratorImpl=function(f){var m=0;return function(){return m<f.length?{done:!1,value:f[m++]}:{done:!0}}};$jscomp.arrayIterator=function(f){return{next:$jscomp.arrayIteratorImpl(f)}};$jscomp.makeIterator=function(f){var m="undefined"!=typeof Symbol&&Symbol.iterator&&f[Symbol.iterator];return m?m.call(f):$jscomp.arrayIterator(f)};
$jscomp.getGlobal=function(f){return"undefined"!=typeof window&&window===f?f:"undefined"!=typeof global&&null!=global?global:f};$jscomp.global=$jscomp.getGlobal(this);$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(f,m,v){f!=Array.prototype&&f!=Object.prototype&&(f[m]=v.value)};
$jscomp.polyfill=function(f,m,v,t){if(m){v=$jscomp.global;f=f.split(".");for(t=0;t<f.length-1;t++){var h=f[t];h in v||(v[h]={});v=v[h]}f=f[f.length-1];t=v[f];m=m(t);m!=t&&null!=m&&$jscomp.defineProperty(v,f,{configurable:!0,writable:!0,value:m})}};$jscomp.FORCE_POLYFILL_PROMISE=!1;
$jscomp.polyfill("Promise",function(f){function m(){this.batch_=null}function v(e){return e instanceof h?e:new h(function(l,f){l(e)})}if(f&&!$jscomp.FORCE_POLYFILL_PROMISE)return f;m.prototype.asyncExecute=function(e){if(null==this.batch_){this.batch_=[];var l=this;this.asyncExecuteFunction(function(){l.executeBatch_()})}this.batch_.push(e)};var t=$jscomp.global.setTimeout;m.prototype.asyncExecuteFunction=function(e){t(e,0)};m.prototype.executeBatch_=function(){for(;this.batch_&&this.batch_.length;){var e=
this.batch_;this.batch_=[];for(var l=0;l<e.length;++l){var f=e[l];e[l]=null;try{f()}catch(z){this.asyncThrow_(z)}}}this.batch_=null};m.prototype.asyncThrow_=function(e){this.asyncExecuteFunction(function(){throw e;})};var h=function(e){this.state_=0;this.result_=void 0;this.onSettledCallbacks_=[];var l=this.createResolveAndReject_();try{e(l.resolve,l.reject)}catch(S){l.reject(S)}};h.prototype.createResolveAndReject_=function(){function e(e){return function(h){f||(f=!0,e.call(l,h))}}var l=this,f=!1;
return{resolve:e(this.resolveTo_),reject:e(this.reject_)}};h.prototype.resolveTo_=function(e){if(e===this)this.reject_(new TypeError("A Promise cannot resolve to itself"));else if(e instanceof h)this.settleSameAsPromise_(e);else{a:switch(typeof e){case "object":var l=null!=e;break a;case "function":l=!0;break a;default:l=!1}l?this.resolveToNonPromiseObj_(e):this.fulfill_(e)}};h.prototype.resolveToNonPromiseObj_=function(e){var l=void 0;try{l=e.then}catch(S){this.reject_(S);return}"function"==typeof l?
this.settleSameAsThenable_(l,e):this.fulfill_(e)};h.prototype.reject_=function(e){this.settle_(2,e)};h.prototype.fulfill_=function(e){this.settle_(1,e)};h.prototype.settle_=function(e,l){if(0!=this.state_)throw Error("Cannot settle("+e+", "+l+"): Promise already settled in state"+this.state_);this.state_=e;this.result_=l;this.executeOnSettledCallbacks_()};h.prototype.executeOnSettledCallbacks_=function(){if(null!=this.onSettledCallbacks_){for(var e=0;e<this.onSettledCallbacks_.length;++e)X.asyncExecute(this.onSettledCallbacks_[e]);
this.onSettledCallbacks_=null}};var X=new m;h.prototype.settleSameAsPromise_=function(e){var l=this.createResolveAndReject_();e.callWhenSettled_(l.resolve,l.reject)};h.prototype.settleSameAsThenable_=function(e,l){var f=this.createResolveAndReject_();try{e.call(l,f.resolve,f.reject)}catch(z){f.reject(z)}};h.prototype.then=function(e,f){function l(e,f){return"function"==typeof e?function(f){try{m(e(f))}catch(p){v(p)}}:f}var m,v,t=new h(function(e,f){m=e;v=f});this.callWhenSettled_(l(e,m),l(f,v));return t};
h.prototype.catch=function(e){return this.then(void 0,e)};h.prototype.callWhenSettled_=function(e,f){function l(){switch(h.state_){case 1:e(h.result_);break;case 2:f(h.result_);break;default:throw Error("Unexpected state: "+h.state_);}}var h=this;null==this.onSettledCallbacks_?X.asyncExecute(l):this.onSettledCallbacks_.push(l)};h.resolve=v;h.reject=function(e){return new h(function(f,h){h(e)})};h.race=function(e){return new h(function(f,h){for(var l=$jscomp.makeIterator(e),m=l.next();!m.done;m=l.next())v(m.value).callWhenSettled_(f,
h)})};h.all=function(e){var f=$jscomp.makeIterator(e),m=f.next();return m.done?v([]):new h(function(e,h){function l(f){return function(h){t[f]=h;z--;0==z&&e(t)}}var t=[],z=0;do t.push(void 0),z++,v(m.value).callWhenSettled_(l(t.length-1),h),m=f.next();while(!m.done)})};return h},"es6","es3");
var DracoDecoderModule=function(){var f="undefined"!==typeof document&&document.currentScript?document.currentScript.src:void 0;"undefined"!==typeof __filename&&(f=f||__filename);return function(m){function v(k){return a.locateFile?a.locateFile(k,M):M+k}function t(a,c){a||z("Assertion failed: "+c)}function h(a,c,b){var d=c+b;for(b=c;a[b]&&!(b>=d);)++b;if(16<b-c&&a.subarray&&xa)return xa.decode(a.subarray(c,b));for(d="";c<b;){var k=a[c++];if(k&128){var e=a[c++]&63;if(192==(k&224))d+=String.fromCharCode((k&
31)<<6|e);else{var f=a[c++]&63;k=224==(k&240)?(k&15)<<12|e<<6|f:(k&7)<<18|e<<12|f<<6|a[c++]&63;65536>k?d+=String.fromCharCode(k):(k-=65536,d+=String.fromCharCode(55296|k>>10,56320|k&1023))}}else d+=String.fromCharCode(k)}return d}function X(a,c){return a?h(ca,a,c):""}function e(a,c){0<a%c&&(a+=c-a%c);return a}function l(k){ka=k;a.HEAP8=T=new Int8Array(k);a.HEAP16=new Int16Array(k);a.HEAP32=P=new Int32Array(k);a.HEAPU8=ca=new Uint8Array(k);a.HEAPU16=new Uint16Array(k);a.HEAPU32=new Uint32Array(k);
a.HEAPF32=new Float32Array(k);a.HEAPF64=new Float64Array(k)}function S(k){for(;0<k.length;){var c=k.shift();if("function"==typeof c)c();else{var b=c.func;"number"===typeof b?void 0===c.arg?a.dynCall_v(b):a.dynCall_vi(b,c.arg):b(void 0===c.arg?null:c.arg)}}}function z(k){if(a.onAbort)a.onAbort(k);k+="";ya(k);Y(k);za=!0;throw new WebAssembly.RuntimeError("abort("+k+"). Build with -s ASSERTIONS=1 for more info.");}function va(a){return String.prototype.startsWith?a.startsWith("data:application/octet-stream;base64,"):
0===a.indexOf("data:application/octet-stream;base64,")}function wa(){try{if(da)return new Uint8Array(da);if(la)return la(U);throw"both async and sync fetching of the wasm failed";}catch(k){z(k)}}function Ma(){return da||!ea&&!Z||"function"!==typeof fetch?new Promise(function(a,c){a(wa())}):fetch(U,{credentials:"same-origin"}).then(function(a){if(!a.ok)throw"failed to load wasm binary file at '"+U+"'";return a.arrayBuffer()}).catch(function(){return wa()})}function ba(){if(!ba.strings){var a={USER:"web_user",
LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"===typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:na},c;for(c in Aa)a[c]=Aa[c];var b=[];for(c in a)b.push(c+"="+a[c]);ba.strings=b}return ba.strings}function ma(k){function c(){if(!fa&&(fa=!0,!za)){Ba=!0;S(Ca);S(Da);if(a.onRuntimeInitialized)a.onRuntimeInitialized();if(a.postRun)for("function"==typeof a.postRun&&(a.postRun=[a.postRun]);a.postRun.length;)Ea.unshift(a.postRun.shift());
S(Ea)}}if(!(0<aa)){if(a.preRun)for("function"==typeof a.preRun&&(a.preRun=[a.preRun]);a.preRun.length;)Fa.unshift(a.preRun.shift());S(Fa);0<aa||(a.setStatus?(a.setStatus("Running..."),setTimeout(function(){setTimeout(function(){a.setStatus("")},1);c()},1)):c())}}function p(){}function u(a){return(a||p).__cache__}function N(a,c){var b=u(c),d=b[a];if(d)return d;d=Object.create((c||p).prototype);d.ptr=a;return b[a]=d}function V(a){if("string"===typeof a){for(var c=0,b=0;b<a.length;++b){var d=a.charCodeAt(b);
55296<=d&&57343>=d&&(d=65536+((d&1023)<<10)|a.charCodeAt(++b)&1023);127>=d?++c:c=2047>=d?c+2:65535>=d?c+3:c+4}c=Array(c+1);b=0;d=c.length;if(0<d){d=b+d-1;for(var k=0;k<a.length;++k){var e=a.charCodeAt(k);if(55296<=e&&57343>=e){var f=a.charCodeAt(++k);e=65536+((e&1023)<<10)|f&1023}if(127>=e){if(b>=d)break;c[b++]=e}else{if(2047>=e){if(b+1>=d)break;c[b++]=192|e>>6}else{if(65535>=e){if(b+2>=d)break;c[b++]=224|e>>12}else{if(b+3>=d)break;c[b++]=240|e>>18;c[b++]=128|e>>12&63}c[b++]=128|e>>6&63}c[b++]=128|
e&63}}c[b]=0}a=n.alloc(c,T);n.copy(c,T,a)}return a}function x(){throw"cannot construct a Status, no constructor in IDL";}function A(){this.ptr=Oa();u(A)[this.ptr]=this}function B(){this.ptr=Pa();u(B)[this.ptr]=this}function C(){this.ptr=Qa();u(C)[this.ptr]=this}function D(){this.ptr=Ra();u(D)[this.ptr]=this}function E(){this.ptr=Sa();u(E)[this.ptr]=this}function q(){this.ptr=Ta();u(q)[this.ptr]=this}function J(){this.ptr=Ua();u(J)[this.ptr]=this}function w(){this.ptr=Va();u(w)[this.ptr]=this}function F(){this.ptr=
Wa();u(F)[this.ptr]=this}function r(){this.ptr=Xa();u(r)[this.ptr]=this}function G(){this.ptr=Ya();u(G)[this.ptr]=this}function H(){this.ptr=Za();u(H)[this.ptr]=this}function O(){this.ptr=$a();u(O)[this.ptr]=this}function K(){this.ptr=ab();u(K)[this.ptr]=this}function g(){this.ptr=bb();u(g)[this.ptr]=this}function y(){this.ptr=cb();u(y)[this.ptr]=this}function Q(){throw"cannot construct a VoidPtr, no constructor in IDL";}function I(){this.ptr=db();u(I)[this.ptr]=this}function L(){this.ptr=eb();u(L)[this.ptr]=
this}m=m||{};var a="undefined"!==typeof m?m:{},Ga=!1,Ha=!1;a.onRuntimeInitialized=function(){Ga=!0;if(Ha&&"function"===typeof a.onModuleLoaded)a.onModuleLoaded(a)};a.onModuleParsed=function(){Ha=!0;if(Ga&&"function"===typeof a.onModuleLoaded)a.onModuleLoaded(a)};a.isVersionSupported=function(a){if("string"!==typeof a)return!1;a=a.split(".");return 2>a.length||3<a.length?!1:1==a[0]&&0<=a[1]&&3>=a[1]?!0:0!=a[0]||10<a[1]?!1:!0};var ha={},W;for(W in a)a.hasOwnProperty(W)&&(ha[W]=a[W]);var na="./this.program",
ea=!1,Z=!1,oa=!1,fb=!1,Ia=!1;ea="object"===typeof window;Z="function"===typeof importScripts;oa=(fb="object"===typeof process&&"object"===typeof process.versions&&"string"===typeof process.versions.node)&&!ea&&!Z;Ia=!ea&&!oa&&!Z;var M="",pa,qa;if(oa){M=__dirname+"/";var ra=function(a,c){pa||(pa=require("fs"));qa||(qa=require("path"));a=qa.normalize(a);return pa.readFileSync(a,c?null:"utf8")};var la=function(a){a=ra(a,!0);a.buffer||(a=new Uint8Array(a));t(a.buffer);return a};1<process.argv.length&&
(na=process.argv[1].replace(/\\/g,"/"));process.argv.slice(2);process.on("uncaughtException",function(a){throw a;});process.on("unhandledRejection",z);a.inspect=function(){return"[Emscripten Module object]"}}else if(Ia)"undefined"!=typeof read&&(ra=function(a){return read(a)}),la=function(a){if("function"===typeof readbuffer)return new Uint8Array(readbuffer(a));a=read(a,"binary");t("object"===typeof a);return a},"undefined"!==typeof print&&("undefined"===typeof console&&(console={}),console.log=print,
console.warn=console.error="undefined"!==typeof printErr?printErr:print);else if(ea||Z)Z?M=self.location.href:document.currentScript&&(M=document.currentScript.src),f&&(M=f),M=0!==M.indexOf("blob:")?M.substr(0,M.lastIndexOf("/")+1):"",ra=function(a){var c=new XMLHttpRequest;c.open("GET",a,!1);c.send(null);return c.responseText},Z&&(la=function(a){var c=new XMLHttpRequest;c.open("GET",a,!1);c.responseType="arraybuffer";c.send(null);return new Uint8Array(c.response)});var ya=a.print||console.log.bind(console),
Y=a.printErr||console.warn.bind(console);for(W in ha)ha.hasOwnProperty(W)&&(a[W]=ha[W]);ha=null;a.thisProgram&&(na=a.thisProgram);var da;a.wasmBinary&&(da=a.wasmBinary);"object"!==typeof WebAssembly&&Y("no native wasm support detected");var ia,gb=new WebAssembly.Table({initial:293,maximum:293,element:"anyfunc"}),za=!1,xa="undefined"!==typeof TextDecoder?new TextDecoder("utf8"):void 0;"undefined"!==typeof TextDecoder&&new TextDecoder("utf-16le");var T,ca,P,Ja=a.TOTAL_MEMORY||16777216;if(ia=a.wasmMemory?
a.wasmMemory:new WebAssembly.Memory({initial:Ja/65536}))var ka=ia.buffer;Ja=ka.byteLength;l(ka);P[3416]=5256704;var Fa=[],Ca=[],Da=[],Ea=[],Ba=!1,aa=0,sa=null,ja=null;a.preloadedImages={};a.preloadedAudios={};var U="draco_decoder.wasm";va(U)||(U=v(U));Ca.push({func:function(){hb()}});var Aa={},R={buffers:[null,[],[]],printChar:function(a,c){var b=R.buffers[a];0===c||10===c?((1===a?ya:Y)(h(b,0)),b.length=0):b.push(c)},varargs:0,get:function(a){R.varargs+=4;return P[R.varargs-4>>2]},getStr:function(){return X(R.get())},
get64:function(){var a=R.get();R.get();return a},getZero:function(){R.get()}},Ka={__cxa_allocate_exception:function(a){return ib(a)},__cxa_throw:function(a,c,b){"uncaught_exception"in ta?ta.uncaught_exceptions++:ta.uncaught_exceptions=1;throw a;},abort:function(){z()},emscripten_get_sbrk_ptr:function(){return 13664},emscripten_memcpy_big:function(a,c,b){ca.set(ca.subarray(c,c+b),a)},emscripten_resize_heap:function(a){if(2147418112<a)return!1;for(var c=Math.max(T.length,16777216);c<a;)c=536870912>=
c?e(2*c,65536):Math.min(e((3*c+2147483648)/4,65536),2147418112);a:{try{ia.grow(c-ka.byteLength+65535>>16);l(ia.buffer);var b=1;break a}catch(d){}b=void 0}return b?!0:!1},environ_get:function(a,c){var b=0;ba().forEach(function(d,e){var f=c+b;e=P[a+4*e>>2]=f;for(f=0;f<d.length;++f)T[e++>>0]=d.charCodeAt(f);T[e>>0]=0;b+=d.length+1});return 0},environ_sizes_get:function(a,c){var b=ba();P[a>>2]=b.length;var d=0;b.forEach(function(a){d+=a.length+1});P[c>>2]=d;return 0},fd_close:function(a){return 0},fd_seek:function(a,
c,b,d,e){return 0},fd_write:function(a,c,b,d){try{for(var e=0,f=0;f<b;f++){for(var g=P[c+8*f>>2],k=P[c+(8*f+4)>>2],h=0;h<k;h++)R.printChar(a,ca[g+h]);e+=k}P[d>>2]=e;return 0}catch(ua){return"undefined"!==typeof FS&&ua instanceof FS.ErrnoError||z(ua),ua.errno}},memory:ia,setTempRet0:function(a){},table:gb},La=function(){function e(c,b){a.asm=c.exports;aa--;a.monitorRunDependencies&&a.monitorRunDependencies(aa);0==aa&&(null!==sa&&(clearInterval(sa),sa=null),ja&&(c=ja,ja=null,c()))}function c(a){e(a.instance)}
function b(a){return Ma().then(function(a){return WebAssembly.instantiate(a,d)}).then(a,function(a){Y("failed to asynchronously prepare wasm: "+a);z(a)})}var d={env:Ka,wasi_unstable:Ka};aa++;a.monitorRunDependencies&&a.monitorRunDependencies(aa);if(a.instantiateWasm)try{return a.instantiateWasm(d,e)}catch(Na){return Y("Module.instantiateWasm callback failed with error: "+Na),!1}(function(){if(da||"function"!==typeof WebAssembly.instantiateStreaming||va(U)||"function"!==typeof fetch)return b(c);fetch(U,
{credentials:"same-origin"}).then(function(a){return WebAssembly.instantiateStreaming(a,d).then(c,function(a){Y("wasm streaming compile failed: "+a);Y("falling back to ArrayBuffer instantiation");b(c)})})})();return{}}();a.asm=La;var hb=a.___wasm_call_ctors=function(){return a.asm.__wasm_call_ctors.apply(null,arguments)},jb=a._emscripten_bind_Status_code_0=function(){return a.asm.emscripten_bind_Status_code_0.apply(null,arguments)},kb=a._emscripten_bind_Status_ok_0=function(){return a.asm.emscripten_bind_Status_ok_0.apply(null,
arguments)},lb=a._emscripten_bind_Status_error_msg_0=function(){return a.asm.emscripten_bind_Status_error_msg_0.apply(null,arguments)},mb=a._emscripten_bind_Status___destroy___0=function(){return a.asm.emscripten_bind_Status___destroy___0.apply(null,arguments)},Oa=a._emscripten_bind_DracoUInt16Array_DracoUInt16Array_0=function(){return a.asm.emscripten_bind_DracoUInt16Array_DracoUInt16Array_0.apply(null,arguments)},nb=a._emscripten_bind_DracoUInt16Array_GetValue_1=function(){return a.asm.emscripten_bind_DracoUInt16Array_GetValue_1.apply(null,
arguments)},ob=a._emscripten_bind_DracoUInt16Array_size_0=function(){return a.asm.emscripten_bind_DracoUInt16Array_size_0.apply(null,arguments)},pb=a._emscripten_bind_DracoUInt16Array___destroy___0=function(){return a.asm.emscripten_bind_DracoUInt16Array___destroy___0.apply(null,arguments)},Pa=a._emscripten_bind_PointCloud_PointCloud_0=function(){return a.asm.emscripten_bind_PointCloud_PointCloud_0.apply(null,arguments)},qb=a._emscripten_bind_PointCloud_num_attributes_0=function(){return a.asm.emscripten_bind_PointCloud_num_attributes_0.apply(null,
arguments)},rb=a._emscripten_bind_PointCloud_num_points_0=function(){return a.asm.emscripten_bind_PointCloud_num_points_0.apply(null,arguments)},sb=a._emscripten_bind_PointCloud___destroy___0=function(){return a.asm.emscripten_bind_PointCloud___destroy___0.apply(null,arguments)},Qa=a._emscripten_bind_DracoUInt8Array_DracoUInt8Array_0=function(){return a.asm.emscripten_bind_DracoUInt8Array_DracoUInt8Array_0.apply(null,arguments)},tb=a._emscripten_bind_DracoUInt8Array_GetValue_1=function(){return a.asm.emscripten_bind_DracoUInt8Array_GetValue_1.apply(null,
arguments)},ub=a._emscripten_bind_DracoUInt8Array_size_0=function(){return a.asm.emscripten_bind_DracoUInt8Array_size_0.apply(null,arguments)},vb=a._emscripten_bind_DracoUInt8Array___destroy___0=function(){return a.asm.emscripten_bind_DracoUInt8Array___destroy___0.apply(null,arguments)},Ra=a._emscripten_bind_DracoUInt32Array_DracoUInt32Array_0=function(){return a.asm.emscripten_bind_DracoUInt32Array_DracoUInt32Array_0.apply(null,arguments)},wb=a._emscripten_bind_DracoUInt32Array_GetValue_1=function(){return a.asm.emscripten_bind_DracoUInt32Array_GetValue_1.apply(null,
arguments)},xb=a._emscripten_bind_DracoUInt32Array_size_0=function(){return a.asm.emscripten_bind_DracoUInt32Array_size_0.apply(null,arguments)},yb=a._emscripten_bind_DracoUInt32Array___destroy___0=function(){return a.asm.emscripten_bind_DracoUInt32Array___destroy___0.apply(null,arguments)},Sa=a._emscripten_bind_AttributeOctahedronTransform_AttributeOctahedronTransform_0=function(){return a.asm.emscripten_bind_AttributeOctahedronTransform_AttributeOctahedronTransform_0.apply(null,arguments)},zb=a._emscripten_bind_AttributeOctahedronTransform_InitFromAttribute_1=
function(){return a.asm.emscripten_bind_AttributeOctahedronTransform_InitFromAttribute_1.apply(null,arguments)},Ab=a._emscripten_bind_AttributeOctahedronTransform_quantization_bits_0=function(){return a.asm.emscripten_bind_AttributeOctahedronTransform_quantization_bits_0.apply(null,arguments)},Bb=a._emscripten_bind_AttributeOctahedronTransform___destroy___0=function(){return a.asm.emscripten_bind_AttributeOctahedronTransform___destroy___0.apply(null,arguments)},Ta=a._emscripten_bind_PointAttribute_PointAttribute_0=
function(){return a.asm.emscripten_bind_PointAttribute_PointAttribute_0.apply(null,arguments)},Cb=a._emscripten_bind_PointAttribute_size_0=function(){return a.asm.emscripten_bind_PointAttribute_size_0.apply(null,arguments)},Db=a._emscripten_bind_PointAttribute_GetAttributeTransformData_0=function(){return a.asm.emscripten_bind_PointAttribute_GetAttributeTransformData_0.apply(null,arguments)},Eb=a._emscripten_bind_PointAttribute_attribute_type_0=function(){return a.asm.emscripten_bind_PointAttribute_attribute_type_0.apply(null,
arguments)},Fb=a._emscripten_bind_PointAttribute_data_type_0=function(){return a.asm.emscripten_bind_PointAttribute_data_type_0.apply(null,arguments)},Gb=a._emscripten_bind_PointAttribute_num_components_0=function(){return a.asm.emscripten_bind_PointAttribute_num_components_0.apply(null,arguments)},Hb=a._emscripten_bind_PointAttribute_normalized_0=function(){return a.asm.emscripten_bind_PointAttribute_normalized_0.apply(null,arguments)},Ib=a._emscripten_bind_PointAttribute_byte_stride_0=function(){return a.asm.emscripten_bind_PointAttribute_byte_stride_0.apply(null,
arguments)},Jb=a._emscripten_bind_PointAttribute_byte_offset_0=function(){return a.asm.emscripten_bind_PointAttribute_byte_offset_0.apply(null,arguments)},Kb=a._emscripten_bind_PointAttribute_unique_id_0=function(){return a.asm.emscripten_bind_PointAttribute_unique_id_0.apply(null,arguments)},Lb=a._emscripten_bind_PointAttribute___destroy___0=function(){return a.asm.emscripten_bind_PointAttribute___destroy___0.apply(null,arguments)},Ua=a._emscripten_bind_AttributeTransformData_AttributeTransformData_0=
function(){return a.asm.emscripten_bind_AttributeTransformData_AttributeTransformData_0.apply(null,arguments)},Mb=a._emscripten_bind_AttributeTransformData_transform_type_0=function(){return a.asm.emscripten_bind_AttributeTransformData_transform_type_0.apply(null,arguments)},Nb=a._emscripten_bind_AttributeTransformData___destroy___0=function(){return a.asm.emscripten_bind_AttributeTransformData___destroy___0.apply(null,arguments)},Va=a._emscripten_bind_AttributeQuantizationTransform_AttributeQuantizationTransform_0=
function(){return a.asm.emscripten_bind_AttributeQuantizationTransform_AttributeQuantizationTransform_0.apply(null,arguments)},Ob=a._emscripten_bind_AttributeQuantizationTransform_InitFromAttribute_1=function(){return a.asm.emscripten_bind_AttributeQuantizationTransform_InitFromAttribute_1.apply(null,arguments)},Pb=a._emscripten_bind_AttributeQuantizationTransform_quantization_bits_0=function(){return a.asm.emscripten_bind_AttributeQuantizationTransform_quantization_bits_0.apply(null,arguments)},
Qb=a._emscripten_bind_AttributeQuantizationTransform_min_value_1=function(){return a.asm.emscripten_bind_AttributeQuantizationTransform_min_value_1.apply(null,arguments)},Rb=a._emscripten_bind_AttributeQuantizationTransform_range_0=function(){return a.asm.emscripten_bind_AttributeQuantizationTransform_range_0.apply(null,arguments)},Sb=a._emscripten_bind_AttributeQuantizationTransform___destroy___0=function(){return a.asm.emscripten_bind_AttributeQuantizationTransform___destroy___0.apply(null,arguments)},
Wa=a._emscripten_bind_DracoInt8Array_DracoInt8Array_0=function(){return a.asm.emscripten_bind_DracoInt8Array_DracoInt8Array_0.apply(null,arguments)},Tb=a._emscripten_bind_DracoInt8Array_GetValue_1=function(){return a.asm.emscripten_bind_DracoInt8Array_GetValue_1.apply(null,arguments)},Ub=a._emscripten_bind_DracoInt8Array_size_0=function(){return a.asm.emscripten_bind_DracoInt8Array_size_0.apply(null,arguments)},Vb=a._emscripten_bind_DracoInt8Array___destroy___0=function(){return a.asm.emscripten_bind_DracoInt8Array___destroy___0.apply(null,
arguments)},Xa=a._emscripten_bind_MetadataQuerier_MetadataQuerier_0=function(){return a.asm.emscripten_bind_MetadataQuerier_MetadataQuerier_0.apply(null,arguments)},Wb=a._emscripten_bind_MetadataQuerier_HasEntry_2=function(){return a.asm.emscripten_bind_MetadataQuerier_HasEntry_2.apply(null,arguments)},Xb=a._emscripten_bind_MetadataQuerier_GetIntEntry_2=function(){return a.asm.emscripten_bind_MetadataQuerier_GetIntEntry_2.apply(null,arguments)},Yb=a._emscripten_bind_MetadataQuerier_GetIntEntryArray_3=
function(){return a.asm.emscripten_bind_MetadataQuerier_GetIntEntryArray_3.apply(null,arguments)},Zb=a._emscripten_bind_MetadataQuerier_GetDoubleEntry_2=function(){return a.asm.emscripten_bind_MetadataQuerier_GetDoubleEntry_2.apply(null,arguments)},$b=a._emscripten_bind_MetadataQuerier_GetStringEntry_2=function(){return a.asm.emscripten_bind_MetadataQuerier_GetStringEntry_2.apply(null,arguments)},ac=a._emscripten_bind_MetadataQuerier_NumEntries_1=function(){return a.asm.emscripten_bind_MetadataQuerier_NumEntries_1.apply(null,
arguments)},bc=a._emscripten_bind_MetadataQuerier_GetEntryName_2=function(){return a.asm.emscripten_bind_MetadataQuerier_GetEntryName_2.apply(null,arguments)},cc=a._emscripten_bind_MetadataQuerier___destroy___0=function(){return a.asm.emscripten_bind_MetadataQuerier___destroy___0.apply(null,arguments)},Ya=a._emscripten_bind_DracoInt16Array_DracoInt16Array_0=function(){return a.asm.emscripten_bind_DracoInt16Array_DracoInt16Array_0.apply(null,arguments)},dc=a._emscripten_bind_DracoInt16Array_GetValue_1=
function(){return a.asm.emscripten_bind_DracoInt16Array_GetValue_1.apply(null,arguments)},ec=a._emscripten_bind_DracoInt16Array_size_0=function(){return a.asm.emscripten_bind_DracoInt16Array_size_0.apply(null,arguments)},fc=a._emscripten_bind_DracoInt16Array___destroy___0=function(){return a.asm.emscripten_bind_DracoInt16Array___destroy___0.apply(null,arguments)},Za=a._emscripten_bind_DracoFloat32Array_DracoFloat32Array_0=function(){return a.asm.emscripten_bind_DracoFloat32Array_DracoFloat32Array_0.apply(null,
arguments)},gc=a._emscripten_bind_DracoFloat32Array_GetValue_1=function(){return a.asm.emscripten_bind_DracoFloat32Array_GetValue_1.apply(null,arguments)},hc=a._emscripten_bind_DracoFloat32Array_size_0=function(){return a.asm.emscripten_bind_DracoFloat32Array_size_0.apply(null,arguments)},ic=a._emscripten_bind_DracoFloat32Array___destroy___0=function(){return a.asm.emscripten_bind_DracoFloat32Array___destroy___0.apply(null,arguments)},$a=a._emscripten_bind_GeometryAttribute_GeometryAttribute_0=function(){return a.asm.emscripten_bind_GeometryAttribute_GeometryAttribute_0.apply(null,
arguments)},jc=a._emscripten_bind_GeometryAttribute___destroy___0=function(){return a.asm.emscripten_bind_GeometryAttribute___destroy___0.apply(null,arguments)},ab=a._emscripten_bind_DecoderBuffer_DecoderBuffer_0=function(){return a.asm.emscripten_bind_DecoderBuffer_DecoderBuffer_0.apply(null,arguments)},kc=a._emscripten_bind_DecoderBuffer_Init_2=function(){return a.asm.emscripten_bind_DecoderBuffer_Init_2.apply(null,arguments)},lc=a._emscripten_bind_DecoderBuffer___destroy___0=function(){return a.asm.emscripten_bind_DecoderBuffer___destroy___0.apply(null,
arguments)},bb=a._emscripten_bind_Decoder_Decoder_0=function(){return a.asm.emscripten_bind_Decoder_Decoder_0.apply(null,arguments)},mc=a._emscripten_bind_Decoder_GetEncodedGeometryType_1=function(){return a.asm.emscripten_bind_Decoder_GetEncodedGeometryType_1.apply(null,arguments)},nc=a._emscripten_bind_Decoder_DecodeBufferToPointCloud_2=function(){return a.asm.emscripten_bind_Decoder_DecodeBufferToPointCloud_2.apply(null,arguments)},oc=a._emscripten_bind_Decoder_DecodeBufferToMesh_2=function(){return a.asm.emscripten_bind_Decoder_DecodeBufferToMesh_2.apply(null,
arguments)},pc=a._emscripten_bind_Decoder_GetAttributeId_2=function(){return a.asm.emscripten_bind_Decoder_GetAttributeId_2.apply(null,arguments)},qc=a._emscripten_bind_Decoder_GetAttributeIdByName_2=function(){return a.asm.emscripten_bind_Decoder_GetAttributeIdByName_2.apply(null,arguments)},rc=a._emscripten_bind_Decoder_GetAttributeIdByMetadataEntry_3=function(){return a.asm.emscripten_bind_Decoder_GetAttributeIdByMetadataEntry_3.apply(null,arguments)},sc=a._emscripten_bind_Decoder_GetAttribute_2=
function(){return a.asm.emscripten_bind_Decoder_GetAttribute_2.apply(null,arguments)},tc=a._emscripten_bind_Decoder_GetAttributeByUniqueId_2=function(){return a.asm.emscripten_bind_Decoder_GetAttributeByUniqueId_2.apply(null,arguments)},uc=a._emscripten_bind_Decoder_GetMetadata_1=function(){return a.asm.emscripten_bind_Decoder_GetMetadata_1.apply(null,arguments)},vc=a._emscripten_bind_Decoder_GetAttributeMetadata_2=function(){return a.asm.emscripten_bind_Decoder_GetAttributeMetadata_2.apply(null,
arguments)},wc=a._emscripten_bind_Decoder_GetFaceFromMesh_3=function(){return a.asm.emscripten_bind_Decoder_GetFaceFromMesh_3.apply(null,arguments)},xc=a._emscripten_bind_Decoder_GetTriangleStripsFromMesh_2=function(){return a.asm.emscripten_bind_Decoder_GetTriangleStripsFromMesh_2.apply(null,arguments)},yc=a._emscripten_bind_Decoder_GetTrianglesUInt16Array_3=function(){return a.asm.emscripten_bind_Decoder_GetTrianglesUInt16Array_3.apply(null,arguments)},zc=a._emscripten_bind_Decoder_GetTrianglesUInt32Array_3=
function(){return a.asm.emscripten_bind_Decoder_GetTrianglesUInt32Array_3.apply(null,arguments)},Ac=a._emscripten_bind_Decoder_GetAttributeFloat_3=function(){return a.asm.emscripten_bind_Decoder_GetAttributeFloat_3.apply(null,arguments)},Bc=a._emscripten_bind_Decoder_GetAttributeFloatForAllPoints_3=function(){return a.asm.emscripten_bind_Decoder_GetAttributeFloatForAllPoints_3.apply(null,arguments)},Cc=a._emscripten_bind_Decoder_GetAttributeIntForAllPoints_3=function(){return a.asm.emscripten_bind_Decoder_GetAttributeIntForAllPoints_3.apply(null,
arguments)},Dc=a._emscripten_bind_Decoder_GetAttributeInt8ForAllPoints_3=function(){return a.asm.emscripten_bind_Decoder_GetAttributeInt8ForAllPoints_3.apply(null,arguments)},Ec=a._emscripten_bind_Decoder_GetAttributeUInt8ForAllPoints_3=function(){return a.asm.emscripten_bind_Decoder_GetAttributeUInt8ForAllPoints_3.apply(null,arguments)},Fc=a._emscripten_bind_Decoder_GetAttributeInt16ForAllPoints_3=function(){return a.asm.emscripten_bind_Decoder_GetAttributeInt16ForAllPoints_3.apply(null,arguments)},
Gc=a._emscripten_bind_Decoder_GetAttributeUInt16ForAllPoints_3=function(){return a.asm.emscripten_bind_Decoder_GetAttributeUInt16ForAllPoints_3.apply(null,arguments)},Hc=a._emscripten_bind_Decoder_GetAttributeInt32ForAllPoints_3=function(){return a.asm.emscripten_bind_Decoder_GetAttributeInt32ForAllPoints_3.apply(null,arguments)},Ic=a._emscripten_bind_Decoder_GetAttributeUInt32ForAllPoints_3=function(){return a.asm.emscripten_bind_Decoder_GetAttributeUInt32ForAllPoints_3.apply(null,arguments)},Jc=
a._emscripten_bind_Decoder_GetAttributeDataArrayForAllPoints_5=function(){return a.asm.emscripten_bind_Decoder_GetAttributeDataArrayForAllPoints_5.apply(null,arguments)},Kc=a._emscripten_bind_Decoder_SkipAttributeTransform_1=function(){return a.asm.emscripten_bind_Decoder_SkipAttributeTransform_1.apply(null,arguments)},Lc=a._emscripten_bind_Decoder___destroy___0=function(){return a.asm.emscripten_bind_Decoder___destroy___0.apply(null,arguments)},cb=a._emscripten_bind_Mesh_Mesh_0=function(){return a.asm.emscripten_bind_Mesh_Mesh_0.apply(null,
arguments)},Mc=a._emscripten_bind_Mesh_num_faces_0=function(){return a.asm.emscripten_bind_Mesh_num_faces_0.apply(null,arguments)},Nc=a._emscripten_bind_Mesh_num_attributes_0=function(){return a.asm.emscripten_bind_Mesh_num_attributes_0.apply(null,arguments)},Oc=a._emscripten_bind_Mesh_num_points_0=function(){return a.asm.emscripten_bind_Mesh_num_points_0.apply(null,arguments)},Pc=a._emscripten_bind_Mesh___destroy___0=function(){return a.asm.emscripten_bind_Mesh___destroy___0.apply(null,arguments)},
Qc=a._emscripten_bind_VoidPtr___destroy___0=function(){return a.asm.emscripten_bind_VoidPtr___destroy___0.apply(null,arguments)},db=a._emscripten_bind_DracoInt32Array_DracoInt32Array_0=function(){return a.asm.emscripten_bind_DracoInt32Array_DracoInt32Array_0.apply(null,arguments)},Rc=a._emscripten_bind_DracoInt32Array_GetValue_1=function(){return a.asm.emscripten_bind_DracoInt32Array_GetValue_1.apply(null,arguments)},Sc=a._emscripten_bind_DracoInt32Array_size_0=function(){return a.asm.emscripten_bind_DracoInt32Array_size_0.apply(null,
arguments)},Tc=a._emscripten_bind_DracoInt32Array___destroy___0=function(){return a.asm.emscripten_bind_DracoInt32Array___destroy___0.apply(null,arguments)},eb=a._emscripten_bind_Metadata_Metadata_0=function(){return a.asm.emscripten_bind_Metadata_Metadata_0.apply(null,arguments)},Uc=a._emscripten_bind_Metadata___destroy___0=function(){return a.asm.emscripten_bind_Metadata___destroy___0.apply(null,arguments)},Vc=a._emscripten_enum_draco_StatusCode_OK=function(){return a.asm.emscripten_enum_draco_StatusCode_OK.apply(null,
arguments)},Wc=a._emscripten_enum_draco_StatusCode_DRACO_ERROR=function(){return a.asm.emscripten_enum_draco_StatusCode_DRACO_ERROR.apply(null,arguments)},Xc=a._emscripten_enum_draco_StatusCode_IO_ERROR=function(){return a.asm.emscripten_enum_draco_StatusCode_IO_ERROR.apply(null,arguments)},Yc=a._emscripten_enum_draco_StatusCode_INVALID_PARAMETER=function(){return a.asm.emscripten_enum_draco_StatusCode_INVALID_PARAMETER.apply(null,arguments)},Zc=a._emscripten_enum_draco_StatusCode_UNSUPPORTED_VERSION=
function(){return a.asm.emscripten_enum_draco_StatusCode_UNSUPPORTED_VERSION.apply(null,arguments)},$c=a._emscripten_enum_draco_StatusCode_UNKNOWN_VERSION=function(){return a.asm.emscripten_enum_draco_StatusCode_UNKNOWN_VERSION.apply(null,arguments)},ad=a._emscripten_enum_draco_DataType_DT_INVALID=function(){return a.asm.emscripten_enum_draco_DataType_DT_INVALID.apply(null,arguments)},bd=a._emscripten_enum_draco_DataType_DT_INT8=function(){return a.asm.emscripten_enum_draco_DataType_DT_INT8.apply(null,
arguments)},cd=a._emscripten_enum_draco_DataType_DT_UINT8=function(){return a.asm.emscripten_enum_draco_DataType_DT_UINT8.apply(null,arguments)},dd=a._emscripten_enum_draco_DataType_DT_INT16=function(){return a.asm.emscripten_enum_draco_DataType_DT_INT16.apply(null,arguments)},ed=a._emscripten_enum_draco_DataType_DT_UINT16=function(){return a.asm.emscripten_enum_draco_DataType_DT_UINT16.apply(null,arguments)},fd=a._emscripten_enum_draco_DataType_DT_INT32=function(){return a.asm.emscripten_enum_draco_DataType_DT_INT32.apply(null,
arguments)},gd=a._emscripten_enum_draco_DataType_DT_UINT32=function(){return a.asm.emscripten_enum_draco_DataType_DT_UINT32.apply(null,arguments)},hd=a._emscripten_enum_draco_DataType_DT_INT64=function(){return a.asm.emscripten_enum_draco_DataType_DT_INT64.apply(null,arguments)},id=a._emscripten_enum_draco_DataType_DT_UINT64=function(){return a.asm.emscripten_enum_draco_DataType_DT_UINT64.apply(null,arguments)},jd=a._emscripten_enum_draco_DataType_DT_FLOAT32=function(){return a.asm.emscripten_enum_draco_DataType_DT_FLOAT32.apply(null,
arguments)},kd=a._emscripten_enum_draco_DataType_DT_FLOAT64=function(){return a.asm.emscripten_enum_draco_DataType_DT_FLOAT64.apply(null,arguments)},ld=a._emscripten_enum_draco_DataType_DT_BOOL=function(){return a.asm.emscripten_enum_draco_DataType_DT_BOOL.apply(null,arguments)},md=a._emscripten_enum_draco_DataType_DT_TYPES_COUNT=function(){return a.asm.emscripten_enum_draco_DataType_DT_TYPES_COUNT.apply(null,arguments)},nd=a._emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE=function(){return a.asm.emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE.apply(null,
arguments)},od=a._emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD=function(){return a.asm.emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD.apply(null,arguments)},pd=a._emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH=function(){return a.asm.emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH.apply(null,arguments)},qd=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_INVALID_TRANSFORM=function(){return a.asm.emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_INVALID_TRANSFORM.apply(null,
arguments)},rd=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_NO_TRANSFORM=function(){return a.asm.emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_NO_TRANSFORM.apply(null,arguments)},sd=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_QUANTIZATION_TRANSFORM=function(){return a.asm.emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_QUANTIZATION_TRANSFORM.apply(null,arguments)},td=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_OCTAHEDRON_TRANSFORM=function(){return a.asm.emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_OCTAHEDRON_TRANSFORM.apply(null,
arguments)},ud=a._emscripten_enum_draco_GeometryAttribute_Type_INVALID=function(){return a.asm.emscripten_enum_draco_GeometryAttribute_Type_INVALID.apply(null,arguments)},vd=a._emscripten_enum_draco_GeometryAttribute_Type_POSITION=function(){return a.asm.emscripten_enum_draco_GeometryAttribute_Type_POSITION.apply(null,arguments)},wd=a._emscripten_enum_draco_GeometryAttribute_Type_NORMAL=function(){return a.asm.emscripten_enum_draco_GeometryAttribute_Type_NORMAL.apply(null,arguments)},xd=a._emscripten_enum_draco_GeometryAttribute_Type_COLOR=
function(){return a.asm.emscripten_enum_draco_GeometryAttribute_Type_COLOR.apply(null,arguments)},yd=a._emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD=function(){return a.asm.emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD.apply(null,arguments)},zd=a._emscripten_enum_draco_GeometryAttribute_Type_GENERIC=function(){return a.asm.emscripten_enum_draco_GeometryAttribute_Type_GENERIC.apply(null,arguments)};a._setThrew=function(){return a.asm.setThrew.apply(null,arguments)};var ta=a.__ZSt18uncaught_exceptionv=
function(){return a.asm._ZSt18uncaught_exceptionv.apply(null,arguments)};a._free=function(){return a.asm.free.apply(null,arguments)};var ib=a._malloc=function(){return a.asm.malloc.apply(null,arguments)};a.stackSave=function(){return a.asm.stackSave.apply(null,arguments)};a.stackAlloc=function(){return a.asm.stackAlloc.apply(null,arguments)};a.stackRestore=function(){return a.asm.stackRestore.apply(null,arguments)};a.__growWasmMemory=function(){return a.asm.__growWasmMemory.apply(null,arguments)};
a.dynCall_ii=function(){return a.asm.dynCall_ii.apply(null,arguments)};a.dynCall_vi=function(){return a.asm.dynCall_vi.apply(null,arguments)};a.dynCall_iii=function(){return a.asm.dynCall_iii.apply(null,arguments)};a.dynCall_vii=function(){return a.asm.dynCall_vii.apply(null,arguments)};a.dynCall_iiii=function(){return a.asm.dynCall_iiii.apply(null,arguments)};a.dynCall_v=function(){return a.asm.dynCall_v.apply(null,arguments)};a.dynCall_viii=function(){return a.asm.dynCall_viii.apply(null,arguments)};
a.dynCall_viiii=function(){return a.asm.dynCall_viiii.apply(null,arguments)};a.dynCall_iiiiiii=function(){return a.asm.dynCall_iiiiiii.apply(null,arguments)};a.dynCall_iidiiii=function(){return a.asm.dynCall_iidiiii.apply(null,arguments)};a.dynCall_jiji=function(){return a.asm.dynCall_jiji.apply(null,arguments)};a.dynCall_viiiiii=function(){return a.asm.dynCall_viiiiii.apply(null,arguments)};a.dynCall_viiiii=function(){return a.asm.dynCall_viiiii.apply(null,arguments)};a.asm=La;var fa;a.then=function(e){if(fa)e(a);
else{var c=a.onRuntimeInitialized;a.onRuntimeInitialized=function(){c&&c();e(a)}}return a};ja=function c(){fa||ma();fa||(ja=c)};a.run=ma;if(a.preInit)for("function"==typeof a.preInit&&(a.preInit=[a.preInit]);0<a.preInit.length;)a.preInit.pop()();ma();p.prototype=Object.create(p.prototype);p.prototype.constructor=p;p.prototype.__class__=p;p.__cache__={};a.WrapperObject=p;a.getCache=u;a.wrapPointer=N;a.castObject=function(a,b){return N(a.ptr,b)};a.NULL=N(0);a.destroy=function(a){if(!a.__destroy__)throw"Error: Cannot destroy object. (Did you create it yourself?)";
a.__destroy__();delete u(a.__class__)[a.ptr]};a.compare=function(a,b){return a.ptr===b.ptr};a.getPointer=function(a){return a.ptr};a.getClass=function(a){return a.__class__};var n={buffer:0,size:0,pos:0,temps:[],needed:0,prepare:function(){if(n.needed){for(var c=0;c<n.temps.length;c++)a._free(n.temps[c]);n.temps.length=0;a._free(n.buffer);n.buffer=0;n.size+=n.needed;n.needed=0}n.buffer||(n.size+=128,n.buffer=a._malloc(n.size),t(n.buffer));n.pos=0},alloc:function(c,b){t(n.buffer);c=c.length*b.BYTES_PER_ELEMENT;
c=c+7&-8;n.pos+c>=n.size?(t(0<c),n.needed+=c,b=a._malloc(c),n.temps.push(b)):(b=n.buffer+n.pos,n.pos+=c);return b},copy:function(a,b,d){switch(b.BYTES_PER_ELEMENT){case 2:d>>=1;break;case 4:d>>=2;break;case 8:d>>=3}for(var c=0;c<a.length;c++)b[d+c]=a[c]}};x.prototype=Object.create(p.prototype);x.prototype.constructor=x;x.prototype.__class__=x;x.__cache__={};a.Status=x;x.prototype.code=x.prototype.code=function(){return jb(this.ptr)};x.prototype.ok=x.prototype.ok=function(){return!!kb(this.ptr)};x.prototype.error_msg=
x.prototype.error_msg=function(){return X(lb(this.ptr))};x.prototype.__destroy__=x.prototype.__destroy__=function(){mb(this.ptr)};A.prototype=Object.create(p.prototype);A.prototype.constructor=A;A.prototype.__class__=A;A.__cache__={};a.DracoUInt16Array=A;A.prototype.GetValue=A.prototype.GetValue=function(a){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return nb(c,a)};A.prototype.size=A.prototype.size=function(){return ob(this.ptr)};A.prototype.__destroy__=A.prototype.__destroy__=function(){pb(this.ptr)};
B.prototype=Object.create(p.prototype);B.prototype.constructor=B;B.prototype.__class__=B;B.__cache__={};a.PointCloud=B;B.prototype.num_attributes=B.prototype.num_attributes=function(){return qb(this.ptr)};B.prototype.num_points=B.prototype.num_points=function(){return rb(this.ptr)};B.prototype.__destroy__=B.prototype.__destroy__=function(){sb(this.ptr)};C.prototype=Object.create(p.prototype);C.prototype.constructor=C;C.prototype.__class__=C;C.__cache__={};a.DracoUInt8Array=C;C.prototype.GetValue=
C.prototype.GetValue=function(a){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return tb(c,a)};C.prototype.size=C.prototype.size=function(){return ub(this.ptr)};C.prototype.__destroy__=C.prototype.__destroy__=function(){vb(this.ptr)};D.prototype=Object.create(p.prototype);D.prototype.constructor=D;D.prototype.__class__=D;D.__cache__={};a.DracoUInt32Array=D;D.prototype.GetValue=D.prototype.GetValue=function(a){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return wb(c,a)};D.prototype.size=D.prototype.size=
function(){return xb(this.ptr)};D.prototype.__destroy__=D.prototype.__destroy__=function(){yb(this.ptr)};E.prototype=Object.create(p.prototype);E.prototype.constructor=E;E.prototype.__class__=E;E.__cache__={};a.AttributeOctahedronTransform=E;E.prototype.InitFromAttribute=E.prototype.InitFromAttribute=function(a){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return!!zb(c,a)};E.prototype.quantization_bits=E.prototype.quantization_bits=function(){return Ab(this.ptr)};E.prototype.__destroy__=E.prototype.__destroy__=
function(){Bb(this.ptr)};q.prototype=Object.create(p.prototype);q.prototype.constructor=q;q.prototype.__class__=q;q.__cache__={};a.PointAttribute=q;q.prototype.size=q.prototype.size=function(){return Cb(this.ptr)};q.prototype.GetAttributeTransformData=q.prototype.GetAttributeTransformData=function(){return N(Db(this.ptr),J)};q.prototype.attribute_type=q.prototype.attribute_type=function(){return Eb(this.ptr)};q.prototype.data_type=q.prototype.data_type=function(){return Fb(this.ptr)};q.prototype.num_components=
q.prototype.num_components=function(){return Gb(this.ptr)};q.prototype.normalized=q.prototype.normalized=function(){return!!Hb(this.ptr)};q.prototype.byte_stride=q.prototype.byte_stride=function(){return Ib(this.ptr)};q.prototype.byte_offset=q.prototype.byte_offset=function(){return Jb(this.ptr)};q.prototype.unique_id=q.prototype.unique_id=function(){return Kb(this.ptr)};q.prototype.__destroy__=q.prototype.__destroy__=function(){Lb(this.ptr)};J.prototype=Object.create(p.prototype);J.prototype.constructor=
J;J.prototype.__class__=J;J.__cache__={};a.AttributeTransformData=J;J.prototype.transform_type=J.prototype.transform_type=function(){return Mb(this.ptr)};J.prototype.__destroy__=J.prototype.__destroy__=function(){Nb(this.ptr)};w.prototype=Object.create(p.prototype);w.prototype.constructor=w;w.prototype.__class__=w;w.__cache__={};a.AttributeQuantizationTransform=w;w.prototype.InitFromAttribute=w.prototype.InitFromAttribute=function(a){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return!!Ob(c,a)};
w.prototype.quantization_bits=w.prototype.quantization_bits=function(){return Pb(this.ptr)};w.prototype.min_value=w.prototype.min_value=function(a){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return Qb(c,a)};w.prototype.range=w.prototype.range=function(){return Rb(this.ptr)};w.prototype.__destroy__=w.prototype.__destroy__=function(){Sb(this.ptr)};F.prototype=Object.create(p.prototype);F.prototype.constructor=F;F.prototype.__class__=F;F.__cache__={};a.DracoInt8Array=F;F.prototype.GetValue=F.prototype.GetValue=
function(a){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return Tb(c,a)};F.prototype.size=F.prototype.size=function(){return Ub(this.ptr)};F.prototype.__destroy__=F.prototype.__destroy__=function(){Vb(this.ptr)};r.prototype=Object.create(p.prototype);r.prototype.constructor=r;r.prototype.__class__=r;r.__cache__={};a.MetadataQuerier=r;r.prototype.HasEntry=r.prototype.HasEntry=function(a,b){var c=this.ptr;n.prepare();a&&"object"===typeof a&&(a=a.ptr);b=b&&"object"===typeof b?b.ptr:V(b);return!!Wb(c,
a,b)};r.prototype.GetIntEntry=r.prototype.GetIntEntry=function(a,b){var c=this.ptr;n.prepare();a&&"object"===typeof a&&(a=a.ptr);b=b&&"object"===typeof b?b.ptr:V(b);return Xb(c,a,b)};r.prototype.GetIntEntryArray=r.prototype.GetIntEntryArray=function(a,b,d){var c=this.ptr;n.prepare();a&&"object"===typeof a&&(a=a.ptr);b=b&&"object"===typeof b?b.ptr:V(b);d&&"object"===typeof d&&(d=d.ptr);Yb(c,a,b,d)};r.prototype.GetDoubleEntry=r.prototype.GetDoubleEntry=function(a,b){var c=this.ptr;n.prepare();a&&"object"===
typeof a&&(a=a.ptr);b=b&&"object"===typeof b?b.ptr:V(b);return Zb(c,a,b)};r.prototype.GetStringEntry=r.prototype.GetStringEntry=function(a,b){var c=this.ptr;n.prepare();a&&"object"===typeof a&&(a=a.ptr);b=b&&"object"===typeof b?b.ptr:V(b);return X($b(c,a,b))};r.prototype.NumEntries=r.prototype.NumEntries=function(a){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return ac(c,a)};r.prototype.GetEntryName=r.prototype.GetEntryName=function(a,b){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);b&&"object"===
typeof b&&(b=b.ptr);return X(bc(c,a,b))};r.prototype.__destroy__=r.prototype.__destroy__=function(){cc(this.ptr)};G.prototype=Object.create(p.prototype);G.prototype.constructor=G;G.prototype.__class__=G;G.__cache__={};a.DracoInt16Array=G;G.prototype.GetValue=G.prototype.GetValue=function(a){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return dc(c,a)};G.prototype.size=G.prototype.size=function(){return ec(this.ptr)};G.prototype.__destroy__=G.prototype.__destroy__=function(){fc(this.ptr)};H.prototype=
Object.create(p.prototype);H.prototype.constructor=H;H.prototype.__class__=H;H.__cache__={};a.DracoFloat32Array=H;H.prototype.GetValue=H.prototype.GetValue=function(a){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return gc(c,a)};H.prototype.size=H.prototype.size=function(){return hc(this.ptr)};H.prototype.__destroy__=H.prototype.__destroy__=function(){ic(this.ptr)};O.prototype=Object.create(p.prototype);O.prototype.constructor=O;O.prototype.__class__=O;O.__cache__={};a.GeometryAttribute=O;O.prototype.__destroy__=
O.prototype.__destroy__=function(){jc(this.ptr)};K.prototype=Object.create(p.prototype);K.prototype.constructor=K;K.prototype.__class__=K;K.__cache__={};a.DecoderBuffer=K;K.prototype.Init=K.prototype.Init=function(a,b){var c=this.ptr;n.prepare();if("object"==typeof a&&"object"===typeof a){var e=n.alloc(a,T);n.copy(a,T,e);a=e}b&&"object"===typeof b&&(b=b.ptr);kc(c,a,b)};K.prototype.__destroy__=K.prototype.__destroy__=function(){lc(this.ptr)};g.prototype=Object.create(p.prototype);g.prototype.constructor=
g;g.prototype.__class__=g;g.__cache__={};a.Decoder=g;g.prototype.GetEncodedGeometryType=g.prototype.GetEncodedGeometryType=function(a){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return mc(c,a)};g.prototype.DecodeBufferToPointCloud=g.prototype.DecodeBufferToPointCloud=function(a,b){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);b&&"object"===typeof b&&(b=b.ptr);return N(nc(c,a,b),x)};g.prototype.DecodeBufferToMesh=g.prototype.DecodeBufferToMesh=function(a,b){var c=this.ptr;a&&"object"===typeof a&&
(a=a.ptr);b&&"object"===typeof b&&(b=b.ptr);return N(oc(c,a,b),x)};g.prototype.GetAttributeId=g.prototype.GetAttributeId=function(a,b){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);b&&"object"===typeof b&&(b=b.ptr);return pc(c,a,b)};g.prototype.GetAttributeIdByName=g.prototype.GetAttributeIdByName=function(a,b){var c=this.ptr;n.prepare();a&&"object"===typeof a&&(a=a.ptr);b=b&&"object"===typeof b?b.ptr:V(b);return qc(c,a,b)};g.prototype.GetAttributeIdByMetadataEntry=g.prototype.GetAttributeIdByMetadataEntry=
function(a,b,d){var c=this.ptr;n.prepare();a&&"object"===typeof a&&(a=a.ptr);b=b&&"object"===typeof b?b.ptr:V(b);d=d&&"object"===typeof d?d.ptr:V(d);return rc(c,a,b,d)};g.prototype.GetAttribute=g.prototype.GetAttribute=function(a,b){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);b&&"object"===typeof b&&(b=b.ptr);return N(sc(c,a,b),q)};g.prototype.GetAttributeByUniqueId=g.prototype.GetAttributeByUniqueId=function(a,b){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);b&&"object"===typeof b&&(b=b.ptr);
return N(tc(c,a,b),q)};g.prototype.GetMetadata=g.prototype.GetMetadata=function(a){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return N(uc(c,a),L)};g.prototype.GetAttributeMetadata=g.prototype.GetAttributeMetadata=function(a,b){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);b&&"object"===typeof b&&(b=b.ptr);return N(vc(c,a,b),L)};g.prototype.GetFaceFromMesh=g.prototype.GetFaceFromMesh=function(a,b,d){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);b&&"object"===typeof b&&(b=b.ptr);d&&"object"===
typeof d&&(d=d.ptr);return!!wc(c,a,b,d)};g.prototype.GetTriangleStripsFromMesh=g.prototype.GetTriangleStripsFromMesh=function(a,b){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);b&&"object"===typeof b&&(b=b.ptr);return xc(c,a,b)};g.prototype.GetTrianglesUInt16Array=g.prototype.GetTrianglesUInt16Array=function(a,b,d){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);b&&"object"===typeof b&&(b=b.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!yc(c,a,b,d)};g.prototype.GetTrianglesUInt32Array=g.prototype.GetTrianglesUInt32Array=
function(a,b,d){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);b&&"object"===typeof b&&(b=b.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!zc(c,a,b,d)};g.prototype.GetAttributeFloat=g.prototype.GetAttributeFloat=function(a,b,d){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);b&&"object"===typeof b&&(b=b.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!Ac(c,a,b,d)};g.prototype.GetAttributeFloatForAllPoints=g.prototype.GetAttributeFloatForAllPoints=function(a,b,d){var c=this.ptr;a&&"object"===typeof a&&
(a=a.ptr);b&&"object"===typeof b&&(b=b.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!Bc(c,a,b,d)};g.prototype.GetAttributeIntForAllPoints=g.prototype.GetAttributeIntForAllPoints=function(a,b,d){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);b&&"object"===typeof b&&(b=b.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!Cc(c,a,b,d)};g.prototype.GetAttributeInt8ForAllPoints=g.prototype.GetAttributeInt8ForAllPoints=function(a,b,d){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);b&&"object"===typeof b&&
(b=b.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!Dc(c,a,b,d)};g.prototype.GetAttributeUInt8ForAllPoints=g.prototype.GetAttributeUInt8ForAllPoints=function(a,b,d){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);b&&"object"===typeof b&&(b=b.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!Ec(c,a,b,d)};g.prototype.GetAttributeInt16ForAllPoints=g.prototype.GetAttributeInt16ForAllPoints=function(a,b,d){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);b&&"object"===typeof b&&(b=b.ptr);d&&"object"===typeof d&&
(d=d.ptr);return!!Fc(c,a,b,d)};g.prototype.GetAttributeUInt16ForAllPoints=g.prototype.GetAttributeUInt16ForAllPoints=function(a,b,d){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);b&&"object"===typeof b&&(b=b.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!Gc(c,a,b,d)};g.prototype.GetAttributeInt32ForAllPoints=g.prototype.GetAttributeInt32ForAllPoints=function(a,b,d){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);b&&"object"===typeof b&&(b=b.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!Hc(c,
a,b,d)};g.prototype.GetAttributeUInt32ForAllPoints=g.prototype.GetAttributeUInt32ForAllPoints=function(a,b,d){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);b&&"object"===typeof b&&(b=b.ptr);d&&"object"===typeof d&&(d=d.ptr);return!!Ic(c,a,b,d)};g.prototype.GetAttributeDataArrayForAllPoints=g.prototype.GetAttributeDataArrayForAllPoints=function(a,b,d,e,f){var c=this.ptr;a&&"object"===typeof a&&(a=a.ptr);b&&"object"===typeof b&&(b=b.ptr);d&&"object"===typeof d&&(d=d.ptr);e&&"object"===typeof e&&
(e=e.ptr);f&&"object"===typeof f&&(f=f.ptr);return!!Jc(c,a,b,d,e,f)};g.prototype.SkipAttributeTransform=g.prototype.SkipAttributeTransform=function(a){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);Kc(b,a)};g.prototype.__destroy__=g.prototype.__destroy__=function(){Lc(this.ptr)};y.prototype=Object.create(p.prototype);y.prototype.constructor=y;y.prototype.__class__=y;y.__cache__={};a.Mesh=y;y.prototype.num_faces=y.prototype.num_faces=function(){return Mc(this.ptr)};y.prototype.num_attributes=y.prototype.num_attributes=
function(){return Nc(this.ptr)};y.prototype.num_points=y.prototype.num_points=function(){return Oc(this.ptr)};y.prototype.__destroy__=y.prototype.__destroy__=function(){Pc(this.ptr)};Q.prototype=Object.create(p.prototype);Q.prototype.constructor=Q;Q.prototype.__class__=Q;Q.__cache__={};a.VoidPtr=Q;Q.prototype.__destroy__=Q.prototype.__destroy__=function(){Qc(this.ptr)};I.prototype=Object.create(p.prototype);I.prototype.constructor=I;I.prototype.__class__=I;I.__cache__={};a.DracoInt32Array=I;I.prototype.GetValue=
I.prototype.GetValue=function(a){var b=this.ptr;a&&"object"===typeof a&&(a=a.ptr);return Rc(b,a)};I.prototype.size=I.prototype.size=function(){return Sc(this.ptr)};I.prototype.__destroy__=I.prototype.__destroy__=function(){Tc(this.ptr)};L.prototype=Object.create(p.prototype);L.prototype.constructor=L;L.prototype.__class__=L;L.__cache__={};a.Metadata=L;L.prototype.__destroy__=L.prototype.__destroy__=function(){Uc(this.ptr)};(function(){function c(){a.OK=Vc();a.DRACO_ERROR=Wc();a.IO_ERROR=Xc();a.INVALID_PARAMETER=
Yc();a.UNSUPPORTED_VERSION=Zc();a.UNKNOWN_VERSION=$c();a.DT_INVALID=ad();a.DT_INT8=bd();a.DT_UINT8=cd();a.DT_INT16=dd();a.DT_UINT16=ed();a.DT_INT32=fd();a.DT_UINT32=gd();a.DT_INT64=hd();a.DT_UINT64=id();a.DT_FLOAT32=jd();a.DT_FLOAT64=kd();a.DT_BOOL=ld();a.DT_TYPES_COUNT=md();a.INVALID_GEOMETRY_TYPE=nd();a.POINT_CLOUD=od();a.TRIANGULAR_MESH=pd();a.ATTRIBUTE_INVALID_TRANSFORM=qd();a.ATTRIBUTE_NO_TRANSFORM=rd();a.ATTRIBUTE_QUANTIZATION_TRANSFORM=sd();a.ATTRIBUTE_OCTAHEDRON_TRANSFORM=td();a.INVALID=ud();
a.POSITION=vd();a.NORMAL=wd();a.COLOR=xd();a.TEX_COORD=yd();a.GENERIC=zd()}Ba?c():Da.unshift(c)})();if("function"===typeof a.onModuleParsed)a.onModuleParsed();return m}}();"object"===typeof exports&&"object"===typeof module?module.exports=DracoDecoderModule:"function"===typeof define&&define.amd?define([],function(){return DracoDecoderModule}):"object"===typeof exports&&(exports.DracoDecoderModule=DracoDecoderModule);

2
public/webTotal/js/jquery-3.5.1.min.js
File diff suppressed because it is too large
View File

18706
public/webTotal/js/jquery-ui.js
File diff suppressed because it is too large
View File

11008
public/webTotal/js/jquery.js
File diff suppressed because it is too large
View File

1473
public/webTotal/js/pep.js
File diff suppressed because it is too large
View File

1
public/webTotal/js/qrcode.min.js
File diff suppressed because it is too large
View File

BIN
public/webTotal/logok.gif

After

Width: 1024  |  Height: 1024  |  Size: 1.3 MiB

BIN
public/webTotal/textures/4.jpg

After

Width: 1560  |  Height: 968  |  Size: 103 KiB

BIN
public/webTotal/textures/5.jpg

After

Width: 1560  |  Height: 968  |  Size: 103 KiB

BIN
public/webTotal/textures/Flare.png

After

Width: 256  |  Height: 256  |  Size: 24 KiB

BIN
public/webTotal/textures/a.png

After

Width: 1024  |  Height: 1024  |  Size: 247 KiB

BIN
public/webTotal/textures/b.png

After

Width: 1024  |  Height: 1024  |  Size: 38 KiB

BIN
public/webTotal/textures/ball_light_01.png

After

Width: 1024  |  Height: 1024  |  Size: 62 KiB

BIN
public/webTotal/textures/circular_03.png

After

Width: 512  |  Height: 512  |  Size: 22 KiB

BIN
public/webTotal/textures/environmentSpecular.env

BIN
public/webTotal/textures/sun.png

After

Width: 128  |  Height: 128  |  Size: 3.4 KiB

BIN
public/webTotal/textures/textures.rar

41
src/App.vue

@ -0,0 +1,41 @@
<template>
<div id="app">
<router-view v-if="isRouterAlive" />
</div>
</template>
<script>
export default {
name: 'App',
//
provide() {
return {
reload: this.reload
}
},
data() {
return {
isRouterAlive: true
}
},
methods: {
reload() {
this.isRouterAlive = false
this.$nextTick(() => {
this.isRouterAlive = true
})
}
}
}
</script>
<style lang="scss">
body {
margin: 0;
}
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
</style>

175
src/api/library.js

@ -0,0 +1,175 @@
import request from '@/utils/request'
import qs from 'qs'
// 获取token
export function FetchInitToken(params) {
return request({
url: '/openlib/service/barcode/token' + '?' + qs.stringify(params, { indices: false }),
method: 'get',
urlType: 'interlib'
})
}
// 馆藏量
export function FetchLibBookTotal(params) {
return request({
url: '/qyzt/sync35' + '?' + qs.stringify(params, { indices: false }),
method: 'get',
urlType: 'local'
})
}
// 办证量统计
export function FetchUsertotal(params) {
return request({
url: '/qyzt/usertotal' + '?' + qs.stringify(params, { indices: false }),
method: 'get',
urlType: 'local'
})
}
// page1 获取公众号总粉丝数
export function FetchFansCount(params) {
return request({
url: '/qyzt/getfansCount' + '?' + qs.stringify(params, { indices: false }),
method: 'get',
urlType: 'local'
})
}
// page1 累计借出
export function FetchLendingTotal(params) {
return request({
url: '/qyzt/sync82' + '?' + qs.stringify(params, { indices: false }),
method: 'get',
urlType: 'local'
})
}
// 获取初始化数据
export function FetchInitSetting(params) {
return request({
url: '/qyzt/initSetting' + '?' + qs.stringify(params, { indices: false }),
method: 'get',
urlType: 'local'
})
}
// page1 云标签
export function FetchHotSearch(params) {
return request({
url: '/qyzt/getHotSearch' + '?' + qs.stringify(params, { indices: false }),
method: 'get',
urlType: 'local'
})
}
// page1 新书推荐
export function FetchNewBook(params) {
return request({
url: '/qyzt/getNewBook' + '?' + qs.stringify(params, { indices: false }),
method: 'get',
urlType: 'local'
})
}
// 通过isbn获取图书详细信息
export function FetchMarcByISBN(params) {
return request({
url: '/qyzt/marcByISBN' + '?' + qs.stringify(params, { indices: false }),
method: 'get',
urlType: 'local'
})
}
// page2 获取分馆显示内容
export function FetchLibcodeDetails(params) {
return request({
url: '/qyzt/getLibcodeDetails' + '?' + qs.stringify(params, { indices: false }),
method: 'get',
urlType: 'local'
})
}
// 获取分馆图片资料
export function FetchLibcodeResouceDetails(params) {
return request({
url: '/qyzt/getLibcodeResouceDetails' + '?' + qs.stringify(params, { indices: false }),
method: 'get',
urlType: 'local'
})
}
// page2 读者借阅排行榜
export function FetchReadRanking(params) {
return request({
url: '/qyzt/sync37' + '?' + qs.stringify(params, { indices: false }),
method: 'get',
urlType: 'local'
})
}
// page4 获取通知
export function FetchNoticeList(params) {
return request({
url: '/qyzt/getNoticeList' + '?' + qs.stringify(params, { indices: false }),
method: 'get',
urlType: 'local'
})
}
// page4 文献排行榜
export function FetchSync36(params) {
return request({
url: '/qyzt/sync36' + '?' + qs.stringify(params, { indices: false }),
method: 'get',
urlType: 'local'
})
}
// page4 获取总馆资料
export function FetchTotalResource(params) {
return request({
url: '/qyzt/getTotalResource' + '?' + qs.stringify(params, { indices: false }),
method: 'get',
urlType: 'local'
})
}
// 获取当日每小时借还信息
export function FetchTodayJH(params) {
return request({
url: '/qyzt/getTodayJH' + '?' + qs.stringify(params, { indices: false }),
method: 'get',
urlType: 'local'
})
}
// 获取一周内借还信息
export function FetchWeekJH(params) {
return request({
url: '/qyzt/getWeekJH' + '?' + qs.stringify(params, { indices: false }),
method: 'get',
urlType: 'local'
})
}
export default {
FetchInitToken,
FetchLibBookTotal,
FetchUsertotal,
FetchFansCount,
FetchLendingTotal,
FetchInitSetting,
FetchHotSearch,
FetchNewBook,
FetchMarcByISBN,
FetchReadRanking,
FetchLibcodeDetails,
FetchLibcodeResouceDetails,
FetchNoticeList,
FetchSync36,
FetchTotalResource,
FetchTodayJH,
FetchWeekJH
}

BIN
src/assets/fonts/DingTalk_JinBuTi_Regular.ttf

6
src/assets/fonts/fonts.css

@ -0,0 +1,6 @@
@font-face {
font-family: "DingTalk_JinBuTi_Regular";
src: url('DingTalk_JinBuTi_Regular.ttf');
font-weight: normal;
font-style: normal;
}

BIN
src/assets/images/1.png

After

Width: 200  |  Height: 200  |  Size: 8.0 KiB

BIN
src/assets/images/2.png

After

Width: 200  |  Height: 200  |  Size: 10 KiB

BIN
src/assets/images/3.png

After

Width: 200  |  Height: 200  |  Size: 8.9 KiB

BIN
src/assets/images/4.png

After

Width: 200  |  Height: 200  |  Size: 9.3 KiB

BIN
src/assets/images/5-1.png

After

Width: 200  |  Height: 200  |  Size: 10 KiB

BIN
src/assets/images/5.png

After

Width: 200  |  Height: 200  |  Size: 12 KiB

BIN
src/assets/images/6.png

After

Width: 200  |  Height: 200  |  Size: 9.1 KiB

BIN
src/assets/images/bg2.png

After

Width: 1920  |  Height: 1080  |  Size: 457 KiB

BIN
src/assets/images/data_border_default.png

After

Width: 165  |  Height: 81  |  Size: 1.3 KiB

BIN
src/assets/images/data_border_warn.png

After

Width: 330  |  Height: 161  |  Size: 37 KiB

BIN
src/assets/images/fixed-icon.png

After

Width: 181  |  Height: 237  |  Size: 28 KiB

BIN
src/assets/images/fixed-icon1.png

After

Width: 181  |  Height: 237  |  Size: 28 KiB

BIN
src/assets/images/header-bg.png

After

Width: 1451  |  Height: 85  |  Size: 72 KiB

BIN
src/assets/images/header_03.png

After

Width: 11  |  Height: 6  |  Size: 1.1 KiB

BIN
src/assets/images/header_05.png

After

Width: 11  |  Height: 6  |  Size: 1.1 KiB

BIN
src/assets/images/header_07.png

After

Width: 11  |  Height: 6  |  Size: 1.1 KiB

BIN
src/assets/images/header_09.png

After

Width: 11  |  Height: 6  |  Size: 1.2 KiB

BIN
src/assets/images/header_11.png

After

Width: 11  |  Height: 6  |  Size: 1.1 KiB

BIN
src/assets/images/header_13.png

After

Width: 64  |  Height: 5  |  Size: 1.3 KiB

BIN
src/assets/images/header_13_b.png

After

Width: 196  |  Height: 6  |  Size: 1.5 KiB

BIN
src/assets/images/header_15.png

After

Width: 11  |  Height: 6  |  Size: 1.1 KiB

BIN
src/assets/images/icon-video5.png

After

Width: 200  |  Height: 200  |  Size: 8.3 KiB

BIN
src/assets/images/icon1.png

After

Width: 61  |  Height: 58  |  Size: 4.8 KiB

BIN
src/assets/images/icon2.png

After

Width: 96  |  Height: 96  |  Size: 3.2 KiB

BIN
src/assets/images/icon3.png

After

Width: 134  |  Height: 134  |  Size: 8.2 KiB

BIN
src/assets/images/icon4.png

After

Width: 126  |  Height: 140  |  Size: 9.0 KiB

BIN
src/assets/images/icon5.png

After

Width: 185  |  Height: 73  |  Size: 1.4 KiB

BIN
src/assets/images/icon6.png

After

Width: 200  |  Height: 200  |  Size: 8.6 KiB

BIN
src/assets/images/icon7.png

After

Width: 200  |  Height: 200  |  Size: 8.0 KiB

BIN
src/assets/images/mapBg.png

After

Width: 1920  |  Height: 1080  |  Size: 2.3 MiB

BIN
src/assets/images/page4_02.png

After

Width: 1265  |  Height: 3  |  Size: 1.1 KiB

BIN
src/assets/images/page4_03.png

After

Width: 1330  |  Height: 871  |  Size: 28 KiB

BIN
src/assets/images/title-big.png

After

Width: 1160  |  Height: 48  |  Size: 20 KiB

BIN
src/assets/images/title-small.png

After

Width: 483  |  Height: 48  |  Size: 14 KiB

244
src/assets/js/rollSlide.js

@ -0,0 +1,244 @@
/**
* Created by f on 2015/5/8.
*/
(function($) {
$.fn.rollSlide = function(obj) {
var $self = this
var orientation = obj.orientation || 'left' // 滚动方式
var num = obj.num || 1 // 滚动数量
var v = (typeof obj.v === 'number') ? obj.v : 0 // 滚动速度
var minTime = (typeof obj.space === 'number') ? ((obj.space >= 100) ? obj.space : 100) : 100 // 最小间隔为 100 ms ,
var space = minTime + v || 5000 + v // 滚动间隔 默认 5000ms
var isRoll = obj.isRoll // 自动播放
var isStart = true
var roll = function(ori, n, v) {
var $ul = $self.find('.roll__list')
var $item = $ul.find('li')
var range = 0
var i; var len = $item.length
var sliceItem = []
var cloneSliceItem = []
var startTime = (new Date()).getTime()
// 存放滚动过的 item
var memory = function() {
var arr = []
if (ori === 'left' || ori === 'top') {
for (i = 0; i < n; i++) {
range += ori === 'left' ? $($item[i]).outerWidth(true) : $($item[i]).outerHeight(true) // left 取 width,top 取 height
arr.push($item[i])
}
} else if (ori === 'right' || ori === 'bottom') {
for (i = len - n; n > 0; n--, i++) {
range += ori === 'right' ? $($item[i]).outerWidth(true) : $($item[i]).outerHeight(true)
arr.push($item[i])
}
}
return arr
}
isStart = false // 关闭滚动
sliceItem = memory()
cloneSliceItem = $(sliceItem).clone()
// 判断往哪个方向移动
switch (ori) {
case 'left':
$ul.append(cloneSliceItem)
$ul.animate({
'left': -range + 'px'
}, v, function() {
$(this).css({ 'left': 0 })
$(sliceItem).remove()
isStart = true // 开启滚动
})
break
case 'right':
$ul.prepend(cloneSliceItem)
$ul.css('left', -range + 'px')
$ul.animate({
'left': 0
}, v, function() {
$(sliceItem).remove()
isStart = true // 开启滚动
})
break
case 'top':
$ul.append(cloneSliceItem)
$ul.animate({
'top': -range + 'px'
}, v, function() {
$(this).css({ 'top': 0 })
$(sliceItem).remove()
isStart = true // 开启滚动
})
break
case 'bottom':
$ul.prepend(cloneSliceItem)
$ul.css('top', -range + 'px')
$ul.animate({
'top': 0
}, v, function() {
$(sliceItem).remove()
isStart = true // 开启滚动
})
break
}
}
var init = function() {
var $ul = $self.find('.roll__list')
var $item = $ul.find('li')
var len = $item.length
var timer
num = num <= len ? num : len // 滚动个数超过列表数,取列表数
if (len > 1) {
$self.on('click', '.pre', function() {
if (isStart) {
// 横向滚动
if (orientation === 'left' || orientation === 'right') {
roll('right', num, v)
} else { // 纵向滚动
roll('bottom', num, v)
}
}
})
.on('click', '.next', function() {
if (isStart) {
// 横向滚动
if (orientation === 'left' || orientation === 'right') {
roll('left', num, v)
} else { // 纵向滚动
roll('top', num, v)
}
}
})
.hover(function() {
clearInterval(timer)
}, function() {
if (isRoll) {
timer = setInterval(function() {
roll(orientation, num, v)
}, space)
}
})
.trigger('mouseout')
}
}
init()
}
$.fn.rollNoInterval = function() {
var $self = this
var $ul = $self.find('.roll__list')
var $item = $ul.find('li')
var len = $item.length
var timer
var left = function() {
var offset, i,
range,
$sliceItem
$sliceItem = $($item[0])
range = $sliceItem.outerWidth(true)
timer = setInterval(function() {
offset = $ul.css('left')
offset = parseInt(offset)
if (offset > -range) {
i = offset - 1
$ul.css('left', i + 'px')
offset = $ul.css('left')
} else {
$sliceItem.detach()
$ul.css('left', 0)
$ul.append($sliceItem)
$sliceItem = $($ul.find('li')[0])
range = $sliceItem.outerWidth(true)
}
}, 50)
}
var right = function() {
var offset, i,
range,
$sliceItem
$sliceItem = $($item[len - 1])
range = $sliceItem.outerWidth(true)
timer = setInterval(function() {
offset = $ul.css('right')
offset = parseInt(offset)
if (offset > -range) {
i = offset - 1
$ul.css('right', i + 'px')
offset = $ul.css('right')
} else {
$sliceItem.detach()
$ul.css('right', 0)
$ul.prepend($sliceItem)
$sliceItem = $($ul.find('li')[len - 1])
range = $sliceItem.outerWidth(true)
}
}, 50)
}
var top = function() {
var offset, i,
range,
$sliceItem
$sliceItem = $($item[0])
range = $sliceItem.outerHeight(true)
timer = setInterval(function() {
offset = $ul.css('top')
offset = parseInt(offset)
if (offset > -range) {
i = offset - 1
$ul.css('top', i + 'px')
offset = $ul.css('top')
} else {
$sliceItem.detach()
$ul.css('top', 0)
$ul.append($sliceItem)
$sliceItem = $($ul.find('li')[0])
range = $sliceItem.outerHeight(true)
}
}, 50)
}
var bottom = function() {
var offset, i,
range,
$sliceItem
$sliceItem = $($item[len - 1])
range = $sliceItem.outerHeight(true)
timer = setInterval(function() {
offset = $ul.css('bottom')
offset = parseInt(offset)
if (offset > -range) {
i = offset - 1
$ul.css('bottom', i + 'px')
offset = $ul.css('bottom')
} else {
$sliceItem.detach()
$ul.css('bottom', 0)
$ul.prepend($sliceItem)
$sliceItem = $($ul.find('li')[len - 1])
range = $sliceItem.outerHeight(true)
}
}, 50)
}
var init = function() {
$self.hover(function() {
clearInterval(timer)
}, function() {
})
}
// init();
return {
left: left,
right: right,
top: top,
bottom: bottom
}
}
})(jQuery)

336
src/assets/js/tagscloud.js

@ -0,0 +1,336 @@
/**
* TagCloud.js (c) 2016-2019 @ Cong Min
* MIT License - https://github.com/cong-min/TagCloud
*/
class TagCloud {
/* constructor */
constructor(container = document.body, texts, options) {
const self = this
if (!container || container.nodeType !== 1) return new Error('Incorrect element type')
// params
self.$container = container
self.texts = texts || []
self.config = { ...TagCloud._defaultConfig, ...options || {}}
// calculate config
self.radius = self.config.radius // rolling radius
self.depth = 2 * self.radius // rolling depth
self.size = 1.5 * self.radius // rolling area size with mouse
self.maxSpeed = TagCloud._getMaxSpeed(self.config.maxSpeed) // rolling max speed
self.initSpeed = TagCloud._getInitSpeed(self.config.initSpeed) // rolling init speed
self.direction = self.config.direction // rolling init direction
self.keep = self.config.keep // whether to keep rolling after mouse out area
self.paused = false // keep state to pause the animation
// create element
self._createElment()
// init
self._init()
// set elements and instances
TagCloud.list.push({ el: self.$el, container, instance: self })
}
/* static method */
// all TagCloud list
static list = [];
// default config
static _defaultConfig = {
radius: 100, // rolling radius, unit `px`
maxSpeed: 'normal', // rolling max speed, optional: `slow`, `normal`(default), `fast`
initSpeed: 'normal', // rolling init speed, optional: `slow`, `normal`(default), `fast`
direction: 135, // rolling init direction, unit clockwise `deg`, optional: `0`(top) , `90`(left), `135`(right-bottom)(default)...
keep: true, // whether to keep rolling after mouse out area, optional: `false`, `true`(default)(decelerate to rolling init speed, and keep rolling with mouse)
reverseDirection: false,
useContainerInlineStyles: true,
useItemInlineStyles: true,
containerClass: 'tagcloud',
itemClass: 'tagcloud--item',
useHTML: false
};
// speed value
static _getMaxSpeed = (name) => ({ slow: 0.5, normal: 1, fast: 2 })[name] || 1;
static _getInitSpeed = (name) => ({ slow: 16, normal: 32, fast: 80 })[name] || 32;
// event listener
static _on(el, ev, handler, cap) {
if (el.addEventListener) {
el.addEventListener(ev, handler, cap)
} else if (el.attachEvent) {
el.attachEvent(`on${ev}`, handler)
} else {
el[`on${ev}`] = handler
}
}
/* instance property method */
// create elment
_createElment() {
const self = this
// create container
const $el = document.createElement('div')
$el.className = self.config.containerClass
if (self.config.useContainerInlineStyles) {
$el.style.position = 'relative'
$el.style.width = `${2 * self.radius}px`
$el.style.height = `${2 * self.radius}px`
}
// create texts
self.items = []
self.texts.forEach((text, index) => {
const item = self._createTextItem(text, index)
$el.appendChild(item.el)
self.items.push(item)
})
self.$container.appendChild($el)
self.$el = $el
}
// create a text
_createTextItem(text, index = 0) {
const self = this
const itemEl = document.createElement('span')
itemEl.className = self.config.itemClass
if (self.config.useItemInlineStyles) {
itemEl.style.willChange = 'transform, opacity, filter'
itemEl.style.position = 'absolute'
itemEl.style.top = '50%'
itemEl.style.left = '50%'
itemEl.style.zIndex = index + 1
itemEl.style.filter = 'alpha(opacity=0)'
itemEl.style.opacity = 0
const transformOrigin = '50% 50%'
itemEl.style.WebkitTransformOrigin = transformOrigin
itemEl.style.MozTransformOrigin = transformOrigin
itemEl.style.OTransformOrigin = transformOrigin
itemEl.style.transformOrigin = transformOrigin
const transform = 'translate3d(-50%, -50%, 0) scale(1)'
itemEl.style.WebkitTransform = transform
itemEl.style.MozTransform = transform
itemEl.style.OTransform = transform
itemEl.style.transform = transform
}
if (self.config.useHTML) {
itemEl.innerHTML = text
} else {
itemEl.innerText = text
}
return {
el: itemEl,
...self._computePosition(index) // distributed in appropriate place
}
}
// calculate appropriate place
_computePosition(index, random = false) {
const self = this
const textsLength = self.texts.length
// if random `true`, It means that a random appropriate place is generated, and the position will be independent of `index`
if (random) index = Math.floor(Math.random() * (textsLength + 1))
const phi = Math.acos(-1 + (2 * index + 1) / textsLength)
const theta = Math.sqrt((textsLength + 1) * Math.PI) * phi
return {
x: (self.size * Math.cos(theta) * Math.sin(phi)) / 2,
y: (self.size * Math.sin(theta) * Math.sin(phi)) / 2,
z: (self.size * Math.cos(phi)) / 2
}
}
_requestInterval(fn, delay) {
const requestAnimFrame = ((() => window.requestAnimationFrame) || ((callback, element) => {
window.setTimeout(callback, 1000 / 60)
}))()
let start = new Date().getTime()
const handle = {}
function loop() {
handle.value = requestAnimFrame(loop)
const current = new Date().getTime()
const delta = current - start
if (delta >= delay) {
fn.call()
start = new Date().getTime()
}
}
handle.value = requestAnimFrame(loop)
return handle
}
// init
_init() {
const self = this
self.active = false // whether the mouse is activated
self.mouseX0 = self.initSpeed * Math.sin(self.direction * (Math.PI / 180)) // init distance between the mouse and rolling center x axis
self.mouseY0 = -self.initSpeed * Math.cos(self.direction * (Math.PI / 180)) // init distance between the mouse and rolling center y axis
self.mouseX = self.mouseX0 // current distance between the mouse and rolling center x axis
self.mouseY = self.mouseY0 // current distance between the mouse and rolling center y axis
const isTouchDevice = window.matchMedia('(hover: hover)')
if (!isTouchDevice || isTouchDevice.matches) {
// mouseover
TagCloud._on(self.$el, 'mouseover', () => { self.active = true })
// mouseout
TagCloud._on(self.$el, 'mouseout', () => { self.active = false })
// mousemove
TagCloud._on(self.keep ? window : self.$el, 'mousemove', (ev) => {
ev = ev || window.event
const rect = self.$el.getBoundingClientRect()
self.mouseX = (ev.clientX - (rect.left + rect.width / 2)) / 5
self.mouseY = (ev.clientY - (rect.top + rect.height / 2)) / 5
})
}
// update state regularly
self._next() // init update state
self.interval = self._requestInterval(() => {
self._next.call(self)
}, 10)
}
// calculate the next state
_next() {
const self = this
if (self.paused) {
return
}
// if keep `false`, pause rolling after moving mouse out area
if (!self.keep && !self.active) {
self.mouseX = Math.abs(self.mouseX - self.mouseX0) < 1
? self.mouseX0 : (self.mouseX + self.mouseX0) / 2 // reset distance between the mouse and rolling center x axis
self.mouseY = Math.abs(self.mouseY - self.mouseY0) < 1
? self.mouseY0 : (self.mouseY + self.mouseY0) / 2 // reset distance between the mouse and rolling center y axis
}
let a = -(Math.min(Math.max(-self.mouseY, -self.size), self.size) / self.radius) *
self.maxSpeed
let b = (Math.min(Math.max(-self.mouseX, -self.size), self.size) / self.radius) *
self.maxSpeed
// inverse direction if enabled
if (self.config.reverseDirection) {
a = -a
b = -b
}
if (Math.abs(a) <= 0.01 && Math.abs(b) <= 0.01) return // pause
// calculate offset
const l = Math.PI / 180
const sc = [
Math.sin(a * l),
Math.cos(a * l),
Math.sin(b * l),
Math.cos(b * l)
]
self.items.forEach(item => {
const rx1 = item.x
const ry1 = item.y * sc[1] + item.z * (-sc[0])
const rz1 = item.y * sc[0] + item.z * sc[1]
const rx2 = rx1 * sc[3] + rz1 * sc[2]
const ry2 = ry1
const rz2 = rz1 * sc[3] - rx1 * sc[2]
const per = (2 * self.depth) / (2 * self.depth + rz2) // todo
item.x = rx2
item.y = ry2
item.z = rz2
item.scale = per.toFixed(3)
let alpha = per * per - 0.25
alpha = (alpha > 1 ? 1 : alpha).toFixed(3)
const itemEl = item.el
const left = (item.x - itemEl.offsetWidth / 2).toFixed(2)
const top = (item.y - itemEl.offsetHeight / 2).toFixed(2)
const transform = `translate3d(${left}px, ${top}px, 0) scale(${item.scale})`
itemEl.style.WebkitTransform = transform
itemEl.style.MozTransform = transform
itemEl.style.OTransform = transform
itemEl.style.transform = transform
itemEl.style.filter = `alpha(opacity=${100 * alpha})`
itemEl.style.opacity = alpha
})
}
/* export instance properties and methods */
// update
update(texts) {
const self = this
// params
self.texts = texts || []
// judging and processing items based on texts
self.texts.forEach((text, index) => {
let item = self.items[index]
if (!item) { // if not had, then create
item = self._createTextItem(text, index)
Object.assign(item, self._computePosition(index, true)) // random place
self.$el.appendChild(item.el)
self.items.push(item)
}
// if had, replace text
if (self.config.useHTML) {
item.el.innerHTML = text
} else {
item.el.innerText = text
}
})
// remove redundant self.items
const textsLength = self.texts.length
const itemsLength = self.items.length
if (textsLength < itemsLength) {
const removeList = self.items.splice(textsLength, itemsLength - textsLength)
removeList.forEach(item => {
self.$el.removeChild(item.el)
})
}
}
// destroy
destroy() {
const self = this
self.interval = null
// clear in TagCloud.list
const index = TagCloud.list.findIndex(e => e.el === self.$el)
if (index !== -1) TagCloud.list.splice(index, 1)
// clear element
if (self.$container && self.$el) {
self.$container.removeChild(self.$el)
}
}
pause() {
const self = this
self.paused = true
}
resume() {
const self = this
self.paused = false
}
}
export default (els, texts, options) => {
if (typeof els === 'string') els = document.querySelectorAll(els)
if (!els.forEach) els = [els]
const instances = []
els.forEach(el => {
if (el) {
instances.push(new TagCloud(el, texts, options))
}
})
return instances.length <= 1 ? instances[0] : instances
}

23
src/assets/json/lib.json

@ -0,0 +1,23 @@
{
"陶铸图书馆":[111.848657, 26.588519],
"龙山街道分馆":[111.86478,26.599231],
"黎家坪分馆": [111.823424,26.693962],
"大村甸分馆": [111.77655,26.663866],
"邵家岭自助馆":[111.856979,26.59469],
"下马渡分馆":[111.895584,26.611702],
"复兴路自助馆":[111.843102,26.57896],
"七里桥分馆": [111.902703,26.571593],
"少儿馆":[111.842537,26.58196],
"茅竹镇分馆":[111.796508,26.510589],
"观音滩镇分馆":[111.897118,26.48444],
"凯俊盛科城分馆":[111.851548,26.550191],
"进宝塘镇分馆":[112.085297,26.436849],
"三口塘镇分馆":[111.819018,26.412155],
"肖家镇分馆":[112.009764,26.355137],
"潘市镇分馆": [112.051186,26.489878],
"大忠桥镇分馆":[111.873254,26.369761],
"浯溪街道分馆":[111.855175,26.574414],
"长虹街道分馆":[111.850902,26.586461],
"白水镇分馆": [111.989802,26.421353],
"白竹湖自助馆":[111.862001,26.580311]
}

1
src/assets/json/qy.json
File diff suppressed because it is too large
View File

BIN
src/assets/logo.png

After

Width: 200  |  Height: 200  |  Size: 6.7 KiB

821
src/assets/styles/index.scss

@ -0,0 +1,821 @@
#screen-container {
width: 100%;
height: 100vh;
font-size: .3125rem;
line-height: .4375rem;
color: #fff;
overflow: hidden;
background: url('~@/assets/images/mapBg.png') no-repeat top left #02061a;
background-size: 100% 100%;
font-family: 'DingTalk_JinBuTi_Regular';
}
.loading {
position: fixed;
top: 0;
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
background: rgba(0, 0, 0, 0.9);
z-index: 99999999;
}
.dot-container {
display: flex;
justify-content: space-around;
width: .75rem;
}
.dot {
width: .1375rem;
height: .075rem;
margin-right: .075rem;
animation: blink 1s infinite;
}
// 头部主题标题
.header-container {
position: relative;
width: 100%;
height: 1.0625rem;
color: #fff;
z-index: 9999;
.header-title {
position: relative;
font-family: 'Microsoft YaHei';
width: 18.1375rem;
height: 1.0625rem;
margin: 0 auto;
background: url('~@/assets/images/header-bg.png') no-repeat top left;
background-size: cover;
h2 {
font-size: .375rem;
font-weight: bold;
line-height: .75rem;
text-align: center;
background: -webkit-linear-gradient(180deg, #fff 30%, #77baff 100%);
background: linear-gradient(180deg, #fff 30%, #77baff 100%);
-webkit-background-clip: text;
background-clip: text;
-webkit-text-fill-color: transparent;
color: transparent;
text-shadow: 0 4px 4px rgba(0, 0, 0, 0.2);
}
.header-bottom{
position: absolute;
left: 50%;
bottom: 0;
width: 2.45rem;
height: .075rem;
background: url('~@/assets/images/header_13_b.png') no-repeat top left;
background-size: contain;
margin-left: -1.175rem;
overflow: hidden;
.bottom-block{
position: absolute;
bottom: 0;
width: .8rem;
height: .0625rem;
background: url('~@/assets/images/header_13.png') no-repeat top left;
background-size: contain;
transform: translateX(-50%) rotate(180deg);
animation: runblock 3s infinite;
}
}
.left-dots{
position: absolute;
left: 2.25rem;
top: .0625rem;
.dot:nth-child(1) {
background: url('~@/assets/images/header_03.png') no-repeat top left;
background-size: contain;
}
.dot:nth-child(2) {
background: url('~@/assets/images/header_05.png') no-repeat top left;
background-size: contain;
}
.dot:nth-child(3) {
background: url('~@/assets/images/header_07.png') no-repeat top left;
background-size: contain;
}
.dot:nth-child(3) {
animation-delay: 0.4s;
}
}
.right-dots{
position: absolute;
right: 2rem;
top: .0625rem;
.dot:nth-child(1) {
background: url('~@/assets/images/header_09.png') no-repeat top left;
background-size: contain;
}
.dot:nth-child(2) {
background: url('~@/assets/images/header_11.png') no-repeat top left;
background-size: contain;
}
.dot:nth-child(3) {
background: url('~@/assets/images/header_15.png') no-repeat top left;
background-size: contain;
}
.dot:nth-child(1) {
animation-delay: 0.4s;
}
}
}
@keyframes runblock{
0%{
left: calc(.375rem);
}
50%{
left: calc(100% - .375rem);
}
100%{
left: calc(.375rem);
}
}
.header-text {
position: absolute;
}
.header-weather {
max-width: 2rem;
height: .625rem;
margin-top: .125rem;
overflow: hidden;
}
.header-date {
top: .125rem;
left: .2125rem;
display: flex;
justify-content: flex-start;
align-items: center;
.time {
width: 1.625rem;
font-size: .375rem;
font-weight: bold;
line-height: .375rem;
padding-right: .2125rem;
border-right: 1px solid rgba(255, 255, 255, 0.5);
}
.time-other {
font-size: .175rem;
line-height: .275rem;
padding-left: .2125rem;
span {
display: block;
}
}
}
}
.dot:nth-child(2) {
animation-delay: 0.2s;
}
@keyframes blink {
0% {
opacity: 0.2;
}
20% {
opacity: 1;
}
100% {
opacity: 0.2;
}
}
.page-nav{
display: flex;
justify-content: flex-start;
align-items: center;
position: fixed;
bottom: .25rem;
left: 50%;
transform: translateX(-50%);
z-index: 99999;
.nav-list{
li{
display: flex;
justify-content: flex-start;
align-items: center;
&::before{
content: "";
width: .6rem;
height: .6rem;
background: url('~@/assets/images/icon1.png') no-repeat left center;
background-size: 100% 100%;
margin-right: .15rem;
}
&::after{
content: "";
width: .3rem;
height: .3rem;
background: url('~@/assets/images/icon2.png') no-repeat right center;
background-size: 100% 100%;
margin-left: .13rem;
}
}
}
ul.submenu-list{
display: flex;
justify-content: flex-start;
font-size: 18px;
li{
margin-left: .25rem;
&:hover{
color: #FF7420;
cursor: pointer;
}
&.active{
color: #FF7420;
}
}
}
}
// 内容主体部分
.page-wrapper{
width: 100%;
height: 100vh;
position: absolute;
top: 0;
left: 0;
background: #001244;
padding-top: 1.5625rem;
overflow: hidden;
}
.page-container{
position: relative;
width: 100%;
height: 100vh;
// padding: 0 .4rem;
overflow: hidden;
}
.page-item{
margin-bottom: .25rem;
// background: #0A1A42;
background-color: rgba(10, 26, 66, 0.6);
}
.database-title {
height: .6rem;
padding-left: .4rem;
margin-top: -0.25rem;
font-size: .25rem;
line-height: .5625rem;
color: #f6f9fe;
text-shadow: 0px 2px 8px rgba(0, 9, 35, 1);
background: url('~@/assets/images/title-small.png') no-repeat -0.2rem top;
background-size: cover;
}
.fullView-left,
.fullView-right{
position: absolute;
top: .25rem;
width: 5rem;
}
.fullView-left{
left: .4rem;
}
.fullView-right{
height: calc(100vh - 1.5625rem);
}
.fullView-right{
right: .4rem;
display: flex;
justify-content: space-between;
flex-direction: column;
}
.page-3d{
width: 100%;
height: calc(100vh);
line-height: calc(100vh);
text-align: center;
}
.fullView-01{
height: 36%;
}
.fullView-02{
height: 30%;
}
.fullView-03{
height: 34%;
margin-bottom: 0;
}
.page-middle-top{
position: absolute;
top: .2rem;
left: 50%;
transform: translateX(-50%);
display: flex;
justify-content: flex-start;
.device-item{
position: relative;
display: flex;
justify-content: space-between;
align-items: center;
width: 155px;
height: 73px;
// background: url('~@/assets/images/icon5.png') no-repeat left top;
// background-size: contain;
font-size: 14px;
margin: 0 .05rem;
padding: 0 .13rem;
line-height: .3rem;
.bg-icon{
display: block;
width: 46px;
}
.fire{
position: absolute;
right: .07rem;
bottom: 20px;
opacity: .2;
width: .5rem;
}
&:nth-child(1){
color: #21aae1;
background: -webkit-gradient(linear, left top, left bottom, from(rgba(51, 159, 210, .5)), to(rgba(56, 158, 225, 0)));
background: linear-gradient(180deg, rgba(51, 159, 210, .5), rgba(56, 158, 225, 0));
border-top: 2px solid #21aae1;
.card-panel-num{
background: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#21aae1));
background: linear-gradient(180deg, #fff, #21aae1);
-webkit-background-clip: text;
color: transparent;
background-clip: text;
}
}
&:nth-child(2){
color: #008e81;
background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 142, 129, .5)), to(rgba(0, 142, 129, 0)));
background: linear-gradient(180deg, rgba(0, 142, 129, .5), rgba(0, 142, 129, 0));
border-top: 2px solid #008e81;
.card-panel-num{
background: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#008e81));
background: linear-gradient(180deg, #fff, #008e81);
-webkit-background-clip: text;
color: transparent;
background-clip: text;
}
}
&:nth-child(3){
color: #f65164;
background: -webkit-gradient(linear, left top, left bottom, from(rgba(246, 81, 100, .5)), to(rgba(247, 80, 100, 0)));
background: linear-gradient(180deg, rgba(246, 81, 100, .5), rgba(247, 80, 100, 0));
border-top: 2px solid #f65164;
.card-panel-num{
background: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f65164));
background: linear-gradient(180deg, #fff, #f65164);
-webkit-background-clip: text;
color: transparent;
background-clip: text;
}
}
&:nth-child(4){
color: #e58033;
background: -webkit-gradient(linear, left top, left bottom, from(rgba(229, 128, 51, .5)), to(rgba(247, 80, 100, 0)));
background: linear-gradient(180deg, rgba(229, 128, 51, .5), rgba(247, 80, 100, 0));
border-top: 2px solid #e58033;
.card-panel-num{
background: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e58033));
background: linear-gradient(180deg, #fff, #e58033);
-webkit-background-clip: text;
color: transparent;
background-clip: text;
}
}
&:nth-child(5){
color: #c4c859;
background: -webkit-gradient(linear, left top, left bottom, from(rgba(196, 200, 89, .5)), to(rgba(196, 200, 89, 0)));
background: linear-gradient(180deg, rgba(196, 200, 89, .5), rgba(196, 200, 89, 0));
border-top: 2px solid #c4c859;
.card-panel-num{
background: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#c4c859));
background: linear-gradient(180deg, #fff, #c4c859);
-webkit-background-clip: text;
color: transparent;
background-clip: text;
}
}
&:nth-child(6){
color: #793cba;
background: -webkit-gradient(linear, left top, left bottom, from(rgba(121, 60, 186, .5)), to(rgba(121, 60, 186, 0)));
background: linear-gradient(180deg, rgba(121, 60, 186, .5), rgba(121, 60, 186, 0));
border-top: 2px solid #793cba;
.card-panel-num{
background: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#793cba));
background: linear-gradient(180deg, #fff, #793cba);
-webkit-background-clip: text;
color: transparent;
background-clip: text;
}
}
.device-item-content{
p{
margin-top: .06rem;
}
span{
display: block;
text-align: right;
font-size: 22px;
}
}
}
}
// CONTENT
.content-item{
padding: .1rem 0;
margin: 0 .17rem;
font-size: 14px;
border-bottom: 1px solid #113D72;
.content-item-title{
display: flex;
justify-content: flex-start;
align-items: center;
font-size: 18px;
&::after{
content: "";
width: .5rem;
height: .5rem;
background: url('~@/assets/images/icon3.png') no-repeat left center;
background-size: 100% 100%;
}
}
.content-state.state-01{
li{
// display: flex;
// justify-content: flex-start;
// align-items: center;
// &::after{
// content: "";
// width: .5rem;
// height: .5rem;
// background: url('~@/assets/images/icon3.png') no-repeat right center;
// background-size: 100% 100%;
// }
position: relative;
display: flex;
justify-content: space-between;
align-items: center;
// height: .45rem;
margin-bottom: .1rem;
padding: 0 .25rem;
// border: 1px solid #3581cc;
background-color: #02255f;
border-radius: 2px;
&::before {
content: "";
position: absolute;
top: 4px;
left: 4px;
width: 0;
height: 0;
border-color: transparent #339cff;
border-width: 0 0 6px 6px;
border-style: solid;
}
p {
i {
margin-right: 8px;
}
}
span.leakage-state-tip {
position: relative;
display: block;
color: #18b08f;
// width: 6px;
// height: 6px;
// border-radius: 50%;
// background-color: #18b08f;
// &::before {
// content: "";
// position: absolute;
// left: 50%;
// top: 50%;
// width: 14px;
// height: 14px;
// border-radius: 50%;
// box-shadow: inset 0px 0px 10px 1px #18b08f;
// transform: translate(-50%, -50%);
// }
}
&.leakage-warn {
// border-color: #f65164;
// box-shadow: inset 0px 0px 15px 1px #f65164;
color: #f65164;
&::before {
border-color: transparent #f65164;
}
span.leakage-state-tip {
// background-color: #f65164;
color: #f65164;
&::before {
box-shadow: inset 0px 0px 10px 1px #f65164;
}
}
}
&.leakage-error {
// border-color: #FF8447;
// box-shadow: inset 0px 0px 15px 1px #FF8447;
color: #FF8447;
&::before {
border-color: transparent #FF8447;
}
span.leakage-state-tip {
// background-color: #FF8447;
color: #FF8447;
&::before {
box-shadow: inset 0px 0px 10px 1px #FF8447;
}
}
}
}
}
.content-state.state-02{
display: flex;
justify-content: space-between;
flex-wrap: wrap;
padding: 0 .13rem;
li{
display: flex;
justify-content: space-between;
align-items: center;
width: calc(100% / 2 - 40px);
height: .3rem;
line-height: .3rem;
margin-bottom: .1rem;
span.leakage-state-tip {
position: relative;
display: block;
color: #18b08f;
width: 6px;
height: 6px;
border-radius: 50%;
background-color: #18b08f;
&::before {
content: "";
position: absolute;
left: 50%;
top: 50%;
width: 14px;
height: 14px;
border-radius: 50%;
box-shadow: inset 0px 0px 10px 1px #18b08f;
transform: translate(-50%, -50%);
}
}
&.leakage-warn {
span.leakage-state-tip {
background-color: #f65164;
&::before {
box-shadow: inset 0px 0px 10px 1px #f65164;
}
}
}
}
}
}
.last-item{
border-bottom: none;
}
.video-list{
height: calc(100% - 52px);
overflow: hidden;
overflow-y: scroll;
font-size: 14px;
padding: 0 .25rem;
margin-top: .13rem;
li{
display: flex;
justify-content: space-between;
align-items: center;
height: .3rem;
line-height: .3rem;
margin-bottom: .19rem;
p{
padding-left: .45rem;
background: url('~@/assets/images/icon-video5.png') no-repeat left center;
background-size: .3rem .3rem;
}
.el-button{
width: .75rem;
height: .3rem;
padding: .05rem 0;
color: #fff;
background-color: #0097F6;
border-color: #0097F6;
}
}
}
.state-03{
display: flex;
justify-content: space-around;
div{
span{
display: block;
text-align: center;
}
}
}
.screen-env-list{
display: flex;
padding: .25rem 0;
li{
display: flex;
flex-wrap: nowrap;
align-items: center;
align-content: center;
justify-content: center;
width: calc(100%/3);
height: 70px;
margin: 0 .06rem;
background: url('~@/assets/images/data_border_default.png') no-repeat;
background-size: 100% 100%;
position: relative;
&.li-warn{
background: url('~@/assets/images/data_border_warn.png') no-repeat;
background-size: 100% 100%;
}
.msg-list-svg{
font-size: 30px;
display: inline-block;
height: 50px;
line-height: 50px;
margin-left: .13rem;
}
.msg-txt{
position: relative;
flex: 1;
height: 70px;
text-align: center;
}
.msg-list-unit{
position: absolute;
left: 0;
bottom: 0;
width: 100%;
font-size: 14px;
color: #339CFF;
}
.msg-list-num{
color: #fff;
font-size: 20px;
position: absolute;
left: 0;
top: 10px;
width: 100%;
}
}
}
// 视频部分
.v-modal{
z-index: 999999 !important;
}
.view-video{
z-index: 999999999 !important;
font-family: 'DingTalk_JinBuTi_Regular';
.el-dialog{
position: relative;
position: fixed;
left: 50%;
top: 50%;
transform: translate(-50%,-50%);
margin-top: 0 !important;
background: url('~@/assets/images/page4_03.png') no-repeat;
background-size: 100% 100%;
.el-dialog__header{
padding: .38rem 0 .13rem 0;
margin: 0 .25rem;
background: url('~@/assets/images/page4_02.png') no-repeat bottom left;
background-size: 100% .0375rem;
.el-dialog__title{
font-size: 18px;
color: #fff;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
overflow: hidden;
text-overflow: ellipsis;
}
.el-dialog__close{
font-size: 14px;
color: #fff;
}
}
}
}
// 一键清屏
.onClickClear-btn{
position: absolute;
bottom: -14px;
right: 29px;
font-size: 30px;
cursor: pointer;
opacity: .4;
&:hover{
opacity: 1;
}
}
.animate__fadeInRight {
-webkit-animation-name: fadeInRight;
animation-name: fadeInRight;
-webkit-animation-duration: 1s;
animation-duration: 1s;
-webkit-animation-fill-mode: both;
animation-fill-mode: both;
}
@-webkit-keyframes fadeInRight {
0% {
opacity: 0;
-webkit-transform: translate3d(100%, 0, 0);
transform: translate3d(100%, 0, 0);
}
to {
opacity: 1;
-webkit-transform: translateZ(0);
transform: translateZ(0);
}
}
@keyframes fadeInRight {
0% {
opacity: 0;
-webkit-transform: translate3d(100%, 0, 0);
transform: translate3d(100%, 0, 0);
}
to {
opacity: 1;
-webkit-transform: translateZ(0);
transform: translateZ(0);
}
}
.right-fixed{
position: fixed;
right: 0;
top: 50%;
transform: translateY(-50%);
li{
position: relative;
width: 60px;
height: 30px;
line-height: 30px;
margin-bottom: 30px;
font-size: 14px;
text-align: center;
&::before{
content: "";
position: absolute;
left: -24px;
bottom: -14px;
width: 60px;
height: 60px;
}
&:nth-child(1){
background: linear-gradient(to right, transparent 0%, #FA5151 50%, transparent 100%);
&::before{
background: url('~@/assets/images/fixed-icon.png') no-repeat bottom left;
background-size: contain;
}
}
&:nth-child(2){
background: linear-gradient(to right, transparent 0%, #FF8F1F 50%, transparent 100%);
&::before{
background: url('~@/assets/images/fixed-icon1.png') no-repeat bottom left;
background-size: contain;
}
}
}
}

86
src/assets/styles/style.scss

@ -0,0 +1,86 @@
// 全局样式
* {
margin: 0;
padding: 0;
list-style-type: none;
box-sizing: border-box;
outline: none;
}
html {
margin: 0;
padding: 0;
}
body {
font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif;
background-color: #f1f1f1;
margin: 0;
padding: 0;
}
a {
color: #343440;
text-decoration: none;
}
ul{
margin: 0;
padding: 0;
li{
list-style: none;
}
}
img[src=""],img:not([src]){
opacity: 0;
border:none;
visibility: hidden;
max-width: none;
}
.clearfix {
&::after {
content: "";
display: table;
height: 0;
line-height: 0;
visibility: hidden;
clear: both;
}
}
pre{
font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif;
word-wrap: break-word;
white-space: pre-wrap;
}
/**滚动条的宽度*/
::-webkit-scrollbar {
width: 4px;
height: 4px;
}
//滚动条的滑块
::-webkit-scrollbar-thumb {
background-color: #13439E;
border-radius: 3px;
}
.icon {
width: 1em;
height: 1em;
vertical-align: -0.15em;
fill: currentColor;
overflow: hidden;
}
//文章一行显示多余省略号显示
.title-item {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
overflow: hidden;
text-overflow: ellipsis;
}

147
src/common/flexible.js

@ -0,0 +1,147 @@
(function(win, lib) {
var doc = win.document
var docEl = doc.documentElement
var metaEl = doc.querySelector('meta[name="viewport"]')
var flexibleEl = doc.querySelector('meta[name="flexible"]')
var dpr = 0
var scale = 0
var tid
var flexible = lib.flexible || (lib.flexible = {})
if (metaEl) {
console.warn('将根据已有的meta标签来设置缩放比例')
var match = metaEl
.getAttribute('content')
// eslint-disable-next-line no-useless-escape
.match(/initial\-scale=([\d\.]+)/)
if (match) {
scale = parseFloat(match[1])
dpr = parseInt(1 / scale)
}
} else if (flexibleEl) {
var content = flexibleEl.getAttribute('content')
if (content) {
// eslint-disable-next-line no-useless-escape
var initialDpr = content.match(/initial\-dpr=([\d\.]+)/)
// eslint-disable-next-line no-useless-escape
var maximumDpr = content.match(/maximum\-dpr=([\d\.]+)/)
if (initialDpr) {
dpr = parseFloat(initialDpr[1])
scale = parseFloat((1 / dpr).toFixed(2))
}
if (maximumDpr) {
dpr = parseFloat(maximumDpr[1])
scale = parseFloat((1 / dpr).toFixed(2))
}
}
}
if (!dpr && !scale) {
// eslint-disable-next-line no-unused-vars
var isAndroid = win.navigator.appVersion.match(/android/gi)
var isIPhone = win.navigator.appVersion.match(/iphone/gi)
var devicePixelRatio = win.devicePixelRatio
if (isIPhone) {
// iOS下,对于2和3的屏,用2倍的方案,其余的用1倍方案
if (devicePixelRatio >= 3 && (!dpr || dpr >= 3)) {
dpr = 3
} else if (devicePixelRatio >= 2 && (!dpr || dpr >= 2)) {
dpr = 2
} else {
dpr = 1
}
} else {
// 其他设备下,仍旧使用1倍的方案
dpr = 1
}
scale = 1 / dpr
}
docEl.setAttribute('data-dpr', dpr)
if (!metaEl) {
metaEl = doc.createElement('meta')
metaEl.setAttribute('name', 'viewport')
metaEl.setAttribute(
'content',
'initial-scale=' +
scale +
', maximum-scale=' +
scale +
', minimum-scale=' +
scale +
', user-scalable=no'
)
if (docEl.firstElementChild) {
docEl.firstElementChild.appendChild(metaEl)
} else {
var wrap = doc.createElement('div')
wrap.appendChild(metaEl)
doc.write(wrap.innerHTML)
}
}
function refreshRem() {
var width = docEl.getBoundingClientRect().width
// 最小1366px,最大适配2560px
if (width / dpr < 1366) {
width = 1366 * dpr
} else if (width / dpr > 2560) {
width = 2560 * dpr
}
// 设置成24等份,设计稿时1920px的,这样1rem就是80px
var rem = width / 24
docEl.style.fontSize = rem + 'px'
flexible.rem = win.rem = rem
}
win.addEventListener(
'resize',
function() {
clearTimeout(tid)
tid = setTimeout(refreshRem, 300)
},
false
)
win.addEventListener(
'pageshow',
function(e) {
if (e.persisted) {
clearTimeout(tid)
tid = setTimeout(refreshRem, 300)
}
},
false
)
if (doc.readyState === 'complete') {
doc.body.style.fontSize = 12 * dpr + 'px'
} else {
doc.addEventListener(
'DOMContentLoaded',
// eslint-disable-next-line no-unused-vars
function(e) {
doc.body.style.fontSize = 12 * dpr + 'px'
},
false
)
}
refreshRem()
flexible.dpr = win.dpr = dpr
flexible.refreshRem = refreshRem
flexible.rem2px = function(d) {
var val = parseFloat(d) * this.rem
if (typeof d === 'string' && d.match(/rem$/)) {
val += 'px'
}
return val
}
flexible.px2rem = function(d) {
var val = parseFloat(d) / this.rem
if (typeof d === 'string' && d.match(/px$/)) {
val += 'rem'
}
return val
}
})(window, window['lib'] || (window['lib'] = {}))

61
src/common/scrollMixins.js

@ -0,0 +1,61 @@
export default {
data() {
return {
scrollDom: null,
interval: null,
scrollTimer: null, // 滚动定时器
pauseTimer: null, // 暂停定时器
timeout: null,
step: null
}
},
created() {
},
mounted() {
// this.dataCompleteFun()
},
destroyed() {
// 清理定时器
clearTimeout(this.pauseTimer)
this.pauseTimer = null
clearInterval(this.scrollTimer)
this.scrollTimer = null
// 清理点击监听
window.document.removeEventListener('click', this.pauseScroll)
},
methods: {
autoScroll() {
// 滚动长度为0
if (this.scrollDom.scrollHeight - this.scrollDom.clientHeight > 0) {
// 如果定时器存在
if (this.scrollTimer) {
// 则先清除
clearInterval(this.scrollTimer)
clearTimeout(this.pauseTimer)
this.scrollTimer = null
this.pauseTimer = null
}
this.scrollTimer = setInterval(() => {
const scrollHeight = this.scrollDom.scrollHeight
const clientHeight = this.scrollDom.clientHeight
const scroll = scrollHeight - clientHeight
// 获取当前滚动条距离顶部高度
const scrollTop = this.scrollDom.scrollTop
// 当滚动到底部时,间隔时间后重回顶部开始
if (scrollTop + this.step >= scroll) {
this.scrollDom.scrollTop = scroll
this.pauseTimer = setTimeout(() => {
this.scrollDom.scrollTop = 0
this.autoScroll()
}, this.timeout)
} else { // 没有则继续滚动
this.scrollDom.scrollTop = scrollTop + this.step
}
// console.log(scrollHeight, clientHeight, scroll, scrollTop)
}, this.interval)
} else {
return
}
}
}
}

63
src/components/SvgIcon/index.vue

@ -0,0 +1,63 @@
<template>
<div v-if="isExternal" :style="styleExternalIcon" class="svg-external-icon svg-icon" v-on="$listeners" />
<svg v-else :class="svgClass" aria-hidden="true" v-on="$listeners">
<use :xlink:href="iconName" />
</svg>
</template>
<script>
// doc: https://panjiachen.github.io/vue-element-admin-site/feature/component/svg-icon.html#usage
import { isExternal } from '@/utils/index'
export default {
name: 'SvgIcon',
props: {
iconClass: {
type: String,
required: true
},
className: {
type: String,
default: ''
}
},
computed: {
isExternal() {
return isExternal(this.iconClass)
},
iconName() {
return `#icon-${this.iconClass}`
},
svgClass() {
if (this.className) {
return 'svg-icon ' + this.className
} else {
return 'svg-icon'
}
},
styleExternalIcon() {
return {
mask: `url(${this.iconClass}) no-repeat 50% 50%`,
'-webkit-mask': `url(${this.iconClass}) no-repeat 50% 50%`
}
}
}
}
</script>
<style scoped>
.svg-icon {
width: 1em;
height: 1em;
vertical-align: -0.15em;
fill: currentColor;
overflow: hidden;
}
.svg-external-icon {
background-color: currentColor;
mask-size: cover !important;
display: inline-block;
}
</style>

234
src/components/alarm copy.vue

@ -0,0 +1,234 @@
<template>
<div class="page-item fullView-03">
<div class="database-title">报警/故障列表</div>
<div class="swiper-container">
<!-- 外层水平切换的swiper -->
<swiper ref="horizontalSwiper" :options="horizontalOptions">
<swiper-slide v-for="(slide, index) in slideList" :key="index">
<!-- 内层垂直滚动的swiper -->
<swiper :ref="'verticalSwipers' + index" :options="getVerticalOptions(index)">
<swiper-slide v-for="(item, subIndex) in slide.data" :key="subIndex">
<div :class="index % slideList.length === 0 ? 'list-item bj' : 'list-item gz'">
<div class="scroll-content">
<p class="title-item">{{ item.message }}</p>
<span>{{ item.time }}</span>
</div>
<el-button v-if="item.type === 1" class="btn-confirm" type="primary">已确认</el-button>
<el-button v-if="item.type === 0" class="wati-confirm" type="primary">待确认</el-button>
</div>
</swiper-slide>
</swiper>
</swiper-slide>
<!-- 水平分页器 -->
<div slot="pagination" class="horizontal-pagination" />
</swiper>
</div>
</div>
</template>
<script>
import { swiper, swiperSlide } from 'vue-awesome-swiper'
import 'swiper/dist/css/swiper.css'
export default {
components: {
swiper,
swiperSlide
},
data() {
return {
slideList: [
{
data: [
{ message: '13F烟感烟火报警器报警', time: '2025-04-01 13:23:33', type: 0 },
{ message: '23F烟感烟火报警器报警', time: '2025-04-01 13:23:33', type: 1 },
{ message: '33F烟感烟火报警器报警', time: '2025-04-01 13:23:33', type: 1 },
{ message: '43F烟感烟火报警器报警', time: '2025-04-01 13:23:33', type: 0 },
{ message: '53F烟感烟火报警器报警', time: '2025-04-01 13:23:33', type: 1 },
{ message: '63F烟感烟火报警器报警', time: '2025-04-01 13:23:33', type: 1 },
{ message: '73F烟感烟火报警器报警', time: '2025-04-01 13:23:33', type: 1 },
{ message: '83F烟感烟火报警器报警', time: '2025-04-01 13:23:33', type: 1 }
]
},
{
data: [
{ message: '11', time: '2025-04-02 14:24:24', type: 0 },
{ message: '21', time: '2025-04-02 14:24:24', type: 0 },
{ message: '31', time: '2025-04-02 14:24:24', type: 0 },
{ message: '41', time: '2025-04-02 14:24:24', type: 0 },
{ message: '51', time: '2025-04-02 14:24:24', type: 0 },
{ message: '61', time: '2025-04-02 14:24:24', type: 0 },
{ message: '71', time: '2025-04-02 14:24:24', type: 0 },
{ message: '81', time: '2025-04-02 14:24:24', type: 0 }
]
}
],
horizontalOptions: {
direction: 'horizontal',
loop: false, //
speed: 1000,
pagination: {
el: '.horizontal-pagination',
clickable: true
},
// swiper
autoplay: false,
on: {
transitionEnd: function() {
const activeIndex = this.realIndex
this.$emit('horizontalTransitionEnd', activeIndex)
}
}
},
currentVerticalIndex: 0,
verticalOptionsBase: {
direction: 'vertical',
speed: 1000,
slidesPerView: 6, // 3
// spaceBetween: 10,
loop: false, //
autoplay: {
delay: 3000,
disableOnInteraction: false
}
}
}
},
mounted() {
// swiper
this.currentVerticalIndex = 0
this.$nextTick(() => {
this.startVerticalAutoplay(this.currentVerticalIndex)
})
},
methods: {
getVerticalOptions(index) {
const vm = this
return {
...this.verticalOptionsBase,
autoplay: {
...this.verticalOptionsBase.autoplay,
// swiper
enabled: index === this.currentVerticalIndex
},
on: {
transitionEnd: function() {
vm.handleVerticalTransitionEnd(index)
}
}
}
},
handleVerticalTransitionEnd(index) {
//
const verticalSwiper = this.$refs[`verticalSwipers${index}`][0].swiper
if (verticalSwiper.isEnd) {
//
const horizontalSwiper = this.$refs.horizontalSwiper.swiper
const nextIndex = (this.currentVerticalIndex + 1) % this.slideList.length
//
if (nextIndex === 0) {
horizontalSwiper.slideTo(0)
} else {
horizontalSwiper.slideNext()
}
//
this.currentVerticalIndex = nextIndex
//
this.startVerticalAutoplay(this.currentVerticalIndex)
}
},
startVerticalAutoplay(index) {
// swiper
const verticalSwiper = this.$refs[`verticalSwipers${index}`][0].swiper
if (verticalSwiper) {
verticalSwiper.slideTo(0) //
verticalSwiper.autoplay.start()
}
}
}
}
</script>
<style scoped>
.swiper-container {
height: 300px;
width: 100%;
position: relative;
}
/* 垂直swiper样式 */
.swiper-slide {
height: 80px; /* 单条高度 */
display: flex;
box-sizing: border-box;
}
.list-item{
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 15px 0 .5rem;
margin-left: 15px;
&.bj{
background: url('~@/assets/images/icon6.png') no-repeat left center;
background-size: .3rem .3rem;
}
&.gz{
background: url('~@/assets/images/icon7.png') no-repeat left center;
background-size: .3rem .3rem;
}
.el-button{
padding: .05rem .1rem;
margin-left: 10px;
&.btn-confirm{
color: #fff;
background-color: #18b08f;
border-color: #18b08f;
}
&.wati-confirm{
color: #FF8447;
background-color: rgba(0,0,0,.2);
border-color: #FF8447;
}
}
}
.scroll-content {
flex: 1;
display: flex;
justify-content: flex-start;
flex-direction: column;
line-height: 24px;
span{
font-size: 12px;
}
}
.title-item {
margin: 0;
font-size: 14px;
}
/* 水平分页器样式 */
.horizontal-pagination {
position: absolute;
bottom: 10px;
left: 0;
width: 100%;
text-align: center;
}
.swiper-pagination-bullets{
bottom: -10px !important;
}
.swiper-pagination-bullet{
width: 30px;
height: 4px;
border-radius: 0;
background-color: #FF8447;
}
</style>

240
src/components/alarm.vue

@ -0,0 +1,240 @@
<template>
<div class="page-item fullView-03">
<div class="database-title">报警/故障列表</div>
<div class="swiper-main">
<!-- 外层水平切换的swiper -->
<swiper ref="horizontalSwiper" :options="horizontalOptions">
<swiper-slide v-for="(slide, index) in slideList" :key="index">
<!-- 内层垂直滚动的swiper -->
<swiper :ref="'verticalSwipers' + index" :options="getVerticalOptions(index)">
<swiper-slide v-for="(item, subIndex) in slide.data" :key="subIndex">
<div :class="index % slideList.length === 0 ? 'list-item bj' : 'list-item gz'">
<div class="scroll-content">
<el-tooltip class="item" effect="dark" :content="item.message" placement="top-start">
<p class="title-item">{{ item.message }}</p>
</el-tooltip>
<span>{{ item.time }}</span>
</div>
<el-button v-if="item.type === 1" class="btn-confirm" type="primary">已确认</el-button>
<el-button v-if="item.type === 0" class="wati-confirm" type="primary">待确认</el-button>
</div>
</swiper-slide>
</swiper>
</swiper-slide>
<!-- 水平分页器 -->
<div slot="pagination" class="horizontal-pagination" />
</swiper>
</div>
</div>
</template>
<script>
import { swiper, swiperSlide } from 'vue-awesome-swiper'
import 'swiper/dist/css/swiper.css'
export default {
components: {
swiper,
swiperSlide
},
data() {
return {
slideList: [
{
data: [
{ message: '13F烟感烟火报警器报警', time: '2025-04-01 13:23:33', type: 0 },
{ message: '23F烟感烟火报警器报警', time: '2025-04-01 13:23:33', type: 1 },
{ message: '33F烟感烟火报警器报警', time: '2025-04-01 13:23:33', type: 1 },
{ message: '43F烟感烟火报警器报警', time: '2025-04-01 13:23:33', type: 0 },
{ message: '53F烟感烟火报警器报警', time: '2025-04-01 13:23:33', type: 1 },
{ message: '63F烟感烟火报警器报警', time: '2025-04-01 13:23:33', type: 1 },
{ message: '73F烟感烟火报警器报警', time: '2025-04-01 13:23:33', type: 1 },
{ message: '83F烟感烟火报警器报警', time: '2025-04-01 13:23:33', type: 1 }
]
},
{
data: [
{ message: '11', time: '2025-04-02 14:24:24', type: 0 },
{ message: '21', time: '2025-04-02 14:24:24', type: 1 },
{ message: '31', time: '2025-04-02 14:24:24', type: 1 },
{ message: '41', time: '2025-04-02 14:24:24', type: 0 }
]
}
],
horizontalOptions: {
direction: 'horizontal',
loop: false, //
speed: 1000,
pagination: {
el: '.horizontal-pagination',
clickable: true
},
// swiper
autoplay: false,
on: {
transitionEnd: function() {
// const activeIndex = this.realIndex
// this.$emit('horizontalTransitionEnd', activeIndex)
}
}
},
currentVerticalIndex: 0,
verticalOptionsBase: {
direction: 'vertical',
speed: 1000,
slidesPerView: 5, // 3
// spaceBetween: 20,
loop: false, //
autoplay: {
delay: 1000,
disableOnInteraction: false
}
},
switchTimer: null
}
},
mounted() {
// swiper
this.currentVerticalIndex = 0
this.$nextTick(() => {
this.startVerticalAutoplay(this.currentVerticalIndex)
})
},
methods: {
getVerticalOptions(index) {
const vm = this
return {
...this.verticalOptionsBase,
autoplay: {
...this.verticalOptionsBase.autoplay,
// swiper
enabled: index === this.currentVerticalIndex
},
on: {
transitionEnd: function() {
vm.handleVerticalTransitionEnd(index)
}
}
}
},
handleVerticalTransitionEnd(index) {
const verticalSwiper = this.$refs[`verticalSwipers${index}`][0].swiper
if (verticalSwiper.isEnd) {
//
if (this.switchTimer) clearTimeout(this.switchTimer)
// 1
this.switchTimer = setTimeout(() => {
const horizontalSwiper = this.$refs.horizontalSwiper.swiper
const nextIndex = (this.currentVerticalIndex + 1) % this.slideList.length
//
if (nextIndex === 0) {
horizontalSwiper.slideTo(0)
} else {
horizontalSwiper.slideNext()
}
//
this.currentVerticalIndex = nextIndex
this.startVerticalAutoplay(this.currentVerticalIndex)
}, 2000) // 2000
}
},
startVerticalAutoplay(index) {
const verticalSwiper = this.$refs[`verticalSwipers${index}`][0].swiper
if (verticalSwiper) {
verticalSwiper.slideTo(0) //
verticalSwiper.autoplay.start()
}
}
}
}
</script>
<style lang="scss" scoped>
.swiper-main{
padding: 10px 0;
}
.swiper-container {
height: 256px;
width: 100%;
position: relative;
}
/* 垂直swiper样式 */
.swiper-slide {
height: 80px; /* 单条高度 */
display: flex;
box-sizing: border-box;
}
.list-item{
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 15px 0 .5rem;
margin-left: 15px;
&.bj{
background: url('~@/assets/images/icon6.png') no-repeat left center;
background-size: .3rem .3rem;
}
&.gz{
background: url('~@/assets/images/icon7.png') no-repeat left center;
background-size: .3rem .3rem;
}
.el-button{
padding: .05rem 0;
margin-right: 10px;
width: .75rem;
&.btn-confirm{
color: #fff;
background-color: #18b08f;
border-color: #18b08f;
}
&.wati-confirm{
color: #fff;
background-color: #FF8447;
border-color: #FF8447;
}
}
}
.scroll-content {
flex: 1;
display: flex;
justify-content: flex-start;
flex-direction: column;
line-height: 24px;
span{
font-size: 12px;
opacity: .6;
}
}
.title-item {
margin: 0;
font-size: 16px;
}
/* 水平分页器样式 */
::v-deep .horizontal-pagination {
position: absolute;
bottom: -10px;
left: 0;
width: 100%;
text-align: center;
z-index: 99;
.swiper-pagination-bullet{
width: 30px !important;
height: 4px!important;
border-radius: 0!important;
background-color: #3581cc!important;
}
}
</style>

185
src/components/echart/water.vue

@ -0,0 +1,185 @@
<template>
<div id="main" :style="{height:height,width:width}" />
</template>
<script>
import * as echarts from 'echarts'
import resize from '@/utils/resizeMixins.js'
export default {
name: 'WaterEcharts',
mixins: [resize],
props: {
poolData: {
type: Array,
require: true,
default: function() {
return {}
}
},
xAxisData: {
type: Array,
require: true,
default: function() {
return []
}
},
width: {
type: String,
default: '100%'
},
height: {
type: String,
default: '100%'
}
},
data() {
return {
chart: null
}
},
watch: {
'poolData': {
handler(val) {
setTimeout(() => {
this.initChart()
}, 100)
},
immediate: true,
deep: true
}
},
mounted() {
this.initChart()
window.addEventListener('resize', this.__resizeHandler)
},
methods: {
initChart() {
const chartDom = document.getElementById('main')
this.chart = echarts.init(chartDom)
const option = {
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
legend: { //
right: 20,
top: 10,
icon: 'rect',
itemHeight: 6,
itemWidth: 11,
textStyle: {
color: '#fff',
fontSize: 18
}
},
grid: {
left: '3%',
right: '3%',
bottom: '8%',
top: '17%',
containLabel: true
},
xAxis: [{
type: 'category',
axisTick: { show: false },
data: this.xAxisData,
axisLine: { // 线
lineStyle: {
color: '#113D72'
}
},
axisLabel: { // x
show: true,
interval: 0,
textStyle: {
color: '#0097F6',
fontSize: 16,
fontFamily: 'DingTalk_JinBuTi_Regular'
}
},
splitLine: { // 线
lineStyle: {
color: '#113D72',
type: 'solid'
}
}
}],
yAxis: [{
min: 0,
max: function(value) {
return Math.ceil(value.max + (value.max - value.min) * 0.2)
},
minInterval: 10,
type: 'value',
axisLine: { // 线
show: false
},
axisLabel: { //
show: false,
interval: 'auto',
formatter: function(value) {
// 使formatter使
return Math.round(value)
},
textStyle: {
color: '#79B8FF',
fontSize: 16,
fontFamily: 'DingTalk_JinBuTi_Regular'
}
},
axisTick: { // 线
show: false
},
splitLine: { // 线
lineStyle: {
color: 'rgba(66, 139, 221, 0.2)',
type: 'solid'
}
}
}],
series: [
{
type: 'bar',
showBackground: true,
label: {
show: true,
position: 'inside',
formatter: '{c}m',
color: '#fff'
},
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{ offset: 0, color: '#0097F6' },
{ offset: 0.5, color: '#0097F6' },
{ offset: 1, color: '#0097F6' }
])
},
emphasis: {
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{ offset: 0, color: '#2378f7' },
{ offset: 0.7, color: '#2378f7' },
{ offset: 1, color: '#83bff6' }
])
}
},
data: this.poolData
}
]
}
if (option) {
this.chart.setOption(option)
}
}
}
}
</script>
<style lang="scss" scoped>
</style>

153
src/components/echart/waterPressure.vue

@ -0,0 +1,153 @@
<template>
<div id="main2" :style="{height:height,width:width}" />
</template>
<script>
import * as echarts from 'echarts'
import resize from '@/utils/resizeMixins.js'
export default {
name: 'WaterPressure',
mixins: [resize],
props: {
inDoorData: {
type: Number,
require: true,
default: function() {
return 0
}
},
width: {
type: String,
default: '100%'
},
height: {
type: String,
default: '100%'
}
},
data() {
return {
chart: null,
timeRePie: null
}
},
watch: {
'inDoorData': {
handler(val) {
setTimeout(() => {
this.initChart()
}, 100)
},
immediate: true,
deep: true
}
},
mounted() {
this.initChart()
window.addEventListener('resize', this.__resizeHandler)
},
methods: {
resetPieChartData() {
clearInterval(this.timeRePie)
this.timeRePie = setInterval(() => {
if (!this.chart) {
return
}
this.chart.clear()
this.initChart()
}, 8000)
},
initChart() {
const chartDom = document.getElementById('main2')
this.chart = echarts.init(chartDom)
const option = {
series: [
{
type: 'gauge',
center: ['50%', '60%'],
startAngle: 200,
endAngle: -20,
min: 0,
max: 1.2,
axisLine: {
lineStyle: {
width: 5,
color: [
[0.08, '#f65164'],
[0.8, '#18b08f'],
[1, '#c4c859']
]
}
},
pointer: {
icon: 'path://M12.8,0.7l12,40.1H0.7L12.8,0.7z',
length: '30%',
width: 6,
offsetCenter: [0, '-60%'],
itemStyle: {
color: '#F2F2F2'
}
},
axisTick: {
distance: -10,
splitNumber: 1,
lineStyle: {
width: 1,
color: '#fff'
}
},
splitLine: {
distance: -10,
length: 2,
lineStyle: {
width: 1,
color: '#FAC858'
}
},
axisLabel: {
distance: -15,
color: '#fff',
fontSize: 8
},
anchor: {
show: false
},
title: {
show: true,
offsetCenter: [0, '50%'],
fontSize: 14,
color: '#fff'
},
detail: {
valueAnimation: true,
width: '60%',
lineHeight: 5,
borderRadius: 8,
offsetCenter: [0, '-15%'],
fontSize: 14,
fontWeight: 'bolder',
formatter: '{value} Mpa',
color: 'auto'
},
data: [
{
value: this.inDoorData,
name: '室内'
}
]
}
]
}
if (option) {
this.chart.setOption(option)
}
}
}
}
</script>
<style scoped>
</style>

153
src/components/echart/waterPressureOutDoor.vue

@ -0,0 +1,153 @@
<template>
<div id="main3" :style="{height:height,width:width}" />
</template>
<script>
import * as echarts from 'echarts'
import resize from '@/utils/resizeMixins.js'
export default {
name: 'WaterPressureOutDoor',
mixins: [resize],
props: {
outDoorData: {
type: Number,
require: true,
default: function() {
return 0
}
},
width: {
type: String,
default: '100%'
},
height: {
type: String,
default: '100%'
}
},
data() {
return {
chart: null,
timeRePie: null
}
},
watch: {
'outDoorData': {
handler(val) {
setTimeout(() => {
this.initChart()
}, 100)
},
immediate: true,
deep: true
}
},
mounted() {
this.initChart()
window.addEventListener('resize', this.__resizeHandler)
},
methods: {
resetPieChartData() {
clearInterval(this.timeRePie)
this.timeRePie = setInterval(() => {
if (!this.chart) {
return
}
this.chart.clear()
this.initChart()
}, 8000)
},
initChart() {
const chartDom = document.getElementById('main3')
this.chart = echarts.init(chartDom)
const option = {
series: [
{
type: 'gauge',
center: ['50%', '60%'],
startAngle: 200,
endAngle: -20,
min: 0,
max: 1.2,
axisLine: {
lineStyle: {
width: 5,
color: [
[0.08, '#f65164'],
[0.8, '#18b08f'],
[1, '#c4c859']
]
}
},
pointer: {
icon: 'path://M12.8,0.7l12,40.1H0.7L12.8,0.7z',
length: '30%',
width: 6,
offsetCenter: [0, '-60%'],
itemStyle: {
color: '#F2F2F2'
}
},
axisTick: {
distance: -10,
splitNumber: 1,
lineStyle: {
width: 1,
color: '#fff'
}
},
splitLine: {
distance: -10,
length: 2,
lineStyle: {
width: 1,
color: '#FAC858'
}
},
axisLabel: {
distance: -15,
color: '#fff',
fontSize: 8
},
anchor: {
show: false
},
title: {
show: true,
offsetCenter: [0, '50%'],
fontSize: 14,
color: '#fff'
},
detail: {
valueAnimation: true,
width: '60%',
lineHeight: 5,
borderRadius: 8,
offsetCenter: [0, '-15%'],
fontSize: 14,
fontWeight: 'bolder',
formatter: '{value} Mpa',
color: 'auto'
},
data: [
{
value: this.outDoorData,
name: '室外'
}
]
}
]
}
if (option) {
this.chart.setOption(option)
}
}
}
}
</script>
<style scoped>
</style>

61
src/components/hkVideo.vue

@ -0,0 +1,61 @@
<template>
<div style="width: 100%; height: 100%; overflow: hidden;">
<!-- <h1>海康威视视频流</h1> -->
<video id="video" controls autoplay muted width="100%" height="100%" />
</div>
</template>
<script>
// import VideoCom from '../components/video'
// rtsp://admin:ftzn83560792@192.168.99.23:554/h264/ch1/main/av_stream
// rtsp://admin:ftzn83560792@192.168.99.26:554/Streaming/Channels/101
export default {
name: 'Home',
components: {
// VideoCom
},
props: {
hkConfig: {
type: Object,
required: true
}
},
data() {
return {
webRtcServer: null,
camera_ip: '127.0.0.1:8000'
}
},
created() {
// this.controlVolume()
},
mounted() {
},
//
beforeDestroy() {
this.webRtcServer.disconnect()
this.webRtcServer = null
},
methods: {
controlVolume() {
this.$nextTick(() => {
this.$refs.video1.volume = 0
this.$refs.video2.volume = 0
})
},
initVideo() {
// videovideoID
// 127.0.0.1:8000webrtc-streamerIP8000
// rtsp://admin:Hn123456.108@192.168.108.242:554/Streaming/Channels/102
// eslint-disable-next-line no-undef
this.webRtcServer = new WebRtcStreamer('video', location.protocol + '//' + this.camera_ip)
// rtsp,rtspH264
this.webRtcServer.connect('rtsp://' + this.hkConfig.username + ':' + this.hkConfig.password + '@' + this.hkConfig.ip + ':' + this.hkConfig.port + '/Streaming/Channels/102')
}
}
}
</script>
<style lang="scss" scoped>
</style>

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save