/////////////////////////////////////////////////////////////////////////// // Copyright © 2022 guoshilong. All Rights Reserved. // 模块描述:洪水淹没分析 /////////////////////////////////////////////////////////////////////////// define(['dojo/_base/declare', 'dojo/_base/lang', 'dojo/_base/array', 'dojo/_base/html', "dojo/topic", 'jimu/BaseWidget', 'dojo/on', 'dojo/mouse', 'dstore/Memory', 'dstore/Trackable', 'dgrid/Grid', 'dgrid/Keyboard', 'dgrid/Selection', 'dgrid/Editor', 'dstore/RequestMemory', 'dgrid/test/data/createSyncStore', "libs/echarts/v4/echarts.min", 'libs/layer/layer.js', 'libs/turf/turf.min.js'], function (declare, lang, array, html, topic, BaseWidget, on,mouse, Memory, Trackable, Grid, Keyboard, Selection,Editor, RequestMemory, createSyncStore, echarts, layer, turf) { return declare([BaseWidget], { baseClass: 'jimu-widget-FloodAnalysis', name: 'FloodAnalysis', //渲染的点位 pointEntities: [], //渲染的线 drawingPolyline:null, //html元素 analysisBtn: null, historyBtn: null, divFloodAnalysis: null, divFloodHistory: null, hdSelect: null, smxSelect: null, //河段下拉列表 hdDataList: [], //水面线下拉列表 smxDataList:[], //洪水分析表格数据 analysisTableList: [], dgridSelectEvent:null, currentSelectHistoryData:null, //历史风险图表格数据 historyTableList: [ {name: "5年洪水淹没图"}, {name: "10年洪水淹没图"}, {name: "15年洪水淹没图"}, ], //当前选中的河段 currentHd: null, //当前选中的水面线 currentSmxcode: "", //水文站最近的点 currentNearPoint:null, evaluateLayerIndex:"", //收起框打开状态 popupLayer: null, //api接口 url: { riverwaySelectName: "http://localhost:82/blade-ycreal/riverway/selectName", waterlineSelectName: "http://localhost:82/blade-ycreal/waterline/selectName", childpage: "http://localhost:82/blade-ycreal/water/childpage", getCzByGlCodeByGlQdj: "http://localhost:82/blade-ycreal/waterline/getCzByGlCodeByGlQdj", getRealTimeWaterByhdId: "http://localhost:82/blade-ycreal/waterline/getRealTimeWaterByhdId", getHistoryList: "http://localhost:82/blade-ycreal/inundationResult/list", saveHistoryData: "http://localhost:82/blade-ycreal/inundationResult/save", getCoordinatesMinQdj: "http://localhost:82/blade-ycreal/water/getCoordinatesMinQdj", }, evaluateData: [ { name: "<0.5", house: 35, population: 175, area: 12.888, value: 50.123 }, { name: "1.0-2.0", house: 70, population: 350, area: 24.456, value: 100.456 }, { name: "2.0-3.0", house: 20, population: 100, area: 8.551, value: 39.789 }, { name: ">3.0", house: 70, population: 350, area: 24.6, value: 20.4 } ], startup: function startup() { const self = this this.bindHtmlElement() //实时、预测改变事件 $('input[type=radio][name=middleRadio]').change(function () { if (this.value == "realtime") { $("#sw-input").prop('disabled', true); } else { $("#sw-input").prop('disabled', false); } if ($('#smx-select').val()) self.getPointData($('#smx-select').val()) }) //开始分析按钮点击事件 $('#start-analysis-btn').click(function () { if (self.currentHd && self.currentSmxcode) { self.drawWater('analysis') } else { layer.msg("请先选择河段和水面线") } }) //洪水淹没分析按钮点击事件 this.analysisBtn.click(function () { self.analysisBtn.addClass('choose-button') self.analysisBtn.removeClass('unchoose-button') self.historyBtn.addClass('unchoose-button') self.historyBtn.removeClass('choose-button') self.divFloodHistory.hide() self.divFloodAnalysis.show() $('#history-pagination').hide() if (self.currentHd){ $('#analysis-pagination').show() } $('#search-name').val("") }) //历史风险图按钮点击事件 this.historyBtn.click(function () { self.historyBtn.addClass('choose-button') self.historyBtn.removeClass('unchoose-button') self.analysisBtn.addClass('unchoose-button') self.analysisBtn.removeClass('choose-button') self.divFloodAnalysis.hide() self.divFloodHistory.show() $('#analysis-pagination').hide() $('#history-pagination').show() //获取历史数据 self.getHistoryList() }) //河段输入框聚焦、失焦、输入事件 $('#hd-input').focus(function () { $("#hd-select").show() }) $('#hd-input').blur(function () { //隐藏域触发改变事件需要手动触发 // $("#hd-select").val().change() //关闭分析窗口 if (self.evaluateLayerIndex){ layer.close(self.evaluateLayerIndex) self.evaluateLayerIndex = "" $('#restore-icon').hide() } setTimeout(function(){//有bug 需要延迟执行隐藏 $("#hd-select").hide() },300) }) // 河段输入事件 $('#hd-input').on("input", function () { let searchString = $('#hd-input').val() let filterArray = self.hdDataList.filter(e => { return e.riverway.indexOf(searchString) != -1 }) self.hdSelect.find("option").remove();//添加新值 删除旧值 filterArray.forEach(e => { self.hdSelect.append(""); }) }) //水位输入事件 $('#sw-input').on("input", function (e,v) { self.getSw($('#sw-input').val()) }) //河段选择框改变事件 this.hdSelect.change(function () { $("#hd-input").val($(this).find("option:selected").text()); let selected = JSON.parse($(this).val()) // 设置站点信息 $('#glzd').val(selected.stnm) $('#qdj').val(selected.gl_qdj.substring(0,selected.gl_qdj.length - 2)) self.currentHd = selected // 获取水面线数据 self.getSmxData(selected.river_code, selected.default_smx) // 获取最近起点距数据 self.getMin(selected.default_smx,selected.gl_qdj) // 获取实时水位 if (self.waterEntity) self.map.entities.remove(self.waterEntity) //地图定位 self.map.camera.flyTo({ destination: Cesium.Cartesian3.fromDegrees(selected.river_origin, selected.qd_lat, 50000), }); self.hdSelect.hide() }) //水面线选择框改变事件 this.smxSelect.change(function () { let selected = $(this).val() self.getPointData(selected) }) // //水位输入框按下回车事件 // $('#sw-input').keypress(function (event) { // if (event.which == 13) { // self.analysisTableList.forEach(e => { // e.sw = self.calculateSw(e.water, sw) // }) // self.loadPagination(self.analysisTableList, "analysis-pagination") // } // }) //搜索按钮点击事件 $('#search-button').click(function () { let searchName = $('#search-name').val() let filterArray = self.historyTableList.filter(e => { return e.name.indexOf(searchName) != -1 }) self.loadPagination(filterArray, "history-pagination") }) $('#restore-icon').click(function () { if (self.popupLayer){ self.popupLayer.show() $(this).hide() } }) }, onOpen: function onOpen() { this.init() //面板打开的时候触发 (when open this panel trigger) this.map.scene.globe.baseColor = Cesium.Color.BLACK; //切换底图 $($('div.cesium-viewer').find('.cesium-baseLayerPicker-choices')[0]).children('div:eq(0)').trigger('click'); $($('div.cesium-viewer').find('.cesium-baseLayerPicker-choices')[1]).children('div:eq(2)').trigger('click'); //设置地图初始位置 this.map.camera.setView({ destination: Cesium.Cartesian3.fromDegrees(116.016905, 25.884684, 10000), }); }, onClose: function onClose() { //面板关闭的时候触发 (when this panel is closed trigger) this.deleteEntities(this.pointEntities) 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() $('#smx-select option').remove() $('#sw-input').val("") $('#hd-input').val("") //清空表格数据 $('.analysis-box-list').empty(); $('.history-box-list').empty(); $('#analysis-pagination').hide() this.analysisTableList = [] //关闭分析窗口 if (this.evaluateLayerIndex){ layer.close(this.evaluateLayerIndex) this.evaluateLayerIndex = "" $('#restore-icon').hide() } }, onMinimize: function onMinimize() { this.resize(); }, onMaximize: function onMaximize() { this.resize(); }, resize: function resize() { }, destroy: function destroy() { //销毁的时候触发 //todo //do something before this func this.inherited(arguments); }, //绑定html元素,方便操作 bindHtmlElement: function () { this.analysisBtn = $('.analysis-button') this.historyBtn = $('.history-button') this.divFloodAnalysis = $('.flood-analysis') this.divFloodHistory = $('.flood-history') this.hdSelect = $('#hd-select') this.smxSelect = $('#smx-select') }, //初始化 init() { //重置html元素状态 this.divFloodHistory.hide() this.divFloodAnalysis.show() $("input[type=radio][name=middleRadio][value='realtime']").prop('checked', 'checked') this.hdSelect.hide() $('.fold-btn').addClass('open') $('.fold-btn').removeClass('close') $('.content').show() $("#sw-input").prop('disabled', true); $('#search-name').val("") $('#glzd').val("") $('#qdj').val('') $('.restore-icon').hide() this.isOpen = true this.analysisBtn.addClass('choose-button') this.analysisBtn.removeClass('unchoose-button') this.historyBtn.removeClass('choose-button') this.historyBtn.addClass('unchoose-button') this.currentHd = null this.currentSmxcode = "" //获取河段数据 this.getHdData() }, //获取河段下拉数据 getHdData() { const self = this $.ajax({ url: self.url.riverwaySelectName, type: 'post', dataType: 'json', jsonp: 'callback', jsonpCallback: 'data', data: {}, success: function (res) { let data = res.data self.hdDataList = data self.hdSelect.find("option").remove();//添加新值 删除旧值 data.forEach(e => { self.hdSelect.append(""); }) } }); }, //获取水面线数据 getSmxData(hdid, defaultId) { const self = this $.ajax({ url: self.url.waterlineSelectName, type: 'post', dataType: 'json', jsonp: 'callback', jsonpCallback: 'data', data: { hdid: hdid }, success: function (res) { let data = res.data self.smxDataList = data self.smxSelect.find("option").remove();//添加新值 删除旧值 if (data.length <= 0) { $('#flood-tbody').html("") $('#analysis-pagination').hide() self.deleteEntities(self.pointEntities) if (self.drawingPolyline){ self.map.entities.remove(self.drawingPolyline); } } data.forEach(e => { self.smxSelect.append(""); if (e.smxcode == defaultId) { $("#smx-select option[value=" + e.smxcode + "] ").attr("selected", true) self.smxSelect.trigger("change") } }) } }); }, //获取点数据 getPointData(smxcode) { this.currentSmxcode = smxcode const self = this $.ajax({ url: self.url.childpage, type: 'get', dataType: 'json', jsonp: 'callback', jsonpCallback: 'data', data: { parentId: smxcode, size: 9999999 }, success: function (res) { if (res.code == 200) { let data = res.data.records self.createPointAndLine(data,self.pointEntities) self.analysisTableList = data self.getRealTimeWaterByhdId(self.currentHd.id) } } }); }, //创建点线 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), billboard:{ image: "./images/jiangshui_sq.png", pixelOffset: new Cesium.Cartesian2(0, 0), color: new Cesium.Color(20, 20, 0, 1), width: 14, height: 14, heightReference : Cesium.HeightReference.CLAMP_TO_GROUND, disableDepthTestDistance: Number.POSITIVE_INFINITY } }); // 清空使用 pointEntities.push(temp) } //防止切换面板后渲染水面出错 this.map.scene.globe.depthTestAgainstTerrain = true; // 先清空 后画线 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: "", 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") } } }); }, /** * 加载分页器 * @param tableData 需要加载的所有数据 * @param pageElementId 分页html的id * @param tableElementId tbody id */ loadPagination(tableData, pageElementId) { if (tableData.length <= 0 && pageElementId == "analysis-pagination") { $('#analysis-pagination').hide() } if (tableData.length <= 0 && pageElementId == "history-pagination") { $('#history-pagination').hide() } let pageSize = 22 let count = Math.ceil(tableData.length / pageSize); const self = this $('#' + pageElementId).pagination({ mode: 'fixed', jump: true, coping: false, pageCount: count, callback: function (index) { let listdata = []; //显示页数 var index = (index.getCurrent() - 1) * pageSize; for (let i = index; i < index + pageSize; i++) { listdata.push(tableData[i]); if (i == tableData.length - 1) { break; } } pageElementId == "analysis-pagination" ? self.createList(listdata,"洪水淹没分析") : self.createList(listdata,"历史风险图") } }); //首次加载前11条数据 let startData = []; if (tableData.length > pageSize) { for (let i = 0; i < pageSize; i++) { startData.push(tableData[i]); } } else { for (let i = 0; i < tableData.length; i++) { startData.push(tableData[i]); } } pageElementId == "analysis-pagination" ? self.createList(startData,"洪水淹没分析") : self.createList(startData,"历史风险图") }, /** * 计算水位 * @param waterline 水面线高度 * @param number 差值 */ calculateSw(waterline, sub) { let sw = this.floatAdd(Number(waterline), Number(sub)) return sw }, //减法函数 accSub(arg1,arg2){ let r1,r2,m,n; r1 = arg1.toString().length try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0} m=Math.pow(10,Math.max(r1,r2)); //last modify by deeka //动态控制精度长度 n=(r1>=r2)?r1:r2; return ((arg1*m-arg2*m)/m).toFixed(n); }, //获取实时水位 getRealTimeWaterByhdId(hdid) { const self = this // 实时 需要请求服务器获取实时水位数据 if ($('input[name=middleRadio]:checked').val() == 'realtime') { $.ajax({ url: self.url.getRealTimeWaterByhdId, type: 'get', dataType: 'json', jsonp: 'callback', jsonpCallback: 'data', data: { hdId: hdid }, success: function (res) { if (res.code == 200) { let sub = res.data $('#sw-input').val(sub) self.getSw(sub) } } }); } else { self.getSw($('#sw-input').val()) } }, //计算水位 getSw(val){ const self = this let chazhi = 0 if (val > 0) { chazhi = self.accSub(val,self.currentNearPoint.water) } let list = JSON.parse(JSON.stringify(self.analysisTableList)) list.forEach(e => { e.lng = Number(e.lng).toFixed(4) e.lat = Number(e.lat).toFixed(4) e.sw = self.calculateSw(e.water, chazhi) e.water = Number(e.water).toFixed(2) e.sw = Number(e.sw).toFixed(2) }) self.loadPagination(list, "analysis-pagination") }, //获取最接近水文站的值 getMin(smxcode, glQdj) { const self = this $.ajax({ url: self.url.getCoordinatesMinQdj, type: 'get', dataType: 'json', jsonp: 'callback', jsonpCallback: 'data', data: { smxcode:smxcode, glQdj:glQdj }, success: function (res) { if (res.code == 200) { self.currentNearPoint = res.data } } }); }, //保存历史风险图 saveHistoryData() { const self = this $.ajax({ url: self.url.saveHistoryData, type: 'get', dataType: 'json', jsonp: 'callback', jsonpCallback: 'data', data: {}, success: function (res) { if (res.code == 200) { self.getHistoryList() } } }); }, //防止出现两个小数相加出现很多0的情况 floatAdd(arg1, arg2) { let 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; }, //删除地图上的标注点位 deleteEntities(entities) { entities.forEach(e => { this.map.entities.remove(e) }) entities = [] }, //评估分析弹窗 evaluatePopup(flag) { const self = this let selectSmx = this.smxDataList.filter(e=>{ return e.smxcode == this.currentSmxcode }) let isAnalysis = flag == 'analysis'?true:false let parentData = {} if (isAnalysis){ parentData.data = this.evaluateData parentData.hd = this.currentHd parentData.smx = selectSmx[0] parentData.sw = $('#sw-input').val() parentData.point = this.analysisTableList }else { parentData.data = this.evaluateData parentData.hd = this.currentSelectHistoryData.smxVal.hd parentData.smx = this.currentSelectHistoryData.smxVal.smx parentData.sw = this.currentSelectHistoryData.smxVal.sw parentData.point = this.currentSelectHistoryData.smxVal.point } let url = './corelib/common/popup/evaluateAnalysis.html' let top = ($(window).height() - 764) / 2; let left = ($(window).width() -465); layer.open({ title: '分析结果', shade: 0, type: 2, maxmin: true, //开启最大化最小化按钮 area: ['465px', '818px'], skin: 'floodAnalysis', offset: [top,left], content: url + "?parentData=" + encodeURIComponent(JSON.stringify(parentData)),//使用encodeURIComponent转码,避免中文字符乱码,避免url截取错误 id: "floodAnalysisLayer", closeBtn: 0, shade: 0, move:false, maxmin: false, //设置默认不在左下角 minStack:false, zIndex:-100000, success:function (layero,index) { $('.layui-layer-setwin .layui-layer-min cite').css("background-color",'white') //绑定父子之间的关系,用于数据传递,缺少则无法传递 let body = layer.getChildFrame("body", index); //得到iframe页的窗口对象 let iframeWin = window[layero.find('iframe')[0]['name']]; self.evaluateLayerIndex = index if (isAnalysis){ iframeWin.$('#save-btn').show() }else { iframeWin.$('#save-btn').hide() } self.popupLayer = $('.layui-layer') iframeWin.$('#close-btn').click(function () { self.popupLayer.hide() $('#restore-icon').show() }) if ($('.layui-layer-max').hasClass('layui-layer-maxmin')){ $('.layui-layer-max').show() }else { $('.layui-layer-max').hide() } //图片放大方法 // 思路: 获取所有要用的 => 然后通过点击图片显示弹窗 => 赋值到弹窗里面 => 图片赋值 => 文本赋值 // 获取点击图片 let img = iframeWin.$('#show-img') // 获取弹窗 let modal = $('#myModal') // 弹窗图片 let contImg = $('#img01') img.click(function () { modal.css({ "display":"block", 'position':'fixed', 'background-color':'#2f353cd4' }) contImg.prop('src',img.prop('src')) }) // 点击x按钮关闭弹窗 let closeBox = $('.close') closeBox.click(function () { modal.hide() }) }, cancel:function (layero,index) { self.popupLayer.hide() $('#restore-icon').show() return false } }); }, //http://dgrid.io/tutorials/1.0/hello_dgrid/ 创建表格 createList: function (dataList, txt) { const self = this let CustomGrid = declare([Grid, Keyboard, Selection,Editor]); let column, tab, moon, dauy; let formatter = function (value,object) { if (self.currentNearPoint.id == object.id) { return '' + value + '' } else { return value } } if (txt == "洪水淹没分析") { $('.analysis-box-list').empty(); column = { location: { label:'位置', className:'dgrid-cell_200', formatter:formatter }, origin: { label:'起点距', className:'dgrid-cell_40', formatter:function (value,object) { if (self.currentNearPoint.id == object.id) { return '' + value.substring(0,value.length - 2) + '' } else { return value.substring(0,value.length - 2) } } }, water: { label:'水面线', className:'dgrid-cell_60', formatter:formatter }, sw: { label:'水位', className:'dgrid-cell_60', formatter:formatter }, // lng:{ // label:'经度', // formatter:formatter // }, // lat:{ // label:'纬度', // formatter:formatter // }, } tab = 'analysis-tab1-grid' } else if (txt == "历史风险图") { $('.history-box-list').empty(); column = { // radio:{ label: "", field: "radio", editor: 'radio' }, name: '名称', } tab = 'history-tab2-grid' } let grid = new CustomGrid({ columns: column, selectionMode: 'single', // for Selection; only select a single row at a time cellNavigation: false, // for Keyboard; allow only row-level keyboard navigation }, tab); grid.startup(); function makeHandler (grid, type, dir) { return function (event) { let tip = $('#tableTip') let obj = grid[type](event) if (dir == 'entered' && obj.column.field == 'location' ){ tip.show() tip.css({ "top":(194+(Number(obj.row.id)*24.5))+'px', // "left":event.offsetX+10+'px' }) tip.html(obj.row.data.location) }else if (dir == 'left'){ tip.hide() } }; } grid.on(on.selector('.dgrid-content .dgrid-cell', mouse.enter), makeHandler(grid, 'cell', 'entered')); grid.on(on.selector('.dgrid-content .dgrid-cell', mouse.leave), makeHandler(grid, 'cell', 'left')); //防止绑定多次点击事件 if (this.dgridSelectEvent){ this.dgridSelectEvent.remove() } this.dgridSelectEvent = grid.on("dgrid-select", function(evt){ //获取行数据 let data = evt.rows[0].data //历史风险、洪水分析,表格不同的点击事件 if (data.smxVal){ self.currentSelectHistoryData = data if (data.smxVal.point.length>0){ self.deleteEntities(self.pointEntities) if (self.drawingPolyline) self.map.entities.remove(self.drawingPolyline); if (self.waterEntity) self.map.entities.remove(self.waterEntity) $('#sw-input').val("") $('#hd-input').val("") $('#hd-input').trigger("input") $('#smx-select option').remove() //清空表格数据 $('.analysis-box-list').empty(); $('#analysis-pagination').hide() //清空关联站和起点距 $('#glzd').val("") $('#qdj').val('') self.analysisTableList = [] self.createPointAndLine(data.smxVal.point,self.pointEntities) self.map.camera.flyTo({ destination: Cesium.Cartesian3.fromDegrees(data.lon, data.lat, 50000), }); self.drawWater('history') } }else { self.map.camera.flyTo({ destination: Cesium.Cartesian3.fromDegrees(data.lng, data.lat, 3000), }); } }); grid.renderArray(dataList); }, // 洪水淹没效果 drawWater(flag) { //关闭分析窗口 if (this.evaluateLayerIndex){ layer.close(this.evaluateLayerIndex) $('#restore-icon').hide() this.evaluateLayerIndex = "" } //地图定位 // this.map.camera.flyTo({ // destination: Cesium.Cartesian3.fromDegrees(115.93791, 25.989108, 5000), // }); //显示进度条 $('.dong-progress .container #progress_bar').width(0); $('.dong-progress').stop().hide(); this.showWater = true this.waterEntity && this.map.entities.remove(this.waterEntity) const waterCoord = [116.0072, 25.9058, 100, 116.0546, 25.9012, 100 , 116.0457, 25.8611, 100, 115.9859, 25.8740 ,100] let startHeight = 169 const targetHeight = 200 this.waterEntity = this.map.entities.add({ polygon: { hierarchy: Cesium.Cartesian3.fromDegreesArrayHeights(waterCoord), material: Cesium.Color.fromBytes(64, 157, 253, 200), perPositionHeight: true, extrudedHeight: new Cesium.CallbackProperty(() => { return startHeight }, false) } }) $('.dong-progress').stop().show(); // 总长度 let totalWidth = $('.dong-progress .container').width(); // 过度长度 let excessiveWidth = totalWidth / 100; let watchWidth = 0; // 进度条的定时器 let proTime = setInterval(function () { watchWidth += excessiveWidth; if (watchWidth > totalWidth) { watchWidth = totalWidth; } $('.dong-progress .container #progress_bar').width(watchWidth); }, 22); const waterInterval = setInterval(() => { if (startHeight < targetHeight) { startHeight += 5 if (startHeight >= targetHeight) { startHeight = targetHeight clearInterval(waterInterval) if (watchWidth < totalWidth) { watchWidth = totalWidth; } clearInterval(proTime); //隐藏进度条 $('.dong-progress .container #progress_bar').width(0); $('.dong-progress').stop().hide(); this.showWater = false this.evaluatePopup(flag) } // 使用该方式会闪烁,改用 Cesium.CallbackProperty 平滑 // this.waterEntity.polygon.extrudedHeight = startHeight } }, 1000*0.5) } }); });