From 66f4a9b4de3223e4de244a1b22ecb54d51119584 Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Sat, 18 Feb 2023 14:22:57 +0800
Subject: [PATCH] 洪水淹没-添加历史记录保存功能

---
 widgets/FloodAnalysis/Widget.js             |  180 ++++++++++++++++++++----------------
 corelib/common/popup/js/evaluateAnalysis.js |   85 +++++++++++-----
 2 files changed, 157 insertions(+), 108 deletions(-)

diff --git a/corelib/common/popup/js/evaluateAnalysis.js b/corelib/common/popup/js/evaluateAnalysis.js
index c442645..7e0ac0f 100644
--- a/corelib/common/popup/js/evaluateAnalysis.js
+++ b/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)
     }
 });
diff --git a/widgets/FloodAnalysis/Widget.js b/widgets/FloodAnalysis/Widget.js
index 1c9e71b..0811815 100644
--- a/widgets/FloodAnalysis/Widget.js
+++ b/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() {
             //地图定位

--
Gitblit v1.9.3