rock_flowtotal.php 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. <?php if(!defined('HOST'))die('not access');?>
  2. <script >
  3. $(document).ready(function(){
  4. var myChart = false;
  5. var a = $('#viewshow_{rand}').bootstable({
  6. tablename:'todo',modedir:'flowtotal:main',storebeforeaction:'flowtotalbefore',storeafteraction:'flowtotalafter',
  7. columns:[{
  8. text:'名称',dataIndex:'name'
  9. },{
  10. text:'数值',dataIndex:'value'
  11. },{
  12. text:'比例',dataIndex:'bili'
  13. }],
  14. load:function(a){
  15. if(a.modearr){
  16. var s = '<option value="0">-选择模块-</option>',len=a.modearr.length,i,csd,types='';
  17. for(i=0;i<len;i++){
  18. csd = a.modearr[i];
  19. if(types!=csd.type){
  20. if(types!='')s+='</optgroup>';
  21. s+='<optgroup label="'+csd.type+'">';
  22. }
  23. s+='<option value="'+csd.id+'">'+csd.name+'</option>';
  24. types = csd.type;
  25. }
  26. $('#mode_{rand}').html(s);
  27. }else{
  28. c.loadcharts();
  29. }
  30. }
  31. });
  32. var c={
  33. search:function(o1,lx){
  34. var d = {
  35. 'modeid' : get('mode_{rand}').value,
  36. 'total_fields' : get('fields_{rand}').value,
  37. 'total_type' : get('type_{rand}').value,
  38. 'atype' : get('where_{rand}').value
  39. };
  40. if(d.modeid=='0'){js.msg('msg','请选择模块');return;}
  41. if(d.total_fields==''){js.msg('msg','请选择统计字段');return;}
  42. if(d.total_type==''){js.msg('msg','请选择统计类型');return;}
  43. if(d.atype==''){js.msg('msg','请选择统计条件,统计条件在[流程模块条件]下添加');return;}
  44. if(lx==1)return d;
  45. a.setparams(d,true);
  46. },
  47. createdzd:function(o1){
  48. var d1 = this.search(o1,1);
  49. if(typeof(d1)!='object')return;
  50. var o1 = get('fields_{rand}'),o2=get('type_{rand}');
  51. var ss = o1.options[o1.selectedIndex].text;
  52. d1.title = '按'+ss+'的'+o2.options[o2.selectedIndex].text+'';
  53. var url = 'main,flowtotal,view';
  54. var str1= '';
  55. for(var i1 in d1)str1+=','+i1+':"'+d1[i1]+'"';
  56. str1 = jm.base64encode('{'+str1.substr(1)+'}');
  57. url+=',paramsstr='+str1+'';
  58. addtabs({url:url,name:d1.title,num:'tongjiji'+js.getrand()+'',icons:'bar-chart'});
  59. },
  60. loadcharts:function(){
  61. var rows = a.getData('rows'),i,len=rows.length,v;
  62. var xAxis=[],data=[];
  63. for(i=0;i<len;i++){
  64. if(rows[i].name!='合计'){
  65. xAxis.push(rows[i].name);
  66. v = rows[i].value;if(v=='')v=0;
  67. data.push({value:parseFloat(v),name:rows[i].name});
  68. }
  69. }
  70. var o1 = get('fields_{rand}'),o2=get('type_{rand}');
  71. if(!myChart)myChart = echarts.init(get('main_show{rand}'));
  72. var ss = o1.options[o1.selectedIndex].text;
  73. var tlx= get('chattype_{rand}').value;
  74. var option = {
  75. title: {
  76. text: '按'+ss+'的'+o2.options[o2.selectedIndex].text+'',
  77. left: 'center'
  78. },
  79. tooltip : {
  80. trigger: 'item',
  81. formatter: "{b} : {c} ({d}%)"
  82. },
  83. series: [{
  84. name: '数值',
  85. type: tlx,
  86. data: data
  87. }]
  88. };
  89. if(tlx!='pie'){
  90. option.xAxis={data: xAxis};
  91. option.yAxis={type : 'value'};
  92. option.tooltip.formatter = '{b} : {c}';
  93. }
  94. myChart.setOption(option);
  95. },
  96. daochu:function(){
  97. var o1 = get('fields_{rand}'),o2=get('type_{rand}');
  98. var ss = o1.options[o1.selectedIndex].text;
  99. a.exceldown(''+ss+'的'+o2.options[o2.selectedIndex].text+'');
  100. },
  101. changemode:function(){
  102. var mid=this.value;
  103. get('fields_{rand}').length = 1;
  104. get('type_{rand}').length = 2;
  105. get('where_{rand}').length = 1;
  106. if(mid==0){
  107. }else{
  108. c.changefields(mid);
  109. }
  110. },
  111. changefields:function(mid){
  112. js.ajax(js.getajaxurl('changefields','{mode}','{dir}'),{modeid:mid},function(ret){
  113. c.changefieldss(ret);
  114. },'get,json');
  115. },
  116. changefieldss:function(ds){
  117. var ret = ds.farr;
  118. var d = [],d2=[],i,len=ret.length,lx,fid,fids;
  119. var fids = ',applydt,optdt,dt,adddt,createdt,startdt,enddt,';
  120. for(i=0;i<len;i++){
  121. lx = ret[i].fieldstype;
  122. fid= ret[i].fields;
  123. fids= ret[i].fieldss;
  124. if(lx=='number' || fids=='money'){
  125. d2.push({
  126. 'name' : ret[i].names+'(合计)',
  127. 'fields' : 'sum|'+fids
  128. });
  129. d2.push({
  130. 'name' : ret[i].names+'(平均值)',
  131. 'fields' : 'avg|'+fids
  132. });
  133. }else{
  134. d.push({
  135. 'name' : ret[i].name,
  136. 'fields' : fid,
  137. });
  138. if(lx=='date' || lx=='datetime' || fid.indexOf('dt`')>-1){
  139. d.push({
  140. 'name' : ret[i].names+'('+fids+',按月)',
  141. 'fields' : 'left('+fid+',7)'
  142. });
  143. }
  144. }
  145. }
  146. js.setselectdata(get('fields_{rand}'),d,'fields');
  147. js.setselectdata(get('type_{rand}'),d2,'fields');
  148. js.setselectdata(get('where_{rand}'),ds.fwhe,'num');
  149. }
  150. }
  151. $('#mode_{rand}').change(c.changemode);
  152. js.initbtn(c);
  153. $('#main_show{rand}').css('height',''+(viewheight-110)+'px');
  154. });
  155. </script>
  156. <div>
  157. <table width="100%">
  158. <tr>
  159. <td align="left">
  160. <select style="width:180px" id="mode_{rand}" class="form-control" ><option value="0">-选择模块-</option></select>
  161. </td>
  162. <td nowrap style="padding-left:10px">
  163. 根据&nbsp;
  164. </td>
  165. <td >
  166. <select style="width:150px" id="fields_{rand}" class="form-control" ><option value="">-统计字段-</option></select>
  167. </td>
  168. <td nowrap style="padding-left:10px">
  169. 的&nbsp;
  170. </td>
  171. <td >
  172. <select style="width:130px" id="type_{rand}" class="form-control" ><option value="">-统计类型-</option><option selected value="jls">记录数</option></select>
  173. </td>
  174. <td style="padding-left:10px">
  175. <select style="width:130px" id="where_{rand}" class="form-control" ><option value="">-统计条件-</option></select>
  176. </td>
  177. <td style="padding-left:10px">
  178. <select style="width:80px" id="chattype_{rand}" class="form-control" ><option value="pie">饼图</option><option value="line">线图</option><option value="bar">柱状图</option></select>
  179. </td>
  180. <td style="padding-left:10px">
  181. <button class="btn btn-default" click="search" type="button">来统计</button>
  182. </td>
  183. <td style="padding-left:10px">
  184. <button class="btn btn-default" click="createdzd" type="button">生成菜单URL</button>
  185. </td>
  186. <td width="90%">
  187. </td>
  188. <td align="right" nowrap>
  189. <button class="btn btn-default" click="daochu,1" type="button">导出</button>
  190. </td>
  191. </tr>
  192. </table>
  193. </div>
  194. <div class="blank10"></div>
  195. <table width="100%">
  196. <tr valign="top">
  197. <td width="80%">
  198. <div id="main_show{rand}" style="width:100%;height:480px"></div>
  199. </td>
  200. <td>
  201. <div style="width:350px" id="viewshow_{rand}"></div>
  202. </td>
  203. </tr>
  204. </table>
  205. <div class="tishi">此功能只其他基本的统计,更强大更多功能需要自己开发,模块列表需要在表单元素管理下开启有统计字段。</div>
粤ICP备19079148号