personal_data_statistics.js 9.0 KB

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