-
11.env.development
-
9.env.production
-
197.eslintrc.js
-
23.gitignore
-
38README.md
-
11babel.config.js
-
61package.json
-
20public/index.html
-
3514public/static/adapter.min.js
-
5public/static/config.js
-
305public/static/webrtcstreamer.js
-
313public/static/webrtcstreamer2.js
-
BINpublic/webA/textures/3.jpg
-
BINpublic/webTotal/asset/Line.glb
-
BINpublic/webTotal/asset/TotalCamera.glb
-
BINpublic/webTotal/asset/total2.glb
-
BINpublic/webTotal/asset/totalw.glb
-
BINpublic/webTotal/img/bl9.png
-
BINpublic/webTotal/img/bof.gif
-
BINpublic/webTotal/img/logo.png
-
BINpublic/webTotal/img/logok.gif
-
BINpublic/webTotal/img/sky.jpg
-
BINpublic/webTotal/img/x02.png
-
BINpublic/webTotal/img/yxlogo.png
-
866public/webTotal/index.html
-
1016public/webTotal/index.js
-
16public/webTotal/js/babylon.gui.min.js
-
16public/webTotal/js/babylon.js
-
16public/webTotal/js/babylonjs.loaders.min.js
-
104public/webTotal/js/draco_wasm_wrapper_gltf.js
-
2public/webTotal/js/jquery-3.5.1.min.js
-
18706public/webTotal/js/jquery-ui.js
-
11008public/webTotal/js/jquery.js
-
1473public/webTotal/js/pep.js
-
1public/webTotal/js/qrcode.min.js
-
BINpublic/webTotal/logok.gif
-
BINpublic/webTotal/textures/4.jpg
-
BINpublic/webTotal/textures/5.jpg
-
BINpublic/webTotal/textures/Flare.png
-
BINpublic/webTotal/textures/a.png
-
BINpublic/webTotal/textures/b.png
-
BINpublic/webTotal/textures/ball_light_01.png
-
BINpublic/webTotal/textures/circular_03.png
-
BINpublic/webTotal/textures/environmentSpecular.env
-
BINpublic/webTotal/textures/sun.png
-
BINpublic/webTotal/textures/textures.rar
-
41src/App.vue
-
175src/api/library.js
-
BINsrc/assets/fonts/DingTalk_JinBuTi_Regular.ttf
-
6src/assets/fonts/fonts.css
-
BINsrc/assets/images/1.png
-
BINsrc/assets/images/2.png
-
BINsrc/assets/images/3.png
-
BINsrc/assets/images/4.png
-
BINsrc/assets/images/5-1.png
-
BINsrc/assets/images/5.png
-
BINsrc/assets/images/6.png
-
BINsrc/assets/images/bg2.png
-
BINsrc/assets/images/data_border_default.png
-
BINsrc/assets/images/data_border_warn.png
-
BINsrc/assets/images/fixed-icon.png
-
BINsrc/assets/images/fixed-icon1.png
-
BINsrc/assets/images/header-bg.png
-
BINsrc/assets/images/header_03.png
-
BINsrc/assets/images/header_05.png
-
BINsrc/assets/images/header_07.png
-
BINsrc/assets/images/header_09.png
-
BINsrc/assets/images/header_11.png
-
BINsrc/assets/images/header_13.png
-
BINsrc/assets/images/header_13_b.png
-
BINsrc/assets/images/header_15.png
-
BINsrc/assets/images/icon-video5.png
-
BINsrc/assets/images/icon1.png
-
BINsrc/assets/images/icon2.png
-
BINsrc/assets/images/icon3.png
-
BINsrc/assets/images/icon4.png
-
BINsrc/assets/images/icon5.png
-
BINsrc/assets/images/icon6.png
-
BINsrc/assets/images/icon7.png
-
BINsrc/assets/images/mapBg.png
-
BINsrc/assets/images/page4_02.png
-
BINsrc/assets/images/page4_03.png
-
BINsrc/assets/images/title-big.png
-
BINsrc/assets/images/title-small.png
-
244src/assets/js/rollSlide.js
-
336src/assets/js/tagscloud.js
-
23src/assets/json/lib.json
-
1src/assets/json/qy.json
-
BINsrc/assets/logo.png
-
821src/assets/styles/index.scss
-
86src/assets/styles/style.scss
-
147src/common/flexible.js
-
61src/common/scrollMixins.js
-
63src/components/SvgIcon/index.vue
-
234src/components/alarm copy.vue
-
240src/components/alarm.vue
-
185src/components/echart/water.vue
-
153src/components/echart/waterPressure.vue
-
153src/components/echart/waterPressureOutDoor.vue
-
61src/components/hkVideo.vue
@ -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 |
|||
@ -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' |
|||
@ -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'] |
|||
} |
|||
} |
|||
@ -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 |
|||
@ -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 |
|||
``` |
|||
@ -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' |
|||
] |
|||
} |
|||
@ -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" |
|||
] |
|||
} |
|||
@ -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
@ -0,0 +1,5 @@ |
|||
window.g = { |
|||
AXIOS_TIMEOUT: 10000, |
|||
ApiUrl: 'http://192.168.99.107:6066', // 配置服务器地址,
|
|||
LibUrl: 'http://118.253.150.248:8099' // 图创地址
|
|||
} |
|||
@ -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; |
|||
} |
|||
@ -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; |
|||
} |
|||
|
Before Width: 655 | Height: 300 | Size: 14 KiB |
|
After Width: 2000 | Height: 100 | Size: 29 KiB |
|
After Width: 61 | Height: 61 | Size: 6.0 KiB |
|
After Width: 389 | Height: 87 | Size: 6.8 KiB |
|
After Width: 436 | Height: 140 | Size: 206 KiB |
|
After Width: 1024 | Height: 1024 | Size: 30 KiB |
|
After Width: 64 | Height: 64 | Size: 745 B |
|
After Width: 54 | Height: 54 | Size: 3.6 KiB |
@ -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"> </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
@ -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
|
After Width: 1024 | Height: 1024 | Size: 1.3 MiB |
|
After Width: 1560 | Height: 968 | Size: 103 KiB |
|
After Width: 1560 | Height: 968 | Size: 103 KiB |
|
After Width: 256 | Height: 256 | Size: 24 KiB |
|
After Width: 1024 | Height: 1024 | Size: 247 KiB |
|
After Width: 1024 | Height: 1024 | Size: 38 KiB |
|
After Width: 1024 | Height: 1024 | Size: 62 KiB |
|
After Width: 512 | Height: 512 | Size: 22 KiB |
|
After Width: 128 | Height: 128 | Size: 3.4 KiB |
@ -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> |
|||
@ -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 |
|||
} |
|||
@ -0,0 +1,6 @@ |
|||
@font-face { |
|||
font-family: "DingTalk_JinBuTi_Regular"; |
|||
src: url('DingTalk_JinBuTi_Regular.ttf'); |
|||
font-weight: normal; |
|||
font-style: normal; |
|||
} |
|||
|
After Width: 200 | Height: 200 | Size: 8.0 KiB |
|
After Width: 200 | Height: 200 | Size: 10 KiB |
|
After Width: 200 | Height: 200 | Size: 8.9 KiB |
|
After Width: 200 | Height: 200 | Size: 9.3 KiB |
|
After Width: 200 | Height: 200 | Size: 10 KiB |
|
After Width: 200 | Height: 200 | Size: 12 KiB |
|
After Width: 200 | Height: 200 | Size: 9.1 KiB |
|
After Width: 1920 | Height: 1080 | Size: 457 KiB |
|
After Width: 165 | Height: 81 | Size: 1.3 KiB |
|
After Width: 330 | Height: 161 | Size: 37 KiB |
|
After Width: 181 | Height: 237 | Size: 28 KiB |
|
After Width: 181 | Height: 237 | Size: 28 KiB |
|
After Width: 1451 | Height: 85 | Size: 72 KiB |
|
After Width: 11 | Height: 6 | Size: 1.1 KiB |
|
After Width: 11 | Height: 6 | Size: 1.1 KiB |
|
After Width: 11 | Height: 6 | Size: 1.1 KiB |
|
After Width: 11 | Height: 6 | Size: 1.2 KiB |
|
After Width: 11 | Height: 6 | Size: 1.1 KiB |
|
After Width: 64 | Height: 5 | Size: 1.3 KiB |
|
After Width: 196 | Height: 6 | Size: 1.5 KiB |
|
After Width: 11 | Height: 6 | Size: 1.1 KiB |
|
After Width: 200 | Height: 200 | Size: 8.3 KiB |
|
After Width: 61 | Height: 58 | Size: 4.8 KiB |
|
After Width: 96 | Height: 96 | Size: 3.2 KiB |
|
After Width: 134 | Height: 134 | Size: 8.2 KiB |
|
After Width: 126 | Height: 140 | Size: 9.0 KiB |
|
After Width: 185 | Height: 73 | Size: 1.4 KiB |
|
After Width: 200 | Height: 200 | Size: 8.6 KiB |
|
After Width: 200 | Height: 200 | Size: 8.0 KiB |
|
After Width: 1920 | Height: 1080 | Size: 2.3 MiB |
|
After Width: 1265 | Height: 3 | Size: 1.1 KiB |
|
After Width: 1330 | Height: 871 | Size: 28 KiB |
|
After Width: 1160 | Height: 48 | Size: 20 KiB |
|
After Width: 483 | Height: 48 | Size: 14 KiB |
@ -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) |
|||
@ -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 |
|||
} |
|||
@ -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
|
After Width: 200 | Height: 200 | Size: 6.7 KiB |
@ -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; |
|||
} |
|||
} |
|||
|
|||
} |
|||
} |
|||
|
|||
@ -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; |
|||
} |
|||
@ -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'] = {})) |
|||
@ -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 |
|||
} |
|||
} |
|||
} |
|||
} |
|||
@ -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> |
|||
|
|||
@ -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> |
|||
@ -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> |
|||
@ -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> |
|||
@ -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> |
|||
@ -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> |
|||
@ -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() { |
|||
// video:需要绑定的video控件ID |
|||
// 127.0.0.1:8000:启动webrtc-streamer的设备IP和端口,默认8000 |
|||
// 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地址,根据自己的摄像头传入对应的rtsp地址即可。注意:视频编码格式必须是H264的,否则无法正常显示,编码格式可在摄像头的后台更改 |
|||
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> |
|||