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

247 lines
9.0 KiB
JavaScript
Executable File
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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);
}
}
});
});
}