赣州市洪水风险预警系统三维版本
guoshilong
2023-02-18 66f4a9b4de3223e4de244a1b22ecb54d51119584
洪水淹没-添加历史记录保存功能
2 files modified
265 ■■■■■ changed files
corelib/common/popup/js/evaluateAnalysis.js 85 ●●●●● patch | view | raw | blame | history
widgets/FloodAnalysis/Widget.js 180 ●●●●● patch | view | raw | blame | history
corelib/common/popup/js/evaluateAnalysis.js
@@ -1,15 +1,16 @@
$(function () {
    //获取父窗口传来的数据
    var data = JSON.parse(GetQueryString("data"))
    var hd = JSON.parse(GetQueryString("hd"))
    var data = JSON.parse(GetQueryString("parentData"))
    var hd = data.hd
    var evaluateData = data.data
    //配置数据
    var nameData = []
    var houseData = []
    var peopleData = []
    var areaData = []
    var moneyData = []
    if (data.length > 0) {
        data.forEach(e => {
    if (evaluateData.length > 0) {
        evaluateData.forEach(e => {
            nameData.push(e.name)
            houseData.push(e.house)
            peopleData.push(e.population)
@@ -69,7 +70,6 @@
            closeBtn: 1,
            //把父页面数据传递给子弹窗并渲染
            success: function (layero, index) {
                self.popupIndex = index
                //绑定父子之间的关系,用于数据传递,缺少则无法传递
                var body = layer.getChildFrame("body", index);
                //得到iframe页的窗口对象
@@ -77,9 +77,7 @@
                iframeWin.$('#confirm-button').click(function () {
                    let saveName = iframeWin.$('#save-name').val()
                    if (saveName == "") return
                    console.log(saveName, "-----------")
                    saveHistoryData()
                    saveHistoryData(saveName,index)
                })
            }
@@ -263,10 +261,10 @@
                '<td><div>' + listData[i].value + '</div></td>' +
                '</tr>'
            house += data[i].house
            people += data[i].population
            area += data[i].area
            money += data[i].value
            house += evaluateData[i].house
            people += evaluateData[i].population
            area += evaluateData[i].area
            money += evaluateData[i].value
        }
        $('#evaluate-tbody').html(table)
    }
@@ -276,11 +274,11 @@
        var people = 0
        var area = 0
        var money = 0
        for (let i = 0; i < data.length; i++) {
            house = floatAdd(house, data[i].house)
            people = floatAdd(people, data[i].population)
            area = floatAdd(area, data[i].area)
            money = floatAdd(money, data[i].value)
        for (let i = 0; i < evaluateData.length; i++) {
            house = floatAdd(house, evaluateData[i].house)
            people = floatAdd(people, evaluateData[i].population)
            area = floatAdd(area, evaluateData[i].area)
            money = floatAdd(money, evaluateData[i].value)
        }
        $(".house").html(house + '户')
@@ -291,8 +289,8 @@
    }
    function loadPagination() {
        if (data.length < 0) return
        var count = Math.ceil(data.length / 10);
        if (evaluateData.length <= 0) return
        var count = Math.ceil(evaluateData.length / 10);
        $('#evaluate-pagination').pagination({
            mode: 'fixed',
@@ -300,12 +298,12 @@
            coping: false,
            pageCount: count,
            callback: function (index) {
                var listdata = [];
                let listdata = [];
                //显示页数
                var index = (index.getCurrent() - 1) * 10;
                for (var i = index; i < index + 10; i++) {
                    listdata.push(data[i]);
                    if (i == data.length - 1) {
                    listdata.push(evaluateData[i]);
                    if (i == evaluateData.length - 1) {
                        break;
                    }
                }
@@ -315,13 +313,13 @@
        //首次加载前10条数据
        var startData = [];
        if (data.length > 10) {
        if (evaluateData.length > 10) {
            for (var i = 0; i < 10; i++) {
                startData.push(data[i]);
                startData.push(evaluateData[i]);
            }
        } else {
            for (var i = 0; i < data.length; i++) {
                startData.push(data[i]);
            for (var i = 0; i < evaluateData.length; i++) {
                startData.push(evaluateData[i]);
            }
        }
        loadTable(startData)
@@ -344,7 +342,38 @@
        return (arg1 * m + arg2 * m) / m;
    }
    function saveHistoryData() {
        console.log("------------------------------------")
    /**
     * 保存历史数据
     * @param saveName 名称
     * @param index 当前层的index
     */
    function saveHistoryData(saveName,index) {
        const self = this
        let smxVal = {
            hd:data.hd,
            smx:data.smx,
            sw:data.sw,
            point:data.point
        }
        $.ajax({
            url: 'http://192.168.0.103:82/blade-ycreal/inundationResult/save',
            type: 'post',
            dataType: 'json',
            jsonp: 'callback',
            jsonpCallback: 'data',
            data: {
                name:saveName,
                lon:hd.river_origin,
                lat:hd.qd_lat,
                smxVal:JSON.stringify(smxVal)
            },
            success: function (res) {
                if (res.code == 200) {
                    alert("保存成功")
                }
            }
        });
        layer.close(index)
    }
});
widgets/FloodAnalysis/Widget.js
@@ -36,6 +36,8 @@
        smxSelect: null,
        //河段下拉列表
        hdDataList: [],
        //水面线下拉列表
        smxDataList:[],
        //洪水分析表格数据
        analysisTableList: [],
        dgridSelectEvent:null,
@@ -59,8 +61,8 @@
            waterlineSelectName: "http://192.168.0.207:82/blade-ycreal/waterline/selectName",
            childpage: "http://192.168.0.207:82/blade-ycreal/water/childpage",
            getCzByGlCodeByGlQdj: "http://192.168.0.207:82/blade-ycreal/waterline/getCzByGlCodeByGlQdj",
            getHistoryList: "",
            saveHistoryData: "",
            getHistoryList: "http://192.168.0.103:82/blade-ycreal/inundationResult/list",
            saveHistoryData: "http://192.168.0.103:82/blade-ycreal/inundationResult/save",
            getCoordinatesMinQdj: "http://192.168.0.207:82/blade-ycreal/water/getCoordinatesMinQdj",
        },
        evaluateData: [
@@ -242,6 +244,9 @@
            if (this.drawingPolyline)
                this.map.entities.remove(this.drawingPolyline);
            if (this.waterEntity)
                this.map.entities.remove(this.waterEntity)
            this.map.scene.globe.baseColor = Cesium.Color.WHITE;
            $('#hd-select option').remove()
@@ -353,6 +358,7 @@
                },
                success: function (res) {
                    let data = res.data
                    self.smxDataList = data
                    self.smxSelect.find("option").remove();//添加新值 删除旧值
                    if (data.length <= 0) {
                        $('#flood-tbody').html("")
@@ -390,44 +396,7 @@
                success: function (res) {
                    if (res.code == 200) {
                        let data = res.data.records
                        self.deleteEntities(self.pointEntities)
                        // 水面线连线
                        let cartesians = []
                        for (let i = 0; i < data.length; i++) {
                            cartesians.push(new Cesium.Cartesian3.fromDegrees(data[i].lng, data[i].lat,data[i].sw))
                            let temp = self.map.entities.add({
                                position: Cesium.Cartesian3.fromDegrees(data[i].lng, data[i].lat,data[i].sw),
                                point: {
                                    color: Cesium.Color.RED,
                                    pixelSize: 11,
                                    //防止地形遮挡住点
                                    disableDepthTestDistance: Number.POSITIVE_INFINITY,
                                    heightReference: Cesium.HeightReference.CLAMP_TO_GROUND
                                },
                            });
                            // 清空使用
                            self.pointEntities.push(temp)
                            // if (data[i].location.length>12){
                            //     data[i].location = data[i].location.substring(0,12)+"..."
                            // }
                        }
                        // 先清空 后画线
                        if (self.drawingPolyline)
                            self.map.entities.remove(self.drawingPolyline);
                        let lineOpts = {
                            polyline: {
                                positions: cartesians,
                                clampToGround: true,
                                width: 3,
                                color: "#279a9a"
                            }
                        };
                        // 画线
                        self.drawingPolyline = self.map.entities.add(lineOpts);
                        self.createPointAndLine(data,self.pointEntities)
                        self.analysisTableList = data
                        self.getSub(self.currentHd.id, self.currentSmxcode)
                    }
@@ -435,28 +404,68 @@
            });
        },
        //创建点线
        createPointAndLine(data,pointEntities){
            this.deleteEntities(pointEntities)
            // 水面线连线
            let cartesians = []
            for (let i = 0; i < data.length; i++) {
                cartesians.push(new Cesium.Cartesian3.fromDegrees(data[i].lng, data[i].lat,data[i].sw))
                let temp = this.map.entities.add({
                    position: Cesium.Cartesian3.fromDegrees(data[i].lng, data[i].lat,data[i].sw),
                    point: {
                        color: Cesium.Color.RED,
                        pixelSize: 11,
                        //防止地形遮挡住点
                        disableDepthTestDistance: Number.POSITIVE_INFINITY,
                        heightReference: Cesium.HeightReference.CLAMP_TO_GROUND
                    },
                });
                // 清空使用
                pointEntities.push(temp)
            }
            // 先清空 后画线
            if (this.drawingPolyline){
                this.map.entities.remove(this.drawingPolyline);
            }
            let lineOpts = {
                polyline: {
                    positions: cartesians,
                    clampToGround: true,
                    width: 3,
                    color: "#279a9a"
                }
            };
            // 画线
            this.drawingPolyline = this.map.entities.add(lineOpts);
        },
        //获取历史风险图数据列表
        getHistoryList() {
            const self = this
            // $.ajax({
            //     url: self.url.getHistoryList,
            //     type: 'get',
            //     dataType: 'json',
            //     jsonp: 'callback',
            //     jsonpCallback: 'data',
            //     data: {
            //         name: "",
            //     },
            //     success: function (res) {
            //         if (res.code == 200) {
            //             console.log(res)
            //             let data = res.data.records
            //
            //         }
            //     }
            // });
            let data = self.historyTableList
            self.loadPagination(data,"history-pagination")
            $.ajax({
                url: self.url.getHistoryList,
                type: 'get',
                dataType: 'json',
                jsonp: 'callback',
                jsonpCallback: 'data',
                data: {
                    name: "",
                    pageSize:999999999,
                },
                success: function (res) {
                    if (res.code == 200) {
                        let data = res.data.records
                        data.forEach(e=>{
                            e.smxVal = JSON.parse(e.smxVal)
                        })
                        self.historyTableList = data
                        self.loadPagination(data,"history-pagination")
                    }
                }
            });
        },
        /**
@@ -512,21 +521,6 @@
        },
        /**
         * 加载历史风险表格
         * @param listData 需要加载的数据
         */
        loadHistoryTable(listData) {
            var table = ""
            listData.forEach(e => {
                table += '<tr>' +
                    '<td><div><input type="radio" name="tableRadio" value=' + e.id + '></div></td>' +
                    '<td><div>' + e.name + '</div></td>' +
                    '</tr>'
            })
            $('#flood-history-tbody').html(table)
        },
        /**
         * 计算水位
         * @param waterline 水面线高度
         * @param number 差值
@@ -535,6 +529,7 @@
            let sw = this.floatAdd(Number(waterline), Number(sub))
            return sw
        },
        //预测水位计算
        getYcSub() {
            const self = this
@@ -549,6 +544,7 @@
            self.loadPagination(self.analysisTableList, "analysis-pagination")
        },
        //实时水位计算
        getSub(hdid, smxcode) {
            const self = this
@@ -611,7 +607,7 @@
        saveHistoryData() {
            const self = this
            $.ajax({
                url: self.url.getCzByGlCodeByGlQdj,
                url: self.url.saveHistoryData,
                type: 'get',
                dataType: 'json',
                jsonp: 'callback',
@@ -653,9 +649,22 @@
        //评估分析弹窗
        evaluatePopup() {
            var self = this
            let data = this.evaluateData
            let dataStr = JSON.stringify(data)
            let hdStr = JSON.stringify(this.currentHd)
            let selectSmx = this.smxDataList.filter(e=>{
                return e.smxcode == this.currentSmxcode
            })
            let parentData = {}
            parentData.data = this.evaluateData
            parentData.hd = this.currentHd
            parentData.smx = selectSmx[0]
            parentData.sw = $('#sw-input').val()
            parentData.point = this.analysisTableList
            // let data = this.evaluateData
            // let dataStr = JSON.stringify(data)
            // let hdStr = JSON.stringify(this.currentHd)
            // let smxStr = JSON.stringify(selectSmx[0])
            var url = './corelib/common/popup/evaluateAnalysis.html'
            var top = ($(window).height() - 600) / 2;
@@ -667,7 +676,7 @@
                area: ['1500px', '700px'],
                skin: 'floodAnalysis',
                offset: 'auto',
                content: url + "?data=" + encodeURIComponent(dataStr) + "&hd=" + encodeURIComponent(hdStr),//使用encodeURIComponent转码,避免中文字符乱码,避免url截取错误
                content: url + "?parentData=" + encodeURIComponent(JSON.stringify(parentData)),//使用encodeURIComponent转码,避免中文字符乱码,避免url截取错误
                id: "floodAnalysisLayer",
                closeBtn: 1,
            });
@@ -742,10 +751,21 @@
            this.dgridSelectEvent = grid.on("dgrid-select", function(evt){
                //获取行数据
                let data = evt.rows[0].data
                console.log(data)
                if (data.smxVal.point.length>0){
                    self.createPointAndLine(data.smxVal.point,self.pointEntities)
                    self.map.camera.flyTo({
                        destination: Cesium.Cartesian3.fromDegrees(data.lon, data.lat, 50000),
                    });
                    self.drawWater()
                }
            });
            grid.renderArray(dataList);
        },
        // 洪水淹没效果
        drawWater() {
            //地图定位