personal_data_statistics.js 11 KB

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