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