projectx/assets/js/upload.js
2025-06-16 16:17:18 +08:00

223 lines
8.5 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

layui.use(['form', 'jquery'], function () {
let form = layui.form;
let $ = layui.jquery;
let layer = layui.layer;
let upload = layui.upload;
let element = layui.element;
let util = layui.util;
var suffix = '_logo';
var imgPath = $('#upload_img_input_logo').val();
setImgInfo(imgPath);
preview();
removeImg();
uploadFn();
bindRemove();
// 设置图片信息
function setImgInfo(url) {
if (url === '/statics/admin/images/avatar.jpg') {
$('#upload_img_preview' + suffix).attr('src', url);
} else {
$('#upload_img_preview' + suffix).attr('src', url);
}
if (url === '') {
$('#upload_img_preview' + suffix).hide();
} else {
$('#upload_img_preview' + suffix).show();
}
$('#upload_img_input_logo').val(url);
}
// 删除
function removeImg() {
$('#upload_img_remove' + suffix).unbind('click').click(function () {
$('#upload_img_preview' + suffix).attr({ src: '', alt: '暂无图片' });
$('#upload_img_input_logo').val('');
});
}
// 图片预览
function preview() {
$('#upload_img_preview' + suffix).unbind('click').click(function () {
var url = $(this).attr('src')
if (!url) { return false; }
layer.photos({
photos: {
"title": url,
"start": 0,
"data": [
{
"alt": "",
"pid": 5,
"src": url,
}
]
},
footer: false
});
});
}
// 设置文件集
function setFiles(data) {
var html = '';
var val = '';
for (var i = 0; i < data.length; i++) {
var item = data[i];
var d = item.name + `|` + item.path;
var li = `<div class="upload-line">
<span class="op">
<a href="javascript:;" data-path=` + d + ` class="layui-btn layui-btn-danger layui-btn-xs remove_file">删除</a>
<a href="`+ item.path + `" target="_blank" style="margin-left: 2px;" class="layui-btn layui-btn-xs">下载</a>
</span>
<span class="name"><label>名称: </label>`+ item.name + `</span>
<span class="url"><label>URL: </label>`+ item.path + `</span>
</div>`;
html += li;
val += d + ",";
}
$('#mutil_upload_res_list').append(html);
var $doc = $('input[name="Paths"]');
if ($doc.val() != '') {
val = $doc.val() + val;
}
$('#post_field').html(`<input type="hidden" name="Paths" value="` + val + `">`);
bindRemove();
}
function bindRemove() {
$('.remove_file').unbind('click').click(function () {
var path = $(this).data('path');
var $doc = $('input[name="Paths"]');
let paths = $doc.val();
$doc.val(paths.replace(path, ""));
$(this).parent().parent().remove();
});
}
// 上传
function uploadFn() {
var uploadInst = upload.render({
elem: '#upload_img_btn' + suffix,
url: '/upload/img',
headers: { 'X-CSRF-Token': $('#csrf_token').val() },
field: 'files',
accept: 'file', //允许上传的文件类型
before: function (obj) {
// 预读本地文件示例不支持ie8
obj.preview(function (index, file, result) {
$('#upload_img_preview' + suffix).attr('src', result); // 图片链接base64
});
element.progress('upload_img_progress' + suffix, '0%'); // 进度条复位
layer.msg('上传中', { icon: 16, time: 0 });
},
done: function (res) {
// 若上传失败
if (!res.success) {
return layer.msg('上传失败:' + res.errorMsg);
}
// 上传成功的一些操作
// …
$('#upload_img_tips' + suffix).html(''); // 置空上传失败的状态
setImgInfo(res.data);
removeImg();
},
error: function () {
// 失败状态,并实现重传
var $tips = $('#upload_img_tips' + suffix);
$tips.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload">重试</a>');
$tips.find('.demo-reload').on('click', function () {
uploadInst.upload();
});
},
// 进度条
progress: function (n, elem, e) {
element.progress('upload_img_progress' + suffix, n + '%'); // 可配合 layui 进度条元素使用
if (n == 100) {
layer.msg('上传完毕', { icon: 1 });
}
}
});
var uploadFiles = upload.render({
elem: '#upload_img_btn_file',
url: '/upload/file',
headers: { 'X-CSRF-Token': $('#csrf_token').val() },
field: 'files',
accept: 'file', //允许上传的文件类型
before: function (obj) {
element.progress('upload_img_progress' + suffix, '0%'); // 进度条复位
layer.msg('上传中', { icon: 16, time: 0 });
},
done: function (res) {
// 若上传失败
if (!res.success) {
return layer.msg('上传失败:' + res.errorMsg);
}
// 上传成功的一些操作
// …
$('#upload_img_tips' + suffix).html(''); // 置空上传失败的状态
setImgInfo(res.data);
removeImg();
},
error: function () {
// 失败状态,并实现重传
var $tips = $('#upload_img_tips' + suffix);
$tips.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload">重试</a>');
$tips.find('.demo-reload').on('click', function () {
uploadFiles.upload();
});
},
// 进度条
progress: function (n, elem, e) {
element.progress('upload_img_progress' + suffix, n + '%'); // 可配合 layui 进度条元素使用
if (n == 100) {
layer.msg('上传完毕', { icon: 1 });
}
}
});
var uploadMutilFiles = upload.render({
elem: '#upload_multi_btn',
url: '/upload/mutilfile',
headers: { 'X-CSRF-Token': $('#csrf_token').val() },
field: 'files',
multiple: true,
unified: true,
accept: 'file', //允许上传的文件类型
before: function (obj) {
element.progress('upload_mutil_progress' + suffix, '0%'); // 进度条复位
layer.msg('上传中', { icon: 16, time: 0 });
},
done: function (res) {
// 若上传失败
if (!res.success) {
return layer.msg('上传失败:' + res.errorMsg);
}
// 上传成功的一些操作
$('#upload_mutil_tips' + suffix).html(''); // 置空上传失败的状态
// 设置文件集
setFiles(res.data);
},
error: function () {
// 失败状态,并实现重传
var $tips = $('#upload_mutil_tips' + suffix);
$tips.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload">重试</a>');
$tips.find('.demo-reload').on('click', function () {
uploadMutilFiles.upload();
});
},
// 进度条
progress: function (n, elem, e) {
element.progress('upload_mutil_progress' + suffix, n + '%'); // 可配合 layui 进度条元素使用
if (n == 100) {
layer.msg('上传完毕', { icon: 1 });
}
}
});
}
});