/**
 * 对账模块-批量上传扣款或返利附件
 *
 * Created by li.kui on 2020/8/31.
 */
'use strict';
var el = {
    drIds: '#drIds',
    drCodes: '#drCodes',
    attType: '#attType',
    tb: '#tb',
    attachmentUpload: '#attachmentUpload',
    fileInput: '#fileInput',
    selectedFiles: [],
    bodyHeight: document.documentElement.clientHeight
};

$(function () {
    initFileDataGrid();

    $(el.fileInput).filebox({
        onChange: function () {
            var files = $(el.fileInput).filebox('files');
            addFileList(files);

            var obj = $(this);
            // 清空文件dom，不清空则不能再次选择文件
            obj.filebox('reset');
            obj.filebox('setValue','');
            obj.filebox('disableValidation');
        }
    });
});

/**
 * 初始化附件数据列表
 */
function initFileDataGrid() {
    $(el.tb).datagrid({
        loadMsg: '数据加载中, 请耐心等待......',
        queryParams: {},
        singleSelect: true,
        pagination: false,
        height: el.bodyHeight,
        rownumbers: true,
        columns: [
            [
                {
                    field: 'ck',
                    checkbox: true
                },
                {
                    field: 'fileName',
                    title: '文件名',
                    width: 300
                }
            ]
        ],
        toolbar: [
            {
                text: '选择文件',
                iconCls: 'icon-add',
                handler: function () {
                    uploadDrAtt();
                }
            },
            '-',
            {
                text: '删除',
                iconCls: 'icon-remove',
                handler: function () {
                    delDrFile();
                }
            }
        ]
    });
}


/**
 * 选择扣款附件
 */
function uploadDrAtt() {
    $(el.attachmentUpload).find('.filebox-label').click();
}


/**
 * 将选中的文件添加到文件列表中
 *
 * @param files 文件
 */
function addFileList(files) {
    var rows = el.selectedFiles, addFiles = [];
    if (rows.length === 0) {
        for (var m = 0; m < files.length; m++) {
            var fileType1 = getFileType(files[m].name);
            // 文件类型不能为 .sql
            if(fileType1 === 'sql'){
                topWin.layer.alert('该文件格式无法上传', {icon: 0});
                return false;
            }

            addFiles.push(files[m]);
            el.selectedFiles.push(files[m]);
        }
    } else {
        outer:
            for (var i = 0; i < files.length; i++) {
                for (var j = 0; j < rows.length; j++) {
                    var item = rows[j];
                    if (item.name === files[i].name) {
                        continue outer;
                    }
                }
                var fileType2 = getFileType(files[i].name);
                // 文件类型不能为 .sql
                if(fileType2 === 'sql'){
                    topWin.layer.alert('该文件格式无法上传', {icon: 0});
                    return false;
                }

                addFiles.push(files[i]);
                el.selectedFiles.push(files[i]);
            }
    }

    for(var n = 0; n < addFiles.length; n++){
        var row = {};
        row.fileName = el.selectedFiles[n].name;
        $(el.tb).datagrid('appendRow', row);
    }
}


/**
 * 删除选中的附件
 */
function delDrFile() {
    var rows = $(el.tb).datagrid('getSelections');
    if(rows.length === 0){
        topWin.layer.alert('请选择您要删除的附件信息', {icon: 0});
        return false;
    }

    for(var i = 0; i < rows.length; i++){
        var item = rows[i];
        // 删除selectedFiles数据
        for(var j =  el.selectedFiles.length - 1; j >= 0; j--){
            var file = el.selectedFiles[j];
            if(item.fileName === file.name){
                el.selectedFiles.splice(j, 1);
            }
        }

        // 删除表格数据
        var rowIndex = $(el.tb).datagrid('getRowIndex', item);
        $(el.tb).datagrid('deleteRow', rowIndex);
    }
}


/**
 * 上传列表中附件
 */
function uploadDataGirdFile(callback) {
    var formData = new FormData();
    for (var n = 0; n < el.selectedFiles.length; n++) {
        formData.append('files', el.selectedFiles[n]);
    }

    formData.append('drIds', $(el.drIds).val());
    formData.append('drCodes', $(el.drCodes).val());
    formData.append('attType', $(el.attType).val());

    var load = topWin.layer.msg('数据提交保存中......', {icon: 16, time: 0, shade: 0.1});
    $.ajax({
        type: 'POST',
        url: g.ctx + 'fin/ded/reb/attachment/rest/batch/upload/dr/attachment',
        data: formData,
        contentType: false,
        processData: false,
        success: function () {
            topWin.layer.close(load);
            callback();
        },
        error: function (data) {
            topWin.layer.close(load);
            topWin.layer.alert(data.responseJSON.message, {icon: 2});
        }
    });
}


/**
 * 根据文件名获取文件类型
 *
 * @param fileName 文件名
 * @return {*} 文件类型
 */
function getFileType(fileName) {
    var fileArray = fileName.split('.');
    return fileArray[fileArray.length - 1];
}