/** *@Author : TengZH *@CreateTime : 2018-11-28 10:34 *@Description : */ define([ 'dojo/query', "dojo/_base/declare", "dojo/_base/lang", "base/AppEvent", "base/ConfigData", "iframe/jcyj/js/dataShow.js", "dojo/dom", "dojo/dom-construct", "dojo/dom-attr", "dojo/dom-class", "dojo/dom-style", "dojo/on", "dojo/fx", "jslibs/echarts.min", "widgets/myModules/config", "dojo/domReady!" ], function (dojoQuery, declare, lang, AppEvent, ConfigData, dataShow, dom, domConstruct, domAttr, domClass, domStyle, on, fx, echarts, config) { var modules = declare('monitorSpots', null, { _layui: null, _laydate: null, item: null, domIndex: null, constructor: function (options) { moniObj = this; //初始化layui弹窗 layui.use('layer', lang.hitch(this, function () { this._layui = layui.layer; })); layui.use('laydate', lang.hitch(this, function () { this._laydate = layui.laydate; })); //动态添加CSS样式 domConstruct.create("link", { href: 'widgets/myModules/monitorSpots.css', type: 'text/css', rel: 'stylesheet' }, document.getElementsByTagName('head')[0]); }, popup: function (e) { moniObj.item = e.attributes; var title = this.item.name || '监控点(一)'; if (this.domIndex) this._layui.close(this.domIndex); this.domIndex = this._layui.open({ type: 1, // offset: ['center', 'center'], area: ['1000px', '80%'], resize: false, scrollbar: false, closeBtn: 2, shade: 0, title: [title, 'line-height: 40px;height: 40px;font-size:16px;font-weight:bolder;color:#108bab;letter-spacing: 1px;'], content: '
' + '
' + '
', success: this.onSuccess, cancel: this.onCancel }); }, onSuccess: function (layero, index) { if($("#tabcontainer").css("display") == "none"){ $('.layui-layer').css({//自动居中无效--手动设置弹窗居中 position: 'absolute', top: ($(window).height() - $('.layui-layer').height()) / 2, left: ($(window).width() - $('.layui-layer').width()) / 2, }); }else{ if($(window).width() < 1410 ){ $('.layui-layer').css({//自动居中无效--手动设置弹窗居中 position: 'absolute', top: ($(window).height() - $('.layui-layer').height()) / 2, left: ($(window).width() - $('.layui-layer').width()) / 2, }); }else{ $('.layui-layer').css({//自动居中无效--手动设置弹窗居中 position: 'absolute', top: ($(window).height() - $('.layui-layer').height()) / 2, left: ($(window).width() - $('.layui-layer').width() + 400) / 2, }); } } //添加tab按钮和生成第一个选中按钮的内容 var tabControl = layero[0].children[1].children[0].children[0]; var tabContainer = layero[0].children[1].children[0].children[1]; var ul = domConstruct.create('ul', {}, tabControl); // 遍历属性生成tab标签 for (var i in moniObj.item.itemList) { var li = domConstruct.create('li', { data: i, style: 'background:url(widgets/myModules/images/tab/' + i + '.png) 20px center no-repeat #F4F4F4;' }, ul); domConstruct.create('span', { innerHTML: i, }, li); // 注册每一个tab标签的点击事件 on(li, 'click', lang.hitch(layero[0].children[1].children[0], function (e) { var target = e.target.nodeName.toUpperCase() == 'LI' ? e.target : e.target.parentNode; if (!domClass.contains(target, 'monitorSpots-tab-control-actived')) { dojoQuery('.monitorSpots-tab-control-actived').removeClass('monitorSpots-tab-control-actived'); domClass.add(target, 'monitorSpots-tab-control-actived'); //先销毁当前容器 domConstruct.destroy('monitorSpots-tab-container'); var domNode = domConstruct.create('div', { id: 'monitorSpots-tab-container', class: 'monitorSpots-tab-container' }, this); moniObj.domCreate(target.attributes.data.value, domNode); } })); } //默认选中第一个tab标签,并填充内容 dojoQuery('.monitorSpots-tab-control ul li').forEach(function (node, index) { if (index == 0) { domClass.add(node, 'monitorSpots-tab-control-actived'); moniObj.domCreate(domAttr.get(node, 'data'), tabContainer); } }); }, onCancel: function (index, layero) { }, destroy: function () { layui.closeAll('page'); }, domCreate: function (name, domNode) {//根据tab标签填充内容 switch (name) { case '实时数据': var leftdiv = domConstruct.create('div', { class: 'monitorSpots-tab-container-left' }, domNode); var timebar = domConstruct.create('p', { innerHTML: new Date().format("yyyy-MM-dd hh:mm:ss"), id: 'data-time' }, leftdiv); var tableDiv = domConstruct.create('div', { class: 'monitorSpots-table-container' }, leftdiv); var table = domConstruct.create('table', { id: 'monitor-table', innerHTML: '' }, tableDiv); var rightdiv = domConstruct.create('div', { class: 'monitorSpots-tab-container-right' }, domNode); var rightdiv1 = domConstruct.create('div', { class: 'monitorSpots-tab-container-right-box' }, rightdiv); var pielist = domConstruct.create('div', { class: 'pie-list' }, rightdiv1); moniObj.environmentalMonitor(document.getElementById('monitor-table').childNodes[0], pielist); break; case '历史监测': case '历史数据': var top = domConstruct.create('div', { class: 'monitorSpots-tab-container-top' }, domNode); var bottom = domConstruct.create('div', { class: 'monitorSpots-tab-container-bottom' }, domNode); moniObj.monitorHistory(top, bottom); break; case '全景': if (moniObj.item.quanjingUrl) { var center = domConstruct.create('div', { class: 'monitorSpots-tab-container-center' }, domNode); var iframe = domConstruct.create('iframe', { src: moniObj.item.Url, frameborder: '0' }, center); } else { var center = domConstruct.create('div', { class: 'monitorSpots-tab-container-center', innerHTML: '
—_—!!~暂无全景信息
' }, domNode); } break; case '视频监控': if (moniObj.item.hasOwnProperty('videoUrl') && moniObj.item.videoUrl) { var center = domConstruct.create('div', { class: 'monitorSpots-tab-container-center' }, domNode); var iframe = domConstruct.create('iframe', { src: moniObj.item.videoUrl, frameborder: '0' }, center); } else { var center = domConstruct.create('div', { class: 'monitorSpots-tab-container-center', innerHTML: '
—_—!!~暂无视频信息
' }, domNode); } break; case '生态监测': var topleftdiv = domConstruct.create('div', { class: 'monitorSpots-tab-container-top-left' }, domNode); var table = domConstruct.create('table', { id: 'ecological-table', innerHTML: '' }, topleftdiv); var toprightdiv = domConstruct.create('div', { class: 'monitorSpots-tab-container-top-right' }, domNode); domConstruct.create('p', { class: 'monitorSpots-tab-container-bottom-p', innerHTML: 'EI=0.25x生物丰度指数+0.2x植被覆盖指数+0.2x水网密度指数+0.2x土地退化指数+0.15x环境质量指数' }, domNode); moniObj.ecologicalRegime(document.getElementById('ecological-table').childNodes[0], toprightdiv); break; case '基本信息': var center = domConstruct.create('div', { class: 'monitorSpots-tab-container-center' }, domNode); var tableContainer = domConstruct.create('div', {class: 'monitorSpots-tab-container-center-table-container'}, center) var table = domConstruct.create('table', {id: 'base-info-tale'}, tableContainer); var tbody = domConstruct.create('tbody', {}, table); moniObj.baseInfo(tbody); break; default: break; } $('.monitorSpots-tab-control ul>li').eq(2).find('span').css({'float':'left','margin-left':'70px'}) $(".monitorSpots-tab-container-right").mCustomScrollbar("destroy"); $(".monitorSpots-tab-container-right").mCustomScrollbar(); }, environmentalMonitor: function (tableBody, pieList) { // $.ajax({ // // url: config.ajaxUrl['实时数据'], // url: getNativePath() + 'naturalFactors/findElementRealTimeByStcd.do', // type: 'get', // data: {stcd: moniObj.item.id}, // dataType: 'json', // async: true, // success: function (e) { // console.log(e.data); // config.item = []; // var tableData = {};//表格数据 // var pieData = {};//饼图数据 // var flag = 0; // if(e.data != null && e.data.length>0 && flag == 0){ // flag++; // if(e.data[0]['UPTIME']){ // for (var eKey in e.data) {//遍历结果 // var filedList = e.data[eKey]; // for (var filedListKey in filedList) { // if (filedListKey != 'UPTIME') { // var item = filedList[filedListKey]; // config.item.push([filedListKey, filedList[filedListKey].fieldName, filedList[filedListKey].unit]);//存储当前所包括的监测指标 // tableData[filedList[filedListKey].fieldName] = filedList[filedListKey].explain ? filedList[filedListKey].explain : // filedList[filedListKey].value ? (filedList[filedListKey].value).toFixed(2) + ' ' + filedList[filedListKey].unit : '0 ' + filedList[filedListKey].unit; // pieData[filedList[filedListKey].fieldName] = { // value: filedList[filedListKey].value ? parseFloat((filedList[filedListKey].value).toFixed(2)) : 0, // unit: filedList[filedListKey].unit // }; // } else { // dojoQuery('#data-time').forEach(function (node) { // node.innerHTML = filedList[filedListKey]; // }); // } // } // } // }else{ // $('#monitorSpots-tab-container').html('
—_—!!~暂无实时数据
') // } // }else{ // $('#monitorSpots-tab-container').html('
—_—!!~暂无实时数据
') // } // var cow = 0, count = 0; // for (var itemKey in tableData) { // //填充表格,每行四列 // if (cow == 0) { // var tr = domConstruct.create('tr', {}, tableBody); // } // cow++; // domConstruct.create('td', { // innerHTML: itemKey, // style: 'background:url(widgets/myModules/images/monitorItem/' + itemKey + '.png) 20px center no-repeat;background-size: 25px;' // }, tr);//指标名称 // domConstruct.create('td', {innerHTML: tableData[itemKey]}, tr);//指标监测值 // if (cow == 2) { // cow = 0; // } // // 统计监测指标个数 // count++; // //添加对应的实时数据仪表盘dom // var piedom = domConstruct.create('div', {class: 'pie-div'}, pieList); // //构造仪表盘 // config.pieoption.series[0].data[0].value = pieData[itemKey].value; // config.pieoption.series[0].data[0].name = itemKey; // config.pieoption.series[0].min = config.valueLimit.hasOwnProperty(itemKey) ? config.valueLimit[itemKey].min : 0; // config.pieoption.series[0].max = config.valueLimit.hasOwnProperty(itemKey) ? config.valueLimit[itemKey].max : 100; // config.pieoption.series[0].detail.formatter = function (value) { // return value.toString() + pieData[itemKey].unit; // }; // config.pieoption.tooltip.formatter = "{b}: {c}" + pieData[itemKey].unit; // var pie = echarts.init(piedom); // pie.setOption(config.pieoption, true); // // setTimeout((function (e) { // // e.resize(); // // })(pie), 1000); // } // //根据监测指标个数设置容器宽度,并判断是否生成切换按钮 // if (count > 4) { // var leftbutton = domConstruct.create('button', { // class: 'pie-left' // }, pieList.parentNode); // var rightbutton = domConstruct.create('button', { // class: 'pie-right' // }, pieList.parentNode); // var remainder = count % 2; // if (remainder) { // var width = 235 * (parseInt(count / 2) + 1); // } else { // var width = 235 * (parseInt(count / 2)); // } // width = width.toString() + 'px'; // domStyle.set(pieList, 'width', width); // //绑定左右切换按钮点击事件 // on(leftbutton, 'click', lang.hitch(pieList, function () { // var left = domStyle.get(this, 'left'); // var domWidth = domStyle.get(this, 'width'); // var showWidth = domStyle.get(this.parentNode, 'width'); // if (left < 0 && (left % showWidth) == 0) { // left += showWidth; // fx.slideTo({node: this, left: left, units: "px"}).play(); // } // })); // on(rightbutton, 'click', lang.hitch(pieList, function () { // var right = domStyle.get(this, 'left'); // var domWidth = domStyle.get(this, 'width'); // var showWidth = domStyle.get(this.parentNode, 'width'); // if (right <= 0 && domWidth > (showWidth - right) && (right % showWidth) == 0) { // right -= showWidth; // fx.slideTo({node: this, left: right, units: "px"}).play(); // } // })); // } // $(".monitorSpots-table-container").mCustomScrollbar("destroy"); // $(".monitorSpots-table-container").mCustomScrollbar(); // } // }); }, monitorHistory: function (topDom, bottomDom) { //生成条件选择框,和按钮 var optionstr = ''; for (var i = 0; i < config.item.length; i++) { optionstr += '' } var itemSelect = domConstruct.create('select', { id: 'item-select', innerHTML: optionstr }, topDom); var yesterday = new Date().getTime() - 1000 * 60 * 60 * 8; var beginTimeSelect = domConstruct.create('input', { id: 'begin-time', readOnly: 'readOnly', value: new Date(yesterday).format('yyyy-MM-dd hh:mm:ss') }, topDom); var endTimeSelect = domConstruct.create('input', { id: 'end-time', readOnly: 'readOnly', value: new Date().format('yyyy-MM-dd hh:mm:ss') }, topDom); var submit = domConstruct.create('button', { id: 'item-select', innerHTML: '查询' }, topDom); //layer初始化时间选择 moniObj._laydate.render({ elem: '#begin-time', //指定元素 type: 'datetime' }); moniObj._laydate.render({ elem: '#end-time', //指定元素 type: 'datetime' }); //生成折线图dom,并初始化第一项监测指标的折线图 var lineDom = domConstruct.create('div', { class: 'line-div' }, bottomDom); var line = echarts.init(lineDom); function freshLine(item) { // $.ajax({ // // url: config.ajaxUrl['历史数据'], // url: getNativePath() + 'naturalFactors/findElementsByStcdAndElementId.do', // type: 'post', // data: { // stcd: moniObj.item.id, // startTime: domAttr.get('begin-time', 'value'), // endTime: domAttr.get('end-time', 'value') // }, // dataType: 'json', // async: true, // success: function (e) { // if(e.data.length>0){ // for (var dataKey in e.data) {//遍历结果,筛选对应指标值 // if (e.data[dataKey].filedsName == item) { // var data = e.data[dataKey].datas; // var unit = e.data[dataKey].units != '无' ? e.data[dataKey].units : ''; // } // } // var seriesdata = []; // var xAxisdata = []; // for (var dataKey1 in data) { // seriesdata.push(parseFloat(data[dataKey1].value.toFixed(2))); // xAxisdata.push(data[dataKey1].update); // } // if (xAxisdata.length > 10) { // config.lineoption.dataZoom[0].show = true; // config.lineoption.dataZoom[0].endValue = xAxisdata.length - 1; // config.lineoption.dataZoom[0].startValue = xAxisdata.length - 11; // } // if (xAxisdata.length > 0) { // config.lineoption.series[0].name = item; // config.lineoption.yAxis.name = item + " " + unit; // config.lineoption.xAxis.data = xAxisdata; // config.lineoption.series[0].data = seriesdata; // config.lineoption.tooltip.formatter = "{b}
{a}: {c} " + unit; // line.setOption(config.lineoption, true); // } // }else{ // $('#monitorSpots-tab-container').html('
—_—!!~暂无历史数据
') // } // } // }); } freshLine(domAttr.get('item-select', 'value'));//默认加载第一项 //绑定查询按钮点击事件 on(submit, 'click', lang.hitch(line, function () { config.lineoption.series[0].name = itemSelect.options[itemSelect.options.selectedIndex].innerHTML; config.lineoption.yAxis.name = itemSelect.options[itemSelect.options.selectedIndex].innerHTML; // config.lineoption.series[0].data = ydata; // config.lineoption.xAxis.data = xdata; // config.lineoption.tooltip.formatter = "{a}: {c}"+config.item[0]; this.setOption(config.lineoption, true); freshLine(domAttr.get('item-select', 'value')); })); on(itemSelect, 'change', function () {//指标切换自动刷新 freshLine(domAttr.get('item-select', 'value')); }); }, ecologicalRegime: function (tableBody, rightDom) { var item = { '植被覆盖指数': 70, '生物丰度指数': 52, '环境质量指数': 85, '土地退化指数': 45, '水网密度指数': 30 }; config.item = []; var cow = 0, EI = item['植被覆盖指数'] * 0.2 + item['生物丰度指数'] * 0.25 + item['环境质量指数'] * 0.15 + item['土地退化指数'] * 0.2 + item['水网密度指数'] * 0.2; config.radaoption.radar.indicator = []; config.radaoption.series[0].data[0].value = []; for (var itemKey in item) { config.item.push(itemKey); //填充表格,每行两列 if (cow == 0) { var tr = domConstruct.create('tr', {}, tableBody); } cow++; domConstruct.create('td', { innerHTML: itemKey, style: 'background:url(widgets/myModules/images/ecologicalRegime/' + itemKey + '.png) 30px center no-repeat' }, tr);//指标名称 domConstruct.create('td', {innerHTML: item[itemKey]}, tr);//指标监测值 if (cow == 1) { cow = 0; } //设置雷达图各项指标值 config.radaoption.radar.indicator.push({name: itemKey, max: 100}); config.radaoption.series[0].data[0].value.push(item[itemKey]); } //在列表底部添加生态状况指数 var lasttr = domConstruct.create('tr', {}, tableBody); domConstruct.create('td', { innerHTML: '生态状况指数', style: 'background:url(widgets/myModules/images/ecologicalRegime/生态状况指数.png) 30px center no-repeat' }, lasttr);//指标名称 domConstruct.create('td', {innerHTML: EI}, lasttr);//指标监测值 //初始化雷达图 var radadom = domConstruct.create('div', { class: 'rada-div' }, rightDom); var rada = echarts.init(radadom); rada.setOption(config.radaoption, true); //在雷达图右上角生成生态状况指数级别 var ecoClass, backgroundColor, backgroundColor2; if (EI >= 80) { ecoClass = '优'; backgroundColor = '#55a67e'; backgroundColor2 = '#85cca9'; } else if (EI >= 60) { ecoClass = '良'; backgroundColor = '#F6AD46'; backgroundColor2 = '#FAC57A'; } else { ecoClass = '差'; backgroundColor = '#fa4650'; backgroundColor2 = '#ff87a5'; } var coverdiv = domConstruct.create('div', { class: 'cover-div', innerHTML: '
' + ecoClass + '
生态状况
' }, rightDom); }, baseInfo: function (dom) { var item = { "displayFieldName": "NAME", "fieldAliases": { "OBJECTID": "OBJECTID", "PILOT_YEAR": "试点年份", "ACCEPTED": "是否通过验收", "ACCEPTED_YEAR": "通过验收年份", "LON_LAT": "经纬度", "NAME": "湿地公园名称", "TYPE": "湿地公园级别", "TOTAL_AREA": "湿地公园总面积", "WETLAND_AREA": "湿地面积", "CONSERVATION_AREA": "保育区面积", "REBUILD_AREA": "恢复重建区面积", "COUNTY": "县区", "CITY": "州市", "SHAPE.STArea()": "SHAPE.STArea()", "SHAPE.STLength()": "SHAPE.STLength()" }, "features": [{ "attributes": { "OBJECTID": 20, "PILOT_YEAR": "2008年", "ACCEPTED": "是", "ACCEPTED_YEAR": "2011年", "LON_LAT": "E116°23′39″\uFF5E116°44′38″N28°56′52″\uFF5E29°13′31″", "NAME": "江西东鄱阳湖国家湿地公园", "TYPE": "国家级", "TOTAL_AREA": 36285, "WETLAND_AREA": 35116.099999999999, "CONSERVATION_AREA": 24612, "REBUILD_AREA": 1853, "COUNTY": "鄱阳县", "CITY": "上饶市", "SHAPE.STArea()": 0.033932051896044868, "SHAPE.STLength()": 2.5932066792505917 }, }] } var count = 0;//计数器 for (var itemKey in item.features[0].attributes) { var alias = item.fieldAliases[itemKey]; var test = new RegExp("[\\u4E00-\\u9FFF]+", "g"); if (test.test(alias)) {//正则表达式过滤掉纯英文字符 if (count == 0) { var tr = domConstruct.create('tr', {}, dom); } var td = domConstruct.create('td', {innerHTML: alias + ':'}, tr); domConstruct.create('td', {innerHTML: item.features[0].attributes[itemKey]}, tr); count++; if (count == 2) {//每两项就换行 count = 0; } } } } }); return modules; });