total_company_statistics.js 46 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390
  1. var year = new Date().getFullYear();
  2. var x_m_array = new Array();
  3. var x_m_array_temp = new Array();
  4. var date = new Date().getDate();
  5. var array_year_score = new Array();
  6. var array_points = new Array();
  7. var array_points2 = new Array();
  8. var array_road = new Array();
  9. var array_road_score = new Array();
  10. var array_road_score_temp = new Array();
  11. var array_allStation = new Array();
  12. var array_allStation_score = new Array();
  13. var array_allStation_score_temp = new Array();
  14. var array_check_type = new Array();
  15. var map_per_data = new HashMap();
  16. var map_month_data = new HashMap();
  17. var array_all_name = new Array()
  18. var array_all_deptname = new Array()
  19. var array_points_name = new Array();
  20. var array_points_pre = new Array();
  21. var arrar_points_month = new Array();
  22. var year_assess;
  23. var points_assess;
  24. var score_rank;
  25. var stationAll_rank;
  26. var check_type;
  27. var people_points;
  28. var flag = true;
  29. var min_year;
  30. var min_road;
  31. var min_allStation;
  32. var score_ranking = new Array();
  33. $(function() {
  34. // 公用方法,根据当前年月动态将13个月push数组
  35. month_method();
  36. // 公用方法,月份下拉框
  37. // select_option();
  38. // 回显当前年月份
  39. // $(".div-month select").val(initDate);
  40. $.jeDate("#month_date", {
  41. isinitVal: true,
  42. format: 'YYYY/MM' // 分隔符可以任意定义,该例子表示只显示年月
  43. });
  44. var p = $.zui.store.get('store_param_' + current_url);
  45. $.zui.store.set('store_param_' + current_url, null)
  46. if (p) {
  47. $("#month_date").val(p.time)
  48. }
  49. refresh(true);
  50. $(".query-company").click(function() {
  51. // var select_month = $("#month_date").val();
  52. // flag = false;
  53. // console.log(select_month);
  54. // // 加载图配置
  55. // echart();
  56. refresh(false);
  57. });
  58. function refresh(flag) {
  59. // 加载图配置
  60. echart(flag);
  61. var select_month = $("#month_date").val();
  62. // console.log(select_month);
  63. init_company_year_assess(select_month.split('/')[0], select_month.split('/')[1]);
  64. // 查询图二
  65. // init_company_points_assess("statistics/lost/score/rate",select_month+'');
  66. init_company_points_assess("statistics/score/info", select_month.split('/')[0], select_month.split('/')[1]);
  67. // 查询图三
  68. init_road_manager_score_rank_three("statistics/score/center/manage/info", select_month + '');
  69. // 查询图四
  70. init_stationAll_rank_four("statistics/score/tollgate/info", select_month + '');
  71. // 查询图五
  72. init_server_check_type_five("statistics/lost/itemscore/rate", select_month + "");
  73. // 查询图六
  74. init_each_people_points_six("statistics/lost/twice/itemscore/rate", select_month + "");
  75. }
  76. /**
  77. * 初始化图一
  78. */
  79. function init_company_year_assess(y, m) {
  80. x_m_array = new Array();
  81. for (var i = 1; i <= 12; i++) {
  82. var month = parseInt(m) + i;
  83. var starty = parseInt(y) - 1
  84. if (month > 12) {
  85. month = month - 12;
  86. starty = y;
  87. }
  88. x_m_array.push(starty + "/" + (month >= 10 ? month : ("0" + month)));
  89. }
  90. var param = {
  91. "start_date": (parseInt(y) - 1) + "-" + m + "-25" + " 23:00:00",
  92. "end_date": y + "-" + (m) + "-25" + " 23:00:00"
  93. }
  94. initRqueset("statistics/score/year/info", param, 1);
  95. }
  96. // init_company_year_assess();
  97. /**
  98. * 初始化图二
  99. */
  100. function init_company_points_assess(url, y, mon) {
  101. var starty = y;
  102. var startm = parseInt(mon) - 1;
  103. if (startm <= 0) {
  104. startm = 12;
  105. starty = parseInt(y) - 1;
  106. }
  107. var param = {
  108. "start_date": starty + '-' + (startm >= 10 ? startm : ("0" + startm)) + '-25 23:00:00',
  109. "end_date": y + '-' + mon + '-25 23:00:00'
  110. }
  111. initRqueset(url, param, 2);
  112. }
  113. // init_company_points_assess("statistics/lost/score/rate",initDate+"");
  114. /**
  115. * 初始化图三
  116. */
  117. function init_road_manager_score_rank_three(url, mon) {
  118. var param = {
  119. "mth": mon
  120. };
  121. initRqueset(url, param, 3);
  122. }
  123. // init_road_manager_score_rank_three("statistics/score/center/manage/info",initDate+"");
  124. /**
  125. * 初始化图四
  126. */
  127. function init_stationAll_rank_four(url, mon) {
  128. var param = {
  129. "mth": mon
  130. };
  131. initRqueset(url, param, 4);
  132. }
  133. // init_stationAll_rank_four("statistics/score/tollgate/info",initDate+"");
  134. /**
  135. * 初始化图五
  136. */
  137. function init_server_check_type_five(url, mon) {
  138. var param = {
  139. "mth": mon,
  140. "queryType": 0
  141. };
  142. initRqueset(url, param, 5);
  143. }
  144. // init_server_check_type_five("statistics/lost/itemscore/rate",initDate+"");
  145. /**
  146. * 初始化图六
  147. */
  148. function init_each_people_points_six(url, mon) {
  149. var prev_mth;
  150. // 判断当前年月是否为一月
  151. if (parseInt((mon + '').substr(5)) == 1) {
  152. prev_mth = ((parseInt((mon + '').substr(0, 4))) - 1) + "/12";
  153. } else {
  154. if ((parseInt((mon + '').substr(5)) + '').length == 1) {
  155. prev_mth = (mon + '').substr(0, 4) + '/0' + (parseInt((mon + '').substr(5)) - 1);
  156. } else {
  157. prev_mth = (mon + '').substr(0, 4) + '/' + (parseInt((mon + '').substr(5)) - 1);
  158. }
  159. }
  160. var param = {
  161. "mth": mon,
  162. "prev_mth": prev_mth,
  163. "queryType": 0
  164. };
  165. initRqueset(url, param, 6);
  166. }
  167. // init_each_people_points_six("statistics/lost/twice/itemscore/rate",initDate+"");
  168. /**
  169. * 请求
  170. * @param {*} url
  171. * @param {*} param
  172. * @param {*} type
  173. */
  174. function initRqueset(url, param, type) {
  175. post_common_service(url, param, function(data) {
  176. data_array(data, type);
  177. if (type == 1) {
  178. // 画图
  179. year_assess.setOption(company_year_assess_one());
  180. } else if (type == 2) {
  181. //array_points= [];
  182. // 画图
  183. points_assess.setOption(company_points_assess_two());
  184. } else if (type == 3) {
  185. // 画图
  186. score_rank.setOption(road_manager_score_rank_three());
  187. } else if (type == 4) {
  188. // 画图
  189. stationAll_rank.setOption(company_stationAll_rank_four());
  190. } else if (type == 5) {
  191. // 画图
  192. check_type.setOption(server_check_type_five());
  193. } else if (type == 6) {
  194. // 画图
  195. people_points.setOption(each_people_points_six());
  196. }
  197. }, function(error) {
  198. return "";
  199. });
  200. }
  201. function pushDate(data, names, appendname) {
  202. var temp = [0, 0, 0];
  203. for (var i = 0; i < data.list.length; i++) {
  204. if (i < 7) {
  205. temp[0] += data.list[i][names];
  206. } else if (i < 13) {
  207. temp[1] += data.list[i][names];
  208. } else if (i < 21) {
  209. temp[2] += data.list[i][names];
  210. }
  211. }
  212. var color1 = "red"
  213. var color2 = "red"
  214. var color3 = "red"
  215. if (appendname == "0-15分") {
  216. color1 = "#56A5EC"
  217. color2 = "#5CB3FF"
  218. color3 = "#82CAFA"
  219. }
  220. if (appendname == "15-50分") {
  221. color1 = "#FDD017"
  222. color2 = "#FBB917"
  223. color3 = "#FFA62F"
  224. }
  225. if (appendname == "50分以上") {
  226. color1 = "#8E35EF"
  227. color2 = "#8467D7"
  228. color3 = "#D462FF"
  229. }
  230. if (temp[0] != 0) {
  231. array_points2.push({ "value": temp[0], "name": '连云港道管', "itemStyle": { "normal": { "color": color1 } } });
  232. }
  233. if (temp[1] != 0) {
  234. array_points2.push({ "value": temp[1], "name": '盐城道管', "itemStyle": { "normal": { "color": color2 } } });
  235. }
  236. if (temp[2] != 0) {
  237. array_points2.push({ "value": temp[2], "name": '南通道管', "itemStyle": { "normal": { "color": color3 } } });
  238. }
  239. }
  240. /**
  241. * 数组数据
  242. * @param {*} data
  243. * @param {*} type
  244. */
  245. function data_array(data, type) {
  246. if (type == 1) {
  247. array_year_score.length = 0;
  248. if (data != '' && data.length != 0) {
  249. x_m_array_temp = new Array();
  250. for (var i = 0; i < x_m_array.length; i++) {
  251. var index = -1;
  252. for (var j = 0; j < data.length; j++) {
  253. if (x_m_array[i] == data[j].mth) {
  254. index = j;
  255. break;
  256. }
  257. }
  258. if (index < 0) {
  259. } else {
  260. x_m_array_temp.push(x_m_array[i]);
  261. array_year_score.push(
  262. (1000 - (filter_handler(data[index].all_check_score, data[index].checked_num, 1.0, 0))));
  263. }
  264. }
  265. } else {
  266. array_year_score.length = 0;
  267. x_m_array = new Array();
  268. x_m_array_temp = new Array();
  269. }
  270. if (eval("Math.min(" + array_year_score.toString() + ")") == 0)
  271. min_year = 0;
  272. else
  273. min_year = eval("Math.min(" + array_year_score.toString() + ")").toFixed(0) - 10;
  274. } else if (type == 2) {
  275. array_points2 = [];
  276. array_points = [];
  277. // console.log(data);
  278. if (data != null) {
  279. array_points.push({ "value": (data.total0), "name": '满分', "itemStyle": { "normal": { "color": '#48CCCD' } } });
  280. array_points.push({ "value": data.total15, "name": '0-15分', "itemStyle": { "normal": { "color": '#38ACEC' } } });
  281. array_points.push({ "value": data.total50, "name": '15-50分', "itemStyle": { "normal": { "color": '#FFD801' } } });
  282. array_points.push({ "value": data.totalOver50, "name": '50分以上', "itemStyle": { "normal": { "color": '#7F38EC' } } });
  283. var temp = [0, 0, 0];
  284. // 满分
  285. for (var i = 0; i < data.list.length; i++) {
  286. if (i < 7) {
  287. temp[0] += data.list[i].checked_people_num - data.list[i].score_fifteen - data.list[i].score_fifty - data.list[i].score_over_fifty;
  288. } else if (i < 13) {
  289. temp[1] += data.list[i].checked_people_num - data.list[i].score_fifteen - data.list[i].score_fifty - data.list[i].score_over_fifty;
  290. } else if (i < 21) {
  291. temp[2] += data.list[i].checked_people_num - data.list[i].score_fifteen - data.list[i].score_fifty - data.list[i].score_over_fifty;
  292. }
  293. }
  294. if (temp[0] != 0) {
  295. array_points2.push({ "value": temp[0], "name": '连云港道管', "itemStyle": { "normal": { "color": '#7BCCB5' } } });
  296. }
  297. if (temp[1] != 0) {
  298. array_points2.push({ "value": temp[1], "name": '盐城道管', "itemStyle": { "normal": { "color": '#3EA99F' } } });
  299. }
  300. if (temp[2] != 0) {
  301. array_points2.push({ "value": temp[2], "name": '南通道管', "itemStyle": { "normal": { "color": '#008080' } } });
  302. }
  303. pushDate(data, 'score_fifteen', '0-15分');
  304. pushDate(data, 'score_fifty', '15-50分');
  305. pushDate(data, 'score_over_fifty', '50分以上');
  306. } else {
  307. array_points.length = 0;
  308. }
  309. } else if (type == 3) {
  310. array_road.length = 0;
  311. array_road_score.length = 0;
  312. for (var i = 0; i < data.length; i++) {
  313. if (data != '') {
  314. array_road_score.push((1000 - (filter_handler(data[i].all_check_score, data[i].checked_num, 1.0, 0))));
  315. } else {
  316. array_road.length = 0;
  317. array_road_score.length = 0;
  318. }
  319. }
  320. if (eval("Math.min(" + array_road_score.toString() + ")") == 0)
  321. min_road = 0;
  322. else
  323. min_road = eval("Math.min(" + array_road_score.toString() + ")").toFixed(0) - 10;
  324. // 给道管中心排名次
  325. var rank = new Array();
  326. rank[0] = 1;
  327. for (var i = 1; i < array_road_score.length; i++) {
  328. if (array_road_score[i - 1] == array_road_score[i]) {
  329. rank[i] = rank[i - 1];
  330. } else {
  331. rank[i] = i + 1;
  332. }
  333. }
  334. array_road_score_temp = new Array();
  335. for (var i = 0; i < array_road_score.length; i++) {
  336. array_road.push(data[i].feeStationName + "\n" + (rank[i]));
  337. array_road_score_temp.push({ value: array_road_score[i], name: data[i].feeStationName })
  338. }
  339. } else if (type == 4) {
  340. array_allStation_score.length = 0;
  341. array_allStation.length = 0;
  342. for (var i = 0; i < data.length; i++) {
  343. if (data != '' && data.length != 0) {
  344. array_allStation_score.push((1000 - (filter_handler(data[i].all_check_score, data[i].checked_num, 1.0, 0))));
  345. } else {
  346. array_allStation_score.length = 0;
  347. array_allStation.length = 0;
  348. }
  349. }
  350. if (eval("Math.min(" + array_allStation_score.toString() + ")") == 0)
  351. min_allStation = 0;
  352. else
  353. min_allStation = eval("Math.min(" + array_allStation_score.toString() + ")").toFixed(0) - 10;
  354. // 给收费站排名次
  355. var rank = new Array();
  356. rank[0] = 1;
  357. for (var i = 1; i < array_allStation_score.length; i++) {
  358. if (array_allStation_score[i - 1] == array_allStation_score[i]) {
  359. rank[i] = rank[i - 1];
  360. } else {
  361. rank[i] = i + 1;
  362. }
  363. }
  364. for (var i = 0; i < array_allStation_score.length; i++) {
  365. array_allStation.push(data[i].feeStationName.substr(0, data[i].feeStationName.length - 3) + "\n" + (rank[i]));
  366. array_allStation_score_temp.push({ value: array_allStation_score[i], name: data[i].feeStationName })
  367. }
  368. } else if (type == 5) {
  369. array_check_type = [];
  370. if (data.length != 0) {
  371. var map = new HashMap();
  372. for (var i = 0; i < data.length; i++) {
  373. if (map.get(data[i].name) == null) {
  374. map.set(data[i].name, data[i].all_check_score)
  375. } else {
  376. map.set(data[i].name, data[i].all_check_score + map.get(data[i].name))
  377. }
  378. }
  379. map.forEach(function(value, key) {
  380. array_check_type.push({ "value": value, "name": key });
  381. });
  382. } else {
  383. array_check_type.length = 0;
  384. }
  385. } else if (type == 6) {
  386. array_all_deptname = new Array();
  387. map_month_data = new HashMap();
  388. map_per_data = new HashMap();
  389. // array_points_name.length = 0;
  390. // array_points_pre.length = 0;
  391. // arrar_points_month.length = 0;
  392. if (data != '' && data.Pmth.length != 0 || data.Tmth.length != 0) {
  393. data_each_people_points(data);
  394. } else {
  395. // array_points_name.length = 0;
  396. // array_points_pre.length = 0;
  397. // arrar_points_month.length = 0;
  398. }
  399. }
  400. }
  401. function data_each_people_points(data) {
  402. var flag = false;
  403. var name = ['环境卫生', '仪容仪表着装', '表情', '动作', '文明用语', '工作纪律及行为举止', '便民服务', '安全管理']
  404. array_all_name = name;
  405. // array_all_deptname = ["连云港道管", "盐城道管", "南通道管"];
  406. var Tmth = data.Tmth;
  407. var Pmth = data.Pmth;
  408. // var Ntemp = new Array();
  409. // var Ptemp = new Array();
  410. // var Ttemp = new Array();
  411. for (var i = 0; i < name.length; i++) {
  412. // var temp_map_m = new HashMap();
  413. // var temp_map_p = new HashMap();
  414. for (var j = 0; j < Tmth.length; j++) {
  415. flag = false;
  416. if (array_all_deptname.length > 0) {
  417. for (var p = 0; p < array_all_deptname.length; p++) {
  418. if (array_all_deptname[p] == Tmth[j].pfeeStationName) {
  419. flag = true;
  420. break;
  421. }
  422. }
  423. }
  424. if (!flag) {
  425. array_all_deptname.push(Tmth[j].pfeeStationName);
  426. }
  427. if (name[i] == Tmth[j].name) {
  428. if (map_month_data.get(Tmth[j].pfeeStationName) != null) {
  429. var map = map_month_data.get(Tmth[j].pfeeStationName)
  430. if (map.get(name[i]) != null) {
  431. map.set(name[i], map.get(name[i]) + Tmth[j].all_check_score);
  432. } else {
  433. map.set(name[i], Tmth[j].all_check_score);
  434. }
  435. map_month_data.set(Tmth[j].pfeeStationName, map);
  436. } else {
  437. var map = new HashMap();
  438. map.set(name[i], Tmth[j].all_check_score);
  439. map_month_data.set(Tmth[j].pfeeStationName, map);
  440. }
  441. }
  442. }
  443. for (var j = 0; j < Pmth.length; j++) {
  444. flag = false;
  445. if (array_all_deptname.length > 0) {
  446. for (var p = 0; p < array_all_deptname.length; p++) {
  447. if (array_all_deptname[p] == Pmth[j].pfeeStationName) {
  448. flag = true;
  449. break;
  450. }
  451. }
  452. }
  453. if (!flag) {
  454. array_all_deptname.push(Pmth[j].pfeeStationName);
  455. }
  456. if (name[i] == Pmth[j].name) {
  457. if (map_per_data.get(Pmth[j].pfeeStationName) != null) {
  458. var map = map_per_data.get(Pmth[j].pfeeStationName)
  459. if (map.get(name[i]) != null) {
  460. map.set(name[i], map.get(name[i]) + Pmth[j].all_check_score);
  461. } else {
  462. map.set(name[i], Pmth[j].all_check_score);
  463. }
  464. map_per_data.set(Pmth[j].pfeeStationName, map);
  465. } else {
  466. var map = new HashMap();
  467. map.set(name[i], Pmth[j].all_check_score);
  468. map_per_data.set(Pmth[j].pfeeStationName, map);
  469. }
  470. }
  471. }
  472. // map_month_data.set(name[i], temp_map_m)
  473. // map_pre_data.set(name[i], temp_map_p)
  474. }
  475. // console.log(Tmth)
  476. // console.log(map_month_data)
  477. // flag = true;
  478. // if (Tmth.length > 0) {
  479. // for (var j = 0; j < Tmth.length; j++) {
  480. // if (name[i] == Tmth[j].name && Tmth[j].all_check_score != null) {
  481. // // Ttemp[i] = filter_handler(Tmth[j].all_check_score,Tmth[j].checked_num,Tmth[j].people_num,0);
  482. // Ttemp[i] = Tmth[j].all_check_score;
  483. // break;
  484. // } else {
  485. // Ttemp[i] = 0;
  486. // }
  487. // }
  488. // } else {
  489. // Ttemp[i] = 0;
  490. // }
  491. // if (Pmth.length > 0) {
  492. // for (var m = 0; m < Pmth.length; m++) {
  493. // if (name[i] == Pmth[m].name && Pmth[m].all_check_score != null) {
  494. // // Ptemp[i] = filter_handler(Pmth[m].all_check_score,Pmth[m].checked_num,Pmth[m].people_num,0);
  495. // Ptemp[i] = Pmth[m].all_check_score;
  496. // break;
  497. // } else {
  498. // Ptemp[i] = 0;
  499. // }
  500. // }
  501. // } else {
  502. // Ptemp[i] = 0;
  503. // }
  504. // if (Ttemp[i] == 0 && Ptemp[i] == 0) {
  505. // name[i] = "";
  506. // flag = null;
  507. // }
  508. // if (name[i] != "") {
  509. // if (name[i] == '仪容仪表着装') {
  510. // name[i] = '仪表';
  511. // }
  512. // if (name[i] == '工作纪律及行为举止') {
  513. // name[i] = '行为';
  514. // }
  515. // array_points_name.push(name[i]);
  516. // }
  517. // if (flag) {
  518. // array_points_pre.push(Ptemp[i]);
  519. // arrar_points_month.push(Ttemp[i]);
  520. // }
  521. // }
  522. }
  523. /**
  524. * 除数为0处理
  525. * @param {*} num
  526. * @param {*} num1
  527. * @param {*} num2
  528. * @param {*} num4
  529. */
  530. function filter_handler(num, num1, num2, num4) {
  531. if (num1 == 0 || num2 == 0) {
  532. return num4;
  533. } else {
  534. return ((num / num1) / num2).toFixed(2);
  535. }
  536. }
  537. /**
  538. * 图配置
  539. */
  540. function echart(flag) {
  541. // 路径配置
  542. require.config({
  543. paths: {
  544. echarts: '/js/lib/echarts/build/dist'
  545. }
  546. });
  547. // 使用
  548. require(
  549. [
  550. 'echarts',
  551. 'echarts/theme/macarons',
  552. 'echarts/chart/line',
  553. 'echarts/chart/bar',
  554. 'echarts/chart/pie',
  555. 'echarts/config'
  556. ],
  557. function(ec, theme) {
  558. // 基于准备好的dom,初始化echarts图表
  559. if (flag) {
  560. year_assess = ec.init(document.getElementById('company-year-assess'), theme);
  561. }
  562. points_assess = ec.init(document.getElementById('company-points-assess'), theme);
  563. score_rank = ec.init(document.getElementById('roadManager-score-rank'));
  564. stationAll_rank = ec.init(document.getElementById('company-stationAll-rank'));
  565. check_type = ec.init(document.getElementById('server-check-type'), theme);
  566. people_points = ec.init(document.getElementById('each-people-points'));
  567. points_assess.on(ecConfig.EVENT.CLICK, point_c)
  568. score_rank.on(ecConfig.EVENT.CLICK, score_c)
  569. stationAll_rank.on(ecConfig.EVENT.CLICK, station_c)
  570. }
  571. );
  572. }
  573. /**
  574. * 图一
  575. */
  576. function company_year_assess_one() {
  577. //debugger;
  578. option = {
  579. color: ['#00ced1'],
  580. tooltip: {
  581. trigger: 'axis'
  582. },
  583. noDataLoadingOption: {
  584. text: '暂无数据',
  585. effect: 'bubble',
  586. effectOption: {
  587. effect: {
  588. n: 0 //气泡个数为0
  589. }
  590. },
  591. textStyle: {
  592. fontSize: 20,
  593. fontFamily: 'cursive',
  594. fontWeight: 'bold'
  595. }
  596. },
  597. legend: {
  598. data: ['公司得分']
  599. },
  600. toolbox: {
  601. show: true,
  602. },
  603. calculable: true,
  604. xAxis: [{
  605. type: 'category',
  606. boundaryGap: false,
  607. data: x_m_array_temp
  608. }],
  609. yAxis: [{
  610. type: 'value',
  611. min: min_year,
  612. max: 1000,
  613. axisLabel: {
  614. formatter: '{value}'
  615. }
  616. }],
  617. series: [{
  618. name: '公司得分',
  619. type: 'line',
  620. data: array_year_score,
  621. markPoint: {
  622. data: [
  623. { type: 'max', name: '最大值' },
  624. { type: 'min', name: '最小值' }
  625. ]
  626. },
  627. markLine: {
  628. data: [
  629. { type: 'average', name: '平均值' }
  630. ]
  631. }
  632. },
  633. ]
  634. };
  635. return option;
  636. }
  637. /**
  638. * 图二
  639. */
  640. function company_points_assess_two() {
  641. /*option = {
  642. tooltip : {
  643. trigger: 'item',
  644. formatter: "公司考核扣分占比 <br/>{b} : {c}人 ({d}%)"
  645. },
  646. noDataLoadingOption :{
  647. text: '暂无数据',
  648. effect:'bubble',
  649. effectOption : {
  650. effect: {
  651. n: 0 //气泡个数为0
  652. }
  653. },
  654. textStyle: {
  655. fontSize: 20,
  656. fontFamily:'cursive',
  657. fontWeight: 'bold'
  658. }
  659. },
  660. toolbox: {
  661. show : true,
  662. feature : {
  663. magicType : {
  664. type: ['pie', 'funnel'],
  665. option: {
  666. funnel: {
  667. x: '25%',
  668. width: '50%',
  669. funnelAlign: 'left',
  670. max: 1548
  671. }
  672. }
  673. },
  674. }
  675. },
  676. calculable : true,
  677. series : [
  678. {
  679. name:'访问来源',
  680. type:'pie',
  681. radius : '55%',
  682. center: ['50%', '50%'],
  683. data:array_points,
  684. itemStyle:{
  685. normal:{
  686. label:{
  687. show: true,
  688. formatter: '{b} :\n{c}人 ({d}%)'
  689. },
  690. labelLine :{show:true}
  691. }
  692. }
  693. }
  694. ]
  695. };*/
  696. option = {
  697. tooltip: {
  698. trigger: 'item',
  699. formatter: "公司考核扣分占比 <br/>{b} : {c}人 ({d}%)"
  700. },
  701. toolbox: {
  702. show: true,
  703. },
  704. calculable: false,
  705. series: [{
  706. name: '访问来源',
  707. type: 'pie',
  708. selectedMode: 'single',
  709. radius: [0, 80],
  710. // for funnel
  711. x: '20%',
  712. width: '40%',
  713. funnelAlign: 'right',
  714. max: 1548,
  715. itemStyle: {
  716. normal: {
  717. label: {
  718. show: true,
  719. formatter: '{b}:\n{c}人({d}%)',
  720. textStyle: {
  721. alias: 'center',
  722. fontSize: 10,
  723. color: '#888'
  724. }
  725. },
  726. labelLine: {
  727. show: true,
  728. length: 50,
  729. lineStyle: {
  730. color: '#888'
  731. }
  732. }
  733. }
  734. },
  735. data: array_points
  736. },
  737. {
  738. name: '访问来源',
  739. type: 'pie',
  740. radius: [100, 125],
  741. // for funnel
  742. x: '60%',
  743. width: '35%',
  744. funnelAlign: 'left',
  745. max: 1048,
  746. itemStyle: {
  747. normal: {
  748. label: {
  749. show: false,
  750. formatter: '{b}:{c}人({d}%)'
  751. },
  752. labelLine: {
  753. show: false
  754. }
  755. }
  756. },
  757. data: array_points2
  758. }
  759. ]
  760. };
  761. return option;
  762. }
  763. /**
  764. * 图三
  765. */
  766. function road_manager_score_rank_three() {
  767. option = {
  768. color: ['#00ced1'], // 条形图颜色
  769. tooltip: {
  770. trigger: 'axis'
  771. },
  772. noDataLoadingOption: {
  773. text: '暂无数据',
  774. effect: 'bubble',
  775. effectOption: {
  776. effect: {
  777. n: 0 //气泡个数为0
  778. }
  779. },
  780. textStyle: {
  781. fontSize: 20,
  782. fontFamily: 'cursive',
  783. fontWeight: 'bold'
  784. }
  785. },
  786. grid: {
  787. width: "75%",
  788. },
  789. calculable: true,
  790. xAxis: [{
  791. axisLabel: {
  792. interval: 0
  793. },
  794. type: 'category',
  795. data: array_road
  796. }],
  797. yAxis: [{
  798. type: 'value',
  799. min: min_road,
  800. max: 1000
  801. }],
  802. series: [{
  803. type: 'bar',
  804. data: array_road_score_temp,
  805. itemStyle: {
  806. normal: {
  807. label: {
  808. show: true,
  809. position: 'insideTop'
  810. }
  811. }
  812. },
  813. markLine: {
  814. data: [
  815. { type: 'average', name: '平均值' }
  816. ]
  817. }
  818. }]
  819. };
  820. return option;
  821. }
  822. /**
  823. * 图四
  824. */
  825. function company_stationAll_rank_four() {
  826. option = {
  827. color: ['#00ced1'], // 条形图颜色
  828. tooltip: {
  829. trigger: 'axis'
  830. },
  831. noDataLoadingOption: {
  832. text: '暂无数据',
  833. effect: 'bubble',
  834. effectOption: {
  835. effect: {
  836. n: 0 //气泡个数为0
  837. }
  838. },
  839. textStyle: {
  840. fontSize: 20,
  841. fontFamily: 'cursive',
  842. fontWeight: 'bold'
  843. }
  844. },
  845. legend: {
  846. data: ['公司全体收费站得分']
  847. },
  848. calculable: true,
  849. xAxis: [{
  850. axisLabel: {
  851. interval: 0
  852. },
  853. type: 'category',
  854. data: array_allStation
  855. }],
  856. yAxis: [{
  857. type: 'value',
  858. min: min_allStation,
  859. max: 1000
  860. }],
  861. series: [{
  862. name: '公司全体收费站得分',
  863. type: 'bar',
  864. data: array_allStation_score_temp,
  865. itemStyle: {
  866. normal: {
  867. label: {
  868. show: true,
  869. position: 'insideTop'
  870. }
  871. }
  872. },
  873. markLine: {
  874. data: [
  875. { type: 'average', name: '平均值' }
  876. ]
  877. }
  878. }]
  879. };
  880. return option;
  881. }
  882. /**
  883. * 图五
  884. */
  885. function server_check_type_five() {
  886. option = {
  887. tooltip: {
  888. trigger: 'item',
  889. formatter: "温馨服务检查占比 <br/>{b} : {c}分 ({d}%)"
  890. },
  891. noDataLoadingOption: {
  892. text: '暂无数据',
  893. effect: 'bubble',
  894. effectOption: {
  895. effect: {
  896. n: 0 //气泡个数为0
  897. }
  898. },
  899. textStyle: {
  900. fontSize: 20,
  901. fontFamily: 'cursive',
  902. fontWeight: 'bold'
  903. }
  904. },
  905. toolbox: {
  906. show: true,
  907. feature: {
  908. magicType: {
  909. type: ['pie', 'funnel'],
  910. option: {
  911. funnel: {
  912. x: '25%',
  913. width: '50%',
  914. funnelAlign: 'left',
  915. max: 1548
  916. }
  917. }
  918. },
  919. }
  920. },
  921. calculable: true,
  922. series: [{
  923. name: '访问来源',
  924. type: 'pie',
  925. radius: '55%',
  926. center: ['50%', '50%'],
  927. data: array_check_type,
  928. itemStyle: {
  929. normal: {
  930. label: {
  931. show: true,
  932. formatter: '{b} :\n{c}分 ({d}%)'
  933. },
  934. labelLine: { show: true }
  935. }
  936. }
  937. }]
  938. };
  939. return option;
  940. }
  941. /**
  942. * 图六
  943. */
  944. function each_people_points_six() {
  945. var t_map_p = new HashMap();
  946. var t_map_c = new HashMap();
  947. var sdata = new Array();
  948. for (var j = 0; j < array_all_deptname.length; j++) {
  949. var dept = array_all_deptname[j]
  950. if (map_per_data.get(dept) != null) {
  951. var data_a = new Array();
  952. var d_t = map_per_data.get(dept);
  953. for (var i = 0; i < array_all_name.length; i++) {
  954. var name = array_all_name[i];
  955. data_a.push(d_t.get(name) == null ? 0 : d_t.get(name));
  956. if (t_map_p.get(name) == null) {
  957. t_map_p.set(name, d_t.get(name) == null ? 0 : d_t.get(name))
  958. } else {
  959. t_map_p.set(name, t_map_p.get(name) + (d_t.get(name) == null ? 0 : d_t.get(name)));
  960. }
  961. }
  962. var d_tt = {
  963. name: dept,
  964. type: 'bar',
  965. stack: '上月',
  966. barGap: 5,
  967. barCategoryGap: 20,
  968. data: data_a
  969. }
  970. if (j == array_all_deptname.length - 1) {
  971. d_tt['itemStyle'] = {
  972. normal: {
  973. label: {
  974. show: true,
  975. position: 'top',
  976. formatter: function(params) {
  977. var name = params.name
  978. if (name == '仪表') {
  979. name = '仪容仪表着装';
  980. }
  981. if (name == '行为') {
  982. name = '工作纪律及行为举止';
  983. }
  984. var v = t_map_p.get(name);
  985. if (isNaN(v)) v = 0;
  986. return '上月\n' + v;
  987. },
  988. textStyle: {
  989. color: 'blue'
  990. }
  991. }
  992. }
  993. }
  994. }
  995. sdata.push(d_tt);
  996. } else {
  997. var data_a = new Array();
  998. for (var i = 0; i < array_all_name.length; i++) {
  999. var name = array_all_name[i];
  1000. data_a.push(0);
  1001. if (t_map_p.get(name) == null) {
  1002. t_map_p.set(name, 0)
  1003. } else {
  1004. t_map_p.set(name, t_map_p.get(i) + 0);
  1005. }
  1006. }
  1007. var d_tt = {
  1008. name: dept,
  1009. type: 'bar',
  1010. stack: '上月',
  1011. data: data_a
  1012. }
  1013. if (j == array_all_deptname.length - 1) {
  1014. d_tt['itemStyle'] = {
  1015. normal: {
  1016. label: {
  1017. show: true,
  1018. position: 'top',
  1019. formatter: function(params) {
  1020. var name = params.name
  1021. if (name == '仪表') {
  1022. name = '仪容仪表着装';
  1023. }
  1024. if (name == '行为') {
  1025. name = '工作纪律及行为举止';
  1026. }
  1027. var v = t_map_p.get(name);
  1028. if (isNaN(v)) v = 0;
  1029. return '上月\n' + v;
  1030. },
  1031. textStyle: {
  1032. color: 'blue'
  1033. }
  1034. }
  1035. }
  1036. }
  1037. }
  1038. sdata.push(d_tt);
  1039. }
  1040. if (map_month_data.get(dept) != null) {
  1041. var data_a = new Array();
  1042. var d_t = map_month_data.get(dept);
  1043. for (var i = 0; i < array_all_name.length; i++) {
  1044. var name = array_all_name[i];
  1045. data_a.push(d_t.get(name) == null ? 0 : d_t.get(name));
  1046. if (t_map_c.get(name) == null) {
  1047. t_map_c.set(name, d_t.get(name) == null ? 0 : d_t.get(name))
  1048. } else {
  1049. t_map_c.set(name, t_map_c.get(name) + (d_t.get(name) == null ? 0 : d_t.get(name)));
  1050. }
  1051. }
  1052. var d_tt = {
  1053. name: dept,
  1054. type: 'bar',
  1055. stack: '本月',
  1056. data: data_a
  1057. }
  1058. if (j == array_all_deptname.length - 1) {
  1059. d_tt['itemStyle'] = {
  1060. normal: {
  1061. label: {
  1062. show: true,
  1063. position: 'top',
  1064. formatter: function(params) {
  1065. var name = params.name
  1066. if (name == '仪表') {
  1067. name = '仪容仪表着装';
  1068. }
  1069. if (name == '行为') {
  1070. name = '工作纪律及行为举止';
  1071. }
  1072. var v = t_map_c.get(name);
  1073. if (isNaN(v)) v = 0;
  1074. return '本月\n' + v;
  1075. },
  1076. textStyle: {
  1077. color: 'red'
  1078. }
  1079. }
  1080. }
  1081. }
  1082. }
  1083. sdata.push(d_tt);
  1084. } else {
  1085. var data_a = new Array();
  1086. for (var i = 0; i < array_all_name.length; i++) {
  1087. var name = array_all_name[i];
  1088. data_a.push(0);
  1089. if (t_map_c.get(name) == null) {
  1090. t_map_c.set(name, 0)
  1091. } else {
  1092. t_map_c.set(name, t_map_c.get(name) + 0);
  1093. }
  1094. }
  1095. var d_tt = {
  1096. name: dept,
  1097. type: 'bar',
  1098. stack: '本月',
  1099. data: data_a
  1100. }
  1101. if (j == array_all_deptname.length - 1) {
  1102. d_tt['itemStyle'] = {
  1103. normal: {
  1104. label: {
  1105. show: true,
  1106. position: 'top',
  1107. formatter: function(params) {
  1108. var name = params.name
  1109. if (name == '仪表') {
  1110. name = '仪容仪表着装';
  1111. }
  1112. if (name == '行为') {
  1113. name = '工作纪律及行为举止';
  1114. }
  1115. var v = t_map_c.get(name);
  1116. if (isNaN(v)) v = 0;
  1117. return '本月\n' + v;
  1118. },
  1119. textStyle: {
  1120. color: 'red'
  1121. }
  1122. }
  1123. }
  1124. }
  1125. }
  1126. sdata.push(d_tt);
  1127. }
  1128. }
  1129. var maxvaluedata = 0;
  1130. t_map_c.forEach(function(value, key) {
  1131. if (value > maxvaluedata) maxvaluedata = value;
  1132. })
  1133. t_map_p.forEach(function(value, key) {
  1134. if (value > maxvaluedata) maxvaluedata = value;
  1135. })
  1136. var namelist = new Array();
  1137. for (var i = 0; i < array_all_name.length; i++) {
  1138. var name = array_all_name[i];
  1139. if (name == '仪容仪表着装') {
  1140. name = '仪表';
  1141. }
  1142. if (name == '工作纪律及行为举止') {
  1143. name = '行为';
  1144. }
  1145. namelist.push(name);
  1146. }
  1147. option = {
  1148. tooltip: {
  1149. trigger: 'axis',
  1150. axisPointer: { // 坐标轴指示器,坐标轴触发有效
  1151. type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
  1152. },
  1153. formatter: function(params, ticket, callback) {
  1154. var name = "";
  1155. var content = "";
  1156. if (params.length > 0) {
  1157. for (var i = 0; i < params.length; i++) {
  1158. var p = params[i];
  1159. name = p.name;
  1160. if (p.series.stack == "本月") {
  1161. content += "<br>本月 " + p.seriesName.replace("道管中心", "") + ":" + p.value + "分"
  1162. } else {
  1163. content += "<br>上月 " + p.seriesName.replace("道管中心", "") + ":" + p.value + "分"
  1164. }
  1165. }
  1166. }
  1167. return name + content;
  1168. }
  1169. },
  1170. noDataLoadingOption: {
  1171. text: '暂无数据',
  1172. effect: 'bubble',
  1173. effectOption: {
  1174. effect: {
  1175. n: 0 //气泡个数为0
  1176. }
  1177. },
  1178. textStyle: {
  1179. fontSize: 20,
  1180. fontFamily: 'cursive',
  1181. fontWeight: 'bold'
  1182. }
  1183. },
  1184. grid: {
  1185. width: "80%",
  1186. },
  1187. legend: {
  1188. data: array_all_deptname
  1189. },
  1190. calculable: true,
  1191. xAxis: [{
  1192. type: 'category',
  1193. data: namelist
  1194. }],
  1195. yAxis: [{
  1196. type: 'value',
  1197. max: (maxvaluedata + 200)
  1198. }],
  1199. series: sdata
  1200. };
  1201. return option;
  1202. }
  1203. });
  1204. var ecConfig = require('echarts/config');
  1205. // var temp_time = null;
  1206. // var road_p = null;
  1207. // var station_p = null;
  1208. function point_c(param) {
  1209. if (typeof param.seriesIndex == 'undefined') {
  1210. return;
  1211. }
  1212. if (param.type == 'click') {
  1213. var pdata = {
  1214. time: $("#month_date").val()
  1215. }
  1216. $.zui.store.set('page_data_param_temp_time', $("#month_date").val());
  1217. $.zui.store.set('store_param_' + current_url, pdata);
  1218. isnew = false;
  1219. changePage("/view/statistics/assess_situation.html");
  1220. }
  1221. }
  1222. function score_c(param) {
  1223. if (typeof param.seriesIndex == 'undefined') {
  1224. return;
  1225. }
  1226. if (param.type == 'click') {
  1227. var pdata = {
  1228. time: $("#month_date").val()
  1229. }
  1230. $.zui.store.set('page_data_param_temp_time', $("#month_date").val());
  1231. $.zui.store.set('page_data_param_road_p', param.data.name);
  1232. $.zui.store.set('store_param_' + current_url, pdata);
  1233. isnew = false;
  1234. changePage("/view/statistics/road_manage_statistics.html");
  1235. }
  1236. }
  1237. function station_c(param) {
  1238. if (typeof param.seriesIndex == 'undefined') {
  1239. return;
  1240. }
  1241. if (param.type == 'click') {
  1242. var pdata = {
  1243. time: $("#month_date").val()
  1244. }
  1245. $.zui.store.set('page_data_param_temp_time', $("#month_date").val());
  1246. var stationlist = $.zui.store.get("cache_fee_station_list");
  1247. var roadlist = $.zui.store.get("cache_road_manager_list");
  1248. for (var i in stationlist) {
  1249. if (stationlist[i].name == param.data.name) {
  1250. for (var j in roadlist) {
  1251. if (roadlist[j].deptid == stationlist[i].parentid) {
  1252. $.zui.store.set('page_data_param_road_p', roadlist[j].name);
  1253. break;
  1254. }
  1255. }
  1256. break;
  1257. }
  1258. }
  1259. $.zui.store.set('page_data_param_station_p', param.data.name);
  1260. $.zui.store.set('store_param_' + current_url, pdata);
  1261. isnew = false;
  1262. changePage("/view/statistics/toll_station_statistics.html");
  1263. }
  1264. }