/* * 版 本 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('
支持格式:"' + format + '"    模板文件:' + templateFile+'
'); } else { $item.append('
支持格式:"' + format + '"
'); } } $.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 = $('
'); $item.append('
'); $item.append('' + item.F_FileName + '(' + learun.countFileSize(item.F_FileSize) + ')'); //$item.append('
'); if (ConstantZSJT.PREVIEWPICTURE.indexOf(item.F_FileType) > -1) { $item.append('
') } 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('
'); } else { $item.append('
'); } } $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('
'); $fileItem.append('
'); $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('
'); } }); } // 触发清楚文件碎片 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('
'); } // 删除文件 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 = $('
'); $item.append('
'); $item.append('' + file.name + '(' + learun.countFileSize(file.size) + ')'); $('#lr_form_file_queue_list').append($item); }, uploadStart: function (file) { var $fileItem = $('#lr_form_file_queue_list').find('#lr_filequeue_' + file.id); $fileItem.append('
'); }, 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(); }