userStats.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440
  1. var myChart = echarts.init(document.getElementById('attendanceStatsChar'),'walden');
  2. var myChart2 = echarts.init(document.getElementById('attendanceStatsChar2'),'walden');
  3. option = {
  4. color: ['#3398DB'],
  5. tooltip: {
  6. trigger: 'axis'
  7. },
  8. grid:{
  9. left: '3%',
  10. right: '4%',
  11. bottom: '1%',
  12. containLabel: true
  13. },
  14. legend: {
  15. data:[],
  16. width:'90%',
  17. left:'center'
  18. },
  19. xAxis:
  20. {
  21. type: 'category',
  22. data: [],
  23. axisLabel: {
  24. interval: 0,
  25. formatter:function(value)
  26. {
  27. var ret = "";//拼接加\n返回的类目项
  28. var maxLength = 1;//每项显示文字个数
  29. var valLength = value.length;//X轴类目项的文字个数
  30. var rowN = Math.ceil(valLength / maxLength); //类目项需要换行的行数
  31. if (rowN > 1)//如果类目项的文字大于3,
  32. {
  33. for (var i = 0; i < rowN; i++) {
  34. var temp = "";//每次截取的字符串
  35. var start = i * maxLength;//开始截取的位置
  36. var end = start + maxLength;//结束截取的位置
  37. //这里也可以加一个是否是最后一行的判断,但是不加也没有影响,那就不加吧
  38. temp = value.substring(start, end) + "\n";
  39. ret += temp; //凭借最终的字符串
  40. }
  41. return ret;
  42. }
  43. else {
  44. return value;
  45. }
  46. }
  47. }
  48. },
  49. yAxis: [
  50. {
  51. type: 'value',
  52. name:'员工流动比例(%)',
  53. axisLabel: {
  54. show: true,
  55. interval: 'auto',
  56. formatter: function (value, index) {
  57. return value+"%";
  58. }
  59. //formatter: '{value} '
  60. }
  61. }
  62. ],
  63. dataZoom: [
  64. {
  65. type: 'inside',
  66. start: 0,
  67. end: 100
  68. }
  69. ],
  70. series: [
  71. {
  72. name:'',
  73. type:'bar',
  74. data:[]
  75. }
  76. ]
  77. };
  78. option2 = {
  79. color: ['#3398DB'],
  80. tooltip: {
  81. trigger: 'axis'
  82. },
  83. grid:{
  84. left: '3%',
  85. right: '4%',
  86. bottom: '1%',
  87. containLabel: true
  88. },
  89. legend: {
  90. data:[],
  91. width:'90%',
  92. left:'center'
  93. },
  94. xAxis:
  95. {
  96. type: 'category',
  97. data: ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月',],
  98. axisLabel: {
  99. interval: 0,
  100. formatter:function(value)
  101. {
  102. var ret = "";//拼接加\n返回的类目项
  103. var maxLength = 1;//每项显示文字个数
  104. var valLength = value.length;//X轴类目项的文字个数
  105. var rowN = Math.ceil(valLength / maxLength); //类目项需要换行的行数
  106. if (rowN > 1)//如果类目项的文字大于3,
  107. {
  108. for (var i = 0; i < rowN; i++) {
  109. var temp = "";//每次截取的字符串
  110. var start = i * maxLength;//开始截取的位置
  111. var end = start + maxLength;//结束截取的位置
  112. //这里也可以加一个是否是最后一行的判断,但是不加也没有影响,那就不加吧
  113. temp = value.substring(start, end) + "\n";
  114. ret += temp; //凭借最终的字符串
  115. }
  116. return ret;
  117. }
  118. else {
  119. return value;
  120. }
  121. }
  122. }
  123. },
  124. yAxis: [
  125. {
  126. type: 'value',
  127. name:'员工流动比例(%)',
  128. axisLabel: {
  129. show: true,
  130. interval: 'auto',
  131. formatter: function (value, index) {
  132. return value+"%";
  133. }
  134. //formatter: '{value} '
  135. }
  136. }
  137. ],
  138. dataZoom: [
  139. {
  140. type: 'inside',
  141. start: 0,
  142. end: 100
  143. }
  144. ],
  145. series: [
  146. {
  147. name:'',
  148. type:'bar',
  149. data:[]
  150. }
  151. ]
  152. };
  153. $(function() {
  154. $(document).ready(function() {
  155. attendanceStatssearch();
  156. });
  157. });
  158. function attendanceStatssearch(){
  159. handleAjaxSimple("userStatsController.do?userStatsData", $("#attendanceStatsForm").serialize(), handleSuccess);
  160. }
  161. function handleSuccess(data){
  162. if(data.cdata.noData){
  163. $(".content").hide();
  164. $("#uptb").hide();
  165. $("#upbg").hide();
  166. $("#upexport").hide();
  167. $(".err-info").show();
  168. }else{
  169. $(".content").show();
  170. $(".err-info").hide();
  171. //$("#upBtn").show();
  172. $("#uptb").show();
  173. $("#upbg").show();
  174. var srcstr = $("#uptb").attr("src");
  175. if(srcstr.indexOf("tb1.png") < 0){
  176. $("#upexport").show();
  177. }
  178. var rolefalg = $("#roleFlag").val();
  179. var prostr;
  180. if(rolefalg == 1){
  181. prostr = '项目';
  182. }else{
  183. prostr = '部门';
  184. }
  185. var charheadStr;
  186. var attType = $("#attType").val();
  187. if(attType == 0 ){
  188. charheadStr =$("#curYear").val()+"年"+$("#attMonth").val()+"月各"+prostr+"员工流动";
  189. }else if(attType == 1){
  190. var attQuarters = $("#attQuarters").val();
  191. if(attQuarters == 1){
  192. charheadStr = $("#curYear").val()+"年一季度(01月-03月)各"+prostr+"员工流动";
  193. }else if(attQuarters == 2){
  194. charheadStr = $("#curYear").val()+"年二季度(04月-06月)各"+prostr+"员工流动";
  195. }else if(attQuarters == 3){
  196. charheadStr = $("#curYear").val()+"年三季度(07月-09月)各"+prostr+"员工流动";
  197. }else {
  198. charheadStr = $("#curYear").val()+"年四季度(10月-12月)各"+prostr+"员工流动";
  199. }
  200. }else if(attType == 2){
  201. charheadStr = $("#curYear").val()+"年度各"+prostr+"员工流动";
  202. }
  203. $("#upcharheaddiv").html(charheadStr);
  204. initCharDate(data.cdata);
  205. initNdateList(data.tdata);
  206. }
  207. }
  208. function initNdateList(data){
  209. var rolefalg = $("#roleFlag").val();
  210. var pjNamestr;
  211. var pidNamestr;
  212. if(rolefalg == 1){
  213. pjNamestr = '项目名称';
  214. pidNamestr='项目经理';
  215. }else{
  216. pjNamestr = '项目名称';
  217. pidNamestr='部门名称';
  218. }
  219. var attType = $("#attType").val();
  220. var eatryleMonthstr;
  221. var endMonthstr;
  222. if(attType == 0 ){
  223. eatryleMonthstr ="月初总人数";
  224. endMonthstr="月末总人数 ";
  225. }else if(attType == 1){
  226. eatryleMonthstr ="季初总人数";
  227. endMonthstr="季末总人数 ";
  228. }else{
  229. eatryleMonthstr ="年初总人数";
  230. endMonthstr="年末总人数 ";
  231. }
  232. var colums = [[
  233. {field:'pName',title:pjNamestr,width:150},
  234. {field:'pidName',title:pidNamestr,width:150},
  235. {field:'earlyMonthTotal',title:eatryleMonthstr,width:150,align:'right',halign:'center' },
  236. {field:'entryTotal',title:'入职人数',width:150,align:'right',halign:'center' },
  237. {field:'leaveTotal',title:'离职人数',width:150,align:'right',halign:'center' },
  238. {field:'endMonthTotal',title:endMonthstr,width:150,align:'right',halign:'center' },
  239. {field:'flowProportion',title:'员工流动比例(%)',width:150,align:'right',halign:'center' }
  240. ]]
  241. $('#attendanceStatsTable').datagrid({
  242. singleSelect : true,
  243. loadMsg:'数据加载中,请稍后……',
  244. columns:colums,
  245. rownumbers:true,
  246. fitColumns:true
  247. }).datagrid('loadData',data);
  248. }
  249. function initCharDate(data){
  250. myChart.clear();
  251. option.xAxis.data = data.xAxisData;
  252. option.series = data.series;
  253. myChart.setOption(option);
  254. myChart.resize();
  255. }
  256. function showTabel(){
  257. $("#attendanceStatsChar").hide();
  258. $("#tablediv").show();
  259. $("#upexport").show();
  260. $("#uptb").attr("src","images/tb.png");
  261. $("#upbg").attr("src","images/bg1.png");
  262. //$("#attendanceStatsTable").datagrid("resize");
  263. var h=$(".content").height();
  264. $('#attendanceStatsTable').datagrid('resize', {
  265. height :h-50
  266. });
  267. }
  268. function showChar(){
  269. $("#tablediv").hide();
  270. $("#attendanceStatsChar").show();
  271. $("#upexport").hide();
  272. $("#uptb").attr("src","images/tb1.png");
  273. $("#upbg").attr("src","images/bg.png");
  274. myChart.resize();
  275. }
  276. myChart.on('click', function (params) {
  277. console.log(params);
  278. var rolefalg = $("#roleFlag").val();
  279. var attType = $("#attType").val();
  280. if(rolefalg == 1){
  281. $("#downcharheaddiv").html(params.name + "-"+$("#curYear").val()+"年01月~"+$("#curYear").val()+"年12月人员流动比例趋势变化");
  282. $("#upcharheaddiv2").html($("#curYear").val()+"年度人员流动比例趋势图");
  283. if(attType == 2){
  284. var data ={
  285. "attYear" : $("#curYear").val(),
  286. "pid":params.data.id
  287. };
  288. handleAjaxSimple("userStatsController.do?userYearInto", data, showDownChar);
  289. }
  290. }
  291. })
  292. function goBefore(){
  293. $("#attendanceStatsChar2").css("display","none");
  294. $("#tablediv2").hide();
  295. $("#searchColums").show();
  296. $("#downcharhead").hide();
  297. $("#attendanceStatsChar").show();
  298. $("#upcharhead").show();
  299. $("#upcharhead2").hide();
  300. $("#upBtn").show();
  301. $("#downBtn").hide();
  302. $("#downexport").hide();
  303. $("#downtb").attr("src","images/tb1.png");
  304. $("#downbg").attr("src","images/bg.png");
  305. myChart.resize();
  306. }
  307. //显示下钻图表
  308. function showDownChar(data){
  309. $("#attendanceStatsChar").css("display","none");
  310. $("#attendanceStatsChar2").show();
  311. $("#upBtn").hide();
  312. $("#downBtn").show();
  313. $("#searchColums").hide();
  314. $("#downcharhead").show();
  315. $("#upcharhead").hide();
  316. $("#upcharhead2").show();
  317. $("#yearspan2").html($("#curYear").val());
  318. initDownCharDate(data.cdata);
  319. initDownTabDate(data.tdata);
  320. }
  321. function initDownCharDate(data){
  322. myChart2.clear();
  323. option2.xAxis.data = data.xAxisData;
  324. option2.series = data.series;
  325. myChart2.setOption(option2);
  326. myChart2.resize();
  327. }
  328. function initDownTabDate(data){
  329. var attType = $("#attType").val();
  330. var eatryleMonthstr;
  331. var endMonthstr;
  332. if(attType == 0 ){
  333. eatryleMonthstr ="月初总人数";
  334. endMonthstr="月末总人数 ";
  335. }else if(attType == 1){
  336. eatryleMonthstr ="季初总人数";
  337. endMonthstr="季末总人数 ";
  338. }else{
  339. eatryleMonthstr ="年初总人数";
  340. endMonthstr="年末总人数 ";
  341. }
  342. var rolefalg = $("#roleFlag").val();
  343. var pjNamestr;
  344. var pidNamestr;
  345. var userNameField;
  346. var colums ;
  347. colums = [[
  348. {field:'yearMonth',title:'日期范围',width:150},
  349. {field:'pName',title:'项目名称',width:150},
  350. {field:'pidName',title:'项目经理',width:150},
  351. {field:'earlyMonthTotal',title:eatryleMonthstr,width:150,align:'right',halign:'center' },
  352. {field:'entryTotal',title:'入职人数',width:150,align:'right',halign:'center' },
  353. {field:'leaveTotal',title:'离职人数',width:150,align:'right',halign:'center' },
  354. {field:'endMonthTotal',title:endMonthstr,width:150,align:'right',halign:'center' },
  355. {field:'flowProportion',title:'员工流动比例(%)',width:150,align:'right',halign:'center' }
  356. ]]
  357. $('#attendanceStatsTable2').datagrid({
  358. singleSelect : true,
  359. loadMsg:'数据加载中,请稍后……',
  360. columns:colums,
  361. rownumbers:true,
  362. fitColumns:true
  363. }).datagrid('loadData',data);
  364. }
  365. function showDownTabelBtn(){
  366. $("#attendanceStatsChar2").hide();
  367. $("#tablediv2").show();
  368. $("#downexport").show();
  369. $("#downtb").attr("src","images/tb.png");
  370. $("#downbg").attr("src","images/bg1.png");
  371. //$("#attendanceStatsTable2").datagrid("resize");
  372. var h=$(".content").height();
  373. $('#attendanceStatsTable2').datagrid('resize', {
  374. height :h-50
  375. });
  376. }
  377. function showDownCharBtn(){
  378. $("#tablediv2").hide();
  379. $("#downexport").hide();
  380. $("#downtb").attr("src","images/tb1.png");
  381. $("#downbg").attr("src","images/bg.png");
  382. $("#attendanceStatsChar2").show();
  383. myChart2.resize();
  384. }
  385. function exportExcel(flag){
  386. var opts;
  387. if(flag == 1){
  388. opts = $('#attendanceStatsTable').datagrid('getColumnFields'); //这是获取到所有的FIELD
  389. }else{
  390. opts = $('#attendanceStatsTable2').datagrid('getColumnFields'); //这是获取到所有的FIELD
  391. }
  392. var exceltitles=[];
  393. for(i=0;i<opts.length;i++)
  394. {
  395. //var col = $('div[class$="'+opts[i]+'"] :not(.datagrid-sort-icon)').html();
  396. var col = $('td[field="'+opts[i]+'"] div :not(.datagrid-sort-icon)').html();
  397. exceltitles.push(col);//把TITLEPUSH到数组里去
  398. }
  399. var formdom = '<form method="post" id="formdom" action="userStatsController.do?exportExcel"><input name="flag" value="'+flag+'" /><input name="exceltitles" value="'+exceltitles+'" /><input name="exceltitleIds" value="'+opts+'" /></form>';
  400. $("#export").html(formdom);
  401. $("#formdom").submit();
  402. }