attendanceStats.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433
  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("attendanceStatsController.do?attendanceStatsData", $("#attendanceStatsForm").serialize(), handleSuccess);
  160. }
  161. function handleSuccess(data){
  162. if(data.cdata.noData){
  163. $(".content").hide();
  164. //$("#upBtn").hide();
  165. $("#uptb").hide();
  166. $("#upbg").hide();
  167. $("#upexport").hide();
  168. $(".err-info").show();
  169. }else{
  170. $(".content").show();
  171. $(".err-info").hide();
  172. //$("#upBtn").show();
  173. $("#uptb").show();
  174. $("#upbg").show();
  175. var srcstr = $("#uptb").attr("src");
  176. if(srcstr.indexOf("tb1.png") < 0){
  177. $("#upexport").show();
  178. }
  179. var rolefalg = $("#roleFlag").val();
  180. var prostr;
  181. if(rolefalg == 1){
  182. prostr = '项目';
  183. }else{
  184. prostr = '部门';
  185. }
  186. var charheadStr;
  187. var attType = $("#attType").val();
  188. if(attType == 0 ){
  189. charheadStr =$("#curYear").val()+"年"+$("#attMonth").val()+"月各"+prostr+"出勤率";
  190. }else if(attType == 1){
  191. var attQuarters = $("#attQuarters").val();
  192. if(attQuarters == 1){
  193. charheadStr = $("#curYear").val()+"年一季度(01月-03月)各"+prostr+"出勤率";
  194. }else if(attQuarters == 2){
  195. charheadStr = $("#curYear").val()+"年二季度(04月-06月)各"+prostr+"出勤率";
  196. }else if(attQuarters == 3){
  197. charheadStr = $("#curYear").val()+"年三季度(07月-09月)各"+prostr+"出勤率";
  198. }else {
  199. charheadStr = $("#curYear").val()+"年四季度(10月-12月)各"+prostr+"出勤率";
  200. }
  201. }else if(attType == 2){
  202. charheadStr = $("#curYear").val()+"年度各"+prostr+"出勤率";
  203. }
  204. $("#upcharheaddiv").html(charheadStr);
  205. initCharDate(data.cdata);
  206. initNdateList(data.tdata);
  207. }
  208. }
  209. function initNdateList(data){
  210. var rolefalg = $("#roleFlag").val();
  211. var pjNamestr;
  212. var pidNamestr;
  213. if(rolefalg == 1){
  214. pjNamestr = '项目名称';
  215. pidNamestr='项目经理';
  216. }else{
  217. pjNamestr = '项目名称';
  218. pidNamestr='部门名称';
  219. }
  220. var colums = [[
  221. {field:'pjName',title:pjNamestr,width:150},
  222. {field:'pidName',title:pidNamestr,width:150},
  223. {field:'datumWorkDuration',title:'应出勤时长',width:150/* ,align:'right',halign:'center' */},
  224. {field:'attendanceDuration',title:'实际出勤时长(不计加班)',width:150},
  225. {field:'attendanceRate',title:'出勤率(%)',align:'right',halign:'center',width:150},
  226. ]]
  227. $('#attendanceStatsTable').datagrid({
  228. singleSelect : true,
  229. loadMsg:'数据加载中,请稍后……',
  230. columns:colums,
  231. rownumbers:true,
  232. fitColumns:true
  233. }).datagrid('loadData',data);
  234. $("#attendanceStatsTable").datagrid("resize");
  235. }
  236. function initCharDate(data){
  237. myChart.clear();
  238. option.xAxis.data = data.xAxisData;
  239. option.series = data.series;
  240. myChart.setOption(option);
  241. myChart.resize();
  242. }
  243. function showTabel(){
  244. $("#attendanceStatsChar").hide();
  245. $("#tablediv").show();
  246. $("#upexport").show();
  247. $("#uptb").attr("src","images/tb.png");
  248. $("#upbg").attr("src","images/bg1.png");
  249. //$("#attendanceStatsTable").datagrid("resize");
  250. var h=$(".content").height();
  251. $('#attendanceStatsTable').datagrid('resize', {
  252. height :h-50
  253. });
  254. }
  255. function showChar(){
  256. $("#tablediv").hide();
  257. $("#attendanceStatsChar").show();
  258. $("#upexport").hide();
  259. $("#uptb").attr("src","images/tb1.png");
  260. $("#upbg").attr("src","images/bg.png");
  261. myChart.resize();
  262. }
  263. myChart.on('click', function (params) {
  264. console.log(params);
  265. var rolefalg = $("#roleFlag").val();
  266. var attType = $("#attType").val();
  267. if(rolefalg == 1){
  268. $("#downcharheaddiv").html(params.name + "-"+$("#curYear").val()+"年01月~"+$("#curYear").val()+"年12月考勤出勤率趋势变化");
  269. $("#upcharheaddiv2").html($("#curYear").val()+"年度项目考勤出勤");
  270. if(attType == 2){
  271. var data ={
  272. "attYear" : $("#curYear").val(),
  273. "pid":params.data.id
  274. };
  275. handleAjaxSimple("attendanceStatsController.do?attendandceYearInto", data, showDownChar);
  276. }
  277. }else{
  278. $("#downcharheaddiv").html($("#pid").find("option:selected").text()+"-"+$("#curYear").val()+"年"+$("#attMonth").val()+"月"+params.name+"人员出勤率");
  279. if(attType == 0){
  280. var data = {
  281. "attYear" : $("#curYear").val(),
  282. "attMonth" : $("#attMonth").val(),
  283. "pid":$("#pid").val(),
  284. "did":params.data.id
  285. }
  286. handleAjaxSimple("attendanceStatsController.do?attendandceMonthInto", data, showDownChar);
  287. }
  288. }
  289. })
  290. function goBefore(){
  291. $("#attendanceStatsChar2").css("display","none");
  292. $("#tablediv2").hide();
  293. $("#searchColums").show();
  294. $("#downcharhead").hide();
  295. $("#attendanceStatsChar").show();
  296. $("#upcharhead").show();
  297. $("#upcharhead2").hide();
  298. $("#upBtn").show();
  299. $("#downBtn").hide();
  300. $("#downexport").hide();
  301. $("#downtb").attr("src","images/tb1.png");
  302. $("#downbg").attr("src","images/bg.png");
  303. myChart.resize();
  304. }
  305. //显示下钻图表
  306. function showDownChar(data){
  307. $("#attendanceStatsChar").css("display","none");
  308. $("#attendanceStatsChar2").show();
  309. $("#upBtn").hide();
  310. $("#downBtn").show();
  311. $("#searchColums").hide();
  312. $("#downcharhead").show();
  313. $("#upcharhead").hide();
  314. $("#upcharhead2").show();
  315. $("#yearspan2").html($("#curYear").val());
  316. initDownCharDate(data.cdata);
  317. initDownTabDate(data.tdata);
  318. }
  319. function initDownCharDate(data){
  320. myChart2.clear();
  321. option2.xAxis.data = data.xAxisData;
  322. option2.series = data.series;
  323. myChart2.setOption(option2);
  324. myChart2.resize();
  325. }
  326. function initDownTabDate(data){
  327. var rolefalg = $("#roleFlag").val();
  328. var pjNamestr;
  329. var pidNamestr;
  330. var userNameField;
  331. var colums ;
  332. if(rolefalg == 1){
  333. colums = [[
  334. {field:'yearMonth',title:'日期范围',width:150},
  335. {field:'pjName',title:'项目名称',width:150},
  336. {field:'pidName',title:'项目经理',width:150},
  337. {field:'datumWorkDuration',title:'应出勤时长',width:150/* ,align:'right',halign:'center' */},
  338. {field:'attendanceDuration',title:'实际出勤时长(不计加班)',width:150},
  339. {field:'attendanceRate',title:'出勤率(%)',width:150,align:'right',halign:'center'},
  340. ]]
  341. }else{
  342. colums = [[
  343. {field:'yearMonth',title:'日期范围',width:150},
  344. {field:'pjName',title:'项目名称',width:150},
  345. {field:'pidName',title:'部门名称',width:150},
  346. {field:'userName',title:'员工姓名',width:150},
  347. {field:'datumWorkDuration',title:'应出勤时长',width:150,/* ,align:'right',halign:'center' */},
  348. {field:'attendanceDuration',title:'实际出勤时长(不计加班)',width:150},
  349. {field:'attendanceRate',title:'出勤率(%)',width:150,align:'right',halign:'center'},
  350. ]]
  351. }
  352. $('#attendanceStatsTable2').datagrid({
  353. singleSelect : true,
  354. loadMsg:'数据加载中,请稍后……',
  355. columns:colums,
  356. rownumbers:true,
  357. fitColumns:true
  358. }).datagrid('loadData',data);
  359. }
  360. function showDownTabelBtn(){
  361. $("#attendanceStatsChar2").hide();
  362. $("#tablediv2").show();
  363. $("#downexport").show();
  364. $("#downtb").attr("src","images/tb.png");
  365. $("#downbg").attr("src","images/bg1.png");
  366. //$("#attendanceStatsTable2").datagrid("resize");
  367. var h=$(".content").height();
  368. $('#attendanceStatsTable2').datagrid('resize', {
  369. height :h-50
  370. });
  371. }
  372. function showDownCharBtn(){
  373. $("#tablediv2").hide();
  374. $("#attendanceStatsChar2").show();
  375. $("#downexport").hide();
  376. $("#downtb").attr("src","images/tb1.png");
  377. $("#downbg").attr("src","images/bg.png");
  378. myChart2.resize();
  379. }
  380. function exportExcel(flag){
  381. var opts;
  382. if(flag == 1){
  383. opts = $('#attendanceStatsTable').datagrid('getColumnFields'); //这是获取到所有的FIELD
  384. }else{
  385. opts = $('#attendanceStatsTable2').datagrid('getColumnFields'); //这是获取到所有的FIELD
  386. }
  387. var exceltitles=[];
  388. for(i=0;i<opts.length;i++)
  389. {
  390. //var col = $('div[class$="'+opts[i]+'"] :not(.datagrid-sort-icon)').html();
  391. var col = $('td[field="'+opts[i]+'"] div :not(.datagrid-sort-icon)').html();
  392. exceltitles.push(col);//把TITLEPUSH到数组里去
  393. }
  394. var formdom = '<form method="post" id="formdom" action="attendanceStatsController.do?exportExcel"><input name="flag" value="'+flag+'" /><input name="exceltitles" value="'+exceltitles+'" /><input name="exceltitleIds" value="'+opts+'" /></form>';
  395. $("#export").html(formdom);
  396. $("#formdom").submit();
  397. }