layui.define(['tool'],function(exports){ let layer = layui.layer,element = layui.element,tool=layui.tool,form = layui.form,upload = layui.upload,uploadIndex=0; // 查找指定的元素在数组中的位置 Array.prototype.indexOf = function (val) { for (var i = 0; i < this.length; i++) { if (this[i] == val) { return i; } } return -1; }; // 通过索引删除数组元素 Array.prototype.remove = function (val) { var index = this.indexOf(val); if (index > -1) { this.splice(index, 1); } }; //格式化文件大小 function renderSize(value){ if(null==value||value==''){ return "0 Bytes"; } var unitArr = new Array("Bytes","KB","MB","GB","TB","PB","EB","ZB","YB"); var index=0; var srcsize = parseFloat(value); index=Math.floor(Math.log(srcsize)/Math.log(1024)); var size =srcsize/Math.pow(1024,index); size=size.toFixed(2);//保留的小数位数 return size+unitArr[index]; } //是否是对象 let isObject = function(obj) { return Object.prototype.toString.call(obj) === '[object Object]'; } const opts={ "title":'上传文件', "url":'/api/index/upload', "target":'uploadBtn', "targetBox":'uploadBox', "use":'attachment',//attachment(附件上传),shard(大文件分片上传),single(单图上传),multi(多图上传),import(excel导入上传) "attachment":{ "type":0,//0ajax多文件模式,1ajax单文件单记录模式 "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', //只允许上传文件格式 "colmd":4, "uidDelete":false,//是否开启只有上传人自己才能删除自己的附件 "ajaxSave":null, "ajaxDelete":null }, "shard":{ "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', //只允许上传文件格式 }, "single":{ "exts": 'png|jpg|gif|jpeg', }, "multi":{ "exts": 'png|jpg|gif|jpeg', "type":1, "max":31, }, "import":{ "exts": 'xls|xlsx', "template":null, "tips":'如果导入失败,请根据提示注意检查表格数据。' }, "callback": null }; var uploadPlus = function(options){ this.settings = $.extend(true,{},opts, options); this.settings.index = uploadIndex; uploadIndex++; let me=this; switch (me.settings.use) { case "shard": //分片上传 me.shardUpload(); break; case "single": me.singleImage(); break; case "multi": if(isObject(me.settings.target)){ me.multiImage(); } else{ $('#'+me.settings.target).click(function(){ me.multiImage(); }); } break; case "import": me.excelImport(); break; default: me.attachment(); } }; uploadPlus.prototype = { attachment: function () { let me = this; let box = $('#'+me.settings.targetBox); let boxInput = box.find('[data-type="file"]'); let attachment = me.settings.attachment; //删除附件 box.on('click', '.file-delete', function () { let id = $(this).data('id'),file_id = $(this).data('fileid'),uid = $(this).data('uid'); if (uid != login_admin && attachment.uidDelete==true) { layer.msg('你不是该文件的上传人,无权限删除'); return false; } let idsStr = boxInput.val(),idsArray = []; if (typeof idsStr !== 'undefined' && idsStr != '') { idsArray = idsStr.split(","); idsArray.remove(file_id); } tool.ask('确定删除该附件吗?', function(index) { if (typeof (attachment.ajaxDelete) === "function") { if(attachment.type==1){ //单文件,单记录删除 attachment.ajaxDelete(id,file_id); } else{ attachment.ajaxDelete(idsArray.join(',')); } } else{ //虚拟删除 boxInput.val(idsArray.join(',')); $('#uploadImg' + id).remove(); } layer.close(index); }); }) //重命名附件 box.on('click','.name-edit',function(){ let file_id = $(this).data('fileid'); let uid = $(this).data('uid'); if (uid != login_admin && me.settings.uidDelete==true) { layer.msg('你不是该文件的上传人,无权限修改'); return false; } let name = $(this).data('name'); let fileext = $(this).data('fileext'); layer.prompt({ title: '重命名', value: name.replace(/\.[^.]+$/, ""), yes: function(index, layero) { // 获取文本框输入的值 var value = layero.find(".layui-layer-input").val(); if (value!='') { let new_title = value+'.'+fileext; let callback = function (e) { layer.msg(e.msg); $('#fileItem'+file_id).find('.file-title').html(new_title).attr('title',new_title); } tool.post("/api/index/file_edit", {id:file_id,title:new_title}, callback); layer.close(index); } else { layer.msg('请填写文件名称'); } } }) }) //多附件上传 upload.render({ elem: '#'+me.settings.target, url: me.settings.url, accept: 'file', exts: attachment.exts, multiple: true, before: function(obj){ layer.msg('上传中...', {icon: 16, time: 0}); }, done: function(res){ if (res.code == 0) { //上传成功 if(attachment.type==0){ let image=['jpg','jpeg','png','gif'],office=['doc','docx','xls','xlsx','ppt','pptx']; let idsStr = boxInput.val(),idsArray = []; if (typeof idsStr !== 'undefined' && idsStr != '') { idsArray = idsStr.split(","); } idsArray.push(res.data.id); let filesize = renderSize(res.data.filesize),type=0,type_icon = 'icon-xiangmuguanli',ext = 'zip'; if(res.data.fileext == 'pdf'){ type=1; type_icon = 'icon-kejian'; ext = 'pdf'; } if (image.indexOf(res.data.fileext) !== -1) { type=1; type_icon = 'icon-sucaiguanli'; ext = 'image'; } if (office.indexOf(res.data.fileext) !== -1) { type=2; type_icon = 'icon-shenbao'; ext = 'office'; } let view_btn = ''; let temp = `
`; boxInput.val(idsArray.join(',')); box.append(temp); if (typeof (attachment.ajaxSave) === "function") { attachment.ajaxSave(idsArray.join(',')); } else{ layer.msg(res.msg); } } if(attachment.type==1){ //单文件,单记录保存 if (typeof (attachment.ajaxSave) === "function") { attachment.ajaxSave(res); } } }else{ layer.msg(res.msg); } } }); }, //单图 singleImage: function () { let me = this; let single = upload.render({ elem: "#"+me.settings.target, url: me.settings.url, accept: 'images', acceptMime:'image/*', done: function (res) { me.settings.callback(res); } }); }, //多图 multiImage: function () { let me = this; let area =[[],['640px','360px'],['928px','610px']]; $(parent.$('.express-close')).addClass('parent-colse'); this.layerindex = layer.open({ 'title':me.settings.title, 'area':area[me.settings.multi.type], 'content':me.multiRender(), end: function(){ $(parent.$('.express-close')).removeClass('parent-colse'); }, 'type':1, 'success':function(){ if(me.settings.multi.type==1){ me.uploadOne(); }else{ me.uploadMore(); } } }); }, multiRender: function (){ let me = this; let template_one = '