348 lines
11 KiB
HTML
Executable File
348 lines
11 KiB
HTML
Executable File
<style>
|
|
.daterangepicker.dropdown-menu {
|
|
margin-top: 55px;
|
|
}
|
|
|
|
.export-col {
|
|
float: left;
|
|
margin-left: 30px;
|
|
}
|
|
</style>
|
|
|
|
|
|
|
|
<style>
|
|
ul {
|
|
list-style: none;
|
|
padding-left: 0;
|
|
}
|
|
</style>
|
|
|
|
<script>
|
|
|
|
$('.show-export').on('click', function () {
|
|
$('#showExportModal').modal('show');
|
|
});
|
|
|
|
|
|
$(function () {
|
|
$('.autoBind').on('click', function () {
|
|
$('#auto_bind_modal').modal('show');
|
|
});
|
|
|
|
var pageSize = 500;
|
|
|
|
var loadData = [];
|
|
var queue;
|
|
var count;
|
|
var pageNum;
|
|
var currentPiece;
|
|
var isInit;
|
|
var lastLoaded;
|
|
var totalPiece;
|
|
var error = false;
|
|
var folderArr = [];
|
|
var zip;
|
|
var downloadPhoto = {};
|
|
|
|
$('.export_letter').on('click', function () {
|
|
varInit();
|
|
$('#myModalLabel').text('下载队列');
|
|
var query = getQueryData();
|
|
var selectIds = getSelectIds();
|
|
getLetterCount(query, selectIds);
|
|
if (totalPiece == 0) {
|
|
noData();
|
|
return false;
|
|
}
|
|
letterExport(query, selectIds);
|
|
initDownloadBar();
|
|
$('#comm-file-export-modal').modal('show').data('show', true);
|
|
showCloseBtn();
|
|
});
|
|
|
|
$('#cancel-download-queue').on('click', function () {
|
|
queue.close();
|
|
});
|
|
|
|
function getQueryData() {
|
|
var query = $('.builder .search-input').serialize();
|
|
query = query.replace(/(&|^)(\w*?\d*?\-*?_*?)*?=?((?=&)|(?=$))/g, '');
|
|
query = query.replace(/(^&)|(\+)/g, '');
|
|
return query;
|
|
}
|
|
|
|
function varInit() {
|
|
queue = null;
|
|
count = 0;
|
|
pageNum = 1;
|
|
currentPiece = 0;
|
|
lastLoaded = 0;
|
|
isInit = true;
|
|
totalPiece = 0;
|
|
loadData = [];
|
|
folderArr = [];
|
|
zip = new JSZip();
|
|
downloadPhoto = {};
|
|
}
|
|
|
|
function noData() {
|
|
showCloseBtn();
|
|
alert('暂无数据');
|
|
}
|
|
|
|
function showCloseBtn() {
|
|
$('#cancel-download-queue').removeClass('hidden');
|
|
$('#download-complete').addClass('hidden');
|
|
}
|
|
|
|
function getLetterCount(data, selectIds) {
|
|
var data = data + '&selectIds=' + selectIds;
|
|
$.ajax({
|
|
type: 'get',
|
|
async: false,
|
|
url: "{:U('admin/communication/getLetterCount')}",
|
|
data: data,
|
|
success: function (res) {
|
|
count = res;
|
|
totalPiece = Math.ceil(count / pageSize);
|
|
}
|
|
});
|
|
}
|
|
|
|
function letterExport(query, selectIds) {
|
|
var data = query + '&pageNum=' + pageNum + '&pageSize=' + pageSize + '&selectIds=' + selectIds;
|
|
$.ajax({
|
|
type: 'get',
|
|
async: false,
|
|
url: "{:U('admin/communication/letterExport')}",
|
|
data: data,
|
|
success: function (res) {
|
|
pageNum++;
|
|
if (count === 0 && pageNum == 1) {
|
|
noData();
|
|
return false;
|
|
}
|
|
currentPiece++;
|
|
getImageData(res);
|
|
queueInit();
|
|
},
|
|
fail: function () {
|
|
alert('下载失败');
|
|
}
|
|
});
|
|
}
|
|
|
|
function initDownloadBar() {
|
|
$('.progress-bar').css({
|
|
width: 0
|
|
});
|
|
$('.progrss-num').text('0%');
|
|
}
|
|
|
|
function queueInit() {
|
|
queue = new createjs.LoadQueue(true);
|
|
queue.loadManifest(loadData);
|
|
queue.on("complete", handleComplete, this);
|
|
queue.on("fileload", handleFileLoad, this);
|
|
queue.on("progress", handleProgress, this);
|
|
}
|
|
|
|
function getImageData(res) {
|
|
res.forEach(function (val) {
|
|
val.url.forEach(function (v) {
|
|
// v = '__PUBLIC__/img/index/btn-circle.png';
|
|
|
|
var loadDataItem = {
|
|
cid: val.cid,
|
|
id: val.id,
|
|
cname: val.cname,
|
|
vname: val.vname,
|
|
create_date: val.create_date,
|
|
src: v,
|
|
crossOrigin: true,
|
|
type: createjs.AbstractLoader.IMAGE
|
|
};
|
|
loadData.push(loadDataItem);
|
|
});
|
|
});
|
|
}
|
|
|
|
function handleProgress(a) {
|
|
//算法: 总模块的进度-1 + 当前模块进度的百分比
|
|
var loaded = (currentPiece - 1) / totalPiece * 100 + a.loaded * 100 / totalPiece;
|
|
loaded = parseInt(loaded);
|
|
$('.progress-bar').css({
|
|
width: loaded + '%'
|
|
});
|
|
$('.progrss-num').text(loaded + '%');
|
|
}
|
|
|
|
function handleFileLoad(e) {
|
|
appendFile2Zip(e.item);
|
|
}
|
|
|
|
function handleComplete() {
|
|
if (totalPiece > currentPiece) {
|
|
//继续下载
|
|
if ($('#comm-file-export-modal').data('show')) {
|
|
getDownloadData();
|
|
}
|
|
} else {
|
|
// //下载结束
|
|
createZip();
|
|
$('#cancel-download-queue').addClass('hidden');
|
|
$('#download-complete').removeClass('hidden');
|
|
}
|
|
}
|
|
|
|
function getPhotoOrder(fileName) {
|
|
if (typeof downloadPhoto[fileName] == 'number') {
|
|
++downloadPhoto[fileName];
|
|
} else {
|
|
downloadPhoto[fileName] = 1;
|
|
}
|
|
return downloadPhoto[fileName];
|
|
}
|
|
|
|
function appendFile2Zip(v) {
|
|
// loadData.forEach(function (v) {
|
|
var img = queue.getResult(v.id, true);
|
|
if (!img) {
|
|
error = true;
|
|
return false;
|
|
}
|
|
if (typeof v.ext != 'string') {
|
|
v.ext = '';
|
|
}
|
|
if (!v.ext) {
|
|
v.ext = 'jpg';
|
|
}
|
|
//创建文件夹
|
|
// folder = zip.folder(v.name + '_' + v.cid);
|
|
// folder.file(v.create_date + '_' + v.m[0],img, {blob: true});
|
|
var imgFileName = v.cid + '-' + v.cname + '-' + v.vname + '-' + v.create_date;
|
|
zip.file(imgFileName + '_' + getPhotoOrder(imgFileName) + '.' + v.ext.toLowerCase(), img);
|
|
// });
|
|
}
|
|
|
|
|
|
function createZip(zipName) {
|
|
if (typeof zipName != 'string') {
|
|
var zipName = 'download.zip';
|
|
}
|
|
if (zipName.lastIndexOf('zip') != zipName.length - 3) {
|
|
zipName = 'download.zip';
|
|
}
|
|
$('#myModalLabel').text('生成压缩包');
|
|
var $progressBar = $('.progress-bar'),
|
|
$progressNum = $('.progrss-num');
|
|
$progressBar.css({
|
|
transition: 'none',
|
|
width: '0%'
|
|
});
|
|
$progressNum.text('0%');
|
|
zip.generateAsync({type: "blob", streamFiles: true}, function (metadata) {
|
|
var loaded = metadata.percent.toFixed(2);
|
|
$progressBar.css({
|
|
width: loaded + '%'
|
|
});
|
|
$progressNum.text(loaded + '%');
|
|
})
|
|
.then(function (content) {
|
|
saveAs(content, zipName);
|
|
});
|
|
}
|
|
});
|
|
</script>
|
|
|
|
<script>
|
|
$('body').on('click', '.export_communication', function () {
|
|
var url = $(this).data('url');
|
|
var stream_rownum = $(this).data('streamrownum');
|
|
var filename = $(this).data('filename');
|
|
var query = $('.builder-list-box .search-input').serialize();
|
|
query = query.replace(/(&|^)(\w*?\d*?\-*?_*?)*?=?((?=&)|(?=$))/g, '');
|
|
query = query.replace(/(^&)|(\+)/g, '');
|
|
if (url.indexOf('?') > 0) {
|
|
url += '&' + query;
|
|
} else {
|
|
url += '?' + query;
|
|
}
|
|
var btn = this;
|
|
var title = $(this).text();
|
|
var opt = {
|
|
'url': url + '&ids=' + getSelectIds(),
|
|
'fileName': filename,
|
|
'before': function () {
|
|
$(btn).attr('disabled', 'true');
|
|
$(btn).text('导出中');
|
|
//$('.export_loading').show();
|
|
},
|
|
'reqType': 'POST',
|
|
'reqBody': $('#selectCol').serialize(),
|
|
'after': function () {
|
|
$(btn).removeAttr('disabled');
|
|
$(btn).text(title);
|
|
//$('.export_loading').hide();
|
|
},
|
|
'progress': function (progress) {
|
|
$(btn).text(progress);
|
|
}
|
|
}
|
|
var excel = new ExportExcel(opt);
|
|
if (parseInt(stream_rownum) > 0) {
|
|
excel.streamExport(stream_rownum);
|
|
} else {
|
|
excel.export();
|
|
}
|
|
|
|
});
|
|
$(function () {
|
|
var focusInputName;
|
|
$('.search-form input').on('focus', function () {
|
|
focusInputName = $(this).attr('name');
|
|
});
|
|
$('body').on('click','.daterangepicker .cancelBtn', function () {
|
|
$('.search-form input[name=' + focusInputName + ']').val('');
|
|
});
|
|
|
|
$('body').on('click','.daterangepicker .applyBtn', function () {
|
|
$('#search').trigger('click')
|
|
});
|
|
$('body').on('click','.daterangepicker .cancelBtn', function () {
|
|
$('#search').trigger('click')
|
|
});
|
|
|
|
});
|
|
</script>
|
|
<!-- <link rel="stylesheet" href="__PUBLIC__/libs/daterangepicker/daterangepicker-bs3.css">
|
|
<script type="text/javascript" src="__PUBLIC__/libs/daterangepicker/daterangepicker.js"></script>
|
|
<script type="text/javascript" src="__PUBLIC__/libs/daterangepicker/lang/zh-cn.js"></script>
|
|
|
|
<script type="text/javascript">
|
|
jQuery(document).ready(function ($) {
|
|
$('input[name=publish_date]').attr('readonly','readonly').daterangepicker({
|
|
format: 'YYYY/MM/DD',
|
|
applyClass : 'btn btn-primary btn-flat btn-sm',
|
|
cancelClass : 'btn btn-primary btn-flat btn-sm',
|
|
clearBtn: true,
|
|
timePicker : false,
|
|
timePicker12Hour : false,//是否使用12小时制来显示时间
|
|
timePickerIncrement : 1, //时间的增量,单位为分钟
|
|
autoUpdateInput : false,
|
|
locale: {
|
|
applyLabel: '应用',
|
|
cancelLabel: '重置',
|
|
fromLabel: '从',
|
|
toLabel: '到',
|
|
weekLabel: '周',
|
|
customRangeLabel: '自定义范围',
|
|
daysOfWeek: moment()._lang._weekdaysMin.slice(),
|
|
monthNames: moment()._lang._monthsShort.slice(),
|
|
firstDay: 0
|
|
}
|
|
});
|
|
});
|
|
</script> -->
|