南昌市物联网技防平台-前端
liuyg
2021-04-20 c6796cb12ca7aa0717349ca185ece091acdd2bbc
Merge branch 'master' of http://192.168.0.105:10010/r/jfpt-Vue
13 files modified
1050 ■■■■■ changed files
public/map/widgets/securityMap/SecurityMap.js 551 ●●●● patch | view | raw | blame | history
src/api/client/client.js 10 ●●●●● patch | view | raw | blame | history
src/page/index/logo.vue 28 ●●●● patch | view | raw | blame | history
src/views/animalHeat/animalHeat.vue 4 ●●●● patch | view | raw | blame | history
src/views/clientManagement/clientManagement.vue 81 ●●●●● patch | view | raw | blame | history
src/views/healthcode/healthcode.vue 4 ●●●● patch | view | raw | blame | history
src/views/parcel/parcel.vue 2 ●●● patch | view | raw | blame | history
src/views/parcel/parcelKind.vue 4 ●●●● patch | view | raw | blame | history
src/views/realTimePolice/real.vue 277 ●●●● patch | view | raw | blame | history
src/views/security/security.vue 42 ●●●● patch | view | raw | blame | history
src/views/supervisoryConsole/card.vue 37 ●●●● patch | view | raw | blame | history
src/views/system/cs.vue 6 ●●●●● patch | view | raw | blame | history
src/views/zc/zc.vue 4 ●●●● patch | view | raw | blame | history
public/map/widgets/securityMap/SecurityMap.js
@@ -3,18 +3,18 @@
 * @Version: 1.0
 * @Author: yangsx
 * @Date: 2019-12-09 19:01:40
 * @LastEditors: song
 * @LastEditTime: 2021-02-25 13:59:29
 * @LastEditors: yangsx
 * @LastEditTime: 2019-12-14 14:44:57
 */
define([
    "dojo",
    "dojo/_base/declare",
    "dojo/_base/lang",
    "base/BaseWidget",
    "dojo/text!widgets/SecurityMap/template.html",
    "dojo/text!widgets/securityMap/template.html",
    "base/AppEvent",
    "base/ConfigData",
    "widgets/realTimePolice/config",
    "widgets/securityMap/config",
    "dojo/dom",
    "dojo/dom-construct",
    "dojo/dom-attr",
@@ -31,8 +31,12 @@
    "esri/tasks/query",
    "esri/tasks/QueryTask",
    "esri/Color",
    "esri/toolbars/edit",
    "esri/graphic",
    "esri/geometry/Point",
    "esri/geometry/Polyline",
    "esri/geometry/Polygon",
    "esri/geometry/Extent",
    "esri/tasks/FeatureSet",
    "esri/renderers/HeatmapRenderer",
    "esri/symbols/SimpleLineSymbol",
@@ -55,9 +59,8 @@
    "esri/layers/ImageParameters",
    "esri/geometry/geometryEngine",
    "esri/dijit/PopupTemplate",
    "widgets/SecurityMap/FlareClusterLayer_v3",
    "dojo/domReady!",
    "widgets/realTimePolice/LayUIDataTable"
    "widgets/securityMap/FlareClusterLayer_v3",
    "dojo/domReady!"
], function(
    dojo,
    declare,
@@ -83,8 +86,12 @@
    Query,
    QueryTask,
    Color,
    Edit,
    Graphic,
    Point,
    Polyline,
    Polygon,
    Extent,
    FeatureSet,
    HeatmapRenderer,
    SimpleLineSymbol,
@@ -112,11 +119,9 @@
    var Widget = declare([BaseWidget], {
        widgetName: "SecurityMap",
        label: "处警队伍管理",
        templateString: template,
        _map: null,
        objThis: null,
        // 现场图层
        _siteLayer: new GraphicsLayer(),
        layuiLayer: null,
        layuiLadate: null,
@@ -126,25 +131,18 @@
        addEntitys: null,
        entitysData: [],
        // 是否派发保安的 文字
        treatmentIndex: null,
        securityFlag: false,
        editParentInd: null,
        // 存储新增点,线,面,数据的地方
        polygonData: [],
        polygonFlag: false,
        editToolbar: null,
        addPolygonEntitys: null,
        // 所有的面图层
        entityPolygonAll: null,
        // 用来存储区域名称
        globalRegionName: null,
        // 用来区域得最大最小经纬度
        currentDrawing: [],
        // 存储新增点,线,面,数据的地方
        polygonData: [],
        polygonFlag: false,
        editToolbar: null,
        addPolygonEntitys: null,
        // 巡逻区域或者巡逻路线的描述
        routeOrRegionDescribe: null,
@@ -158,200 +156,429 @@
        y: 0,
        offset: null,
        moveThis: null,
        // 电子围栏需要新增的Id
        newElectronicFenceId: null,
        // 新增路线时,派发人员,人员名称,以及人员id
        peopleRealName: null,
        pepleRealId: null,
        anumber: null,
        realname: null,
        //存放聚合实体
        clusterLayer: null,
        constructor: function(options, srcRefNode) {
            debugger;
            console.log("option=" + options);
            this._map = options.map;
            objThis = this;
            this.addEntitys = new GraphicsLayer({ id: 'addEntitys' });
            this.addEntitys = new GraphicsLayer({
                id: 'addEntitys'
            });
            // 添加点面线的图层
            this.addPolygonEntitys = new GraphicsLayer({ id: 'addPolygonEntitys' });
            this.addPolygonEntitys = new GraphicsLayer({
                id: 'addPolygonEntitys'
            });
            // 添加所有图层的地方
            this.entityPolygonAll = new GraphicsLayer({ id: 'entityPolygonAll' });
            this.entityPolygonAll = new GraphicsLayer({
                id: 'entityPolygonAll'
            });
            this._map.addLayer(this.addEntitys);
            this._map.addLayer(this.addPolygonEntitys);
            this._map.addLayer(this.entityPolygonAll);
        },
        startup: function() {
            objThis._map.addLayer(objThis._siteLayer);
        },
        //根据key 取value值
        getQueryStringByKey: function(key) {
            return (document.location.search.match(new RegExp("(?:^\\?|&)" + key + "=(.*?)(?=&|$)")) || ['', null])[1];
        },
        //带有中文的解码
        getQueryString: function(name) {
            var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
            var r = window.location.search.substr(1).match(reg);
            if (r != null) return decodeURI(r[2]);
            return null;
        },
        //页面打开后,获取参数数据
        open: function() {
            var that = this;
            // 保安出警管理表格中点击事件
            $('.police-dispatching .police-container .police-container-policeforce .table .tbody tbody').off('click', 'input').on('click', 'input', function(event) {
                event.stopPropagation();
                var lgtd = Number($(this).parent().parent().attr('lgtd'));
                var lttd = Number($(this).parent().parent().attr('lttd'));
                var position = new esri.geometry.Point(lgtd, lttd, new esri.SpatialReference({ wkid: 4326 })); //根据输入坐标信息找地图上的点
                that.newElectronicFenceId = null;
                that._map.centerAndZoom(position, 18); //缩放,10是缩放级别,可以自定义,数值越大缩放越大
                var graphic = that.entityPolygonAll.graphics;
                for (var i = 0; i < graphic.length; i++) {
                    if (graphic[i].objId.id == $(this).attr('resultid')) {
                        if (graphic[i].geometry.rings[0].length > 0) {
                            that.polygonFlag = false;
                            that.electronicFence();
                            that.activateToolbar(graphic[i]);
            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])]);
                                }
                            }
                            that.addPolygon(that.addPolygonEntitys, entityArr);
                        } else {
                            //如果无电子围栏信息,则提示请编辑电子围栏信息
                            //编辑好电子围栏信息后,将当前处警员的电子围栏信息保存到数据库
                            that.newElectronicFenceId = null;
                            layui.use('layer', function() {
                                layui.layer.msg('请开始划分电子围栏');
                            })
                            that.polygonFlag = true;
                            that.newElectronicFenceId = graphic[i].objId;
                            that.newElectronicFenceId = anumber;
                        }
                    }
                }
            })
            $('.police-dispatching .police-container .police-container-policeforce .table .tbody tbody').off('click', 'tr').on('click', 'tr', function(event) {
                event.stopPropagation();
                var lgtd = Number($(this).attr('lgtd'));
                var lttd = Number($(this).attr('lttd'));
                var position = new esri.geometry.Point(lgtd, lttd, new esri.SpatialReference({ wkid: 4326 })); //根据输入坐标信息找地图上的点
            //调用点击事件
            that.clickHand();
                that._map.centerAndZoom(position, 18); //缩放,10是缩放级别,可以自定义,数值越大缩放越大
                var snumber = $(this).attr('term-snumber');
                var url = './popup/html/personnel-information-management.html?id=' + code;
                layui.use('layer', function() {
                    that.layuiLayer = layui.layer;
                    that.layuiLayer.config({
                        extend: 'myskin/personnel-information-management.css'
                    });
                    that.layuiLayer.close(that.layuiLayer.index);
                    that.layuiLayer.open({
                        title: '保安人员信息',
                        type: 2,
                        shadeClose: true,
                        shade: false,
                        maxmin: false, //开启最大化最小化按钮
                        area: ['400px', '220px'],
                        offset: 'auto',
                        skin: 'personnel-information-management',
                        content: url,
                        closeBtn: 1,
                    });
                })
            })
        },
        open: function() {
            var that = this;
            debugger;
            $.ajax({
                url: '/api/blade-jfpts/alarm/alarm/listAll?',
                type: 'get',
                dataType: 'JSON',
                success: function(data) {
                    var datas = data.data;
                    for (var i = 0; i < datas.length; i++) {
                        datas[i].x = Number(datas[i].jd);
                        datas[i].y = Number(datas[i].wd);
            //鼠标右击事件
            document.getElementById('mainMapWidget').onmousedown = function(event) {
                if (event.button == 2) {
                    if (that.polygonData.length < 2) {
                        layui.use('layer', function() {
                            layui.layer.msg('不能形成区域,请继续划分!!!')
                        })
                        return;
                    }
                    debugger;
                    that.flareClusterLayer(datas);
                    if (that.polygonFlag == true) {
                        // 勾画最后一个点
                        var normalizedVal = webMercatorUtils.xyToLngLat(event.mapPoint.x, event.mapPoint.y);
                        that.polygonData.push([normalizedVal[0], normalizedVal[1]]);
                        // 声明空字符串,存储数据
                        var dataStr = '';
                        var data = null;
                        if (that.patrolIndex == 1) {
                            that.addPolyline(that.addPolygonEntitys, that.polygonData);
                            // 获取数据
                            data = that.addPolygonEntitys.graphics[0].geometry.paths[0];
                        } else {
                            that.addPolygon(that.addPolygonEntitys, that.polygonData);
                            // 获取数据
                            data = that.addPolygonEntitys.graphics[0].geometry.rings[0];
                        }
                        // 组装数据
                        for (var i = 0; i < data.length; i++) {
                            dataStr += (data[i][0] + ' ' + data[i][1] + ',');
                        }
                        dataStr = dataStr.substring(0, dataStr.length - 1);
                        //将数据存入数据库
                        $.ajax({
                            //url: 'https://web.byisf.com/api/blade-jfpts/enclosure/enclosure/updatee',
                            url: 'http://localhost:89/enclosure/enclosure/insertes',
                            type: 'POST',
                            dataType: 'JSON',
                            data: {
                                aname: realname,
                                anumber: anumber,
                                routeInfo: dataStr
                            },
                            success: function(result) {
                                if (result.code == 200) {}
                            }
                        })
                    }
                    that.polygonFlag = false;
                }
            });
        },
        close: function() {
            }
        },
        // 鼠标点击事件
        clickHand: function() {},
        clickHand: function() {
        //聚合图层事件
        flareClusterLayer: function(datas) {
            debugger;
            var self = this;
            self._map.onClick = mapClick;
            var that = this;
            function mapClick(evt) {
                debugger;
                var normalizedVal = webMercatorUtils.xyToLngLat(evt.mapPoint.x, evt.mapPoint.y);
                var y = self._map.toMap({
                    spatialReference: '4326',
                    type: "point",
                    x: evt.screenPoint.x,
                    y: evt.screenPoint.y,
                });
            var preClustered = false;
            var displaySingleFlaresAtCount = 10;
            var areaDisplayMode = "";
            // var allData = JSON.parse(DATA);
            // DataManager.setData(allData);
            //init the layer, more options are available and explained in the cluster layer constructor
            that.clusterLayer = new FlareClusterLayer({
                id: "flare-cluster-layer",
                spatialReference: new esri.SpatialReference({ "wkid": 4326 }),
                subTypeFlareProperty: "facilityType",
                singleFlareTooltipProperty: "name",
                displaySubTypeFlares: true,
                displaySingleFlaresAtCount: displaySingleFlaresAtCount,
                flareShowMode: "mouse",
                preClustered: preClustered,
                clusterRatio: 75,
                clusterAreaDisplay: areaDisplayMode,
                clusteringBegin: function() {
                    console.log("clustering begin");
                },
                clusteringComplete: function() {
                    console.log("clustering complete");
                // 编辑中的
                if (self.polygonFlag == true) {
                    if (self.polygonData.length == 0) {
                        self.polygonData.push([normalizedVal[0], normalizedVal[1]]);
                        self.addPoint(self.addPolygonEntitys, normalizedVal[0], normalizedVal[1]);
                    } else if (self.polygonData.length == 1) {
                        self.polygonData.push([normalizedVal[0], normalizedVal[1]]);
                        self.addPolyline(self.addPolygonEntitys, self.polygonData);
                        return;
                    } else if (self.polygonData.length > 1) {
                        self.polygonData.push([normalizedVal[0], normalizedVal[1]]);
                        self.addPolygon(self.addPolygonEntitys, self.polygonData);
                    }
                } else { // 不在编辑中
                    if (evt.graphic) { // 点击在图形上
                        // 保存当前点击得图形
                        // self.currentDrawing = evt.graphic;
                        self.modifyPolygon();
                        self.activateToolbar(evt.graphic);
                    } else { // 点击不在图形上
                        self.modifyPolygon()
                    }
                }
            }
            // 提示信息
            $(document).off('mousemove').mousemove(function(e) {
                var y = e.clientY + 10;
                var x = e.clientX + 20;
                if (e.clientX < 40) {
                    var x = 40;
                }
                if (e.clientY < 42) {
                    y = 42;
                }
                if (e.clientY > ($(window).height() - 82)) {
                    y = ($(window).height() - 66);
                }
                if (e.clientX > ($(window).width() - 184)) {
                    x = ($(window).width() - 184);
                }
                if (self.tabIndex == 1 || self.tabIndex == 2) {
                    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,
                        })
                    } else {
                        $('.police-dispatching .tips').stop().hide();
                    }
                } else {
                    $('.police-dispatching .tips').stop().hide();
                }
            })
        },
        //新增线
        addPolyline: function(entitys, path) {
            entitys.clear();
            var polylineSymbol = new SimpleLineSymbol();
            polylineSymbol.color = [255, 0, 0, 1];
            polylineSymbol.width = 4;
            var polyline = new Polyline({
                "paths": [path],
                "spatialReference": {
                    "wkid": 4326
                }
            });
            //set up a class breaks renderer to render different symbols based on the cluster count. Use the required clusterCount property to break on.
            var defaultSym = new PictureMarkerSymbol("./images/ceshi.png", 32, 32).setOffset(0, 15);
            var renderer = new ClassBreaksRenderer(defaultSym, "clusterCount");
            var xlSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 32, new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new dojo.Color([200, 52, 59, 0.8]), 1), new dojo.Color([250, 65, 74, 0.8]));
            var lgSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 28, new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new dojo.Color([41, 163, 41, 0.8]), 1), new dojo.Color([51, 204, 51, 0.8]));
            var mdSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 24, new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new dojo.Color([82, 163, 204, 0.8]), 1), new dojo.Color([102, 204, 255, 0.8]));
            var smSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 22, new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new dojo.Color([230, 184, 92, 0.8]), 1), new dojo.Color([255, 204, 102, 0.8]));
            renderer.addBreak(0, 19, smSymbol);
            renderer.addBreak(20, 150, mdSymbol);
            renderer.addBreak(151, 1000, lgSymbol);
            renderer.addBreak(1001, Infinity, xlSymbol);
            entitys.add(new Graphic(polyline, polylineSymbol));
        },
            that.clusterLayer.setRenderer(renderer); //use standard setRenderer.
            //set up a popup template
            var template = new PopupTemplate({
                title: "{name}",
                fieldInfos: [
                    { fieldName: "facilityType", label: "Facility Type", visible: true },
                    { fieldName: "postcode", label: "Post Code", visible: true },
                    { fieldName: "isOpen", label: "Opening Hours", visible: true }
                ]
            });
        //编辑电子围栏(多边形)
        modifyPolygon: function() {
            var self = this;
            if (self.editToolbar != null) {
                //获取当前的多边形数据
                var polygon = self.editToolbar.getCurrentState();
            //clusterLayer.infoTemplate = template;
            that._map.infoWindow.titleInBody = false;
                //释放编辑后
                self.editToolbar.deactivate();
            that._map.addLayer(that.clusterLayer);
                self.editToolbar = null;
            //var data = DataManager.getData();
            that.clusterLayer.addData(datas);
                // 声明空字符串,存储数据
                var dataStr = '';
                // 获取数据
                var data = polygon.graphic.geometry.rings[0];
                // 组装数据
                for (var i = 0; i < data.length; i++) {
                    dataStr += (data[i][0] + ' ' + data[i][1] + ',');
                }
                dataStr = dataStr.substring(0, dataStr.length - 1);
                //更新电子围栏数据
                $.ajax({
                    //url: 'https://web.byisf.com/api/blade-jfpts/enclosure/enclosure/updatee',
                    url: 'http://localhost:89/enclosure/enclosure/updatee',
                    type: 'POST',
                    dataType: 'JSON',
                    data: {
                        anumber: anumber,
                        routeInfo: dataStr
                    },
                    success: function(result) {
                        if (result.code == 200) {}
                    }
                })
            }
        },
        activateToolbar: function(graphic) {
            var tool = 0;
            this.editToolbar = new Edit(this._map);
            // if (registry.byId("tool_move").checked) {
            tool = tool | Edit.MOVE;
            // }
            // if (registry.byId("tool_vertices").checked) {
            tool = tool | Edit.EDIT_VERTICES;
            // }
            // if (registry.byId("tool_scale").checked) {
            tool = tool | Edit.SCALE;
            // }
            // if (registry.byId("tool_rotate").checked) {
            tool = tool | Edit.ROTATE;
            // }
            // enable text editing if a graphic uses a text symbol
            // if ( graphic.symbol.declaredClass === "esri.symbol.TextSymbol" ) {
            tool = tool | Edit.EDIT_TEXT;
            // }
            var options = {
                allowAddVertices: true,
                allowDeleteVertices: true,
                uniformScaling: true
            };
            this.editToolbar.activate(tool, graphic, options);
        },
        clearLayer: function() {
            var that = this;
            that._map.removeLayer(that.clusterLayer);
            that.clusterLayer = null;
        }
        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({
                wkid: 4326
            }));
            pt.entityData = item;
            var graphic = new esri.Graphic(pt, symbol);
            entitys.add(graphic);
            entityContent.push(item);
        },
        //在地图上新增点
        addPoint: function(entitys, lgtd, lttd, img) {
            var symbol = new esri.symbol.PictureMarkerSymbol(img, 22, 22);
            var pt = new Point(lgtd, lttd, new SpatialReference({
                wkid: 4326
            }));
            var graphic = new esri.Graphic(pt, symbol);
            entitys.add(graphic);
        },
        //绘制多边形
        addPolygon: function(entitys, rings) {
            entitys.clear();
            var polygonSymbol = new SimpleFillSymbol();
            polygonSymbol.color = [24, 255, 243, 0.411];
            var polygon = new Polygon({
                "rings": [rings],
                "spatialReference": {
                    "wkid": 4326
                }
            });
            entitys.add(new Graphic(polygon, polygonSymbol));
        }
    });
    return Widget;
src/api/client/client.js
@@ -87,3 +87,13 @@
  })
}
export const getBaTree = (id) => {
  return request({
    url: '/api/blade-user/pages',
    method: 'get',
    params: {
      id,
    }
  })
}
src/page/index/logo.vue
@@ -401,13 +401,13 @@
                    `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) => {});
                    axios({
                      method: "post",
                      url: `/api/blade-jfpts/rvideo/rVoids`,
                      params: {
                        url: result.data.data.flv,
                      },
                    }).then((resdata) => {});
                  });
              });
            if (
@@ -572,13 +572,13 @@
        .then(function () {
          that.dialogTableVisible = false;
          // axios({
          //   method: "post",
          //   url: `/api/blade-jfpts/rvideo/stop`,
          //   params: {
          //     jid: row.id,
          //   },
          // }).then((resdata) => {});
          axios({
            method: "post",
            url: `/api/blade-jfpts/rvideo/stop`,
            params: {
              jid: row.id,
            },
          }).then((resdata) => {});
          that.$router.push({
            path: "/policeTracking/track",
src/views/animalHeat/animalHeat.vue
@@ -245,7 +245,7 @@
      },
      //数据导出
      handleExport() {
        this.$confirm("是否导出用户数据?", "提示", {
        this.$confirm("是否导出体温数据?", "提示", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
@@ -255,7 +255,7 @@
      },
      //数据报表导出
      handleExportStatis() {
        this.$confirm("是否导出用户数据?", "提示", {
        this.$confirm("是否导出体温数据?", "提示", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
src/views/clientManagement/clientManagement.vue
@@ -193,10 +193,11 @@
</template>
<script>
  import {getList, remove, update, add, getclient, getDeptLazyTree, getAll, updates} from "@/api/client/client";
  import {getList, remove, update, add, getclient, getDeptLazyTree, getAll, updates,getBaTree} from "@/api/client/client";
  import {mapGetters} from "vuex";
  import axios from "axios";
  import Legend from '../../components/liu-legend/Legend'
  import AvueMap from "avue-plugin-map";
  export default {
    components:{
@@ -315,7 +316,6 @@
              label: "设备编号",
              prop: "deviceNumber",
              width: 130,
              editDisabled: true,
              rules: [
                {
                  required: false,
@@ -336,7 +336,7 @@
              rules: [
                {
                  required: false,
                  message: "请选择上级菜单",
                  message: "请选择使用方",
                  trigger: "click"
                }
              ]
@@ -403,25 +403,7 @@
              addDisplay: false,
              editDisplay: false
            },
            {
              label: "设备类型",
              prop: "deviceType",
              width: 100,
              search: true,
              searchSpan: 3,
              searchLabelWidth: 80,
              searchPlaceholder: "请选择",
              type: "select",
              props: {
                label: "dictValue",
                value: "dictValue"
              },
              dicUrl: "/api/blade-system/dict-biz/child-list?parentId=1357568691367661569",
              hide: true,
              addDisplay: true,
              editDisplay: true,
              viewDisplay: true,
            },
            {
              label: "省份",
              prop: "province",
@@ -497,8 +479,32 @@
              viewDisplay: true,
            },
            {
              label: "地址",
              prop: "map",
              hide: true,
              span: 24,
              component: "AvueMap",
            },
            {
              label: "经度",
              hide: true,
              addDisplay: false,
              prop: "jd",
            },
            {
              label: "纬度",
              hide: true,
              addDisplay: false,
              prop: "wd",
            },
            {
              label: "负责人",
              prop: "oneContacts",
              prop: "oneId",
              type: "tree",
              dicUrl: "/api/blade-system/dept/Batrees",
              props: {
                label: "title"
              },
              width: 72,
              hide: true,
              addDisplay: true,
@@ -559,6 +565,31 @@
        },
        data: []
      };
    },
    watch: {
      "form.map": {
        // form是表单或者表格绑定的数据集,v-model='form'
        handler(val) {
          debugger
          if (val) {
            this.form.wd = val.latitude;
            this.form.jd = val.longitude;
            this.form.street = val.formattedAddress;
          }
        },
        immediate: true,
      },
      "form.oneId":{
        handler(val) {
          var that = this;
          getBaTree(val).then(res => {
            if (res) {
              that.form.onePhone = res.data.data.records[0].phone;
              that.form.oneContacts = res.data.data.records[0].name;
            }
          });
        },
      }
    },
    computed: {
      ...mapGetters(["permission"]),
@@ -834,9 +865,9 @@
        //console.log(document.body.clientHeight,event.clientY,cha)
        // 防止菜单太靠底,根据可视高度调整菜单出现位置
        if (cha < 150) {
          menu.style.top = event.clientY -120 - (70) + 'px'
          menu.style.top = event.clientY -120 - (100) + 'px'
        } else {
          menu.style.top = event.clientY -10 - (70) + 'px'
          menu.style.top = event.clientY -10 - (100) + 'px'
        }
        menu.style.left = event.clientX + 10 - (60) + 'px'
        document.addEventListener('click', this.foo); // 给整个document新增监听鼠标事件,点击任何位置执行foo方法
src/views/healthcode/healthcode.vue
@@ -297,7 +297,7 @@
      },
      //数据导出
      handleExport() {
        this.$confirm("是否导出用户数据?", "提示", {
        this.$confirm("是否导出健康码数据?", "提示", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
@@ -307,7 +307,7 @@
      },
      //数据报表导出
      handleExportStatis() {
        this.$confirm("是否导出用户数据?", "提示", {
        this.$confirm("是否导出健康码数据?", "提示", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
src/views/parcel/parcel.vue
@@ -306,7 +306,7 @@
      },
      //数据报表导出
      handleExportStatis() {
        this.$confirm("是否导出用户数据?", "提示", {
        this.$confirm("是否导出包裹数据?", "提示", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
src/views/parcel/parcelKind.vue
@@ -270,7 +270,7 @@
      },
      //数据导出
      handleExport() {
        this.$confirm("是否导出用户数据?", "提示", {
        this.$confirm("是否导出违禁品数据?", "提示", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
@@ -282,7 +282,7 @@
      },
      //数据报表导出
      handleExportStatis() {
        this.$confirm("是否导出用户数据?", "提示", {
        this.$confirm("是否导出违禁品数据?", "提示", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
src/views/realTimePolice/real.vue
@@ -1,9 +1,4 @@
/*
 * @Author: Morpheus
 * @Date: 2021-03-17 15:21:33
 * @Last Modified by: Morpheus
 * @Last Modified time: 2021-04-10 17:33:38
 */
<template>
  <basic-container>
    <avue-crud
@@ -40,7 +35,7 @@
          >删 除
        </el-button>
      </template>
      <template slot="menuLeft">
        <el-button
          v-bind:class="activeClass == 0 ? 'btn-color' : ''"
@@ -66,11 +61,8 @@
          @click="getQBdata(3)"
          >全部
        </el-button>
        <span>
          <Legend :datas="datalistLIU"></Legend>
        </span>
      </template>
      <template slot="menuLeft">
        <el-button type="warning"
                    size="mini"
@@ -79,15 +71,14 @@
                    @click="handleExport">导出
        </el-button>
        <el-button type="warning"
        style="display:none"
                    size="small"
                    plain
                    icon="el-icon-download"
                    icon="el-icon-pie-chart"
                    @click="handleExportStatis">导出报表
        </el-button>
      </template>
      <template slot-scope="{ row }" slot="jtype">
        <el-tag
          >{{
@@ -102,7 +93,7 @@
          }}
        </el-tag>
      </template>
      <template slot-scope="{ type, size, row }" slot="menu">
        <el-button
          icon="el-icon-s-order"
@@ -143,7 +134,7 @@
        </el-button>
      </template>
    </avue-crud>
    <el-dialog
      class="real-dialog"
      title="警情核实"
@@ -171,7 +162,7 @@
          controls
        ></video>
      </el-dialog>
      <el-dialog
        class="ss-video-dialog"
        :modal="false"
@@ -193,7 +184,7 @@
          controls
        ></video>
      </el-dialog>
      <el-form
        :model="form"
        label-position="right"
@@ -329,7 +320,7 @@
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col span="12">
            <el-form-item label="报警时间">
@@ -363,7 +354,7 @@
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col span="12">
            <el-form-item label="备注">
@@ -371,7 +362,7 @@
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :align="center">
          <el-col class="opt-btn">
            <el-form-item>
@@ -386,14 +377,14 @@
                @click.stop="updateJtyep(form, 1, '办结')"
                >办结
              </el-button>
              <img
                src="/img/police-num.png"
                style="margin-top: -20px; height: 80px; vertical-align: middle"
                alt=""
                @click.stop="updateJtyep(form, 1, '推送110')"
              />
              <el-button
                type="primary"
                @click.stop="updateJtyep(form, 1, '派送保安')"
@@ -404,7 +395,7 @@
        </el-row>
      </el-form>
    </el-dialog>
    <el-drawer title="电子地图" append-to-body="true" :visible.sync="showMap">
      <iframe
        id="mapDiv"
@@ -417,41 +408,20 @@
    </el-drawer>
  </basic-container>
</template>
<script>
import { getList, remove, update, add, getclient } from "@/api/real/real";
import { mapGetters } from "vuex";
import Hls from "hls.js";
import axios from "axios";
import Recorder from "js-audio-recorder";
import Legend from '../../components/liu-legend/Legend'
export default {
  components:{
      Legend,
    },
  data() {
    return {
      //legend-liu数据
      datalistLIU:[
                {
                    color: 'rgb(236, 83, 37)',
                    text: '未处理'
                },
                {
                    color: 'rgb(17, 198, 253)',
                    text: '处理中'
                },
                {
                    color: 'rgb(49, 49, 49)',
                    text: '已处理'
                }
            ],
      showMap: false,
      hls: "",
      videoSource: "",
@@ -860,24 +830,12 @@
    refreshChange() {
      this.onLoad(this.page, this.query);
    },
    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 '';
      },
    onLoad(page, params = {}) {
      const { releaseTimeRange } = this.query;
      let values = {
        ...params,
      };
      if (
        this.$route.query.waringType &&
        this.$route.query != undefined &&
@@ -919,7 +877,7 @@
            endTime: this.dateTime.day.endTime,
          };
        }
        if (
          this.$route.query.startTime != undefined &&
          this.$route.query.startTime != null &&
@@ -932,7 +890,7 @@
          };
        }
      }
      if (releaseTimeRange) {
        values = {
          ...params,
@@ -947,7 +905,7 @@
          ...this.query,
        };
      }
      if (this.$route.query.timeDesc) {
        values = {
          ...params,
@@ -955,7 +913,7 @@
          ...this.query,
        };
      }
      this.loading = true;
      getList(page.currentPage, page.pageSize, values).then((res) => {
        const data = res.data.data;
@@ -963,13 +921,13 @@
          item.waringType == "紧急求救" ? (item.waringType = "一键求助") : "";
        });
        this.page.total = data.total;
        data.records.sort((a, b) => {
          return a.jtype - b.jtype;
        });
        this.data = data.records;
        this.loading = false;
        this.selectionClear();
      });
@@ -978,7 +936,7 @@
      // 当前时间
      var timestamp = Date.parse(new Date());
      var serverDate = new Date(timestamp);
      // 本周周一的时间
      var mondayTime =
        timestamp - (serverDate.getDay() - 1) * 24 * 60 * 60 * 1000;
@@ -1024,7 +982,7 @@
        currentData.getSeconds() < 10
          ? "0" + currentData.getSeconds()
          : currentData.getSeconds();
      return {
        day: {
          beginTime: currentY + "-" + currentM + "-" + currentD + " 00:00:00",
@@ -1165,6 +1123,18 @@
        };
      });
    },
    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 '';
      },
    handleManage(row) {
      this.form = row;
      this.peopleList = [
@@ -1178,7 +1148,7 @@
    },
    updateJtyep(row, jtype, t) {
      var that = this;
      axios
        .post(
          "/api/blade-jfpts/alarm/alarm/updateJtype",
@@ -1198,15 +1168,15 @@
        )
        .then(function () {
          that.dialogTableVisible = false;
          // axios({
          //   method: "post",
          //   url: `/api/blade-jfpts/rvideo/stop`,
          //   params: {
          //     jid: row.id,
          //   },
          // }).then((resdata) => {});
          axios({
            method: "post",
            url: `/api/blade-jfpts/rvideo/stop`,
            params: {
              jid: row.id,
            },
          }).then((resdata) => {});
          that.onLoad(that.page, that.query);
          that.$router.push({
            path: "/policeTracking/track",
@@ -1216,54 +1186,54 @@
    },
    beginTimeOrEndTime(time) {
      var beginTime = new Date(time);
      var endTime = new Date(new Date(time).valueOf() - 1000 * 60 * 60 * 3);
      var beginY = beginTime.getFullYear();
      var beginM =
        beginTime.getMonth() + 1 < 10
          ? "0" + (beginTime.getMonth() + 1)
          : beginTime.getMonth() + 1;
      var beginD =
        beginTime.getDate() < 10
          ? "0" + beginTime.getDate()
          : beginTime.getDate();
      var beginH =
        beginTime.getHours() < 10
          ? "0" + beginTime.getHours()
          : beginTime.getHours();
      var beginm =
        beginTime.getMinutes() < 10
          ? "0" + beginTime.getMinutes()
          : beginTime.getMinutes();
      var begins =
        beginTime.getSeconds() < 10
          ? "0" + beginTime.getSeconds()
          : beginTime.getSeconds();
      var endY = endTime.getFullYear();
      var endM =
        endTime.getMonth() + 1 < 10
          ? "0" + (endTime.getMonth() + 1)
          : endTime.getMonth() + 1;
      var endD =
        endTime.getDate() < 10 ? "0" + endTime.getDate() : endTime.getDate();
      var endH =
        endTime.getHours() < 10 ? "0" + endTime.getHours() : endTime.getHours();
      var endm =
        endTime.getMinutes() < 10
          ? "0" + endTime.getMinutes()
          : endTime.getMinutes();
      var ends =
        endTime.getSeconds() < 10
          ? "0" + endTime.getSeconds()
@@ -1283,7 +1253,7 @@
          "Content-type": "application/x-www-form-urlencoded",
        },
      });
      //this.form.serialNumber
      newAxios
        .post(
@@ -1302,22 +1272,22 @@
            )
            .then((result) => {
              that.videoSource = result.data.data.m3u8;
              if (Hls.isSupported()) {
                var dom = document.getElementById("real_video_conversation");
                that.hls = new Hls();
                var m3u8Url = decodeURIComponent(that.videoSource);
                that.hls.loadSource(m3u8Url);
                that.hls.attachMedia(dom);
                that.hls.on(Hls.Events.MANIFEST_PARSED, function () {
                  dom.play();
                });
                that.hls.on(Hls.Events.ERROR, function (event, data) {
                  console.log(data, 4566824159, "视频播放有问题!!!");
                  if (data.fatal) {
@@ -1348,12 +1318,12 @@
    },
    closeRealVideoBox() {
      var dom = document.getElementById("real_video_conversation");
      if (dom.getAttribute("src") != "") {
        dom.pause();
        dom.setAttribute("src", "");
        this.hls.destroy();
      }
    },
@@ -1367,7 +1337,7 @@
      var dom = document.getElementById("real_old_video");
      dom.pause();
    },
    aKeyToCall() {
      this.isActive = true;
      var that = this;
@@ -1379,7 +1349,7 @@
          // compiling: false,(0.x版本中生效,1.x增加中)  // 是否边录边转换,默认是false
        });
      }
      // 一键呼叫相关函数
      that.recorder.start().then(
        () => {
@@ -1391,7 +1361,7 @@
        }
      );
    },
    // 序列号后期待修改
    aKeyStopCall() {
      this.isActive = false;
@@ -1402,8 +1372,14 @@
          "Content-Type": "application/json;",
        },
      });
      var wavAxios = axios.create({
        baseURL: "https://web.byisf.com",
        withCredentials: false,
      });
      var that = this;
      newCallAxios
        .post(
          `/api_control`,
@@ -1417,12 +1393,37 @@
        .then((result) => {
          var formData = new FormData();
          // 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);
          console.log(
            wavBlob,
            wavform,
            wavformData,
            wavformData.entries(),
            132
          );
          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: {
@@ -1440,7 +1441,7 @@
            });
        });
    },
    peopleOrPhone(e) {
      this.peopleList.forEach((item) => {
        if (item.label == e) {
@@ -1458,7 +1459,7 @@
    },
    //数据导出
    handleExport() {
      this.$confirm("是否导出用户数据?", "提示", {
      this.$confirm("是否导出实时警情数据?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
@@ -1468,7 +1469,7 @@
    },
    //数据报表导出
      handleExportStatis() {
        this.$confirm("是否导出用户数据?", "提示", {
        this.$confirm("是否导出实时警情数据?", "提示", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
@@ -1477,88 +1478,88 @@
          let endTime = this.$route.query.endTime==undefined? '':this.$route.query.endTime;
          let waringType = this.$route.query.waringType==undefined? '':this.$route.query.waringType;
          let timeDesc = this.$route.query.timeDesc==undefined? '':this.$route.query.timeDesc;
          window.open(`http://localhost:8108/ureport/excel?_u=blade-alarm.statis.ureport.xml&beginTime=${beginTime}&endTime=${endTime}&waringType=${waringType}&timeDesc=${timeDesc}`);
          window.open(`http://localhost:8108/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}`);
        });
      }
  },
};
</script>
<style>
.el-card__body .waringTypeClass {
  width: 12%;
}
/*页面样式*/
.el-card__body .cityClass1 {
  width: 155px;
  padding-right: 0px !important;
}
.el-card__body .cityClass2 {
  width: 100px;
  padding-left: 0px !important;
  padding-right: 0px !important;
}
.el-card__body .cityClass3 {
  width: 100px;
  padding-left: 0px !important;
  padding-right: 0px !important;
}
/*新增窗体样式*/
.el-dialog .cityClass1 {
  width: 220px;
  padding-right: 0px !important;
}
.el-dialog .cityClass2 {
  width: 110px;
  padding-left: 5px !important;
  padding-right: 5px !important;
}
.el-dialog .cityClass3 {
  width: 110px;
  padding-left: 0px !important;
  padding-right: 0px !important;
}
.cityClassParams .avue-form__group.avue-form__group--flex {
  display: flex;
  justify-content: space-between;
}
.cityClassParams .cityClassSelect {
  flex: 1;
  margin: 0 !important;
  padding-left: 0px !important;
  padding-right: 0px !important;
}
.cityClassParams .cityClassSelect:nth-child(2) {
  margin: 0 10px !important;
}
.cityClassParams .cityClassSelect .el-form-item {
  margin-bottom: 0px !important;
}
.cityClassParams .cityClassSelect .el-form-item .el-input__inner {
  height: 28px !important;
  line-height: 28px !important;
}
.cityClass2 div label {
  display: none;
}
.cityClass3 div label {
  display: none;
}
.old-video-dialog {
  position: absolute !important;
  top: 0 !important;
@@ -1569,7 +1570,7 @@
  height: 100% !important;
  width: 476px !important;
}
.old-video-dialog .el-dialog {
  position: absolute !important;
  top: 0 !important;
@@ -1580,23 +1581,23 @@
  margin-top: 15vh !important;
  height: 538px;
}
.old-video-dialog .el-dialog .el-dialog__body {
  height: calc(100% - 54px);
  box-sizing: border-box;
}
.el-button.active {
  background: #ff0000 !important;
}
.el-button.btn-color {
  color: rgb(255, 255, 255);
  background-color: rgb(64, 158, 255);
  border-color: rgb(64, 158, 255);
}
.tabFontSize {
  font-size: 15px;
}
</style>
</style>
src/views/security/security.vue
@@ -23,9 +23,20 @@
      </template>
    </avue-crud>
    <el-drawer title="电子地图" append-to-body="true" :visible.sync="showMap">
      <iframe id="mapDiv" ref="mapDiv" src="/map/index.html?openid=scurityMap&ISinit=1" frameborder="0" width="100%"
    <!-- <el-drawer title="电子地图" append-to-body="true" :visible.sync="showMap">
      <iframe id="mapDiv" ref="mapDiv" src="/map/index.html?ISinit=1&openid=SecurityMap" frameborder="0" width="100%"
              height="100%"></iframe>
    </el-drawer> -->
    <el-drawer title="电子地图" append-to-body="true" :visible.sync="showMap">
      <iframe
                id="securityMap"
                ref="securityMap"
                :src="baseUrl"
                frameborder="0"
                width="100%"
                height="100%"
                name="securityMap"
              ></iframe>
    </el-drawer>
  </basic-container>
</template>
@@ -45,10 +56,11 @@
  export default {
    data() {
      return {
        baseUrl:"/map/index.html?ISinit=1",
        form: {},
        query: {},
        loading: true,
        showMap: false,
        showMap: true,
        page: {
          pageSize: 10,
          currentPage: 1,
@@ -189,6 +201,9 @@
        return ids.join(",");
      }
    },
    mounted() {
      this.showMap = false;
    },
    methods: {
      rowSave(row, done, loading) {
        add(row).then(() => {
@@ -233,17 +248,22 @@
            });
          });
      },
      //打开地图
      handleMap(row) {
        this.showMap = true;
        this.$nextTick(() => {
          this.$refs.mapDiv.onload = () => {
        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
                x: row.jd,
                y: row.wd,
                code:row.code
            });
          };
        })
          } else {
            console.log(`没有找到到window.frames[0].init`)
          }
        }
      },
      handleDelete() {
        if (this.selectionList.length === 0) {
src/views/supervisoryConsole/card.vue
@@ -26,7 +26,13 @@
    <el-row
      v-infinite-scroll="load"
      :infinite-scroll-disabled="disabled"
      style="margin-top: 10px"
      style="
        margin-top: 10px;
        display: flex;
        justify-content: center;
        align-items: center;
        flex-wrap: wrap;
      "
    >
      <el-col
        class="card-container"
@@ -37,7 +43,9 @@
        <a href="javascript:void(0);" @click.stop="goToDetails(item)">
          <el-card
            :style="
              item.state == ''
              item.jtype == 1
                ? 'background: #F34A4Ae6'
                : item.state == ''
                ? item.onlineStatus == 1
                  ? 'background: #1DBB99e6'
                  : 'background: #C9C9C9e6'
@@ -49,7 +57,9 @@
            <div class="cet">
              {{
                item.state == ""
                item.jtype == 1
                  ? "设备预警"
                  : item.state == ""
                  ? item.onlineStatus == 1
                    ? "设备在线"
                    : "设备掉线"
@@ -136,12 +146,17 @@
      getList({ deviceName: this.inputSearchValue }).then((res) => {
        var a = [],
          b = [],
          c = [];
          c = [],
          f = [];
        if (this.radio == "全部") {
          res.data.data.forEach((item) => {
            if (item.state != "") a.push(item);
            if (item.state == "" && item.onlineStatus == 1) c.push(item);
            if (item.state == "" && item.onlineStatus != 1) b.push(item);
            if (item.jtype == 1) {
              f.push(item);
            } else {
              if (item.state != "") a.push(item);
              if (item.state == "" && item.onlineStatus == 1) c.push(item);
              if (item.state == "" && item.onlineStatus != 1) b.push(item);
            }
          });
        } else if (this.radio == "仅显示预警设备") {
          res.data.data.forEach((item) => {
@@ -149,7 +164,11 @@
          });
        } else if (this.radio == "仅显示设备掉线") {
          res.data.data.forEach((item) => {
            if (item.onlineStatus != 1) b.push(item);
            if (item.jtype == 1 && item.onlineStatus != 1) {
              f.push(item);
            } else {
              if (item.onlineStatus != 1) b.push(item);
            }
          });
        } else if (this.radio == "仅显示设备故障") {
          res.data.data.forEach((item) => {
@@ -157,7 +176,7 @@
          });
        }
        var d = a.concat(c.concat(b));
        var d = f.concat(a.concat(c.concat(b)));
        d.forEach((item) => {
          this.count.push(item);
src/views/system/cs.vue
@@ -662,6 +662,7 @@
            );
          } else if (row.type == "1") {
            insertss(
              row.dj,
              row.nature,
              row.had,
              row.motto,
@@ -671,6 +672,7 @@
            );
          } else if (row.type == "2") {
            insertsr(
              row.dj,
              row.category,
              row.attributes,
              row.developers,
@@ -705,6 +707,7 @@
        );
      } else if (row.type == "1") {
        updateInfos(
          row.dj,
          row.nature,
          row.had,
          row.motto,
@@ -714,6 +717,7 @@
        );
      } else if (row.type == "2") {
        updateInfor(
          row.dj,
          row.category,
          row.attributes,
          row.developers,
@@ -770,6 +774,7 @@
            selectTs(this.form.tenantName).then((re) => {
              const data = res.data.data;
              data.nature = re.data.data[0].nature;
              data.dj = re.data.data[0].dj;
              data.motto = re.data.data[0].motto;
              data.ctime = re.data.data[0].ctime;
              data.had = re.data.data[0].had;
@@ -789,6 +794,7 @@
          } else if (this.form.type == "2") {
            selectTr(this.form.tenantName).then((re) => {
              const data = res.data.data;
              data.dj = re.data.data[0].dj;
              data.category = re.data.data[0].category;
              data.attributes = re.data.data[0].attributes;
              data.developers = re.data.data[0].developers;
src/views/zc/zc.vue
@@ -167,10 +167,10 @@
      ...mapGetters(["permission"]),
      permissionList() {
        return {
         addBtn: this.vaildData(this.permission.zc_add, true),
         addBtn: this.vaildData(this.permission.zc_add, false),
          viewBtn: this.vaildData(this.permission.zc_view, true),
          delBtn: this.vaildData(this.permission.zc_delete, false),
          editBtn: this.vaildData(this.permission.zc_edit, true)
          editBtn: this.vaildData(this.permission.zc_edit, false)
        };
      },
      ids() {