list.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464
  1. 'use strict';
  2. var app = angular.module('app', [
  3. 'angularUtils.directives.dirPagination'
  4. ]);
  5. app.controller("listCtrl", ["$scope", "$http", "$timeout", function ($scope, $http, $timeout) {
  6. var self = this;
  7. var s4 = new SM4Util();
  8. self.userId = $.cookie("GlWorkPlatform-userid");
  9. self.userName = $.cookie("GlWorkPlatform-chineseName");
  10. self.get_AccessToken = localStorage.getItem("GlWorkPlatform-AccessToken");
  11. self.get_lastReturnPageno = sp.getUrlName("lastReturnPageno");
  12. self.get_type = sp.getUrlName("type");
  13. var postCfg = {
  14. headers: {
  15. 'Content-Type': 'application/json',
  16. 'Authorization': "Bearer " + self.get_AccessToken
  17. }
  18. }
  19. //self.search = {
  20. // TYPE: 1,
  21. // KSSJ: sp.monthfirst(sp.getLocalDate()),
  22. // JSSJ: sp.formatMonthLast(sp.getLocalDate())
  23. //}
  24. self.search = {
  25. TYPE: 3,
  26. KSSJ: sp.currentYear() + "-01-01",
  27. JSSJ: sp.currentYear() + "-12-31"
  28. }
  29. self.changeType = function () {
  30. switch (self.search.TYPE) {
  31. case "1": self.search.KSSJ = sp.monthfirst(sp.getLocalDate()); self.search.JSSJ = sp.formatMonthLast(sp.getLocalDate()); break;
  32. case "2": self.search.KSSJ = sp.quarter(sp.getLocalDate(), 1); self.search.JSSJ = sp.quarter(sp.getLocalDate(), 2); break;
  33. case "3": self.search.KSSJ = sp.currentYear() + "-01-01"; self.search.JSSJ = sp.currentYear() + "-12-31"; break;
  34. case "4": self.search.KSSJ = sp.format(sp.getLocalDate()); self.search.JSSJ = sp.format(sp.getLocalDate()); break;
  35. }
  36. }
  37. self.noDataTip = 1;//没有数据时赋变量为0,先默认为1
  38. self.getData = function () {
  39. self.list1 = [];
  40. self.list2 = [];
  41. var data = {
  42. begindate: self.search.KSSJ,
  43. enddate: self.search.JSSJ
  44. }
  45. //console.log(data);
  46. $http.post(apiurljs.login + "g2app/richang/xfAndzmStatistics", { data: s4.encryptData_CBC(JSON.stringify(data)) }, postCfg)
  47. .success(function (obj) {
  48. var res = strToJson(s4.decryptData_CBC(obj.data));
  49. //console.log(JSON.stringify(res.data));
  50. self.canExportExcel = true;
  51. if (res.data == null || res.data == undefined || res.data == "") {
  52. self.noDataTip = 0;
  53. } else {
  54. self.noDataTip = 1;
  55. self.list1 = res.data.xf_data;
  56. self.list2 = res.data.zm_data;
  57. self.getPie()
  58. self.getColumn()
  59. self.getBar()
  60. }
  61. })
  62. }
  63. self.getData()
  64. self.getColumn = function () {
  65. var title = [], data = [];
  66. self.list1.forEach(function (item) {
  67. title.push(item.dpname);
  68. data.push(item.wlqdjc + item.wlqdrc);
  69. })
  70. var chart = new Highcharts.Chart({
  71. chart: {
  72. renderTo: "column",
  73. type: 'column'
  74. },
  75. title: {
  76. text: '', //图表的标题
  77. //margin: 80
  78. },
  79. tooltip: {
  80. headerFormat: '<span style="font-size:10px">{point.key}</span><table>',
  81. pointFormat: '<tr><td style="color:{series.color};padding:0">{series.name}: </td>' +
  82. '<td style="padding:0"><b>{point.y}</b>{series.className}</td></tr>',
  83. footerFormat: '</table>',
  84. shared: true,
  85. useHTML: true
  86. },
  87. xAxis: {
  88. categories: title
  89. },
  90. yAxis: {
  91. title: {
  92. text: ''
  93. },
  94. lineWidth: 1,
  95. gridLineWidth: 1
  96. },
  97. legend: {
  98. enabled: false
  99. },
  100. plotOptions: {
  101. series: {
  102. turboThreshold: 0,
  103. cursor: 'pointer',
  104. dataLabels: {
  105. enabled: true,
  106. }
  107. }
  108. },
  109. series: [{
  110. name: "数量",
  111. data: data
  112. }],
  113. credits: {
  114. enabled: false//隐藏右下角网址
  115. },
  116. exporting: {
  117. enabled: false//隐藏右上角打印
  118. }
  119. })
  120. chart.setSize(null, 400)
  121. }
  122. self.getPie = function () {
  123. var data1 = [{ name: "办理", y: 0 }, { name: "完结", y: 0 }, { name: "超期", y: 0 }, { name: "延期", y: 0 }]
  124. var data2 = [{ name: "来信渠道", y: 0 }, { name: "来电渠道", y: 0 }, { name: "来访渠道", y: 0 }, { name: "网络渠道", y: 0 }]
  125. self.list1.forEach(function (item) {
  126. data1[0].y = data1[0].y + item.blz;
  127. data1[1].y = data1[1].y + item.wj;
  128. data1[2].y = data1[2].y + item.cq;
  129. data1[3].y = data1[3].y + item.yq;
  130. data2[0].y = data2[0].y + item.lxqdjc + item.lxqdrc;
  131. data2[1].y = data2[1].y + item.ldqdjc + item.ldqdrc;
  132. data2[2].y = data2[2].y + item.lfqdjc + item.lfqdrc;
  133. data2[3].y = data2[3].y + item.wlqdjc + item.wlqdrc;
  134. })
  135. var chart1 = new Highcharts.Chart({
  136. chart: {
  137. renderTo: "pie1",
  138. type: 'pie',
  139. style: {
  140. "position": "relative",
  141. "left": "50%",
  142. "transform": "translateX(-50%)"
  143. }
  144. },
  145. title: {
  146. text: '', //图表的标题
  147. },
  148. tooltip: {
  149. pointFormat: '{series.name}: <b>{point.y}</b>'
  150. },
  151. legend: {
  152. floating: true,
  153. align: 'left',
  154. verticalAlign: 'middle',
  155. layout: 'vertical',
  156. backgroundColor: '#FFF',
  157. itemMarginTop: 5,
  158. itemMarginBottom: 5,
  159. itemStyle: {
  160. fontSize: 16
  161. },
  162. enabled: false,
  163. },
  164. plotOptions: {
  165. pie: {
  166. allowPointSelect: true,
  167. cursor: 'pointer',
  168. dataLabels: {
  169. enabled: true,
  170. distance: -50,
  171. formatter: function () {
  172. return this.point.name + ":" + this.point.percentage.toFixed(2) + "%";
  173. }
  174. },
  175. showInLegend: true
  176. }
  177. },
  178. series: [{
  179. name: '',
  180. data: data1
  181. }],
  182. credits: {
  183. enabled: false//隐藏右下角网址
  184. },
  185. exporting: {
  186. enabled: false//隐藏右上角打印
  187. }
  188. })
  189. chart1.setSize(400, 400);
  190. var chart2 = new Highcharts.Chart({
  191. chart: {
  192. renderTo: "pie2",
  193. type: 'pie',
  194. style: {
  195. "position": "relative",
  196. "left": "50%",
  197. "transform": "translateX(-50%)"
  198. }
  199. },
  200. title: {
  201. text: '', //图表的标题
  202. },
  203. tooltip: {
  204. pointFormat: '{series.name}: <b>{point.y}</b>'
  205. },
  206. legend: {
  207. floating: true,
  208. align: 'left',
  209. verticalAlign: 'middle',
  210. layout: 'vertical',
  211. backgroundColor: '#FFF',
  212. itemMarginTop: 5,
  213. itemMarginBottom: 5,
  214. itemStyle: {
  215. fontSize: 16
  216. },
  217. enabled: false,
  218. },
  219. plotOptions: {
  220. pie: {
  221. allowPointSelect: true,
  222. cursor: 'pointer',
  223. dataLabels: {
  224. enabled: true,
  225. distance: -50,
  226. formatter: function () {
  227. return this.point.name + ":" + this.point.percentage.toFixed(2) + "%";
  228. }
  229. },
  230. showInLegend: true
  231. }
  232. },
  233. series: [{
  234. name: '',
  235. data: data2
  236. }],
  237. credits: {
  238. enabled: false//隐藏右下角网址
  239. },
  240. exporting: {
  241. enabled: false//隐藏右上角打印
  242. }
  243. })
  244. chart2.setSize(400, 400);
  245. }
  246. self.getBar = function () {
  247. var title = [], data = [{ name: "办理", data: [] }, { name: "完结", data: [] }, { name: "超期", data: [] }, { name: "延期", data: [] }];
  248. self.list2.forEach(function (item) {
  249. title.push(item.dpname);
  250. data[0].data.push(item.blz);
  251. data[1].data.push(item.wj);
  252. data[2].data.push(item.cq);
  253. data[3].data.push(item.yq);
  254. })
  255. var chart = new Highcharts.Chart({
  256. chart: {
  257. renderTo: "bar",
  258. type: 'bar'
  259. },
  260. title: {
  261. text: '', //图表的标题
  262. //margin: 80
  263. },
  264. tooltip: {
  265. headerFormat: '<span style="font-size:10px">{point.key}</span><table>',
  266. pointFormat: '<tr><td style="color:{series.color};padding:0">{series.name}: </td>' +
  267. '<td style="padding:0"><b>{point.y}</b>{series.className}</td></tr>',
  268. footerFormat: '</table>',
  269. shared: true,
  270. useHTML: true
  271. },
  272. xAxis: {
  273. categories: title
  274. },
  275. yAxis: {
  276. title: {
  277. text: ''
  278. },
  279. lineWidth: 1,
  280. gridLineWidth: 1
  281. },
  282. legend: {
  283. enabled: true
  284. },
  285. plotOptions: {
  286. series: {
  287. turboThreshold: 0,
  288. cursor: 'pointer',
  289. dataLabels: {
  290. enabled: true,
  291. }
  292. }
  293. },
  294. series: data,
  295. credits: {
  296. enabled: false//隐藏右下角网址
  297. },
  298. exporting: {
  299. enabled: false//隐藏右上角打印
  300. }
  301. })
  302. chart.setSize(null, 400)
  303. }
  304. self.btnPrint1 = function () {
  305. if (self.canExportExcel) {
  306. $('#printOut1 td').attr('t', 's')
  307. var defaultCellStyle = {
  308. font: {
  309. name: 'Times New Roman',
  310. sz: 12,
  311. color: {
  312. rgb: "000000"
  313. },
  314. bold: false, italic: false,
  315. underline: false
  316. },
  317. alignment: {
  318. vertical: "center",
  319. horizontal: "center", indent: 0, wrapText: true
  320. },
  321. border: {
  322. top: {
  323. style: "thin",
  324. color: {
  325. rgb: "000000"
  326. }
  327. },
  328. right: {
  329. style: "thin",
  330. color: {
  331. rgb: "000000"
  332. }
  333. },
  334. bottom: {
  335. style: "thin",
  336. color: {
  337. rgb: "000000"
  338. }
  339. },
  340. left: {
  341. style: "thin",
  342. color: {
  343. rgb: "000000"
  344. }
  345. }
  346. }
  347. };
  348. var cell = { defaultCellStyle: defaultCellStyle };
  349. var wb = XLSX.utils.table_to_book_addtitle(document.querySelector('#printOut1'), cell, "信访统计")
  350. //设置表格的样式
  351. var wbout = XLSX.write(wb, {
  352. bookType: 'xlsx',
  353. bookSST: false,
  354. type: 'binary',
  355. cellStyles: true,
  356. defaultCellStyle: defaultCellStyle,
  357. showGridLines: false
  358. });
  359. var s2ab = function (s) {
  360. var buf = new ArrayBuffer(s.length);
  361. var view = new Uint8Array(buf);
  362. for (var i = 0; i !== s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
  363. return buf;
  364. };
  365. try {
  366. saveAs(new Blob([s2ab(wbout)], { type: 'application/octet-stream' }), '信访统计.xlsx')
  367. } catch (e) { if (typeof console !== 'undefined') console.log(e, wbout) }
  368. return wbout
  369. } else {
  370. sp.dialog('数据还未加载完成,请稍等...')
  371. }
  372. }
  373. self.btnPrint2 = function () {
  374. if (self.canExportExcel) {
  375. $('#printOut2 td').attr('t', 's')
  376. var defaultCellStyle = {
  377. font: {
  378. name: 'Times New Roman',
  379. sz: 12,
  380. color: {
  381. rgb: "000000"
  382. },
  383. bold: false, italic: false,
  384. underline: false
  385. },
  386. alignment: {
  387. vertical: "center",
  388. horizontal: "center", indent: 0, wrapText: true
  389. },
  390. border: {
  391. top: {
  392. style: "thin",
  393. color: {
  394. rgb: "000000"
  395. }
  396. },
  397. right: {
  398. style: "thin",
  399. color: {
  400. rgb: "000000"
  401. }
  402. },
  403. bottom: {
  404. style: "thin",
  405. color: {
  406. rgb: "000000"
  407. }
  408. },
  409. left: {
  410. style: "thin",
  411. color: {
  412. rgb: "000000"
  413. }
  414. }
  415. }
  416. };
  417. var cell = { defaultCellStyle: defaultCellStyle };
  418. var wb = XLSX.utils.table_to_book_addtitle(document.querySelector('#printOut2'), cell, "政民零距离")
  419. //设置表格的样式
  420. var wbout = XLSX.write(wb, {
  421. bookType: 'xlsx',
  422. bookSST: false,
  423. type: 'binary',
  424. cellStyles: true,
  425. defaultCellStyle: defaultCellStyle,
  426. showGridLines: false
  427. });
  428. var s2ab = function (s) {
  429. var buf = new ArrayBuffer(s.length);
  430. var view = new Uint8Array(buf);
  431. for (var i = 0; i !== s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
  432. return buf;
  433. };
  434. try {
  435. saveAs(new Blob([s2ab(wbout)], { type: 'application/octet-stream' }), '政民零距离.xlsx')
  436. } catch (e) { if (typeof console !== 'undefined') console.log(e, wbout) }
  437. return wbout
  438. } else {
  439. sp.dialog('数据还未加载完成,请稍等...')
  440. }
  441. }
  442. //头部下滚冻结
  443. $(function () {
  444. //页面高度撑满
  445. setTimeout(function () {
  446. if ($(".ibox-content").height() < $(window).height() - 31) {
  447. $(".ibox-content").css("height", $(window).height() - 31)
  448. }
  449. }, 1)
  450. })
  451. }])