Nessuna descrizione

importPhones.html 9.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <script src="../../Script/Common/huayi.load.js"></script>
  6. <script src="../../Script/Common/huayi.config.js"></script>
  7. <title>导入号码</title>
  8. <style>
  9. .btn-success {
  10. color: #fff;
  11. background-color: #249fea;
  12. border-color: #4cae4c;
  13. border-radius: 4px;
  14. cursor: pointer;
  15. }
  16. .btn-success.active,
  17. .btn-success:active,
  18. .btn-success:focus,
  19. .btn-success:hover {
  20. border-color: #4cae4c;
  21. background-color: #249fea;
  22. }
  23. .btn-success[disabled],
  24. .btn-success[disabled]:active,
  25. .btn-success[disabled]:focus,
  26. .btn-success[disabled]:hover {
  27. background-color: #249fea;
  28. }
  29. #importNum {
  30. width: 130px;
  31. margin: 60px auto 0 auto;
  32. }
  33. .progress {
  34. width: 80%;
  35. margin: 20px auto 0 auto;
  36. display: none;
  37. }
  38. </style>
  39. </head>
  40. <body>
  41. <div style="padding: 10px; margin-bottom: 20px;">
  42. <div class="alert alert-info" role="alert">
  43. <span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span>
  44. <span class="sr-only">tips:</span> 上传文件需要严格按照下载的EXCEL模板进行填写!上传后点击导入即可!
  45. </div>
  46. <div class="form-inline clearfix">
  47. <div class="form-group">
  48. <a href="../drmb/importPhonesTemplate.xlsx" download="外呼号码导入模板.xlsx" class="btn btn-success form-control" id="downloadExl" title="点击下载EXCEL模板" rel="nofollow">
  49. 下载EXCEL模板
  50. </a>
  51. </div>
  52. <div class="form-group">
  53. <input class="hidden" type="file" id="upFile" name="upFile" accept=".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel,application/x-xls,application/x-xlsx" />
  54. <input class="form-control btn btn-success" title="点击上传Excel文件" type="button" value="上传Excel文件" id="upFileExcel" />
  55. <span class="excelName"></span>
  56. </div>
  57. </div>
  58. <div class="progress">
  59. <div class="progress-bar progress-bar-striped" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100">
  60. </div>
  61. </div>
  62. <div class="form-group text-center">
  63. <input type="button" id="importNum" class="form-control btn btn-success" value="导入" />
  64. </div>
  65. </div>
  66. <script>
  67. var wid = helper.request.queryString("tid");
  68. var percents = 0;//长传文件进度值
  69. $(document).ready(function() {
  70. //上传EXCEL文件
  71. $("#upFileExcel").click(function() {
  72. $("#upFile").trigger("click");
  73. });
  74. $("#upFile").change(function() {
  75. var Files = document.getElementById("upFile").files;
  76. $('.excelName').html(Files[0].name); //文件名称
  77. });
  78. $("#importNum").click(function() {
  79. uploads();
  80. });
  81. });
  82. //上传Excel文件 模拟实时进度
  83. function uploads() {
  84. var txtName = $('.excelName').text();
  85. if(txtName == '') {
  86. layer.confirm('请先上传文件', {
  87. icon: 2,
  88. btn: ['确定']
  89. });
  90. return;
  91. }
  92. //一般情况下,excel后缀是".xls",在2007以及以后的版本中又增加了".xlsx"。excel的模板文件后缀名是".xlt",启动宏的工作簿后缀名是".xlsm"。
  93. if(txtName.indexOf('.xls') != -1 ||
  94. txtName.indexOf('.xlsx') != -1 ||
  95. txtName.indexOf('.xlt') != -1 ||
  96. txtName.indexOf('.xlsm') != -1
  97. ) {
  98. var formData = new FormData();
  99. var Files = document.getElementById("upFile").files;
  100. formData.append("upFile", Files[0]);//是 Files[] 上传文件
  101. formData.append("taskid", wid);//是 string 任务id
  102. $.ajax({
  103. url: huayi.config.callcenter_url + "callcenterapi/api/autocallouttask/importexcel",
  104. type: "POST",
  105. data: formData,
  106. /**
  107. *必须false才会自动加上正确的Content-Type
  108. */
  109. contentType: false,
  110. /**
  111. * 必须false才会避开jQuery对 formdata 的默认处理
  112. * XMLHttpRequest会对 formdata 进行正确的处理
  113. */
  114. processData: false,
  115. xhr: function() {
  116. var xhr = jQuery.ajaxSettings.xhr();
  117. xhr.upload.onload = function() {
  118. updateProgress(88);
  119. }
  120. xhr.upload.onprogress = function(ev) {
  121. updateProgress(70);
  122. }
  123. return xhr;
  124. },
  125. beforeSend: function(request) {
  126. $('.progress').show();
  127. $("#importNum").attr("disabled", true);
  128. $("#importNum").val('导入中...');
  129. updateProgress(50);
  130. },
  131. success: function(result) {
  132. updateProgress(100);
  133. var r = $.parseJSON(result);
  134. $("#importNum").attr("disabled", false);
  135. $("#importNum").val('导入');
  136. if(r.state.toLowerCase() == "success") {
  137. var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
  138. parent.layer.close(index); //再执行关闭
  139. parent.$('#phoneTable').bootstrapTable('refresh');
  140. parent.layer.alert(r.message, {
  141. icon: 1,
  142. btn: ['确定']
  143. });
  144. }
  145. },
  146. error: function(textStatus) {
  147. percents = 0;
  148. $('.progress').hide();
  149. layer.confirm('网络繁忙,请稍后再试...', {
  150. btn: ['确定'] //按钮
  151. });
  152. $("#importNum").attr("disabled", false);
  153. $("#importNum").val('导入');
  154. },
  155. complete: function(XMLHttpRequest, textStatus) {
  156. percents = 0;
  157. $('.progress').hide();
  158. if(textStatus == 'timeout') {
  159. var xmlhttp = window.XMLHttpRequest ? new window.XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHttp");
  160. xmlhttp.abort();
  161. layer.confirm('网络超时,请稍后再试...', {
  162. btn: ['确定'] //按钮
  163. });    
  164. }
  165. $("#importNum").attr("disabled", false);
  166. $("#importNum").val('导入');
  167. },
  168. });
  169. } else {
  170. layer.confirm('请上传EXCEL文件', {
  171. icon: 2,
  172. btn: ['确定']
  173. });
  174. return;
  175. }
  176. }
  177. //更新进度条
  178. function updateProgress(p) {
  179. while(percents < p) {
  180. percents++;
  181. $('.progress-bar').css('width', percents + '%');
  182. $('.progress-bar').text(percents + '%');
  183. }
  184. }
  185. //上传Excel文件 (XHR中表示的是文件上传进度;上传完成返回数据还需要时间;)
  186. function upload() {
  187. var txtName = $('.excelName').text();
  188. if(txtName == '') {
  189. layer.confirm('请先上传文件', {
  190. icon: 2,
  191. btn: ['确定']
  192. });
  193. return;
  194. }
  195. //一般情况下,excel后缀是".xls",在2007以及以后的版本中又增加了".xlsx"。excel的模板文件后缀名是".xlt",启动宏的工作簿后缀名是".xlsm"。
  196. if(txtName.indexOf('.xls') != -1 ||
  197. txtName.indexOf('.xlsx') != -1 ||
  198. txtName.indexOf('.xlt') != -1 ||
  199. txtName.indexOf('.xlsm') != -1
  200. ) {
  201. var formData = new FormData();
  202. var Files = document.getElementById("upFile").files;
  203. formData.append("upFile", Files[0]);
  204. formData.append("taskid", wid);
  205. formData.append("token", $.cookie("token"));
  206. $.ajax({
  207. url: huayi.config.callcenter_url + "CallOutPlan/TelInput",
  208. type: "POST",
  209. data: formData,
  210. /**
  211. *必须false才会自动加上正确的Content-Type
  212. */
  213. contentType: false,
  214. /**
  215. * 必须false才会避开jQuery对 formdata 的默认处理
  216. * XMLHttpRequest会对 formdata 进行正确的处理
  217. */
  218. processData: false,
  219. xhr: function() { //这是关键 获取原生的xhr对象 做以前做的所有事情
  220. var xhr = jQuery.ajaxSettings.xhr();
  221. xhr.upload.onload = function() {
  222. //alert('finish downloading')
  223. }
  224. xhr.upload.onprogress = function(ev) {
  225. //console.log(ev);
  226. //if(ev.lengthComputable) {
  227. var percent = 100 * ev.loaded / ev.total;
  228. //console.log(percent, ev);
  229. $('.progress-bar').css('width', percent + '%');
  230. $('.progress-bar').text(percent + '%');
  231. //}
  232. }
  233. return xhr;
  234. },
  235. beforeSend: function(request) {
  236. $('.progress').show();
  237. $("#importNum").attr("disabled", true);
  238. $("#importNum").val('导入中...');
  239. },
  240. success: function(result) {
  241. $('.progress').hide();
  242. var r = $.parseJSON(result);
  243. $("#importNum").attr("disabled", false);
  244. $("#importNum").val('导入');
  245. if(r.state.toLowerCase() == "success") {
  246. var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
  247. parent.layer.close(index); //再执行关闭
  248. parent.Right(wid);
  249. parent.layer.alert(r.message, {
  250. icon: 1,
  251. btn: ['确定']
  252. });
  253. }
  254. },
  255. error: function(textStatus) {
  256. $('.progress-bar').css('width', '0%');
  257. $('.progress-bar').text('0%');
  258. layer.confirm('网络繁忙,请稍后再试...', {
  259. btn: ['确定'] //按钮
  260. });
  261. $("#importNum").attr("disabled", false);
  262. $("#importNum").val('导入');
  263. },
  264. complete: function(XMLHttpRequest, textStatus) {
  265. //$('.progress-bar').css('width', '0%');
  266. //$('.progress-bar').text('0%');
  267. if(textStatus == 'timeout') {
  268. var xmlhttp = window.XMLHttpRequest ? new window.XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHttp");
  269. xmlhttp.abort();
  270. layer.confirm('网络超时,请稍后再试...', {
  271. btn: ['确定'] //按钮
  272. });    
  273. }
  274. $("#importNum").attr("disabled", false);
  275. $("#importNum").val('导入');
  276. },
  277. });
  278. } else {
  279. layer.confirm('请上传EXCEL文件', {
  280. icon: 2,
  281. btn: ['确定']
  282. });
  283. return;
  284. }
  285. }
  286. </script>
  287. </body>
  288. </html>