init
							
								
								
									
										2
									
								
								Code/frontend/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,2 @@ | |||||||
|  | node_modules | ||||||
|  | node_modules | ||||||
							
								
								
									
										0
									
								
								Code/frontend/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										24
									
								
								Code/frontend/index.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,24 @@ | |||||||
|  | <!DOCTYPE html> | ||||||
|  | <html lang="en"> | ||||||
|  |   <head> | ||||||
|  |     <meta charset="UTF-8" /> | ||||||
|  |     <link rel="icon" href="/favicon.ico" /> | ||||||
|  |     <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | ||||||
|  |     <title>智能监控行人搜索系统</title> | ||||||
|  |   </head> | ||||||
|  |   <body> | ||||||
|  |     <div id="app"></div> | ||||||
|  | 	<script src="https://webapi.amap.com/maps?v=1.4.15&key=6e79f6d236e295632f21b385e363b6e8&plugin=AMap.Scale,AMap.ToolBar,AMap.ControlBar,AMap.DistrictLayer,AMap.MapType,AMap.TileLayer,AMap.Buildings"></script> | ||||||
|  |     <script type="module" src="./src/main.js"></script> | ||||||
|  | 
 | ||||||
|  |     <script type="text/javascript" src="https://api.map.baidu.com/api?v=3.0&type=webgl&ak=27nl1AUw50hT0QOadbzejbNStVk9tx1P"></script> | ||||||
|  |     <script type="text/javascript" src="https://api.map.baidu.com/api?v=3.0&ak=27nl1AUw50hT0QOadbzejbNStVk9tx1P"></script> | ||||||
|  |     <script type="text/javascript" src="//api.map.baidu.com/library/Heatmap/2.0/src/Heatmap_min.js"></script> | ||||||
|  |     <script src="//mapopen.bj.bcebos.com/github/BMapGLLib/TrackAnimation/src/TrackAnimation.min.js"></script> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     <link href="//mapopen.cdn.bcebos.com/github/BMapGLLib/DrawingManager/src/DrawingManager.min.css" rel="stylesheet"> | ||||||
|  |     <script type="text/javascript" src="//mapopen.cdn.bcebos.com/github/BMapGLLib/DrawingManager/src/DrawingManager.min.js"></script> | ||||||
|  | 
 | ||||||
|  |   </body> | ||||||
|  | </html> | ||||||
							
								
								
									
										31
									
								
								Code/frontend/package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,31 @@ | |||||||
|  | { | ||||||
|  |   "name": "vue3_cli_default", | ||||||
|  |   "version": "0.0.0", | ||||||
|  |   "scripts": { | ||||||
|  |     "dev": "vite", | ||||||
|  |     "build": "vite build", | ||||||
|  |     "serve": "vite preview" | ||||||
|  |   }, | ||||||
|  |   "dependencies": { | ||||||
|  |     "axios": "^0.27.2", | ||||||
|  |     "echarts": "^5.3.2", | ||||||
|  |     "echarts-extension-amap": "^1.10.1", | ||||||
|  |     "echarts-liquidfill": "^3.1.0", | ||||||
|  |     "echarts-wordcloud": "^2.0.0", | ||||||
|  |     "element-plus": "^2.1.11", | ||||||
|  |     "videojs-flash": "^2.2.1", | ||||||
|  |     "vue": "^3.2.8", | ||||||
|  |     "vue-baidu-map": "^0.21.22", | ||||||
|  |     "vue-echarts": "^6.0.2", | ||||||
|  |     "vue-router": "^4.0.15", | ||||||
|  |     "vue-video-player": "^6.0.0", | ||||||
|  |     "vue3-seamless-scroll": "^1.2.0" | ||||||
|  |   }, | ||||||
|  |   "devDependencies": { | ||||||
|  |     "@types/node": "^17.0.33", | ||||||
|  |     "@vitejs/plugin-vue": "^1.6.0", | ||||||
|  |     "@vue/compiler-sfc": "^3.2.6", | ||||||
|  |     "swiper": "^3.4.2", | ||||||
|  |     "vite": "^2.5.2" | ||||||
|  |   } | ||||||
|  | } | ||||||
							
								
								
									
										1953
									
								
								Code/frontend/public/TargetPerson.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										2372
									
								
								Code/frontend/public/carameV0.0.0.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										10556
									
								
								Code/frontend/public/carameVFull.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								Code/frontend/public/favicon.ico
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 42 KiB | 
							
								
								
									
										1
									
								
								Code/frontend/public/static/Heatmap_min.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										335
									
								
								Code/frontend/public/static/MarkerClusterer_min.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,335 @@ | |||||||
|  | var BMap = window.BMap | ||||||
|  | var BMapLib = (window.BMapLib = BMapLib || {}) | ||||||
|  | ;(function () { | ||||||
|  |   var b = function (m, l, j) { | ||||||
|  |     l = d(l) | ||||||
|  |     var n = m.pointToPixel(l.getNorthEast()) | ||||||
|  |     var i = m.pointToPixel(l.getSouthWest()) | ||||||
|  |     n.x += j | ||||||
|  |     n.y -= j | ||||||
|  |     i.x -= j | ||||||
|  |     i.y += j | ||||||
|  |     var h = m.pixelToPoint(n) | ||||||
|  |     var k = m.pixelToPoint(i) | ||||||
|  |     return new BMap.Bounds(k, h) | ||||||
|  |   } | ||||||
|  |   var d = function (i) { | ||||||
|  |     var k = f(i.getNorthEast().lng, -180, 180) | ||||||
|  |     var h = f(i.getSouthWest().lng, -180, 180) | ||||||
|  |     var j = f(i.getNorthEast().lat, -74, 74) | ||||||
|  |     var l = f(i.getSouthWest().lat, -74, 74) | ||||||
|  |     return new BMap.Bounds(new BMap.Point(h, l), new BMap.Point(k, j)) | ||||||
|  |   } | ||||||
|  |   var f = function (j, k, h) { | ||||||
|  |     k && (j = Math.max(j, k)) | ||||||
|  |     h && (j = Math.min(j, h)) | ||||||
|  |     return j | ||||||
|  |   } | ||||||
|  |   var a = function (h) { | ||||||
|  |     return '[object Array]' === Object.prototype.toString.call(h) | ||||||
|  |   } | ||||||
|  |   var c = function (l, n) { | ||||||
|  |     var j = -1 | ||||||
|  |     if (a(n)) { | ||||||
|  |       if (n.indexOf) { | ||||||
|  |         j = n.indexOf(l) | ||||||
|  |       } else { | ||||||
|  |         for (var k = 0, h; (h = n[k]); k++) { | ||||||
|  |           if (h === l) { | ||||||
|  |             j = k | ||||||
|  |             break | ||||||
|  |           } | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     return j | ||||||
|  |   } | ||||||
|  |   var e = (BMapLib.MarkerClusterer = function (l, h) { | ||||||
|  |     if (!l) { | ||||||
|  |       return | ||||||
|  |     } | ||||||
|  |     this._map = l | ||||||
|  |     this._markers = [] | ||||||
|  |     this._clusters = [] | ||||||
|  |     var k = h || {} | ||||||
|  |     this._gridSize = k.gridSize || 60 | ||||||
|  |     this._maxZoom = k.maxZoom || 18 | ||||||
|  |     this._minClusterSize = k.minClusterSize || 2 | ||||||
|  |     this._isAverageCenter = false | ||||||
|  |     if (k.isAverageCenter != undefined) { | ||||||
|  |       this._isAverageCenter = k.isAverageCenter | ||||||
|  |     } | ||||||
|  |     this._styles = k.styles || [] | ||||||
|  |     var j = this | ||||||
|  |     this._map.addEventListener('zoomend', function () { | ||||||
|  |       j._redraw() | ||||||
|  |     }) | ||||||
|  |     this._map.addEventListener('moveend', function () { | ||||||
|  |       j._redraw() | ||||||
|  |     }) | ||||||
|  |     var i = k.markers | ||||||
|  |     a(i) && this.addMarkers(i) | ||||||
|  |   }) | ||||||
|  |   e.prototype.addMarkers = function (k) { | ||||||
|  |     for (var j = 0, h = k.length; j < h; j++) { | ||||||
|  |       this._pushMarkerTo(k[j]) | ||||||
|  |     } | ||||||
|  |     this._createClusters() | ||||||
|  |   } | ||||||
|  |   e.prototype._pushMarkerTo = function (h) { | ||||||
|  |     var i = c(h, this._markers) | ||||||
|  |     if (i === -1) { | ||||||
|  |       h.isInCluster = false | ||||||
|  |       this._markers.push(h) | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |   e.prototype.addMarker = function (h) { | ||||||
|  |     this._pushMarkerTo(h) | ||||||
|  |     this._createClusters() | ||||||
|  |   } | ||||||
|  |   e.prototype._createClusters = function () { | ||||||
|  |     var j = this._map.getBounds() | ||||||
|  |     var l = b(this._map, j, this._gridSize) | ||||||
|  |     for (var k = 0, h; (h = this._markers[k]); k++) { | ||||||
|  |       if (!h.isInCluster && l.containsPoint(h.getPosition())) { | ||||||
|  |         this._addToClosestCluster(h) | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |   e.prototype._addToClosestCluster = function (l) { | ||||||
|  |     var p = 4000000 | ||||||
|  |     var n = null | ||||||
|  |     // var k = l.getPosition()
 | ||||||
|  |     for (var m = 0, j; (j = this._clusters[m]); m++) { | ||||||
|  |       var h = j.getCenter() | ||||||
|  |       if (h) { | ||||||
|  |         var o = this._map.getDistance(h, l.getPosition()) | ||||||
|  |         if (o < p) { | ||||||
|  |           p = o | ||||||
|  |           n = j | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     if (n && n.isMarkerInClusterBounds(l)) { | ||||||
|  |       n.addMarker(l) | ||||||
|  |     } else { | ||||||
|  |       // eslint-disable-next-line
 | ||||||
|  |       var j = new g(this) | ||||||
|  |       j.addMarker(l) | ||||||
|  |       this._clusters.push(j) | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |   e.prototype._clearLastClusters = function () { | ||||||
|  |     for (var j = 0, h; (h = this._clusters[j]); j++) { | ||||||
|  |       h.remove() | ||||||
|  |     } | ||||||
|  |     this._clusters = [] | ||||||
|  |     this._removeMarkersFromCluster() | ||||||
|  |   } | ||||||
|  |   e.prototype._removeMarkersFromCluster = function () { | ||||||
|  |     for (var j = 0, h; (h = this._markers[j]); j++) { | ||||||
|  |       h.isInCluster = false | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |   e.prototype._removeMarkersFromMap = function () { | ||||||
|  |     for (var j = 0, h; (h = this._markers[j]); j++) { | ||||||
|  |       h.isInCluster = false | ||||||
|  |       this._map.removeOverlay(h) | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |   e.prototype._removeMarker = function (h) { | ||||||
|  |     var i = c(h, this._markers) | ||||||
|  |     if (i === -1) { | ||||||
|  |       return false | ||||||
|  |     } | ||||||
|  |     this._map.removeOverlay(h) | ||||||
|  |     this._markers.splice(i, 1) | ||||||
|  |     return true | ||||||
|  |   } | ||||||
|  |   e.prototype.removeMarker = function (h) { | ||||||
|  |     var i = this._removeMarker(h) | ||||||
|  |     if (i) { | ||||||
|  |       this._clearLastClusters() | ||||||
|  |       this._createClusters() | ||||||
|  |     } | ||||||
|  |     return i | ||||||
|  |   } | ||||||
|  |   e.prototype.removeMarkers = function (l) { | ||||||
|  |     var k = false | ||||||
|  |     for (var h = 0; h < l.length; h++) { | ||||||
|  |       var j = this._removeMarker(l[h]) | ||||||
|  |       k = k || j | ||||||
|  |     } | ||||||
|  |     if (k) { | ||||||
|  |       this._clearLastClusters() | ||||||
|  |       this._createClusters() | ||||||
|  |     } | ||||||
|  |     return k | ||||||
|  |   } | ||||||
|  |   e.prototype.clearMarkers = function () { | ||||||
|  |     this._clearLastClusters() | ||||||
|  |     this._removeMarkersFromMap() | ||||||
|  |     this._markers = [] | ||||||
|  |   } | ||||||
|  |   e.prototype._redraw = function () { | ||||||
|  |     this._clearLastClusters() | ||||||
|  |     this._createClusters() | ||||||
|  |   } | ||||||
|  |   e.prototype.getGridSize = function () { | ||||||
|  |     return this._gridSize | ||||||
|  |   } | ||||||
|  |   e.prototype.setGridSize = function (h) { | ||||||
|  |     this._gridSize = h | ||||||
|  |     this._redraw() | ||||||
|  |   } | ||||||
|  |   e.prototype.getMaxZoom = function () { | ||||||
|  |     return this._maxZoom | ||||||
|  |   } | ||||||
|  |   e.prototype.setMaxZoom = function (h) { | ||||||
|  |     this._maxZoom = h | ||||||
|  |     this._redraw() | ||||||
|  |   } | ||||||
|  |   e.prototype.getStyles = function () { | ||||||
|  |     return this._styles | ||||||
|  |   } | ||||||
|  |   e.prototype.setStyles = function (h) { | ||||||
|  |     this._styles = h | ||||||
|  |     this._redraw() | ||||||
|  |   } | ||||||
|  |   e.prototype.getMinClusterSize = function () { | ||||||
|  |     return this._minClusterSize | ||||||
|  |   } | ||||||
|  |   e.prototype.setMinClusterSize = function (h) { | ||||||
|  |     this._minClusterSize = h | ||||||
|  |     this._redraw() | ||||||
|  |   } | ||||||
|  |   e.prototype.isAverageCenter = function () { | ||||||
|  |     return this._isAverageCenter | ||||||
|  |   } | ||||||
|  |   e.prototype.getMap = function () { | ||||||
|  |     return this._map | ||||||
|  |   } | ||||||
|  |   e.prototype.getMarkers = function () { | ||||||
|  |     return this._markers | ||||||
|  |   } | ||||||
|  |   e.prototype.getClustersCount = function () { | ||||||
|  |     var k = 0 | ||||||
|  |     for (var j = 0, h; (h = this._clusters[j]); j++) { | ||||||
|  |       h.isReal() && k++ | ||||||
|  |     } | ||||||
|  |     return k | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   function g(h) { | ||||||
|  |     this._markerClusterer = h | ||||||
|  |     this._map = h.getMap() | ||||||
|  |     this._minClusterSize = h.getMinClusterSize() | ||||||
|  |     this._isAverageCenter = h.isAverageCenter() | ||||||
|  |     this._center = null | ||||||
|  |     this._markers = [] | ||||||
|  |     this._gridBounds = null | ||||||
|  |     this._isReal = false | ||||||
|  |     this._clusterMarker = new BMapLib.TextIconOverlay( | ||||||
|  |       this._center, | ||||||
|  |       this._markers.length, | ||||||
|  |       { | ||||||
|  |         styles: this._markerClusterer.getStyles(), | ||||||
|  |       } | ||||||
|  |     ) | ||||||
|  |   } | ||||||
|  |   g.prototype.addMarker = function (k) { | ||||||
|  |     if (this.isMarkerInCluster(k)) { | ||||||
|  |       return false | ||||||
|  |     } | ||||||
|  |     if (!this._center) { | ||||||
|  |       this._center = k.getPosition() | ||||||
|  |       this.updateGridBounds() | ||||||
|  |     } else { | ||||||
|  |       if (this._isAverageCenter) { | ||||||
|  |         var j = this._markers.length + 1 | ||||||
|  |         var o = (this._center.lat * (j - 1) + k.getPosition().lat) / j | ||||||
|  |         var m = (this._center.lng * (j - 1) + k.getPosition().lng) / j | ||||||
|  |         this._center = new BMap.Point(m, o) | ||||||
|  |         this.updateGridBounds() | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     k.isInCluster = true | ||||||
|  |     this._markers.push(k) | ||||||
|  |     var h = this._markers.length | ||||||
|  |     if (h < this._minClusterSize) { | ||||||
|  |       this._map.addOverlay(k) | ||||||
|  |       return true | ||||||
|  |     } else { | ||||||
|  |       if (h === this._minClusterSize) { | ||||||
|  |         for (var n = 0; n < h; n++) { | ||||||
|  |           this._markers[n].getMap() && this._map.removeOverlay(this._markers[n]) | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     this._map.addOverlay(this._clusterMarker) | ||||||
|  |     this._isReal = true | ||||||
|  |     this.updateClusterMarker() | ||||||
|  |     return true | ||||||
|  |   } | ||||||
|  |   g.prototype.isMarkerInCluster = function (j) { | ||||||
|  |     if (this._markers.indexOf) { | ||||||
|  |       return this._markers.indexOf(j) != -1 | ||||||
|  |     } else { | ||||||
|  |       for (var k = 0, h; (h = this._markers[k]); k++) { | ||||||
|  |         if (h === j) { | ||||||
|  |           return true | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     return false | ||||||
|  |   } | ||||||
|  |   g.prototype.isMarkerInClusterBounds = function (h) { | ||||||
|  |     return this._gridBounds.containsPoint(h.getPosition()) | ||||||
|  |   } | ||||||
|  |   g.prototype.isReal = function () { | ||||||
|  |     return this._isReal | ||||||
|  |   } | ||||||
|  |   g.prototype.updateGridBounds = function () { | ||||||
|  |     var h = new BMap.Bounds(this._center, this._center) | ||||||
|  |     this._gridBounds = b(this._map, h, this._markerClusterer.getGridSize()) | ||||||
|  |   } | ||||||
|  |   g.prototype.updateClusterMarker = function () { | ||||||
|  |     if (this._map.getZoom() > this._markerClusterer.getMaxZoom()) { | ||||||
|  |       this._clusterMarker && this._map.removeOverlay(this._clusterMarker) | ||||||
|  |       for (var l = 0, j; (j = this._markers[l]); l++) { | ||||||
|  |         this._map.addOverlay(j) | ||||||
|  |       } | ||||||
|  |       return | ||||||
|  |     } | ||||||
|  |     if (this._markers.length < this._minClusterSize) { | ||||||
|  |       this._clusterMarker.hide() | ||||||
|  |       return | ||||||
|  |     } | ||||||
|  |     this._clusterMarker.setPosition(this._center) | ||||||
|  |     this._clusterMarker.setText(this._markers.length) | ||||||
|  |     var k = this._map | ||||||
|  |     var h = this.getBounds() | ||||||
|  |     this._clusterMarker.addEventListener('click', function () { | ||||||
|  |       k.setViewport(h) | ||||||
|  |     }) | ||||||
|  |   } | ||||||
|  |   g.prototype.remove = function () { | ||||||
|  |     // eslint-disable-next-line
 | ||||||
|  |     for (var j = 0, h; (h = this._markers[j]); j++) { | ||||||
|  |       this._markers[j].getMap() && this._map.removeOverlay(this._markers[j]) | ||||||
|  |     } | ||||||
|  |     this._map.removeOverlay(this._clusterMarker) | ||||||
|  |     this._markers.length = 0 | ||||||
|  |     delete this._markers | ||||||
|  |   } | ||||||
|  |   g.prototype.getBounds = function () { | ||||||
|  |     var k = new BMap.Bounds(this._center, this._center) | ||||||
|  |     for (var j = 0, h; (h = this._markers[j]); j++) { | ||||||
|  |       k.extend(h.getPosition()) | ||||||
|  |     } | ||||||
|  |     return k | ||||||
|  |   } | ||||||
|  |   g.prototype.getCenter = function () { | ||||||
|  |     return this._center | ||||||
|  |   } | ||||||
|  | })() | ||||||
							
								
								
									
										3
									
								
								Code/frontend/public/static/TextIconOverlay_min.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										10916
									
								
								Code/frontend/public/static/bmap_offline_api_v3.0_min.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								Code/frontend/public/static/images/Mario.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 3.9 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Code/frontend/public/static/images/backimg.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 413 B | 
							
								
								
									
										
											BIN
										
									
								
								Code/frontend/public/static/images/blank.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 49 B | 
							
								
								
									
										
											BIN
										
									
								
								Code/frontend/public/static/images/circle.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 3.1 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Code/frontend/public/static/images/closedhand.cur
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 326 B | 
							
								
								
									
										
											BIN
										
									
								
								Code/frontend/public/static/images/copyright_logo.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 2.5 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Code/frontend/public/static/images/iw3.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 7.5 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Code/frontend/public/static/images/iw_close1d3.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 73 B | 
							
								
								
									
										
											BIN
										
									
								
								Code/frontend/public/static/images/iw_minus.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 73 B | 
							
								
								
									
										
											BIN
										
									
								
								Code/frontend/public/static/images/iw_plus.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 76 B | 
							
								
								
									
										
											BIN
										
									
								
								Code/frontend/public/static/images/iw_plus1d3.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 59 B | 
							
								
								
									
										
											BIN
										
									
								
								Code/frontend/public/static/images/iws3.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 8.6 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Code/frontend/public/static/images/m0.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 2.9 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Code/frontend/public/static/images/m1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 3.2 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Code/frontend/public/static/images/m2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 3.9 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Code/frontend/public/static/images/m3.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 5.6 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Code/frontend/public/static/images/m4.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 6.7 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Code/frontend/public/static/images/mapctrls1d3.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 899 B | 
							
								
								
									
										
											BIN
										
									
								
								Code/frontend/public/static/images/mapctrls2d0.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 9.3 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Code/frontend/public/static/images/mapctrls2d0.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 11 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Code/frontend/public/static/images/marker_red_hd.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.8 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Code/frontend/public/static/images/marker_red_sprite.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.8 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Code/frontend/public/static/images/node.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 61 B | 
							
								
								
									
										
											BIN
										
									
								
								Code/frontend/public/static/images/openhand.cur
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 326 B | 
							
								
								
									
										
											BIN
										
									
								
								Code/frontend/public/static/images/panorama/close.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.7 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Code/frontend/public/static/images/panorama/indoor_exit.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.3 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Code/frontend/public/static/images/phone.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 983 B | 
| After Width: | Height: | Size: 1.4 KiB | 
| After Width: | Height: | Size: 1.2 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Code/frontend/public/static/images/quanjing.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.3 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Code/frontend/public/static/images/right.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 2.5 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Code/frontend/public/static/images/ruler.cur
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 4.2 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Code/frontend/public/static/images/stop_icon.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 363 B | 
							
								
								
									
										
											BIN
										
									
								
								Code/frontend/public/static/m4.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 6.7 KiB | 
							
								
								
									
										19
									
								
								Code/frontend/public/static/map_load.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,19 @@ | |||||||
|  | let bmapcfg = { | ||||||
|  |   'imgext'      : '.jpg',   //瓦片图的后缀 ------ 根据需要修改,一般是 .png .jpg
 | ||||||
|  |   'tiles_dir'   : 'tiles',       //普通瓦片图的地址,为空默认在 offlinemap/tiles/ 目录
 | ||||||
|  | //   'tiles_path': 'http://192.168.20.21:8082/', // 这个地址是瓦片文件本地起的服务器地址
 | ||||||
|  |   'tiles_path': 'F:/Desktop/IntelligentSecurity/IntelligentSecurity_V_0.0.2/tiles', // 这个地址是瓦片文件本地起的服务器地址
 | ||||||
|  |   'tiles_hybrid': '',       //卫星瓦片图的地址,为空默认在 offlinemap/tiles_hybrid/ 目录
 | ||||||
|  |   'tiles_self'  : ''        //自定义图层的地址,为空默认在 offlinemap/tiles_self/ 目录
 | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | //////////////////下面的保持不动///////////////////////////////////
 | ||||||
|  | var scripts = document.getElementsByTagName("script"); | ||||||
|  | var JS__FILE__ = scripts[scripts.length - 1].getAttribute("src");  //获得当前js文件路径
 | ||||||
|  | bmapcfg.home = JS__FILE__.substr(0, JS__FILE__.lastIndexOf("/")+1); //地图API主目录
 | ||||||
|  | (function(){ | ||||||
|  |   window.BMap_loadScriptTime = (new Date).getTime(); | ||||||
|  |   //加载地图API主文件
 | ||||||
|  |   document.write('<script type="text/javascript" src="'+bmapcfg.home+'bmap_offline_api_v3.0_min.js"></script>') | ||||||
|  | })(); | ||||||
|  | ///////////////////////////////////////////////////////////////////
 | ||||||
							
								
								
									
										1
									
								
								Code/frontend/public/static/modules/clayer_0hwrfx.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1 @@ | |||||||
|  | _jsload2&&_jsload2('clayer', 'z.extend(nb.prototype,{cl:{},Bj:[],Pu:"",jq:"",MG:"",dl:s,Jg:s,Ig:s,Hg:[],LG:0,pz:u(),lz:u(),Ku:u(),Sd:function(){this.UG()},na:function(a,b){Mc.prototype.na.call(this,a,b);this.cl={};this.Bj=[];this.B=a;this.UG()},zt:ca(q),remove:function(){Mc.prototype.remove.call(this);this.fU()},UG:function(){var a=this,b=a.B;b&&(this.pz=function(b){a.yT(b)},this.lz=function(b){a.XS(b)},this.Ku=function(b){a.WS(b)},b.addEventListener("mousemove",this.pz),b.addEventListener("onhotspotover",this.lz),b.addEventListener("onhotspotout", this.Ku),b.addEventListener("onzoomstart",this.Ku))},fU:function(){var a=this.B;a&&(a.removeEventListener("mousemove",this.pz),a.removeEventListener("onhotspotover",this.lz),a.removeEventListener("onhotspotout",this.Ku))},yT:function(a){var b=this,c=b.B,e=c.oa();if(c.fa()<this.gc||c.Sb())b.xB();else if(a=e.wm().kh(a.point),e=e.$c(),a=new Q(Math.floor(a.x*Math.pow(2,c.fa()-18)),Math.floor(a.y*Math.pow(2,c.fa()-18))),e=new Q(Math.floor(a.x/e),Math.floor(a.y/e)),this.jq=c=e.x+"_"+e.y+"_"+c.fa(),this.cl[c]){if(this.Pu!= c){b.xB();b.TG(this.cl[c]);this.Pu=c;for(var e=-1,a=0,f=this.Bj.length;a<f;a++)if(c==this.Bj[a]){e=a;break}0<=e&&(this.Bj.splice(e,e),this.Bj.push(c))}}else if(this.MG!=c){this.MG=c;e=Wc[parseInt(Math.random()*Wc.length)];a=b.ub;c=e+"/data?grids="+c+"&q="+a.Wm+"&tags="+a.pu+"&filter="+a.filter+"&sortby="+a.Vy+"&ak="+a.Vl+"&page_size="+a.ON+"&age="+a.Gw;b.Cf?c+="&geotable_id="+b.Cf:b.Rn&&(c+="&databox_id="+b.Rn);var g=(1E5*Math.random()).toFixed(0);!B._rd&&(B._rd={});B._rd["_cbk"+g]=function(a){b.PS(a); delete B._rd["_cbk"+g]};oa(c+("&callback=BMap._rd._cbk"+g))}},PS:function(a){var b=this.B,c=a.content;if(!(a.status!=this.LG||!c||1>c.length)){for(var a=[],e=c[0].data,b=b.oa().wm(),f=0,g=e.length;f<g;f++){var i=e[f][2].replace(nb.tU,"").split(","),i=b.nh(new J(i[0],i[1]));a.push({pt:i,userdata:{name:e[f][0]||"name",size:e[f][4]?e[f][4].split("|"):[10,13],uid:e[f][1]||"",BO:e[f][3]||"sid1"}})}c=c[0].grid.join("_");this.cl[c]=a;this.Bj.push(c);30<this.Bj.length&&(c=this.Bj.shift(),delete this.cl[c], delete c);this.Pu!=this.jq&&(this.xB(),this.cl[this.jq]&&(this.TG(this.cl[this.jq]),this.Pu=this.jq))}},TG:function(a){for(var b=this.B,c=0,e=a.length;c<e;c++){var f=a[c].userdata.size,g=f[0]/2,f=f[1]/2,g=new ib(a[c].pt,{offsets:[f,g,f,g],userData:a[c].userdata});b.Cw(g,this.ub.Fk)}},xB:function(){this.B.dm(this.ub.Fk)},XS:function(a){if(a.spots&&!(1>a.spots.length||a.spots[0].tag!=this.ub.Fk)){this.Hg=a.spots;var b=this,a=this.Hg[0].getUserData().size[0],c="",e=b.B,f="",g=b.ub.eZ;0<this.Hg.length&& (c=this.Hg[0].getUserData().name);if(this.Jg)this.Jg.sa(this.Hg[0].ga()),this.Ig.dd(c),this.Ig.Ze(new O(a,0)),this.Jg.show(),c?this.Ig.show():this.Ig.U();else{var i=this.Hg[0].getUserData().size,f=this.Hg[0].getUserData().BO,k=this.Cf||this.Rn;this.dl=new qc(G.qa+"blank.gif",new O(i[0],i[1]),{anchor:new O(i[0]/2+1,i[1]/2+1)});this.GS(k,f,function(){b.Jg&&b.Jg.Rb(b.dl)});this.Jg=new U(this.Hg[0].ga(),{icon:this.dl,enableMassClear:t});e.Ga(this.Jg);this.Ig=new uc(c,{offset:new O(a,0)});this.Ig.Md({backgroundColor:g.backgroundColor, borderColor:g.borderColor});this.Jg.dn(this.Ig);c?this.Ig.show():this.Ig.U();this.Jg.addEventListener("onclick",function(){if(!(b.Hg.length<1)&&b.Hg[0].getUserData().uid){var a=b.ub,c=a.BY;if(b.Cf)c=a.CY;a=c+b.Hg[0].getUserData().uid+"?scope=2&ak="+a.Vl;b.Cf&&(a=a+("&geotable_id="+b.Cf));var e=(Math.random()*1E5).toFixed(0);!B._rd&&(B._rd={});B._rd["_cbk"+e]=function(a){b.FS(a);delete B._rd["_cbk"+e]};oa(a+("&callback=BMap._rd._cbk"+e))}})}}},FS:function(a){var b=a.content;this.Cf&&(b=a.contents[0]); if(a&&a.status==this.LG&&b){var a={poiId:b.uid||"",databoxId:b.databox_id||"",title:this.Cf?b.title:b.name,address:this.Cf?b.address:b.addr,phoneNumber:b.tel||"",postcode:b.zip||"",provinceCode:1*b.province_id||-1,province:b.province||"",cityCode:1*b.city_id||-1,city:b.city||"",districtCode:1*b.district_id||-1,district:b.district||"",point:this.Cf?new J(b.location[0],b.location[1]):new J(b.longitude,b.latitude),tags:b.tag&&b.tag.replace(nb.wU,"").split(nb.uU),typeId:1*b.cla||-1,extendedData:b.ext|| {}},c=new z.lang.Ju("onhotspotclick");c.customPoi=a;c.content=b;this.dispatchEvent(c)}},WS:function(){this.Jg&&this.Jg.U();this.Ig&&this.Ig.U()},GS:function(a,b,c){var e=this,f=Xc+"?method=getstyle&databox="+a+"&sid="+b,g=(1E5*Math.random()).toFixed(0);if(!e.dl||!(e.dl.databoxid==a&&e.dl.sid==b))!B._rd&&(B._rd={}),B._rd["_cbk"+g]=function(a){var b="";0==a.status&&(b="data:image/png;base64,"+a.content.sid1);0<b.length&&(e.dl.mO(b),c&&c(a));delete B._rd["_cbk"+g]},oa(f+("&callback=BMap._rd._cbk"+g))}}); '); | ||||||
							
								
								
									
										1
									
								
								Code/frontend/public/static/modules/common_wkrfcz.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1 @@ | |||||||
|  | _jsload2&&_jsload2('common', 'z.cookie=z.cookie||{};z.cookie.oI=function(a){return RegExp(\'^[^\\\\x00-\\\\x20\\\\x7f\\\\(\\\\)<>@,;:\\\\\\\\\\\\"\\\\[\\\\]\\\\?=\\\\{\\\\}\\\\/\\\\u0080-\\\\uffff]+$\').test(a)};z.cookie.cY=function(a){return z.cookie.oI(a)&&(a=RegExp("(^| )"+a+"=([^;]*)(;|$)").exec(document.cookie))?a[2]||s:s};z.cookie.get=function(a){a=z.cookie.cY(a);return"string"==typeof a?a=decodeURIComponent(a):s}; z.cookie.vO=function(a,b,c){if(z.cookie.oI(a)){var c=c||{},e=c.qx;"number"==typeof c.qx&&(e=new Date,e.setTime(e.getTime()+c.qx));document.cookie=a+"="+b+(c.path?"; path="+c.path:"")+(e?"; expires="+e.toGMTString():"")+(c.domain?"; domain="+c.domain:"")+(c.i5?"; secure":"")}};z.cookie.set=function(a,b,c){z.cookie.vO(a,encodeURIComponent(b),c)};z.cookie.remove=function(a,b){b=b||{};b.qx=new Date(0);z.cookie.vO(a,"",b)};z.xt=function(a){return/\\d{11}/.test(a)};z.TY=function(a){return/\\d{4}/.test(a)}; z.is=function(){function a(a){a=a.replace(/^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i,function(a,b,c,e){return b+b+c+c+e+e});return(a=/^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(a))?"rgb("+parseInt(a[1],16)+","+parseInt(a[2],16)+","+parseInt(a[3],16)+")":s}var b={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887", cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3", deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4","indianred ":"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6", lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee", mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6", purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"}, c={hex:/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,rgb:/rgb\\(\\s*(\\d|\\d\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\s*,\\s*(\\d|\\d\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\s*,\\s*(\\d|\\d\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\s*\\)/,rgba:/rgba\\(\\s*(\\d|\\d\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\s*,\\s*(\\d|\\d\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\s*,\\s*(\\d|\\d\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\s*,\\s*(0|1|0\\.[1-9])\\s*\\)/};return{cK:function(a){if(c.hex.test(a))return a;if(c.rgb.test(a))return a=a.match(c.rgb),"#"+("0"+parseInt(a[1],10).toString(16)).slice(-2)+("0"+parseInt(a[2],10).toString(16)).slice(-2)+ ("0"+parseInt(a[3],10).toString(16)).slice(-2);if(b[a])return b[a]},S3:a,x2:function(a){return c.hex.test(a)?a:b[a]?b[a]:"#000"},AC:function(e,f){f===l&&(f=1);if(c.rgba.test(e))return e;"undefined"!=typeof b[e.toLowerCase()]&&(e=b[e.toLowerCase()]);c.hex.test(e)&&(e=a(e));c.rgb.test(e)?(e=e.replace(/rgb/g,"rgba"),e=e.replace(/\\)/,","+f+")")):e="rgba(0,0,0,1)";return e}}}(); '); | ||||||
							
								
								
									
										1
									
								
								Code/frontend/public/static/modules/control_hlzh1t.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										1
									
								
								Code/frontend/public/static/modules/convertor_d0ze2w.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1 @@ | |||||||
|  | _jsload2&&_jsload2('convertor', 'z.extend(lc.prototype,{qQ:function(){for(var a=0,b=this.Pa.length;a<b;a++){var c=this.Pa[a];this[c.method].apply(this,c.arguments)}delete this.Pa},translate:function(a,b,c,e){b=b||1;c=c||5;if(10<a.length)e&&e({status:25});else{var f=B.Wc+"geoconv/v1/?coords=";z.Fb(a,function(a){f+=a.lng+","+a.lat+";"});f=f.replace(/;$/gi,"");f=f+"&from="+b+"&to="+c+"&ak="+qa;oa(f,function(a){if(0===a.status){var b=[];z.Fb(a.result,function(a){b.push(new B.Point(a.x,a.y))});delete a.result;a.points=b}e&&e(a)})}}}); '); | ||||||
							
								
								
									
										1
									
								
								Code/frontend/public/static/modules/coordtrans_lmf5kv.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1 @@ | |||||||
|  | _jsload2&&_jsload2('coordtransutils', 'z.extend(eb,{AV:function(a,b,c){var e=S.Eb(a),a=b.fc,e=kc.ZD(b.Ub||"bj",e),e=new J(e.x,e.y),f=b.fa(),f=b.oa().dc(f),b=b.cb(),b=new Q(Math.round((e.lng-a.lng)/f+b.width/2),Math.round((a.lat-e.lat)/f+b.height/2));c&&c(b)},zV:function(a,b,c){var e=b.fa(),e=b.oa().dc(e),f=b.cb(),g=b.fc,b=b.Ub,a=new J(g.lng+e*(a.x-f.width/2),g.lat-e*(a.y-f.height/2)),a=kc.XD(b||"bj",a),a=new J(a.lng,a.lat),a=S.Tb(a);c&&c(a)}}); '); | ||||||
| @ -0,0 +1 @@ | |||||||
|  | _jsload2&&_jsload2('copyrightctrl', 'z.extend($b.prototype,{zf:function(){this.B&&this.He(this.B)},initialize:function(a){Vb.prototype.initialize.call(this,a);this.Aa();this.uo();this.ba(a);return this.C},ba:function(a){var b=this;a.addEventListener("load",function(){b.uo()});a.addEventListener("moveend",function(){b.uo()});a.addEventListener("zoomend",function(){b.uo()});a.addEventListener("maptypechange",function(){b.C&&(b.C.style.color=b.B.oa().zm())})},Aa:function(){Vb.prototype.Aa.call(this);z.D.Ua(this.C,"BMap_cpyCtrl");var a= this.C.style;a.cursor="default";a.whiteSpace="nowrap";a.MozUserSelect="none";a.color=this.B.oa().zm();a.background="none";a.font="11px/15px "+G.fontFamily;Vb.prototype.Nr.call(this)},uo:function(){if(this.B&&this.C&&0!=this.cc.length)for(var a=0,b=this.cc.length;a<b;a++){this.B.fa();var c=this.B.xb({x:0,y:0}),e=this.B.xb({x:this.B.width,y:this.B.height}),c=new fb(c,e);if(this.cc[a].bounds&&c.ot(this.cc[a].bounds)==s){if(this.C)for(e=0;e<this.C.children.length;e++)if(this.C.children[e].getAttribute("_cid")== this.cc[a].id&&"none"!=this.C.children[e].style.display){this.C.children[e].style.display="none";return}}else if(this.C){for(var c=t,e=0,f=this.C.children.length;e<f;e++)if(this.C.children[e].getAttribute("_cid")==this.cc[a].id){c=q;this.C.children[e].style.display="inline";this.C.children[e].innerHTML!=this.cc[a].content&&(this.C.children[e].innerHTML=this.cc[a].content);break}c||this.Uq(this.cc[a])}}},Bw:function(a){if(a&&Wa(a.id)&&!isNaN(a.id)){var b={bounds:s,content:""},c;for(c in a)b[c]=a[c]; if(a=this.pm(a.id))for(var e in b)a[e]=b[e];else this.cc.push(b);this.uo()}},pm:function(a){for(var b=0,c=this.cc.length;b<c;b++)if(this.cc[b].id==a)return this.cc[b]},PD:w("cc"),qF:function(a){for(var b,c=0,e=this.cc.length;c<e;c++)this.cc[c].id==a&&(b=this.cc.splice(c,1),c--,e=this.cc.length);(a=this.Jd(a))&&a.parentNode&&a.parentNode.removeChild(a);this.uo();return b},Uq:function(a){this.C&&(this.C.innerHTML+="<span _cid=\'"+a.id+"\'>"+a.content+"</span>")},Jd:function(a){var b=Vb.prototype.Jd.call(this); if(Hb(a)){if(b)for(var c=0,e=b.children.length;c<e;c++)if(b.children[c].getAttribute("_cid")==a)return b.children[c]}else return b}});T(wf,{addCopyright:wf.Bw,removeCopyright:wf.qF,getCopyright:wf.pm,getCopyrightCollection:wf.PD}); '); | ||||||
							
								
								
									
										1
									
								
								Code/frontend/public/static/modules/draw_jb4osz.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1 @@ | |||||||
|  | _jsload2&&_jsload2('draw', 'function Ag(){}var Bg=Ag.prototype;Bg.IF=u();Bg.Ao=function(){aa("addLine\\u63a5\\u53e3\\u6ca1\\u6709\\u5b9e\\u73b0")};Bg.setAttribute=function(){aa("setAttribute\\u63a5\\u53e3\\u6ca1\\u6709\\u5b9e\\u73b0")};Bg.ke=function(){aa("setPath\\u63a5\\u53e3\\u6ca1\\u6709\\u5b9e\\u73b0")};Bg.ip=w("Mb");B.jz=Ag; '); | ||||||
| @ -0,0 +1 @@ | |||||||
|  | _jsload2&&_jsload2('drawbycanvas', 'function Gg(a){this.B=a;this.NQ={strokeweight:"lineWidth",strokecolor:"strokeStyle",fillcolor:"fillStyle",strokeopacity:"globalAlpha",fillopacity:"globalAlpha"};this.Mb="canvas"}Gg.prototype=new B.jz;var Hg=Gg.prototype;Hg.Ao=function(){if(!this.canvas||this.canvas&&!zb(this.canvas)){var a=this.canvas=L("canvas");this.B.Tf().Et.appendChild(a);a.style.position="absolute";a=a.getContext("2d");a.lineCap="round";a.lineJoin="round";a.save();this.zU(this.canvas)}return this.canvas}; Hg.ke=function(a,b,c){if(a&&0!==b[0].length){var e=a.getContext("2d");this.sa(a);var f=parseInt(a.style.top),g=parseInt(a.style.left);e.beginPath();z.mc.Fb(b,function(a){if(0!==a.length){e.moveTo(a[0].x-g,a[0].y-f);for(var b=1,c=a.length;b<c;b++)e.lineTo(a[b].x-g,a[b].y-f)}});this.FR(a,c);"dashed"===c.strokeStyle&&this.HR(e,b,g,f,c)}}; Hg.HR=function(a,b,c,e,f){var g=this;a.beginPath();z.mc.Fb(b,function(b){if(0!==b.length){for(var k=[],m=0,n=b.length;m<n;m++)k.push({x:b[m].x-c,y:b[m].y-e});a.strokeStyle=f.strokeColor||"#3a6bdb";g.GR(a,k,{lineWidth:f.rc||5,interval:2*f.rc||10,lineLength:2*f.rc||10,strokeStyle:g.JS(a.strokeStyle,f.td)})}})}; Hg.GR=function(a,b,c){for(var c=c||{},e=c.Wx||10,f=c.lineWidth||5,g=c.m4||10,c=c.strokeStyle||"#3a6bdb",i=b.length-1,k=0,m=g+e,n=0,o=0;o<i;o++)var p=b[o].x,v=b[o].y,x=b[o+1].x,y=b[o+1].y,n=n+Math.sqrt((x-p)*(x-p)+(y-v)*(y-v));if(n<g)a.strokeStyle=c,a.lineWidth=f,a.lineJoin="round",a.lineCap="round",a.beginPath(),a.moveTo(b[0].x,b[0].y),a.lineTo(b[i].x,b[i].y),a.stroke();else for(n=0;n<i;n++){var p=b[n].x,v=b[n].y,x=b[n+1].x,y=b[n+1].y,o=Math.sqrt((x-p)*(x-p)+(y-v)*(y-v))+k+g,A=m-Math.abs(k);if(k<= m){var E=parseInt(o/m),C=e*(x-p)/o,F=e*(y-v)/o;xMove=g*(x-p)/o;yMove=g*(y-v)/o;startX=p+A*(x-p)/o;startY=v+A*(y-v)/o;tailX=p+(g-Math.abs(k))*(x-p)/o;tailY=v+(g-Math.abs(k))*(y-v)/o;a.beginPath();a.strokeStyle=c;a.lineJoin="round";a.lineCap="round";a.lineWidth=f;D?a.moveTo(D,I):a.moveTo(p,v);0>=k&&a.lineTo(p,v);a.lineTo(tailX,tailY);a.moveTo(startX,startY);D=0;for(I=2*E;D<I;D++)if(D%2)startX+=C,startY+=F,a.moveTo(startX,startY);else{startX+=xMove;startY+=yMove;if(0>(x-startX)*xMove)break;a.lineTo(startX, startY)}a.stroke()}var k=parseInt(o-m*E)-g,D=x-Math.abs(k)*(x-p)/o,I=y-Math.abs(k)*(y-v)/o;n===i-1&&0<k&&(a.beginPath(),a.strokeStyle=c,p=x-k*(x-p)/o,leftY=y-k*(y-v)/o,k<=g?(a.moveTo(p,leftY),a.lineTo(x,y)):(a.moveTo(p,leftY),a.moveTo(p+xMove,leftY+yMove)),a.stroke())}}; Hg.JS=function(a,b){if(4===a.length)var c=parseInt(a.substr(1,1)+a.substr(1,1),16),e=parseInt(a.substr(2,1)+a.substr(2,1),16),f=parseInt(a.substr(3,1)+a.substr(3,1),16);else c=parseInt(a.substr(1,2),16),e=parseInt(a.substr(3,2),16),f=parseInt(a.substr(5,2),16);return c="rgba("+c+","+e+","+f+","+b+")"};Hg.setAttribute=function(a,b,c){if(a){var e=a.getContext("2d"),f=this.Wq(b);try{e[f]=c}catch(g){}a.setAttribute("_"+b,c||"");e.save()}};Hg.Wq=function(a){return this.NQ[a]||a}; Hg.zU=function(a){var b=this.B,c=b.K.lx,e=b.width+2*c,f=b.height+2*c,g=-b.offsetX-c,b=-b.offsetY-c,c=a.getContext("2d"),i={strokeStyle:c.strokeStyle,fillStyle:c.fillStyle,globalAlpha:c.globalAlpha,lineWidth:c.lineWidth,lineCap:"round",lineJoin:"round"};a.setAttribute("width",e);a.setAttribute("height",f);for(var k in i)c[k]=i[k];c.save();a=a.style;a.top=b+"px";a.left=g+"px"};Hg.XQ=function(a){a.clearRect(0,0,9999,9999)}; Hg.FR=function(a,b){var c=a.getContext("2d");c.globalAlpha=a.getAttribute("_fillopacity");0!==c.globalAlpha&&a.getAttribute("_fillcolor")&&c.fill();c.globalAlpha=a.getAttribute("_strokeopacity");0!==c.globalAlpha&&(a.getAttribute("_strokecolor")&&"dashed"!==b.strokeStyle)&&c.stroke()};Hg.sa=function(a){var b=this.B,c=b.K.lx,e=-b.offsetX-c,a=a.style;a.top=-b.offsetY-c+"px";a.left=e+"px"};B.zP=Gg; '); | ||||||
							
								
								
									
										1
									
								
								Code/frontend/public/static/modules/drawbysvg_vxyn51.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1 @@ | |||||||
|  | _jsload2&&_jsload2('drawbysvg', 'function Cg(a){this.B=a;this.NG="http://www.w3.org/2000/svg";this.TU={strokeweight:"stroke-width",strokecolor:"stroke",fillcolor:"fill",strokeopacity:"stroke-opacity",fillopacity:"fill-opacity",strokestyle:"stroke-dasharray"};this.hf=this.Zz();this.Mb="svg"}Cg.prototype=new B.jz;var Dg=Cg.prototype; Dg.Zz=function(){var a=this.hf=L("svg",{},this.NG);a.setAttribute("version","1.1");a.setAttribute("type","system");a.style.position="absolute";this.IF();this.B.Tf().Et.appendChild(a);z.M(a,H()?"touchstart":"mousedown",Cb);return a}; Dg.IF=function(){if(this.hf){var a=this.hf,b=this.B,c=b.K.lx,e=b.width+2*c,f=b.height+2*c,g=-b.offsetX-c,b=-b.offsetY-c;this.setAttribute(a,"x",e+"px");this.setAttribute(a,"y",f+"px");this.setAttribute(a,"viewBox",g+" "+b+" "+e+" "+f);a=a.style;a.top=b+"px";a.left=g+"px";a.width=e+"px";a.height=f+"px"}};Dg.H3=w("hf");Dg.setAttribute=function(a,b,c,e){if(a)return"strokestyle"==b&&(c="solid"==c?0:2*e),a.setAttributeNS(s,this.Wq(b),c||"none"),a};Dg.Wq=function(a){return this.TU[a]||a}; Dg.Ao=function(){var a=L("path",{},this.NG);this.setAttribute(a,"stroke-linejoin","round");this.setAttribute(a,"stroke-linecap","round");this.setAttribute(a,"fill-rule","evenodd");this.hf.appendChild(a);return a};Dg.ke=function(a,b){var c=this.tA(b)||"M -9999,-9999";this.setAttribute(a,"d",c)};Dg.tA=function(a){if(0==a.length)return"";var b=[];z.mc.Fb(a,function(a){if(!(2>a.length)){b.push("M "+a[0].x+" "+a[0].y+" L");for(var e=1,f=a.length;e<f;e++)b.push(a[e].x),b.push(a[e].y)}});return b.join(" ")}; B.ZP=Cg; '); | ||||||
							
								
								
									
										1
									
								
								Code/frontend/public/static/modules/drawbyvml_whxmqq.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1 @@ | |||||||
|  | _jsload2&&_jsload2('drawbyvml', 'function Eg(a){this.B=a;this.dV={strokeweight:"weight",strokecolor:"color",fillcolor:"color",strokeopacity:"opacity",fillopacity:"opacity",strokestyle:"dashstyle"};this.Mb="vml"}Eg.zK={orange:"#ffa500"};Eg.prototype=new B.jz;var Fg=Eg.prototype; Fg.setAttribute=function(a,b,c){a&&(0==b.indexOf("stroke")?a=a.getElementsByTagName("stroke")[0]:0==b.indexOf("fill")&&(a=a.getElementsByTagName("fill")[0]),0<b.indexOf("color")&&(c?(a.on=q,Eg.zK[c]&&(c=Eg.zK[c])):a.on=t),"strokestyle"==b&&(c="solid"==c?"solid":"4 2 1 2"),"strokeweight"==b&&(c+="px"),a[this.Wq(b)]=c||"")};Fg.Wq=function(a){return this.dV[a]||a};Fg.Ao=function(){return Ab(this.B.Tf().Et,\'<v:shape style="behavior:url(#default#VML);z-index:1;width:1px;height:1px;position:absolute;left:0;top:0;"coordsize="1,1" coordorigin="0,0" filled="t" fillcolor="white"><v:stroke style="behavior:url(#default#VML);" endcap="round" oned="true" /><v:fill style="behavior:url(#default#VML)" /></v:shape>\')}; Fg.ke=function(a,b){this.setAttribute(a,"path",this.tA(b));6==z.ca.ia&&(a.style.display="none",a.style.display="")};Fg.tA=function(a){if(0==a.length)return"";var b=[];z.mc.Fb(a,function(a){if(!(2>a.length)){b.push("m "+a[0].x+" "+a[0].y+" l");for(var e=1,f=a.length;e<f;e++)b.push(a[e].x),b.push(a[e].y);b.push("e")}});return b.join(" ")||" "};B.bQ=Eg; '); | ||||||
							
								
								
									
										1
									
								
								Code/frontend/public/static/modules/geoctrl_xprajs.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1 @@ | |||||||
|  | _jsload2&&_jsload2('geoctrl', 'z.extend(Zb.prototype,{initialize:function(a){var b=this;Vb.prototype.initialize.call(b,a);b.Aa();b.pr={"default":B.ka+"images/geolocation-control/mobile/default-40x40.png",loading:B.ka+"images/geolocation-control/mobile/loading-40x40.gif",success:B.ka+"images/geolocation-control/mobile/success-40x40.png",fail:B.ka+"images/geolocation-control/mobile/fail-40x40.png"};b.ij=b.C.children[0];b.FD=b.ij.children[0];b.Xo=b.FD.children[0];b.DD=b.ij.children[1];b.vL=b.DD.children[0].children[0];var c;b.B.addEventListener("moveend", function(){if(c){var a=b.B.Ka();a.lng===c.lng&&a.lat===c.lat?b.Lr(b.pr.success):(b.Lr(b.pr["default"]),b.VQ())}});z.M(b.Xo,"click",function(){b.Lr(b.pr.loading);(new Geolocation({timeout:1E4})).getCurrentPosition(function(e){b.Lr(b.pr.success);if(e.address&&b.j.O_){var f="";e.address.city?f+=e.address.city:e.address.province&&(f+=e.address.province);e.address.district&&(f+=e.address.district);e.address.street&&(f+=e.address.street);e.address.street_number&&(f+=e.address.street_number);b.xU(f)}var f= new J(e.longitude,e.latitude),g=new U(f,{icon:b.j.bN?b.j.bN:new qc(B.ka+"images/geolocation-control/point/position-icon-14x14.png",new O(14,14))});c=f;b.GD=f;a.Ga(g);a.Fd(f,15);e.address&&(b.ds={province:e.address.province||"",city:e.address.city||"",district:e.address.district||"",street:e.address.street||"",streetNumber:e.address.street_number||""},Ra(7001,{longitude:e.longitude,latitude:e.latitude,accuracy:e.accuracy}));e=new P("locationSuccess");e.point=b.GD;e.addressComponent=b.ds;b.dispatchEvent(e)}, function(a){b.Lr(b.pr.fail);var c=new P("locationError");c.code=a.errorCode;c.message=a.uk;b.dispatchEvent(c)})});return b.C},location:function(){var a=this;a.I0.push({});(new Geolocation({timeout:1E4})).getCurrentPosition(function(b){a.GD=new J(b.longitude,b.latitude);b.address&&(a.ds={province:b.address.province||"",city:b.address.city||"",district:b.address.district||"",street:b.address.street||"",streetNumber:b.address.street_number||""});b=new P("locationSuccess");b.point=a.GD;b.addressComponent= a.ds;a.dispatchEvent(b)},function(b){var c=new P("locationError");c.code=b.errorCode;c.message=b.uk;a.dispatchEvent(c)})},xX:function(){return this.ds?this.ds:s},sQ:function(){this.B?this.He(this.B):this.map&&this.He(this.map)},Aa:function(){Vb.prototype.Aa.call(this);this.C.style.cssText="height: 32px;";this.C.innerHTML=this.Vq()},Vq:function(){return[\'<div class="BMap_geolocationContainer" style="height: 32px; margin: 0px; box-sizing: border-box; border: 1px solid #d9d7d5; border-radius: 3px; -webkit-box-shadow: 1px 1px 1px rgba(0,0,0,.2); overflow: hidden;">\', \'<div class="BMap_geolocationIconBackground" style="float: left; width: 32px; height: 32px; background-image: url(\\\'\'+B.ka+"images/geolocation-control/mobile/gradient-bg-1x64.png\'); background-size: 1px 32px; background-repeat: repeat-x;\\">",\'<div class="BMap_geolocationIcon" style="width: 32px; height: 32px; cursor: pointer; background-image: url(\\\'\'+B.ka+"images/geolocation-control/mobile/default-40x40.png\'); background-size: 20px 20px; background-repeat: no-repeat; background-position: center center;\\"></div>", "</div>",\'<div class="BMap_geolocationAddress" style="display: none; float: left; min-width: 50px; padding-left: 10px; padding-right: 10px; border-left: 1px solid #d9d7d5; background-image: url(\'+B.ka+\'images/geolocation-control/mobile/gradient-bg-1x64.png); background-size: 1px 32px; background-repeat: repeat-x;">\',\'<div style="height: 32px; display: table-cell; vertical-align: middle;"><div class="BMap_geolocationAddressText" style="font-size: 12px; color: #666666; text-overflow: ellipsis; white-space: nowrap; overflow: hidden; display: block; min-width: 50px; max-width: 200px;"></div></div></div></div>\'].join("")}, Lr:function(a){this.Xo.style.backgroundImage="url(\'"+a+"\')"},xU:function(a){this.DD.style.display="block";this.vL.textContent=a},VQ:function(){this.vL.textContent="";this.DD.style.display="none"}});Zb.prototype.location=Zb.prototype.location;Zb.prototype.getAddressComponent=Zb.prototype.xX; '); | ||||||
| @ -0,0 +1 @@ | |||||||
|  | _jsload2&&_jsload2('groundoverlay', 'z.extend(vc.prototype,{ib:function(){if(this.map){this.V||this.Ej();var a=this.map.fa();if(a<this.z.Bs||a>this.z.As)this.U();else{var b=this.z.bb.Ve(),c=this.z.bb.Rf(),a=this.map.Xe(b).x,e=this.map.Xe(c).y,c=this.map.Xe(c).x,b=this.map.Xe(b).y;this.V.style.left=a+"px";this.V.style.top=e+"px";this.V.style.width=c-a+"px";this.V.style.height=b-e+"px";this.show()}}},draw:function(){this.ib()},Ej:function(){if(!this.V){this.V=document.createElement("div");var a=this.V.style;a.cssText="position: absolute; -moz-user-select: none; overflow: hidden;"; a.zIndex=mc.Ck(this.z.bb.Ve().lat);this.z.opacity&&(a.opacity=this.z.opacity,a.filter="alpha(opacity="+100*parseInt(this.z.opacity,10)+")");this.Og=document.createElement("img");this.Og.style.width="100%";this.z.X_&&(this.Og.style.height="100%");this.V.appendChild(this.Og);var b=this;this.Og.onload=function(){b.P1=b.Og.naturalWidth||b.Og.width;b.O1=b.Og.naturalHeight||b.Og.height};this.z.Gm&&(this.Og.src=this.z.Gm);this.map.Tf().KE.appendChild(this.V);b=this;z.M(this.V,"click",function(a){b.dispatchEvent(new P("click"), a)});z.M(this.V,"dblclick",function(a){b.dispatchEvent(new P("dblclick"),a)})}},s_:function(a){this.z.bb=a;this.map&&this.ib();this.V.style.zIndex=mc.Ck(this.z.bb.Ve().lat)},ve:function(){return this.z.bb},HF:function(a){this.z.opacity=a;this.V.style.opacity=a;this.V.style.filter="alpha(opacity="+100*parseInt(a,10)+")"},XX:function(){return this.z.opacity},x_:function(a){this.z.Gm=a;this.Og&&(this.Og.src=a)},KX:function(){return this.z.Gm},p5:function(a){this.z.Bs=a},r3:function(){return this.z.Bs}, o5:function(a){this.z.As=a},q3:function(){return this.z.As}});vc.prototype.setBounds=vc.prototype.s_;vc.prototype.getBounds=vc.prototype.ve;vc.prototype.setOpacity=vc.prototype.HF;vc.prototype.getOpacity=vc.prototype.XX;vc.prototype.setImageURL=vc.prototype.x_;vc.prototype.getImageURL=vc.prototype.KX;vc.prototype.setDispalyOnMinLevel=vc.prototype.n5;vc.prototype.setDispalyOnMaxLevel=vc.prototype.m5; '); | ||||||
							
								
								
									
										1
									
								
								Code/frontend/public/static/modules/hotspot_vuwxs4.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1 @@ | |||||||
|  | _jsload2&&_jsload2('hotspot', 'B.Ye(function(a){function b(a){var b=this.R;b.Qe=[];if(this.Jh)for(var c in this.Jh)if(!(0==c.indexOf("vector_")&&!this.Sb()||0==c.indexOf("tile_")&&this.Sb())){var i=this.Jh[c],k;for(k in i){var m=i[k];if(!(m.Lh>this.fa()||m.Hf<this.fa())){var n=this.$b(m.ga());n.x<this.width&&n.y<this.height&&a.offsetX<n.x+m.Jv[1]&&(a.offsetX>n.x-m.Jv[3]&&a.offsetY>n.y-m.Jv[0]&&a.offsetY<n.y+m.Jv[2])&&b.Qe.push(m)}}}}function c(){a.R.XK&&0<a.R.Qe.length?(a.platform.style.cursor="pointer",a.R.XK=t):(a.R.Qe=[],a.platform.style.cursor= a.K.Vb)}a.R.ju=new uc("",{za:new O(15,-3),Wp:{border:"1px solid #aaa",background:"#fffec2",whiteSpace:"nowrap",font:"12px "+G.fontFamily,mozBoxShadow:"1px 2px 6px #666",webkitBoxShadow:"1px 2px 6px #666",boxShadow:"1px 2px 6px #666",padding:"2px 4px"}});a.addEventListener("mousemove",function(c){if(!(c.fb&&!(c.fb instanceof oc)||c.zb)){var f=this.R,g=f.Qe.slice(0);b.call(this,c);for(var i=f.Qe.slice(0),k=0;k<g.length;k++)for(var m=0;m<i.length;m++)g[k]===i[m]&&(g.splice(k,1),k--,i.splice(m,1),m--); if(0<g.length){var n=new P("onhotspotout");n.spots=g.slice(0);this.dispatchEvent(n)}if(0==f.Qe.length&&!f.$x)this.platform.style.cursor!=this.K.Vb&&(this.platform.style.cursor=this.K.Vb),f.Up&&(clearTimeout(f.Up),f.Up=s),f.QF=setTimeout(function(){f.ju.U()},400);else if(0<i.length&&(this.platform.style.cursor="pointer",n=new P("onhotspotover"),n.spots=i.slice(0),this.dispatchEvent(n),f.Up&&(clearTimeout(f.Up),f.Up=s),f.QF&&(clearTimeout(f.QF),f.QF=s),n.spots[0].eE()))f.Up=setTimeout(function(){f.ju.dd(n.spots[0].eE()); f.ju.sa(c.point);f.ju.show();a.Ga(f.ju)},400)}});a.addEventListener("clickex",function(a){var c=this.R;a.overlay||(0==c.Qe.length&&b.call(this,a),0<c.Qe.length&&(a=new P("onhotspotclick"),a.spots=c.Qe.slice(0),a.spots.sort(function(a,b){return a.ga().lat-b.ga().lat}),this.dispatchEvent(a),c.Qe.length=0))});a.addEventListener("load",c);a.addEventListener("moveend",c);a.addEventListener("zoomend",c);a.addEventListener("dragend",function(){this.R.XK=q})}); '); | ||||||
							
								
								
									
										1
									
								
								Code/frontend/public/static/modules/infowindow_wtflsn.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										1
									
								
								Code/frontend/public/static/modules/local_k0pcpi.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										1
									
								
								Code/frontend/public/static/modules/map_dbwcej.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										1
									
								
								Code/frontend/public/static/modules/mapclick_e40viw.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										1
									
								
								Code/frontend/public/static/modules/marker_00uyqy.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1 @@ | |||||||
|  | _jsload2&&_jsload2('markeranimation', 'Ic[1]={options:{duration:400},Cm:[{Zb:0,translate:[0,-500],jc:"ease-in"},{Zb:0.5,translate:[0,0],jc:"ease-out"},{Zb:0.75,translate:[0,-20],jc:"ease-in"},{Zb:1,translate:[0,0],jc:"ease-out"}],du:[{Zb:0,translate:[375,-375],jc:"ease-in"},{Zb:0.5,translate:[0,0],jc:"ease-out"},{Zb:0.75,translate:[15,-15],jc:"ease-in"},{Zb:1,translate:[0,0],jc:"ease-out"}]}; Ic[2]={options:{duration:700,loop:vb},Cm:[{Zb:0,translate:[0,0],jc:"ease-out"},{Zb:0.5,translate:[0,-20],jc:"ease-in"},{Zb:1,translate:[0,0],jc:"ease-out"}],du:[{Zb:0,translate:[0,0],jc:"ease-out"},{Zb:0.5,translate:[15,-15],jc:"ease-in"},{Zb:1,translate:[0,0],jc:"ease-out"}]};Ic[3]={options:{duration:200,fP:q},Cm:[{Zb:0,translate:[0,0],jc:"ease-in"},{Zb:1,translate:[0,-20],jc:"ease-out"}],du:[{Zb:0,translate:[0,0],jc:"ease-in"},{Zb:1,translate:[15,-15],jc:"ease-out"}]}; Ic[4]={options:{duration:500,fP:q},Cm:[{Zb:0,translate:[0,-20],jc:"ease-in"},{Zb:0.5,translate:[0,0],jc:"ease-out"},{Zb:0.75,translate:[0,-10],jc:"ease-in"},{Zb:1,translate:[0,-0.0],jc:"ease-out"}],du:[{Zb:0,translate:[15,-15],jc:"ease-in"},{Zb:0.5,translate:[0,0],jc:"ease-out"},{Zb:0.75,translate:[8,-8],jc:"ease-in"},{Zb:1,translate:[0,0],jc:"ease-out"}]}; '); | ||||||
							
								
								
									
										1
									
								
								Code/frontend/public/static/modules/menu_152mop.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										1
									
								
								Code/frontend/public/static/modules/navictrl_h32mnb.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										1
									
								
								Code/frontend/public/static/modules/opmb_2c1ejz.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										1
									
								
								Code/frontend/public/static/modules/oppc_10riq5.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										1
									
								
								Code/frontend/public/static/modules/panorama_jbqj24.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										1
									
								
								Code/frontend/public/static/modules/pcommon_yqek4k.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										1
									
								
								Code/frontend/public/static/modules/poly_r52vuo.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										1
									
								
								Code/frontend/public/static/modules/pservice_j5tlrp.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										1
									
								
								Code/frontend/public/static/modules/route_v4yyam.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										1
									
								
								Code/frontend/public/static/modules/scommon_oadc3d.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										1
									
								
								Code/frontend/public/static/modules/style_fkofpc.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										1
									
								
								Code/frontend/public/static/modules/symbol_cq3a5n.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										1
									
								
								Code/frontend/public/static/modules/tile_ok3b3m.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										1
									
								
								Code/frontend/public/static/modules/vector_2hrruc.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										1
									
								
								Code/frontend/public/static/modules/vmlcontext_phwtog.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1 @@ | |||||||
|  | _jsload2&&_jsload2('vmlcontext', 'var hg=10,ig=hg/2; function jg(a){this.li=[[1,0,0],[0,1,0],[0,0,1]];this.cN=[];this.TJ=[];this.qk=[];this.lineWidth=1;this.miterLimit=1*hg;this.canvas=a;var b=L("div");b.style.width=a.clientWidth+"px";b.style.height=a.clientHeight+"px";b.style.position="absolute";a.appendChild(b);this.fL=b;this.TM=this.Iw=this.Hw=1;document.styleSheets.canvas_style||(a=document.createStyleSheet(),a.owningElement.id="canvas_style",a.cssText="canvas{display:inline-block;overflow:hidden;text-align:left;width:300px;height:150px}g_vml_\\\\:shape,g_vml_\\\\:fill,g_vml_\\\\:stroke{behavior:url(#default#VML)}")} function kg(a,b){for(var c=[[1,0,0],[0,1,0],[0,0,1]],e=0;3>e;e++)for(var f=0;3>f;f++){for(var g=0,i=0;3>i;i++)g+=a[e][i]*b[i][f];c[e][f]=g}return c}var lg=jg.prototype;lg.clearRect=function(){this.fL.innerHTML=""};lg.beginPath=function(){this.qk=[]};lg.moveTo=function(a,b){var c=this.fi(a,b);this.qk.push({type:"moveTo",x:c.x,y:c.y});this.rs=c.x;this.ss=c.y};lg.lineTo=function(a,b){var c=this.fi(a,b);this.qk.push({type:"lineTo",x:c.x,y:c.y});this.rs=c.x;this.ss=c.y}; lg.bezierCurveTo=function(a,b,c,e,f,g){mg(this,this.fi(a,b),this.fi(c,e),this.fi(f,g))};function mg(a,b,c,e){a.qk.push({type:"bezierCurveTo",oW:b.x,pW:b.y,qW:c.x,rW:c.y,x:e.x,y:e.y});a.rs=e.x;a.ss=e.y}lg.quadraticCurveTo=function(a,b,c,e){a=this.fi(a,b);c=this.fi(c,e);e={x:this.rs+2/3*(a.x-this.rs),y:this.ss+2/3*(a.y-this.ss)};mg(this,e,{x:e.x+(c.x-this.rs)/3,y:e.y+(c.y-this.ss)/3},c)}; lg.arc=function(a,b,c,e,f,g){var c=c*hg,i=a+Math.cos(e)*c-ig,k=b+Math.sin(e)*c-ig,e=a+Math.cos(f)*c-ig,f=b+Math.sin(f)*c-ig;i==e&&!g&&(i+=0.125);a=this.fi(a,b);i=this.fi(i,k);e=this.fi(e,f);this.qk.push({type:g?"at":"wa",x:a.x,y:a.y,wa:c,X0:i.x,Z0:i.y,W0:e.x,Y0:e.y})};lg.rect=function(a,b,c,e){this.moveTo(a,b);this.lineTo(a+c,b);this.lineTo(a+c,b+e);this.lineTo(a,b+e);this.closePath()}; lg.stroke=function(a){var b=[],c=a?this.fillStyle:this.strokeStyle,e=c.color,c=c.alpha;b.push("<g_vml_:shape",\' filled="\',!!a,\'"\',\' style="position:absolute;width:\',10,"px;height:",10,\'px;"\',\' coordorigin="0 0" coordsize="\',10*hg," ",10*hg,\'"\',\' stroked="\',!a,\'"\',\' path="\');for(var f=s,g=s,i=s,k=s,m=0;m<this.qk.length;m++){var n=this.qk[m];switch(n.type){case "moveTo":b.push(" m ",Math.round(n.x),",",Math.round(n.y));break;case "lineTo":b.push(" l ",Math.round(n.x),",",Math.round(n.y));break;case "close":b.push(" x "); n=s;break;case "bezierCurveTo":b.push(" c ",Math.round(n.oW),",",Math.round(n.pW),",",Math.round(n.qW),",",Math.round(n.rW),",",Math.round(n.x),",",Math.round(n.y));break;case "at":case "wa":b.push(" ",n.type," ",Math.round(n.x-this.Hw*n.wa),",",Math.round(n.y-this.Iw*n.wa)," ",Math.round(n.x+this.Hw*n.wa),",",Math.round(n.y+this.Iw*n.wa)," ",Math.round(n.X0),",",Math.round(n.Z0)," ",Math.round(n.W0),",",Math.round(n.Y0))}if(n){if(f==s||n.x<f)f=n.x;if(i==s||n.x>i)i=n.x;if(g==s||n.y<g)g=n.y;if(k== s||n.y>k)k=n.y}}b.push(\' ">\');a?b.push(\'<g_vml_:fill color="\',e,\'" opacity="\',c,\'" />\'):(a=this.TM*this.lineWidth,1>a&&(c*=a),b.push("<g_vml_:stroke",\' opacity="\',c,\'"\',\' joinstyle="\',this.lineJoin,\'"\',\' miterlimit="\',this.miterLimit,\'"\',\' endcap="\',"square",\'"\',\' weight="\',a,\'px"\',\' color="\',e,\'" />\'));b.push("</g_vml_:shape>");this.fL.insertAdjacentHTML("beforeEnd",b.join(""))};lg.fill=function(){this.stroke(q)};lg.closePath=function(){this.qk.push({type:"close"})}; lg.fi=function(a,b){var c=this.li;return{x:hg*(a*c[0][0]+b*c[1][0]+c[2][0])-ig,y:hg*(a*c[0][1]+b*c[1][1]+c[2][1])-ig}};lg.save=function(){var a={};copyState(this,a);this.TJ.push(a);this.cN.push(this.li);this.li=kg(createMatrixIdentity(),this.li)};lg.restore=function(){copyState(this.TJ.pop(),this);this.li=this.cN.pop()}; function ng(a,b,c){var e;a:{for(e=0;3>e;e++)for(var f=0;2>f;f++)if(!isFinite(b[e][f])||isNaN(b[e][f])){e=t;break a}e=q}e&&(a.li=b,c&&(a.TM=Math.sqrt(Math.abs(b[0][0]*b[1][1]-b[0][1]*b[1][0]))))}lg.translate=function(a,b){ng(this,kg([[1,0,0],[0,1,0],[a,b,1]],this.li),t)};lg.rotate=function(a){var b=Math.cos(a),a=Math.sin(a);ng(this,kg([[b,a,0],[-a,b,0],[0,0,1]],this.li),t)};lg.scale=function(a,b){this.Hw*=a;this.Iw*=b;ng(this,kg([[a,0,0],[0,b,0],[0,0,1]],this.li),q)}; lg.transform=function(a,b,c,e,f,g){ng(this,kg([[a,b,0],[c,e,0],[f,g,1]],this.li),q)};lg.setTransform=function(a,b,c,e,f,g){ng(this,[[a,b,0],[c,e,0],[f,g,1]],q)};B.aQ=jg; '); | ||||||
							
								
								
									
										66
									
								
								Code/frontend/src/App.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,66 @@ | |||||||
|  | <template> | ||||||
|  | 	<div class="container" :class="curTheme"> | ||||||
|  | 		<menubar @showSettingDialog="settingshow = true"></menubar> | ||||||
|  | 	 | ||||||
|  | 		<router-view></router-view> | ||||||
|  | 	 | ||||||
|  | 		<settingdialog v-if="settingshow" @saved="refreshConfig" @hideSetting="hideSetting"></settingdialog> | ||||||
|  | 	</div> | ||||||
|  | </template> | ||||||
|  | <script setup> | ||||||
|  | 	import { | ||||||
|  | 		ref, | ||||||
|  | 		onMounted, | ||||||
|  | 		onBeforeUnmount, | ||||||
|  | 		reactive | ||||||
|  | 	} from 'vue' | ||||||
|  | 	import { | ||||||
|  | 		onBeforeRouteUpdate, | ||||||
|  | 		useRouter, | ||||||
|  | 		useRoute | ||||||
|  | 	} from 'vue-router' | ||||||
|  | 	 | ||||||
|  | 	import "./css/dark_theme.css" | ||||||
|  | 	import "./css/default.css" | ||||||
|  | 	 | ||||||
|  | 	import settingdialog from "./components/setting.vue" | ||||||
|  | 	import menubar from "./components/menubar.vue" | ||||||
|  | 	 | ||||||
|  | 	import config from './js/config.js' | ||||||
|  | 	import utils from './js/utils.js' | ||||||
|  | 	import api from './js/api.js' | ||||||
|  | 	 | ||||||
|  | 	/** | ||||||
|  | 	 * 配置相关信息 | ||||||
|  | 	 */ | ||||||
|  | 	let configs = config.getConfig(); | ||||||
|  | 	let curTheme = "dark"; | ||||||
|  | 	let turntime = 60 * 1000; | ||||||
|  | 	configs.forEach((item, index, arr) => { | ||||||
|  | 		//更新界面主题 | ||||||
|  | 		if (item.key == 'theme') { | ||||||
|  | 			curTheme = item.value | ||||||
|  | 		} | ||||||
|  | 		//更细切换周期 | ||||||
|  | 		if (item.key == 'turntime') { | ||||||
|  | 			turntime = item.value * 1 | ||||||
|  | 		} | ||||||
|  | 	}); | ||||||
|  | 	const settingshow = ref(false); | ||||||
|  | 	const hideSetting = (e) => { | ||||||
|  | 		settingshow.value = false; | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	//刷新配置 | ||||||
|  | 	const refreshConfig = (e) => { | ||||||
|  | 		//简单期间,直接刷新界面 | ||||||
|  | 		window.location.reload(); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	onMounted(() => {}); | ||||||
|  | 	onBeforeUnmount(() => {}); | ||||||
|  | </script> | ||||||
|  | 
 | ||||||
|  | <style> | ||||||
|  | 
 | ||||||
|  | </style> | ||||||
							
								
								
									
										
											BIN
										
									
								
								Code/frontend/src/assets/TargetPerson.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 42 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Code/frontend/src/assets/favicon.ico
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 42 KiB | 
							
								
								
									
										25
									
								
								Code/frontend/src/components/chartpanel.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,25 @@ | |||||||
|  | <template> | ||||||
|  | 	<div class="chart"> | ||||||
|  | 		<div class="chart_title" v-if="title">{{title}}</div> | ||||||
|  | 		<div> | ||||||
|  | 			<slot></slot> | ||||||
|  | 		</div> | ||||||
|  | 	</div> | ||||||
|  | </template> | ||||||
|  | 
 | ||||||
|  | <script setup> | ||||||
|  | 	import { | ||||||
|  | 		ref, | ||||||
|  | 		reactive, | ||||||
|  | 		defineEmits, | ||||||
|  | 		defineProps | ||||||
|  | 	} from 'vue' | ||||||
|  | 
 | ||||||
|  | 	//外部参数 | ||||||
|  | 	const props = defineProps({ | ||||||
|  | 		title: String | ||||||
|  | 	}) | ||||||
|  | </script> | ||||||
|  | 
 | ||||||
|  | <style> | ||||||
|  | </style> | ||||||
							
								
								
									
										174
									
								
								Code/frontend/src/components/menubar.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,174 @@ | |||||||
|  | <template> | ||||||
|  | 	<div class="flex title"> | ||||||
|  | 		<div style="width:35vw; height:65%; margin-top: 0.1%;" class="flex"> | ||||||
|  |             <div> <img src="@/assets/favicon.ico" style="width: 30%; margin-top: 0.2%;"/></div> | ||||||
|  | 			<div class="header">视频行人行为分析平台</div> | ||||||
|  | 			<!-- <div class="time_div"> | ||||||
|  | 				<div class="time"> | ||||||
|  | 					<span style="margin-top: 0.5%;">{{time}}</span> | ||||||
|  | 				</div> | ||||||
|  | 			</div> --> | ||||||
|  | 		</div> | ||||||
|  |          | ||||||
|  | 		<div class="flex_item flex"> | ||||||
|  | 			<div class="menus flex_item flex"> | ||||||
|  | 				<div class="flex_item"></div> | ||||||
|  | 				<div class="menus_div flex"> | ||||||
|  | 					<div class="flex_item" v-for="(item,index) in menus"> | ||||||
|  | 						<div v-if="item.isShow" | ||||||
|  | 							:class="['menu_item',curpage,(curpage==item.sid)?'menu_item_selected':'']" | ||||||
|  | 							@click="turnPage(item.path)"> | ||||||
|  | 							<span>{{item.name}}</span> | ||||||
|  | 						</div> | ||||||
|  | 					</div> | ||||||
|  | 				</div> | ||||||
|  | 			</div> | ||||||
|  | 			<div class="flex" style="width: 10vw;"> | ||||||
|  | 				<div class="time_div flex_item flex"> | ||||||
|  | 
 | ||||||
|  | 					<div class="tools  flex flex_item" style=""> | ||||||
|  | 						<div class="flex_item"> | ||||||
|  | 							<div class="tool_item" @click="screen"> | ||||||
|  | 								<el-icon> | ||||||
|  | 									<full-screen /> | ||||||
|  | 								</el-icon> | ||||||
|  | 								<span>{{screenText}}</span> | ||||||
|  | 							</div> | ||||||
|  | 						</div> | ||||||
|  | 						<div class="flex_item"> | ||||||
|  | 							<div class="tool_item" @click="showSettingDialog"> | ||||||
|  | 								<el-icon> | ||||||
|  | 									<setting /> | ||||||
|  | 								</el-icon> | ||||||
|  | 								<span>配置</span> | ||||||
|  | 							</div> | ||||||
|  | 						</div> | ||||||
|  | 						<div class="flex_item"> | ||||||
|  | 							<div class="tool_item" @click="exit"> | ||||||
|  | 								<el-icon> | ||||||
|  | 									<switch-button /> | ||||||
|  | 								</el-icon> | ||||||
|  | 								<span>退出</span> | ||||||
|  | 							</div> | ||||||
|  | 						</div> | ||||||
|  | 					</div> | ||||||
|  | 				</div> | ||||||
|  | 			</div> | ||||||
|  | 		</div> | ||||||
|  | 	</div> | ||||||
|  | </template> | ||||||
|  | 
 | ||||||
|  | <script setup> | ||||||
|  | 	import { | ||||||
|  | 		ref, | ||||||
|  | 		onMounted, | ||||||
|  | 		onBeforeUnmount, | ||||||
|  | 		reactive, | ||||||
|  | 		defineEmits | ||||||
|  | 	} from 'vue' | ||||||
|  | 	import { | ||||||
|  | 		onBeforeRouteUpdate, | ||||||
|  | 		useRouter, | ||||||
|  | 		useRoute | ||||||
|  | 	} from 'vue-router' | ||||||
|  | 
 | ||||||
|  | 	import config from '../js/config.js' | ||||||
|  | 	import utils from '../js/utils.js' | ||||||
|  | 	import api from '../js/api.js' | ||||||
|  | 
 | ||||||
|  | 	const emit = defineEmits(['showSettingDialog']); | ||||||
|  | 
 | ||||||
|  | 	const menus = reactive([{ | ||||||
|  | 			sid: 'Index', | ||||||
|  | 			name: '综合监控', | ||||||
|  | 			path: '/Index', | ||||||
|  | 			isShow: true | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			sid: 'Detection', | ||||||
|  | 			name: '目标检测', | ||||||
|  | 			path: '/Detection', | ||||||
|  | 			isShow: true | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			sid: 'Monitoring', | ||||||
|  | 			name: '实时监控', | ||||||
|  | 			path: '/Monitoring', | ||||||
|  | 			isShow: true | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			sid: 'Search', | ||||||
|  | 			name: '行人搜索', | ||||||
|  | 			path: '/Search', | ||||||
|  | 			isShow: true | ||||||
|  | 		} | ||||||
|  | 	]); | ||||||
|  | 
 | ||||||
|  | 	const showSettingDialog = () => { | ||||||
|  | 		emit('showSettingDialog', {}) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	//全屏 | ||||||
|  | 	let screenText = ref("全屏"); | ||||||
|  | 	const isfullscreen = ref(false); | ||||||
|  | 	const screen = () => { | ||||||
|  | 		if (isfullscreen.value) { | ||||||
|  | 			if (document.exitFullscreen) { | ||||||
|  | 				document.exitFullscreen(); | ||||||
|  | 			} else if (document.msExitFullscreen) { | ||||||
|  | 				document.msExitFullscreen(); | ||||||
|  | 			} else if (document.mozCancelFullScreen) { | ||||||
|  | 				document.mozCancelFullScreen(); | ||||||
|  | 			} else if (document.webkitExitFullscreen) { | ||||||
|  | 				document.webkitExitFullscreen(); | ||||||
|  | 			} | ||||||
|  | 			screenText.value = '全屏'; | ||||||
|  | 		} else { | ||||||
|  | 			var element = document.documentElement; | ||||||
|  | 			if (element.requestFullscreen) { | ||||||
|  | 				element.requestFullscreen(); | ||||||
|  | 			} else if (element.msRequestFullscreen) { | ||||||
|  | 				element.msRequestFullscreen(); | ||||||
|  | 			} else if (element.mozRequestFullScreen) { | ||||||
|  | 				element.mozRequestFullScreen(); | ||||||
|  | 			} else if (element.webkitRequestFullscreen) { | ||||||
|  | 				element.webkitRequestFullscreen(); | ||||||
|  | 			} | ||||||
|  | 			screenText.value = '恢复'; | ||||||
|  | 		} | ||||||
|  | 		isfullscreen.value = !isfullscreen.value; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	//退出 | ||||||
|  | 	const exit = () => { | ||||||
|  | 		utils.showconfirm('确定要退出吗?'); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	const router = useRouter() | ||||||
|  | 	const route = useRoute() | ||||||
|  | 
 | ||||||
|  | 	const curpage = ref("index"); | ||||||
|  | 	const turnPage = (path) => { | ||||||
|  | 		router.push(path); | ||||||
|  | 	} | ||||||
|  | 	router.beforeResolve(async to => { | ||||||
|  | 		curpage.value = to.name; | ||||||
|  | 	}) | ||||||
|  | 
 | ||||||
|  | 	//定时器 | ||||||
|  | 	// let time = ref(new Date().format('yyyy年MM月dd日 hh:mm:ss')); | ||||||
|  | 	let time = ref(new Date().format('yyyy年MM月dd日')); | ||||||
|  | 	const timer = setInterval(function() { | ||||||
|  | 		time.value = new Date().format('yyyy年MM月dd日'); | ||||||
|  | 	}, 1000); | ||||||
|  | 
 | ||||||
|  | 	onMounted(() => {}); | ||||||
|  | 	onBeforeUnmount(() => { | ||||||
|  | 		if (timer) { | ||||||
|  | 			clearInterval(timer); | ||||||
|  | 		} | ||||||
|  | 	}); | ||||||
|  | </script> | ||||||
|  | 
 | ||||||
|  | <style> | ||||||
|  | </style> | ||||||
							
								
								
									
										146
									
								
								Code/frontend/src/components/setting.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,146 @@ | |||||||
|  | <template> | ||||||
|  | 	<div class="setting_panel"> | ||||||
|  | 		<div class="setting_panel_maker" @click="hideSetting"> | ||||||
|  | 			<div class="inner_contaner" @click.stop="stopPropagation"> | ||||||
|  | 				<el-icon :size="25" class="settingPanelCloseBtn" @click="hideSetting"> | ||||||
|  | 					<Close-bold :size="25" /> | ||||||
|  | 				</el-icon> | ||||||
|  | 				<div class="setting_panel_title"> | ||||||
|  | 					系统配置 | ||||||
|  | 				</div> | ||||||
|  | 				<el-form ref="settingFormRef" :model="settingForm" status-icon :rules="rules" label-width="120px" | ||||||
|  | 					class="settingForm"> | ||||||
|  | 					<el-form-item :label="item.label+':'" prop="item.type" v-for="(item,index) in configs"> | ||||||
|  | 						<!-- 识别配置项类型并创建对应组件 --> | ||||||
|  | 						<el-input v-if="item.type != 'select'" v-model="settingForm[item.key]" | ||||||
|  | 							placeholder="请输入{{item.label}}" type="item.type" autocomplete="off" /> | ||||||
|  | 						<el-select v-if="item.type == 'select'" style="width:100%" v-model="settingForm[item.key]" | ||||||
|  | 							placeholder="请选择{{item.label}}"> | ||||||
|  | 							<el-option v-for="(optionitem,index1) in item.options" :label="optionitem.label" | ||||||
|  | 								:value="optionitem.value" /> | ||||||
|  | 						</el-select> | ||||||
|  | 					</el-form-item> | ||||||
|  | 					<el-form-item> | ||||||
|  | 						<el-row style="width:100%"> | ||||||
|  | 							<el-col :span="11"> | ||||||
|  | 								<el-button style="width:100%" type="primary" @click="submitForm(settingFormRef)"> | ||||||
|  | 									保存配置</el-button> | ||||||
|  | 							</el-col> | ||||||
|  | 							<el-col :span="2"> | ||||||
|  | 							</el-col> | ||||||
|  | 							<el-col :span="11"> | ||||||
|  | 								<el-button style="width:100%" @click="defalutForm(settingFormRef)">恢复默认 | ||||||
|  | 								</el-button> | ||||||
|  | 							</el-col> | ||||||
|  | 						</el-row> | ||||||
|  | 					</el-form-item> | ||||||
|  | 				</el-form> | ||||||
|  | 			</div> | ||||||
|  | 		</div> | ||||||
|  | 	</div> | ||||||
|  | </template> | ||||||
|  | 
 | ||||||
|  | <script setup> | ||||||
|  | 	import { | ||||||
|  | 		ref, | ||||||
|  | 		reactive, | ||||||
|  | 		defineEmits | ||||||
|  | 	} from 'vue' | ||||||
|  | 
 | ||||||
|  | 	import "../css/dark_theme.css" | ||||||
|  | 	import "../css/default.css" | ||||||
|  | 
 | ||||||
|  | 	import config from '../js/config.js' | ||||||
|  | 	import utils from '../js/utils.js' | ||||||
|  | 
 | ||||||
|  | 	const emit = defineEmits(['saved']); | ||||||
|  | 
 | ||||||
|  | 	//菜单居中 | ||||||
|  | 	const settingPanelTop = ref(11); | ||||||
|  | 	//菜单居中 | ||||||
|  | 	const settingPanelLeft = ref(11); | ||||||
|  | 	const settingPanelWidth = ref(600); | ||||||
|  | 	const settingPanelHeight = ref(350); | ||||||
|  | 
 | ||||||
|  | 	const settingFormRef = ref(''); | ||||||
|  | 
 | ||||||
|  | 	const settingForm = reactive({}); | ||||||
|  | 	const rules = reactive({}); | ||||||
|  | 
 | ||||||
|  | 	let configs = config.getConfig(); | ||||||
|  | 	configs.forEach(function(item, index, arr) { | ||||||
|  | 		settingForm[item.key] = item.value; | ||||||
|  | 		rules[item.key] = [{ | ||||||
|  | 			required: item.required, | ||||||
|  | 			message: '请输入' + item.label, | ||||||
|  | 			trigger: 'blur' | ||||||
|  | 		}]; | ||||||
|  | 	}); | ||||||
|  | 	 | ||||||
|  | 	const hideSetting = ()=>{ | ||||||
|  | 		emit('hideSetting', {}) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	// 阻止事件冒泡 | ||||||
|  | 	const stopPropagation = () => {}; | ||||||
|  | 
 | ||||||
|  | 	/** | ||||||
|  | 	 * 恢复默认 | ||||||
|  | 	 */ | ||||||
|  | 	const defalutForm = async (formEl) => { | ||||||
|  | 		if (!formEl) return; | ||||||
|  | 		configs = config.defaultconfig; | ||||||
|  | 		configs.forEach(function(item, index, arr) { | ||||||
|  | 			settingForm[item.key] = item.value; | ||||||
|  | 			rules[item.key] = [{ | ||||||
|  | 				required: item.required, | ||||||
|  | 				message: '请输入' + item.label, | ||||||
|  | 				trigger: 'blur' | ||||||
|  | 			}]; | ||||||
|  | 		}); | ||||||
|  | 	}; | ||||||
|  | 	/** | ||||||
|  | 	 * 提交表单 | ||||||
|  | 	 */ | ||||||
|  | 	const submitForm = async (formEl) => { | ||||||
|  | 		if (!formEl) return; | ||||||
|  | 
 | ||||||
|  | 		await formEl.validate((valid, fields) => { | ||||||
|  | 			if (!valid) { | ||||||
|  | 				return; | ||||||
|  | 			} | ||||||
|  | 			//将数据组合成数组格式 | ||||||
|  | 			let configdata = []; | ||||||
|  | 			for (let key in settingForm) { | ||||||
|  | 				let itemconfig = null; | ||||||
|  | 				for (let i = 0; i < configs.length; i++) { | ||||||
|  | 					if (configs[i].key == key) { | ||||||
|  | 						itemconfig = configs[i]; | ||||||
|  | 						break; | ||||||
|  | 					} | ||||||
|  | 				} | ||||||
|  | 				if (!itemconfig) { //未识别的配置项 | ||||||
|  | 					continue; | ||||||
|  | 				} | ||||||
|  | 				//更新数据 | ||||||
|  | 				itemconfig.value = settingForm[key]; | ||||||
|  | 				configdata.push(itemconfig); | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
|  | 			//保存系统配置 | ||||||
|  | 			utils.saveConfig(configdata); | ||||||
|  | 
 | ||||||
|  | 			//刷新并应用系统配置 | ||||||
|  | 			emit('saved', {}) | ||||||
|  | 		}) | ||||||
|  | 	}; | ||||||
|  | </script> | ||||||
|  | 
 | ||||||
|  | <style> | ||||||
|  | 	.setting_panel .inner_contaner { | ||||||
|  | 		width: 40vw; | ||||||
|  | 		height: 40vh; | ||||||
|  | 		top: 30vh; | ||||||
|  | 		left: 30vw; | ||||||
|  | 	} | ||||||
|  | </style> | ||||||
							
								
								
									
										140
									
								
								Code/frontend/src/css/dark_theme.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,140 @@ | |||||||
|  | @charset "utf-8"; | ||||||
|  | 
 | ||||||
|  | .dark { | ||||||
|  | 	background: #171717; | ||||||
|  | 	color: #fff; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .dark .title { | ||||||
|  | 	text-align: center; | ||||||
|  | 	color: #fff; | ||||||
|  | 	font-size: 2.4rem; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .dark .title { | ||||||
|  | 	height: 6vh; | ||||||
|  | 	position: relative; | ||||||
|  | 	border-bottom: 0.1vh solid #03a9f48a; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .dark .title .time_div { | ||||||
|  | 	line-height: 6vh; | ||||||
|  | 	height: 6vh; | ||||||
|  | 	width: 9vw; | ||||||
|  | 	margin-right: 0.5vw; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .dark .title .time { | ||||||
|  | 	font-size: 1.4rem; | ||||||
|  | 	text-align: right; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .dark .title .time i { | ||||||
|  | 	margin-right: 0.5vw; | ||||||
|  | 	position: relative; | ||||||
|  | 	top: 0.5vh; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .dark .title .header { | ||||||
|  | 	letter-spacing: 0.3vh; | ||||||
|  | 	background: linear-gradient(to left, #2196f3, #47c2f9, #1686b9); | ||||||
|  | 	-webkit-background-clip: text; | ||||||
|  | 	color: transparent; | ||||||
|  | 	text-align: left; | ||||||
|  | 	padding: 1vh; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .dark .title .menus { | ||||||
|  | 	display: flex; | ||||||
|  | 	height: 6vh; | ||||||
|  | } | ||||||
|  | .dark .title .menus_div { | ||||||
|  | 	height: 6vh; | ||||||
|  | 	width: 20vw; | ||||||
|  | } | ||||||
|  | .dark .title .menus .menu_item { | ||||||
|  | 	height: 3vh; | ||||||
|  | 	line-height: 3vh; | ||||||
|  | 	font-size: 1.4rem; | ||||||
|  | 	margin: 0 auto; | ||||||
|  | 	width: 90%; | ||||||
|  | 	background: rgba(255, 255, 255, 0.3); | ||||||
|  | 	border-radius: 3px; | ||||||
|  | 	margin-top: 1.5vh; | ||||||
|  | 	cursor: pointer; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .dark .title .menus .menu_item:hover { | ||||||
|  | 	background: #2196f3; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .dark .title .menus .menu_item_selected { | ||||||
|  | 	background: #2196f3; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .dark .title .tools { | ||||||
|  | 	height: 6vh; | ||||||
|  | 	line-height: 6vh; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .dark .title .tool_item { | ||||||
|  | 	font-size: 1.4rem; | ||||||
|  | 	cursor: pointer; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .dark .title .tool_item i { | ||||||
|  | 	height: 3vh; | ||||||
|  | 	line-height: 3vh; | ||||||
|  | 	margin-right: 0.3vw; | ||||||
|  | 	position: relative; | ||||||
|  | 	top: 0.2vh; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .dark .title .tool_item:hover { | ||||||
|  | 	color: #2196f3; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .dark .setting_panel {} | ||||||
|  | 
 | ||||||
|  | .dark .setting_panel .setting_panel_maker { | ||||||
|  | 	position: fixed; | ||||||
|  | 	left: 0; | ||||||
|  | 	top: 0; | ||||||
|  | 	width: 100%; | ||||||
|  | 	height: 100%; | ||||||
|  | 	z-index: 1; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .dark .setting_panel .inner_contaner { | ||||||
|  | 	position: fixed; | ||||||
|  | 	background: #2196f361; | ||||||
|  | 	border-radius: 0.5vh; | ||||||
|  | 	z-index: 2; | ||||||
|  | 	box-shadow: 0 0.2vw 1vh 0 rgba(0, 0, 0, 0.1); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .dark .setting_panel .inner_contaner .settingPanelCloseBtn { | ||||||
|  | 	position: absolute; | ||||||
|  | 	right: -1vh; | ||||||
|  | 	top: -1vh; | ||||||
|  | 	cursor: pointer; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .dark .setting_panel .inner_contaner .settingPanelCloseBtn:hover { | ||||||
|  | 	color: #2196f3; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .dark .setting_panel .inner_contaner .setting_panel_title { | ||||||
|  | 	height: 6vh;; | ||||||
|  | 	line-height: 6vh;; | ||||||
|  | 	text-align: center; | ||||||
|  | 	font-size: 2rem; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .dark .setting_panel .inner_contaner .settingForm { | ||||||
|  | 	padding-right: 7vw; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .dark .setting_panel .inner_contaner .settingForm .el-form-item__label { | ||||||
|  | 	color: #fff; | ||||||
|  | } | ||||||
							
								
								
									
										188
									
								
								Code/frontend/src/css/default.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,188 @@ | |||||||
|  | @charset "utf-8"; | ||||||
|  | 
 | ||||||
|  | html { | ||||||
|  | 	font-size: 62.5%;// | ||||||
|  | } | ||||||
|  | .amap-logo { | ||||||
|  | 	display: none !important; | ||||||
|  | } | ||||||
|  | 	 | ||||||
|  | .container { | ||||||
|  | 	position: fixed; | ||||||
|  | 	left: 0; | ||||||
|  | 	top: 0; | ||||||
|  | 	width: 100vw; | ||||||
|  | 	height: 100vh; | ||||||
|  | 	overflow: auto; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .flex { | ||||||
|  | 	display: flex; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .flex_item { | ||||||
|  | 	flex: 1; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .chart { | ||||||
|  | 	border: 0.1vh solid #2196f366; | ||||||
|  | 	position: relative; | ||||||
|  | 	padding: 0 1vh; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .chart .chart_title { | ||||||
|  | 	font-size: 1.8rem; | ||||||
|  | 	font-weight: bold; | ||||||
|  | 	text-align: center; | ||||||
|  | 	line-height: 4vh; | ||||||
|  | 	height: 4vh; | ||||||
|  | 	background: linear-gradient(to left, #03a9f4,#2196f3, #00bcd4,  #2196f3, #3fb579, #2196f3, #189cdb, #1ec5cd); | ||||||
|  | 	-webkit-background-clip: text; | ||||||
|  | 	color: transparent; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .chart .border_line { | ||||||
|  | 	position: absolute; | ||||||
|  | 	background: #fff; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .chart .topleft1 { | ||||||
|  | 	top: 0; | ||||||
|  | 	left: 0; | ||||||
|  | 	width: 0.8vw; | ||||||
|  | 	height: 0.1vh; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .chart .topleft2 { | ||||||
|  | 	top: 0.8vh; | ||||||
|  | 	left: -0.4vw; | ||||||
|  | 	width: 0.8vw; | ||||||
|  | 	height: 0.2vh; | ||||||
|  | 	transform: rotate(90deg); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .chart .topright1 { | ||||||
|  | 	top: 0; | ||||||
|  | 	right: 0; | ||||||
|  | 	width: 0.8vw; | ||||||
|  | 	height: 0.1vh; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .chart .topright2 { | ||||||
|  | 	top: 0.8vh; | ||||||
|  | 	right: -0.4vw; | ||||||
|  | 	width: 0.8vw; | ||||||
|  | 	height: 0.2vh; | ||||||
|  | 	transform: rotate(90deg); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .chart .bottomleft1 { | ||||||
|  | 	bottom: -0.1vh; | ||||||
|  | 	left: -0.1vh; | ||||||
|  | 	width: 0.8vw; | ||||||
|  | 	height: 0.1vh; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .chart .bottomleft2 { | ||||||
|  | 	bottom: 0.6vh; | ||||||
|  | 	left: -0.4vw; | ||||||
|  | 	width: 0.8vw; | ||||||
|  | 	height: 0.2vh; | ||||||
|  | 	transform: rotate(90deg); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .chart .bottomright1 { | ||||||
|  | 	bottom: -0.1vh; | ||||||
|  | 	right: 0; | ||||||
|  | 	width: 0.8vw; | ||||||
|  | 	height: 0.1vh; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .chart .bottomright2 { | ||||||
|  | 	bottom: 0.6vh; | ||||||
|  | 	right: -0.4vw; | ||||||
|  | 	width: 0.8vw; | ||||||
|  | 	height: 0.2vh; | ||||||
|  | 	transform: rotate(90deg); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .chart .tr {} | ||||||
|  | 
 | ||||||
|  | .chart .tr .th { | ||||||
|  | 	text-align: center; | ||||||
|  | 	font-size: 1.4rem; | ||||||
|  | 	height: 3vh; | ||||||
|  | 	line-height: 3vh; | ||||||
|  | 	text-align: center; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .chart .tr .th .text { | ||||||
|  | 	background-color: #488cf7aa; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .chart .tr .td { | ||||||
|  | 	text-align: center; | ||||||
|  | 	font-size: 1.4rem; | ||||||
|  | 	height: 3vh; | ||||||
|  | 	line-height: 3vh; | ||||||
|  | 	text-align: center; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .chart .tr.bg { | ||||||
|  | 	background: #01AAED22; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .text_color_1 { | ||||||
|  | 	background: linear-gradient(45deg, #337fcd, #fac858, #337fcd); | ||||||
|  | 	-webkit-background-clip: text; | ||||||
|  | 	color: transparent; | ||||||
|  | 	text-align: left; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .text_color_2 { | ||||||
|  | 	background: linear-gradient(45deg, #337fcd, #ed0808, #337fcd); | ||||||
|  | 	-webkit-background-clip: text; | ||||||
|  | 	color: transparent; | ||||||
|  | 	text-align: left; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .text_color_3 { | ||||||
|  | 	background: linear-gradient(45deg, #337fcd, #f98efb, #337fcd); | ||||||
|  | 	-webkit-background-clip: text; | ||||||
|  | 	color: transparent; | ||||||
|  | 	text-align: left; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .text_color_4 { | ||||||
|  | 	background: linear-gradient(45deg, #337fcd, #00FAC1, #337fcd); | ||||||
|  | 	-webkit-background-clip: text; | ||||||
|  | 	color: transparent; | ||||||
|  | 	text-align: left; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .text_color_5 { | ||||||
|  | 	background: linear-gradient(45deg, #337fcd, #FDE056, #337fcd); | ||||||
|  | 	-webkit-background-clip: text; | ||||||
|  | 	color: transparent; | ||||||
|  | 	text-align: left; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .text_color_6 { | ||||||
|  | 	background: linear-gradient(45deg, #337fcd, #6648FF, #337fcd); | ||||||
|  | 	-webkit-background-clip: text; | ||||||
|  | 	color: transparent; | ||||||
|  | 	text-align: left; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .split_line_h { | ||||||
|  | 	width: 0.1vw; | ||||||
|  | 	height: 10vh; | ||||||
|  | 	background: linear-gradient(to bottom, #00000000, #337fcd, #00000000); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .split_line_w { | ||||||
|  | 	width: 100%; | ||||||
|  | 	height: 0.2vh; | ||||||
|  | 	margin-top: 1vh; | ||||||
|  | 	background: linear-gradient(to right, #00000000, #337fcd, #00000000); | ||||||
|  | } | ||||||
							
								
								
									
										36
									
								
								Code/frontend/src/js/api.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,36 @@ | |||||||
|  | import axios from 'axios'; | ||||||
|  | const config = { | ||||||
|  | 	// baseURL: process.env.baseURL
 | ||||||
|  | 	baseURL: 'http://localhost:3000/data/', | ||||||
|  | 	timeout: 1000, | ||||||
|  | 	headers: { | ||||||
|  | 		'Content-Type': 'application/json', | ||||||
|  | 	}, | ||||||
|  | }; | ||||||
|  | const api = axios.create(config); | ||||||
|  | 
 | ||||||
|  | // 默认 post 请求,使用 application/json 形式
 | ||||||
|  | api.defaults.headers.post['Content-Type'] = 'application/json'; | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * 接口地址配置 | ||||||
|  |  */ | ||||||
|  | const server_urls = { | ||||||
|  | 	//地图数据接口
 | ||||||
|  | 	map_url: 'mapdata.json', | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | export default { | ||||||
|  | 	name: "api", | ||||||
|  | 	loadMapData:(callback)=>{ | ||||||
|  | 		axios({ | ||||||
|  | 			method: 'get', | ||||||
|  | 			url: config.baseURL + server_urls.map_url, | ||||||
|  | 			headers: { | ||||||
|  | 				'Content-Type': 'application/json; charset=utf-8', | ||||||
|  | 			}, | ||||||
|  | 		}).then(response => { | ||||||
|  | 			callback && callback(response); | ||||||
|  | 		}) | ||||||
|  | 	} | ||||||
|  | } | ||||||