caipan_shop_admin/public/static/manager/js/upload.js

247 lines
9.0 KiB
JavaScript
Raw Normal View History

2022-05-25 11:35:57 +00:00
layui.use(['jquery', 'upload'], function () {
let $ = layui.jquery;
let upload = layui.upload;
// 失去焦点刷新
$('.upload-file-value').blur(function () {
initPreviewList();
});
$('body').on('click', '.upload-choose-btn', function () {
$('.upload-choose-btn').removeClass('choose-open');
$(this).addClass('choose-open');
let type = $(this).data('type') ? $(this).data('type') : 'all';
let multiple = $(this).data('multiple') ? $(this).data('multiple') : false;
let url = $(this).data('url') ? $(this).data('url') : '/manager/attachment/file';
url += '?selected=true&type=' + type + '&multiple=' + multiple;
openLayer(url, '素材列表', '80%', '80%');
})
// 多个上传组件 多个实例
$('.upload-btn').each(function (index, item) {
let that = $(this);
let idx = 'upload-btn-' + index;
that.addClass(idx);
let url = that.data('url') ? that.data('url') : '/manager/upload/image';
let field = that.data('field') ? that.data('field') : 'image_image';
let multiple = that.data('multiple') ? that.data('multiple') : false;
let accept = that.data('accept') ? that.data('accept') : 'images'; //images图片、file所有文件、video视频、audio音频
let acceptMime = that.data('mimetype') ? that.data('mimetype') : 'images/*';
let exts = that.data('exts') ? that.data('exts') : 'jpg|png|gif|bmp|jpeg';
let maxSize = that.data('size') ? that.data('size') : 50 * 1204; //KB
let size = maxSize; //size KB
let number = that.data('number') ? that.data('number') : 0;
let param = [];
if (that.data('path') && that.data('path') !== undefined) {
param['path'] = that.data('path')
}
upload.render({
elem: '.upload-btn-' + index
, url: url
, auto: true
, field: field
, accept: accept
, acceptMime: acceptMime
, exts: exts
, size: size
, number: number
, multiple: multiple
, data: param
, before: function (obj) {
layer.load(2);
}
, done: function (res, index, upload) { //每个文件提交一次触发一次。详见“请求成功的回调”
layer.closeAll('loading'); //关闭loading
let item = this.item;
let div = item.parents('.upload-file-div');
let existsNotice = item.data('notice-exists');//已存在文件是否提示 默认不提示
let callback = item.data('callback');//上传成功执行函数
if (callback) {
eval(callback);
}
// 200=已存在文件 0=新上传成功
if (res.code === 0 || res.code === 200) {
let inputValue = '';
// 如果是多文件上传 则追加 否则 替换
if (multiple) {
inputValue = $(div).find('.upload-file-value').val();
if (inputValue.length > 0) {
inputValue += ',';
}
}
inputValue += res.data.src;
$(div).find('.upload-file-value').val(inputValue);
initPreviewList();
if (existsNotice && res.code === 200) {
layer.alert(res.msg);
}
} else {
layer.msg(res.msg);
}
}
});
})
// 图片上传 删除
$('body').on('click', '.del-preview-img', function () {
$(this).parent('li').remove();
refreshInputByUl();
})
})
// 根据预览图片列表 刷新input值
function refreshInputByUl() {
layui.use(['jquery'], function () {
let $ = layui.jquery;
$('.upload-file-div .preview-list').each(function () {
let currentLiList = '';
let liList = $(this).find('li');
let len = liList.length;
liList.each(function (index, item) {
currentLiList += $(this).find('img').data('img');
if (index !== (len - 1) || index !== 0) {
currentLiList += ',';
}
})
//去除首尾逗号
currentLiList = currentLiList.replace(/(^\,*)|(\,*$)/g, "");
$(this).parents('.upload-file-div').find('.upload-file-value').val(currentLiList);
})
})
}
// 根据input 刷新预览图片列表
function initPreviewList() {
layui.use(['jquery'], function () {
let $ = layui.jquery;
let input = $('.upload-file-value');
if (input.length > 0) {
input.each(function () {
let that = $(this);
let fileList = that.val();
let fileArr = [];
let html = '';
if (fileList) {
fileArr = fileList.split(',');
}
if (fileArr.length > 0) {
$.each(fileArr, function (index, item) {
let ext = item.split('.');
let src = getFileRequestUrl(item);
let aLink = getFileRequestUrl(item);
ext = ext[ext.length - 1];
// let prefix = src.substr(0, 4)
// if (prefix !== 'http') {
if (ext !== 'jpg' && ext !== 'jpeg' && ext !== 'png' && ext !== 'gif' && ext !== 'bmp') {
src = '/static/manager/image/file.png';
}
if (ext === 'mp4' || ext === 'ogv' || ext === 'webm') {
src = '/static/manager/image/video.png';
}
// }
html += `<li class="layui-col-xs12 layui-col-md2 preview-li">
<a href="${aLink}" target="_blank" class="preview-li-img">
<img src="${src}" data-img="${item}">
</a>
<a href="javascript:;" class="layui-btn layui-btn-xs layui-btn-danger del-preview-img">
<i class="fa fa-trash-o"></i>
</a>
</li>`;
})
}
that.parents('.upload-file-div').find('.preview-list').html(html);
})
}
})
}
initPreviewList();
/**
* 动态加载元素触发绑定上传事件
* @param eid 必须为控件ID
*/
function renderUpload(eid) {
layui.use(['jquery', 'upload'], function () {
let $ = layui.jquery, upload = layui.upload;
let url = '/manager/upload/image';
let field = 'image_image';
let multiple = false;
let accept = 'images';
let acceptMime = 'images/*';
let exts = 'jpg|png|gif|bmp|jpeg';
let size = 10 * 1024; //size KB
let that = $(eid);
if (that.data('url')) {
url = that.data('url');
}
if (that.data('field')) {
field = that.data('field');
}
if (that.data('multiple')) {
multiple = that.data('multiple');
}
if (that.data('accept')) {
accept = that.data('accept');
}
if (that.data('mimetype')) {
acceptMime = that.data('mimetype');
}
if (that.data('exts')) {
exts = that.data('exts');
}
if (that.data('number')) {
number = that.data('number');
}
upload.render({
elem: eid
, url: url
, auto: true
, field: field
, accept: accept
, acceptMime: acceptMime
, exts: exts
, size: size
, number: 0
, multiple: multiple
, before: function (obj) {
layer.load(2);
}
, done: function (res, index, upload) {
layer.closeAll('loading');
let item = this.item;
let div = item.parents('.upload-file-div');
if (res.code === 0) {
let inputValue = '';
// 如果是多文件上传 则追加 否则 替换
if (multiple) {
inputValue = $(div).find('.upload-file-value').val();
if (inputValue.length > 0) {
inputValue += ',';
}
}
inputValue += res.data.src;
$(div).find('.upload-file-value').val(inputValue);
initPreviewList();
} else {
layer.msg(res.msg);
}
}
});
});
}