From 4d8c6dd77427e8e581fda17b6b65ba86bfb7a815 Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Mon, 27 Feb 2023 14:30:01 +0800
Subject: [PATCH] 洪水淹没

---
 corelib/common/popup/js/evaluateAnalysis.js |  316 ++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 269 insertions(+), 47 deletions(-)

diff --git a/corelib/common/popup/js/evaluateAnalysis.js b/corelib/common/popup/js/evaluateAnalysis.js
index 2f5431e..73fb800 100644
--- a/corelib/common/popup/js/evaluateAnalysis.js
+++ b/corelib/common/popup/js/evaluateAnalysis.js
@@ -1,44 +1,61 @@
 $(function () {
     //获取父窗口传来的数据
-    var data = JSON.parse(GetQueryString("data"))
+    var data = JSON.parse(GetQueryString("parentData"))
+    var hd = data.hd
+    var evaluateData = data.data
     //配置数据
-    var nameData=[]
+    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.people)
+            peopleData.push(e.population)
             areaData.push(e.area)
-            moneyData.push(e.money)
+            moneyData.push(e.value)
         })
     }
-    // change事件
-    $('input[type=radio][name=value]').change(function () {
-        if (this.value == 'list'){
-            $('.evaluate-echarts').hide()
-            $('.evaluate-box-top-left').css('visibility','visible')
-            $('.evaluate-table').show()
-        }else {
-            $('.evaluate-table').hide()
-            $('.evaluate-box-top-left').css('visibility','hidden')
 
-            recharts_z()
-            loadEcharts()
-            $('.evaluate-echarts').show()
-        }
-    });
+    //初始化
+    init()
 
-    //淹没图弹窗事件
-    $('#create-flood-image').click(function (){
-        imagePopup()
-    })
+    //确认弹窗
+    function confirmPopup() {
+        const self = this
+        let url = '../popup/saveConfirm.html'
+        var top = ($(window).height() - 300) / 2 - 124;
+        var left = ($(window).width() - 500) / 2;
+        layer.open({
+            title: '保存',
+            type: 2,
+            maxmin: false, //开启最大化最小化按钮
+            area: ['500px', '200px'],
+            skin: 'saveConfirm',
+            offset: [top, left],
+            content: url,
+            id: "saveConfirmLayer",
+            closeBtn: 1,
+            //把父页面数据传递给子弹窗并渲染
+            success: function (layero, index) {
+                //绑定父子之间的关系,用于数据传递,缺少则无法传递
+                var body = layer.getChildFrame("body", index);
+                //得到iframe页的窗口对象
+                var iframeWin = window[layero.find('iframe')[0]['name']];
+                iframeWin.$('#confirm-button').click(function () {
+                    let saveName = iframeWin.$('#save-name').val()
+                    if (saveName == "") return
+                    saveHistoryData(saveName,index)
+
+                })
+            }
+        })
+    }
 
     //加载柱状图
-    function loadEcharts(){
+    function loadEcharts() {
         var chartDom = document.getElementById('evaluate-echarts');
         var myChart = echarts.init(chartDom);
         var app = {}
@@ -82,7 +99,7 @@
             verticalAlign: app.config.verticalAlign,
             rotate: app.config.rotate,
             formatter: '{c}  {name|{a}}',
-            fontSize: 16,
+            fontSize: 13,
             rich: {
                 name: {}
             }
@@ -94,11 +111,14 @@
                     type: 'shadow'
                 }
             },
-            legend: {},
+            legend: {
+                left: 'left',
+                width: "70%"
+            },
             xAxis: [
                 {
                     type: 'value',
-                    axisTick: { show: false },
+                    axisTick: {show: false},
                 }
             ],
             yAxis: [
@@ -148,12 +168,14 @@
             ]
         };
 
-        echartsOption&&myChart.setOption(echartsOption,true);
+        echartsOption && myChart.setOption(echartsOption, true);
     }
 
+    //控制echarts图的长宽
     function recharts_z() {
-        var width = $(window).width() * 0.9;
-        var height = ($(window).height() - 50) - 80;
+        var width = $(window).width();
+        var height = $(window).height() - 400
+
         $('#evaluate-echarts').empty();
         $('#evaluate-echarts').removeAttr("_echarts_instance_").empty();
         var chartPie = document.getElementById('evaluate-echarts');
@@ -165,7 +187,7 @@
         myChartPie.resize(resize);
     }
 
-    //获取参数
+    //获取url携带参数
     function GetQueryString(name) {
         var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
         var r = decodeURI(window.location.search).substr(1).match(reg);
@@ -173,21 +195,221 @@
         return null;
     }
 
-    //淹没图弹窗
-    function imagePopup(){
-        var url = './corelib/common/popup/floodImage.html';
-        var top = ($(window).height() - 526) / 2;
-        var left = ($(window).width() - 500 - 340) / 2 + 340;
-        parent.layer.open({
-            title:'影响分析',
-            type: 2,
-            maxmin: false, //开启最大化最小化按钮
-            area: ['1000px', '800px'],
-            skin: 'floodImage',
-            offset: [top, left],
-            content: url,
-            id: "floodImageLayer",
-            closeBtn: 1
+    //导出成果图
+    function exportPicture() {
+        // 获取要下载的图片
+        var img = document.getElementById('show-img');
+        // 获取图片地址
+        var url = img.src;
+        // 创建一个a节点插入的document
+        var a = document.createElement('a');
+        // 模拟鼠标click点击事件
+        var event = new MouseEvent('click')
+        // 设置a节点的download属性值
+        a.download = '成果图'
+        // 将图片的src赋值给a节点的href
+        a.href = url;
+        a.dispatchEvent(event)
+    }
+
+    //初始化
+    function init() {
+
+        $('#list').click(function () {
+            $('.evaluate-echarts').hide()
+            $('.evaluate-table').show()
+            $('.flood-analysis-pagination').show()
+            $('.list').addClass('choose-button')
+            $('.list').removeClass('unchoose-button')
+            $('.echarts').addClass('unchoose-button')
+            $('.echarts').removeClass('choose-button')
+        })
+
+        $('#echarts').click(function () {
+            $('.evaluate-table').hide()
+            $('.flood-analysis-pagination').hide()
+            recharts_z()
+            loadEcharts()
+            $('.evaluate-echarts').show()
+
+            $('.echarts').addClass('choose-button')
+            $('.echarts').removeClass('unchoose-button')
+            $('.list').addClass('unchoose-button')
+            $('.list').removeClass('choose-button')
+        })
+
+        //淹没图弹窗事件
+        $('#create-flood-image').click(function () {
+            exportPicture()
+        })
+
+        //保存按钮点击事件
+        $('#save-btn').click(function () {
+            confirmPopup()
+        })
+
+        //导出按钮点击事件
+        $('#export-img').click(function () {
+            exportPicture()
+        })
+
+
+        //图片展示
+        $('#show-img').prop('src', 'image/floodAnalysisEvaluate-2.png')
+        $('.list').addClass('choose-button')
+        $('.list').removeClass('unchoose-button')
+        $('.echarts').addClass('unchoose-button')
+        $('.echarts').removeClass('choose-button')
+        loadPagination()
+        loadSumData()
+    }
+
+    //加载表格
+    function loadTable(listData) {
+        // $('#evaluate-tbody').remove()
+        var table = ""
+        var house = 0
+        var people = 0
+        var area = 0
+        var money = 0
+        for (let i = 0; i < listData.length; i++) {
+
+            table += '<tr>' +
+                '<td><div>' + listData[i].name + '</div></td>' +
+                '<td><div>' + listData[i].house + '</div></td>' +
+                '<td><div>' + listData[i].population + '</div></td>' +
+                '<td><div>' + listData[i].area + '</div></td>' +
+                '<td><div>' + listData[i].value + '</div></td>' +
+                '</tr>'
+
+            house += evaluateData[i].house
+            people += evaluateData[i].population
+            area += evaluateData[i].area
+            money += evaluateData[i].value
+        }
+        $('#evaluate-tbody').html(table)
+    }
+
+    //加载总和数据
+    function loadSumData() {
+        var house = 0
+        var people = 0
+        var area = 0
+        var money = 0
+        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)
+        }
+
+        let table = '<tr>' +
+            '<td><div>合计</div></td>' +
+            '<td><div>' + house + '</div></td>' +
+            '<td><div>' + people + '</div></td>' +
+            '<td><div>' + area + '</div></td>' +
+            '<td><div>' + money + '</div></td>' +
+            '</tr>'
+
+        $('#evaluate-tbody').append(table)
+
+        // $(".house").html(house + '户')
+        // $(".people").html(people + '人')
+        // $(".area").html(area + 'km²')
+        // $(".money").html(money + '万元')
+
+        $('.description').html("&nbsp&nbsp该站位于" + hd.riverway + ",靠近"+hd.stnm.trim()+"水文站,起始距为"+hd.gl_qdj+"m,河段长" + hd.river_length + "m,淹没面积" + house + "km²,淹没耕地面积" + people + "km²,影响" + area + "万人,淹没区GDP总计" + money + "亿元")
+    }
+
+    //加载分页
+    function loadPagination() {
+        if (evaluateData.length <= 0) return
+        var count = Math.ceil(evaluateData.length / 10);
+
+        $('#evaluate-pagination').pagination({
+            mode: 'fixed',
+            jump: true,
+            coping: false,
+            pageCount: count,
+            callback: function (index) {
+                let listdata = [];
+                //显示页数
+                var index = (index.getCurrent() - 1) * 10;
+                for (var i = index; i < index + 10; i++) {
+                    listdata.push(evaluateData[i]);
+                    if (i == evaluateData.length - 1) {
+                        break;
+                    }
+                }
+                loadTable(listdata)
+            }
         });
+
+        //首次加载前10条数据
+        var startData = [];
+        if (evaluateData.length > 10) {
+            for (var i = 0; i < 10; i++) {
+                startData.push(evaluateData[i]);
+            }
+        } else {
+            for (var i = 0; i < evaluateData.length; i++) {
+                startData.push(evaluateData[i]);
+            }
+        }
+        loadTable(startData)
+    }
+
+    //防止出现两个小数相加出现很多0的情况
+    function floatAdd(arg1, arg2) {
+        var r1, r2, m;
+        try {
+            r1 = arg1.toString().split(".")[1].length;
+        } catch (e) {
+            r1 = 0;
+        }
+        try {
+            r2 = arg2.toString().split(".")[1].length;
+        } catch (e) {
+            r2 = 0;
+        }
+        m = Math.pow(10, Math.max(r1, r2));
+        return (arg1 * m + arg2 * m) / m;
+    }
+
+    /**
+     * 保存历史数据
+     * @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://localhost: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) {
+                    layer.msg("保存成功")
+                }else {
+                    layer.msg("保存失败")
+                }
+            }
+        });
+
+        layer.close(index)
     }
 });

--
Gitblit v1.9.3