ctms/ctms-admin/web/js/webuploader-images.min.js
2025-04-10 23:19:13 +08:00

281 lines
9.5 KiB
JavaScript
Executable File
Raw Permalink 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.

jQuery(function() {
function e(e) {
var a = o('<li id="' + e.id + '"><p class="title">' + e.name + '</p><p class="imgWrap"></p><p class="progress"><span></span></p></li>'),
s = o('<div class="file-panel"><span class="cancel">删除</span><span class="rotateRight">向右旋转</span><span class="rotateLeft">向左旋转</span></div>').appendTo(a),
i = a.find("p.progress span"),
t = a.find("p.imgWrap"),
r = o('<p class="error"></p>'),
d = function(e) {
switch (e) {
case "exceed_size":
text = "文件大小超出限制";
break;
case "interrupt":
text = "上传暂停";
break;
default:
text = "上传失败,请重试"
}
r.text(text).appendTo(a)
};
"invalid" === e.getStatus() ? d(e.statusText) : (t.text("预览中"), n.makeThumb(e,
function(e, a) {
if (e) return void t.text("不能预览");
var s = o('<img src="' + a + '">');
t.empty().append(s)
},
v, b), w[e.id] = [e.size, 0], e.rotation = 0),
e.on("statuschange",
function(t, n) {
"progress" === n ? i.hide().width(0) : "queued" === n && (a.off("mouseenter mouseleave"), s.remove()),
"error" === t || "invalid" === t ? (console.log(e.statusText), d(e.statusText), w[e.id][1] = 1) : "interrupt" === t ? d("interrupt") : "queued" === t ? w[e.id][1] = 0 : "progress" === t ? (r.remove(), i.css("display", "block")) : "complete" === t && a.append('<span class="success"></span>'),
a.removeClass("state-" + n).addClass("state-" + t)
}),
a.on("mouseenter",
function() {
s.stop().animate({
height: 30
})
}),
a.on("mouseleave",
function() {
s.stop().animate({
height: 0
})
}),
s.on("click", "span",
function() {
var a, s = o(this).index();
switch (s) {
case 0:
return void n.removeFile(e);
case 1:
e.rotation += 90;
break;
case 2:
e.rotation -= 90
}
x ? (a = "rotate(" + e.rotation + "deg)", t.css({
"-webkit-transform": a,
"-mos-transform": a,
"-o-transform": a,
transform: a
})) : t.css("filter", "progid:DXImageTransform.Microsoft.BasicImage(rotation=" + ~~ (e.rotation / 90 % 4 + 4) % 4 + ")")
}),
a.appendTo(l)
}
function a(e) {
var a = o("#" + e.id);
delete w[e.id],
s(),
a.off().find(".file-panel").off().end().remove()
}
function s() {
var e, a = 0,
s = 0,
t = f.children();
o.each(w,
function(e, i) {
s += i[0],
a += i[0] * i[1]
}),
e = s ? a / s: 0,
t.eq(0).text(Math.round(100 * e) + "%"),
t.eq(1).css("width", Math.round(100 * e) + "%"),
i()
}
function i() {
var e, a = "";
"ready" === k ? a = "选中" + m + "张图片,共" + WebUploader.formatSize(h) + "。": "confirm" === k ? (e = n.getStats(), e.uploadFailNum && (a = "已成功上传" + e.successNum + "张照片," + e.uploadFailNum + '张照片上传失败,<a class="retry" href="#">重新上传</a>失败图片或<a class="ignore" href="#">忽略</a>')) : (e = n.getStats(), a = "共" + m + "张(" + WebUploader.formatSize(h) + "),已上传" + e.successNum + "张", e.uploadFailNum && (a += ",失败" + e.uploadFailNum + "张")),
p.html(a)
}
function t(e) {
var a;
if (e !== k) {
switch (c.removeClass("state-" + k), c.addClass("state-" + e), k = e) {
case "pedding":
u.removeClass("element-invisible"),
l.parent().removeClass("filled"),
l.hide(),
d.addClass("element-invisible"),
n.refresh();
break;
case "ready":
u.addClass("element-invisible"),
o("#filePicker2").removeClass("element-invisible"),
l.parent().addClass("filled"),
l.show(),
d.removeClass("element-invisible"),
n.refresh();
break;
case "uploading":
o("#filePicker2").addClass("element-invisible"),
f.show(),
c.text("暂停上传");
break;
case "paused":
f.show(),
c.text("继续上传");
break;
case "confirm":
//处理上传完成事件
if (f.hide(), c.text("开始上传").addClass("disabled"), a = n.getStats(), a.successNum && !a.uploadFailNum) return void t("finish");
break;
case "finish":
//上传完成后执行
a = n.getStats(),
a.successNum ? alert("上传成功") : (k = "done", location.reload());
o("#filePicker2").removeClass("element-invisible");
c.text("再次上传").removeClass("disabled");
n.refresh();
break;
}
i()
}
}
function fpost(data,url){
//异步提交文件上传成功后获取的JSON字符串解析传到指定的网址以便进行下一步的处理
jQuery.post(url,data,function(res){
console.log(res);
res = $.parseJSON(res);
$('#callback').val(res.path);
});
}
var n, o = jQuery,
r = o("#uploader"),
l = o('<ul class="filelist"></ul>').appendTo(r.find(".queueList")),
d = r.find(".statusBar"),
p = d.find(".info"),
c = r.find(".uploadBtn"),
u = r.find(".placeholder"),
f = d.find(".progress").hide(),
m = 0,
h = 0,
g = window.devicePixelRatio || 1,
v = 110 * g,
b = 110 * g,
k = "pedding",
w = {},
x = function() {
var e = document.createElement("p").style,
a = "transition" in e || "WebkitTransition" in e || "MozTransition" in e || "msTransition" in e || "OTransition" in e;
return e = null,
a
} ();
if (!WebUploader.Uploader.support()) throw alert("Web Uploader 不支持您的浏览器如果你使用的是IE浏览器请尝试升级 flash 播放器"),
new Error("WebUploader does not support the browser you are using.");
//初始化上传组件
n = WebUploader.create({
pick: {
id: "#filePicker",
innerHTML: UPLOAD_BUTTON_LABEL
},
dnd: "#uploader .queueList",
paste: document.body,
accept: {
title: UPLOAD_ACCEPT_TITLE,
extensions: UPLOAD_ACCEPT_EXTENSIONS,
mimeTypes: UPLOAD_ACCEPT_FILETYPE
},
swf: UPLOAD_BASE_URL + "/Uploader.swf",
disableGlobalDnd: !0,
chunked: true, //开启分片上传
duplicate: true, //去重
server: UPLOAD_SERVER_URL,
fileNumLimit: UPLOAD_MAX_NUM,
fileSizeLimit: UPLOAD_TOTAL_SIZE,
fileSingleSizeLimit: UPLOAD_MAX_SIZE //单张图大小限制
}),
n.addButton({
id: "#filePicker2",
label: "继续添加"
}),
n.onUploadProgress = function(e, a) {
var i = o("#" + e.id),
t = i.find(".progress span");
t.css("width", 100 * a + "%"),
w[e.id][1] = a,
s()
},
n.onFileQueued = function(a) {
m++,
h += a.size,
1 === m && (u.addClass("element-invisible"), d.show()),
e(a),
t("ready"),
s()
},
n.onFileDequeued = function(e) {
m--,
h -= e.size,
m || t("pedding"),
a(e),
s()
},
n.on("all",
function(e) {
switch (e) {
case "uploadFinished":
t("confirm");
break;
case "startUpload":
t("uploading");
break;
case "stopUpload":
t("paused");
break;
}
}),
n.onError = function(e) {
alert("Error: " + e)
},
n.on("uploadSuccess",
function($file,$res){
//$file,当前上传的文件信息
console.log($file);
//$res,服务器返回的信息(服务端返回了文件路径跟链接等信息)
console.log($res);
$res = $res._raw;
console.log($res);
$res = $res + '}';
console.log($res);
$res = $.parseJSON($res); //由JSON字符串转换为JSON对象
console.log($res);
var res = $res.result;
console.log(res);
$('#callback-title').html(res.name);
if(UPLOAD_JSON_POST_URL){
res.size = $file.size;
res.type = $file.type;
res.lasttime = $file.lastModifiedDate;
res.ext = $file.ext;
res.params = $file._info;
fpost(res,UPLOAD_JSON_POST_URL);
}
}
),
c.on("click",
function() {
return o(this).hasClass("disabled") ? !1 : void("ready" === k ? n.upload() : "paused" === k ? n.upload() : "uploading" === k && n.stop())
}),
p.on("click", ".retry",
function() {
n.retry()
}),
p.on("click", ".ignore",
function(e) {
alert("好的");
console.log('取消了已经上传失败的文件');
}),
c.addClass("state-" + k),
s()
});