reportJs.ftl 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  1. <#import "../function.ftl" as func>
  2. <#assign comment=model.tabComment>
  3. <#assign class=model.variables.class>
  4. <#assign classVar=class?uncap_first>
  5. <#assign sys=model.variables.sys>
  6. <#assign module=model.variables.module>
  7. <#assign commonList=model.commonList>
  8. <#assign pkModel=model.pkModel>
  9. <#assign pk=func.getPk(model) >
  10. <#assign pkVar=func.convertUnderLine(pk) >
  11. <#assign subTableList=model.subTableList>
  12. <#assign hasSub=model.hasSub>
  13. <#assign hasTab=model.variables.hasTab>
  14. <#assign groupBy=model.variables.groupBy>
  15. <#assign groupCol=model.variables.groupCol>
  16. <#assign legendBy=model.variables.legendBy>
  17. <#assign reportType=model.variables.reportType>
  18. <#assign isBaseModule=model.variables.isBaseModule>
  19. /**
  20. * ${comment}
  21. *
  22. * <pre>
  23. <#if vars.developer?exists>
  24. * 作者:${vars.developer}
  25. * 邮箱:${vars.email}
  26. </#if>
  27. * 日期:${date?string("yyyy-MM-dd HH:mm:ss")}
  28. * 版权:${vars.company}
  29. * </pre>
  30. */
  31. $(function(){
  32. var ${classVar} = new ${class}();
  33. ${classVar}.init();
  34. });
  35. function ${class}(){
  36. this.hadInit = false;
  37. this.isEdit = false;
  38. <#if isBaseModule = 'true'>
  39. this.baseUrl = ctx + "/${sys}/${module}/${classVar}/listData.htm";
  40. <#else>
  41. this.baseUrl = ctx + "/${sys}/${classVar}/listData.htm";
  42. </#if>
  43. <#if reportType?exists && reportType?index_of(",")==-1 && reportType!="">
  44. this.reportType="${reportType}";
  45. <#else>
  46. this.reportType="bar";
  47. </#if>
  48. <#if legendBy?exists && legendBy?index_of(",")==-1 && legendBy!="">
  49. this.legendBy="${legendBy}";
  50. <#else>
  51. this.legendBy=null;
  52. </#if>
  53. <#if groupCol?exists && groupCol!="">
  54. this.groupCol="${groupCol}";
  55. <#else>
  56. this.groupCol="count_";
  57. </#if>
  58. <#if groupBy?exists && groupBy?index_of(",")==-1 && groupBy!="">
  59. this.groupBy="${groupBy}";
  60. <#else>
  61. this.groupBy=null;
  62. </#if>
  63. <#if hasSub?exists && hasSub==true><#list subTableList as subTable>
  64. this.${subTable.variables.class?uncap_first} = new ${subTable.variables.class}();
  65. </#list></#if>
  66. this.jtjqgrid = null;
  67. }
  68. ${class}.prototype = {
  69. init : function(params){
  70. var self = this;
  71. if(!self.hadInit){
  72. self.hadInit = true;
  73. self._bindEventHander();
  74. var uri=new StringBuffer();
  75. uri.append(self.baseUrl);
  76. <#if groupBy?exists>
  77. <#if groupBy?index_of(",")!=-1>
  78. uri.append("?G__group_by_=").append($("#groupBySearch").val()).append("&G__group_col_=").append(self.groupCol);
  79. <#elseif groupBy!="">
  80. uri.append("?G__group_by_=").append(self.groupBy).append("&G__group_col_=").append(self.groupCol);
  81. </#if>
  82. </#if>
  83. self.getData(uri, self);
  84. }
  85. },
  86. _bindEventHander : function(){
  87. var self = this;
  88. $(document).on("click","#searchBtn",function(){
  89. var uri=new StringBuffer();
  90. var searchShow=new StringBuffer();
  91. searchShow.append(" 查询条件: ");
  92. uri.append(self.baseUrl);
  93. <#if groupBy?exists>
  94. <#if groupBy?index_of(",")!=-1>
  95. var legType=$("#groupBySearch").val();
  96. uri.append("?G__group_by_=").append(legType).append("&G__group_col_=").append(self.groupCol);
  97. <#elseif groupBy!="">
  98. var legType=self.groupBy;
  99. uri.append("?G__group_by_=").append(legType).append("&G__group_col_=").append(self.groupCol);
  100. </#if>
  101. </#if>
  102. <#list model.columnList as col>
  103. <#assign colName=func.convertUnderLine(col.columnName)>
  104. <#if colName != "id">
  105. <#if groupBy?exists && groupBy!="">
  106. if(legType!="${col.columnName}"){
  107. </#if>
  108. uri.append("&Q__S__EQ__${col.columnName}=").append($("<#noparse>#</#noparse>${colName}Search").val());
  109. var ${colName}Search="全部";
  110. if($("<#noparse>#</#noparse>${colName}Search").val()!=""){
  111. ${colName}Search =$("<#noparse>#</#noparse>${colName}Search").val();
  112. }
  113. searchShow.append(" ${col.comment}=").append( ${colName}Search);
  114. <#if groupBy?exists && groupBy!="">
  115. }
  116. </#if>
  117. </#if>
  118. </#list>
  119. $("#searchShow").text(""+searchShow);
  120. self.getData(uri,self);
  121. return false;
  122. });
  123. <#if groupBy?exists && groupBy?index_of(",")!=-1>
  124. $(document).on("change","#groupBySearch",function(){
  125. <#list model.columnList as col>
  126. <#assign colName=func.convertUnderLine(col.columnName)>
  127. <#if colName != "id">
  128. $("<#noparse>#</#noparse>${colName}Search").removeAttr("disabled");
  129. </#if>
  130. </#list>
  131. var groupBy=$("#groupBySearch").val();
  132. <#list model.columnList as col>
  133. <#assign colName=func.convertUnderLine(col.columnName)>
  134. <#if colName != "id">
  135. if(groupBy=="${col.columnName}"){
  136. $("<#noparse>#</#noparse>${colName}Search").attr("disabled","disabled");
  137. }
  138. </#if>
  139. </#list>
  140. });
  141. </#if>
  142. },
  143. getData : function(uri,self){
  144. $.ajax({
  145. type : "GET",
  146. url : uri,
  147. contentType : "application/json",
  148. dataType : "json",
  149. success : function(data) {
  150. self.createReport(data,self);
  151. },
  152. error : function(msg) {
  153. alert(msg);
  154. }
  155. });
  156. },
  157. createReport : function(data,self){
  158. <#if groupBy?exists && groupBy!="">
  159. <#if groupBy?index_of(",")!=-1>
  160. var groupBy=$("#groupBySearch").val();
  161. <#else>
  162. var groupBy=self.groupBy;
  163. </#if>
  164. var legTypeStrArr= groupBy.split("_");
  165. var legTypeStr=legTypeStrArr[0];
  166. for(var i=1;i<legTypeStrArr.length;i++ ){
  167. legTypeStr+=legTypeStrArr[i].substring(0, 1).toUpperCase() + legTypeStrArr[i].substring(1);
  168. }
  169. <#else>
  170. <#if legendBy?exists && legendBy!="">
  171. <#if legendBy?index_of(",")!=-1>
  172. var legTypeStr=$("#legendBySearch").val();
  173. <#else>
  174. var legTypeStr=self.legendBy;
  175. </#if>
  176. </#if>
  177. </#if>
  178. //报表类型
  179. <#if reportType?exists && reportType?index_of(",")!=-1>
  180. var reportType=$("#reportTypeSearch").val();
  181. <#else>
  182. var reportType=self.reportType;
  183. </#if>
  184. var series=[];
  185. var legend=[];
  186. <#if groupCol?exists && groupCol?index_of(",")!=-1>
  187. <#assign intVar=0>
  188. <#list groupCol?split(",") as groupColVar>
  189. <#list model.columnList as col>
  190. <#if col.columnName==groupColVar>
  191. <#assign groupColVarAss=func.convertUnderLine(groupColVar)>
  192. series[${intVar}]={type:reportType,colName:"${groupColVarAss}",legendName:"${col.comment}"};
  193. legend[${intVar}]="${col.comment}";
  194. <#assign intVar=intVar+1 >
  195. </#if>
  196. </#list>
  197. </#list>
  198. <#else>
  199. var conNameArr= self.groupCol.split("_");
  200. var conNameStr=conNameArr[0];
  201. for(var i=1;i<conNameArr.length;i++ ){
  202. conNameStr+=conNameArr[i].substring(0, 1).toUpperCase() + conNameArr[i].substring(1);
  203. }
  204. series[0]={type:reportType,colName:conNameStr,legendName:"数量"};
  205. legend[0]="数量";
  206. </#if>
  207. var report=new Report();
  208. report.data=data;
  209. report.setLegend(true,legend);
  210. report.initSeries(series,legTypeStr);
  211. report._initChart("${classVar}Chart","${comment}");
  212. self._initJqgrid(data,self);
  213. },
  214. _initJqgrid : function(data,self){
  215. var legType=$("#reportTypeSearch").val();
  216. $("<#noparse>#</#noparse>${classVar}GridDiv").empty().html("<table id=\"${classVar}Grid\"></table>");
  217. $.jgrid.defaults.styleUI = 'Bootstrap';
  218. $(${class}.GRID).jqGrid({
  219. datatype : "jsonstring",
  220. datastr : data,
  221. height : 200,
  222. autowidth : true,
  223. shrinkToFit : true,
  224. rowNum : 20,
  225. viewrecords: true,
  226. multiselect : false,
  227. rowList : [ 10, 20, 30 ],
  228. colNames : [
  229. <#list model.columnList as col>
  230. <#assign colName=func.convertUnderLine(col.columnName)>
  231. <#if colName != "id">
  232. "${col.comment}"<#if col_has_next>,</#if>
  233. </#if>
  234. </#list>
  235. ],
  236. colModel : [
  237. <#list model.columnList as col>
  238. <#assign colName=func.convertUnderLine(col.columnName)>
  239. <#if colName != "id">
  240. {name: '${colName}', width: 120}<#if col_has_next>,</#if>
  241. </#if>
  242. </#list>
  243. ],
  244. hidegrid : false
  245. });
  246. }
  247. }
  248. ${class}.GRID = "<#noparse>#</#noparse>${classVar}Grid";