NotYetStatistics.cshtml 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. 
  2. @{
  3. ViewBag.Title = "NotYetStatistics";
  4. Layout = "~/Views/Shared/_MainLayoutPage.cshtml";
  5. }
  6. <!DOCTYPE html>
  7. <html>
  8. <head>
  9. <meta name="viewport" content="width=device-width" />
  10. <title>RingStatistics</title>
  11. </head>
  12. <body>
  13. <div id="toolbar" style="padding:3px;">
  14. <input class="easyui-checkbox" type="checkbox" id="Date" name="Date" label="登记日期" labelPosition="after" labelWidth="60px">
  15. <input disabled="disabled" id="StartDate" type="text" class="easyui-datetimebox" style="width:180px">-
  16. <input disabled="disabled" id="EndDate" type="text" class="easyui-datetimebox" style="width:180px">
  17. <div style="margin-left:20px;display:inline-block">
  18. <input class="easyui-textbox" style="width:150px" id="Deal" label="受理人:" labelPosition="before" labelWidth="57px" />
  19. </div>
  20. <div style="margin-left:20px;display:inline-block">
  21. <a id="btnSelect" href="#" class="easyui-linkbutton c1" style="margin-left:30px"><i class="fa fa-search"></i> 查询记录</a>
  22. <a id="btnRefresh" href="#" class="easyui-linkbutton c8" data-options="plain:true"><i class="fa fa-refresh"></i> 刷新</a>
  23. <a onclick="GetExcel()" id="btn_Class" href="#" class="easyui-linkbutton c2" data-options="plain:true"><i class="fa fa-file-text-o"> 导出excel</i></a>
  24. </div>
  25. </div>
  26. <table id="Table"> </table>
  27. </body>
  28. </html>
  29. <script type="text/javascript">
  30. $(function () {
  31. var Report = $('#Table');
  32. Report.datagrid({
  33. fit: true,
  34. width: '100%',
  35. toolbar: '#toolbar',
  36. onLoadSuccess: onLoadSuccess,
  37. pageSize: 20,
  38. rownumbers: true,
  39. pagination: true,
  40. remoteSort: true,
  41. singleSelect: true, //单行选择
  42. loadMsg: "正在查询数据,请稍候...",
  43. url: '/Report/GetNotYetStatistics',
  44. method: 'post',
  45. columns:[[
  46. { field: '环节', title: '环节', width: 100, halign: 'center',align: 'center' },
  47. { field: '受理人', title: '受理人', width: 100, halign: 'center', align: 'center' },
  48. { field: '编号', title: '编号', width: 100, halign: 'center', align: 'center' },
  49. {
  50. field: '当前环节耗时', title: '当前环节耗时', width: 100, halign: 'center', align: 'center', formatter: function (value, row, index) {
  51. var rd = value % 24;
  52. if (value >= 24) {
  53. return parseInt(value / 24) + '天' + rd.toFixed(1) + '时';
  54. } else {
  55. return rd + '小时';
  56. }
  57. }
  58. },
  59. {
  60. field: '总耗时', title: '总耗时', width: 100, halign: 'center', align: 'center', formatter: function (value, row, index) {
  61. var rd = value % 24;
  62. if (value >= 24) {
  63. return parseInt(value / 24) + '天' + rd.toFixed(1) + '时';
  64. } else {
  65. return rd + '小时';
  66. }
  67. }
  68. },
  69. ]]
  70. })
  71. $('#Date').checkbox({
  72. onChange: function (checked) {
  73. if (checked) {
  74. $('#StartDate').datebox({ disabled: false, required: true });
  75. $('#EndDate').datebox({ disabled: false, required: true });
  76. } else {
  77. $('#StartDate').datebox({ disabled: true });
  78. $('#EndDate').datebox({ disabled: true });
  79. }
  80. }
  81. });
  82. $("#btnRefresh").bind("click", function () {
  83. $('#Table').datagrid("reload")
  84. })
  85. $("#btnSelect").bind('click', function () {
  86. $('#Table').datagrid('load', {
  87. startDate: $('#StartDate').datebox('getValue'),
  88. endDate: $('#EndDate').datebox('getValue'),
  89. Deal: $('#Deal').textbox('getValue')
  90. });
  91. })
  92. })
  93. function getPreMonth(date) {
  94. var arr = date.split('-');
  95. var year = arr[0]; //获取当前日期的年份
  96. var month = arr[1]; //获取当前日期的月份
  97. var day = arr[2]; //获取当前日期的日
  98. var days = new Date(year, month, 0);
  99. days = days.getDate(); //获取当前日期中月的天数
  100. var year2 = year;
  101. var month2 = parseInt(month) - 1;
  102. if (month2 == 0) {
  103. year2 = parseInt(year2) - 1;
  104. month2 = 12;
  105. }
  106. var day2 = day;
  107. var days2 = new Date(year2, month2, 0);
  108. days2 = days2.getDate();
  109. if (day2 > days2) {
  110. day2 = days2;
  111. }
  112. if (month2 < 10) {
  113. month2 = '0' + month2;
  114. }
  115. var t2 = year2 + '/' + month2;
  116. return t2;
  117. }
  118. function onLoadSuccess(data) {
  119. //环节
  120. var dev = support = project = 0;
  121. for (var i = 0; i < data.rows.length; i++) {
  122. if (data.rows[i].环节 == "研发处理") {
  123. ++dev;
  124. }
  125. if (data.rows[i].环节 == "技术支持处理") {
  126. ++support;
  127. }
  128. if (data.rows[i].环节 == "项目处理") {
  129. ++project;
  130. }
  131. }
  132. var merges = [ //研发处理
  133. {
  134. index: 0,
  135. rowspan: dev
  136. },
  137. //技术支持处理
  138. {
  139. index: dev,
  140. rowspan: project
  141. },
  142. //项目处理
  143. {
  144. index: dev + project,
  145. rowspan: support
  146. }
  147. ];
  148. for (var i = 0; i < merges.length; i++) {
  149. $(this).datagrid('mergeCells', {
  150. index: merges[i].index,
  151. field: '环节',
  152. rowspan: merges[i].rowspan
  153. });
  154. }
  155. //姓名
  156. //var j = first = 0;
  157. //var Name = [];
  158. //var Count = [];
  159. //var arry = new Array();
  160. //for (let i = 0; i < data.rows.length; i++) {
  161. // Name[i] = 0;
  162. // Count[i] = 0;
  163. //}
  164. //Name[0] = data.rows[0].受理人
  165. //for (var i = 0; i < data.rows.length; i++) {
  166. // if (Name[j] != data.rows[i].受理人) {
  167. // Name[++j] = data.rows[i].受理人;
  168. // }
  169. //}
  170. //for (var i = 0; i < Name.length; i++) {
  171. // for (var j = 0; j < data.rows.length; j++) {
  172. // if (Name[i] == data.rows[j].受理人) {
  173. // Count[i] += 1;
  174. // }
  175. // }
  176. //}
  177. //for (var i = 0; i < Count.length; i++) {
  178. // $(this).datagrid('mergeCells', {
  179. // index: first,
  180. // field: '受理人',
  181. // rowspan: Count[i]
  182. // })
  183. // if (i == 0) {
  184. // first = Count[i];
  185. // }
  186. // else {
  187. // first = Count[i] + Count[i - 1];
  188. // }
  189. //}
  190. }
  191. function GetExcel() {
  192. // var data = $('#Table').datagrid('getData');
  193. var params = {
  194. startDate: $('#StartDate').datebox('getValue'),
  195. endDate: $('#EndDate').datebox('getValue'),
  196. DealPerson: $('#Deal').textbox('getValue')
  197. }
  198. var location = top.ZLPMS.Loading("导出中,请稍等...");
  199. $.post("/Report/GetNotYetStatistics", params, function (data) {
  200. top.ZLPMS.UnLoading(location);
  201. //获取标题
  202. var name = '<tr>';
  203. for (let Title in data.rows[0]) {
  204. //增加\t为了不让表格显示科学计数法或者其他格式
  205. name += `<td>${Title}</td>`;
  206. }
  207. name += '</tr>';
  208. let str = '';
  209. //循环遍历,每行加入tr标签,每个单元格加td标签
  210. for (let i = 0 ; i < data.rows.length ; i++) {
  211. str += '<tr>';
  212. for (let item in data.rows[i]) {
  213. //增加\t为了不让表格显示科学计数法或者其他格式
  214. str += `<td>${data.rows[i][item] + '\t'}</td>`;
  215. }
  216. str += '</tr>';
  217. }
  218. str = name + str ;
  219. let worksheet = '未完成问题统计'
  220. let uri = 'data:application/vnd.ms-excel;base64,';
  221. //下载的表格模板数据
  222. let template = `<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"> <head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet> <x:Name>${worksheet}</x:Name> <x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet> </x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--> </head><body><table>${str}</table></body></html>`;
  223. //下载模板
  224. window.location.href = uri + base64(template)
  225. })
  226. }
  227. function base64(s) { return window.btoa(unescape(encodeURIComponent(s))) }
  228. </script>