gcmsNavChange.js 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. /**
  2. * [ONEMAP.M.gcmsNav]
  3. * @return {[object]}
  4. */
  5. define([
  6. 'html!templates/gcms/gcmsNav',
  7. 'modDir/gcms/gcmsEvents',
  8. 'css!styles/gcms/gcmsNavChange'
  9. ], function(tplLayout, gcmsEvents) {
  10. //console.log(tplLayout);
  11. /**
  12. * 模块数据 用于数据存储和外部调用
  13. * @type {Object}
  14. * 数据存放
  15. */
  16. var modValue = {
  17. navData:null
  18. };
  19. /**
  20. * 状态值
  21. * @type {Boolean}
  22. * @default false
  23. * @private
  24. */
  25. var status = {
  26. initialized:false
  27. };
  28. /**
  29. * 模块初始化
  30. * @return {[type]} [description]
  31. */
  32. function init() {
  33. //console.log("init");
  34. //当前栏目信息
  35. ONEMAP.D.gcmsCurColumnData = {};
  36. //当前栏目内容列表
  37. ONEMAP.D.gcmsCurColumnListData = {};
  38. //当前文章详细内容
  39. ONEMAP.D.gcmsCurArticleData = {};
  40. //当前文章模型内容
  41. ONEMAP.D.gcmsCurColumnModelData = {};
  42. //未初始化,初始化布局
  43. // if (!status.initialized) {
  44. //console.log("start");
  45. //栏目列表
  46. ONEMAP.D.gcmsColumnObjs = {};
  47. //设置容器布局
  48. setLayout();
  49. getNavData();
  50. //订阅推送
  51. subscribe();
  52. status.initialized = true;
  53. // }
  54. //设置zIndex 为最高
  55. var zIndex = ONEMAP.M.sideBar.getZIndex();
  56. $('#gcmsMainMenu').css({zIndex:zIndex});
  57. // ONEMAP.D.currentSideBarMod = 'gcmsNav';
  58. //开启侧栏
  59. // ONEMAP.C.publisher.publish('handShow','layout::sideBar');
  60. }
  61. /**
  62. * 初始化布局
  63. */
  64. function setLayout(){
  65. $(tplLayout).appendTo($("#infoAndTrgt").next());
  66. layoutResize();
  67. };
  68. /**
  69. * 窗口布局重置
  70. * @type {Function}
  71. */
  72. function layoutResize() {
  73. };
  74. function bindEvent() {
  75. }
  76. /**
  77. * 获取 菜单数据
  78. * @return {[type]} [description]
  79. */
  80. function getNavData() {
  81. //console.log("get");
  82. ONEMAP.V.loading.load();
  83. $.ajax({
  84. url: onemapUrlConfig.gcmsServiceUrl + '/showmenu',
  85. type: "GET",
  86. dataType: 'json'
  87. })
  88. .done(function(data) {
  89. ONEMAP.V.loading.loaded();
  90. if (data.code == 4) {
  91. ONEMAP.C.noPermission('getNavData');
  92. return false;
  93. }
  94. if (data.code == 3) {
  95. ONEMAP.C.logout('getNavData');
  96. }
  97. modValue.navData = data.data;
  98. buildMenuColumnObjs(data.data);
  99. setGcmsNav();
  100. })
  101. .fail(function() {
  102. ONEMAP.V.loading.loaded();
  103. });
  104. }
  105. /**
  106. * 构造菜单栏目 对象集合
  107. * @param {[type]} options [description]
  108. * @return {[type]} [description]
  109. */
  110. function buildMenuColumnObjs(options) {
  111. $(options).each(function(index, el) {
  112. ONEMAP.D.gcmsColumnObjs[el['name']] = el;
  113. if (el.hasOwnProperty('son_tree')) {
  114. buildMenuColumnObjs(el['son_tree']);
  115. }
  116. });
  117. }
  118. /**
  119. * 设置栏目列表
  120. */
  121. function setGcmsNav() {
  122. //console.log("set");
  123. $(modValue.navData).each(function(index, el) {
  124. switch (el['bind_type']) {
  125. case 'column':
  126. var a = $('<li class="column-menu collapsible collapsed im-2"><a class="collapse-trigger fu"><span class="icon icon-angle-right f-r"></span><span class="icon icon-th-list">' + el['title'] + '</span></a></li>');
  127. if (el.hasOwnProperty('son_tree')) {
  128. buildSonTreeNav(el).appendTo(a);
  129. }
  130. a.appendTo($('#gcmsMenuColumnList'));
  131. break;
  132. case 'cms':
  133. //console.log("cms");
  134. var a = $('<li class="column-menu collapsible collapsed im-2 cms"><a column-value="' + el['name'] + '" class="fu"><span class="icon icon-columns">' + el['title'] + '</span></a><div class="tree-list"></div></li>');
  135. a.bind('click', { navData: el }, function(e) {
  136. //console.log(e.data.navData);
  137. if($(this).hasClass('active')){
  138. $(this).removeClass('active');
  139. require(['modDir/gcms/gcmsListChange'], function(gcmsList) {
  140. gcmsList.remove();
  141. });
  142. }
  143. else{
  144. $(this).addClass('active');
  145. require(['modDir/gcms/gcmsListChange'], function(gcmsList) {
  146. gcmsList.init({
  147. type: 'cms',
  148. data: e.data.navData,
  149. column_name: e.data.navData['name']
  150. });
  151. });
  152. }
  153. });
  154. a.appendTo($('#gcmsMenuColumnList'));
  155. break;
  156. case 'link':
  157. var a = $('<li class="column-menu collapsible collapsed im-2"><a class="fu" href="' + el['bind_value'] + '" target="_blank">' + el['title'] + '</a></li>');
  158. a.appendTo($('#gcmsMenuColumnList'));
  159. break;
  160. case 'js':
  161. var a = $('<li class="column-menu collapsible collapsed im-2"><a class="fu" onclick="' + el['bind_value'] + '">' + el['title'] + '</a></li>');
  162. a.appendTo($('#gcmsMenuColumnList'));
  163. break;
  164. }
  165. });
  166. // $("#partNavMenuGroup .btn-group").mCustomScrollbar('update');
  167. bindEvent();
  168. }
  169. function buildSonTreeNav(data) {
  170. var ul = $('<ul class="collapse-section"><li><a class="go-back"><span class="icon icon-angle-left"></span><lable>返回 <span>' + data['title'] + '</span></lable></a></li></ul>');
  171. $(data['son_tree']).each(function(index, el) {
  172. switch (el['bind_type']) {
  173. case 'column':
  174. var a = $('<li class="collapsed"><a class="collapse-trigger"><span class="icon icon-angle-right f-r"></span><span class="icon icon-th-list"></span>' + el['title'] + '</a></li>');
  175. if (el.hasOwnProperty('son_tree')) {
  176. buildSonTreeNav(el).appendTo(a);
  177. }
  178. a.appendTo(ul);
  179. break;
  180. case 'cms':
  181. var a = $('<li class="collapsed"><a column-value="' + el['name'] + '"><span class="icon icon-columns"></span>' + el['title'] + '</a></li>');
  182. a.bind('click', { navData: el }, function(e) {
  183. require(['modDir/gcms/gcmsListChange'], function(gcmsList) {
  184. gcmsList.init({
  185. type: 'cms',
  186. data: e.data.navData,
  187. column_name: e.data.navData['name']
  188. });
  189. });
  190. });
  191. a.appendTo(ul);
  192. break;
  193. case 'link':
  194. $('<li class="collapsed"><a href="' + el['bind_value'] + '" target="_blank">' + el['title'] + '</a></li>').appendTo(ul);
  195. break;
  196. case 'js':
  197. $('<li class="collapsed"><a onclick="' + el['bind_value'] + '">' + el['title'] + '</a></li>').appendTo(ul);
  198. break;
  199. }
  200. });
  201. return ul;
  202. }
  203. /**
  204. * 注册监听
  205. * @type {Function}
  206. */
  207. function subscribe() {}
  208. /**
  209. * 取消监听
  210. * @type {Function}
  211. */
  212. function unSubscribe() {}
  213. /**
  214. * 模块移除
  215. * @return {[type]} [description]
  216. */
  217. function remove() {
  218. unSubscribe();
  219. }
  220. return ONEMAP.M.gcmsNav = {
  221. init: init,
  222. remove: remove
  223. }
  224. });