Нет описания

generalStatisticsReport.js 11KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322
  1. /**
  2. * 报修平台
  3. * */
  4. var zydata = [];
  5. var mzdata = [];
  6. var hzdata = [];
  7. var showdatas = [];
  8. var len = "";
  9. var state = ""; // state tab页的 data-index(工单状态参数);
  10. var stateVal = ""; //默认为所有,”day”今天,”week”本周,”month”本月,”year”本年
  11. $(document).ready(function () {
  12. $(".tool_bars").authorizeButton();
  13. //搜索
  14. $("#sc_btns").click(function () {
  15. getdatas();
  16. // initTable1();
  17. });
  18. $("#HY_seeMore").click(function () {
  19. $(".moreCondition").toggleClass("show");
  20. });
  21. $("#sc_statebtn")
  22. .find('input[type="radio"]')
  23. .on("change", function () {
  24. stateVal = $(this).val();
  25. initTable1();
  26. });
  27. //时间
  28. laydate.render({
  29. elem: "#startTime",
  30. theme: "#249fea",
  31. range: "~",
  32. });
  33. function getPreDatetime(pdate) {
  34. var start = new Date();
  35. start.setTime(start.getTime() - pdate);
  36. start.getYear(); // 获取当前年份(2位)
  37. var YY = start.getFullYear(); // 获取完整的年份(4位,1970-????)
  38. var MM = start.getMonth() + 1; // 获取当前月份(0-11,0代表1月)
  39. MM = MM > 9 ? MM : "0" + MM;
  40. var DD = start.getDate(); // 获取当前日(1-31)
  41. DD = DD > 9 ? DD : "0" + DD;
  42. var lastmonth = YY + "-" + MM + "-" + DD;
  43. return lastmonth;
  44. }
  45. if ($("#startTime").val() == "") {
  46. function p(s) {
  47. return s < 10 ? "0" + s : s;
  48. }
  49. var currentYear = new Date().getFullYear();
  50. var currentMonth = new Date().getMonth() + 1;
  51. var currentDate = new Date().getDate();
  52. var prevCurrentYear = 0;
  53. var prevCurrentMonth = 0;
  54. if (currentMonth == 1) {
  55. prevCurrentYear = currentYear - 1;
  56. prevCurrentMonth = 12;
  57. } else {
  58. prevCurrentYear = currentYear;
  59. prevCurrentMonth = currentMonth - 1;
  60. }
  61. var current =
  62. currentYear + "-" + p(currentMonth) + "-" + p(currentDate);
  63. // var lastmonth = prevCurrentYear + "-" + p(prevCurrentMonth) + "-" + p(currentDate)
  64. var a = getPreDatetime(3600 * 1000 * 24 * 30);
  65. $("#startTime").val(
  66. getPreDatetime(3600 * 1000 * 24 * 30) + " ~ " + current
  67. );
  68. getdatas();
  69. // initTable1();
  70. }
  71. });
  72. function getdatas() {
  73. $.ajax({
  74. type: "get",
  75. url:
  76. huayi.config.callcenter_url +
  77. "testusertypeapi/api/Test/getmzsfallbbinfolist", //获取数据的Servlet地址
  78. async: true,
  79. dataType: "json",
  80. data: {
  81. stime:
  82. $("#startTime").val() && $("#startTime").val().split(" ~ ")[0], //开始时间
  83. etime:
  84. $("#startTime").val() && $("#startTime").val().split(" ~ ")[1], //结束时间
  85. },
  86. success: function (data) {
  87. if (data.state.toLowerCase() == "success") {
  88. for (var i = 0; i < data.data.length; i++) {
  89. delete data.data[i].sendlosecount;
  90. delete data.data[i].hzallcount;
  91. }
  92. zydata = data.data;
  93. initTable1();
  94. }
  95. },
  96. });
  97. }
  98. function initTable1() {
  99. //先销毁表格
  100. $("#table1").bootstrapTable("destroy");
  101. //初始化表格,动态从服务器加载数据
  102. $("#table1").bootstrapTable({
  103. method: "get", //使用get请求到服务器获取数据
  104. url:huayi.config.callcenter_url + "testusertypeapi/api/Test/getzysfallbbinfolist", //获取数据的Servlet地址 getzysfallbbinfolist
  105. //url:"./js/jsonFollData.js",
  106. contentType: "application/x-www-form-urlencoded",
  107. striped: true, //表格显示条纹
  108. smartDisplay: false,
  109. // pagination: false, //启动分页
  110. // pageSize: 10, //每页显示的记录数
  111. // pageNumber: 1, //当前第几页
  112. // pageList: [10, 20, 50, 100], //记录数可选列表
  113. search: false, //是否启用查询
  114. showColumns: false, //显示下拉框勾选要显示的列
  115. showRefresh: false, //显示刷新按钮
  116. sidePagination: "server", //表示服务端请求
  117. //设置为undefined可以获取pageNumber,pageSize,searchText,sortName,sortOrder
  118. //设置为limit可以获取limit, offset, search, sort, order
  119. queryParamsType: "undefined",
  120. queryParams: function queryParams(params) {
  121. //设置查询参数
  122. var param = {
  123. stime:
  124. $("#startTime").val() &&
  125. $("#startTime").val().split(" ~ ")[0], //开始时间
  126. etime:
  127. $("#startTime").val() &&
  128. $("#startTime").val().split(" ~ ")[1], //结束时间
  129. };
  130. return param;
  131. },
  132. responseHandler: function (res) {
  133. var ddata = res
  134. console.log("ddata", ddata)
  135. for (var i = 0; i < ddata.data.length; i++) {
  136. delete ddata.data[i].sendlosecount;
  137. delete ddata.data[i].hzallcount;
  138. if (ddata.data[i].sfallcount == "") {
  139. ddata.data[i].sfallcount = 0;
  140. }
  141. if (ddata.data[i].yhfcount == "") {
  142. ddata.data[i].yhfcount = 0;
  143. }
  144. if (ddata.data[i].whfcount == "") {
  145. ddata.data[i].whfcount = 0;
  146. }
  147. if (ddata.data[i].mycount == "") {
  148. ddata.data[i].mycount = 0;
  149. }
  150. if (ddata.data[i].mycountbl == "") {
  151. ddata.data[i].mycountbl = 0;
  152. }
  153. if (ddata.data[i].bycount == "") {
  154. ddata.data[i].bycount = 0;
  155. }
  156. if (ddata.data[i].bycountbl == "") {
  157. ddata.data[i].bycountbl = 0;
  158. }
  159. if (ddata.data[i].nomycount == "") {
  160. ddata.data[i].nomycount = 0;
  161. }
  162. if (ddata.data[i].nomycountbl == "") {
  163. ddata.data[i].nomycountbl = 0;
  164. }
  165. if (ddata.data[i].othercount == "") {
  166. ddata.data[i].othercount = 0;
  167. }
  168. if (ddata.data[i].hfmydbl == "") {
  169. ddata.data[i].hfmydbl = 0;
  170. }
  171. if (ddata.data[i].sendsuccesscount == "") {
  172. ddata.data[i].sendsuccesscount = 0;
  173. }
  174. if (ddata.data[i].sendlv == "") {
  175. ddata.data[i].sendlv = 0;
  176. }
  177. if (ddata.data[i].zhmydbfb == "") {
  178. ddata.data[i].zhmydbfb = 0;
  179. }
  180. }
  181. mzdata = ddata.data;
  182. hzdata = zydata.concat(mzdata);
  183. len = hzdata.length;
  184. var sfallcount = hzdata.reduce(
  185. (sum, e) => sum + parseInt(e.sfallcount),
  186. 0
  187. );
  188. var yhfcount = hzdata.reduce(
  189. (sum, e) => sum + parseInt(e.yhfcount),
  190. 0
  191. );
  192. var whfcount = hzdata.reduce(
  193. (sum, e) => sum + parseInt(e.whfcount),
  194. 0
  195. );
  196. var mycount = hzdata.reduce(
  197. (sum, e) => sum + parseInt(e.mycount),
  198. 0
  199. );
  200. var mycountbl = hzdata.reduce(
  201. (sum, e) => sum + parseInt(e.mycountbl),
  202. 0
  203. );
  204. var bycount = hzdata.reduce(
  205. (sum, e) => sum + parseInt(e.bycount),
  206. 0
  207. );
  208. var bycountbl = hzdata.reduce(
  209. (sum, e) => sum + parseInt(e.bycountbl),
  210. 0
  211. );
  212. var nomycount = hzdata.reduce(
  213. (sum, e) => sum + parseInt(e.nomycount),
  214. 0
  215. );
  216. var nomycountbl = hzdata.reduce(
  217. (sum, e) => sum + parseInt(e.nomycountbl),
  218. 0
  219. );
  220. var othercount = hzdata.reduce(
  221. (sum, e) => sum + parseInt(e.othercount),
  222. 0
  223. );
  224. var hfmydbl = hzdata.reduce(
  225. (sum, e) => sum + parseFloat(e.hfmydbl),
  226. 0
  227. );
  228. var sendsuccesscount = hzdata.reduce(
  229. (sum, e) => sum + parseFloat(e.sendsuccesscount),
  230. 0
  231. );
  232. var sendlv = hzdata.reduce(
  233. (sum, e) => sum + parseFloat(e.sendlv),
  234. 0
  235. );
  236. var zhmydbfb = hzdata.reduce(
  237. (sum, e) => sum + parseInt(e.zhmydbfb),
  238. 0
  239. );
  240. var newhzdata = [
  241. {
  242. deptname: "合计",
  243. sfallcount: sfallcount,
  244. yhfcount: yhfcount,
  245. whfcount: whfcount,
  246. mycount: mycount,
  247. mycountbl: (mycountbl / len).toFixed(2) + "%",
  248. bycount: bycount,
  249. bycountbl: (bycountbl / len).toFixed(2) + "%",
  250. nomycount: nomycount,
  251. nomycountbl: (nomycountbl / len).toFixed(2) + "%",
  252. othercount: othercount,
  253. hfmydbl: (hfmydbl / len).toFixed(2) + "%",
  254. sendsuccesscount: sendsuccesscount,
  255. sendlv: ((sendsuccesscount/ sfallcount)*100).toFixed(2) + "%",
  256. zhmydbfb: ((mycount+bycount)/(sendsuccesscount-othercount)*100).toFixed(2) + '%'
  257. //zhmydbfb: (zhmydbfb / len).toFixed(2) + "%",
  258. },
  259. ];
  260. if (hzdata.length > 0) {
  261. showdatas = hzdata.concat(newhzdata);
  262. } else {
  263. showdatas = [];
  264. }
  265. //格式化数据
  266. return {
  267. rows: showdatas, //数据
  268. };
  269. },
  270. onLoadSuccess: function (res) {
  271. //加载成功时执行
  272. },
  273. onLoadError: function () {
  274. //加载失败时执行
  275. //layer.msg("加载数据失败", { time: 1500, icon: 2 });
  276. },
  277. });
  278. }
  279. //导出
  280. function btn_export() {
  281. // var stime = $('#startTime').val() && $('#startTime').val().split(' ~ ')[0] //开始时间
  282. // var etime = $('#startTime').val() && $('#startTime').val().split(' ~ ')[1] //结束时间
  283. // window.location.href = huayi.config.callcenter_url + "testusertypeapi/api/Test/exportexcelsfallbb?stime=" + stime + "&etime=" + etime
  284. //要导出的json数据
  285. const jsonData = showdatas;
  286. //列标题,逗号隔开,每一个逗号就是隔开一个单元格
  287. var str = `科室,随访总数,已回复,未回复,满意,满意度,表扬,表扬度,不满意,不满意度,其他,回复满意度,成功数,成功率,综合满意度\n`;
  288. //增加\t为了不让表格显示科学计数法或者其他格式
  289. for (let i = 0; i < jsonData.length; i++) {
  290. for (let item in jsonData[i]) {
  291. str += `${jsonData[i][item] + "\t"},`;
  292. }
  293. str += "\n";
  294. }
  295. //encodeURIComponent解决中文乱码
  296. let uri =
  297. "data:text/csv/xls;charset=utf-8,\ufeff" + encodeURIComponent(str);
  298. //通过创建a标签实现
  299. let link = document.createElement("a");
  300. link.href = uri;
  301. //对下载的文件命名
  302. link.download = "总统计报表.xlsx";
  303. document.body.appendChild(link);
  304. link.click();
  305. document.body.removeChild(link);
  306. }