projectSaleAndCostLiveRptDemo.jsp 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@include file="/context/mytags.jsp"%>
  4. <t:base type="jquery,easyui,tools,DatePicker"></t:base>
  5. <html>
  6. <head>
  7. <meta charset="UTF-8">
  8. <title>Demo</title>
  9. <!-- 引入echarts文件 -->
  10. <script src="plug-in/echarts/echarts.js"></script>
  11. <link type="text/css" href="css/stats.css" rel="stylesheet" />
  12. <%-- <script src="plug-in/jquery-1.7.2.js"></script> --%>
  13. </head>
  14. <body>
  15. <div id="main" style="width: 90%;"></div>
  16. <script type="text/javascript">
  17. // alert("1.准备初始化echarts实例");
  18. // 基于准备好的dom,初始化echarts实例
  19. var myChart = echarts.init(document.getElementById('main'));
  20. var posList = [
  21. 'left', 'right', 'top', 'bottom',
  22. 'inside',
  23. 'insideTop', 'insideLeft', 'insideRight', 'insideBottom',
  24. 'insideTopLeft', 'insideTopRight', 'insideBottomLeft', 'insideBottomRight'
  25. ];
  26. myChart.configParameters = {
  27. rotate: {
  28. min: -90,
  29. max: 90
  30. },
  31. align: {
  32. options: {
  33. left: 'left',
  34. center: 'center',
  35. right: 'right'
  36. }
  37. },
  38. verticalAlign: {
  39. options: {
  40. top: 'top',
  41. middle: 'middle',
  42. bottom: 'bottom'
  43. }
  44. },
  45. position: {
  46. options: echarts.util.reduce(posList, function (map, pos) {
  47. map[pos] = pos;
  48. return map;
  49. }, {})
  50. },
  51. distance: {
  52. min: 0,
  53. max: 100
  54. }
  55. };
  56. myChart.config = {
  57. rotate: 90,
  58. align: 'left',
  59. verticalAlign: 'middle',
  60. position: 'insideBottom',
  61. distance: 15,
  62. onChange: function () {
  63. var labelOption = {
  64. normal: {
  65. rotate: app.config.rotate,
  66. align: app.config.align,
  67. verticalAlign: app.config.verticalAlign,
  68. position: app.config.position,
  69. distance: app.config.distance
  70. }
  71. };
  72. myChart.setOption({
  73. series: [{
  74. label: labelOption
  75. }, {
  76. label: labelOption
  77. }, {
  78. label: labelOption
  79. }, {
  80. label: labelOption
  81. }]
  82. });
  83. }
  84. };
  85. var labelOption = {
  86. normal: {
  87. show: true,
  88. position: myChart.config.position,
  89. distance: myChart.config.distance,
  90. align: myChart.config.align,
  91. verticalAlign: myChart.config.verticalAlign,
  92. rotate: myChart.config.rotate,
  93. formatter: '{c} {name|{a}}',
  94. fontSize: 16,
  95. rich: {
  96. name: {
  97. textBorderColor: '#fff'
  98. }
  99. }
  100. }
  101. };
  102. var colorList = ['#66DD00','#AAAAAA','#00CC33','#DD0000','#996666','#DDDDDD'];
  103. var option = {
  104. title : {
  105. text: '项目成本和收入实时表',
  106. subtext: '技术支持:上海鼎善信息科技有限公司',
  107. x: 'center'
  108. },
  109. tooltip : {
  110. trigger: 'axis',
  111. axisPointer : { // 坐标轴指示器,坐标轴触发有效
  112. type : 'shadow' // 默认为直线,可选为:'line' | 'shadow'
  113. },
  114. formatter : function(params) { //数据格式
  115. var sale = Number(params[0].value)+Number(params[1].value);
  116. var cost = Number(params[2].value)+Number(params[3].value)+Number(params[4].value)+Number(params[5].value);
  117.     var relVal = params[0].name+"<br/>";
  118. relVal += '销售金额:'+format(sale)+"元<br/>";
  119.     relVal += "&nbsp;&nbsp;"+params[0].marker + params[0].seriesName+ ' : ' + format(params[0].value)+"元<br/>";
  120.     relVal += "&nbsp;&nbsp;"+params[1].marker + params[1].seriesName+ ' : ' + format(params[1].value) +"元<br/>";
  121. relVal += '项目预算:'+format(cost)+"元<br/>";
  122.     relVal += "&nbsp;&nbsp;"+params[2].marker + params[2].seriesName+ ' : ' + format(params[2].value) +"元<br/>";
  123.     relVal += "&nbsp;&nbsp;"+params[3].marker + params[3].seriesName+ ' : ' + format(params[3].value) +"元<br/>";
  124.     relVal += "&nbsp;&nbsp;"+params[4].marker + params[4].seriesName+ ' : ' + format(params[4].value) +"元<br/>";
  125.     relVal += "&nbsp;&nbsp;"+params[5].marker + params[5].seriesName+ ' : ' + format(params[5].value) +"元<br/>";
  126.     return relVal;
  127. }
  128. },
  129. legend: {
  130. top:"50px",
  131. data:[/* '销售金额', */'已收物业费','应收账款',/* '项目预算', */'外包成本','人员工资','物料成本','预算结余']
  132. },
  133. grid: {
  134. top:'80px',
  135. left: '3%',
  136. right: '4%',
  137. bottom: '3%',
  138. containLabel: true
  139. },
  140. yAxis : [
  141. {
  142. type : 'category',
  143. data : ['北斗西虹桥基地','青浦地税','青浦工业园区','曲水园','青浦检察院','交大附中','群艺馆',
  144. '司法残联','科技创业中心','地税干部学校(青浦)','老干部局','徐泾镇社区卫生中心','青浦区环境监测站']
  145. }
  146. ],
  147. xAxis : [
  148. {
  149. type : 'value'
  150. }
  151. ],
  152. series : [
  153. /* {
  154. name:'销售金额',
  155. type:'bar',
  156. data:[3796400, 7344700, 6558196, 1283260, 3398088, 5758220, 4828392,
  157. 1412932,1096221,2359180,917192,706200,1473512]
  158. }, */
  159. {
  160. name:'已收物业费',
  161. type:'bar',
  162. stack: '物业费',
  163. barWidth : 16,
  164. data:[2160000, 3452000, 2170000, 680000, 1699044, 1439555, 2000000,
  165. 941954,7730814 ,
  166. 1572787 ,
  167. 611461 ,
  168. 470800 ,
  169. 982341 ]
  170. },
  171. {
  172. name:'应收账款',
  173. type:'bar',
  174. stack: '物业费',
  175. barWidth : 16,
  176. itemStyle:{
  177. normal:{
  178. color: '#CCCCCC'
  179. }
  180. },
  181. data:[1636400, 3892700, 4388196, 603260, 1699044, 4318665, 2828392,
  182. 470978,365407 ,
  183. 786393 ,
  184. 305731 ,
  185. 235400 ,
  186. 491171 ]
  187. },
  188. /* {
  189. name:'项目预算',
  190. type:'bar',
  191. data:[3037120, 5875760, 5246556, 1026608, 2718470, 4606576, 3862713]
  192. }, */
  193. {
  194. name:'外包成本',
  195. type:'bar',
  196. stack: '成本',
  197. barWidth : 16,
  198. data:[1189800, 1894090, 2190020, 129300, 263100, 1238000, 345200,
  199. 452138 ,
  200. 350791 ,
  201. 754938 ,
  202. 293501 ,
  203. 225984 ,
  204. 471524 ]
  205. },
  206. {
  207. name:'人员工资',
  208. type:'bar',
  209. stack: '成本',
  210. barWidth : 16,
  211. data:[580000, 1653000, 668000, 239000, 1138000, 1925800, 1689000,
  212. 339104 ,
  213. 263093 ,
  214. 566203 ,
  215. 220126 ,
  216. 169488 ,
  217. 353643 ]
  218. },
  219. {
  220. name:'物料成本',
  221. type:'bar',
  222. stack: '成本',
  223. barWidth : 16,
  224. data:[45880, 62000, 94100, 4500, 21093, 123870, 12100,
  225. 21090 ,
  226. 23980 ,
  227. 47833 ,
  228. 7629 ,
  229. 6510 ,
  230. 19209 ]
  231. },
  232. {
  233. name:'预算结余',
  234. type:'bar',
  235. stack: '成本',
  236. barWidth : 16,
  237. itemStyle:{
  238. normal:{
  239. color: '#00AA00'
  240. }
  241. },
  242. data:[1221440, 2266670, 2294436, 653808, 1296277, 1318906, 1816413,
  243. 318014 ,
  244. 239113 ,
  245. 518370 ,
  246. 212497 ,
  247. 162978 ,
  248. 334434 ]
  249. }
  250. ]
  251. };
  252. myChart.setOption(option);
  253. // getDom() 获取 ECharts 实例容器的 dom 节点
  254. var counts = 13;
  255. this.autoHeight = counts * 60 + 50; // counst.length为柱状图的条数,即数据长度。35为我给每个柱状图的高度,50为柱状图x轴内容的高度(大概的)。
  256. myChart.getDom().style.height = this.autoHeight + "px";
  257. myChart.getDom().childNodes[0].style.height = this.autoHeight + "px";
  258. myChart.getDom().childNodes[0].childNodes[0].setAttribute("height",this.autoHeight);
  259. myChart.getDom().childNodes[0].childNodes[0].style.height = this.autoHeight + "px";
  260. myChart.resize();
  261. function format (num) {
  262. var reg=/\d{1,3}(?=(\d{3})+$)/g;
  263. return (num + '').replace(reg, '$&,');
  264. }
  265. // 相当于 document.ready,{代码}
  266. $(function() {
  267. //alert("3.页面加载完毕");
  268. })
  269. </script>
  270. </body>
  271. </html>