fix(amap):core
This commit is contained in:
parent
9b3a268310
commit
622bc2ea8b
|
@ -86,6 +86,7 @@
|
|||
"tailwindcss": "^3.0.2",
|
||||
"terser-webpack-plugin": "^5.2.5",
|
||||
"typescript": "^4.8.4",
|
||||
"video.js": "^8.18.1",
|
||||
"web-vitals": "^2.1.4",
|
||||
"webpack": "^5.64.4",
|
||||
"webpack-dev-server": "^4.6.0",
|
||||
|
@ -5256,6 +5257,67 @@
|
|||
"@uppy/core": "^2.3.3"
|
||||
}
|
||||
},
|
||||
"node_modules/@videojs/http-streaming": {
|
||||
"version": "3.15.0",
|
||||
"resolved": "https://registry.npmmirror.com/@videojs/http-streaming/-/http-streaming-3.15.0.tgz",
|
||||
"integrity": "sha512-6rjaqEa87gVFqDFsHaLKXGrDqL3NhNZRNi6wkMw+uyt1lrLD2OFY0SfRQRNl7Vmmx0pt5FRJoRJYlnKsowyElA==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.12.5",
|
||||
"@videojs/vhs-utils": "^4.1.1",
|
||||
"aes-decrypter": "^4.0.2",
|
||||
"global": "^4.4.0",
|
||||
"m3u8-parser": "^7.2.0",
|
||||
"mpd-parser": "^1.3.1",
|
||||
"mux.js": "7.0.3",
|
||||
"video.js": "^7 || ^8"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8",
|
||||
"npm": ">=5"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"video.js": "^8.19.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@videojs/http-streaming/node_modules/mux.js": {
|
||||
"version": "7.0.3",
|
||||
"resolved": "https://registry.npmmirror.com/mux.js/-/mux.js-7.0.3.tgz",
|
||||
"integrity": "sha512-gzlzJVEGFYPtl2vvEiJneSWAWD4nfYRHD5XgxmB2gWvXraMPOYk+sxfvexmNfjQUFpmk6hwLR5C6iSFmuwCHdQ==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.11.2",
|
||||
"global": "^4.4.0"
|
||||
},
|
||||
"bin": {
|
||||
"muxjs-transmux": "bin/transmux.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8",
|
||||
"npm": ">=5"
|
||||
}
|
||||
},
|
||||
"node_modules/@videojs/vhs-utils": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmmirror.com/@videojs/vhs-utils/-/vhs-utils-4.1.1.tgz",
|
||||
"integrity": "sha512-5iLX6sR2ownbv4Mtejw6Ax+naosGvoT9kY+gcuHzANyUZZ+4NpeNdKMUhb6ag0acYej1Y7cmr/F2+4PrggMiVA==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.12.5",
|
||||
"global": "^4.4.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8",
|
||||
"npm": ">=5"
|
||||
}
|
||||
},
|
||||
"node_modules/@videojs/xhr": {
|
||||
"version": "2.7.0",
|
||||
"resolved": "https://registry.npmmirror.com/@videojs/xhr/-/xhr-2.7.0.tgz",
|
||||
"integrity": "sha512-giab+EVRanChIupZK7gXjHy90y3nncA2phIOyG3Ne5fvpiMJzvqYwiTOnEVW2S4CoYcuKJkomat7bMXA/UoUZQ==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.5.5",
|
||||
"global": "~4.4.0",
|
||||
"is-function": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@wangeditor/basic-modules": {
|
||||
"version": "1.1.7",
|
||||
"resolved": "https://registry.npmmirror.com/@wangeditor/basic-modules/-/basic-modules-1.1.7.tgz",
|
||||
|
@ -5664,6 +5726,14 @@
|
|||
"@xtuc/long": "4.2.2"
|
||||
}
|
||||
},
|
||||
"node_modules/@xmldom/xmldom": {
|
||||
"version": "0.8.10",
|
||||
"resolved": "https://registry.npmmirror.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz",
|
||||
"integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==",
|
||||
"engines": {
|
||||
"node": ">=10.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@xtuc/ieee754": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmmirror.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
|
||||
|
@ -5767,6 +5837,17 @@
|
|||
"node": ">=8.9"
|
||||
}
|
||||
},
|
||||
"node_modules/aes-decrypter": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/aes-decrypter/-/aes-decrypter-4.0.2.tgz",
|
||||
"integrity": "sha512-lc+/9s6iJvuaRe5qDlMTpCFjnwpkeOXp8qP3oiZ5jsj1MRg+SBVUmmICrhxHvc8OELSmc+fEyyxAuppY6hrWzw==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.12.5",
|
||||
"@videojs/vhs-utils": "^4.1.1",
|
||||
"global": "^4.4.0",
|
||||
"pkcs7": "^1.0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/agent-base": {
|
||||
"version": "6.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz",
|
||||
|
@ -9336,6 +9417,11 @@
|
|||
"url": "https://github.com/fb55/entities?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/dom-walk": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmmirror.com/dom-walk/-/dom-walk-0.1.2.tgz",
|
||||
"integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w=="
|
||||
},
|
||||
"node_modules/dom7": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/dom7/-/dom7-3.0.0.tgz",
|
||||
|
@ -11742,6 +11828,15 @@
|
|||
"resolved": "https://registry.npmmirror.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
|
||||
"integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw=="
|
||||
},
|
||||
"node_modules/global": {
|
||||
"version": "4.4.0",
|
||||
"resolved": "https://registry.npmmirror.com/global/-/global-4.4.0.tgz",
|
||||
"integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==",
|
||||
"dependencies": {
|
||||
"min-document": "^2.19.0",
|
||||
"process": "^0.11.10"
|
||||
}
|
||||
},
|
||||
"node_modules/global-modules": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/global-modules/-/global-modules-2.0.0.tgz",
|
||||
|
@ -13058,6 +13153,11 @@
|
|||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/is-function": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/is-function/-/is-function-1.0.2.tgz",
|
||||
"integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ=="
|
||||
},
|
||||
"node_modules/is-generator-fn": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmmirror.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
|
||||
|
@ -16172,6 +16272,16 @@
|
|||
"lz-string": "bin/bin.js"
|
||||
}
|
||||
},
|
||||
"node_modules/m3u8-parser": {
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmmirror.com/m3u8-parser/-/m3u8-parser-7.2.0.tgz",
|
||||
"integrity": "sha512-CRatFqpjVtMiMaKXxNvuI3I++vUumIXVVT/JpCpdU/FynV/ceVw1qpPyyBNindL+JlPMSesx+WX1QJaZEJSaMQ==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.12.5",
|
||||
"@videojs/vhs-utils": "^4.1.1",
|
||||
"global": "^4.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/magic-string": {
|
||||
"version": "0.25.9",
|
||||
"resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz",
|
||||
|
@ -16398,6 +16508,14 @@
|
|||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/min-document": {
|
||||
"version": "2.19.0",
|
||||
"resolved": "https://registry.npmmirror.com/min-document/-/min-document-2.19.0.tgz",
|
||||
"integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==",
|
||||
"dependencies": {
|
||||
"dom-walk": "^0.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/min-indent": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmmirror.com/min-indent/-/min-indent-1.0.1.tgz",
|
||||
|
@ -16667,6 +16785,20 @@
|
|||
"rimraf": "bin.js"
|
||||
}
|
||||
},
|
||||
"node_modules/mpd-parser": {
|
||||
"version": "1.3.1",
|
||||
"resolved": "https://registry.npmmirror.com/mpd-parser/-/mpd-parser-1.3.1.tgz",
|
||||
"integrity": "sha512-1FuyEWI5k2HcmhS1HkKnUAQV7yFPfXPht2DnRRGtoiiAAW+ESTbtEXIDpRkwdU+XyrQuwrIym7UkoPKsZ0SyFw==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.12.5",
|
||||
"@videojs/vhs-utils": "^4.0.0",
|
||||
"@xmldom/xmldom": "^0.8.3",
|
||||
"global": "^4.4.0"
|
||||
},
|
||||
"bin": {
|
||||
"mpd-to-m3u8-json": "bin/parse.js"
|
||||
}
|
||||
},
|
||||
"node_modules/ms": {
|
||||
"version": "2.1.3",
|
||||
"resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz",
|
||||
|
@ -16690,6 +16822,22 @@
|
|||
"integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/mux.js": {
|
||||
"version": "7.1.0",
|
||||
"resolved": "https://registry.npmmirror.com/mux.js/-/mux.js-7.1.0.tgz",
|
||||
"integrity": "sha512-NTxawK/BBELJrYsZThEulyUMDVlLizKdxyAsMuzoCD1eFj97BVaA8D/CvKsKu6FOLYkFojN5CbM9h++ZTZtknA==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.11.2",
|
||||
"global": "^4.4.0"
|
||||
},
|
||||
"bin": {
|
||||
"muxjs-transmux": "bin/transmux.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8",
|
||||
"npm": ">=5"
|
||||
}
|
||||
},
|
||||
"node_modules/mz": {
|
||||
"version": "2.7.0",
|
||||
"resolved": "https://registry.npmmirror.com/mz/-/mz-2.7.0.tgz",
|
||||
|
@ -17737,6 +17885,17 @@
|
|||
"node": ">= 6"
|
||||
}
|
||||
},
|
||||
"node_modules/pkcs7": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmmirror.com/pkcs7/-/pkcs7-1.0.4.tgz",
|
||||
"integrity": "sha512-afRERtHn54AlwaF2/+LFszyAANTCggGilmcmILUzEjvs3XgFZT+xE6+QWQcAGmu4xajy+Xtj7acLOPdx5/eXWQ==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.5.5"
|
||||
},
|
||||
"bin": {
|
||||
"pkcs7": "bin/cli.js"
|
||||
}
|
||||
},
|
||||
"node_modules/pkg-dir": {
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-4.2.0.tgz",
|
||||
|
@ -19265,7 +19424,6 @@
|
|||
"version": "0.11.10",
|
||||
"resolved": "https://registry.npmmirror.com/process/-/process-0.11.10.tgz",
|
||||
"integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">= 0.6.0"
|
||||
}
|
||||
|
@ -32352,6 +32510,53 @@
|
|||
"url": "https://github.com/sponsors/wooorm"
|
||||
}
|
||||
},
|
||||
"node_modules/video.js": {
|
||||
"version": "8.18.1",
|
||||
"resolved": "https://registry.npmmirror.com/video.js/-/video.js-8.18.1.tgz",
|
||||
"integrity": "sha512-oQ4M/HD2fFgEPHfmVMWxGykRFIpOmVhK0XZ4PSsPTgN2jH6E6+92f/RI2mDXDb0yu+Fxv9fxMUm0M7Z2K3Zo9w==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.12.5",
|
||||
"@videojs/http-streaming": "^3.14.2",
|
||||
"@videojs/vhs-utils": "^4.1.1",
|
||||
"@videojs/xhr": "2.7.0",
|
||||
"aes-decrypter": "^4.0.2",
|
||||
"global": "4.4.0",
|
||||
"m3u8-parser": "^7.2.0",
|
||||
"mpd-parser": "^1.2.2",
|
||||
"mux.js": "^7.0.1",
|
||||
"videojs-contrib-quality-levels": "4.1.0",
|
||||
"videojs-font": "4.2.0",
|
||||
"videojs-vtt.js": "0.15.5"
|
||||
}
|
||||
},
|
||||
"node_modules/videojs-contrib-quality-levels": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmmirror.com/videojs-contrib-quality-levels/-/videojs-contrib-quality-levels-4.1.0.tgz",
|
||||
"integrity": "sha512-TfrXJJg1Bv4t6TOCMEVMwF/CoS8iENYsWNKip8zfhB5kTcegiFYezEA0eHAJPU64ZC8NQbxQgOwAsYU8VXbOWA==",
|
||||
"dependencies": {
|
||||
"global": "^4.4.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16",
|
||||
"npm": ">=8"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"video.js": "^8"
|
||||
}
|
||||
},
|
||||
"node_modules/videojs-font": {
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmmirror.com/videojs-font/-/videojs-font-4.2.0.tgz",
|
||||
"integrity": "sha512-YPq+wiKoGy2/M7ccjmlvwi58z2xsykkkfNMyIg4xb7EZQQNwB71hcSsB3o75CqQV7/y5lXkXhI/rsGAS7jfEmQ=="
|
||||
},
|
||||
"node_modules/videojs-vtt.js": {
|
||||
"version": "0.15.5",
|
||||
"resolved": "https://registry.npmmirror.com/videojs-vtt.js/-/videojs-vtt.js-0.15.5.tgz",
|
||||
"integrity": "sha512-yZbBxvA7QMYn15Lr/ZfhhLPrNpI/RmCSCqgIff57GC2gIrV5YfyzLfLyZMj0NnZSAz8syB4N0nHXpZg9MyrMOQ==",
|
||||
"dependencies": {
|
||||
"global": "^4.3.1"
|
||||
}
|
||||
},
|
||||
"node_modules/vm-browserify": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmmirror.com/vm-browserify/-/vm-browserify-1.1.2.tgz",
|
||||
|
@ -37309,6 +37514,51 @@
|
|||
"nanoid": "^3.1.25"
|
||||
}
|
||||
},
|
||||
"@videojs/http-streaming": {
|
||||
"version": "3.15.0",
|
||||
"resolved": "https://registry.npmmirror.com/@videojs/http-streaming/-/http-streaming-3.15.0.tgz",
|
||||
"integrity": "sha512-6rjaqEa87gVFqDFsHaLKXGrDqL3NhNZRNi6wkMw+uyt1lrLD2OFY0SfRQRNl7Vmmx0pt5FRJoRJYlnKsowyElA==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.12.5",
|
||||
"@videojs/vhs-utils": "^4.1.1",
|
||||
"aes-decrypter": "^4.0.2",
|
||||
"global": "^4.4.0",
|
||||
"m3u8-parser": "^7.2.0",
|
||||
"mpd-parser": "^1.3.1",
|
||||
"mux.js": "7.0.3",
|
||||
"video.js": "^7 || ^8"
|
||||
},
|
||||
"dependencies": {
|
||||
"mux.js": {
|
||||
"version": "7.0.3",
|
||||
"resolved": "https://registry.npmmirror.com/mux.js/-/mux.js-7.0.3.tgz",
|
||||
"integrity": "sha512-gzlzJVEGFYPtl2vvEiJneSWAWD4nfYRHD5XgxmB2gWvXraMPOYk+sxfvexmNfjQUFpmk6hwLR5C6iSFmuwCHdQ==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.11.2",
|
||||
"global": "^4.4.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"@videojs/vhs-utils": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmmirror.com/@videojs/vhs-utils/-/vhs-utils-4.1.1.tgz",
|
||||
"integrity": "sha512-5iLX6sR2ownbv4Mtejw6Ax+naosGvoT9kY+gcuHzANyUZZ+4NpeNdKMUhb6ag0acYej1Y7cmr/F2+4PrggMiVA==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.12.5",
|
||||
"global": "^4.4.0"
|
||||
}
|
||||
},
|
||||
"@videojs/xhr": {
|
||||
"version": "2.7.0",
|
||||
"resolved": "https://registry.npmmirror.com/@videojs/xhr/-/xhr-2.7.0.tgz",
|
||||
"integrity": "sha512-giab+EVRanChIupZK7gXjHy90y3nncA2phIOyG3Ne5fvpiMJzvqYwiTOnEVW2S4CoYcuKJkomat7bMXA/UoUZQ==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.5.5",
|
||||
"global": "~4.4.0",
|
||||
"is-function": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"@wangeditor/basic-modules": {
|
||||
"version": "1.1.7",
|
||||
"resolved": "https://registry.npmmirror.com/@wangeditor/basic-modules/-/basic-modules-1.1.7.tgz",
|
||||
|
@ -37660,6 +37910,11 @@
|
|||
"@xtuc/long": "4.2.2"
|
||||
}
|
||||
},
|
||||
"@xmldom/xmldom": {
|
||||
"version": "0.8.10",
|
||||
"resolved": "https://registry.npmmirror.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz",
|
||||
"integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw=="
|
||||
},
|
||||
"@xtuc/ieee754": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmmirror.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
|
||||
|
@ -37736,6 +37991,17 @@
|
|||
"regex-parser": "^2.2.11"
|
||||
}
|
||||
},
|
||||
"aes-decrypter": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/aes-decrypter/-/aes-decrypter-4.0.2.tgz",
|
||||
"integrity": "sha512-lc+/9s6iJvuaRe5qDlMTpCFjnwpkeOXp8qP3oiZ5jsj1MRg+SBVUmmICrhxHvc8OELSmc+fEyyxAuppY6hrWzw==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.12.5",
|
||||
"@videojs/vhs-utils": "^4.1.1",
|
||||
"global": "^4.4.0",
|
||||
"pkcs7": "^1.0.4"
|
||||
}
|
||||
},
|
||||
"agent-base": {
|
||||
"version": "6.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz",
|
||||
|
@ -40463,6 +40729,11 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"dom-walk": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmmirror.com/dom-walk/-/dom-walk-0.1.2.tgz",
|
||||
"integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w=="
|
||||
},
|
||||
"dom7": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/dom7/-/dom7-3.0.0.tgz",
|
||||
|
@ -42260,6 +42531,15 @@
|
|||
"resolved": "https://registry.npmmirror.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
|
||||
"integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw=="
|
||||
},
|
||||
"global": {
|
||||
"version": "4.4.0",
|
||||
"resolved": "https://registry.npmmirror.com/global/-/global-4.4.0.tgz",
|
||||
"integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==",
|
||||
"requires": {
|
||||
"min-document": "^2.19.0",
|
||||
"process": "^0.11.10"
|
||||
}
|
||||
},
|
||||
"global-modules": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/global-modules/-/global-modules-2.0.0.tgz",
|
||||
|
@ -43209,6 +43489,11 @@
|
|||
"resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
|
||||
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
|
||||
},
|
||||
"is-function": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/is-function/-/is-function-1.0.2.tgz",
|
||||
"integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ=="
|
||||
},
|
||||
"is-generator-fn": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmmirror.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
|
||||
|
@ -45510,6 +45795,16 @@
|
|||
"resolved": "https://registry.npmmirror.com/lz-string/-/lz-string-1.5.0.tgz",
|
||||
"integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ=="
|
||||
},
|
||||
"m3u8-parser": {
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmmirror.com/m3u8-parser/-/m3u8-parser-7.2.0.tgz",
|
||||
"integrity": "sha512-CRatFqpjVtMiMaKXxNvuI3I++vUumIXVVT/JpCpdU/FynV/ceVw1qpPyyBNindL+JlPMSesx+WX1QJaZEJSaMQ==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.12.5",
|
||||
"@videojs/vhs-utils": "^4.1.1",
|
||||
"global": "^4.4.0"
|
||||
}
|
||||
},
|
||||
"magic-string": {
|
||||
"version": "0.25.9",
|
||||
"resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz",
|
||||
|
@ -45689,6 +45984,14 @@
|
|||
"resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz",
|
||||
"integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="
|
||||
},
|
||||
"min-document": {
|
||||
"version": "2.19.0",
|
||||
"resolved": "https://registry.npmmirror.com/min-document/-/min-document-2.19.0.tgz",
|
||||
"integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==",
|
||||
"requires": {
|
||||
"dom-walk": "^0.1.0"
|
||||
}
|
||||
},
|
||||
"min-indent": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmmirror.com/min-indent/-/min-indent-1.0.1.tgz",
|
||||
|
@ -45880,6 +46183,17 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"mpd-parser": {
|
||||
"version": "1.3.1",
|
||||
"resolved": "https://registry.npmmirror.com/mpd-parser/-/mpd-parser-1.3.1.tgz",
|
||||
"integrity": "sha512-1FuyEWI5k2HcmhS1HkKnUAQV7yFPfXPht2DnRRGtoiiAAW+ESTbtEXIDpRkwdU+XyrQuwrIym7UkoPKsZ0SyFw==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.12.5",
|
||||
"@videojs/vhs-utils": "^4.0.0",
|
||||
"@xmldom/xmldom": "^0.8.3",
|
||||
"global": "^4.4.0"
|
||||
}
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.1.3",
|
||||
"resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz",
|
||||
|
@ -45900,6 +46214,15 @@
|
|||
"integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==",
|
||||
"peer": true
|
||||
},
|
||||
"mux.js": {
|
||||
"version": "7.1.0",
|
||||
"resolved": "https://registry.npmmirror.com/mux.js/-/mux.js-7.1.0.tgz",
|
||||
"integrity": "sha512-NTxawK/BBELJrYsZThEulyUMDVlLizKdxyAsMuzoCD1eFj97BVaA8D/CvKsKu6FOLYkFojN5CbM9h++ZTZtknA==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.11.2",
|
||||
"global": "^4.4.0"
|
||||
}
|
||||
},
|
||||
"mz": {
|
||||
"version": "2.7.0",
|
||||
"resolved": "https://registry.npmmirror.com/mz/-/mz-2.7.0.tgz",
|
||||
|
@ -46701,6 +47024,14 @@
|
|||
"resolved": "https://registry.npmmirror.com/pirates/-/pirates-4.0.6.tgz",
|
||||
"integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg=="
|
||||
},
|
||||
"pkcs7": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmmirror.com/pkcs7/-/pkcs7-1.0.4.tgz",
|
||||
"integrity": "sha512-afRERtHn54AlwaF2/+LFszyAANTCggGilmcmILUzEjvs3XgFZT+xE6+QWQcAGmu4xajy+Xtj7acLOPdx5/eXWQ==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.5.5"
|
||||
}
|
||||
},
|
||||
"pkg-dir": {
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-4.2.0.tgz",
|
||||
|
@ -47610,8 +47941,7 @@
|
|||
"process": {
|
||||
"version": "0.11.10",
|
||||
"resolved": "https://registry.npmmirror.com/process/-/process-0.11.10.tgz",
|
||||
"integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
|
||||
"peer": true
|
||||
"integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A=="
|
||||
},
|
||||
"process-nextick-args": {
|
||||
"version": "2.0.1",
|
||||
|
@ -57701,6 +58031,46 @@
|
|||
"integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==",
|
||||
"peer": true
|
||||
},
|
||||
"video.js": {
|
||||
"version": "8.18.1",
|
||||
"resolved": "https://registry.npmmirror.com/video.js/-/video.js-8.18.1.tgz",
|
||||
"integrity": "sha512-oQ4M/HD2fFgEPHfmVMWxGykRFIpOmVhK0XZ4PSsPTgN2jH6E6+92f/RI2mDXDb0yu+Fxv9fxMUm0M7Z2K3Zo9w==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.12.5",
|
||||
"@videojs/http-streaming": "^3.14.2",
|
||||
"@videojs/vhs-utils": "^4.1.1",
|
||||
"@videojs/xhr": "2.7.0",
|
||||
"aes-decrypter": "^4.0.2",
|
||||
"global": "4.4.0",
|
||||
"m3u8-parser": "^7.2.0",
|
||||
"mpd-parser": "^1.2.2",
|
||||
"mux.js": "^7.0.1",
|
||||
"videojs-contrib-quality-levels": "4.1.0",
|
||||
"videojs-font": "4.2.0",
|
||||
"videojs-vtt.js": "0.15.5"
|
||||
}
|
||||
},
|
||||
"videojs-contrib-quality-levels": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmmirror.com/videojs-contrib-quality-levels/-/videojs-contrib-quality-levels-4.1.0.tgz",
|
||||
"integrity": "sha512-TfrXJJg1Bv4t6TOCMEVMwF/CoS8iENYsWNKip8zfhB5kTcegiFYezEA0eHAJPU64ZC8NQbxQgOwAsYU8VXbOWA==",
|
||||
"requires": {
|
||||
"global": "^4.4.0"
|
||||
}
|
||||
},
|
||||
"videojs-font": {
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmmirror.com/videojs-font/-/videojs-font-4.2.0.tgz",
|
||||
"integrity": "sha512-YPq+wiKoGy2/M7ccjmlvwi58z2xsykkkfNMyIg4xb7EZQQNwB71hcSsB3o75CqQV7/y5lXkXhI/rsGAS7jfEmQ=="
|
||||
},
|
||||
"videojs-vtt.js": {
|
||||
"version": "0.15.5",
|
||||
"resolved": "https://registry.npmmirror.com/videojs-vtt.js/-/videojs-vtt.js-0.15.5.tgz",
|
||||
"integrity": "sha512-yZbBxvA7QMYn15Lr/ZfhhLPrNpI/RmCSCqgIff57GC2gIrV5YfyzLfLyZMj0NnZSAz8syB4N0nHXpZg9MyrMOQ==",
|
||||
"requires": {
|
||||
"global": "^4.3.1"
|
||||
}
|
||||
},
|
||||
"vm-browserify": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmmirror.com/vm-browserify/-/vm-browserify-1.1.2.tgz",
|
||||
|
|
|
@ -81,6 +81,7 @@
|
|||
"tailwindcss": "^3.0.2",
|
||||
"terser-webpack-plugin": "^5.2.5",
|
||||
"typescript": "^4.8.4",
|
||||
"video.js": "^8.18.1",
|
||||
"web-vitals": "^2.1.4",
|
||||
"webpack": "^5.64.4",
|
||||
"webpack-dev-server": "^4.6.0",
|
||||
|
|
|
@ -27,12 +27,6 @@ const onMessage = (e: any) => {
|
|||
|
||||
// socketService.on("message", onMessage);
|
||||
const App = () => {
|
||||
useEffect(() => {
|
||||
return () => {
|
||||
console.log("uninstall");
|
||||
// socketService.off("message", onMessage);
|
||||
};
|
||||
}, []);
|
||||
return (
|
||||
<>
|
||||
<Outlet />
|
||||
|
|
|
@ -5,7 +5,6 @@ import { FormSelect } from "./select";
|
|||
import AliUpload from "../ali_upload";
|
||||
import MyEditor from "../edittor";
|
||||
import MapFrom from "../map/MapFrom";
|
||||
import Dumbselect from "./dump_seleft";
|
||||
const { TextArea } = Input;
|
||||
const SimpleForm = (props: SimpleFormData) => {
|
||||
const [form] = Form.useForm();
|
||||
|
|
|
@ -1,41 +0,0 @@
|
|||
<!doctype html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
|
||||
<title>给多个点添加信息窗体</title>
|
||||
<link rel="stylesheet" href="https://cache.amap.com/lbs/static/main1119.css" />
|
||||
<script type="text/javascript"
|
||||
src="https://webapi.amap.com/maps?v=2.0&key=d58999d072ed7e5897d3900a769cfda0"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="container"></div>
|
||||
<script type="text/javascript">
|
||||
//初始化地图对象,加载地图
|
||||
var map = new AMap.Map("container", {
|
||||
resizeEnable: true,
|
||||
mapStyle: "amap://styles/darkblue",
|
||||
center: [103.55, 30.34],
|
||||
viewMode: "2D", // 是否为3D地图模式
|
||||
zoom: 11, // 初始化地图级别
|
||||
});
|
||||
var infoWindow = new AMap.InfoWindow({ offset: new AMap.Pixel(0, -30) });
|
||||
var marker = new AMap.Marker({
|
||||
position: [103.55, 30.34],
|
||||
map: map
|
||||
});
|
||||
marker.content = '我是第1个Marker';
|
||||
marker.on('click', markerClick);
|
||||
marker.emit('click', { target: marker });
|
||||
function markerClick(e) {
|
||||
infoWindow.setContent(e.target.content);
|
||||
infoWindow.open(map, e.target.getPosition());
|
||||
}
|
||||
map.setFitView();
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
|
@ -1,334 +0,0 @@
|
|||
import "./org_chart.less";
|
||||
import OrgChart from "@/components/org/OrgChart";
|
||||
import { OrgChartNodeDataType } from "@/components/org";
|
||||
|
||||
const OrgChartSelf = () => {
|
||||
const data: OrgChartNodeDataType = {
|
||||
key: 0,
|
||||
label: "黄水武装",
|
||||
children: [
|
||||
{
|
||||
key: 1,
|
||||
label: "武装部长",
|
||||
children: [
|
||||
{
|
||||
key: 11,
|
||||
label: "文物社区支部",
|
||||
children: [
|
||||
{
|
||||
key: 21,
|
||||
label: "wangpeng",
|
||||
},
|
||||
{
|
||||
key: 22,
|
||||
label: "wangpeng1",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
key: 12,
|
||||
label: "花龙村支部",
|
||||
children: [
|
||||
{
|
||||
key: 22,
|
||||
label: "一组",
|
||||
},
|
||||
{
|
||||
key: 24,
|
||||
label: "二组",
|
||||
children: [
|
||||
{
|
||||
key: 23,
|
||||
label: "王鹏",
|
||||
},
|
||||
{
|
||||
key: 29,
|
||||
label: "王鹏1",
|
||||
},
|
||||
]
|
||||
},
|
||||
],
|
||||
},
|
||||
{ key: 13, label: "云华社区支部", children: [
|
||||
{
|
||||
key: 26,
|
||||
label: "一组",
|
||||
},
|
||||
{
|
||||
key: 28,
|
||||
label: "二组",
|
||||
},
|
||||
],},
|
||||
],
|
||||
},
|
||||
{
|
||||
key: 2,
|
||||
label: "教导员",
|
||||
children: [],
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
return (
|
||||
<>
|
||||
<OrgChart
|
||||
data={data}
|
||||
direction={"horizontal"}
|
||||
renderNode={(e) => {
|
||||
return <div style={{textAlign:"center"}}>
|
||||
<img width={70} height={70} src="https://ww3.sinaimg.cn/mw690/006i0nC8ly1hpzqtw0eibj31o01o0kd2.jpg" alt="" />
|
||||
<span style={{ color: "#fff",display:"block" }}>{e.label}</span>
|
||||
</div>
|
||||
}}
|
||||
/>
|
||||
</>
|
||||
);
|
||||
};
|
||||
const data = [
|
||||
{
|
||||
depName: "镇武装部党委",
|
||||
depId: 1,
|
||||
userList: [
|
||||
{
|
||||
position: "武装部长",
|
||||
userName: "李部长",
|
||||
userId: 1,
|
||||
},
|
||||
{
|
||||
position: "教导员",
|
||||
userName: "王教导",
|
||||
userId: 2,
|
||||
},
|
||||
],
|
||||
children: [
|
||||
{
|
||||
depName: " 武装力量党支部",
|
||||
depId: 2,
|
||||
children: [
|
||||
{
|
||||
depName: " 文武社区支部",
|
||||
depId: 3,
|
||||
children: [
|
||||
{
|
||||
depName: " 一小组",
|
||||
depId: 6,
|
||||
userList: [
|
||||
{
|
||||
position: "一小组长",
|
||||
userName: "一小组长1",
|
||||
userId: 6,
|
||||
},
|
||||
{
|
||||
position: "二小组长12",
|
||||
userName: "二小组长2",
|
||||
userId: 8,
|
||||
},
|
||||
{
|
||||
position: "战士",
|
||||
userName: "王小三3",
|
||||
userId: 11,
|
||||
},
|
||||
{
|
||||
position: "战士",
|
||||
userName: "王小四4",
|
||||
userId: 12,
|
||||
},
|
||||
{
|
||||
position: "二小组长34",
|
||||
userName: "二小组长5",
|
||||
userId: 8,
|
||||
},
|
||||
{
|
||||
position: "战士",
|
||||
userName: "王小三6",
|
||||
userId: 11,
|
||||
},
|
||||
{
|
||||
position: "战士",
|
||||
userName: "王小四7",
|
||||
userId: 13,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
depName: " 二小组",
|
||||
depId: 7,
|
||||
userList: [
|
||||
{
|
||||
position: "二小组长8",
|
||||
userName: "二小组长9",
|
||||
userId: 7,
|
||||
},
|
||||
{
|
||||
position: "二小组长10",
|
||||
userName: "二小组长11",
|
||||
userId: 8,
|
||||
},
|
||||
{
|
||||
position: "战士",
|
||||
userName: "王小三14",
|
||||
userId: 11,
|
||||
},
|
||||
{
|
||||
position: "战士",
|
||||
userName: "王小四",
|
||||
userId: 12,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
userList: [
|
||||
{
|
||||
position: "文武社区支部书记",
|
||||
userName: "书记名称",
|
||||
userId: 3,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
depName: " 花龙村支部",
|
||||
depId: 4,
|
||||
children: [
|
||||
{
|
||||
depName: " 一小组",
|
||||
depId: 7,
|
||||
userList: [
|
||||
{
|
||||
position: "一小组长",
|
||||
userName: "一小组长",
|
||||
userId: 7,
|
||||
},
|
||||
{
|
||||
position: "二小组长2",
|
||||
userName: "二小组长11",
|
||||
userId: 8,
|
||||
},
|
||||
{
|
||||
position: "战士",
|
||||
userName: "王小三",
|
||||
userId: 11,
|
||||
},
|
||||
{
|
||||
position: "战士",
|
||||
userName: "王小四12",
|
||||
userId: 12,
|
||||
},
|
||||
{
|
||||
position: "二小组长3",
|
||||
userName: "二小组长",
|
||||
userId: 8,
|
||||
},
|
||||
|
||||
{
|
||||
position: "战士",
|
||||
userName: "王小四32",
|
||||
userId: 12,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
depName: " 二小组",
|
||||
depId: 8,
|
||||
userList: [
|
||||
{
|
||||
position: "二小组长4",
|
||||
userName: "二小组长4",
|
||||
userId: 8,
|
||||
},
|
||||
{
|
||||
position: "战士",
|
||||
userName: "王小三",
|
||||
userId: 11,
|
||||
},
|
||||
{
|
||||
position: "战士",
|
||||
userName: "王小四12",
|
||||
userId: 12,
|
||||
},
|
||||
{
|
||||
position: "战士",
|
||||
userName: "王小五",
|
||||
userId: 13,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
userList: [
|
||||
{
|
||||
position: "花龙村支部书记",
|
||||
userName: "书记名称",
|
||||
userId: 4,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
depName: " 云华社区支部",
|
||||
depId: 5,
|
||||
children: [
|
||||
{
|
||||
depName: " 一小组",
|
||||
depId: 8,
|
||||
userList: [
|
||||
{
|
||||
position: "一小组长",
|
||||
userName: "小组长",
|
||||
userId: 8,
|
||||
},
|
||||
{
|
||||
position: "战士",
|
||||
userName: "王喜哦",
|
||||
userId: 12,
|
||||
},
|
||||
{
|
||||
position: "战士",
|
||||
userName: "王喜吃",
|
||||
userId: 13,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
depName: " 二小组",
|
||||
depId: 9,
|
||||
userList: [
|
||||
{
|
||||
position: "二小组长5",
|
||||
userName: "小组长",
|
||||
userId: 9,
|
||||
},
|
||||
{
|
||||
position: "战士",
|
||||
userName: "王小二",
|
||||
userId: 10,
|
||||
},
|
||||
{
|
||||
position: "战士",
|
||||
userName: "王小三",
|
||||
userId: 11,
|
||||
},
|
||||
{
|
||||
position: "战士",
|
||||
userName: "王小四3",
|
||||
userId: 12,
|
||||
},
|
||||
{
|
||||
position: "战士",
|
||||
userName: "王小五",
|
||||
userId: 13,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
userList: [
|
||||
{
|
||||
position: "云华社区支部书记",
|
||||
userName: "书记名称",
|
||||
userId: 5,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
export default OrgChartSelf;
|
|
@ -21,11 +21,11 @@
|
|||
.scrolling-text {
|
||||
white-space: nowrap;
|
||||
display: block;
|
||||
animation: scroll 10s linear infinite;
|
||||
animation: scroll 20s linear infinite;
|
||||
color: #fff;
|
||||
> span {
|
||||
display: inline-block;
|
||||
animation: scrollText 10s linear infinite; /* 动画 */
|
||||
animation: scrollText 20s linear infinite; /* 动画 */
|
||||
}
|
||||
:hover > span {
|
||||
animation-play-state: paused;
|
||||
|
@ -152,9 +152,8 @@
|
|||
|
||||
.map_video_container {
|
||||
position: absolute;
|
||||
width: 200px;
|
||||
height: 400px;
|
||||
top: 40px;
|
||||
z-index: 9;
|
||||
right: 288px;
|
||||
width: 300px;
|
||||
height: 300px;
|
||||
top: 60px;
|
||||
right: 300px;
|
||||
}
|
||||
|
|
|
@ -7,43 +7,17 @@ import HomeBottom from "@/pages/home/homeBottom/home_bottom";
|
|||
import image2 from "@/static/title_line@1x.png";
|
||||
import { SettingOutlined } from "@ant-design/icons";
|
||||
import { useNavigate } from "react-router";
|
||||
import { useEffect, useState } from "react";
|
||||
import MapUtl from "@/components/map/mapUtil";
|
||||
import Video from "./video";
|
||||
import Weather from "./homeLeft/weather";
|
||||
import Timer from "./homeLeft/timer";
|
||||
|
||||
const Home = observer(() => {
|
||||
const navigate = useNavigate();
|
||||
const [times, setTimes] = useState<any>();
|
||||
const [wechaer, setWechaer] = useState<any>();
|
||||
const updateTime = () => {
|
||||
const date = new Date();
|
||||
const month = (date.getMonth() + 1).toString().padStart(2, "0");
|
||||
const strDate = date.getDate().toString().padStart(2, "0");
|
||||
const starHours = date.getHours().toString().padStart(2, "0");
|
||||
const starMinutes = date.getMinutes().toString().padStart(2, "0");
|
||||
const starSeconds = date.getSeconds().toString().padStart(2, "0");
|
||||
const format = `${date.getFullYear()}-${month}-${strDate}
|
||||
${starHours}:${starMinutes}:${starSeconds}`;
|
||||
setTimes(format);
|
||||
};
|
||||
|
||||
// 每秒钟更新一次时间
|
||||
useEffect(() => {
|
||||
let tim = setInterval(updateTime, 1000);
|
||||
setTimeout(() => {
|
||||
MapUtl.wecherInfo?.getLive("双流区", (err, data) => {
|
||||
setWechaer(data);
|
||||
});
|
||||
}, 2000);
|
||||
return () => {
|
||||
clearInterval(tim);
|
||||
};
|
||||
}, []);
|
||||
return (
|
||||
<div className="contents_center">
|
||||
<div className="map_container_t">
|
||||
<div className="map_container_t_l">
|
||||
<span>{times} </span>
|
||||
<Timer />
|
||||
</div>
|
||||
<div className="map_container_t_c">
|
||||
<img className="twp on_to" src={image2} alt="" />
|
||||
|
@ -51,20 +25,7 @@ const Home = observer(() => {
|
|||
<img className="twp" src={image2} alt="" />
|
||||
</div>
|
||||
<div className="map_container_t_r">
|
||||
<div
|
||||
style={{
|
||||
flex: "1",
|
||||
display: "flex",
|
||||
alignItems: "center",
|
||||
justifyContent: "space-around",
|
||||
color: "#fff",
|
||||
}}
|
||||
>
|
||||
<p>天气:{wechaer?.weather}</p>
|
||||
<p>风向:{wechaer?.windDirection}</p>
|
||||
<p>风级:{wechaer?.windPower}</p>
|
||||
<p>湿度:{wechaer?.humidity}</p>
|
||||
</div>
|
||||
<Weather />
|
||||
<SettingOutlined
|
||||
onClick={() => {
|
||||
navigate("admin/user");
|
||||
|
@ -87,7 +48,7 @@ const Home = observer(() => {
|
|||
</div>
|
||||
<MapContainer />
|
||||
<div className="map_video_container">
|
||||
<Video />
|
||||
<Video />
|
||||
</div>
|
||||
<div className="map_container_r">
|
||||
<HomeRight />
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
import { useEffect, useState } from "react";
|
||||
|
||||
const Timer = () => {
|
||||
const [times, setTimes] = useState<any>();
|
||||
|
||||
const updateTime = () => {
|
||||
const date = new Date();
|
||||
const month = (date.getMonth() + 1).toString().padStart(2, "0");
|
||||
const strDate = date.getDate().toString().padStart(2, "0");
|
||||
const starHours = date.getHours().toString().padStart(2, "0");
|
||||
const starMinutes = date.getMinutes().toString().padStart(2, "0");
|
||||
const starSeconds = date.getSeconds().toString().padStart(2, "0");
|
||||
const format = `${date.getFullYear()}-${month}-${strDate}
|
||||
${starHours}:${starMinutes}:${starSeconds}`;
|
||||
setTimes(format);
|
||||
};
|
||||
useEffect(() => {
|
||||
let tim = setInterval(updateTime, 1000);
|
||||
return () => {
|
||||
clearInterval(tim);
|
||||
};
|
||||
}, []);
|
||||
return <span>{times} </span>;
|
||||
};
|
||||
|
||||
export default Timer;
|
|
@ -0,0 +1,31 @@
|
|||
import MapUtl from "@/components/map/mapUtil";
|
||||
import { useEffect, useState } from "react";
|
||||
|
||||
const Weather = () => {
|
||||
const [wechaer, setWechaer] = useState<any>();
|
||||
useEffect(() => {
|
||||
setTimeout(() => {
|
||||
MapUtl.wecherInfo?.getLive("双流区", (err, data) => {
|
||||
setWechaer(data);
|
||||
});
|
||||
}, 2000);
|
||||
}, []);
|
||||
return (
|
||||
<div
|
||||
style={{
|
||||
flex: "1",
|
||||
display: "flex",
|
||||
alignItems: "center",
|
||||
justifyContent: "space-around",
|
||||
color: "#fff",
|
||||
}}
|
||||
>
|
||||
<p>天气:{wechaer?.weather}</p>
|
||||
<p>风向:{wechaer?.windDirection}</p>
|
||||
<p>风级:{wechaer?.windPower}</p>
|
||||
<p>湿度:{wechaer?.humidity}</p>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default Weather;
|
|
@ -1,27 +1,62 @@
|
|||
import { Store } from "antd/es/form/interface";
|
||||
import { inject, observer } from "mobx-react";
|
||||
import { useEffect } from "react";
|
||||
import ReactPlayer from "react-player";
|
||||
|
||||
import { useEffect, useRef } from "react";
|
||||
import videojs from "video.js";
|
||||
import "video.js/dist/video-js.css";
|
||||
const videoJsOptions = {
|
||||
autoplay: true,
|
||||
controls: true,
|
||||
responsive: true,
|
||||
fluid: true,
|
||||
sources: [
|
||||
{
|
||||
src: "http://112.19.145.68:18000/hls/stream_1_0/playlist.m3u8",
|
||||
type: "application/x-mpegURL",
|
||||
},
|
||||
],
|
||||
};
|
||||
const Video = (props: Store) => {
|
||||
const { homeStore } = props;
|
||||
const { homeStore, onReady } = props;
|
||||
const videoRef = useRef<HTMLDivElement>(null);
|
||||
const playerRef = useRef<any>(null); // 使用 any 类型
|
||||
|
||||
useEffect(() => {
|
||||
homeStore.getNewTask();
|
||||
}, [homeStore]);
|
||||
useEffect(() => {
|
||||
if (!playerRef.current && videoRef.current) {
|
||||
const videoElement = document.createElement("video-js");
|
||||
videoElement.classList.add("vjs-big-play-centered");
|
||||
videoRef.current.appendChild(videoElement);
|
||||
const player = (playerRef.current = videojs(
|
||||
videoElement,
|
||||
videoJsOptions,
|
||||
() => {
|
||||
videojs.log("player is ready");
|
||||
onReady && onReady(player);
|
||||
}
|
||||
));
|
||||
} else {
|
||||
const player = playerRef.current;
|
||||
player?.autoplay(videoJsOptions.autoplay);
|
||||
player.src(videoJsOptions.sources);
|
||||
}
|
||||
}, [videoRef, onReady]);
|
||||
useEffect(() => {
|
||||
const player = playerRef.current;
|
||||
|
||||
return () => {
|
||||
if (player && !player.isDisposed()) {
|
||||
player.dispose();
|
||||
playerRef.current = null;
|
||||
}
|
||||
};
|
||||
}, [playerRef]);
|
||||
return (
|
||||
<>
|
||||
{homeStore.showVideo ? (
|
||||
<ReactPlayer
|
||||
className="react-player"
|
||||
url="https://www.119.gov.cn/images/qmxfxw/expd/2024/07/01/1719818550990010367.mp4" //地址
|
||||
width="100%" //宽度
|
||||
height="100%" //高度
|
||||
playing={true} //是否自动播放
|
||||
controls //控制
|
||||
/>
|
||||
) : (
|
||||
<></>
|
||||
)}
|
||||
<div data-vjs-player style={{ width: "100%", height: "100%" }}>
|
||||
<div ref={videoRef} style={{ width: "100%", height: "100%" }} />
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
|
|
@ -43,6 +43,7 @@
|
|||
}
|
||||
}
|
||||
.pv_table {
|
||||
height: 430px;
|
||||
.table {
|
||||
width: 100%;
|
||||
overflow-x: auto;
|
||||
|
|
|
@ -19,8 +19,8 @@ const Banner = (props: Store) => {
|
|||
setFileList(v);
|
||||
};
|
||||
useEffect(() => {
|
||||
sysStore.getlist().then(() => {
|
||||
let data = sysStore.list
|
||||
sysStore.getbanner().then(() => {
|
||||
let data = sysStore.bannerList
|
||||
data.forEach((e)=>{
|
||||
e.fileNmae = e.file_name
|
||||
e.name = e.file_name
|
||||
|
@ -30,7 +30,7 @@ const Banner = (props: Store) => {
|
|||
});
|
||||
}, [sysStore]);
|
||||
const save = () => {
|
||||
sysStore.add({ list: files });
|
||||
sysStore.addBanner({ list: files });
|
||||
};
|
||||
return (
|
||||
<div>
|
||||
|
|
|
@ -0,0 +1,150 @@
|
|||
import { Button, Space, Modal, FormInstance, Form, Select } from "antd";
|
||||
import { inject, observer } from "mobx-react";
|
||||
import BTable from "@/components/b_table";
|
||||
import { useEffect, useState } from "react";
|
||||
import { Store } from "antd/lib/form/interface";
|
||||
import SimpleForm from "@/components/form/simple_form";
|
||||
import React from "react";
|
||||
import { columns, defaultCatConfig } from "./dict_column";
|
||||
const { Option } = Select;
|
||||
const list = [
|
||||
{ id: 1, name: "婚姻" },
|
||||
{ id: 2, name: "政治面貌" },
|
||||
{ id: 3, name: "文化程度" },
|
||||
{ id: 4, name: "民族" },
|
||||
{ id: 5, name: "单位性质" },
|
||||
{ id: 6, name: "服役军兵种" },
|
||||
{ id: 7, name: "军衔" },
|
||||
{ id: 8, name: "技术职称" },
|
||||
{ id: 9, name: "职务级别" },
|
||||
];
|
||||
const Dict = (props: Store) => {
|
||||
const { sysStore } = props;
|
||||
const [isModalOpen, setIsModalOpen] = useState<boolean>(false);
|
||||
const [projectConfig, setProjectConfig] = useState<any>([]);
|
||||
const formRef = React.useRef<FormInstance>(null);
|
||||
const [record, setRecord] = useState<any>(null);
|
||||
useEffect(() => {
|
||||
sysStore.getlist({ drop_type: 0 });
|
||||
setProjectConfig(defaultCatConfig);
|
||||
}, [sysStore]);
|
||||
const column_widget = (any, record) => {
|
||||
return (
|
||||
<Space wrap>
|
||||
<Button
|
||||
type="dashed"
|
||||
size="small"
|
||||
onClick={() => {
|
||||
edit(record);
|
||||
}}
|
||||
>
|
||||
编辑
|
||||
</Button>
|
||||
|
||||
<Button
|
||||
type="dashed"
|
||||
danger
|
||||
size="small"
|
||||
onClick={() => {
|
||||
sysStore.deleteItem(record.id);
|
||||
}}
|
||||
>
|
||||
删除
|
||||
</Button>
|
||||
</Space>
|
||||
);
|
||||
};
|
||||
const edit = (record) => {
|
||||
setIsModalOpen(true);
|
||||
setRecord(record);
|
||||
};
|
||||
const onFinish = (values: any) => {
|
||||
if (!record?.id) {
|
||||
sysStore.add(values);
|
||||
} else {
|
||||
sysStore.putItem(record.id, values);
|
||||
}
|
||||
setIsModalOpen(false);
|
||||
};
|
||||
|
||||
const onFinishFailed = () => {};
|
||||
return (
|
||||
<div className="contentBox">
|
||||
<Space direction="vertical" size="middle" style={{ display: "flex" }}>
|
||||
<Space direction="horizontal" size={"middle"}>
|
||||
<Button
|
||||
type="default"
|
||||
onClick={() => {
|
||||
setRecord(null);
|
||||
setProjectConfig(defaultCatConfig);
|
||||
setIsModalOpen(true);
|
||||
}}
|
||||
>
|
||||
添加字典
|
||||
</Button>
|
||||
</Space>
|
||||
<BTable
|
||||
store={sysStore}
|
||||
columns={[
|
||||
...columns,
|
||||
{
|
||||
title: "操作",
|
||||
dataIndex: "id",
|
||||
ellipsis: {
|
||||
showTitle: false,
|
||||
},
|
||||
render: (any, record) => column_widget(any, record),
|
||||
},
|
||||
]}
|
||||
dataSource={sysStore.list}
|
||||
/>
|
||||
<Modal
|
||||
title={!record?.id ? "添加字典" : "编辑字典"}
|
||||
width={500}
|
||||
open={isModalOpen}
|
||||
afterClose={() => formRef.current?.resetFields()}
|
||||
onOk={() => formRef.current?.submit()}
|
||||
okText="确定"
|
||||
cancelText="取消"
|
||||
onCancel={() => {
|
||||
setIsModalOpen(false);
|
||||
}}
|
||||
>
|
||||
<SimpleForm
|
||||
formRef={formRef}
|
||||
createCallback={() => {
|
||||
if (record?.id) {
|
||||
formRef.current?.setFieldsValue(record);
|
||||
} else {
|
||||
formRef.current?.setFieldsValue(null);
|
||||
}
|
||||
}}
|
||||
formName="card_basic"
|
||||
colProps={25}
|
||||
subBtnName="提交"
|
||||
formDatas={projectConfig}
|
||||
onFinish={onFinish}
|
||||
initialValues={true}
|
||||
onFinishFailed={onFinishFailed}
|
||||
>
|
||||
<>
|
||||
<Form.Item key="drop_type" label="类型" name="drop_type" rules={[]}>
|
||||
<Select placeholder="">
|
||||
{list?.map((v: any) => {
|
||||
return (
|
||||
<Option key={v.id} value={v.id}>
|
||||
{v.name}
|
||||
</Option>
|
||||
);
|
||||
})}
|
||||
</Select>
|
||||
</Form.Item>
|
||||
</>
|
||||
</SimpleForm>
|
||||
</Modal>
|
||||
</Space>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default inject("sysStore")(observer(Dict));
|
|
@ -0,0 +1,34 @@
|
|||
import { FormType } from "@/components/form/interface";
|
||||
import { UserDataType } from "@/model/userModel";
|
||||
import { ColumnsType } from "antd/lib/table";
|
||||
export const columns: ColumnsType<UserDataType> = [
|
||||
{
|
||||
title: "分类名称",
|
||||
dataIndex: "name",
|
||||
},
|
||||
{
|
||||
title: "分类",
|
||||
dataIndex: "drop_type",
|
||||
render: (drop_type) => <>{[
|
||||
{ id: 1, name: "婚姻" },
|
||||
{ id: 2, name: "政治面貌" },
|
||||
{ id: 3, name: "文化程度" },
|
||||
{ id: 4, name: "民族" },
|
||||
{ id: 5, name: "单位性质" },
|
||||
{ id: 6, name: "服役军兵种" },
|
||||
{ id: 7, name: "军衔" },
|
||||
{ id: 8, name: "技术职称" },
|
||||
{ id: 9, name: "职务级别" },
|
||||
].find((v) => v.id === drop_type)?.name || ""}</>,
|
||||
},
|
||||
];
|
||||
|
||||
export const defaultCatConfig = [
|
||||
{
|
||||
type: FormType.input,
|
||||
label: "字典名称",
|
||||
name: "name",
|
||||
value: "",
|
||||
rules: [{ required: true, message: "请输入字典名称!" }],
|
||||
},
|
||||
];
|
|
@ -1,5 +1,6 @@
|
|||
import { Tabs, TabsProps } from "antd";
|
||||
import Banner from "./banner";
|
||||
import Dict from "./dict";
|
||||
|
||||
const SystemPage = () => {
|
||||
const items: TabsProps["items"] = [
|
||||
|
@ -8,7 +9,11 @@ const SystemPage = () => {
|
|||
label: "banner管理",
|
||||
children: <Banner />,
|
||||
},
|
||||
|
||||
{
|
||||
key: "2",
|
||||
label: "数据字典",
|
||||
children: <Dict />,
|
||||
},
|
||||
];
|
||||
return (
|
||||
<>
|
||||
|
|
|
@ -80,6 +80,7 @@ class BaseStore<B> implements BaseStoreInterface<B> {
|
|||
// 获取列表
|
||||
async getlist(params?: any) {
|
||||
this.listStatus = true;
|
||||
console.log("123")
|
||||
try {
|
||||
let res = await baseHttp.get(this.urlConfig.LIST, {
|
||||
size: this.page?.Size ?? 20,
|
||||
|
@ -107,7 +108,6 @@ class BaseStore<B> implements BaseStoreInterface<B> {
|
|||
this.listStatus = false;
|
||||
} catch (error) {
|
||||
this.listStatus = false;
|
||||
console.log(error);
|
||||
}
|
||||
}
|
||||
list!: Array<B>;
|
||||
|
|
|
@ -1,15 +1,34 @@
|
|||
// 档案分类
|
||||
import { action, makeObservable, observable } from "mobx";
|
||||
import BaseStore from "./baseStore";
|
||||
import baseHttp from "@/service/base";
|
||||
import { TagDataType } from "@/model/userModel";
|
||||
|
||||
class SysConfig {
|
||||
static LIST: string = "sys/banner"
|
||||
static ADD: string = "sys/banner"
|
||||
static LISTBannler: string = "sys/banner"
|
||||
static ADDBanner: string = "sys/banner"
|
||||
static LIST: string = "sys/drop"
|
||||
static ADD: string = "sys/drop"
|
||||
}
|
||||
class SysStore extends BaseStore<TagDataType> {
|
||||
constructor() {
|
||||
super(SysConfig)
|
||||
makeObservable(this, {
|
||||
addBanner: action,
|
||||
getbanner: action,
|
||||
bannerList: observable,
|
||||
})
|
||||
}
|
||||
|
||||
async addBanner(param: any) {
|
||||
await baseHttp.post(SysConfig.ADDBanner, param)
|
||||
this.getbanner();
|
||||
}
|
||||
async getbanner() {
|
||||
let res = await baseHttp.get(SysConfig.LISTBannler, {})
|
||||
this.bannerList = res.data.record
|
||||
}
|
||||
bannerList:Array<any> = []
|
||||
}
|
||||
export const sysStore = new SysStore()
|
||||
|
||||
|
|
|
@ -27,117 +27,129 @@
|
|||
<script>
|
||||
let ws;
|
||||
let pc;
|
||||
const call = () => {
|
||||
console.log(ws);
|
||||
pc?.createOffer().then(function (offer) {
|
||||
pc?.setLocalDescription(offer);
|
||||
ws.send(JSON.stringify({
|
||||
type: "offer", "data": {
|
||||
"to": "576030",
|
||||
"from": "31283192",
|
||||
"description": offer,
|
||||
"media": "video",
|
||||
"session_id": "576030-31283192",
|
||||
}
|
||||
}))
|
||||
// socketService.send({ type: 'offer', data: offer })
|
||||
}).catch(function (error) {
|
||||
// 错误处理
|
||||
console.error(error);
|
||||
});
|
||||
|
||||
}
|
||||
navigator.mediaDevices.getUserMedia({ video: true, audio: true })
|
||||
.then(stream => {
|
||||
const configuration = {
|
||||
iceServers: [{ urls: 'stun:rw.quwanya.cn/rtc' }]
|
||||
};
|
||||
pc = new RTCPeerConnection(configuration)
|
||||
pc.ontrack = function (event) {
|
||||
if (event.track.kind === 'audio') {
|
||||
return
|
||||
}
|
||||
let el = document.createElement(event.track.kind)
|
||||
el.srcObject = event.streams[0]
|
||||
el.autoplay = true
|
||||
el.controls = true
|
||||
document.getElementById('remoteVideos').appendChild(el)
|
||||
event.track.onmute = function (event) {
|
||||
el.play()
|
||||
}
|
||||
event.streams[0].onremovetrack = ({ track }) => {
|
||||
if (el.parentNode) {
|
||||
el.parentNode.removeChild(el)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
document.getElementById('localVideo').srcObject = stream
|
||||
stream.getTracks().forEach(track => pc.addTrack(track, stream))
|
||||
ws = new WebSocket("ws://127.0.0.1:12214/ws?id=admin123")
|
||||
pc.onicecandidate = e => {
|
||||
if (!e.candidate) {
|
||||
return
|
||||
}
|
||||
ws.send(JSON.stringify({ type: 'candidate', data: e }))
|
||||
}
|
||||
ws.addEventListener('open', function (event) {
|
||||
ws.send(JSON.stringify({
|
||||
type: "new", "data": {
|
||||
"name": "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36 )",
|
||||
"id": "31283192",
|
||||
"user_agent": "flutter-webrtc/js"
|
||||
}
|
||||
}))
|
||||
});
|
||||
ws.onclose = function (evt) {
|
||||
// window.alert("Websocket has closed")
|
||||
}
|
||||
ws.onmessage = function (evt) {
|
||||
let msg = JSON.parse(evt.data)
|
||||
if (!msg) {
|
||||
return console.log('failed to parse msg')
|
||||
}
|
||||
switch (msg.type) {
|
||||
case 'offer':
|
||||
let offer = msg.data.description
|
||||
pc.setRemoteDescription(offer)
|
||||
pc.createAnswer().then(answer => {
|
||||
pc.setLocalDescription(answer)
|
||||
ws.send(JSON.stringify({
|
||||
type: 'answer', data: {
|
||||
'to': msg.data.from,
|
||||
'from': "31283192",
|
||||
'description': { 'sdp': answer.sdp, 'type': answer.type },
|
||||
'session_id': msg.data.from + "-31283192",
|
||||
}
|
||||
}))
|
||||
})
|
||||
return
|
||||
|
||||
case 'candidate':
|
||||
let candidate = msg.data.candidate
|
||||
if (!candidate) {
|
||||
return console.log('failed to parse candidate')
|
||||
}
|
||||
pc.addIceCandidate(candidate)
|
||||
case "answer":
|
||||
pc?.setRemoteDescription(msg.data.description)
|
||||
|
||||
// let answer = JSON.parse(msg.content.body)
|
||||
// if (!answer) {
|
||||
// return console.log('failed to parse answer')
|
||||
// }
|
||||
// console.log(answer)
|
||||
// this.setOffer(answer.data.description)
|
||||
// break;
|
||||
}
|
||||
}
|
||||
|
||||
ws.onerror = function (evt) {
|
||||
console.log("ERROR: " + evt.data)
|
||||
let configuration;
|
||||
var url =
|
||||
'http://127.0.0.1:12214/v1/public/webRtcConfig?service=turn&username=flutter-webrtc';
|
||||
fetch(url)
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
let res = data.data.credential;
|
||||
configuration = {
|
||||
iceServers: [
|
||||
{
|
||||
urls: res.uris[0],
|
||||
"username": res.username,
|
||||
"credential": res.password
|
||||
},
|
||||
]
|
||||
}
|
||||
})
|
||||
const call = () => {
|
||||
navigator.mediaDevices.getUserMedia({ video: true, audio: true })
|
||||
.then(stream => {
|
||||
pc = new RTCPeerConnection(configuration)
|
||||
pc.ontrack = function (event) {
|
||||
if (event.track.kind === 'audio') {
|
||||
return
|
||||
}
|
||||
let el = document.createElement(event.track.kind)
|
||||
el.srcObject = event.streams[0]
|
||||
el.autoplay = true
|
||||
el.controls = true
|
||||
document.getElementById('remoteVideos').appendChild(el)
|
||||
event.track.onmute = function (event) {
|
||||
el.play()
|
||||
}
|
||||
event.streams[0].onremovetrack = ({ track }) => {
|
||||
if (el.parentNode) {
|
||||
el.parentNode.removeChild(el)
|
||||
}
|
||||
}
|
||||
}
|
||||
document.getElementById('localVideo').srcObject = stream
|
||||
stream.getTracks().forEach(track => pc.addTrack(track, stream))
|
||||
pc.onicecandidate = e => {
|
||||
if (!e.candidate) {
|
||||
return
|
||||
}
|
||||
ws.send(JSON.stringify({ type: 'candidate', data: e }))
|
||||
}
|
||||
pc?.createOffer().then(function (offer) {
|
||||
pc?.setLocalDescription(offer);
|
||||
ws.send(JSON.stringify({
|
||||
type: "offer", "data": {
|
||||
"to": "31283192",
|
||||
"from": "31283191",
|
||||
"description": offer,
|
||||
"media": "video",
|
||||
"session_id": "31283192-31283191",
|
||||
}
|
||||
}))
|
||||
// socketService.send({ type: 'offer', data: offer })
|
||||
}).catch(function (error) {
|
||||
// 错误处理
|
||||
console.error(error);
|
||||
});
|
||||
}).catch((e) => {
|
||||
console.log(e);
|
||||
|
||||
})
|
||||
|
||||
}
|
||||
// wss://rw.quwanya.cn/ws
|
||||
initSocket = () => {
|
||||
ws = new WebSocket("ws://127.0.0.1:12214/wsadmin?id=31283192")
|
||||
ws.addEventListener('open', function (event) {
|
||||
ws.send(JSON.stringify({
|
||||
type: "peerRoot", "data": {
|
||||
"name": "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36 )",
|
||||
"id": "31283192",
|
||||
"user_agent": "flutter-webrtc/js"
|
||||
}
|
||||
}))
|
||||
});
|
||||
ws.onclose = function (evt) {
|
||||
console.log(evt);
|
||||
}
|
||||
ws.onmessage = function (evt) {
|
||||
let msg = JSON.parse(evt.data)
|
||||
if (!msg) {
|
||||
return console.log('failed to parse msg')
|
||||
}
|
||||
console.log(msg);
|
||||
|
||||
switch (msg.type) {
|
||||
case 'offer':
|
||||
let offer = msg.data.description
|
||||
pc.setRemoteDescription(offer)
|
||||
pc.createAnswer().then(answer => {
|
||||
pc.setLocalDescription(answer)
|
||||
ws.send(JSON.stringify({
|
||||
type: 'answer', data: {
|
||||
'to': msg.data.from,
|
||||
'from': "31283192",
|
||||
'description': { 'sdp': answer.sdp, 'type': answer.type },
|
||||
'session_id': msg.data.from + "-31283192",
|
||||
}
|
||||
}))
|
||||
})
|
||||
return
|
||||
case 'candidate':
|
||||
let candidate = msg.content.body
|
||||
if (!candidate) {
|
||||
return console.log('failed to parse candidate')
|
||||
}
|
||||
pc.addIceCandidate(candidate)
|
||||
case "answer":
|
||||
pc?.setRemoteDescription(msg.data.description)
|
||||
}
|
||||
}
|
||||
|
||||
ws.onerror = function (evt) {
|
||||
console.log("ERROR: " + evt.data)
|
||||
}
|
||||
}
|
||||
initSocket()
|
||||
</script>
|
||||
|
||||
</html>
|
211
src/ttttt.html
211
src/ttttt.html
|
@ -27,112 +27,131 @@
|
|||
<script>
|
||||
let ws;
|
||||
let pc;
|
||||
|
||||
let configuration;
|
||||
var url =
|
||||
'http://127.0.0.1:12214/v1/public/webRtcConfig?service=turn&username=flutter-webrtc';
|
||||
fetch(url)
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
let res = data.data.credential;
|
||||
configuration = {
|
||||
iceServers: [
|
||||
{
|
||||
urls: res.uris[0],
|
||||
"username": res.username,
|
||||
"credential": res.password
|
||||
},
|
||||
]
|
||||
}
|
||||
})
|
||||
const call = () => {
|
||||
console.log(ws);
|
||||
pc?.createOffer().then(function (offer) {
|
||||
pc?.setLocalDescription(offer);
|
||||
ws.send(JSON.stringify({
|
||||
type: "offer", "data": {
|
||||
"to": "01J8RT7YMKZNVWTYAECJ55S6W0",
|
||||
"from": "31283192",
|
||||
"description": offer,
|
||||
"media": "video",
|
||||
"session_id": "01J8RT7YMKZNVWTYAECJ55S6W0-31283192",
|
||||
navigator.mediaDevices.getUserMedia({ video: true, audio: true })
|
||||
.then(stream => {
|
||||
pc = new RTCPeerConnection(configuration)
|
||||
pc.ontrack = function (event) {
|
||||
if (event.track.kind === 'audio') {
|
||||
return
|
||||
}
|
||||
let el = document.createElement(event.track.kind)
|
||||
el.srcObject = event.streams[0]
|
||||
el.autoplay = true
|
||||
el.controls = true
|
||||
document.getElementById('remoteVideos').appendChild(el)
|
||||
event.track.onmute = function (event) {
|
||||
el.play()
|
||||
}
|
||||
event.streams[0].onremovetrack = ({ track }) => {
|
||||
if (el.parentNode) {
|
||||
el.parentNode.removeChild(el)
|
||||
}
|
||||
}
|
||||
}
|
||||
}))
|
||||
// socketService.send({ type: 'offer', data: offer })
|
||||
}).catch(function (error) {
|
||||
// 错误处理
|
||||
console.error(error);
|
||||
});
|
||||
document.getElementById('localVideo').srcObject = stream
|
||||
stream.getTracks().forEach(track => pc.addTrack(track, stream))
|
||||
pc.onicecandidate = e => {
|
||||
if (!e.candidate) {
|
||||
return
|
||||
}
|
||||
ws.send(JSON.stringify({ type: 'candidate', data: e }))
|
||||
}
|
||||
pc?.createOffer().then(function (offer) {
|
||||
pc?.setLocalDescription(offer);
|
||||
ws.send(JSON.stringify({
|
||||
type: "offer", "data": {
|
||||
"to": "31283191",
|
||||
"from": "31283192",
|
||||
"description": offer,
|
||||
"media": "video",
|
||||
"session_id": "31283191-31283192",
|
||||
}
|
||||
}))
|
||||
// socketService.send({ type: 'offer', data: offer })
|
||||
}).catch(function (error) {
|
||||
// 错误处理
|
||||
console.error(error);
|
||||
});
|
||||
}).catch((e) => {
|
||||
console.log(e);
|
||||
|
||||
})
|
||||
|
||||
}
|
||||
// wss://rw.quwanya.cn/ws
|
||||
|
||||
navigator.mediaDevices.getUserMedia({ video: true, audio: true })
|
||||
.then(stream => {
|
||||
const configuration = {
|
||||
iceServers: [{ urls: 'stun:127.0.0.1:19302' }]
|
||||
};
|
||||
pc = new RTCPeerConnection(configuration)
|
||||
pc.ontrack = function (event) {
|
||||
if (event.track.kind === 'audio') {
|
||||
initSocket = () => {
|
||||
ws = new WebSocket("ws://127.0.0.1:12214/wsadmin?id=31283191")
|
||||
ws.addEventListener('open', function (event) {
|
||||
ws.send(JSON.stringify({
|
||||
type: "peerRoot", "data": {
|
||||
"name": "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36 )",
|
||||
"id": "31283191",
|
||||
"user_agent": "flutter-webrtc/js"
|
||||
}
|
||||
}))
|
||||
});
|
||||
ws.onclose = function (evt) {
|
||||
console.log(evt);
|
||||
// window.alert("Websocket has closed")
|
||||
}
|
||||
ws.onmessage = function (evt) {
|
||||
let msg = JSON.parse(evt.data)
|
||||
if (!msg) {
|
||||
return console.log('failed to parse msg')
|
||||
}
|
||||
console.log(msg.type);
|
||||
switch (msg.type) {
|
||||
case 'offer':
|
||||
let offer = msg.data.description
|
||||
pc.setRemoteDescription(offer)
|
||||
pc.createAnswer().then(answer => {
|
||||
pc.setLocalDescription(answer)
|
||||
ws.send(JSON.stringify({
|
||||
type: 'answer', data: {
|
||||
'to': msg.data.from,
|
||||
'from': "31283192",
|
||||
'description': { 'sdp': answer.sdp, 'type': answer.type },
|
||||
'session_id': msg.data.from + "-31283192",
|
||||
}
|
||||
}))
|
||||
})
|
||||
return
|
||||
}
|
||||
let el = document.createElement(event.track.kind)
|
||||
el.srcObject = event.streams[0]
|
||||
el.autoplay = true
|
||||
el.controls = true
|
||||
document.getElementById('remoteVideos').appendChild(el)
|
||||
event.track.onmute = function (event) {
|
||||
el.play()
|
||||
}
|
||||
event.streams[0].onremovetrack = ({ track }) => {
|
||||
if (el.parentNode) {
|
||||
el.parentNode.removeChild(el)
|
||||
|
||||
case 'candidate':
|
||||
let candidate = msg.data.candidate
|
||||
if (!candidate) {
|
||||
return console.log('failed to parse candidate')
|
||||
}
|
||||
}
|
||||
pc.addIceCandidate(candidate)
|
||||
case "answer":
|
||||
pc?.setRemoteDescription(msg.data.description)
|
||||
}
|
||||
}
|
||||
|
||||
document.getElementById('localVideo').srcObject = stream
|
||||
stream.getTracks().forEach(track => pc.addTrack(track, stream))
|
||||
ws = new WebSocket("ws://rw.quwanya.cn:12217/ws")
|
||||
pc.onicecandidate = e => {
|
||||
if (!e.candidate) {
|
||||
return
|
||||
}
|
||||
ws.send(JSON.stringify({ type: 'candidate', data: e }))
|
||||
}
|
||||
ws.addEventListener('open', function (event) {
|
||||
ws.send(JSON.stringify({
|
||||
type: "new", "data": {
|
||||
"name": "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36 )",
|
||||
"id": "31283192",
|
||||
"user_agent": "flutter-webrtc/js"
|
||||
}
|
||||
}))
|
||||
});
|
||||
ws.onclose = function (evt) {
|
||||
window.alert("Websocket has closed")
|
||||
}
|
||||
ws.onmessage = function (evt) {
|
||||
let msg = JSON.parse(evt.data)
|
||||
if (!msg) {
|
||||
return console.log('failed to parse msg')
|
||||
}
|
||||
switch (msg.type) {
|
||||
case 'offer':
|
||||
let offer = msg.data.description
|
||||
pc.setRemoteDescription(offer)
|
||||
pc.createAnswer().then(answer => {
|
||||
pc.setLocalDescription(answer)
|
||||
ws.send(JSON.stringify({
|
||||
type: 'answer', data: {
|
||||
'to': msg.data.from,
|
||||
'from': "31283192",
|
||||
'description': { 'sdp': answer.sdp, 'type': answer.type },
|
||||
'session_id': msg.data.from + "-31283192",
|
||||
}
|
||||
}))
|
||||
})
|
||||
return
|
||||
|
||||
case 'candidate':
|
||||
let candidate = msg.data.candidate
|
||||
if (!candidate) {
|
||||
return console.log('failed to parse candidate')
|
||||
}
|
||||
pc.addIceCandidate(candidate)
|
||||
case "answer":
|
||||
pc?.setRemoteDescription(msg.data.description)
|
||||
}
|
||||
}
|
||||
|
||||
ws.onerror = function (evt) {
|
||||
console.log("ERROR: " + evt.data)
|
||||
}
|
||||
}).catch(window.alert)
|
||||
ws.onerror = function (evt) {
|
||||
console.log("ERROR: " + evt.data)
|
||||
}
|
||||
}
|
||||
initSocket()
|
||||
</script>
|
||||
|
||||
</html>
|
|
@ -1,10 +1,10 @@
|
|||
class Config {
|
||||
static baseUrl = "https://rw.quwanya.cn/";
|
||||
// static baseUrl = "https://rw.quwanya.cn/";
|
||||
static uploadUrl = "https://rw.quwanya.cn/";
|
||||
static ws = "wss://rw.quwanya.cn/wsadmin?id=admin";
|
||||
// static ws = "wss://rw.quwanya.cn/wsadmin?id=admin";
|
||||
static rtc = "wss://rw.quwanya.cn/ws";
|
||||
// static ws = "ws://127.0.0.1:12214/ws?id=admin";
|
||||
// static baseUrl = "http://127.0.0.1:12214/";
|
||||
static ws = "ws://127.0.0.1:12214/ws?id=admin";
|
||||
static baseUrl = "http://127.0.0.1:12214/";
|
||||
// static uploadUrl = "http://127.0.0.1:12214/";
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue