mercolumn_2018102301.js 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. +(function(Z)
  2. {
  3. //BEGIN
  4. var Mercolumn = window.Mercolumn = {};
  5. Mercolumn.initPageColumn = function (layoutCode, layoutName)
  6. {
  7. if (!layoutName || !layoutCode)
  8. return false;
  9. var _tr_ = Z('tr[data-layoutCode=\''+layoutCode+'\']');
  10. if (!_tr_)
  11. {
  12. console.error("["+layoutCode+"]" + "元素查询异常")
  13. return false;
  14. }
  15. var _tr = _tr_[0];
  16. if (!_tr)
  17. {
  18. console.log("["+layoutCode+"]" + "未找到元素")
  19. return false;
  20. }
  21. var cells = _tr.cells;
  22. var nameArr = [];
  23. var columns = [];
  24. Z.each(cells, function(td, i){
  25. var columnName = td.innerText;
  26. columnName = Z.S.trim(columnName);
  27. if (Z.V.isNotEmptyBlank(columnName))//有效列名信息
  28. {
  29. nameArr[i] = columnName;
  30. columns[i] = columnName;
  31. }
  32. });
  33. if (nameArr.length == 0)
  34. {
  35. console.log("["+layoutCode+"]" + "找不到列信息")
  36. return false;
  37. }
  38. var init_success = false;
  39. try
  40. {
  41. var ajax = new Z.Ajax();
  42. ajax.setSync();
  43. ajax.setClassName("MercolumnPresenter");
  44. ajax.setMethodName("initPageLayoutColumn");
  45. ajax.addParam("layoutCode", layoutCode);
  46. ajax.addParam("layoutName", layoutName);
  47. ajax.addParam("sysColumns", Z.AR.toString(nameArr, ","));
  48. ajax.setFailure(function(){
  49. console.error("初始化页面信息列异常:"+this.responseText)
  50. });
  51. ajax.setSuccess(function()
  52. {
  53. init_success = true;
  54. });
  55. ajax.execute();
  56. }catch(e)
  57. {
  58. console.log(e)
  59. }
  60. return init_success;
  61. }
  62. Mercolumn.doQueryColumns = function(layoutCode)
  63. {
  64. if (!layoutCode)
  65. return [];
  66. var _tr_ = Z('tr[data-layoutCode=\''+layoutCode+'\']');
  67. if (!_tr_)
  68. {
  69. console.error("["+layoutCode+"]" + "元素查询异常")
  70. return [];
  71. }
  72. var _tr = _tr_[0];
  73. if (!_tr)
  74. {
  75. console.log("["+layoutCode+"]" + "未找到元素")
  76. return [];
  77. }
  78. var cells = _tr.cells;
  79. var nameArr = [];
  80. var columns = {};
  81. Z.each(cells, function(td, i){
  82. var columnName = td.innerText;
  83. columnName = Z.S.trim(columnName);
  84. if (Z.V.isNotEmptyBlank(columnName))//有效列名信息
  85. {
  86. nameArr[i] = columnName;
  87. columns[columnName] = i;
  88. }
  89. });
  90. return columns;
  91. }
  92. Mercolumn.doShowMerPageColumn = function (layoutCode, layoutName, orgId)
  93. {
  94. var init_success = Mercolumn.initPageColumn(layoutCode, layoutName);//初始化
  95. if (!init_success)
  96. return;//初始化失败了不设置
  97. var pageColumns = Mercolumn.doQueryColumns(layoutCode);
  98. if (!orgId || orgId == -1)
  99. {
  100. return false;
  101. }
  102. try
  103. {
  104. var ajax = new Z.Ajax();
  105. ajax.setClassName("MercolumnPresenter");
  106. ajax.setMethodName("doQueryMerPageLayoutColumns");
  107. ajax.addParam("orgId", orgId);
  108. ajax.addParam("layoutCode", layoutCode);
  109. ajax.setFailure(function(){
  110. console.error("设置隐藏商户信息列异常:"+this.responseText);
  111. });
  112. ajax.setSuccess(function(){
  113. var obj = Z.J.toObject(this.responseText);
  114. var dataList = obj.dataList;
  115. console.log(obj);
  116. if (!dataList || dataList.length == 0 || !dataList[0])
  117. return;
  118. var merColsNames = Z.AR.toArray(dataList[0].merColumns, ",")
  119. var mercolumsIndex=[];
  120. //查询影藏列下标
  121. var hideIndexs = [];
  122. for (var colsName in pageColumns)
  123. {
  124. if (Z.AR.contains(merColsNames, colsName))
  125. {
  126. var ind = pageColumns[colsName];
  127. mercolumsIndex[colsName] = ind;
  128. hideIndexs.push(ind);
  129. }
  130. }
  131. console.log("mercolumsIndex:");
  132. console.log(mercolumsIndex);
  133. console.log(hideIndexs);
  134. //查询标记隐藏表标头
  135. var _tr_ = Z('tr[data-layoutCode=\''+layoutCode+'\']');
  136. if (!_tr_ || _tr_ .length == 0)
  137. {
  138. return;
  139. }
  140. var parentWidth = 0;
  141. var scrollWidth = 0;
  142. var table = _tr_.parent()[0]
  143. if (Z.S.equalsIgnoreCase(table.tagName, "tbody"))
  144. {
  145. table = Z(table).parent();
  146. scrollWidth = table[0].scrollWidth;
  147. var elem = table.parent()[0];
  148. parentWidth = elem.clientWidth-table[0].offsetLeft*2;
  149. }
  150. //计算隐藏宽度
  151. var cutWidth = 0;
  152. var thead = _tr_[0];
  153. var _cells_ = thead.cells;
  154. for(var ci = 0; ci < _cells_.length; ci++)
  155. {
  156. if (!Z.AR.contains(hideIndexs, ci*1))
  157. {
  158. var td = _cells_[ci];
  159. cutWidth += td.scrollWidth;
  160. }
  161. }
  162. //隐藏列
  163. var trs = table.find("tr");
  164. for (var i=0; i<trs.length; i++)
  165. {
  166. var cols = trs[i].cells;
  167. for(var ci = 0; ci < cols.length; ci++)
  168. {
  169. if (!Z.AR.contains(hideIndexs, ci*1))
  170. {
  171. Z(cols[ci]).hide();
  172. }
  173. }
  174. }
  175. //重新设置table宽度
  176. var table_width = scrollWidth - cutWidth;
  177. if (table_width < parentWidth)
  178. table_width = parentWidth
  179. table[0].style.width = table_width + "px";
  180. });
  181. ajax.execute();
  182. }catch (e)
  183. {
  184. console.log(e)
  185. }
  186. }
  187. //END
  188. })(zhiqim);