$(function () { //获取父窗口传来的数据 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 (evaluateData.length > 0) { evaluateData.forEach(e => { nameData.push(e.name) houseData.push(e.house) peopleData.push(e.population) areaData.push(e.area) moneyData.push(e.value) }) } //初始化 init() //确认弹窗 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() { var chartDom = document.getElementById('evaluate-echarts'); var myChart = echarts.init(chartDom); var app = {} app.config = { rotate: 0, align: 'left', verticalAlign: 'middle', position: 'right', distance: 15, onChange: function () { const labelOption = { rotate: app.config.rotate, align: app.config.align, verticalAlign: app.config.verticalAlign, position: app.config.position, distance: app.config.distance }; myChart.setOption({ series: [ { label: labelOption }, { label: labelOption }, { label: labelOption }, { label: labelOption } ] }); } }; const labelOption = { show: true, position: app.config.position, distance: app.config.distance, align: app.config.align, verticalAlign: app.config.verticalAlign, rotate: app.config.rotate, formatter: '{c} {name|{a}}', fontSize: 13, rich: { name: {} } }; var echartsOption = { tooltip: { trigger: 'axis', axisPointer: { type: 'shadow' } }, legend: { left: 'left', width: "70%" }, xAxis: [ { type: 'value', axisTick: {show: false}, } ], yAxis: [ { type: 'category', data: nameData } ], series: [ { name: '受淹户数(户)', type: 'bar', barGap: 0, label: labelOption, emphasis: { focus: 'series' }, data: houseData }, { name: '受淹人口(人)', type: 'bar', label: labelOption, emphasis: { focus: 'series' }, data: peopleData }, { name: '受淹居民地面积(km²)', type: 'bar', label: labelOption, emphasis: { focus: 'series' }, data: areaData }, { name: '受淹房屋价值(万元/人)', type: 'bar', label: labelOption, emphasis: { focus: 'series' }, data: moneyData } ] }; echartsOption && myChart.setOption(echartsOption, true); } //控制echarts图的长宽 function recharts_z() { var width = $(window).width(); var height = $(window).height() - 400 $('#evaluate-echarts').empty(); $('#evaluate-echarts').removeAttr("_echarts_instance_").empty(); var chartPie = document.getElementById('evaluate-echarts'); var myChartPie = echarts.init(chartPie); var resize = { width: width, height: height } myChartPie.resize(resize); } //获取url携带参数 function GetQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); var r = decodeURI(window.location.search).substr(1).match(reg); if (r != null) return unescape(r[2]); return null; } //导出成果图 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 += '' + '
' + listData[i].name + '
' + '
' + listData[i].house + '
' + '
' + listData[i].population + '
' + '
' + listData[i].area + '
' + '
' + listData[i].value + '
' + '' 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 = '' + '
合计
' + '
' + house + '
' + '
' + people + '
' + '
' + area + '
' + '
' + money + '
' + '' $('#evaluate-tbody').append(table) // $(".house").html(house + '户') // $(".people").html(people + '人') // $(".area").html(area + 'km²') // $(".money").html(money + '万元') $('.description').html("  该站位于" + 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) } });