Files
DzzOffice/dzz/system/scripts/mobile/file_keep.js

319 lines
13 KiB
JavaScript
Raw Normal View History

2022-11-02 23:21:46 +08:00
var _filemanage = {};
_filemanage = function (json) {
_filemanage.formhash = json.formhash || ''; //FORMHASH
_filemanage.type = json.type || 0;//文件选择类型0为选择文件,1为保存文件,2为选择位置
_filemanage.mulitype = json.mulitype || 0;//是否允许多选,默认不允许
_filemanage.callback_url = json.callback_url;
_filemanage.token = json.token;
_filemanage.defaultfilename = json.filename;
if (_filemanage.type == 2) {
_filemanage.allowselecttype = {'folder': ['文件夹', ['folder'], 'selected']}
} else {
_filemanage.allowselecttype = json.exttype || '';//允许筛选文件类型
}
//默认筛选文件类型
if (_filemanage.allowselecttype) {
for (var o in _filemanage.allowselecttype) {
if (_filemanage.allowselecttype[o][2] == 'selected') {
_filemanage.defaultexttype = _filemanage.allowselecttype[o][1].join(',').toLowerCase();
}
}
} else {
_filemanage.defaultexttype = '';
}
_filemanage.defaultfilename = json.defaultfilename || '';
};
_filemanage.hash = '';
_filemanage.getConfig = function (json, callback) {
new _filemanage(json);
_filemanage.hashHandler();
_filemanage.initEvents();
if (typeof callback === "function") {
callback(json);
}
//});
};
_filemanage.selector = [];//选择文件rid
_filemanage.dataparam = {};//请求文件条件参数
_filemanage.initEvents = function () { //初始化页面事件
_filemanage.height();
//hashchange事件
$(window).on('hashchange', function () {
_filemanage.hashHandler();
});
$(document).off('click.document-data').on('click.document-data', '.document-data', function () {
location.hash = jQuery(this).data('hash');
});
//右侧加载完成事件
$(document).off('ajaxLoad.middleContent').on('ajaxLoad.middleContent', function () {
var hash = location.hash.replace(/^#/i, '');
var op = hash.replace(/&(.+?)$/ig, '');
if (hash.indexOf('search') == 0) {
$('#footermenu').html('');
} else if (_filemanage.fid) {
if(_filemanage.dataparam.createFolderPerm){
$('#footer_menu').find('.filelistmenu .new-folder').removeClass('hide');
}else{
$('#footer_menu').find('.filelistmenu .new-folder').addClass('hide');
}
$('#footermenu').html($('#footer_menu').find('.filelistmenu').html());
} else {
$('#footermenu').html($('#footer_menu').find('.formatmenu').html());
}
//设置类型
if (_filemanage.allowselecttype) {
var typejson = _filemanage.allowselecttype, typehtml = '', selecttype = '', selectval = '';
for (var o in typejson) {
var exts = typejson[o][1].join(',').toLowerCase();
if (typejson[o][2] == 'selected') {
selecttype = typejson[o][0];
selectval = exts;
typehtml += '<label class="weui-cell weui-check__label"><div class="weui-cell__bd"> <p class="weui-type-word">' + typejson[o][0] + '</p> </div> ' +
'<div class="weui-cell__ft"> <input type="radio" class="weui-check" name="radio1" checked="checked" value="' + exts + '">' +
' <span class="weui-icon-checked"></span> </div> </label>';
} else {
typehtml += '<label class="weui-cell weui-check__label"><div class="weui-cell__bd"> <p class="weui-type-word">' + typejson[o][0] + '</p> </div> ' +
'<div class="weui-cell__ft"> <input type="radio" class="weui-check" name="radio1" value="' + exts + '">' +
' <span class="weui-icon-checked"></span> </div> </label>';
}
}
$('#footermenu .typeext').html(typehtml);
}
//加载更多
if (_filemanage.dataparam.page) {
//单页滚动加载
var loading = false; //状态标记
$(document.body).infinite().on("infinite", function () {
if (loading) return;
loading = true;
if (_filemanage.dataparam.page) {
$.post(_filemanage.appUrl + '&do=' + _filemanage.hash, _filemanage.dataparam, function (data) {
$('#containsdata').html(data);
$('#middleconMenu .filelist').append($('#containsdata').find('.weui-cells__margin_footer').html());
$('#containsdata').empty();
if (!_filemanage.dataparam.page) {
loading = false;
} else {
loading = true;
}
})
} else {
jQuery(document.body).destroyInfinite();
}
});
}
});
};
_filemanage.height = function () {
var h = $(document).outerHeight(true);
var h1 = $('.weui-file-keep').outerHeight(true);
var h2 = $('.weui-file-footer').outerHeight(true);
$('#middleconMenu').css('height', h - h1 - h2);
}
_filemanage.hashHandler = function () { //处理页面hash变化
var hash = location.hash;
hash = hash.replace(/^#/i, '');
if (!hash) {
hash = 'home';
}
if (hash === _filemanage.hash) {
return false;
}
if (hash !== _filemanage.hash) {
_filemanage.getContent(hash, $('#middleconMenu'));
_filemanage.hash = hash;
} else {
_filemanage.hash = hash;
}
return false;
};
_filemanage.getContent = function (hash, container) { //处理页面加载
var url = _filemanage.appUrl + '&do=' + hash;
if(url.indexOf('?') == -1){
url = url.replace('&','?');
}
_filemanage.dataparam = {};
if (_filemanage.defaultexttype) {
_filemanage.dataparam.exts = _filemanage.defaultexttype;
}
$.post(url, _filemanage.dataparam, function (data) {
$('#containsdata').html(data);
$('#middleconMenu').html($('#containsdata').find('.datacontent').html());
if ($('#containsdata').find('.addresscontent').length) {
$('#addressdata').html($('#containsdata').find('.addresscontent').html());
$('#addressdata').removeClass('hide');
}else if( _filemanage.hash.indexOf('home') == 0){
$('#addressdata').html('');
$('#addressdata').removeClass('hide');
}
if(_filemanage.hash.indexOf('search') == 0){
$('.weui-file-keep').addClass('hide');
$('#addressdata').addClass('hide');
}else{
$('.weui-file-keep').removeClass('hide');
}
$('#containsdata').empty();
$(document).trigger('ajaxLoad.middleContent', [hash]);
})
};
//打开文件夹
$(document).off('tap.openhref').on('tap.openhref', '.document-data', function () {
var hash = $(this).data('hash');
location.hash = hash;
})
//排序
$(document).off('tap.sort').on('tap.sort', '.sort_menu .sort', function () {
var sort = $(this).data('sort');
if (_filemanage.dataparam.disp == sort) _filemanage.dataparam.asc = (_filemanage.dataparam.asc > 0) ? 0 : 1;
else _filemanage.dataparam.disp = sort;
_filemanage.dataparam.page = 1;
_filemanage.dataparam.datatotal = 0;
if (_filemanage.defaultexttype) {
_filemanage.dataparam.exts = _filemanage.defaultexttype;
}
$.post(_filemanage.appUrl + '&do=' + _filemanage.hash, _filemanage.dataparam, function (data) {
$('#containsdata').html(data);
$('#middleconMenu').html($('#containsdata').find('.datacontent').html());
if ($('#containsdata').find('.addresscontent').length) {
$('#addressdata').html($('#containsdata').find('.addresscontent').html());
$('#addressdata').removeClass('hide');
}
$('#containsdata').empty();
$('.sort_menu').addClass('hide');
})
})
//类型筛选
$(document).off('tap.exts').on('tap.exts', '.weui-check__label', function () {
var obj = $(this);
var exts = obj.find('.weui-cell__ft input').val();
_filemanage.dataparam.exts = exts;
_filemanage.dataparam.page = 1;
_filemanage.dataparam.datatotal = 0;
$.post(_filemanage.appUrl + '&do=' + _filemanage.hash, _filemanage.dataparam, function (data) {
$('#containsdata').html(data);
$('#middleconMenu').html($('#containsdata').find('.datacontent').html());
if ($('#containsdata').find('.addresscontent').length) {
$('#addressdata').html($('#containsdata').find('.addresscontent').html());
$('#addressdata').removeClass('hide');
}
$('#containsdata').empty();
obj.closest('.typeext').addClass('hide');
})
})
//搜索文件
$(document).off('tap.search').on('tap.search', '.search', function () {
var hash = 'search', oldhash = _filemanage.hash;
oldhash = oldhash.replace(/&/g, '-');
if (_filemanage.fid) {
hash += '&fid=' + _filemanage.fid + '&oldhash=' + oldhash;
}
location.hash = hash;
})
//文件选择
$(document).off('tap.selectFile').on('tap.selectFile', '.document-filelist', function () {
var obj = $(this), rid = obj.data('rid'), index = $.inArray(rid, _filemanage.selector);
if (_filemanage.mulitype) {
if (obj.find('.weui-cells_checkbox .weui-check').prop('checked')) {
obj.find('.weui-cells_checkbox').addClass('hide');
obj.find('.weui-cells_checkbox .weui-check').prop('checked', false);
if (index != -1) {
_filemanage.selector.splice(index, 1);
}
} else {
obj.find('.weui-cells_checkbox').removeClass('hide');
obj.find('.weui-cells_checkbox .weui-check').prop('checked', true);
if (index == -1) {
_filemanage.selector.push(rid);
}
}
} else {
if (obj.find('.weui-cells_checkbox .weui-check').prop('checked')) {
$('.weui-cells_checkbox').each(function () {
$(this).find('.weui-check').prop('checked', false);
$(this).addClass('hide');
})
if (index != -1) {
_filemanage.selector.splice(index, 1);
}
} else {
$('.weui-cells_checkbox').each(function () {
$(this).find('.weui-check').prop('checked', false);
$(this).addClass('hide');
})
obj.find('.weui-cells_checkbox').removeClass('hide');
obj.find('.weui-cells_checkbox .weui-check').prop('checked', true);
if (index == -1) {
_filemanage.selector.push(rid);
}
}
}
})
//新建文件夹
jQuery(document).off('tap.docreate').on('tap.docreate', '.new-folder', function (placeholder) {
var obj = $(this);
$.prompt({
title: '新建文件夹',
placeholder: '新建文件夹',
empty: false, // 是否允许为空
onOK: function (input) {
var foldername = $('#weui-prompt-input').val(),
fid = _filemanage.fid, emojpatt = /[\ud800-\udbff][\udc00-\udfff]/gi;
if (emojpatt.test(foldername)) {
$.toast('文件名不合法!', "cancel");
$('#weui-prompt-input').val('');
return false;
}
$.post(_filemanage.appUrl + '&do=ajax&operation=createFolder', {
'foldername': foldername,
'fid': fid,
}, function (data) {
if (data['error']) {
$.toast(data['error'], 1000);
} else {
var html = '<div class="weui-cell weui-cell_access weui-cell_longpress document-data" data-hash="#file&fid=' + data.fid + '"> ' +
'<div class="weui-cell__hd"> ' +
'<img src="' + data.img + '" class="weui-cell__recentimg"> ' +
'</div> <div class="weui-cell__bd"> <h4>' + data.name + '</h4><p> ' +
'<span class="file">文件:</span><i class="file-number">0,</i> ' +
'<span class="folder">文件夹:</span><i class="folder-number">0</i> </p> ' +
'</div> <div class="weui-cell__ft"></div> </div>';
$('.filelist').prepend(html);
$.toast("操作成功");
}
}, 'json');
},
onCancel: function () {
$('#weui-prompt-input').val('');
obj.closest('div.weui-dropup').addClass('hide');
obj.closest('div.weui-dropup').siblings('.background-none').hide();
obj.closest('div.weui-dropup').siblings('.weui-footer-new-folder').find('p').css('color', '#666');
}
});
});
//弹出框点击其他地方消失
jQuery(document).off('tap.confirm').on('tap.confirm', '.background-none', function () {
$(this).prev('.weui-dropup').addClass('hide');
$(this).prevAll('.weui-footer-none').find('p').css({'color': '#666666'});
$(this).hide();
})
//排序菜单
jQuery(document).off('tap.array').on('tap.array', '.weui-footer-sort', function () {
var dropup = $(this).next('.weui-dropup');
if (dropup.hasClass('hide')) {
dropup.removeClass('hide');
dropup.next('.background-none').show();
$(this).find('p').css({'color': '#3779ff'});
}
})