uploadPlus.js 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577
  1. layui.define(['tool'],function(exports){
  2. let layer = layui.layer,element = layui.element,tool=layui.tool,form = layui.form,upload = layui.upload,uploadIndex=0;
  3. // 查找指定的元素在数组中的位置
  4. Array.prototype.indexOf = function (val) {
  5. for (var i = 0; i < this.length; i++) {
  6. if (this[i] == val) {
  7. return i;
  8. }
  9. }
  10. return -1;
  11. };
  12. // 通过索引删除数组元素
  13. Array.prototype.remove = function (val) {
  14. var index = this.indexOf(val);
  15. if (index > -1) {
  16. this.splice(index, 1);
  17. }
  18. };
  19. //是否是对象
  20. function isObject(obj) {
  21. return Object.prototype.toString.call(obj) === '[object Object]';
  22. }
  23. //名称是否合法
  24. function isValidFileName(fileName) {
  25. const illegalChars = /[\\\/\*\:"<>|\?]/;
  26. return !illegalChars.test(fileName);
  27. }
  28. const opts={
  29. "title":'上传文件',
  30. "url":'/api/index/upload',
  31. "target":'uploadBtn',
  32. "targetBox":'uploadBox',
  33. "use":'attachment',//attachment(附件上传),shard(大文件分片上传),single(单图上传),multi(多图上传),import(excel导入上传)
  34. "attachment":{
  35. "type":0,//0ajax多文件模式,1ajax单文件单记录模式
  36. "exts": 'png|jpg|gif|jpeg|doc|docx|ppt|pptx|xls|xlsx|pdf|zip|rar|7z|txt|wps|avi|wmv|mpg|mov|rm|flv|mp4|mp3|wav|wma|flac|midi|dwg|dxf|dwt|xmind', //只允许上传文件格式
  37. "colmd":4,
  38. "uidDelete":false,//是否开启只有上传人自己才能删除自己的附件
  39. "ajaxSave":null,
  40. "ajaxDelete":null
  41. },
  42. "shard":{
  43. "exts": 'png|jpg|gif|jpeg|doc|docx|ppt|pptx|xls|xlsx|pdf|zip|rar|7z|txt|wps|avi|wmv|mpg|mov|rm|flv|mp4|mp3|wav|wma|flac|midi|dwg|dxf|dwt|xmind', //只允许上传文件格式
  44. },
  45. "single":{
  46. "exts": 'png|jpg|gif|jpeg',
  47. },
  48. "multi":{
  49. "exts": 'png|jpg|gif|jpeg',
  50. "type":1,
  51. "max":31,
  52. },
  53. "import":{
  54. "exts": 'xls|xlsx',
  55. "template":null,
  56. "tips":'如果导入失败,请根据提示注意检查表格数据。'
  57. },
  58. "callback": null
  59. };
  60. var uploadPlus = function(options){
  61. this.settings = $.extend(true,{},opts, options);
  62. this.settings.index = uploadIndex;
  63. uploadIndex++;
  64. let me=this;
  65. switch (me.settings.use) {
  66. case "shard":
  67. //分片上传
  68. me.shardUpload();
  69. break;
  70. case "single":
  71. me.singleImage();
  72. break;
  73. case "multi":
  74. if(isObject(me.settings.target)){
  75. me.multiImage();
  76. }
  77. else{
  78. $('#'+me.settings.target).click(function(){
  79. me.multiImage();
  80. });
  81. }
  82. break;
  83. case "import":
  84. me.excelImport();
  85. break;
  86. default:
  87. me.attachment();
  88. }
  89. };
  90. uploadPlus.prototype = {
  91. attachment: function () {
  92. let me = this;
  93. let box = $('#'+me.settings.targetBox);
  94. let boxInput = box.find('[data-type="file"]');
  95. let attachment = me.settings.attachment;
  96. //删除附件
  97. box.on('click', '.file-delete', function () {
  98. let id = $(this).data('id'),file_id = $(this).data('fileid'),uid = $(this).data('uid');
  99. if (uid != login_admin && attachment.uidDelete==true) {
  100. layer.msg('你不是该文件的上传人,无权限删除');
  101. return false;
  102. }
  103. let idsStr = boxInput.val(),idsArray = [];
  104. if (typeof idsStr !== 'undefined' && idsStr != '') {
  105. idsArray = idsStr.split(",");
  106. idsArray.remove(file_id);
  107. }
  108. tool.ask('确定删除该附件吗?', function(index) {
  109. if (typeof (attachment.ajaxDelete) === "function") {
  110. if(attachment.type==1){
  111. //单文件,单记录删除
  112. attachment.ajaxDelete(id,file_id);
  113. }
  114. else{
  115. attachment.ajaxDelete(idsArray.join(','));
  116. }
  117. }
  118. else{
  119. //虚拟删除
  120. boxInput.val(idsArray.join(','));
  121. $('#uploadFile' + id).remove();
  122. }
  123. layer.close(index);
  124. });
  125. })
  126. //重命名附件
  127. box.on('click','.name-edit',function(){
  128. let file_id = $(this).data('fileid');
  129. let uid = $(this).data('uid');
  130. if (uid != login_admin && me.settings.uidDelete==true) {
  131. layer.msg('你不是该文件的上传人,无权限修改');
  132. return false;
  133. }
  134. let name = $(this).data('name');
  135. let fileext = $(this).data('fileext');
  136. layer.prompt({
  137. title: '重命名',
  138. value: name.replace(/\.[^.]+$/, ""),
  139. yes: function(index, layero) {
  140. // 获取文本框输入的值
  141. var value = layero.find(".layui-layer-input").val();
  142. if (value!='') {
  143. if(isValidFileName(value)==false){
  144. layer.msg('文件名不能包含下列任何字符:\/:*?".<>|');
  145. return false;
  146. }
  147. let new_title = value+'.'+fileext;
  148. let callback = function (e) {
  149. layer.msg(e.msg);
  150. $('#fileItem'+file_id).find('.file-title').html(new_title).attr('title',new_title);
  151. }
  152. tool.post("/api/index/file_edit", {id:file_id,title:new_title}, callback);
  153. layer.close(index);
  154. } else {
  155. layer.msg('请填写文件名称');
  156. }
  157. }
  158. })
  159. })
  160. //多附件上传
  161. upload.render({
  162. elem: '#'+me.settings.target,
  163. url: me.settings.url,
  164. accept: 'file',
  165. exts: attachment.exts,
  166. multiple: true,
  167. before: function(obj){
  168. layer.msg('上传中...', {icon: 16, time: 0});
  169. },
  170. done: function(res){
  171. if (res.code == 0) {
  172. //上传成功
  173. if(attachment.type==0){
  174. let image=['jpg','jpeg','png','gif'],office=['doc','docx','xls','xlsx','ppt','pptx'];
  175. let idsStr = boxInput.val(),idsArray = [];
  176. if (typeof idsStr !== 'undefined' && idsStr != '') {
  177. idsArray = idsStr.split(",");
  178. }
  179. idsArray.push(res.data.id);
  180. let filesize = tool.renderSize(res.data.filesize),type=0,type_icon = 'icon-xiangmuguanli',ext = 'zip';
  181. if(res.data.fileext == 'pdf'){
  182. type=1;
  183. type_icon = 'icon-kejian';
  184. ext = 'pdf';
  185. }
  186. if (image.indexOf(res.data.fileext) !== -1) {
  187. type=1;
  188. type_icon = 'icon-sucaiguanli';
  189. ext = 'image';
  190. }
  191. if (office.indexOf(res.data.fileext) !== -1) {
  192. type=2;
  193. type_icon = 'icon-shenbao';
  194. ext = 'office';
  195. }
  196. let view_btn = '<span class="file-ctrl blue" data-ctrl="edit" data-type="'+type+'" data-fileid="'+res.data.id+'" data-ext="'+ext+'" data-filename="'+res.data.name+'" data-href="'+res.data.filepath+'" data-id="'+res.data.id+'" data-uid="'+res.data.uid+'" title="附件操作"><i class="iconfont icon-gengduo1"></i></span>';
  197. let temp = `<div class="layui-col-md${attachment.colmd}" id="uploadFile${res.data.id}">
  198. <div class="file-card" id="fileItem${res.data.id}">
  199. <i class="file-icon iconfont ${type_icon}"></i>
  200. <div class="file-info">
  201. <div class="file-title" title="${res.data.name}">${res.data.name}</div>
  202. <div class="file-ops">${filesize},一分钟前</div>
  203. </div>
  204. <div class="file-tool">${view_btn}<span class="name-edit green" style="display:none;" data-id="${res.data.id}" data-fileid="${res.data.id}" id="fileEdit${res.data.id}" data-name="${res.data.name}" data-fileext="${res.data.fileext}" title="重命名"></span><span class="file-delete red" style="display:none;" data-id="${res.data.id}" data-fileid="${res.data.id}" id="fileDel${res.data.id}" title="删除"><i class="iconfont icon-shanchu"></i></span></div>
  205. </div>
  206. </div>`;
  207. boxInput.val(idsArray.join(','));
  208. if (typeof (attachment.ajaxSave) === "function") {
  209. attachment.ajaxSave(idsArray.join(','));
  210. }
  211. else{
  212. box.append(temp);
  213. layer.msg(res.msg);
  214. }
  215. }
  216. if(attachment.type==1){
  217. //单文件,单记录保存
  218. if (typeof (attachment.ajaxSave) === "function") {
  219. attachment.ajaxSave(res);
  220. }
  221. }
  222. }else{
  223. layer.msg(res.msg);
  224. }
  225. }
  226. });
  227. },
  228. //单图
  229. singleImage: function () {
  230. let me = this;
  231. let single = upload.render({
  232. elem: "#"+me.settings.target,
  233. url: me.settings.url,
  234. accept: 'images',
  235. acceptMime:'image/*',
  236. done: function (res) {
  237. me.settings.callback(res);
  238. }
  239. });
  240. },
  241. //多图
  242. multiImage: function () {
  243. let me = this;
  244. let area =[[],['640px','360px'],['928px','610px']];
  245. $(parent.$('.express-close')).addClass('parent-colse');
  246. this.layerindex = layer.open({
  247. 'title':me.settings.title,
  248. 'area':area[me.settings.multi.type],
  249. 'content':me.multiRender(),
  250. end: function(){
  251. $(parent.$('.express-close')).removeClass('parent-colse');
  252. },
  253. 'type':1,
  254. 'success':function(){
  255. if(me.settings.multi.type==1){
  256. me.uploadOne();
  257. }else{
  258. me.uploadMore();
  259. }
  260. }
  261. });
  262. },
  263. multiRender: function (){
  264. let me = this;
  265. let template_one = '<div class="layui-form p-3">\
  266. <div class="layui-form-item">\
  267. <label class="layui-form-label">来源:</label>\
  268. <div class="layui-input-block">\
  269. <input type="radio" name="uploadtype" lay-filter="type" value="1" title="本地上传" checked>\
  270. <input type="radio" name="uploadtype" lay-filter="type" value="2" title="网络图片">\
  271. </div>\
  272. </div>\
  273. <div id="uploadType1">\
  274. <div class="layui-form-item">\
  275. <label class="layui-form-label">文件:</label>\
  276. <div class="layui-input-block">\
  277. <span class="gougu-upload-files">.jpg、.jpeg、.gif、.png、.bmp</span><button type="button" class="layui-btn layui-btn-normal" id="gouguUploadBtn'+me.settings.index+'">选择文件</button>\
  278. </div>\
  279. </div>\
  280. <div class="layui-form-item">\
  281. <label class="layui-form-label"></label>\
  282. <div class="layui-input-block">\
  283. <span class="gougu-upload-tips">只能上传 .jpg、.jpeg、.gif、.png、.bmp 文件</span>\
  284. </div>\
  285. </div>\
  286. <div class="layui-form-item">\
  287. <label class="layui-form-label"></label>\
  288. <div class="layui-input-block" id="gouguUploadChoosed'+me.settings.index+'"></div>\
  289. </div>\
  290. <div class="layui-progress upload-progress" lay-showpercent="yes" lay-filter="upload-progress-'+me.settings.index+'" style="margin-bottom:12px; margin-left:100px; width:320px; display:none;">\
  291. <div class="layui-progress-bar layui-bg-blue" lay-percent=""><span class="layui-progress-text"></span></div>\
  292. </div>\
  293. <div class="layui-form-item layui-form-item-sm">\
  294. <label class="layui-form-label"></label>\
  295. <div class="layui-input-block">\
  296. <button type="button" class="layui-btn" id="uploadNow'+me.settings.index+'">开始上传</button>\
  297. </div>\
  298. </div>\
  299. </div>\
  300. <div id="uploadType2" style="display:none; width:480px;">\
  301. <div class="layui-form-item">\
  302. <label class="layui-form-label">URL地址:</label>\
  303. <div class="layui-input-block">\
  304. <input type="text" name="img_url" placeholder="" autocomplete="off" class="layui-input">\
  305. </div>\
  306. </div>\
  307. <div class="layui-form-item">\
  308. <label class="layui-form-label">图片名称:</label>\
  309. <div class="layui-input-block">\
  310. <input type="text" name="img_name" placeholder="" autocomplete="off" class="layui-input">\
  311. </div>\
  312. </div>\
  313. <div class="layui-form-item layui-form-item-sm">\
  314. <label class="layui-form-label"></label>\
  315. <div class="layui-input-block">\
  316. <span class="layui-btn" id="uploadSave'+me.settings.index+'">确定保存</span>\
  317. </div>\
  318. </div>\
  319. </div>\
  320. </div>';
  321. let template_more = '<div class="layui-form p-3">\
  322. <div id="gouguUploadBox'+me.settings.index+'" class="gougu-upload-box select">\
  323. <div id="gouguUploadBtn'+me.settings.index+'" class="gougu-upload-btn"><div class="gougu-upload-btn-box"><i class="layui-icon layui-icon-addition"></i><br/>点击上传图片</div></div>\
  324. </div>\
  325. <div class="layui-progress upload-progress" lay-showpercent="yes" lay-filter="progress-'+me.settings.index+'" style="margin:12px 0; width:900px;">\
  326. <div class="layui-progress-bar layui-bg-blue" lay-percent=""><span class="layui-progress-text"></span></div>\
  327. </div>\
  328. <div class="layui-form-item layui-form-item-sm">\
  329. <span class="gougu-upload-tips">注:只能上传 jpg、.jpeg、.gif、.png、.bmp 文件,单次最多上传 '+me.settings.max+' 张图片,单张图片最大不要超过10M。</span>\
  330. <button type="button" class="layui-btn" id="uploadNow'+me.settings.index+'">开始上传</button>\
  331. <button type="button" class="layui-btn layui-btn-primary" id="uploadClear'+me.settings.index+'">清空列表</button>\
  332. <button type="button" class="layui-btn layui-btn-normal" id="uploadOk'+me.settings.index+'">提交</button>\
  333. </div>\
  334. </div>';
  335. return me.settings.multi.type==1?template_one:template_more;
  336. },
  337. uploadOne:function(){
  338. let me = this;
  339. form.render();
  340. form.on('radio(type)', function(data){
  341. if(data.value==1){
  342. $('#uploadType1').show();
  343. $('#uploadType2').hide();
  344. }
  345. else{
  346. $('#uploadType1').hide();
  347. $('#uploadType2').show();
  348. }
  349. });
  350. //选文件
  351. let uploadOne = upload.render({
  352. elem: '#gouguUploadBtn'+me.settings.index
  353. ,url: me.settings.url
  354. ,auto: false
  355. ,accept: 'images'
  356. ,acceptMime:'image/*'
  357. ,bindAction: '#uploadNow'+me.settings.index
  358. ,choose: function(obj){
  359. obj.preview(function(index, file, result){
  360. $('#gouguUploadChoosed'+me.settings.index).html('已选择:'+file.name);
  361. });
  362. }
  363. ,before: function(obj){
  364. $('.upload-progress').show();
  365. element.progress('upload-progress-'+me.settings.index, '0%');
  366. }
  367. ,progress: function(n, elem, e){
  368. console.log(n);
  369. element.progress('upload-progress-'+me.settings.index, n + '%');
  370. }
  371. ,done: function(res){
  372. layer.msg(res.msg);
  373. if(res.code==0){
  374. me.settings.callback(res.data);
  375. layer.close(me.layerindex);
  376. }
  377. }
  378. });
  379. $('#uploadSave'+me.settings.index).on('click',function(){
  380. let url=$('[name="img_url"]').val();
  381. let name=$('[name="img_name"]').val();
  382. if(url == ''){
  383. layer.msg('请输入图片URL');
  384. return false;
  385. }
  386. if(name == ''){
  387. layer.msg('请输入图片名称');
  388. return false;
  389. }
  390. let res={
  391. filepath:url,
  392. name:name,
  393. id:0
  394. }
  395. me.settings.callback(res);
  396. layer.close(me.layerindex);
  397. })
  398. },
  399. uploadMore:function(){
  400. let me = this,file_lists=[];
  401. console.log(file_lists);
  402. let uploadList = upload.render({
  403. elem: '#gouguUploadBtn'+me.settings.index
  404. ,elemList: $('#gouguUploadBox'+me.settings.index) //列表元素对象
  405. ,url: me.settings.url
  406. ,accept: 'images'
  407. ,acceptMime:'image/*'
  408. ,multiple: true
  409. ,number: me.settings.max
  410. ,auto: false
  411. ,bindAction: '#uploadNow'+me.settings.index
  412. ,choose: function(obj){
  413. let that = this;
  414. let files = this.files = obj.pushFile(); //将每次选择的文件追加到文件队列
  415. that.elemList.removeClass('select').addClass('selected');
  416. //读取本地文件
  417. obj.preview(function(index, file, result){
  418. let card = $('<div class="gougu-upload-card" id="gouguUploadCard'+index+'">\
  419. <div class="gougu-upload-card-box">\
  420. <img alt="'+ file.name +'" class="gougu-upload-card-img" src="'+ result +'">\
  421. <div class="gougu-upload-card-bar"><div class="layui-progress" lay-filter="progress-card-'+ index +'"><div class="layui-progress-bar" lay-percent=""></div></div></div>\
  422. <div class="gougu-upload-card-text">'+ file.name +'</div>\
  423. <div class="gougu-upload-card-reload"><button type="button" class="layui-btn layui-btn-xs">重新上传</button></div>\
  424. <div class="gougu-upload-card-del" data-index="'+index+'"><button type="button" class="layui-btn layui-btn-xs layui-btn-radius layui-btn-danger"><i class="layui-icon layui-icon-close"></i></button></div>\
  425. </div>\
  426. </div>');
  427. //单个重传
  428. card.find('.gougu-upload-card-reload').on('click', function(){
  429. obj.upload(index, file);
  430. });
  431. //删除
  432. card.find('.gougu-upload-card-del').on('click', function(){
  433. delete files[index]; //删除对应的文件
  434. card.remove();
  435. uploadList.config.elem.next()[0].value = ''; //清空 input file 值,以免删除后出现同名文件不可选
  436. });
  437. that.elemList.append(card);
  438. element.render('progress'); //渲染新加的进度条组件
  439. });
  440. }
  441. ,done: function(res, index, upload){ //成功的回调
  442. let that = this;
  443. if(res.code==0){
  444. delete this.files[index]; //删除文件队列已经上传成功的文件
  445. that.elemList.find('#gouguUploadCard'+ index).addClass('uploadok');
  446. file_lists.push(res.data);
  447. }
  448. else{
  449. layer.msg(res.msg);
  450. this.error(index, upload);
  451. }
  452. }
  453. ,allDone: function(obj){ //多文件上传完毕后的状态回调
  454. //console.log(obj);
  455. layer.msg('上传成功');
  456. me.settings.callback(file_lists,obj);
  457. layer.close(me.layerindex);
  458. }
  459. ,error: function(index, upload){ //错误回调
  460. let that = this;
  461. let tr = that.elemList.find('#gouguUploadCard'+ index).addClass('reload'); //显示重传
  462. }
  463. ,progress: function(n, elem, e, index){
  464. element.progress('progress-card-'+ index, n + '%'); //执行进度条。n 即为返回的进度百分比
  465. }
  466. });
  467. $('#uploadClear'+me.settings.index).click(function(){
  468. $('#gouguUploadBox'+me.settings.index).find('.gougu-upload-card-del').click();
  469. })
  470. $('#uploadOk'+me.settings.index).click(function(){
  471. if(me.settings.files.length>0){
  472. me.settings.callback(me.settings.files);
  473. layer.close(me.layerindex);
  474. }
  475. else{
  476. layer.msg('请先点击开始上传按钮上传');
  477. }
  478. })
  479. },
  480. //批量导入
  481. excelImport:function(){
  482. let me = this;
  483. $(parent.$('.express-close')).addClass('parent-colse');
  484. layer.open({
  485. 'title':me.settings.title,
  486. 'type':1,
  487. 'area': ['640px', '320px'],
  488. 'content':'<div class="layui-form layui-import">\
  489. <div class="mt-4">\
  490. <div class="layui-form-item">\
  491. <label class="layui-form-label">选择文件:</label>\
  492. <div class="layui-input-block">\
  493. <div class="layui-input-inline" style="width:286px;"><input type="text" id="inputImport'+me.settings.index+'" placeholder=".xls,.xlsx" class="layui-input" readonly></div><button type="button" class="layui-btn layui-btn-normal" id="importSelect'+me.settings.index+'">选择文件</button><a href="'+me.settings.import.template+'" target="_blank" class="layui-btn ml-2">Excel模板下载</a>\
  494. </div>\
  495. </div>\
  496. </div>\
  497. <div class="layui-form-item py-2">\
  498. <label class="layui-form-label"></label>\
  499. <div class="layui-input-block gougu-import-tips">\
  500. 1、只能上传 .xls、.xlsx文件,文件大小 3MB 以内,每次导入不能超过3000条;<br>2、Excel表格数据请勿放在合并的单元格中,格式务必按照模版样本填写;<br>3、'+me.settings.import.tips+'\
  501. </div>\
  502. </div>\
  503. <div class="layui-form-item">\
  504. <label class="layui-form-label"></label>\
  505. <div class="layui-input-block">\
  506. <button type="button" class="layui-btn layui-bg-red" id="btnImport'+me.settings.index+'">上传并导入</button>\
  507. <span class="red ml-3" id="noteImport'+me.settings.index+'"></span>\
  508. </div>\
  509. </div>\
  510. </div>',
  511. end: function(){
  512. $(parent.$('.express-close')).removeClass('parent-colse');
  513. },
  514. success: function(layero, idx){
  515. form.render();
  516. let noteImport = $('#noteImport'+me.settings.index);
  517. //选文件
  518. let uploadImport = upload.render({
  519. elem: '#importSelect'+me.settings.index
  520. ,url: me.settings.url
  521. ,auto: false
  522. ,accept: 'file' //普通文件
  523. ,acceptMime: 'application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' // 此处设置上传的文件格式
  524. ,exts: 'xls|xlsx' //只允许上传文件格式
  525. ,bindAction: '#btnImport'+me.settings.index
  526. ,choose: function(obj){
  527. obj.preview(function(index, file, result){
  528. $('#importSelect'+me.settings.index).html('重新选择');
  529. $('#inputImport'+me.settings.index).val(file.name);
  530. });
  531. }
  532. ,before: function(obj){
  533. if($('#inputImport'+me.settings.index).val()==''){
  534. layer.msg('请选择文件');
  535. return false;
  536. }
  537. }
  538. ,progress: function(n, elem, e){
  539. noteImport.html('文件上转中...');
  540. if(n==100){
  541. noteImport.html('数据导入中...');
  542. }
  543. }
  544. ,error: function(index, upload){
  545. uploadImport.reload();
  546. $('#importSelect'+me.settings.index).html('选择文件');
  547. $('#inputImport'+me.settings.index).val('');
  548. noteImport.html('数据导入失败,请重新选择文件或关闭弹层重试');
  549. }
  550. ,done: function(res, index, upload){
  551. uploadImport.reload();
  552. noteImport.html(res.msg);
  553. layer.msg(res.msg);
  554. if(res.code==0){
  555. layer.close(idx);
  556. me.settings.callback(res);
  557. }
  558. else{
  559. $('#importSelect'+me.settings.index).html('选择文件');
  560. $('#inputImport'+me.settings.index).val('');
  561. }
  562. }
  563. });
  564. }
  565. });
  566. }
  567. }
  568. //输出接口
  569. exports('uploadPlus', uploadPlus);
  570. });