gcmsListChange.js 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406
  1. /**
  2. * [ONEMAP.M.gcmsList]
  3. * @return {[object]}
  4. */
  5. define(['html!templates/gcms/gcmsList'
  6. // 'css!styles/gcms/gcmsList'
  7. ],function(tplLayout){
  8. /**
  9. * 模块数据 用于数据存储和外部调用
  10. * @type {Object}
  11. * 数据存放
  12. */
  13. var modValue = {
  14. //参数
  15. options:{},
  16. //查询面板高度 默认为0
  17. searchPanelHeight:0,
  18. markersGroupGuid:null,
  19. markerObj:{}//标记点集合
  20. };
  21. /**
  22. * 模块初始化
  23. * @return {[type]} [description]
  24. */
  25. function init(options){
  26. // remove();
  27. modValue.searchPanelHeight = 0;
  28. modValue.options = {
  29. column_name:'',
  30. page:{
  31. page:1
  32. },
  33. search:{}
  34. };
  35. for(var op in options){
  36. modValue.options[op] = options[op];
  37. }
  38. //设置容器布局
  39. setLayout();
  40. ONEMAP.D.gcmsCurColumnData = ONEMAP.D.gcmsColumnObjs[modValue.options['column_name']];
  41. showCmsColumn();
  42. //没有子菜单,添加 class 用来判断
  43. $('#gcmsListContent').addClass('single');
  44. $('#gcmsArticlesListPage').addClass('single');
  45. $('#gcmsListSearchPanel').addClass('single');
  46. $('#gcmsListContent').addClass('single');
  47. bindEvent();
  48. //订阅推送
  49. subscribe();
  50. //设置zIndex 为最高
  51. // var zIndex = ONEMAP.M.sideBar.getZIndex();
  52. // $('#gcmsListWrap').css({zIndex:zIndex});
  53. // ONEMAP.D.currentSideBarMod = 'gcmsList';
  54. //开启侧栏
  55. // ONEMAP.C.publisher.publish('show','layout::sideBar');
  56. }
  57. /**
  58. * 设置容器
  59. */
  60. function setLayout(){
  61. $(tplLayout).appendTo($(".tree-list"));
  62. // $('#gcmsListWrap .panel-header h3').html(modValue.options['data']['title']);
  63. layoutResize();
  64. $(window).resize(function(){
  65. layoutResize();
  66. });
  67. // $("#gcmsListContent").mCustomScrollbar({
  68. // scrollInertia: 1000
  69. // });
  70. }
  71. /**
  72. * 事件绑定
  73. * @return {[type]} [description]
  74. */
  75. function bindEvent(){
  76. // $('#gcmsListWrap .panel-header .abtn-goback').bind('click',function(){
  77. // remove();
  78. // })
  79. $("#infoAndTrgt").next().find(".cms.active").bind('click',function(){
  80. // unSubscribe();
  81. // $(this).find(".gcms-article-list").remove();
  82. $(this).removeClass('active');
  83. // map23DControl.group({
  84. // action:'cleanAll',
  85. // guid:modValue.markersGroupGuid
  86. // });
  87. // map23DControl.group({
  88. // action:'remove',
  89. // guid:modValue.markersGroupGuid
  90. // })
  91. })
  92. // $("#infoAndTrgt").next().find(".cms").bind('click',function(){
  93. // // alert(666);
  94. // })
  95. }
  96. /**
  97. * 显示cms栏目 搜索栏,列表
  98. * @param {[type]} options [description]
  99. * @return {[type]} [description]
  100. */
  101. function showCmsColumn(options){
  102. //ONEMAP.C.publisher.publish('','gcmsArticleShowRemove');
  103. //获取栏目模型后 去获取栏目数据
  104. getColumnModelData({
  105. callback:function(){
  106. map23DControl.group({
  107. action:'cleanAll',
  108. guid:modValue.markersGroupGuid
  109. });
  110. map23DControl.group({
  111. action:'remove',
  112. guid:modValue.markersGroupGuid
  113. });
  114. //地图中心点 是否聚合
  115. if(ONEMAP.D.gcmsCurColumnModelData['field_list'].hasOwnProperty('map_center')){
  116. if(ONEMAP.D.gcmsCurColumnModelData['field_list']['map_center']['marker_cluster']){
  117. modValue.markersGroupGuid = map23DControl.group({
  118. action: 'add',
  119. clustering: true, //关键 开启聚合
  120. clusterOptions:{
  121. maxClusterRadius:120,//多少像素距离的点会聚合 默认小于120像素内的点会聚合
  122. polygonOptions: {weight: 1, opacity: 0.5}, //聚合范围面样式
  123. showCoverageOnHover: true, //是否显示聚合范围
  124. disableClusteringAtZoom: null, //设置到达指定缩放等级后禁用聚合
  125. }//2D聚合参数
  126. });
  127. }else {
  128. modValue.markersGroupGuid = map23DControl.group({
  129. action: 'add'
  130. });
  131. }
  132. }
  133. //检测是否有初始函数,有的执行
  134. if(ONEMAP.D.gcmsCurColumnModelData.hasOwnProperty('js_script')){
  135. if(ONEMAP.D.gcmsCurColumnModelData.js_script.length>0){
  136. eval("var modelFunction="+ONEMAP.D.gcmsCurColumnModelData.js_script);
  137. if(modelFunction.hasOwnProperty('init')){
  138. modelFunction.init();
  139. }
  140. }
  141. }
  142. //设置栏目class
  143. $('#gcmsListWrap').removeClass().addClass(ONEMAP.D.gcmsCurColumnModelData['name']);
  144. //设置栏目css
  145. $('#gcmsModelCssStyle').remove();
  146. $('<style type="text/css" id="gcmsModelCssStyle">'+ONEMAP.D.gcmsCurColumnModelData['css_style']+'</style>').appendTo('head');
  147. setSearchPanel();
  148. getColumnData();
  149. }
  150. });
  151. }
  152. /**
  153. * 获取栏目模型数据
  154. * @param {[type]} options [description]
  155. * @return {[type]} [description]
  156. */
  157. function getColumnModelData(options){
  158. ONEMAP.V.loading.load();
  159. $.ajax({
  160. url: onemapUrlConfig.gcmsServiceUrl+'/showmodel/'+modValue.options['column_name'],
  161. type:"GET",
  162. dataType: 'json'
  163. })
  164. .done(function(data) {
  165. ONEMAP.V.loading.loaded();
  166. if(data.code == 4){
  167. //ONEMAP.C.noPermission('getColumnModelData');
  168. }
  169. if(data.code == 3){
  170. //ONEMAP.C.logout('getColumnModelData');
  171. }
  172. ONEMAP.D.gcmsCurColumnModelData = data['data'];
  173. modValue.options['page']['page_size'] = ONEMAP.D.gcmsCurColumnModelData['query_count'];
  174. options.callback();
  175. })
  176. .fail(function() {
  177. ONEMAP.V.loading.loaded();
  178. });
  179. }
  180. /**
  181. * 获取栏目数据
  182. * @return {[type]} [description]
  183. */
  184. function getColumnData(){
  185. ONEMAP.C.publisher.publish('','gcmsArticleShowRemove');
  186. ONEMAP.V.loading.load();
  187. var ajaxData = {
  188. page:modValue.options['page']['page']
  189. };
  190. for(var item in modValue.options['search']){
  191. ajaxData[item] = modValue.options['search'][item];
  192. }
  193. //检测是否有before函数,有的执行
  194. if(ONEMAP.D.gcmsCurColumnModelData.hasOwnProperty('js_script')){
  195. if(ONEMAP.D.gcmsCurColumnModelData.js_script.length>0){
  196. eval("var modelFunction="+ONEMAP.D.gcmsCurColumnModelData.js_script);
  197. if(modelFunction.hasOwnProperty('before')){
  198. modelFunction.before();
  199. }
  200. }
  201. }
  202. $.ajax({
  203. url: onemapUrlConfig.gcmsServiceUrl+'/show/'+modValue.options['column_name'],
  204. type:"GET",
  205. dataType: 'json',
  206. data:ajaxData
  207. })
  208. .done(function(data) {
  209. ONEMAP.V.loading.loaded();
  210. if(data.code == 4){
  211. ONEMAP.C.noPermission('getColumnData');
  212. }
  213. if(data.code == 3){
  214. ONEMAP.C.logout('getColumnData');
  215. }
  216. ONEMAP.D.gcmsCurColumnListData = data;
  217. modValue.options['page']['total'] = ONEMAP.D.gcmsCurColumnListData['total'];
  218. setArticlesList();
  219. //是否有after函数,有的执行
  220. if(ONEMAP.D.gcmsCurColumnModelData.hasOwnProperty('js_script')){
  221. if(ONEMAP.D.gcmsCurColumnModelData.js_script.length>0){
  222. eval("var modelFunction="+ONEMAP.D.gcmsCurColumnModelData.js_script);
  223. if(modelFunction.hasOwnProperty('after')){
  224. modelFunction.after();
  225. }
  226. }
  227. }
  228. })
  229. .fail(function() {
  230. ONEMAP.V.loading.loaded();
  231. });
  232. }
  233. /**
  234. * 设置搜索面板 // layout下拉列表1 列表2 输入框3
  235. */
  236. function setSearchPanel(){
  237. if(ONEMAP.D.gcmsCurColumnModelData['query_field'].length == 0){
  238. modValue.searchPanelHeight = 0;
  239. $('#gcmsListSearchPanel').unbind('resize')
  240. $('#gcmsListSearchPanel').empty().hide();
  241. layoutResize();
  242. return false;
  243. }
  244. $('#gcmsListSearchPanel').empty().show();
  245. $('#gcmsListSearchPanel').unbind('resize').bind('resize',function(){
  246. modValue.searchPanelHeight = $(this).height() + 11;
  247. layoutResize();
  248. });
  249. var systemFields = ['gcms_title','gcms_create_time','gcms_change_time','gcms_audit_time','gcms_publish_time','gcms_read_number','gcms_secret_level'];
  250. //
  251. var searchHtml = $('<div><div id="gcmsListSearchForm"></div><div class="submit-group"><button id="gcmsListBtnSearch" class="btn btn3 sure">搜索</button></div></div>');
  252. var searchPanelForm = searchHtml.find('#gcmsListSearchForm');
  253. searchHtml.appendTo($('#gcmsListSearchPanel'));
  254. $('#gcmsListBtnSearch').bind('click',function(){
  255. getColumnData();
  256. });
  257. }
  258. /**
  259. * 填充内容列表
  260. */
  261. function setArticlesList(){
  262. $('#gcmsArticlesList').empty();
  263. var ul = $('<ul class="gcms-article-list im-3"></ul>');
  264. $(ONEMAP.D.gcmsCurColumnListData['data']).each(function(index, el) {
  265. var options = {
  266. "columnName":modValue.options.column_name,
  267. "guid":el.id,
  268. "category":modValue.options.data.title,
  269. "name":el.record.gcms_title
  270. }
  271. options = JSON.stringify(options);
  272. var li = $("<li>"+el['list_html']+"</li>");
  273. li.appendTo(ul);
  274. li.bind('click',function(){
  275. $(this).addClass('cur');
  276. $(this).siblings().removeClass('cur');
  277. });
  278. //如果有map_center字段 显示地图标记
  279. if(ONEMAP.D.gcmsCurColumnModelData['show_coordinate'].length>0 &&
  280. el['record'].hasOwnProperty('map_center_lat') &&
  281. el['record'].hasOwnProperty('map_center_lon') &&
  282. el['record'].hasOwnProperty('map_center_zoom') &&
  283. el['record'].hasOwnProperty('map_center_style')){
  284. var iconStyle = ONEMAP.D.gcmsCurColumnModelData['show_coordinate'][el['record']['map_center_style']];
  285. var options_popup = {
  286. name:'',
  287. content:el['prompt_html']||''
  288. };
  289. var new_popupHtml = ONEMAP.M.gcmsNav.creatPopupHtml(options_popup);
  290. var markerId = map23DControl.marker({
  291. action:'add',
  292. groupId:modValue.markersGroupGuid,
  293. geojson:{
  294. "type": "Feature",
  295. "properties": {
  296. title:'',
  297. iconUrl: onemapUrlConfig.gcmsServiceUrl+'/file'+iconStyle['icon'],
  298. iconSize: [iconStyle['width'], iconStyle['height']],
  299. iconAnchor: [iconStyle['width']/2, iconStyle['height']/2],
  300. popupAnchor:[0, -iconStyle['height']/2],
  301. altitude:0,
  302. altitudeMode:1,
  303. popupContent:new_popupHtml
  304. },
  305. "geometry": {
  306. "type": "Point",
  307. "coordinates": [el['record']['map_center_lon'],el['record']['map_center_lat']]
  308. }
  309. }
  310. })
  311. modValue.markerObj[el['id']] = markerId;
  312. }
  313. });
  314. if(ONEMAP.D.gcmsCurColumnListData['data'].length == 0){
  315. var li = $('<li class="cell t-c">暂无数据</li>');
  316. li.appendTo(ul)
  317. }
  318. ul.appendTo($('#gcmsArticlesList'));
  319. }
  320. /**
  321. * 界面布局重置
  322. * @type {Function}
  323. */
  324. function layoutResize(){
  325. }
  326. function getMarkerObj(){
  327. return modValue.markerObj;
  328. }
  329. /**
  330. * 注册监听
  331. * @type {Function}
  332. */
  333. function subscribe(){
  334. ONEMAP.C.publisher.subscribe(remove, 'cleanMap');
  335. }
  336. /**
  337. * 取消监听
  338. * @type {Function}
  339. */
  340. function unSubscribe() {}
  341. /**
  342. * 模块移除
  343. * @return {[type]} [description]
  344. */
  345. function remove(){
  346. unSubscribe();
  347. $('#gcmsListWrap').remove();
  348. map23DControl.group({
  349. action:'cleanAll',
  350. guid:modValue.markersGroupGuid
  351. });
  352. map23DControl.group({
  353. action:'remove',
  354. guid:modValue.markersGroupGuid
  355. })
  356. }
  357. return ONEMAP.M.gcmsList = {
  358. init:init,
  359. remove:remove,
  360. getMarkerObj:getMarkerObj
  361. }
  362. });