/** * [ONEMAP.M.gcmsList] * @return {[object]} */ define(['html!templates/gcms/gcmsList' // 'css!styles/gcms/gcmsList' ],function(tplLayout){ /** * 模块数据 用于数据存储和外部调用 * @type {Object} * 数据存放 */ var modValue = { //参数 options:{}, //查询面板高度 默认为0 searchPanelHeight:0, markersGroupGuid:null, markerObj:{}//标记点集合 }; /** * 模块初始化 * @return {[type]} [description] */ function init(options){ // remove(); modValue.searchPanelHeight = 0; modValue.options = { column_name:'', page:{ page:1 }, search:{} }; for(var op in options){ modValue.options[op] = options[op]; } //设置容器布局 setLayout(); ONEMAP.D.gcmsCurColumnData = ONEMAP.D.gcmsColumnObjs[modValue.options['column_name']]; showCmsColumn(); //没有子菜单,添加 class 用来判断 $('#gcmsListContent').addClass('single'); $('#gcmsArticlesListPage').addClass('single'); $('#gcmsListSearchPanel').addClass('single'); $('#gcmsListContent').addClass('single'); bindEvent(); //订阅推送 subscribe(); //设置zIndex 为最高 // var zIndex = ONEMAP.M.sideBar.getZIndex(); // $('#gcmsListWrap').css({zIndex:zIndex}); // ONEMAP.D.currentSideBarMod = 'gcmsList'; //开启侧栏 // ONEMAP.C.publisher.publish('show','layout::sideBar'); } /** * 设置容器 */ function setLayout(){ $(tplLayout).appendTo($(".tree-list")); // $('#gcmsListWrap .panel-header h3').html(modValue.options['data']['title']); layoutResize(); $(window).resize(function(){ layoutResize(); }); // $("#gcmsListContent").mCustomScrollbar({ // scrollInertia: 1000 // }); } /** * 事件绑定 * @return {[type]} [description] */ function bindEvent(){ // $('#gcmsListWrap .panel-header .abtn-goback').bind('click',function(){ // remove(); // }) $("#infoAndTrgt").next().find(".cms.active").bind('click',function(){ // unSubscribe(); // $(this).find(".gcms-article-list").remove(); $(this).removeClass('active'); // map23DControl.group({ // action:'cleanAll', // guid:modValue.markersGroupGuid // }); // map23DControl.group({ // action:'remove', // guid:modValue.markersGroupGuid // }) }) // $("#infoAndTrgt").next().find(".cms").bind('click',function(){ // // alert(666); // }) } /** * 显示cms栏目 搜索栏,列表 * @param {[type]} options [description] * @return {[type]} [description] */ function showCmsColumn(options){ //ONEMAP.C.publisher.publish('','gcmsArticleShowRemove'); //获取栏目模型后 去获取栏目数据 getColumnModelData({ callback:function(){ map23DControl.group({ action:'cleanAll', guid:modValue.markersGroupGuid }); map23DControl.group({ action:'remove', guid:modValue.markersGroupGuid }); //地图中心点 是否聚合 if(ONEMAP.D.gcmsCurColumnModelData['field_list'].hasOwnProperty('map_center')){ if(ONEMAP.D.gcmsCurColumnModelData['field_list']['map_center']['marker_cluster']){ modValue.markersGroupGuid = map23DControl.group({ action: 'add', clustering: true, //关键 开启聚合 clusterOptions:{ maxClusterRadius:120,//多少像素距离的点会聚合 默认小于120像素内的点会聚合 polygonOptions: {weight: 1, opacity: 0.5}, //聚合范围面样式 showCoverageOnHover: true, //是否显示聚合范围 disableClusteringAtZoom: null, //设置到达指定缩放等级后禁用聚合 }//2D聚合参数 }); }else { modValue.markersGroupGuid = map23DControl.group({ action: 'add' }); } } //检测是否有初始函数,有的执行 if(ONEMAP.D.gcmsCurColumnModelData.hasOwnProperty('js_script')){ if(ONEMAP.D.gcmsCurColumnModelData.js_script.length>0){ eval("var modelFunction="+ONEMAP.D.gcmsCurColumnModelData.js_script); if(modelFunction.hasOwnProperty('init')){ modelFunction.init(); } } } //设置栏目class $('#gcmsListWrap').removeClass().addClass(ONEMAP.D.gcmsCurColumnModelData['name']); //设置栏目css $('#gcmsModelCssStyle').remove(); $('').appendTo('head'); setSearchPanel(); getColumnData(); } }); } /** * 获取栏目模型数据 * @param {[type]} options [description] * @return {[type]} [description] */ function getColumnModelData(options){ ONEMAP.V.loading.load(); $.ajax({ url: onemapUrlConfig.gcmsServiceUrl+'/showmodel/'+modValue.options['column_name'], type:"GET", dataType: 'json' }) .done(function(data) { ONEMAP.V.loading.loaded(); if(data.code == 4){ //ONEMAP.C.noPermission('getColumnModelData'); } if(data.code == 3){ //ONEMAP.C.logout('getColumnModelData'); } ONEMAP.D.gcmsCurColumnModelData = data['data']; modValue.options['page']['page_size'] = ONEMAP.D.gcmsCurColumnModelData['query_count']; options.callback(); }) .fail(function() { ONEMAP.V.loading.loaded(); }); } /** * 获取栏目数据 * @return {[type]} [description] */ function getColumnData(){ ONEMAP.C.publisher.publish('','gcmsArticleShowRemove'); ONEMAP.V.loading.load(); var ajaxData = { page:modValue.options['page']['page'] }; for(var item in modValue.options['search']){ ajaxData[item] = modValue.options['search'][item]; } //检测是否有before函数,有的执行 if(ONEMAP.D.gcmsCurColumnModelData.hasOwnProperty('js_script')){ if(ONEMAP.D.gcmsCurColumnModelData.js_script.length>0){ eval("var modelFunction="+ONEMAP.D.gcmsCurColumnModelData.js_script); if(modelFunction.hasOwnProperty('before')){ modelFunction.before(); } } } $.ajax({ url: onemapUrlConfig.gcmsServiceUrl+'/show/'+modValue.options['column_name'], type:"GET", dataType: 'json', data:ajaxData }) .done(function(data) { ONEMAP.V.loading.loaded(); if(data.code == 4){ ONEMAP.C.noPermission('getColumnData'); } if(data.code == 3){ ONEMAP.C.logout('getColumnData'); } ONEMAP.D.gcmsCurColumnListData = data; modValue.options['page']['total'] = ONEMAP.D.gcmsCurColumnListData['total']; setArticlesList(); //是否有after函数,有的执行 if(ONEMAP.D.gcmsCurColumnModelData.hasOwnProperty('js_script')){ if(ONEMAP.D.gcmsCurColumnModelData.js_script.length>0){ eval("var modelFunction="+ONEMAP.D.gcmsCurColumnModelData.js_script); if(modelFunction.hasOwnProperty('after')){ modelFunction.after(); } } } }) .fail(function() { ONEMAP.V.loading.loaded(); }); } /** * 设置搜索面板 // layout下拉列表1 列表2 输入框3 */ function setSearchPanel(){ if(ONEMAP.D.gcmsCurColumnModelData['query_field'].length == 0){ modValue.searchPanelHeight = 0; $('#gcmsListSearchPanel').unbind('resize') $('#gcmsListSearchPanel').empty().hide(); layoutResize(); return false; } $('#gcmsListSearchPanel').empty().show(); $('#gcmsListSearchPanel').unbind('resize').bind('resize',function(){ modValue.searchPanelHeight = $(this).height() + 11; layoutResize(); }); var systemFields = ['gcms_title','gcms_create_time','gcms_change_time','gcms_audit_time','gcms_publish_time','gcms_read_number','gcms_secret_level']; // var searchHtml = $('
'); var searchPanelForm = searchHtml.find('#gcmsListSearchForm'); searchHtml.appendTo($('#gcmsListSearchPanel')); $('#gcmsListBtnSearch').bind('click',function(){ getColumnData(); }); } /** * 填充内容列表 */ function setArticlesList(){ $('#gcmsArticlesList').empty(); var ul = $(''); $(ONEMAP.D.gcmsCurColumnListData['data']).each(function(index, el) { var options = { "columnName":modValue.options.column_name, "guid":el.id, "category":modValue.options.data.title, "name":el.record.gcms_title } options = JSON.stringify(options); var li = $("
  • "+el['list_html']+"
  • "); li.appendTo(ul); li.bind('click',function(){ $(this).addClass('cur'); $(this).siblings().removeClass('cur'); }); //如果有map_center字段 显示地图标记 if(ONEMAP.D.gcmsCurColumnModelData['show_coordinate'].length>0 && el['record'].hasOwnProperty('map_center_lat') && el['record'].hasOwnProperty('map_center_lon') && el['record'].hasOwnProperty('map_center_zoom') && el['record'].hasOwnProperty('map_center_style')){ var iconStyle = ONEMAP.D.gcmsCurColumnModelData['show_coordinate'][el['record']['map_center_style']]; var options_popup = { name:'', content:el['prompt_html']||'' }; var new_popupHtml = ONEMAP.M.gcmsNav.creatPopupHtml(options_popup); var markerId = map23DControl.marker({ action:'add', groupId:modValue.markersGroupGuid, geojson:{ "type": "Feature", "properties": { title:'', iconUrl: onemapUrlConfig.gcmsServiceUrl+'/file'+iconStyle['icon'], iconSize: [iconStyle['width'], iconStyle['height']], iconAnchor: [iconStyle['width']/2, iconStyle['height']/2], popupAnchor:[0, -iconStyle['height']/2], altitude:0, altitudeMode:1, popupContent:new_popupHtml }, "geometry": { "type": "Point", "coordinates": [el['record']['map_center_lon'],el['record']['map_center_lat']] } } }) modValue.markerObj[el['id']] = markerId; } }); if(ONEMAP.D.gcmsCurColumnListData['data'].length == 0){ var li = $('
  • 暂无数据
  • '); li.appendTo(ul) } ul.appendTo($('#gcmsArticlesList')); } /** * 界面布局重置 * @type {Function} */ function layoutResize(){ } function getMarkerObj(){ return modValue.markerObj; } /** * 注册监听 * @type {Function} */ function subscribe(){ ONEMAP.C.publisher.subscribe(remove, 'cleanMap'); } /** * 取消监听 * @type {Function} */ function unSubscribe() {} /** * 模块移除 * @return {[type]} [description] */ function remove(){ unSubscribe(); $('#gcmsListWrap').remove(); map23DControl.group({ action:'cleanAll', guid:modValue.markersGroupGuid }); map23DControl.group({ action:'remove', guid:modValue.markersGroupGuid }) } return ONEMAP.M.gcmsList = { init:init, remove:remove, getMarkerObj:getMarkerObj } });