375 lines
17 KiB
JavaScript
375 lines
17 KiB
JavaScript
/*
|
||
* 版 本 PIT-ADMS V7.0.3 敏捷开发框架
|
||
* Copyright (c) 2013-2018 Hexagon PPM
|
||
* 创建人:研发部
|
||
* 日 期:2017.03.22
|
||
* 描 述:附件上传管理
|
||
*/
|
||
var keyVaule = request('keyVaule');
|
||
var extensions = request('extensions');
|
||
var filePath = request('filePath');
|
||
var multiple = request("multiple");
|
||
var format = request("format");
|
||
var upload = 0;
|
||
var templateFile = request("templateFile");
|
||
|
||
var bootstrap = function ($, learun) {
|
||
"use strict";
|
||
if (format != undefined && format != ".*" && format != "") {
|
||
var $item = $('.lr-form-layout-header');
|
||
if (!!templateFile) {
|
||
$item.append('<div style="width: 350px;top: -30px;right: -100px;position: relative;display: inline-block;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;text-overflow: ellipsis;overflow: hidden;word-break: break-all;"title=' + format + '>支持格式:"' + format + '" <font color="red">   模板文件</font>:<a style="color:blue" target="_blank" href="/Template/' + templateFile+'">' + templateFile+'</a></div>');
|
||
|
||
} else {
|
||
$item.append('<div style="width: 350px;top: -30px;right: -100px;position: relative;display: inline-block;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;text-overflow: ellipsis;overflow: hidden;word-break: break-all;"title=' + format + '>支持格式:"' + format + '"</div>');
|
||
}
|
||
}
|
||
$.lrSetForm(top.$.rootUrl + '/LR_SystemModule/Annexes/GetAnnexesFileList?folderId=' + keyVaule, function (data) {
|
||
for (var i = 0, l = data.length; i < l; i++) {
|
||
$('#lr_form_file_queue .lr-form-file-queue-bg').hide();
|
||
var item = data[i];
|
||
fileInfo[item.F_Id] = {
|
||
fileGuid: item.F_Id,
|
||
chunks: 1
|
||
}
|
||
var $item = $('<div class="lr-form-file-queue-item" id="lr_filequeue_' + item.F_Id + '" ></div>');
|
||
$item.append('<div class="lr-file-image"><img id="image" src="' + top.$.rootUrl + '/Content/images/filetype/' + item.F_FileType + '.png" alt="" onerror="javascript:this.src=\'/Content/images/filetype/Scheme.png\'" ></div>');
|
||
|
||
$item.append('<span class="lr-file-name">' + item.F_FileName + '(' + learun.countFileSize(item.F_FileSize) + ')</span>');
|
||
//$item.append('<div class="lr-msg"><i class="fa fa-check-circle"></i></div>');
|
||
if (ConstantZSJT.PREVIEWPICTURE.indexOf(item.F_FileType) > -1) {
|
||
$item.append('<div class="lr-tool-bar" id="' + item.F_Id + '"><i class="fa fa-cloud-download" title="下载" data-value="' + item.F_Id + '" ></i><i class="fa fa-times-circle" title="删除" data-value="' + item.F_Id + '" ></i></div>')
|
||
} else {
|
||
if (item.F_FileType != 'xlsx' && item.F_FileType != 'xls' && item.F_FileType != 'docx' && item.F_FileType != 'doc' && item.F_FileType != 'ppt' && item.F_FileType != 'bmp' && item.F_FileType != 'txt' && item.F_FileType != 'csv' && item.F_FileType != 'pdf' && item.F_FileType != 'pptx' && item.F_FileType != 'ppt') {
|
||
$item.append('<div class="lr-tool-bar"><i class="fa fa-cloud-download" title="下载" data-value="' + item.F_Id + '" ></i><i class="fa fa-times-circle" title="删除" data-value="' + item.F_Id + '" ></i></div>');
|
||
} else {
|
||
$item.append('<div class="lr-tool-bar"><i class="fa fa-cloud-download" title="下载" data-value="' + item.F_Id + '" ></i><i class="fa fa-times-circle" title="删除" data-value="' + item.F_Id + '" ></i></div>');
|
||
}
|
||
}
|
||
$item.find('.lr-tool-bar .fa-eye').on('click', function () {
|
||
var fileId = $(this).attr('data-value');
|
||
var fileType = $(this).attr('F_FileType');
|
||
if (ConstantZSJT.PREVIEWPICTURE.indexOf(fileType) <= -1) {
|
||
openViewForm(fileId, fileType);
|
||
}
|
||
});
|
||
|
||
$item.find('.lr-tool-bar img').on('click', function () {
|
||
var fileId = $(this).attr('data-value');
|
||
var fileType = $(this).attr('F_FileType');
|
||
if (ConstantZSJT.PREVIEWPICTURE.indexOf(fileType) > -1) {
|
||
ImagePreview.init({ id: fileId, url: 'data-original' });
|
||
}
|
||
});
|
||
|
||
|
||
$item.find('.lr-tool-bar .fa-times-circle').on('click', function () {
|
||
var fileId = $(this).attr('data-value');
|
||
DeleteFile(fileId);
|
||
});
|
||
|
||
$item.find('.lr-tool-bar .fa-cloud-download').on('click', function () {
|
||
var fileId = $(this).attr('data-value');
|
||
DownFile(fileId);
|
||
});
|
||
|
||
$('#lr_form_file_queue_list').append($item);
|
||
if (ConstantZSJT.PREVIEWPICTURE.indexOf(item.F_FileType) > -1) {
|
||
ImagePreview.init({ id: item.F_Id, url: 'data-original' });
|
||
}
|
||
}
|
||
});
|
||
var openViewForm = function (fileId, fileType) {
|
||
switch (fileType) {
|
||
//case 'jpg':
|
||
//case 'gif':
|
||
//case 'png':
|
||
//case 'jpeg':
|
||
//learun.layerForm({
|
||
// id: 'PictureView',
|
||
// title: '图片预览',
|
||
// url: top.$.rootUrl + '/LR_SystemModule/Annexes/PictureView?fileId=' + fileId,
|
||
// width: 1080,
|
||
// height: 850,
|
||
// maxmin: true,
|
||
// btn: null
|
||
//})
|
||
// break
|
||
case 'xlsx':
|
||
case 'xls':
|
||
case 'docx':
|
||
case 'doc':
|
||
case 'ppt':
|
||
case 'bmp':
|
||
case 'txt':
|
||
case 'csv':
|
||
case 'pdf':
|
||
learun.layerForm({
|
||
id: 'PreviewForm',
|
||
title: '文件预览',
|
||
url: top.$.rootUrl + '/LR_SystemModule/Annexes/PreviewFile?fileId=' + fileId,
|
||
width: 1080,
|
||
height: 850,
|
||
maxmin: true,
|
||
btn: null
|
||
})
|
||
break
|
||
case 'pptx':
|
||
learun.layerForm({
|
||
id: 'PreviewForm',
|
||
title: '文件预览',
|
||
url: top.$.rootUrl + '/LR_SystemModule/Annexes/PreviewFile?fileId=' + fileId,
|
||
width: 1080,
|
||
height: 850,
|
||
maxmin: true,
|
||
btn: null
|
||
})
|
||
break
|
||
case 'ppt':
|
||
learun.layerForm({
|
||
id: 'PreviewForm',
|
||
title: '文件预览',
|
||
url: top.$.rootUrl + '/LR_SystemModule/Annexes/PreviewFile?fileId=' + fileId,
|
||
width: 1080,
|
||
height: 850,
|
||
maxmin: true,
|
||
btn: null
|
||
})
|
||
break
|
||
default:
|
||
learun.download({ url: top.$.rootUrl + '/LR_SystemModule/Annexes/DownAnnexesFile', param: { fileId: fileId, __RequestVerificationToken: $.lrToken }, method: 'POST' })
|
||
break
|
||
}
|
||
|
||
}
|
||
document.getElementById('lr_add_file_btn').addEventListener('click', function (event) {
|
||
if (!JSON.parse(multiple)) {
|
||
|
||
if (window.countWebuploaderElement <= 0) {
|
||
var len = $(".lr-form-file-queue-item").length
|
||
if (len > 0) {
|
||
learun.alert.error('只能上传一个附件,请先删除已有的附件');
|
||
event.preventDefault()
|
||
}
|
||
}
|
||
window.countWebuploaderElement++;
|
||
}
|
||
}, false)
|
||
|
||
$("#lr_cancel_file_btn").click(function () {
|
||
learun.layerClose(window.name);
|
||
})
|
||
|
||
var fileInfo = {};
|
||
|
||
// 触发合并文件碎片
|
||
var mergeFileChunks = function (file) {
|
||
var param = {};
|
||
|
||
param['__RequestVerificationToken'] = $.lrToken;
|
||
param['folderId'] = keyVaule;
|
||
param['fileGuid'] = fileInfo[file.id].fileGuid;
|
||
param['fileName'] = fileInfo[file.id].name;
|
||
param['chunks'] = fileInfo[file.id].chunks;
|
||
param['filePath'] = filePath;
|
||
learun.httpAsyncPost(top.$.rootUrl + "/LR_SystemModule/Annexes/MergeAnnexesFile", param, function (res) {
|
||
var $fileItem = $('#lr_form_file_queue_list').find('#lr_filequeue_' + file.id);
|
||
$fileItem.find('.lr-uploader-progress').remove();
|
||
if (res.code == learun.httpCode.success) {
|
||
learun.loading(false);
|
||
// 文件保存成功后
|
||
//$fileItem.append('<div class="lr-msg"><i class="fa fa-check-circle"></i></div>');
|
||
$fileItem.append('<div class="lr-tool-bar"><i class="fa fa-times-circle" title="删除" data-value="' + file.id + '" ></i></div>');
|
||
$fileItem.find('.lr-tool-bar .fa-times-circle').on('click', function () {
|
||
var fileId = $(this).attr('data-value');
|
||
DeleteFile(fileId);
|
||
});
|
||
}
|
||
else {
|
||
learun.loading(false);
|
||
//$fileItem.append('<div class="lr-msg"><i class="fa fa-exclamation-circle"></i></div>');
|
||
}
|
||
});
|
||
}
|
||
// 触发清楚文件碎片
|
||
var reomveFileChunks = function (file) {
|
||
var param = {};
|
||
param['__RequestVerificationToken'] = $.lrToken;
|
||
param['fileGuid'] = fileInfo[file.id].fileGuid;
|
||
param['chunks'] = fileInfo[file.id].chunks;
|
||
param['filePath'] = filePath;
|
||
learun.httpAsyncPost(top.$.rootUrl + "/LR_SystemModule/Annexes/MergeAnnexesFile", param, function (res) { learun.loading(false); });
|
||
var $fileItem = $('#lr_form_file_queue_list').find('#lr_filequeue_' + file.id);
|
||
$fileItem.find('.lr-uploader-progress').remove();
|
||
$fileItem.append('<div class="lr-msg"><i class="fa fa-exclamation-circle"></i></div>');
|
||
}
|
||
// 删除文件
|
||
var DeleteFile = function (fileId) {
|
||
learun.layerConfirm('是否确认删除该项!', function (res) {
|
||
if (res) {
|
||
var param = {};
|
||
param['__RequestVerificationToken'] = $.lrToken;
|
||
param['fileId'] = fileInfo[fileId].fileGuid;
|
||
learun.httpAsyncPost(top.$.rootUrl + "/LR_SystemModule/Annexes/DeleteAnnexesFile", param, function (res) { });
|
||
var file = page.uploader.getFile(fileId);
|
||
if (!!file) {
|
||
page.uploader.removeFile(file);
|
||
}
|
||
delete fileInfo[fileId];
|
||
var $fileItem = $('#lr_form_file_queue_list').find('#lr_filequeue_' + fileId);
|
||
$fileItem.remove();
|
||
if ($('#lr_form_file_queue_list>div').length == 0) {
|
||
$('#lr_form_file_queue .lr-form-file-queue-bg').show();
|
||
}
|
||
console.log(fileInfo)
|
||
} else {
|
||
return;
|
||
}
|
||
});
|
||
|
||
}
|
||
// 下载文件
|
||
var DownFile = function (fileId) {
|
||
learun.download({ url: top.$.rootUrl + '/LR_SystemModule/Annexes/DownAnnexesFile', param: { fileId: fileId, __RequestVerificationToken: $.lrToken }, method: 'POST' });
|
||
}
|
||
|
||
var page = {
|
||
uploader: null,
|
||
init: function () {
|
||
if (!WebUploader.Uploader.support()) {
|
||
alert('Web Uploader 不支持您的浏览器!如果你使用的是IE浏览器,请尝试升级 flash 播放器');
|
||
throw new Error('WebUploader does not support the browser you are using.');
|
||
}
|
||
|
||
if (!format) {
|
||
format = "gif,jpeg,jpg,png,psd,rar,zip,pdf,doc,docx,ppt,pptx,txt,xls,xlsx"
|
||
}
|
||
|
||
if (!JSON.parse(multiple)) {
|
||
var fileNumLimit = 1;
|
||
} else {
|
||
var fileNumLimit = 10;
|
||
}
|
||
|
||
page.uploader = WebUploader.create({
|
||
auto: true,
|
||
swf: top.$.rootUrl + '/Content/webuploader/Uploader.swf',
|
||
// 文件接收服务端。
|
||
server: top.$.rootUrl + "/LR_SystemModule/Annexes/UploadAnnexesFileChunk",
|
||
// 选择文件的按钮。可选。
|
||
// 内部根据当前运行是创建,可能是input元素,也可能是flash.
|
||
pick: {
|
||
id: '#lr_add_file_btn',
|
||
multiple: JSON.parse(multiple)
|
||
},
|
||
dnd: '#lr_form_file_queue',
|
||
paste: 'document.body',
|
||
disableGlobalDnd: true,
|
||
//accept: {
|
||
// extensions: extensions || "gif,jpeg,jpg,png,psd,rar,zip,pdf,doc,docx,ppt,pptx,txt,xls,xlsx"
|
||
//},
|
||
accept: {
|
||
extensions: format
|
||
},
|
||
multiple: JSON.parse(multiple),
|
||
// 不压缩image, 默认如果是jpeg,文件上传前会压缩一把再上传!
|
||
resize: false,
|
||
fileNumLimit: fileNumLimit,
|
||
// 文件分片上传
|
||
chunked: true,
|
||
chunkRetry: 3,
|
||
prepareNextFile: true,
|
||
chunkSize: '1048576',
|
||
//单个文件大小限制
|
||
fileSingleSizeLimit: 524288000,
|
||
// 上传参数
|
||
formData: {
|
||
__RequestVerificationToken: $.lrToken
|
||
}
|
||
});
|
||
page.uploader.on('fileQueued', page.fileQueued);
|
||
page.uploader.on('uploadStart', page.uploadStart);
|
||
page.uploader.on('uploadBeforeSend', page.uploadBeforeSend);
|
||
page.uploader.on('uploadProgress', page.uploadProgress);
|
||
page.uploader.on('uploadSuccess', page.uploadSuccess);
|
||
page.uploader.on('uploadError', page.uploadError);
|
||
page.uploader.on('uploadComplete', page.uploadComplete);
|
||
page.uploader.on('error', page.error, page.fileQueued);
|
||
|
||
$('#lr_form_file_queue').lrscroll();
|
||
|
||
},
|
||
fileQueued: function (file) {// 文件加载到队列
|
||
if (!JSON.parse(multiple)) {
|
||
var len = $(".lr-form-file-queue-item").length
|
||
if (len > 0) {
|
||
learun.alert.error('只能上传一个附件,请先删除已有的附件');
|
||
event.preventDefault()
|
||
return false;
|
||
}
|
||
}
|
||
fileInfo[file.id] = { name: file.name };
|
||
$('#lr_form_file_queue .lr-form-file-queue-bg').hide();
|
||
// 添加一条文件记录
|
||
var $item = $('<div class="lr-form-file-queue-item" id="lr_filequeue_' + file.id + '" ></div>');
|
||
$item.append('<div class="lr-file-image"><img src="' + top.$.rootUrl + '/Content/images/filetype/' + file.ext + '.png" alt="" onerror="javascript:this.src=\'/Content/images/filetype/Scheme.png\'"></div>');
|
||
$item.append('<span class="lr-file-name">' + file.name + '(' + learun.countFileSize(file.size) + ')</span>');
|
||
$('#lr_form_file_queue_list').append($item);
|
||
|
||
},
|
||
uploadStart: function (file) {
|
||
var $fileItem = $('#lr_form_file_queue_list').find('#lr_filequeue_' + file.id);
|
||
$fileItem.append('<div class="lr-uploader-progress"><div class="lr-uploader-progress-bar" style="width:0%;"></div></div>');
|
||
},
|
||
uploadBeforeSend: function (object, data, headers) {
|
||
data.chunk = data.chunk || 0;
|
||
data.chunks = data.chunks || 1;
|
||
fileInfo[data.id].fileGuid = fileInfo[data.id].fileGuid || WebUploader.Base.guid();
|
||
data.fileGuid = fileInfo[data.id].fileGuid;
|
||
fileInfo[data.id].chunks = data.chunks;
|
||
},
|
||
uploadProgress: function (file, percentage) {
|
||
// learun.loading(true, "文件上传中...");
|
||
upload = 1;
|
||
$(".layui-layer-btn0").css('background-color', '#87CEFA')
|
||
var $fileItem = $('#lr_form_file_queue_list').find('#lr_filequeue_' + file.id);
|
||
$fileItem.find('.lr-uploader-progress-bar').css('width', (percentage * 100 + '%'));
|
||
},
|
||
uploadSuccess: function (file, res) {
|
||
upload = 0;
|
||
$(".layui-layer-btn .layui-layer-btn0").css('background-color', '#2e8ded')
|
||
if (res.code == 200) {// 上传成功
|
||
mergeFileChunks(file);
|
||
|
||
}
|
||
else {// 上传失败
|
||
console.log(res);
|
||
reomveFileChunks(file);
|
||
}
|
||
},
|
||
uploadError: function (file, code) {
|
||
console.log("上传失败");
|
||
reomveFileChunks(file);
|
||
},
|
||
uploadComplete: function (file) {
|
||
},
|
||
error: function (type, file) {
|
||
if (file.size == 0) {
|
||
learun.alert.error('不允许上传空文件');
|
||
return;
|
||
}
|
||
switch (type) {
|
||
case 'Q_TYPE_DENIED':
|
||
learun.alert.error('当前文件类型不允许上传');
|
||
break;
|
||
case 'Q_EXCEED_NUM_LIMIT':
|
||
learun.alert.error('只能上传一个附件,请先删除已有的附件');
|
||
break;
|
||
case 'F_EXCEED_SIZE':
|
||
learun.alert.error('只能上传最大为500M的附件');
|
||
};
|
||
}
|
||
};
|
||
page.init();
|
||
}
|