personal_data_statistics.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498
  1. var year = new Date().getFullYear();
  2. var months = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'];
  3. var monthsCH = ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'];
  4. var array_year_score = new Array();
  5. var array_check_type = new Array();
  6. var user_id = 2424; // 用户假数据
  7. var score_statistics;
  8. var check_type;
  9. var cur_status;
  10. var hide = false;
  11. // 默认初始化日期一个月
  12. $(".div-start input").val(new Date().getFullYear() + "-" + (new Date().getMonth() > 10 ? new Date().getMonth() : "0" + new Date().getMonth()) + "-26");
  13. $(".div-end input").val(new Date().getFullYear() + "-" + (new Date().getMonth() + 1 > 10 ? new Date().getMonth() + 1 : "0" + (new Date().getMonth() + 1)) + "-25");
  14. var start_date = dateChange(moment($(".div-start input").val() + " 00:00:00"), 60 * 60 * 1000);
  15. var end_date = $(".div-end input").val() + " 23:00:00";
  16. /**
  17. * 预加载方法
  18. */
  19. $(function() {
  20. setVisit();
  21. //*************************************数据表格******************************************
  22. function initAppealPage(start_date, end_date, user_id) {
  23. initQueryParams();
  24. queryAppeal(start_date, end_date, user_id);
  25. }
  26. function initQueryParams() {
  27. //获取页面参数
  28. var page_params = $.zui.store.get("page_params");
  29. if (page_params && page_params.status) {
  30. cur_status = page_params.status;
  31. }
  32. }
  33. function queryAppeal(start_date, end_date, user_id) {
  34. $("#station_name").html($("#select-dept").find("option:selected").text())
  35. $("#station_user_name").html($("#select-personal").find("option:selected").text())
  36. //请求数据
  37. var data_t = {
  38. "start_date": start_date,
  39. "end_date": end_date,
  40. "user_id": user_id
  41. }
  42. var url_t = "/statistics/employee/order/detail"
  43. post_common_service(url_t, data_t, function(res) {
  44. var isshow_c = false;
  45. var isshow_l = false;
  46. if (typeof(res.currentP) != undefined && res.currentP != null) {
  47. var p = res.currentP;
  48. $("#c_dept_ranking").html(p.fee_station_ranking);
  49. $("#c_com_ranking").html(p.company_ranking);
  50. $("#c_score_ranking").html(p.check_all_score + p.check_all_m_score);
  51. isshow_c = true;
  52. }
  53. if (typeof(res.lastP) != undefined && res.lastP != null) {
  54. var p = res.lastP;
  55. $("#l_dept_ranking").html(p.fee_station_ranking);
  56. $("#l_com_ranking").html(p.company_ranking);
  57. $("#l_score_ranking").html(p.check_all_score + p.check_all_m_score);
  58. isshow_l = true;
  59. }
  60. if (isshow_c && isshow_l) {
  61. var p_c = res.currentP;
  62. var p_l = res.lastP;
  63. var dept_r = p_c.fee_station_ranking - p_l.fee_station_ranking;
  64. if (dept_r != 0) {
  65. $("#c_dept_ranking").html($("#c_dept_ranking").html() + "<i style='margin-left:10px;color:" + (dept_r > 0 ? "red" : "green") + "' class='icon icon-long-arrow-" + (dept_r > 0 ? "down" : "up") + "'>" + Math.abs(dept_r) + "</i>");
  66. }
  67. var com_r = p_c.company_ranking - p_l.company_ranking;
  68. if (com_r != 0) {
  69. $("#c_com_ranking").html($("#c_com_ranking").html() + "<i style='margin-left:10px;color:" + (com_r > 0 ? "red" : "green") + "' class='icon icon-long-arrow-" + (com_r > 0 ? "down" : "up") + "'>" + Math.abs(com_r) + "</i>");
  70. }
  71. }
  72. }, function(error) {})
  73. var data = {
  74. "start_date": start_date,
  75. "end_date": end_date,
  76. "user_id": user_id,
  77. "queryType": 0,
  78. "score_flag": $(".score-select").val()
  79. }
  80. if (hasRole(ROLE_STATION_ADMIN) || hasRole(ROLE_STATION) || hasRole(ROLE_JICHA) || roleContains('STATION')) {
  81. hide = true;
  82. }
  83. var cols = [
  84. { width: 50, text: '序号', flex: true, colClass: 'text-center', field: 'num' },
  85. { width: 100, text: '时间段', flex: true, colClass: 'text-center', field: 'check_task_time_name' },
  86. { width: 60, text: '扣分数', flex: true, colClass: 'text-center', field: 'score', nullvalue: '0' },
  87. { width: 100, text: '考核类型', flex: true, colClass: 'text-center', sort: 'down', field: 'parent_name' },
  88. { width: 100, text: '考核项', flex: true, colClass: 'text-center', sort: 'down', field: 'name' },
  89. { width: 100, text: '扣分凭证', type: 'imagedd', flex: true, hide: hide, field: 'pics' },
  90. ];
  91. if (cur_status == 12 || cur_status == 13) {
  92. data.check_status_arr = [12, 13];
  93. }
  94. $('#personal_data_table').mytable({
  95. 'cols': cols,
  96. 'url': "/statistics/one/checkedItem/detail/info",
  97. 'param': data
  98. });
  99. }
  100. //*************************************画图******************************************
  101. // 加载图配置
  102. echart();
  103. $(".query button").click(function() {
  104. var user_id = $("#select-personal").val();
  105. var start_date = dateChange(new Date($(".div-start input").val() + " 00:00:00"), 60 * 60 * 1000);
  106. var end_date = $(".div-end input").val() + " 23:00:00";
  107. var startStr = start_date.replace(/-/g, '/');
  108. var endStr = end_date.replace(/-/g, '/');
  109. var start = new Date(startStr);
  110. var end = new Date(endStr);
  111. if (start > end) {
  112. tip("开始时间不能比结束时间大");
  113. return;
  114. }
  115. if ($("#select-personal").text() == '') {
  116. tip("请选择收费站");
  117. return;
  118. }
  119. // 查询图一
  120. init_personal_score_statistics("statistics/one/person/year/info", user_id);
  121. // 查询图二
  122. init_personal_check_type("statistics/one/person/checkedItem/info", user_id, start_date, end_date);
  123. // 表格
  124. initAppealPage(start_date, end_date, user_id);
  125. // 加载图配置
  126. echart();
  127. });
  128. /**
  129. * 初始化图一
  130. * @param {*} url
  131. * @param {*} dept_id
  132. */
  133. function init_personal_score_statistics(url, user_id) {
  134. var param = {
  135. "start_date": (year - 1) + "-" + new Date().getMonth() + "-25" + " 23:00:00",
  136. "end_date": year + "-" + (new Date().getMonth() + 1) + "-25" + " 23:00:00",
  137. "user_id": user_id
  138. }
  139. initRqueset(url, param, 1);
  140. }
  141. /**
  142. * 初始化图二
  143. * @param {*} url
  144. * @param {*} dept_id
  145. */
  146. function init_personal_check_type(url, user_id, start_date, end_date) {
  147. var param = {
  148. "start_date": start_date,
  149. "end_date": end_date,
  150. "user_id": user_id
  151. }
  152. initRqueset(url, param, 2);
  153. }
  154. /**
  155. * 请求
  156. * @param {*} url
  157. * @param {*} param
  158. * @param {*} type
  159. */
  160. function initRqueset(url, param, type) {
  161. post_common_service(url, param, function(data) {
  162. data_array(data, type);
  163. if (type == 1) {
  164. // 画图
  165. score_statistics.setOption(personal_score_statistics());
  166. } else if (type == 2) {
  167. // 画图
  168. check_type.setOption(personal_check_type());
  169. }
  170. }, function(error) {
  171. return "";
  172. });
  173. }
  174. /**
  175. * 数组数据
  176. * @param {*} data
  177. * @param {*} type
  178. */
  179. function data_array(data, type) {
  180. if (type == 1) {
  181. array_year_score.length = 0;
  182. months.length = 0;
  183. if (data.length != 0) {
  184. if (data.length < 14) {
  185. for (var i = 0; i < 14 - data.length; i++) {
  186. array_year_score.push(0)
  187. }
  188. }
  189. var month_arr = month_method_2();
  190. for (var i = 0; i < data.length; i++) {
  191. if (month_arr.indexOf(parseInt(data[i].mth))) {
  192. // 指定位置插入值
  193. array_year_score.splice(month_arr.indexOf(data[i].mth), 0,
  194. (1000 - (filter(data[i].all_check_score, data[i].checked_num, 0))));
  195. }
  196. }
  197. } else {
  198. array_year_score.length = 0;
  199. }
  200. } else if (type == 2) {
  201. array_check_type.length = 0;
  202. if (data.length != 0) {
  203. for (var i = 0; i < data.length; i++) {
  204. array_check_type.push({ "value": data[i].all_check_score, "name": data[i].name });
  205. }
  206. } else {
  207. array_check_type.length = 0;
  208. }
  209. }
  210. }
  211. $("#select-personal").click(function() {
  212. if ($("#select-personal").text() == '') {
  213. tip("请选择收费站");
  214. return;
  215. }
  216. });
  217. // 收费站下拉框
  218. var dept;
  219. if (roleContains("STATION")) {
  220. dept = getCurrentUser().organid;
  221. }
  222. var roadManager;
  223. if (roleContains("ROAD_MANAGER")) {
  224. roadManager = getCurrentUser().organid;
  225. }
  226. var feeList = $.zui.store.get("cache_fee_station_list");
  227. if (roadManager) feeList = cache_road_manager_fee_list_map.get(roadManager);
  228. setFeeSelectValueNoAll(feeList, "#select-dept", dept);
  229. setSecond();
  230. /**
  231. * 部门人员下拉框
  232. */
  233. function setSecond() {
  234. var select_road = $("#select-dept").val();
  235. var sec = document.getElementById('select-personal');
  236. var tempStr = ''
  237. var param = {
  238. "organid": select_road
  239. }
  240. post_common_service("user/getFsUserList", param, function(data) {
  241. if (data.length != 0) {
  242. for (var i = 0; i < data.length; i++) {
  243. for (var j = 33; j <= 53; j++) {
  244. if (select_road == j) {
  245. tempStr += "<option value=" + data[i].id + ">" + data[i].truename + "</option>";
  246. }
  247. }
  248. sec.innerHTML = tempStr;
  249. }
  250. } else {
  251. sec.innerHTML = '';
  252. }
  253. // 请求数据
  254. getInit();
  255. }, function(error) {
  256. return "";
  257. });
  258. }
  259. function getInit() {
  260. var start_date = dateChange(moment($(".div-start input").val() + " 00:00:00"), 60 * 60 * 1000);
  261. var end_date = $(".div-end input").val() + " 23:00:00";
  262. var user_id = $("#select-personal").val();
  263. // 页面初始化
  264. echart();
  265. initAppealPage(start_date, end_date, user_id);
  266. init_personal_score_statistics("statistics/one/person/year/info", user_id);
  267. init_personal_check_type("statistics/one/person/checkedItem/info", user_id, start_date, end_date);
  268. }
  269. $("#select-dept").change(function() {
  270. setSecond();
  271. });
  272. $("#select-personal").change(function() {
  273. getInit();
  274. })
  275. /**
  276. * 除数为0处理
  277. * @param {*} num
  278. * @param {*} num1
  279. * @param {*} num2
  280. * @param {*} num4
  281. */
  282. function filter(num, num1, num2) {
  283. if (num1 == 0) {
  284. return num2;
  285. } else {
  286. return (num / num1).toFixed(2);
  287. }
  288. }
  289. function echart() {
  290. // 路径配置
  291. require.config({
  292. paths: {
  293. echarts: '/js/lib/echarts/build/dist'
  294. }
  295. });
  296. // 使用
  297. require(
  298. [
  299. 'echarts',
  300. 'echarts/theme/macarons',
  301. 'echarts/chart/line',
  302. 'echarts/chart/pie'
  303. ],
  304. function(ec, theme) {
  305. // 基于准备好的dom,初始化echarts图表
  306. score_statistics = ec.init(document.getElementById('personal-score-statistics'), theme);
  307. check_type = ec.init(document.getElementById('personal-check-type'), theme);
  308. }
  309. );
  310. }
  311. /**
  312. * 图一
  313. */
  314. function personal_score_statistics() {
  315. option = {
  316. color: ['#00ced1'],
  317. tooltip: {
  318. trigger: 'axis'
  319. },
  320. noDataLoadingOption: {
  321. text: '暂无数据',
  322. effect: 'bubble',
  323. effectOption: {
  324. effect: {
  325. n: 0 //气泡个数为0
  326. }
  327. },
  328. textStyle: {
  329. fontSize: 20,
  330. fontFamily: 'cursive',
  331. fontWeight: 'bold'
  332. }
  333. },
  334. grid: {
  335. width: "75%"
  336. },
  337. legend: {
  338. data: ['平均分']
  339. },
  340. toolbox: {
  341. show: true,
  342. },
  343. calculable: true,
  344. xAxis: [{
  345. type: 'category',
  346. boundaryGap: false,
  347. data: month_method_2()
  348. }],
  349. yAxis: [{
  350. type: 'value',
  351. min: 700,
  352. max: 1000,
  353. axisLabel: {
  354. formatter: '{value}'
  355. }
  356. }],
  357. series: [{
  358. name: '平均分',
  359. type: 'line',
  360. data: array_year_score,
  361. markPoint: {
  362. data: [
  363. { type: 'max', name: '最大值' },
  364. { type: 'min', name: '最小值' }
  365. ]
  366. },
  367. markLine: {
  368. data: [
  369. { type: 'average', name: '平均值' }
  370. ]
  371. }
  372. },
  373. ]
  374. };
  375. return option;
  376. }
  377. /**
  378. * 图二
  379. */
  380. function personal_check_type() {
  381. option = {
  382. tooltip: {
  383. trigger: 'item',
  384. formatter: "个人服务检查问题占比 <br/>{b} : {c}分 ({d}%)"
  385. },
  386. noDataLoadingOption: {
  387. text: '暂无数据',
  388. effect: 'bubble',
  389. effectOption: {
  390. effect: {
  391. n: 0 //气泡个数为0
  392. }
  393. },
  394. textStyle: {
  395. fontSize: 20,
  396. fontFamily: 'cursive',
  397. fontWeight: 'bold'
  398. }
  399. },
  400. toolbox: {
  401. show: true,
  402. feature: {
  403. magicType: {
  404. type: ['pie', 'funnel'],
  405. option: {
  406. funnel: {
  407. x: '25%',
  408. width: '50%',
  409. funnelAlign: 'left',
  410. max: 1548
  411. }
  412. }
  413. },
  414. }
  415. },
  416. calculable: true,
  417. series: [{
  418. name: '访问来源',
  419. type: 'pie',
  420. radius: '55%',
  421. center: ['50%', '50%'],
  422. data: array_check_type,
  423. itemStyle: {
  424. normal: {
  425. label: {
  426. show: true,
  427. formatter: '{b} :\n{c}分 ({d}%)'
  428. },
  429. labelLine: { show: true }
  430. }
  431. }
  432. }]
  433. };
  434. return option;
  435. }
  436. });
  437. function setVisit() {
  438. if (roleContains("STATION")) {
  439. $("#select-dept").attr("disabled", "disabled");
  440. }
  441. }