road_manage_statistics.js 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819
  1. var year = new Date().getFullYear();
  2. var month = new Date().getMonth()+1;
  3. var date = new Date().getDate();
  4. var year_assess ;
  5. var score_rank;
  6. var points_assess;
  7. var check_type;
  8. var months = ['1','2','3','4','5','6','7','8','9','10','11','12'];
  9. var monthsCH = ['一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月'];
  10. var select_road = $(".div-roadManage select").val();
  11. var array_year_score = new Array();
  12. var array_points = new Array();
  13. var array_allStation = new Array();
  14. var array_allStation_score = new Array();
  15. var array_check_type = new Array();
  16. var array_points_name = new Array();
  17. var array_points_pre = new Array();
  18. var arrar_points_month = new Array();
  19. var array_score_order = new Array();
  20. var array_score_data = new Array();
  21. var array_score_last = new Array();
  22. var array_get_score = new Array();
  23. var year_assess ;
  24. var score_rank;
  25. var points_assess;
  26. var check_type;
  27. var people_points;
  28. var rank_pre;
  29. var rank_suf;
  30. var min_year;
  31. var min_station;
  32. var min_pre
  33. var min_suff;
  34. var flag = true;
  35. $(function(){
  36. // 显示当前月份
  37. $(".div-month select").val(month);
  38. $(".div-button button").click(function(){
  39. var select_month = $(".div-month select").val();
  40. var select_road = $(".div-roadManage select").val();
  41. flag = false;
  42. // 查询图二
  43. init_company_points_assess("statistics/lost/score/rate",select_month+'',select_road);
  44. // 查询图三
  45. init_stationAll_rank("statistics/score/manage/tollgate/info",select_month+'',select_road);
  46. // 查询图四
  47. init_people_rank_pre("statistics/stuff/score/info",select_month+'',select_road);
  48. // 查询图五
  49. init_people_rank_suf("statistics/stuff/score/info",select_month+'',select_road);
  50. // 查询图六
  51. init_server_check_type("statistics/lost/itemscore/rate",select_month+"",select_road);
  52. // 查询图七
  53. init_each_people_points("statistics/lost/twice/itemscore/rate",select_month+"",select_road);
  54. // 加载图配置
  55. echart();
  56. });
  57. // 加载图配置
  58. echart();
  59. /**
  60. * 初始化图一
  61. */
  62. function init_company_year_assess(url,select_road){
  63. var param = {
  64. "start_date":year+"-01-01 00:00:00",
  65. "end_date":(year+1)+"-01-01 00:00:00",
  66. "dept_id":select_road,
  67. "queryType":1
  68. }
  69. initRqueset(url,param,1);
  70. }
  71. init_company_year_assess("statistics/score/year/info",select_road);
  72. /**
  73. * 初始化图二
  74. */
  75. function init_company_points_assess(url,mon,select_road){
  76. if(mon.length==1){
  77. mon = "0" +mon;
  78. }
  79. var param = {
  80. "mth":year + "/" +mon,
  81. "dept_id":select_road,
  82. "queryType":1
  83. }
  84. initRqueset(url,param,2);
  85. }
  86. init_company_points_assess("statistics/lost/score/rate",month+'',select_road);
  87. /**
  88. * 初始化图三
  89. */
  90. function init_stationAll_rank(url,mon,select_road){
  91. if(mon.length==1){
  92. mon = "0" +mon;
  93. }
  94. var param = {
  95. "mth":year + "/" +mon,
  96. "dept_id":select_road
  97. };
  98. initRqueset(url,param,3);
  99. }
  100. init_stationAll_rank("statistics/score/manage/tollgate/info",month+"",select_road);
  101. /**
  102. * 初始化图四
  103. */
  104. function init_people_rank_pre(url,mon,select_road){
  105. if(mon.length==1){
  106. mon = "0" +mon;
  107. }
  108. var param = {
  109. mth:year + "/" +mon,
  110. "dept_id":select_road,
  111. "queryType":1,
  112. "order_type":0
  113. }
  114. initRqueset(url,param,4);
  115. }
  116. init_people_rank_pre("statistics/stuff/score/info",month+'',select_road);
  117. /**
  118. * 初始化图五
  119. */
  120. function init_people_rank_suf(url,mon,select_road){
  121. if(mon.length==1){
  122. mon = "0" +mon;
  123. }
  124. var param = {
  125. mth:year + "/" +mon,
  126. "dept_id":select_road,
  127. "queryType":1,
  128. "order_type":1
  129. }
  130. initRqueset(url,param,5);
  131. }
  132. init_people_rank_suf("statistics/stuff/score/info",month+'',select_road);
  133. /**
  134. * 初始化图六
  135. */
  136. function init_server_check_type(url,mon,select_road){
  137. if(mon.length==1){
  138. mon = "0" +mon;
  139. }
  140. var param = {
  141. "mth":year + "/" +mon,
  142. "dept_id":select_road,
  143. "queryType":1
  144. };
  145. initRqueset(url,param,6);
  146. }
  147. init_server_check_type("statistics/lost/itemscore/rate",month+"",select_road);
  148. /**
  149. * 初始化图七
  150. */
  151. function init_each_people_points(url,mon,select_road){
  152. var yearPre = year;
  153. if(mon==1){
  154. prev_mth = 12+'';
  155. yearPre = yearPre-1;
  156. }else{
  157. var prev_mth = (mon-1)+'';
  158. }
  159. if(mon.length==1){
  160. mon = "0" +mon;
  161. }
  162. if(prev_mth.length==1){
  163. prev_mth = "0" + prev_mth;
  164. }
  165. var param = {
  166. "mth":year + "/" + mon,
  167. "prev_mth": yearPre + "/" + prev_mth,
  168. "dept_id":select_road,
  169. "queryType":1
  170. };
  171. initRqueset(url,param,7);
  172. }
  173. init_each_people_points("statistics/lost/twice/itemscore/rate",month+"",select_road);
  174. /**
  175. * 请求
  176. * @param {*} url
  177. * @param {*} param
  178. * @param {*} type
  179. */
  180. function initRqueset(url,param,type){
  181. post_common_service( url,param,function(data){
  182. data_array(data,type);
  183. if(type == 1){
  184. // 画图
  185. year_assess.setOption(roadManager_year_assess());
  186. }else if(type == 2){
  187. // 画图
  188. points_assess.setOption(roadManager_points_assess());
  189. }else if(type == 3){
  190. // 画图
  191. score_rank.setOption(tollStation_score_rank());
  192. }else if(type == 4){
  193. // 画图
  194. rank_pre.setOption(people_rank_pre());
  195. }else if(type == 5){
  196. // 画图
  197. rank_suf.setOption(people_rank_suf());
  198. }else if(type == 6){
  199. // 画图
  200. check_type.setOption(server_check_type());
  201. }else if(type == 7){
  202. // 画图
  203. people_points.setOption(each_people_points());
  204. }
  205. },function(error){
  206. return "" ;
  207. });
  208. }
  209. /**
  210. * 数组数据
  211. * @param {*} data
  212. * @param {*} type
  213. */
  214. function data_array(data,type){
  215. if(type == 1){
  216. array_year_score.length = 0;
  217. months.length = 0;
  218. if(data!='' && data.length!=0){
  219. if(data.length<12){
  220. for(var i=0;i<12-data.length;i++){
  221. // 不足月份补0
  222. array_year_score.push(0);
  223. }
  224. }
  225. for(var i=0;i<data.length;i++){
  226. if(months.indexOf(parseInt(data[i].mth.substr(5)))){
  227. // 指定位置插入值
  228. array_year_score.splice(parseInt(data[i].mth.substr(5))-1,0,
  229. (1000-(filter_handler(data[i].all_check_score,data[i].checked_num,data[i].people_num,0))));
  230. }
  231. }
  232. }else{
  233. array_year_score.length = 0;
  234. months.length = 0;
  235. }
  236. if(eval("Math.min(" + array_year_score.toString() + ")")==0)
  237. min_year = 0;
  238. else
  239. min_year = eval("Math.min(" + array_year_score.toString() + ")").toFixed(0)-10;
  240. }else if(type == 2){
  241. array_points.length=0;
  242. if(data!=''){
  243. array_points.push({"value": (data.people_num-(data.score_fifteen+data.score_fifty+data.score_over_fifty)),"name":'满分'});
  244. array_points.push({"value": data.score_fifteen,"name":'0-15分'});
  245. array_points.push({"value": data.score_fifty,"name":'15-50分'});
  246. array_points.push({"value": data.score_over_fifty,"name":'50分以上'});
  247. }else{
  248. array_points.length=0;
  249. }
  250. }else if(type == 3){
  251. array_allStation_score.length=0;
  252. array_allStation.length=0;
  253. if(data!='' && data.length!=0){
  254. for(var i=0;i<data.length;i++){
  255. array_allStation.push(data[i].feeStationName.substr(0,data[i].feeStationName.length-3));
  256. array_allStation_score.push((1000-(filter_handler(data[i].all_check_score,data[i].checked_num,data[i].people_num,0))));
  257. }
  258. }else{
  259. array_allStation_score.length=0;
  260. array_allStation.length=0;
  261. }
  262. if(eval("Math.min(" + array_allStation_score.toString() + ")")==0)
  263. min_station = 0;
  264. else
  265. min_station = eval("Math.min(" + array_allStation_score.toString() + ")").toFixed(0)-10;
  266. }else if(type == 4){
  267. array_score_order.length=0;
  268. array_score_data.length=0;
  269. if(data!='' && data.length!=0){
  270. for(var i=0;i<data.length;i++){
  271. array_score_order.push(data[i].user.truename+"\n"+"("+data[i].user.fee_station_name.substr(0,data[i].user.fee_station_name.length-3)+")");
  272. array_score_data.push((1000-filter(data[i].all_check_score,data[i].checked_num,0)));
  273. }
  274. }else{
  275. array_score_order.length=0;
  276. array_score_data.length=0;
  277. }
  278. if(eval("Math.min(" + array_score_data.toString() + ")")==0)
  279. min_pre = 0;
  280. else
  281. min_pre = eval("Math.min(" + array_score_data.toString() + ")").toFixed(0)-10;
  282. }else if(type == 5){
  283. array_score_last.length=0;
  284. array_get_score.length=0;
  285. if(data!='' && data.length!=0){
  286. for(var i=0;i<data.length;i++){
  287. array_score_last.push(data[i].user.truename+"\n"+"("+data[i].user.fee_station_name.substr(0,data[i].user.fee_station_name.length-3)+")");
  288. array_get_score.push((1000-filter(data[i].all_check_score,data[i].checked_num,0)));
  289. }
  290. }else{
  291. array_score_last.length=0;
  292. array_get_score.length=0;
  293. }
  294. if(eval("Math.min(" + array_get_score.toString() + ")")==0)
  295. min_suff = 0;
  296. else
  297. min_suff = eval("Math.min(" + array_get_score.toString() + ")").toFixed(0)-10;
  298. }else if(type == 6){
  299. array_check_type.length=0;
  300. if(data.length != 0){
  301. for(var i=0;i<data.length;i++){
  302. array_check_type.push({"value": data[i].all_check_score,"name":data[i].name});
  303. }
  304. }else{
  305. array_check_type.length=0;
  306. }
  307. }else if(type == 7){
  308. array_points_name.length=0;
  309. array_points_pre.length=0;
  310. arrar_points_month.length=0;
  311. if(data!='' && data.Pmth.length!=0 || data.Tmth.length!=0){
  312. data_each_people_points(data);
  313. }else{
  314. array_points_name.length=0;
  315. array_points_pre.length=0;
  316. arrar_points_month.length=0;
  317. }
  318. }
  319. }
  320. function data_each_people_points(data){
  321. var flag = true;
  322. var name = ['环境卫生','仪容仪表着装','表情','动作','文明用语','工作纪律及行为举止','便民服务','安全管理']
  323. var Tmth = data.Tmth;
  324. var Pmth = data.Pmth;
  325. var Ntemp = new Array();
  326. var Ptemp = new Array();
  327. var Ttemp = new Array();
  328. for(var i= 0; i < name.length;i++){
  329. flag = true;
  330. if(Tmth.length > 0){
  331. for(var j= 0; j< Tmth.length;j++){
  332. if(name[i] == Tmth[j].name && Tmth[j].all_check_score != null){
  333. Ttemp[i] = filter_handler(Tmth[j].all_check_score,Tmth[j].checked_num,Tmth[j].people_num,0);
  334. break;
  335. }else{
  336. Ttemp[i] = 0;
  337. }
  338. }
  339. }else{
  340. Ttemp[i] = 0;
  341. }
  342. if(Pmth.length > 0){
  343. for(var m= 0; m< Pmth.length;m++){
  344. if(name[i] == Pmth[m].name && Pmth[m].all_check_score != null){
  345. Ptemp[i] = filter_handler(Pmth[m].all_check_score,Pmth[m].checked_num,Pmth[m].people_num,0);
  346. break;
  347. }else{
  348. Ptemp[i] = 0;
  349. }
  350. }
  351. }else{
  352. Ptemp[i] = 0;
  353. }
  354. if(Ttemp[i]== 0 && Ptemp[i] == 0){
  355. name[i] = "";
  356. flag = null;
  357. }
  358. if(name[i] != ""){
  359. if(name[i]=='仪容仪表着装'){
  360. name[i]='仪表';
  361. }
  362. if(name[i]=='工作纪律及行为举止'){
  363. name[i]='行为';
  364. }
  365. array_points_name.push(name[i]);
  366. }
  367. if(flag){
  368. array_points_pre.push(Ptemp[i]);
  369. arrar_points_month.push(Ttemp[i]);
  370. }
  371. }
  372. }
  373. /**
  374. * 除数为0处理
  375. * @param {*} num
  376. * @param {*} num1
  377. * @param {*} num2
  378. * @param {*} num4
  379. */
  380. function filter_handler(num,num1,num2,num4){
  381. if(num1 == 0 || num2 == 0){
  382. return num4;
  383. }else{
  384. return ((num/num1)/num2).toFixed(2);
  385. }
  386. }
  387. function filter(num,num1,num2){
  388. if(num1 == 0){
  389. return num2;
  390. }else{
  391. return (num/num1).toFixed(2);
  392. }
  393. }
  394. function echart(){
  395. // 路径配置
  396. require.config({
  397. paths: {
  398. echarts: '/js/lib/echarts/build/dist'
  399. }
  400. });
  401. // 使用
  402. require(
  403. [
  404. 'echarts',
  405. 'echarts/chart/line',
  406. 'echarts/chart/bar',
  407. 'echarts/chart/pie'
  408. ],
  409. function (ec) {
  410. // 基于准备好的dom,初始化echarts图表
  411. if(flag){
  412. year_assess = ec.init(document.getElementById('roadManager-year-assess'));
  413. }
  414. points_assess = ec.init(document.getElementById('roadManager-points-assess'));
  415. score_rank = ec.init(document.getElementById('tollStation-score-rank'));
  416. rank_pre = ec.init(document.getElementById('people-rank-pre'));
  417. rank_suf = ec.init(document.getElementById('people-rank-suf'));
  418. check_type = ec.init(document.getElementById('server-check-type'));
  419. people_points = ec.init(document.getElementById('each-people-points'));
  420. }
  421. );
  422. }
  423. /**
  424. * 图一
  425. */
  426. function roadManager_year_assess(){
  427. option = {
  428. color : [ '#00ced1' ],
  429. tooltip : {
  430. trigger: 'axis'
  431. },
  432. legend: {
  433. data:['平均分']
  434. },
  435. toolbox: {
  436. show : true,
  437. },
  438. calculable : true,
  439. xAxis : [
  440. {
  441. type : 'category',
  442. boundaryGap : false,
  443. data : ['一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月']
  444. }
  445. ],
  446. yAxis : [
  447. {
  448. type : 'value',
  449. min : min_year ,
  450. max : 1000,
  451. axisLabel : {
  452. formatter: '{value}'
  453. }
  454. }
  455. ],
  456. series : [
  457. {
  458. name:'平均分',
  459. type:'line',
  460. data:array_year_score,
  461. markPoint : {
  462. data : [
  463. {type : 'max', name: '最大值'},
  464. {type : 'min', name: '最小值'}
  465. ]
  466. },
  467. markLine : {
  468. data : [
  469. {type : 'average', name: '平均值'}
  470. ]
  471. }
  472. },
  473. ]
  474. };
  475. return option;
  476. }
  477. /**
  478. * 图二
  479. */
  480. function roadManager_points_assess(){
  481. option = {
  482. tooltip : {
  483. trigger: 'item',
  484. formatter: "道管中心考核扣分占比 <br/>{b} : {d}%"
  485. },
  486. toolbox: {
  487. show : true,
  488. feature : {
  489. magicType : {
  490. type: ['pie', 'funnel'],
  491. option: {
  492. funnel: {
  493. x: '25%',
  494. width: '50%',
  495. funnelAlign: 'left',
  496. max: 1548
  497. }
  498. }
  499. },
  500. }
  501. },
  502. calculable : true,
  503. series : [
  504. {
  505. name:'访问来源',
  506. type:'pie',
  507. radius : '65%',
  508. center: ['50%', '50%'],
  509. data:array_points
  510. }
  511. ]
  512. };
  513. return option;
  514. }
  515. /**
  516. * 图三
  517. */
  518. function tollStation_score_rank(){
  519. option = {
  520. color : [ '#00ced1' ],// 条形图颜色
  521. tooltip : {
  522. trigger: 'axis'
  523. },
  524. grid:{
  525. width:"80%",
  526. },
  527. calculable : true,
  528. xAxis : [
  529. {
  530. type : 'category',
  531. data : array_allStation
  532. }
  533. ],
  534. yAxis : [
  535. {
  536. type : 'value',
  537. min : min_station ,
  538. max : 1000
  539. }
  540. ],
  541. series : [
  542. {
  543. type:'bar',
  544. data:array_allStation_score,
  545. itemStyle: {
  546. normal: {
  547. label: {
  548. show: true,
  549. position: 'insideTop'
  550. }
  551. }
  552. },
  553. markLine : {
  554. data : [
  555. {type : 'average', name: '平均值'}
  556. ]
  557. }
  558. }
  559. ]
  560. };
  561. return option;
  562. }
  563. /**
  564. * 图四
  565. */
  566. function people_rank_pre(){
  567. option = {
  568. color : [ '#00ced1' ],// 条形图颜色
  569. tooltip : {
  570. trigger: 'axis'
  571. },
  572. grid:{
  573. width:"80%",
  574. },
  575. legend: {
  576. data:['平均分']
  577. },
  578. calculable : true,
  579. xAxis : [
  580. {
  581. type : 'category',
  582. axisLabel :{
  583. interval:0 // 显示x轴所有信息,不隐藏部分
  584. },
  585. data : array_score_order
  586. }
  587. ],
  588. yAxis : [
  589. {
  590. type : 'value',
  591. min : min_pre ,
  592. max : 1000
  593. }
  594. ],
  595. series : [
  596. {
  597. name:'平均分',
  598. type:'bar',
  599. data: array_score_data,
  600. itemStyle: {
  601. normal: {
  602. label: {
  603. show: true,
  604. position: 'insideTop'
  605. }
  606. }
  607. },
  608. markPoint : {
  609. data : [
  610. {type : 'max', name: '最大值'},
  611. {type : 'min', name: '最小值'}
  612. ]
  613. },
  614. markLine : {
  615. data : [
  616. {type : 'average', name: '平均值'}
  617. ]
  618. }
  619. }
  620. ]
  621. };
  622. return option;
  623. }
  624. /**
  625. * 图五
  626. */
  627. function people_rank_suf(){
  628. option = {
  629. color : [ '#00ced1' ],// 条形图颜色
  630. tooltip : {
  631. trigger: 'axis'
  632. },
  633. grid:{
  634. width:"80%",
  635. },
  636. legend: {
  637. data:['平均分']
  638. },
  639. calculable : true,
  640. xAxis : [
  641. {
  642. type : 'category',
  643. axisLabel :{
  644. interval:0 // 显示x轴所有信息,不隐藏部分
  645. },
  646. data : array_score_last
  647. }
  648. ],
  649. yAxis : [
  650. {
  651. type : 'value',
  652. min : min_suff ,
  653. max : 1000
  654. }
  655. ],
  656. series : [
  657. {
  658. name:'平均分',
  659. type:'bar',
  660. data: array_get_score,
  661. itemStyle: {
  662. normal: {
  663. label: {
  664. show: true,
  665. position: 'insideTop'
  666. }
  667. }
  668. },
  669. markPoint : {
  670. data : [
  671. {type : 'max', name: '最大值'},
  672. {type : 'min', name: '最小值'}
  673. ]
  674. },
  675. markLine : {
  676. data : [
  677. {type : 'average', name: '平均值'}
  678. ]
  679. }
  680. }
  681. ]
  682. };
  683. return option;
  684. }
  685. /**
  686. * 图六
  687. */
  688. function server_check_type(){
  689. option = {
  690. tooltip : {
  691. trigger: 'item',
  692. formatter: "温馨服务检查占比 <br/>{b} : {d}%"
  693. },
  694. toolbox: {
  695. show : true,
  696. feature : {
  697. magicType : {
  698. type: ['pie', 'funnel'],
  699. option: {
  700. funnel: {
  701. x: '25%',
  702. width: '50%',
  703. funnelAlign: 'left',
  704. max: 1548
  705. }
  706. }
  707. },
  708. }
  709. },
  710. calculable : true,
  711. series : [
  712. {
  713. name:'访问来源',
  714. type:'pie',
  715. radius : '65%',
  716. center: ['50%', '50%'],
  717. data:array_check_type
  718. }
  719. ]
  720. };
  721. return option;
  722. }
  723. /**
  724. * 图七
  725. */
  726. function each_people_points(){
  727. option = {
  728. tooltip : {
  729. trigger: 'axis'
  730. },
  731. grid:{
  732. width:"80%"
  733. },
  734. legend: {
  735. data:['上月','本月']
  736. },
  737. calculable : true,
  738. xAxis : [
  739. {
  740. type : 'category',
  741. data : array_points_name
  742. }
  743. ],
  744. yAxis : [
  745. {
  746. type : 'value'
  747. }
  748. ],
  749. series : [
  750. {
  751. name:'上月',
  752. type:'bar',
  753. data: array_points_pre,
  754. itemStyle: {
  755. normal: {
  756. label: {
  757. show: true,
  758. position: 'insideTop'
  759. }
  760. }
  761. },
  762. },
  763. {
  764. name:'本月',
  765. type:'bar',
  766. data: arrar_points_month,
  767. itemStyle: {
  768. normal: {
  769. label: {
  770. show: true,
  771. position: 'insideTop'
  772. }
  773. }
  774. },
  775. }
  776. ]
  777. };
  778. return option;
  779. }
  780. });