Browse Source

地图不出来

wangzhe 1 year ago
parent
commit
807373e454

File diff suppressed because it is too large
+ 945 - 170
package-lock.json


+ 33 - 5
package.json

@@ -8,11 +8,39 @@
     "lint": "vue-cli-service lint"
   },
   "dependencies": {
-    "core-js": "^3.8.3",
-    "echarts": "^5.4.3",
-    "element-ui": "^2.15.13",
-    "vue": "^2.6.14",
-    "vue-router": "^3.6.5"
+    "@jiaminghi/data-view": "^2.10.0",
+    "@riophae/vue-treeselect": "0.4.0",
+    "@vue/babel-plugin-transform-vue-jsx": "^1.2.1",
+    "animate.css": "^4.1.1",
+    "axios": "0.24.0",
+    "clipboard": "2.0.8",
+    "core-js": "^3.29.1",
+    "core-js-compat": "^3.29.1",
+    "core-util-is": "^1.0.3",
+    "echarts": "^4.9.0",
+    "element-ui": "2.15.6",
+    "file-saver": "2.0.5",
+    "fuse.js": "6.4.3",
+    "highlight.js": "9.18.5",
+    "html2canvas": "^1.4.1",
+    "js-beautify": "1.13.0",
+    "js-cookie": "3.0.1",
+    "jsencrypt": "^3.2.1",
+    "lib-flexible": "^0.3.2",
+    "nprogress": "0.2.0",
+    "quill": "1.3.7",
+    "sass": "^1.64.2",
+    "screenfull": "5.0.2",
+    "sortablejs": "1.10.2",
+    "vue": "2.7.14",
+    "vue-cookies": "^1.8.2",
+    "vue-count-to": "1.0.13",
+    "vue-cropper": "0.5.5",
+    "vue-meta": "2.4.0",
+    "vue-meta-info": "^0.1.7",
+    "vue-router": "3.4.9",
+    "vuedraggable": "2.24.3",
+    "vuex": "3.6.0"
   },
   "devDependencies": {
     "@babel/core": "^7.12.16",

+ 8 - 0
public/index.html

@@ -8,10 +8,18 @@
     <title>延吉市数字应急自然灾害综合风险监管平台</title>
   </head>
   <body>
+  <script type="text/javascript"
+          include="leaflet,leaflet.sidebyside,iclient-leaflet,iclient-plot-leaflet,leaflet.draw,leaflet.markercluster,leaflet.heat"
+          src="./supermap/dist/leaflet/include-leaflet.js"></script>
+  <script type="text/javascript" include="bootstrap,plottingPanel,fileupLoad,widgets.alert"
+          src="./supermap/examples/js/include-web.js"></script>
+  <script type="text/javascript" include="PlotPanel,StylePanel,SMLInfosPanel,iPortalStylePanel"
+          src="./supermap/examples/js/plottingPanel/PlottingPanel.Include.js"></script>
     <noscript>
       <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
     </noscript>
     <div id="app"></div>
+
     <!-- built files will be auto injected -->
   </body>
 </html>

+ 344 - 0
src/api/components/TiledMapLayer.js

@@ -0,0 +1,344 @@
+import L, { Util as LUtil} from "leaflet";
+import "@supermap/iclient-leaflet/core/Base";
+import {
+    SecurityManager,
+    Unit,
+    ServerGeometry,
+    CommonUtil
+} from '@supermap/iclient-common';
+import * as Util from "@supermap/iclient-leaflet/core/Util";
+import Attributions from '@supermap/iclient-leaflet/core/Attributions'
+
+
+export let TiledMapLayer = L.TileLayer.extend({
+    options: {
+        //如果有layersID,则是在使用专题图
+        layersID: null,
+        //如果为 true,则将请求重定向到瓦片的真实地址;如果为 false,则响应体中是瓦片的字节流
+        redirect: false,
+        transparent: true,
+        cacheEnabled: true,
+        clipRegionEnabled: false,
+        //地图显示裁剪的区域
+        clipRegion: null,
+        //请求的地图的坐标参考系统。 如:prjCoordSys={"epsgCode":3857}
+        prjCoordSys: null,
+        //地图对象在同一范围内时,是否重叠显示
+        overlapDisplayed: false,
+        //避免地图对象压盖显示的过滤选项
+        overlapDisplayedOptions: null,
+        //切片版本名称,cacheEnabled 为 true 时有效。
+        tileversion: null,
+        crs: null,
+        format: 'png',
+        //启用托管地址。
+        tileProxy:null,
+        attribution: Attributions.Common.attribution,
+        subdomains: null
+    },
+
+    initialize: function (url, options) {
+        this._url = url;
+        L.TileLayer.prototype.initialize.apply(this, arguments);
+        L.setOptions(this, options);
+        L.stamp(this);
+
+        //当前切片在切片集中的index
+        this.tileSetsIndex = -1;
+        this.tempIndex = -1;
+    },
+
+    /**
+     * @private
+     * @function L.supermap.tiledMapLayer.prototype.onAdd
+     * @description 添加地图。
+     * @param {L.Map} map - 待添加的影像地图参数。
+     */
+    onAdd: function (map) {
+        this._crs = this.options.crs || map.options.crs;
+        L.TileLayer.prototype.onAdd.call(this, map);
+    },
+
+    /**
+     * @function L.supermap.tiledMapLayer.prototype.getTileUrl
+     * @description 根据行列号获取瓦片地址。
+     * @param {Object} coords - 行列号。
+     * @returns {string} 瓦片地址。
+     */
+    getTileUrl: function (coords) {
+        var scale = this.getScaleFromCoords(coords);
+        var layerUrl = this._getLayerUrl();
+        var tileUrl = layerUrl + "&scale=" + scale + "&x=" + coords.x + "&y=" + coords.y;
+        //支持代理
+        if (this.options.tileProxy) {
+            tileUrl = this.options.tileProxy + encodeURIComponent(tileUrl);
+        }
+        if (!this.options.cacheEnabled) {
+            tileUrl += "&_t=" + new Date().getTime();
+        }
+        if (this.options.subdomains) {
+            tileUrl = L.Util.template(tileUrl, {s: this._getSubdomain(coords)});
+        }
+        return tileUrl;
+    },
+
+    /**
+     * @function L.supermap.tiledMapLayer.prototype.getScale
+     * @description 根据缩放级别获取比例尺。
+     * @param {number} zoom - 缩放级别。
+     * @returns {number} 比例尺。
+     */
+    getScale: function (zoom) {
+        var me = this;
+        //返回当前比例尺
+        var z = zoom || me._map.getZoom();
+        return me.scales[z];
+    },
+
+    /**
+     * @function L.supermap.tiledMapLayer.prototype.getScaleFromCoords
+     * @description 通过行列号获取比例尺。
+     * @param {Object} coords - 行列号。
+     * @returns {number} 比例尺。
+     */
+    getScaleFromCoords: function (coords) {
+        var me = this,
+            scale;
+        if (me.scales && me.scales[coords.z]) {
+            return me.scales[coords.z];
+        }
+        me.scales = me.scales || {};
+        scale = me.getDefaultScale(coords);
+        me.scales[coords.z] = scale;
+        return scale;
+    },
+
+    /**
+     * @private
+     * @function L.supermap.tiledMapLayer.prototype.getDefaultScale
+     * @description 获取默认比例尺信息。
+     * @param {Object} coords - 坐标对象参数。
+     */
+    getDefaultScale: function (coords) {
+        var me = this,
+            crs = me._crs;
+        if (crs.scales) {
+            return crs.scales[coords.z];
+        } else {
+            var tileBounds = me._tileCoordsToBounds(coords);
+            var ne = crs.project(tileBounds.getNorthEast());
+            var sw = crs.project(tileBounds.getSouthWest());
+            var tileSize = me.options.tileSize;
+            var resolution = Math.max(
+                Math.abs(ne.x - sw.x) / tileSize,
+                Math.abs(ne.y - sw.y) / tileSize
+            );
+            var mapUnit = Unit.METER;
+            if (crs.code) {
+                var array = crs.code.split(':');
+                if (array && array.length > 1) {
+                    var code = parseInt(array[1]);
+                    mapUnit = code && code >= 4000 && code <= 5000 ? Unit.DEGREE : Unit.METER;
+                }
+            }
+            return Util.resolutionToScale(resolution, 96, mapUnit);
+        }
+    },
+
+
+    /**
+     * @function L.supermap.tiledMapLayer.prototype.setTileSetsInfo
+     * @description 设置瓦片集信息。
+     * @param {Object} tileSets - 瓦片对象集。
+     */
+    setTileSetsInfo: function (tileSets) {
+        this.tileSets = tileSets;
+        if (L.Util.isArray(this.tileSets)) {
+            this.tileSets = this.tileSets[0];
+        }
+        if (!this.tileSets) {
+            return;
+        }
+        /**
+         * @event L.supermap.tiledMapLayer#tilesetsinfoloaded
+         * @description 瓦片集信息设置完成后触发。
+         * @property {Array.<Object>} tileVersions  - 瓦片集信息。
+         */
+        this.fire('tilesetsinfoloaded', {
+            tileVersions: this.tileSets.tileVersions
+        });
+        this.changeTilesVersion();
+    },
+
+    /**
+     * @function L.supermap.tiledMapLayer.prototype.lastTilesVersion
+     * @description 请求上一个版本切片,并重新绘制。
+     */
+    lastTilesVersion: function () {
+        this.tempIndex = this.tileSetsIndex - 1;
+        this.changeTilesVersion();
+    },
+
+    /**
+     * @function L.supermap.tiledMapLayer.prototype.nextTilesVersion
+     * @description 请求下一个版本切片,并重新绘制。
+     */
+    nextTilesVersion: function () {
+        this.tempIndex = this.tileSetsIndex + 1;
+        this.changeTilesVersion();
+    },
+
+    /**
+     * @function L.supermap.tiledMapLayer.prototype.changeTilesVersion
+     * @description 切换到某一版本的切片,并重绘。通过 this.tempIndex 保存需要切换的版本索引
+     */
+    changeTilesVersion: function () {
+        var me = this;
+        //切片版本集信息是否存在
+        if (me.tileSets == null) {
+            //版本信息为空,重新查询,查询成功继续跳转到相应的版本
+            //me.getTileSetsInfo();
+            return;
+        }
+        if (me.tempIndex === me.tileSetsIndex || this.tempIndex < 0) {
+            return;
+        }
+        //检测index是否可用
+        var tileVersions = me.tileSets.tileVersions;
+        if (tileVersions && me.tempIndex < tileVersions.length && me.tempIndex >= 0) {
+            var name = tileVersions[me.tempIndex].name;
+            var result = me.mergeTileVersionParam(name);
+            if (result) {
+                me.tileSetsIndex = me.tempIndex;
+                /**
+                 * @event L.supermap.tiledMapLayer#tileversionschanged
+                 * @description 切片的版本切换和重绘成功之后触发。
+                 * @property {Object} tileVersion  - 该版本的切片。
+                 */
+                me.fire('tileversionschanged', {
+                    tileVersion: tileVersions[me.tempIndex]
+                });
+            }
+        }
+    },
+
+    /**
+     * @function L.supermap.tiledMapLayer.prototype.updateCurrentTileSetsIndex
+     * @description 手动设置当前切片集索引,目前主要提供给控件使用。
+     * @param {number} index - 索引值。
+     */
+    updateCurrentTileSetsIndex: function (index) {
+        this.tempIndex = index;
+    },
+
+    /**
+     * @function L.supermap.tiledMapLayer.prototype.mergeTileVersionParam
+     * @description 更改URL请求参数中的切片版本号,并重绘。
+     * @param {string} version - 切片版本号。
+     * @returns {boolean} 是否成功。
+     */
+    mergeTileVersionParam: function (version) {
+        if (version) {
+            this.requestParams["tileversion"] = version;
+            this._paramsChanged = true;
+            this.redraw();
+            this._paramsChanged = false;
+            return true;
+        }
+        return false;
+    },
+
+    _getLayerUrl: function () {
+        if (this._paramsChanged) {
+            this._layerUrl = this._createLayerUrl();
+        }
+        return this._layerUrl || this._createLayerUrl();
+    },
+
+    _createLayerUrl: function () {
+        let layerUrl = CommonUtil.urlPathAppend(this._url, `tileImage.${this.options.format}`);
+        this.requestParams = this.requestParams || this._getAllRequestParams();
+        layerUrl = CommonUtil.urlAppend(layerUrl, LUtil.getParamString(this.requestParams));
+        layerUrl = SecurityManager.appendCredential(layerUrl);
+        this._layerUrl = layerUrl;
+        return layerUrl;
+    },
+
+    _getAllRequestParams: function () {
+        var me = this,
+            options = me.options || {},
+            params = {};
+
+        var tileSize = this.options.tileSize;
+        if (!(tileSize instanceof L.Point)) {
+            tileSize = L.point(tileSize, tileSize);
+        }
+        params["width"] = tileSize.x;
+        params["height"] = tileSize.y;
+
+        params["redirect"] = options.redirect === true;
+        params["transparent"] = options.transparent === true;
+        params["cacheEnabled"] = !(options.cacheEnabled === false);
+
+        if (options.prjCoordSys) {
+            params["prjCoordSys"] = JSON.stringify(options.prjCoordSys);
+        }
+
+        if (options.layersID) {
+            params["layersID"] = options.layersID.toString();
+        }
+
+        if (options.clipRegionEnabled && options.clipRegion) {
+            options.clipRegion = ServerGeometry.fromGeometry(Util.toSuperMapGeometry(options.clipRegion));
+            params["clipRegionEnabled"] = options.clipRegionEnabled;
+            params["clipRegion"] = JSON.stringify(options.clipRegion);
+        }
+
+        //切片的起始参考点,默认为地图范围的左上角。
+        var crs = me._crs;
+        if (crs.options && crs.options.origin) {
+            params["origin"] = JSON.stringify({
+                x: crs.options.origin[0],
+                y: crs.options.origin[1]
+            });
+        } else if (crs.projection && crs.projection.bounds) {
+            var bounds = crs.projection.bounds;
+            var tileOrigin = L.point(bounds.min.x, bounds.max.y);
+            params["origin"] = JSON.stringify({
+                x: tileOrigin.x,
+                y: tileOrigin.y
+            });
+        }
+
+        if (options.overlapDisplayed === false) {
+            params["overlapDisplayed"] = false;
+            if (options.overlapDisplayedOptions) {
+                params["overlapDisplayedOptions"] = me.overlapDisplayedOptions.toString();
+            }
+        } else {
+            params["overlapDisplayed"] = true;
+        }
+
+        if (params.cacheEnabled === true && options.tileversion) {
+            params["tileversion"] = options.tileversion.toString();
+        }
+        if (options.rasterfunction) {
+            params["rasterfunction"] = JSON.stringify(options.rasterfunction);
+        }
+
+        return params;
+    }
+});
+
+export let tiledMapLayer = function (url, options) {
+    return new TiledMapLayer(url, options);
+};
+
+//--------------------------------------------------------------
+//打点
+export function makePoint(map,markers){
+    markers.forEach((index,item)=>{
+        console.log(index,item)
+        L.marker(item.latlon).addTo(map);
+    })
+}

+ 10 - 0
src/api/components/deptselector.js

@@ -0,0 +1,10 @@
+import request from '../../utils/request'
+
+export function getDepts(query) {
+    return request({
+        url : '/system/sysutils/deptselector',
+        method : 'get',
+        params: query
+    })
+}
+

+ 113 - 0
src/api/components/sookaMapIcon.js

@@ -0,0 +1,113 @@
+export function getIconBg(icon) {
+    switch (icon) {
+        // default
+        default:
+            return "#000";
+        //林业图标
+
+        case "sj-icon-centerdata-t-forest-landing":
+            return "#0FA2FF"; //1起降点
+        case "sj-icon-centerdata-t-forest-channel":
+            return "#da8ec5"; //2水源渠道
+        case "sj-icon-centerdata-t-forest-waterintake":
+            return "#58b35d"; //3取水口
+        case "sj-icon-centerdata-t-forest-watercrane":
+            return "#0FA2FF"; //4水鹤
+        case "sj-icon-centerdata-t-forest-firehydrant-1":
+            return "#da8ec5"; //5地上消火栓
+        case "sj-icon-centerdata-t-forest-firehydrant-2":
+            return "#78bfc2"; //6地下消火栓
+        case "sj-icon-centerdata-t-forest-firehydrant-3":
+            return "#f5ad1b"; //7室内消火栓
+        case "sj-icon-centerdata-t-forest-fireteam":
+            return "#f5ad1b"; //8森林防火队
+        //事件弹层补充   消防
+        case "sj-icon-centerdata-t-firecontrol-fire-force":
+            return "#ff6063"; //1消防力量
+        case "sj-icon-centerdata-t-firecontrol-fire-key-places":
+            return "#58b35d"; //2重点场所
+        case "sj-icon-centerdata-t-firecontrol-fire-pressure-sensor":
+            return "#f5ad1b"; //3压力传感器
+        case "sj-icon-centerdata-t-firecontrol-basic-linkage-force":
+            return "#da8ec5"; //4基本联动力量
+        case "sj-icon-centerdata-t-firecontrol-other-linkage-force":
+            return "#5278e8"; //5其他联动力量
+        case "sj-icon-centerdata-t-firecontrol-foam-liquid":
+            return "#00d6cc"; //6泡沫液
+        case "sj-icon-centerdata-t-firecontrol-fulltime-station":
+            return "#898e28"; //7专职站
+        case "sj-icon-centerdata-t-firecontrol-fire-pressure-sensor":
+            return "#f5ad1b"; //8摄像头
+
+        //农业
+        case "sj-icon-centerdata-t-farm-agricultural-cooperatives":
+            return "#f5ad1b"; //1农民合作社
+        case "sj-icon-centerdata-t-farm-botany-protect-info":
+            return "#58b35d"; //2农业技术推广总站信息
+        case "sj-icon-centerdata-t-farm-enterprise-1":
+            return "#0FA2FF"; //3生鲜乳收购站
+        case "sj-icon-centerdata-t-farm-enterprise-2":
+            return "#00d6cc"; //4屠宰企业
+        case "sj-icon-centerdata-t-farm-enterprise-3":
+            return "#da8ec5"; //5饲料企业
+        case "sj-icon-centerdata-t-farm-filings-livestock":
+            return "#f5ad1b"; //6备案畜禽规模养殖场
+        case "sj-icon-centerdata-t-farm-livestock":
+            return "#ff6063"; //7种畜禽养殖场
+        case "sj-icon-centerdata-t-farm-excrement-dispose":
+            return "#f5ad1b"; //8区域性粪污处置中心
+        case "sj-icon-centerdata-t-farm-complex-modification":
+            return "#da8ec5"; //9肉牛基层繁改站
+        case "sj-icon-centerdata-t-farm-greenhouse-film":
+            return "#0FA2FF"; //10棚膜信息
+
+        //生态
+        case "sj-icon-centerdata-t-environment-key-enterprise":
+            return "#f5ad1b"; //1重点企业
+        case "sj-icon-centerdata-t-environment-source-pollution":
+            return "#58b35d"; //2污染源
+        case "sj-icon-centerdata-t-environment-sewage-outlet":
+            return "#0FA2FF"; //3排污口
+
+        //资源
+        case "sj-icon-centerdata-t-resources-deposit":
+            return "#f5ad1b"; //1矿产资源
+        case "sj-icon-centerdata-t-resources-geologic-hazard":
+            return "#58b35d"; //2地质灾害易发区
+        case "sj-icon-centerdata-t-resources-illegal-construction":
+            return "#0FA2FF"; //3违建信息
+        
+        //应急
+        case "sj-icon-centerdata-t-emergency-warehouse":
+            return "#f5ad1b"; //应急仓库(个)
+        case "sj-icon-centerdata-t-emergency-team":
+            return "#ff6063"; //应急队伍(个)
+
+       //水利
+        case "sj-icon-centerdata-t-hydraulic-battlefield":
+            return "#58b35d"; //沙场资源
+        case "sj-icon-centerdata-t-hydraulic-channel-blueline":
+            return "#0FA2FF"; //河道蓝线资源
+        case "sj-icon-centerdata-t-hydraulic-garbage-station":
+            return "#da8ec5"; //垃圾站资源
+        case "sj-icon-centerdata-t-hydraulic-outlet-sewage":
+            return "#00d6cc"; //排污口资源
+        case "sj-icon-centerdata-t-hydraulic-reach":
+            return "#f5ad1b"; //河段资源(个)
+        case "sj-icon-centerdata-t-hydraulic-reservoir":
+            return "#ff6063"; //水库资源(个)
+        case "sj-icon-centerdata-t-hydraulic-river":
+            return "#7cb358"; //河流资源(个)
+        case "sj-icon-centerdata-t-hydraulic-wade-bridge-culvert":
+            return "#f5ad1b"; //涉水桥涵资源
+        case "sj-icon-centerdata-t-hydraulic-water-gate":
+            return "#da8ec5"; //闸口资源(个)
+       //交通
+        case "sj-icon-centerdata-t-traffic-warning-sign":
+            return "#58b35d"; //警示牌(个)
+        case "sj-icon-centerdata-t-traffic-bridge":
+            return "#0FA2FF"; //桥梁(个)
+        case "sj-icon-centerdata-t-traffic-culvert":
+            return "#da8ec5"; //涵洞(个)
+    }
+}

+ 6 - 0
src/api/components/supermap.js

@@ -0,0 +1,6 @@
+
+export const iconList = {
+  'marker': require('@/assets/images/cameraType/marker.png'),
+  'big-horn': require('@/assets/images/cameraType/big-horn.png'),
+  'camera': require('@/assets/images/cameraType/camera.png'),
+}

File diff suppressed because it is too large
+ 4 - 0
src/api/components/tcplayer.js


File diff suppressed because it is too large
+ 1354 - 0
src/components/supermap.vue


+ 115 - 48
src/views/index.vue

@@ -1,52 +1,119 @@
 <template>
     <div>
       <div class="map" @click="abc()">
-          <img src="../assets/images/yj-mapbg.png"/>
-      </div>
-      <Header></Header>
-      <Leftnav></Leftnav>
-      <Rightnav></Rightnav>
-      <Btmbutton></Btmbutton>
-      <Jsmsdialog ref="Jsmsdialog"></Jsmsdialog>
-    </div>
-  </template>
-  
-  <script>
-  import '../assets/iconfont/iconfont.css'
-  import Header from '../components/Header.vue'
-  import Leftnav from '../components/Leftnav.vue'
-  import Rightnav from '../components/Rightnav.vue'
-  import Btmbutton from '../components/Btmbutton.vue'
-  import Jsmsdialog from '../components/Jsmsdialog.vue'
-  
-  export default {
-    name: 'App',
-    components: {
-        Header,
-        Leftnav,
-        Rightnav,
-        Btmbutton,
-        Jsmsdialog
-    },
-	methods: {
-		abc(){
-			this.$refs.Jsmsdialog.outerVisible = true
-			console.log('1111')
-		}
-	},
-  }
-  </script>
-  <style>
-      .map{
-          position: fixed;
-          z-index: 1;
-          width: 100%;
-          height: 100vh;
-          left: 0px;
+          <!--<img src="../assets/images/yj-mapbg.png"/>-->
+          <!--<img src="../assets/images/cjms_camera/water_1.jpg"/>-->
+          <!-- 地图 -->
+          <!--<supermapDialog ref="supermapDialog"-->
+                          <!--style="position: absolute; top:0;left: 0;"-->
+                          <!--:mapDiv="'forestWarmSuperMap'"-->
+          <!--/>-->
+          <supermap ref="supermap" style="width: 100%;height: 100vh;"
+                          class="indexSupermapClass" :mapDiv="'forestMap'"
+          :dynamicPlotting="false"
+          :mapSite="{doubleClickZoom:false}" :codes="['9fa5']" :isSideBySide="false"
+          ></supermap>
+          </div>
+          <Header></Header>
+          <Leftnav></Leftnav>
+          <Rightnav></Rightnav>
+          <Btmbutton></Btmbutton>
+          <Jsmsdialog ref="Jsmsdialog"></Jsmsdialog>
+        </div>
+      </template>
+
+      <script>
+      import '../assets/iconfont/iconfont.css'
+      import Header from '../components/Header.vue'
+      import Leftnav from '../components/Leftnav.vue'
+      import Rightnav from '../components/Rightnav.vue'
+      import Btmbutton from '../components/Btmbutton.vue'
+      import Jsmsdialog from '../components/Jsmsdialog.vue'
+      import supermap from '@/components/supermap' //超图
+
+      export default {
+        name: 'App',
+          data() {
+              return {
+                  mapToolShowBH:false,
+              }
+          },
+        components: {
+            Header,
+            Leftnav,
+            Rightnav,
+            Btmbutton,
+            Jsmsdialog,
+            supermap
+        },
+        methods: {
+            /** 预览按钮操作 */
+            preview(cameraParam) {
+                this.showTVWall(cameraParam.code, cameraParam.name);
+            },
+            /* 电视墙替换开始 */
+            showTVWall(channelCode, channelName) {
+                let tvListJson = [
+                    {
+                        "switchTab": "2",
+                        "treeLabels": [
+                            {
+                                "id": null,
+                                "labelCode": "999",
+                                "labelName": "电视墙",
+                                "cameraType": null,
+                                "parentLabelCode": ""
+                            },
+                            {
+                                "id": "spcamera00010",
+                                "labelCode": channelCode,
+                                "labelName": channelName,
+                                "cameraType": "1",
+                                "parentLabelCode": "999"
+                            }
+                        ],
+                        "labelChannels": [
+                            {
+                                "labelCode": channelCode,
+                                "channelDates": [
+                                    {
+                                        "channelCode": channelCode,
+                                        "channelName": channelName,
+                                        "channelSn": null,
+                                        "cameraType": "1",
+                                        "online": "1",
+                                        "cameraCode": "1"
+                                    }
+                                ]
+                            }
+                        ]
+                    }
+                ]
+                this.$refs.TVWall.showTVWall(tvListJson, [{
+                    "channelId": channelCode
+                }]);
+                this.$refs.bottomMenu.showMeasure = false;
+                this.$refs.bottomMenu.showChild = false;
+                this.$refs.bottomMenu.showBanChild = false;
+                this.$refs.bottomMenu.showChangChild = false;
+            },
+            abc(){
+                this.$refs.Jsmsdialog.outerVisible = true
+                console.log('1111')
+            }
+        },
       }
-      .map img{
-          width: 100%;
-          height: 100%;
-      }
-  </style>
-  
+      </script>
+      <style>
+          .map{
+              position: fixed;
+              z-index: 1;
+              width: 100%;
+              height: 100vh;
+              left: 0px;
+          }
+          .map img{
+              width: 100%;
+              height: 100%;
+          }
+      </style>