南昌市物联网技防平台-前端
liuyg
2021-04-22 92d5a2511ed8c40cfffc960d7c3556db2e09a485
Merge branch 'master' of http://192.168.0.105:10010/r/jfpt-Vue
21 files modified
7 files added
920 ■■■■■ changed files
package-lock.json 10 ●●●●● patch | view | raw | blame | history
package.json 1 ●●●● patch | view | raw | blame | history
public/map/images/add-0.png patch | view | raw | blame | history
public/map/images/by-jingbao.png patch | view | raw | blame | history
public/map/images/del.png patch | view | raw | blame | history
public/map/images/delete.png patch | view | raw | blame | history
public/map/images/insert.png patch | view | raw | blame | history
public/map/images/yj-jingbao.png patch | view | raw | blame | history
public/map/widgets/map/MapWidget.js 2 ●●● patch | view | raw | blame | history
public/map/widgets/securityMap/SecurityMap.css 34 ●●●●● patch | view | raw | blame | history
public/map/widgets/securityMap/SecurityMap.js 234 ●●●●● patch | view | raw | blame | history
public/map/widgets/securityMap/template.html 17 ●●●●● patch | view | raw | blame | history
public/map/widgets/supervisoryMap/FlareClusterLayer_v3.js 81 ●●●● patch | view | raw | blame | history
src/main.js 2 ●●●●● patch | view | raw | blame | history
src/page/index/logo.vue 80 ●●●●● patch | view | raw | blame | history
src/styles/media.scss 2 ●●● patch | view | raw | blame | history
src/views/animalHeat/animalHeat.vue 8 ●●●● patch | view | raw | blame | history
src/views/healthcode/healthcode.vue 5 ●●●● patch | view | raw | blame | history
src/views/parcel/parcel.vue 5 ●●●● patch | view | raw | blame | history
src/views/parcel/parcelKind.vue 6 ●●●● patch | view | raw | blame | history
src/views/policeTracking/policeTracking.vue 156 ●●●● patch | view | raw | blame | history
src/views/realTimePolice/real.vue 32 ●●●● patch | view | raw | blame | history
src/views/report/announcementReport.vue 2 ●●● patch | view | raw | blame | history
src/views/report/reportConfiguration.vue 2 ●●● patch | view | raw | blame | history
src/views/report/reportlist copy.vue 203 ●●●●● patch | view | raw | blame | history
src/views/report/reportlist.vue 4 ●●●● patch | view | raw | blame | history
src/views/security/security.vue 22 ●●●● patch | view | raw | blame | history
src/views/supervisoryConsole/card.vue 12 ●●●●● patch | view | raw | blame | history
package-lock.json
@@ -11817,6 +11817,16 @@
        "vue-style-loader": "^4.1.0"
      }
    },
    "vue-mobile-audio": {
      "version": "0.1.3",
      "resolved": "https://registry.npm.taobao.org/vue-mobile-audio/download/vue-mobile-audio-0.1.3.tgz",
      "integrity": "sha1-LTrV14UgV5RC/JZzpzD68AoxGJY=",
      "requires": {
        "vue": "^2.5.17",
        "vue-router": "^3.0.1",
        "vuex": "^3.0.1"
      }
    },
    "vue-router": {
      "version": "3.4.9",
      "resolved": "https://registry.npm.taobao.org/vue-router/download/vue-router-3.4.9.tgz?cache=0&sync_timestamp=1610356181553&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-router%2Fdownload%2Fvue-router-3.4.9.tgz",
package.json
@@ -33,6 +33,7 @@
    "vue": "^2.6.10",
    "vue-axios": "^2.1.2",
    "vue-i18n": "^8.7.0",
    "vue-mobile-audio": "^0.1.3",
    "vue-router": "^3.0.1",
    "vuex": "^3.1.1"
  },
public/map/images/add-0.png
public/map/images/by-jingbao.png
public/map/images/del.png
public/map/images/delete.png
public/map/images/insert.png
public/map/images/yj-jingbao.png
public/map/widgets/map/MapWidget.js
@@ -116,7 +116,7 @@
            this._addLayer();
            this._eventHandlers.push(this.map.on("extent-change", lang.hitch(this, this._onExtentChange)));
            this._eventHandlers.push(this.map.on("mouse-move", lang.hitch(this, this._onMouseMove)));
            // this._eventHandlers.push(this.map.on("mouse-move", lang.hitch(this, this._onMouseMove)));
            AppEvent.addAppEventListener(AppEvent.SWITCH_BASEMAP, lang.hitch(this, this.onSwitchBaseMap));
            AppEvent.addAppEventListener(AppEvent.ADD_TOP_MOST_LAYER, lang.hitch(this, this.onAddTopMostLayer));
        },
public/map/widgets/securityMap/SecurityMap.css
@@ -0,0 +1,34 @@
.mapBtn {
    background-color: #ffffff;
    width: 14vh;
    height: 4vh;
    position: relative;
    top: 3vh;
    right: -45vh;
    border-radius: 5px;
}
.insBtn {
    float: left;
}
.mapBtn a {
    line-height: 4vh;
    font-size: 13px;
    text-align: center;
    color: #757575;
    position: relative;
    left: 1.2vh;
    letter-spacing: 1.5px;
}
.mapBtn img {
    position: relative;
    left: 1.2vh;
    top: -1px;
}
a:hover {
    color: #3385FF;
    cursor: pointer;
}
public/map/widgets/securityMap/SecurityMap.js
@@ -144,8 +144,14 @@
        editToolbar: null,
        addPolygonEntitys: null,
        // 巡逻区域或者巡逻路线的描述
        routeOrRegionDescribe: null,
        //是否选中电子围栏区域
        isChecked: false,
        //当前处警员是否已有电子围栏
        isEngineer: false,
        //当前处警员是否有位置信息
        isPosition: true,
        // 用来记录巡逻区域或者巡逻路线的下标的
        patrolIndex: 0,
@@ -156,6 +162,10 @@
        y: 0,
        offset: null,
        moveThis: null,
        //基础路径
        //pathUrl: "http://localhost:89",
        pathUrl: "https://web.byisf.com/api/blade-jfpts",
        // 电子围栏需要新增的Id
        newElectronicFenceId: null,
@@ -193,6 +203,55 @@
        startup: function() {
            objThis._map.addLayer(objThis._siteLayer);
            var that = this;
            //删除电子围栏点击事件
            $(".mapBtn .delete").click(function() {
                //需选中电子围栏,然后进行删除
                if (that.isChecked) {
                    that.addPolygonEntitys.clear();
                    //删除数据库数据
                    //更新电子围栏数据
                    $.ajax({
                            url: that.pathUrl + '/enclosure/enclosure/deleteByAnumber',
                            type: 'POST',
                            dataType: 'JSON',
                            data: {
                                anumber: anumber
                            },
                            success: function(result) {
                                if (result.code == 200) {}
                            }
                        })
                        //修改围栏状态
                    that.isEngineer = false;
                } else {
                    layui.use('layer', function() {
                        layui.layer.msg('请先选中需要删除的电子围栏');
                    })
                }
            })
            //新增电子围栏
            $('.mapBtn .insert').click(function() {
                if (that.isPosition) {
                    if (that.isEngineer) {
                        layui.use('layer', function() {
                            layui.layer.msg('已存在电子围栏');
                        })
                    } else {
                        layui.use('layer', function() {
                            layui.layer.msg('请开始划分电子围栏');
                        })
                        that.polygonFlag = true;
                    }
                } else {
                    layui.use('layer', function() {
                        layui.layer.msg('当前处警员无位置信息,不能划分电子围栏');
                    })
                }
            })
        },
        //根据key 取value值
@@ -211,55 +270,55 @@
        //页面打开后,获取参数数据
        open: function() {
            var that = this;
            //获取父页面传过来的参数
            var lgtd = that.getQueryStringByKey('jd');
            var lttd = that.getQueryStringByKey('wd');
            if (lgtd == null || lgtd == "") {
                return;
            }
            anumber = that.getQueryStringByKey('code');
            realname = that.getQueryString('name');
            //所在位置标记
            that.addPoint(that.addEntitys, lgtd, lttd, './images/security.png');
            //获取当前处警员的电子围栏信息
            $.ajax({
                //https://web.byisf.com/api/blade-jfpts/enclosure/enclosure/selectEnclosureDetail
                url: 'http://localhost:89/enclosure/enclosure/selectEnclosureDetail',
                type: 'GET',
                dataType: 'JSON',
                data: {
                    anumber: anumber
                },
                success: function(result) {
                    //如果已有电子围栏信息,展示出围栏区域,并且可以编辑
                    if (result.code == 200) {
                        if (JSON.stringify(result.data) != "{}") {
                            var entityArr = [];
                            var coordinate = result.data.coordinate.match(/\(([^)]*)\)/).toString();
                            var a = coordinate.indexOf("(");
                            var b = coordinate.indexOf(")");
                            coordinate = coordinate.substring(a + 1, b) + "";
                            if (coordinate && coordinate != '') {
                                coordinate = coordinate.split(',');
                                for (var i = 0; i < coordinate.length; i++) {
                                    entityArr.push([Number(coordinate[i].split(' ')[0]), Number(coordinate[i].split(' ')[1])]);
            console.log(lgtd, 1111);
            //如果处警员的位置信息存在
            if (lgtd != null && lgtd != "") {
                //所在位置标记
                that.addPoint(that.addEntitys, lgtd, lttd, './images/security.png');
                //获取当前处警员的电子围栏信息
                $.ajax({
                    url: this.pathUrl + '/enclosure/enclosure/selectEnclosureDetail',
                    type: 'GET',
                    dataType: 'JSON',
                    data: {
                        anumber: anumber
                    },
                    success: function(result) {
                        //如果已有电子围栏信息,展示出围栏区域,并且可以编辑
                        if (result.code == 200) {
                            if (JSON.stringify(result.data) != "{}") {
                                var entityArr = [];
                                var coordinate = result.data.coordinate.match(/\(([^)]*)\)/).toString();
                                var a = coordinate.indexOf("(");
                                var b = coordinate.indexOf(")");
                                coordinate = coordinate.substring(a + 1, b) + "";
                                if (coordinate && coordinate != '') {
                                    coordinate = coordinate.split(',');
                                    for (var i = 0; i < coordinate.length; i++) {
                                        entityArr.push([Number(coordinate[i].split(' ')[0]), Number(coordinate[i].split(' ')[1])]);
                                    }
                                }
                                that.isEngineer = true;
                                that.addPolygon(that.addPolygonEntitys, entityArr);
                            } else {
                                //如果无电子围栏信息,则提示请编辑电子围栏信息
                                //编辑好电子围栏信息后,将当前处警员的电子围栏信息保存到数据库
                                that.newElectronicFenceId = null;
                                //that.polygonFlag = true;
                                that.newElectronicFenceId = anumber;
                            }
                            that.addPolygon(that.addPolygonEntitys, entityArr);
                        } else {
                            //如果无电子围栏信息,则提示请编辑电子围栏信息
                            //编辑好电子围栏信息后,将当前处警员的电子围栏信息保存到数据库
                            that.newElectronicFenceId = null;
                            layui.use('layer', function() {
                                layui.layer.msg('请开始划分电子围栏');
                            })
                            that.polygonFlag = true;
                            that.newElectronicFenceId = anumber;
                        }
                    }
                }
            })
                })
            } else {
                //当前处警员没有位置信息,则默认定位到市中心位置
                that.isPosition = false;
            }
            //调用点击事件
            that.clickHand();
@@ -298,8 +357,8 @@
                        //将数据存入数据库
                        $.ajax({
                            //url: 'https://web.byisf.com/api/blade-jfpts/enclosure/enclosure/updatee',
                            url: 'http://localhost:89/enclosure/enclosure/insertes',
                            url: that
                                .pathUrl + '/enclosure/enclosure/insertes',
                            type: 'POST',
                            dataType: 'JSON',
                            data: {
@@ -312,20 +371,25 @@
                            }
                        })
                    }
                    //修改电子围栏数据状态
                    that.isEngineer = true;
                    //修改电子围栏选中状态
                    that.isChecked = false;
                    //修改电子围栏编辑状态
                    that.polygonFlag = false;
                }
            }
        },
        // 鼠标点击事件
        clickHand: function() {
            var that = this;
            var self = this;
            self._map.onClick = mapClick;
            //点击事件
            function mapClick(evt) {
                debugger;
                var normalizedVal = webMercatorUtils.xyToLngLat(evt.mapPoint.x, evt.mapPoint.y);
                var y = self._map.toMap({
                    spatialReference: '4326',
@@ -354,11 +418,14 @@
                        // 保存当前点击得图形
                        // self.currentDrawing = evt.graphic;
                        that.isChecked = true;
                        self.modifyPolygon();
                        self.activateToolbar(evt.graphic);
                    } else { // 点击不在图形上
                        //修改电子围栏选中状态
                        that.isChecked = false;
                        self.modifyPolygon()
                    }
                }
@@ -386,30 +453,24 @@
                    x = ($(window).width() - 184);
                }
                if (self.tabIndex == 1 || self.tabIndex == 2) {
                if (self.polygonFlag == true) {
                    $('.securityMapTips').stop().show();
                    if (self.polygonFlag == true) {
                        $('.police-dispatching .tips').stop().show();
                        if (self.polygonData.length == 0) {
                            $('.police-dispatching .tips').text('单击左键开始绘制。');
                        } else {
                            if (e.clientY > ($(window).height() - 98)) {
                                y = ($(window).height() - 88);
                            }
                            $('.police-dispatching .tips').text('单击左键新增加点。单击右键完成绘制。');
                        }
                        $('.police-dispatching .tips').css({
                            'top': y,
                            'left': x,
                        })
                    if (self.polygonData.length == 0) {
                        $('.securityMapTips').text('单击左键开始绘制。');
                    } else {
                        $('.police-dispatching .tips').stop().hide();
                        if (e.clientY > ($(window).height() - 98)) {
                            y = ($(window).height() - 88);
                        }
                        $('.securityMapTips').text('单击左键新增加点。单击右键完成绘制。');
                    }
                    $('.securityMapTips').css({
                        'top': y,
                        'left': x,
                    })
                } else {
                    $('.police-dispatching .tips').stop().hide();
                    $('.securityMapTips').stop().hide();
                }
            })
        },
@@ -457,8 +518,7 @@
                //更新电子围栏数据
                $.ajax({
                    //url: 'https://web.byisf.com/api/blade-jfpts/enclosure/enclosure/updatee',
                    url: 'http://localhost:89/enclosure/enclosure/updatee',
                    url: this.pathUrl + '/enclosure/enclosure/updatee',
                    type: 'POST',
                    dataType: 'JSON',
                    data: {
@@ -507,44 +567,8 @@
        close: function() {},
        // 获取当前时间,以及昨天现在的时间
        getTime: function getTime() {
            var timestamp = Date.parse(new Date());
            // 当前时间
            var currentTime = new Date(timestamp);
            // 年
            var currentY = currentTime.getFullYear();
            // 月
            var currentM = currentTime.getMonth() + 1 < 10 ? '0' + (currentTime.getMonth() + 1) : currentTime.getMonth() + 1;
            // 日
            var currentD = currentTime.getDate() < 10 ? '0' + currentTime.getDate() : currentTime.getDate();
            // 时
            var currentH = currentTime.getHours() < 10 ? '0' + currentTime.getHours() : currentTime.getHours();
            // 分
            var currentDd = currentTime.getMinutes() < 10 ? '0' + currentTime.getMinutes() : currentTime.getMinutes();
            // 明天
            var tomorrowTime = new Date(timestamp - 60 * 60 * 24 * 1000);
            // 年
            var tomorrowY = tomorrowTime.getFullYear();
            // 月
            var tomorrowM = tomorrowTime.getMonth() + 1 < 10 ? '0' + (tomorrowTime.getMonth() + 1) : tomorrowTime.getMonth() + 1;
            // 日
            var tomorrowD = tomorrowTime.getDate() < 10 ? '0' + tomorrowTime.getDate() : tomorrowTime.getDate();
            // 时
            var tomorrowH = tomorrowTime.getHours() < 10 ? '0' + tomorrowTime.getHours() : tomorrowTime.getHours();
            // 分
            var tomorrowDd = tomorrowTime.getMinutes() < 10 ? '0' + tomorrowTime.getMinutes() : tomorrowTime.getMinutes();
            return {
                current: currentY + '-' + currentM + '-' + currentD + ' ' + currentH + ':' + currentDd,
                tomorrow: tomorrowY + '-' + tomorrowM + '-' + tomorrowD + ' ' + tomorrowH + ':' + tomorrowDd,
                month: currentM + currentD
            };
        },
        // 创建实体图层
        createEntitys: function(entitys, entityContent, name, item, lgtd, lttd, outlineColors) {
            var symbol = new esri.symbol.PictureMarkerSymbol(outlineColors, 33, 48);
            symbol.name = name;
            var pt = new Point(lgtd, lttd, new esri.SpatialReference({
public/map/widgets/securityMap/template.html
@@ -1 +1,16 @@
<div></div>
<div>
    <div class="mapBtn">
        <div class="insBtn">
            <img src="./images/add-0.png" style="width:14px;height:14px;">
            <a class=" insert " id="insertEngineeringMap ">新增&nbsp;|&nbsp;</a>
        </div>
        <div class="delBtn">
            <img src="./images/del.png" style="width:14px;height:14px;">
            <a class="delete " id="securityMapClearMap ">删除</a>
        </div>
    </div>
    <!-- 提示语 -->
    <div class="securityMapTips">
    </div>
</div>
public/map/widgets/supervisoryMap/FlareClusterLayer_v3.js
@@ -167,7 +167,7 @@
        }
      }
    },
    _mapClick: function (e) {//地图全局点击事件 标记不能点击
    _mapClick: function (e) { //地图全局点击事件 标记不能点击
      // console.log('地图全局点击事件');
      if (!e.target) {
@@ -278,7 +278,7 @@
              // area: 'auto',
              offset: posi,
              skin: 'flare',
              closeBtn: 0,//关闭按钮,可通过配置1和2来展示,0关闭
              closeBtn: 0, //关闭按钮,可通过配置1和2来展示,0关闭
              content: [url, 'no'],
              resize: false,
              scrollbar: false,
@@ -295,7 +295,7 @@
                  , endy = null;
                layero[0].style.position = 'absolute';
                downs = document.onmousedown = () => {//鼠标按下事件
                downs = document.onmousedown = () => { //鼠标按下事件
                  // console.log('down');//start
                  // downs = document.onmousedown = null;
                  var mx = window.event.clientX//鼠标初始位置
@@ -359,11 +359,11 @@
                }
              },
              end: function () {//关闭事件
              end: function () { //关闭事件
              }
            });
            that.layuiLayer.open({//第二个iframe
            that.layuiLayer.open({ //第二个iframe
              title: '',
              type: 2,
              shadeClose: true,
@@ -376,13 +376,13 @@
              offset: 'r',
              skin: 'flare',
              isOutAnim: false,
              closeBtn: 0,//关闭按钮,可通过配置1和2来展示,0关闭
              closeBtn: 0, //关闭按钮,可通过配置1和2来展示,0关闭
              content: ['./popup/html/FlareClusterLayer_v3 copy.html'],
              resize: false,
              scrollbar: false,
              // tipsMore: true, //允许多个tipe
              // content: num,
              success: function (layero, index) {//成功后添加全局点击关闭
              success: function (layero, index) { //成功后添加全局点击关闭
                // var z = document.onclick = ()=>{
                //   parent[0].layer.close(index);
                // //   // parent[0].layer.close(+index + 1);
@@ -396,15 +396,14 @@
            })
          })
        }
        if (mySelf.onceTimeMethod == null) {//防抖.限制时间内点击次数,否则会造成不能正确销毁前一个弹窗
        if (mySelf.onceTimeMethod == null) { //防抖.限制时间内点击次数,否则会造成不能正确销毁前一个弹窗
          var offsetMy = [+evt.screenY - 300 + 'px', +evt.screenX - 172.5 + 'px'];
          // console.log(evt.screenY);
          fCard(offsetMy, setdata);
          mySelf.onceTimeMethod = setTimeout(() => {
            mySelf.onceTimeMethod = null;
          }, mySelf.onceTime);
        } else {
        };
        } else {};
@@ -900,12 +899,16 @@
      this.singles.push(single);
      delete single.graphic;
      var symbol;
      console.log(single.onlineStatus, '移动事件');
      if (single.onlineStatus == 1) {
        symbol = new esri.symbol.PictureMarkerSymbol("./images/zx-jingbao.png", 40, 40);
      if (single.jtype == 1) {
        symbol = new esri.symbol.PictureMarkerSymbol("./images/yj-jingbao.png", 40, 40);
      } else {
        symbol = new esri.symbol.PictureMarkerSymbol("./images/dx-jingbao.png", 40, 40);
        if (single.onlineStatus == 1) {
          symbol = new esri.symbol.PictureMarkerSymbol("./images/zx-jingbao.png", 40, 40);
        } else {
          symbol = new esri.symbol.PictureMarkerSymbol("./images/dx-jingbao.png", 40, 40);
        }
      }
      var point = new Point(single[this.xPropertyName], single[this.yPropertyName], this.spatialRef);
      var attributes = lang.clone(single);
      var graphic = new Graphic(point, symbol, attributes, null);
@@ -998,11 +1001,11 @@
      //add a text element for the label to display the count and add to the group
      var shapeCenter = this._getShapeCenter(cluster.graphicShape);
      var textShape = groupShape.createText({
        x: shapeCenter.x,
        y: shapeCenter.y + (this.textSymbol.font.size / 2 - 2),
        text: cluster.clusterCount,
        align: 'middle'
      })
          x: shapeCenter.x,
          y: shapeCenter.y + (this.textSymbol.font.size / 2 - 2),
          text: cluster.clusterCount,
          align: 'middle'
        })
        .setFont({
          size: this.textSymbol.font.size,
          family: this.textSymbol.font.family,
@@ -1126,10 +1129,10 @@
      //create a transparent circle that contains the boundary of the flares, this is to make sure the mouse events don't fire moving in between flares
      var conCircleRadius = (center.x - (bbox.x - radius - buffer)) + radius; //get the radius of the circle to contain everything
      var containerCircle = groupShape.createCircle({
        cx: center.x,
        cy: center.y,
        r: conCircleRadius
      })
          cx: center.x,
          cy: center.y,
          r: conCircleRadius
        })
        //.setStroke({ width: 1, color: "000" })
        .setFill(new Color([0, 0, 0, 0]));
      containerCircle.rawNode.setAttribute("class", "flare-object cluster-object");
@@ -1430,11 +1433,11 @@
      var textShapes = [];
      for (var i = 0, len = lines.length; i < len; i++) {
        var textShape = tooltipGroup.createText({
          x: xPos,
          y: yPos + (i * 10),
          text: lines[i],
          align: 'middle'
        })
            x: xPos,
            y: yPos + (i * 10),
            text: lines[i],
            align: 'middle'
          })
          .setFill("#000")
          .setFont({
            size: 8,
@@ -1448,12 +1451,12 @@
      var rectPadding = 2;
      var textBox = tooltipGroup.getBoundingBox();
      var rectShape = tooltipGroup.createRect({
        x: textBox.x - rectPadding,
        y: textBox.y - rectPadding,
        width: textBox.width + (rectPadding * 2),
        height: textBox.height + (rectPadding * 2),
        r: 0
      })
          x: textBox.x - rectPadding,
          y: textBox.y - rectPadding,
          width: textBox.width + (rectPadding * 2),
          height: textBox.height + (rectPadding * 2),
          r: 0
        })
        .setFill(new Color([255, 255, 255, 0.9]))
        .setStroke({
          color: "#000",
@@ -1589,11 +1592,11 @@
      //Have to add the flare text after the flare group animation otherwise Edge just reloads the page and dies for some reason?
      if (this.shape.flareText) {
        var flareText = this.shape.createText({
          x: this.shape.flareText.location.x,
          y: this.shape.flareText.location.y,
          text: this.shape.flareText.text,
          align: 'middle'
        })
            x: this.shape.flareText.location.x,
            y: this.shape.flareText.location.y,
            text: this.shape.flareText.text,
            align: 'middle'
          })
          .setFill(layer.textSymbol.color)
          .setFont({
            size: this.shape.flareText.textSize,
src/main.js
@@ -25,6 +25,8 @@
import website from '@/config/website';
import crudCommon from '@/mixins/crud';
import * as echarts from 'echarts';
import audio from 'vue-mobile-audio';
Vue.use(audio);
Vue.prototype.$echarts = echarts;
// 注册全局crud驱动
window.$crudCommon = crudCommon;
src/page/index/logo.vue
@@ -385,31 +385,7 @@
          if (response.data.data.length > 0) {
            that.deviceId = response.data.data[0].id;
            that.form = response.data.data[0];
            newAxios
              .post(
                "/api_control",
                {},
                {
                  params: {
                    param: JSON.stringify({ PktType: "GetAccessToken" }),
                  },
                }
              )
              .then((res) => {
                newAxios
                  .get(
                    `https://web.byisf.com:18000/GetPlayUrl?deviceCode=${that.form.serialNumber}&chl=${that.form.channelNumber}`
                  )
                  .then((result) => {
                    axios({
                      method: "post",
                      url: `/api/blade-jfpts/rvideo/rVoids`,
                      params: {
                        url: result.data.data.flv,
                      },
                    }).then((resdata) => {});
                  });
              });
            if (
              response.data.data[0].waringType == "紧急求救" &&
              response.data.data[0].alarmId == userId
@@ -711,7 +687,6 @@
    aKeyToCall() {
      this.isActive = true;
      var that = this;
      if (this.recorder == null) {
        this.recorder = new Recorder({
@@ -737,7 +712,6 @@
    // 序列号后期待修改
    aKeyStopCall() {
      this.isActive = false;
      var newCallAxios = axios.create({
        baseURL: "https://web.byisf.com:18000",
        withCredentials: false,
@@ -745,6 +719,7 @@
          "Content-Type": "application/json;",
        },
      });
      var that = this;
      newCallAxios
@@ -759,12 +734,31 @@
        )
        .then((result) => {
          var formData = new FormData();
          var blob = that.recorder.getPCMBlob(); //获取pcm格式音频数据
          // that.recorder.downloadWAV("新文件");
          var blob = that.recorder.getPCMBlob(); //获取pcm格式音频数据
          //此处获取到blob对象后需要设置fileName满足当前项目上传需求,其它项目可直接传把blob作为file塞入formData
          var newbolb = new Blob([blob], { type: "audio/pcm" });
          var fileOfBlob = new File([newbolb], new Date().getTime() + ".pcm");
          formData.append("file", fileOfBlob);
          var wavBlob = that.recorder.getWAVBlob();
          var wavformData = new FormData();
          var wavform = new File([wavBlob], new Date().getTime() + ".wav");
          wavformData.append("file", wavform);
          axios({
            method: "post",
            url: "/api/blade-jfpts/xlfeedback/xlfeedback/put-objecty",
            data: wavformData,
            params: {
              jid: that.form.id,
            },
          }).then((resdata) => {
            console.log(resdata);
          });
          newCallAxios
            .post(`/api_control`, blob, {
              params: {
@@ -866,8 +860,38 @@
    },
    onDialogTableVisible() {
      var that = this;
      Recorder.getPermission().then(() => {});
      this.videoConversationReal = true;
      var userId = JSON.parse(
        window.localStorage.getItem("物联网安保云服务平台-userInfo")
      ).content.user_id;
      newAxios
        .post(
          "/api_control",
          {},
          {
            params: {
              param: JSON.stringify({ PktType: "GetAccessToken" }),
            },
          }
        )
        .then((res) => {
          newAxios
            .get(
              `https://web.byisf.com:18000/GetPlayUrl?deviceCode=${that.form.serialNumber}&chl=${that.form.channelNumber}`
            )
            .then((result) => {
              axios({
                method: "post",
                url: `/api/blade-jfpts/rvideo/rVoids`,
                params: {
                  url: result.data.data.flv,
                  uid: userId,
                },
              }).then((resdata) => {});
            });
        });
    },
  },
};
src/styles/media.scss
@@ -54,7 +54,7 @@
  left: 240px;
  padding: 0;
  width: calc(100% - 240px);
  height: calc(100% - 104px);
  height: calc(100% - 94px);
  box-sizing: border-box;
  overflow: hidden;
  transition: all 0.5s;
src/views/animalHeat/animalHeat.vue
@@ -205,11 +205,17 @@
    methods: {
      beforeOpen(done, type) {
      },
      //清空按钮
      searchReset() {
        //清空搜索框中的内容
        this.query = {};
        //清空this.$route.query
        this.$router.push({ query: {} });
        this.onLoad(this.page);
      },
      //搜索按钮
      searchChange(params, done) {
        console.log(params,222);
        this.query = params;
        this.page.currentPage = 1;
        this.onLoad(this.page, params);
@@ -265,7 +271,7 @@
          let status = this.$route.query.status==undefined? '':this.$route.query.status;
          let timeDesc = this.$route.query.timeDesc==undefined? '':this.$route.query.timeDesc;
          //window.open(`/api/blade-jfpts/animalHeat/animalHeat/getAnimalHeatStatis?begTime=${begTime}&endTime=${endTime}&status=${status}&timeDesc=${timeDesc}`);
          window.open(`http://localhost:8108/ureport/preview?_u=blade-animalHeat.statis.ureport.xml&begTime=${begTime}&endTime=${endTime}&status=${status}&timeDesc=${timeDesc}`);
          window.open(`https://web.byisf.com/api/blade-report/ureport/preview?_u=blade-animalHeat.statis.ureport.xml&begTime=${begTime}&endTime=${endTime}&status=${status}&timeDesc=${timeDesc}`);
        });
      },
      //修改行颜色
src/views/healthcode/healthcode.vue
@@ -232,7 +232,10 @@
      beforeOpen(done, type) {
      },
      searchReset() {
        //清空搜索框中的内容
        this.query = {};
        //清空this.$route.query
        this.$router.push({ query: {} });
        this.onLoad(this.page);
      },
      searchChange(params, done) {
@@ -316,7 +319,7 @@
          let type = this.$route.query.type==undefined? '':this.$route.query.type;
          let timeDesc = this.$route.query.timeDesc==undefined? '':this.$route.query.timeDesc;
          //window.open(`http://localhost:8108/ureport/excel?_u=blade-healthcode.statis.xml.ureport.xml&begTime=${begTime}&endTime=${endTime}&type=${type}&timeDesc=${timeDesc}`);
          window.open(`http://localhost:8108/ureport/preview?_u=blade-healthcode.statis.xml.ureport.xml&begTime=${begTime}&endTime=${endTime}&type=${type}&timeDesc=${timeDesc}`);
          window.open(`https://web.byisf.com/api/blade-report/ureport/preview?_u=blade-healthcode.statis.xml.ureport.xml&begTime=${begTime}&endTime=${endTime}&type=${type}&timeDesc=${timeDesc}`);
        });
      },
      onLoad(page, params = {}) {
src/views/parcel/parcel.vue
@@ -235,7 +235,10 @@
        done();
      },
      searchReset() {
        //清空搜索框中的内容
        this.query = {};
        //清空this.$route.query
        this.$router.push({ query: {} });
        this.onLoad(this.page);
      },
      searchChange(params, done) {
@@ -315,7 +318,7 @@
          let decisioDiagramResult = this.$route.query.decisioDiagramResult==undefined? '':this.$route.query.decisioDiagramResult;
          let timeDesc = this.$route.query.timeDesc==undefined? '':this.$route.query.timeDesc;
          //window.open(`http://localhost:8108/ureport/excel?_u=blade-parcel.statis.ureport.xml&startTime=${startTime}&endTime=${endTime}&decisioDiagramResult=${decisioDiagramResult}&timeDesc=${timeDesc}`);
          window.open(`http://localhost:8108/ureport/preview?_u=blade-parcel.statis.ureport.xml&startTime=${startTime}&endTime=${endTime}&decisioDiagramResult=${decisioDiagramResult}&timeDesc=${timeDesc}`);
          window.open(`https://web.byisf.com/api/blade-report/ureport/preview?_u=blade-parcel.statis.ureport.xml&startTime=${startTime}&endTime=${endTime}&decisioDiagramResult=${decisioDiagramResult}&timeDesc=${timeDesc}`);
        });
      },
      onLoad(page, params = {}) {
src/views/parcel/parcelKind.vue
@@ -217,7 +217,10 @@
        done();
      },
      searchReset() {
        //清空搜索框中的内容
        this.query = {};
        //清空this.$route.query
        this.$router.push({ query: {} });
        this.onLoad(this.page);
      },
      searchChange(params, done) {
@@ -291,7 +294,8 @@
          let decisioDiagramResult = this.$route.query.decisioDiagramResult==undefined? '':this.$route.query.decisioDiagramResult;
          let timeDesc = this.$route.query.timeDesc;
          //window.open(`http://localhost:8108/ureport/excel?_u=blade-parcelKind.statis.ureport.xml&startTime=${startTime}&endTime=${endTime}&decisioDiagramResult=${decisioDiagramResult}&timeDesc=${timeDesc}`);
          window.open(`http://localhost:8108/ureport/preview?_u=blade-parcelKind.statis.ureport.xml&startTime=${startTime}&endTime=${endTime}&decisioDiagramResult=${decisioDiagramResult}&timeDesc=${timeDesc}`);
          //window.open(`http://localhost:8108/ureport/preview?_u=blade-parcelKind.statis.ureport.xml&startTime=${startTime}&endTime=${endTime}&decisioDiagramResult=${decisioDiagramResult}&timeDesc=${timeDesc}`);
          window.open(`https://web.byisf.com/api/blade-report/ureport/preview?_u=blade-parcelKind.statis.ureport.xml&startTime=${startTime}&endTime=${endTime}&decisioDiagramResult=${decisioDiagramResult}&timeDesc=${timeDesc}`);
        });
      },
      onLoad(page, params = {}) {
src/views/policeTracking/policeTracking.vue
@@ -2,7 +2,7 @@
  <el-row>
    <el-col :span="12">
      <div style="background: #fff; height: 100%">
        <el-card class="trackClass">
        <el-card class="trackClass" style="overflow-y: auto">
          <div
            style="margin-top: 20px"
            role="tab"
@@ -295,16 +295,19 @@
              class="el-collapse-item__header focusing is-active"
            >
              <div class="avue-group__header avue-group">
                <i class="el-icon-document avue-group__icon"></i>
                <i class="el-icon-phone avue-group__icon"></i>
                <h1 class="avue-group__title">对讲信息</h1>
              </div>
            </div>
          </div>
          <el-card class="receiving-alarm-box">
            <div v-for="(item, index) in audios" :key="index" style="margin: 10px 0; width: 100%; height: 40px;">
              <audio :src="item.address" style="width: 40%; height: 100%;"  controls></audio>
            </div>
          <el-card class="audios-box">
            <m-audio
              :block="false"
              v-for="(item, index) in audios"
              :key="index"
              :src="item.address"
            ></m-audio>
          </el-card>
          <div
@@ -362,39 +365,10 @@
            </el-row>
            <el-row>
              <el-col span="12">
                <el-form-item label="性别">
                  <el-input
                    disabled="true"
                    v-model="security.sex"
                    autocomplete="off"
                  ></el-input>
                </el-form-item>
              </el-col>
              <el-col span="12">
                <el-form-item label="年龄">
                  <el-input
                    disabled="true"
                    v-model="security.age"
                    autocomplete="off"
                  ></el-input>
                </el-form-item>
              </el-col>
            </el-row>
            <el-row>
              <el-col span="12">
                <el-form-item label="联系电话">
                  <el-input
                    disabled="true"
                    v-model="security.phone"
                    autocomplete="off"
                  ></el-input>
                </el-form-item>
              </el-col>
              <el-col span="12">
                <el-form-item label="家庭住址">
                  <el-input
                    disabled="true"
                    v-model="security.address"
                    autocomplete="off"
                  ></el-input>
                </el-form-item>
@@ -432,7 +406,7 @@
            <el-input
              disabled="true"
              type="textarea"
              v-model="security.snumber"
              v-model="security.describe"
              autocomplete="off"
            ></el-input>
@@ -455,23 +429,16 @@
                  </div>
                </div>
              </div>
              <div>
              <el-card class="scene-image-box">
                <el-image
                  :src="src"
                  v-for="(item, index) in imgSrc"
                  :key="index"
                  :src="item"
                  :preview-src-list="srcList"
                  style="width: 150px; margin-left: 5px"
                  v-show="imgSrc.length > 0"
                ></el-image>
                <el-image
                  :src="src"
                  :preview-src-list="srcList"
                  style="width: 150px; margin-left: 5px"
                ></el-image>
                <el-image
                  :src="src"
                  :preview-src-list="srcList"
                  style="width: 150px; margin-left: 5px"
                ></el-image>
              </div>
                <span v-show="imgSrc.length == 0">暂无现场图片</span>
              </el-card>
            </div>
            <div class="block">
              <div
@@ -493,11 +460,13 @@
                </div>
              </div>
              <div>
                <el-image :src="src" style="width: 150px; margin-left: 5px">
                  <div slot="placeholder" class="image-slot">
                    加载中<span class="dot">...</span>
                  </div>
                </el-image>
                <video
                  :src="feedbackVideo"
                  style="width: 100%; height: 100%; object-fit: fill"
                  controls
                  v-show="feedbackVideo != ''"
                ></video>
                <span v-show="feedbackVideo == ''">暂无现场视频</span>
              </div>
            </div>
          </div>
@@ -533,6 +502,7 @@
        :visible.sync="oldVideoSatart"
        :close-on-press-escape="false"
        :close-on-click-modal="false"
        @opened="oldOpenVideo"
        @close="vaddress = ''"
        append-to-body
      >
@@ -544,7 +514,9 @@
          id="old_video"
          style="width: 100%; height: 100%; object-fit: fill"
          controls
          v-show="vaddress != ''"
        ></video>
        <span v-show="vaddress == ''">暂无历史视频</span>
      </el-dialog>
    </el-col>
  </el-row>
@@ -552,7 +524,7 @@
<script>
import axios from "axios";
import { getclient } from "@/api/real/real";
export default {
  inject: ["reload"],
  data() {
@@ -560,21 +532,9 @@
      flag: true,
      selectOptions: [],
      receivingList: [],
      security: {
        snumber: 20018,
        sname: "金同涛",
        sex: "男",
        age: 23,
        phone: 1387975426,
        address: "江西省南昌市西湖区",
      },
      src:
        "https://cube.elemecdn.com/6/94/4d3ea53c084bad6931a56d5158a48jpeg.jpeg",
      srcList: [
        "https://cube.elemecdn.com/6/94/4d3ea53c084bad6931a56d5158a48jpeg.jpeg",
        "https://cube.elemecdn.com/6/94/4d3ea53c084bad6931a56d5158a48jpeg.jpeg",
        "https://fuss10.elemecdn.com/8/27/f01c15bb73e1ef3793e64e6b7bbccjpeg.jpeg",
      ],
      security: {},
      imgSrc: [],
      srcList: [],
      form: {},
      itemOption: {
        menuBtn: false,
@@ -634,6 +594,7 @@
      oldVideoSatart: false,
      vaddress: null,
      audios: [],
      feedbackVideo: "",
    };
  },
  created() {
@@ -645,6 +606,7 @@
  mounted() {
    this.getList();
    this.getAudios();
    this.getImgAndVideo();
    this.$refs.mapDiv.onload = () => {
      window.frames[0].init("AlertSecurity", {
        x: this.form.jd,
@@ -889,13 +851,38 @@
        this.audios = resdata.data.data.records;
      });
    },
    getImgAndVideo() {
      axios({
        method: "post",
        url: "/api/blade-jfpts/feedback/feedback/selectFeedEdit",
        params: {
          jid: this.form.id,
        },
      }).then((resdata) => {
        console.log(resdata.data.data[0], 56569);
        this.security = resdata.data.data[0].List[0];
        this.imgSrc = resdata.data.data[0].tp;
        this.srcList = resdata.data.data[0].tp;
        this.feedbackVideo = resdata.data.data[0].sp[0];
      });
    },
    oldOpenVideo() {
      getclient(this.form.id).then((res) => {
        if (res.data.data.vaddress != "") {
           this.vaddress = res.data.data.vaddress;
        }
      });
    }
  },
};
</script>
<style lang="scss">
<style scoped lang="scss">
.el-col {
  height: 95%;
  height: calc(100% - 5px);
}
.trackClass {
@@ -912,4 +899,27 @@
    padding: 0 10px !important;
  }
}
.audios-box,
.scene-image-box {
  line-height: 32px !important;
  height: auto;
  max-height: 200px;
  overflow-y: auto;
  .el-card__body {
    display: flex;
    padding: 0 10px !important;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    .x-audio-wrap.inline {
      margin: 10px;
    }
    .el-image {
      margin: 10px;
      width: 160px;
      height: 80px;
    }
  }
}
</style>
src/views/realTimePolice/real.vue
@@ -777,7 +777,10 @@
    },
    searchReset() {
      this.activeClass = 3;
      //清空搜索框中的内容
      this.query = {};
      //清空this.$route.query
      this.$router.push({ query: {} });
      this.onLoad(this.page);
    },
    searchChange(params, done) {
@@ -1383,11 +1386,6 @@
        },
      });
      var wavAxios = axios.create({
        baseURL: "https://web.byisf.com",
        withCredentials: false,
      });
      var that = this;
      newCallAxios
@@ -1503,31 +1501,11 @@
            ? ""
            : this.$route.query.timeDesc;
        window.open(
          `http://localhost:8108/ureport/preview?_u=blade-alarm.statis.ureport.xml&beginTime=${beginTime}&endTime=${endTime}&waringType=${waringType}&timeDesc=${timeDesc}`
          `https://web.byisf.com/api/blade-report/ureport/preview?_u=blade-alarm.statis.ureport.xml&beginTime=${beginTime}&endTime=${endTime}&waringType=${waringType}&timeDesc=${timeDesc}`
        );
        //window.open(`http://localhost:8108/ureport/excel?_u=blade-alarm.statis.ureport.xml&beginTime=${beginTime}&endTime=${endTime}&waringType=${waringType}&timeDesc=${timeDesc}`);
      });
    },
    getStartTime() {
      if (
        this.$route.query.startTime != undefined &&
        this.$route.query.startTime != null &&
        this.$route.query.startTime != ""
      ) {
        return this.$route.query.startTime;
      }
      return "";
    },
    getEndTime() {
      if (
        this.$route.query.endTime != undefined &&
        this.$route.query.endTime != null &&
        this.$route.query.endTime != ""
      ) {
        return this.$route.query.endTime;
      }
      return "";
    },
    }
  },
};
</script>
src/views/report/announcementReport.vue
@@ -1,5 +1,5 @@
<template>
<iframe src="http://localhost:8108/ureport/preview?_u=blade-notice.ureport.xml" style="width: 100%;height: 100%" frameborder="0"></iframe>
<iframe src="https://web.byisf.com/api/blade-report/ureport/preview?_u=blade-notice.ureport.xml" style="width: 100%;height: 100%" frameborder="0"></iframe>
</template>
<script>
src/views/report/reportConfiguration.vue
@@ -1,5 +1,5 @@
<template>
<iframe src="http://localhost:8108/ureport/designer" style="width: 100%;height: 100%" frameborder="0"></iframe>
<iframe src="https://web.byisf.com/api/blade-report/ureport/designer" style="width: 100%;height: 100%" frameborder="0"></iframe>
</template>
<script>
src/views/report/reportlist copy.vue
New file
@@ -0,0 +1,203 @@
<template>
  <basic-container>
    <avue-crud :option="option"
               :table-loading="loading"
               :data="data"
               ref="crud"
               v-model="form"
               :page.sync="page"
               :permission="permissionList"
               @row-del="rowDel"
               @search-change="searchChange"
               @search-reset="searchReset"
               @selection-change="selectionChange"
               @current-change="currentChange"
               @size-change="sizeChange"
               @refresh-change="refreshChange"
               @on-load="onLoad">
      <template slot="menuLeft">
        <el-button type="danger"
                   size="small"
                   icon="el-icon-delete"
                   plain
                   @click="handleDelete">删 除
        </el-button>
      </template>
      <template slot-scope="scope" slot="menu">
        <el-button
          type="text"
          icon="el-icon-edit-outline"
          size="small"
          @click.stop="handleDesign(scope.row.name)"
          v-if="userInfo.role_name.includes('admin')"
        >设计
        </el-button>
        <el-button
          type="text"
          icon="el-icon-view"
          size="small"
          @click.stop="handlePreview(scope.row.name)"
          v-if="userInfo.role_name.includes('admin')"
        >预览
        </el-button>
      </template>
      <template slot-scope="{row}" slot="name">
        <el-tag style="cursor:pointer" @click="handlePreview(row.name)">{{ row.name }}</el-tag>
      </template>
    </avue-crud>
  </basic-container>
</template>
<script>
import {getList, remove} from "@/api/report/report";
import {mapGetters} from "vuex";
export default {
  data() {
    return {
      form: {},
      selectionList: [],
      query: {},
      loading: true,
      page: {
        pageSize: 10,
        currentPage: 1,
        total: 0
      },
      option: {
        height: 'auto',
        calcHeight: 30,
        tip: false,
        searchShow: true,
        searchMenuSpan: 6,
        border: true,
        index: true,
        selection: true,
        viewBtn: true,
        dialogClickModal: false,
        column: [
          {
            label: "文件名",
            prop: "name",
            search: true,
            slot: true,
          },
          {
            label: "创建时间",
            prop: "createTime",
          },
          {
            label: "更新时间",
            prop: "updateTime",
          }
        ]
      },
      data: []
    };
  },
  computed: {
    ...mapGetters(["userInfo", "permission"]),
    permissionList() {
      return {
        addBtn: false,
        viewBtn: false,
        delBtn: true,
        editBtn: false
      };
    },
    ids() {
      let ids = [];
      this.selectionList.forEach(ele => {
        ids.push(ele.id);
      });
      return ids.join(",");
    }
  },
  methods: {
    handlePreview(name) {
      this.$router.push({path: `/myiframe/urlPath?name=preview-${name}&src=${this.website.reportUrl}/preview?_u=blade-${name}`});
    },
    handleDesign(name) {
      this.$router.push({path: `/myiframe/urlPath?name=designer-${name}&src=${this.website.reportUrl}/designer?_u=blade-${name}`});
    },
    rowDel(row) {
      this.$confirm("确定将选择数据删除?", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      })
        .then(() => {
          return remove(row.id);
        })
        .then(() => {
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!"
          });
        });
    },
    searchReset() {
      this.query = {};
      this.onLoad(this.page);
    },
    searchChange(params, done) {
      this.query = params;
      this.page.currentPage = 1;
      this.onLoad(this.page, params);
      done();
    },
    selectionChange(list) {
      this.selectionList = list;
    },
    selectionClear() {
      this.selectionList = [];
      this.$refs.crud.toggleSelection();
    },
    handleDelete() {
      if (this.selectionList.length === 0) {
        this.$message.warning("请选择至少一条数据");
        return;
      }
      this.$confirm("确定将选择数据删除?", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      })
        .then(() => {
          return remove(this.ids);
        })
        .then(() => {
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!"
          });
          this.$refs.crud.toggleSelection();
        });
    },
    currentChange(currentPage) {
      this.page.currentPage = currentPage;
    },
    sizeChange(pageSize) {
      this.page.pageSize = pageSize;
    },
    refreshChange() {
      this.onLoad(this.page, this.query);
    },
    onLoad(page, params = {}) {
      this.loading = true;
      getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
        const data = res.data.data;
        this.page.total = data.total;
        this.data = data.records;
        this.loading = false;
        this.selectionClear();
      });
    }
  }
};
</script>
<style>
</style>
src/views/report/reportlist.vue
@@ -115,10 +115,10 @@
  },
  methods: {
    handlePreview(name) {
      this.$router.push({path: `/myiframe/urlPath?name=preview-${name}&src=${this.website.reportUrl}/preview?_u=blade-${name}`});
      this.$router.push({path: `/myiframe/urlPath?name=preview-${name}&src=${this.website.reportUrl}/blade-report/preview?_u=blade-${name}`});
    },
    handleDesign(name) {
      this.$router.push({path: `/myiframe/urlPath?name=designer-${name}&src=${this.website.reportUrl}/designer?_u=blade-${name}`});
      this.$router.push({path: `/myiframe/urlPath?name=designer-${name}&src=${this.website.reportUrl}/blade-report/designer?_u=blade-${name}`});
    },
    rowDel(row) {
      this.$confirm("确定将选择数据删除?", {
src/views/security/security.vue
@@ -251,15 +251,27 @@
      //打开地图
      handleMap(row) {
        var that =this;
        that.baseUrl = `/map/index.html?ISinit=1&openid=SecurityMap&jd=${row.jd}&wd=${row.wd}&code=${row.code}&name=${row.realName}`;
        this.showMap=true;
        this.$refs.securityMap.onload = () => {
          if (window.frames[0].init) {
            window.frames[0].init("SecurityMap", {
                x: row.jd,
                y: row.wd,
                code:row.code
            });
            if(row.jd==""){
              //如果处警员无位置信息,则赋值一个默认数据,否则地图无法加载
              window.frames[0].init("SecurityMap", {
                              x: "115.862321",
                              y: "28.591108",
                              code:row.code
                          });
            }else{
              window.frames[0].init("SecurityMap", {
                              x: row.jd,
                              y: row.wd,
                              code:row.code
                          });
            }
          } else {
            console.log(`没有找到到window.frames[0].init`)
          }
src/views/supervisoryConsole/card.vue
@@ -29,8 +29,7 @@
      style="
        margin-top: 10px;
        display: flex;
        justify-content: center;
        align-items: center;
        justify-content: left;
        flex-wrap: wrap;
      "
    >
@@ -53,7 +52,7 @@
            "
          >
            <div>{{ item.deviceName }}</div>
            <div>{{ item.street }}</div>
            <div style="width: 80%;">{{ item.street }}</div>
            <div class="cet">
              {{
@@ -130,9 +129,7 @@
        this.loading = false;
      }, 2000);
    },
    siteStatus(value, e) {
      console.log(this.radio, value);
    },
    inputSearchBtn() {
      this.getEquipmentLists();
    },
@@ -286,8 +283,7 @@
  height: 172px !important;
  box-sizing: border-box;
  margin-bottom: 20px !important;
  min-width: 368px;
  max-width: 370px;
  width: 20% !important;
  a {
    width: 100%;
    height: 100%;