/**
 * 一个采购成本详情的字段
 */
//COST_DETAIL_ARR=["type","category","name","unit","amount","price","taxRate","totalTaxInclude","totalTaxExclude"];
pay_DETAIL2 = {
    "num": [false, "序号", "string"],
    "payPoint": [false, "付款节点", "string"],
    "payTime": [false, "付款时间", "string"],
    "payProject": [false, "采购成本项目", "number"],
    "payAmount": [false, "付款金额", "number"],
    "supplier": [false, "供应商", "string"],
};

pay_DETAIL = {
    "num": [false, "序号", "string"],
    "payPoint": [false, "付款节点", "string"],
    "payTime": [false, "付款时间", "string"],
    "payProject": [false, "采购成本项目", "number"],
    "payAmount": [false, "付款金额", "number"],
    "supplier": [false, "供应商", "string"],
};
/*
[
    {"id":"1","name":"xxx1"},{"id":"2","name":"xxx2"}
]
 */
SELECT_TYPE_CATEGORY_DATA = [];
/*{
    "1":[
        {
            "id":"1",
            "name":"华智产品"
        },
        {
            "id":"2",
            "name":"紫光其他产品"
        },
        {
            "id":"3",
            "name":"外购产品"
        }
    ],
    "2":[
        {
            "id":"4",
            "name":"外购工程"
        }
    ],
    "3":[
        {
            "id":"5",
            "name":"华智服务"
        },
        {
            "id":"6",
            "name":"紫光其他服务"
        },
        {
            "id":"7",
            "name":"外购服务"
        }
    ],
    "4":[
        {
            "id":"8",
            "name":"其他"
        }
    ]
};*/
SELECT_TYPE_CATEGORY_MAP_DATA = {};
/*{
    "1":"1",
    "2":"1",
    "3":"1",
    "4":"2",
    "5":"3",
    "6":"3",
    "7":"3",
    "8":"4"
};
*/
SELECT_CATEGORY_TYPE_MAP_DATA = {};

/*$(function () {
    $("#cost-detail").click(function () {
        $('#my-prompt-cost-detail').modal({
            relatedTarget: this,
            closeOnConfirm:false,
            onConfirm: function(e) {
                //不能使用e.data,因为无法获取动态添加的
                var data = collectData("am-modal-prompt-input-cost");
                //data = prepareAjaxData(data, COST_DETAIL_ARR, $("#id").val(),false);
                data = prepareAjaxDataVerify(data, COST_DETAIL, $("#id").val());
                if(data){
                    postAjax(base+"/project/budgetEditSaveCostDetail", data, updateCostData);
                }
            },
            onCancel: function(e) {
            }
        });
    });
    $("#costAddBtn").click(function () {
        appendTrCost();
    });



    //初始化大类和类别的数据
    getAjax(base+"/procurement/type/map", null, initTypeCategory);
});*/

$(function () {
});

//保存采购成本明细表
$(function () {
    $("#payTableSave").click(function () {
        //不能使用e.data,因为无法获取动态添加的
        var data = collectData("am-modal-prompt-input-pay");
        //data = prepareAjaxData(data, COST_DETAIL_ARR, $("#id").val(),false);
        data = prepareAjaxDataVerify(data, pay_DETAIL2, $("#id").val());
        var flag = verifyBudgetPay()
        if (!flag) return
        if (data) {
            postAjax(base + "/project/budgetEditSaveBudgetPayPlan", data, updateCostData);
        }
    });
    $("#payAddBtn").click(function () {
        appendTrPay();
        $("#payAddBtn").blur();
    });

    //绑定删除按钮
    bindDeleteBtnPay();
    //绑定总计值
    bindPayTotal();
    //初始化大类和类别的数据
    getAjax(base + "/procurement/type/map", null, initTypeCategory);
});

/**
 * 采购成本增加一行
 */
function appendTrPay() {
    //console.log(SELECT_TYPE_CATEGORY_DATA);
    var options = '<option value="xxxx" disabled selected>--请选择--</option>\r\n';
    SELECT_TYPE_CATEGORY_DATA.forEach(function (e) {
        options += '<option value="' + e.id + '">' + e.name + '</option>\r\n';
    });

    var template = '<tr>' +
        '<td width="60px"><input type="text" class="am-modal-prompt-input am-modal-prompt-input-pay input-budget-num" readonly></td>' +
        '<td width="100px"><input type="text" class="am-modal-prompt-input am-modal-prompt-input-pay am-modal-prompt-input-pay-point" ></td>' +
        '<td width="100px"><input type="text"  class="am-modal-prompt-input am-modal-prompt-input-pay  input-changeable-pay-time"  autocomplete="off" data-am-datepicker></td>' +
        '<td width="100px">' +
        '<select style="float: left;" class="am-modal-prompt-input am-modal-prompt-input-pay am-modal-prompt-input-pay-project">\n' +
        '<option value="xxxx" disabled selected>--请选择--</option>' +
        '<option value="1">设备成本</option>' +
        '<option value="2">工程成本</option>' +
        '<option value="3">服务成本</option>' +
        '<option value="4">其他成本</option>' +
        '</select>' +
        '</td>' +
        '<td width="100px"><input type="text" class="am-modal-prompt-input am-modal-prompt-input-pay am-modal-prompt-input-pay-amount input-changeable-pay-amount" ></td>' +
        '<td width="100px"><input type="text" class="am-modal-prompt-input am-modal-prompt-input-pay am-modal-prompt-input-pay-supplier" ></td>' +
        '<td width="60px"><button type="button" style="margin-top: 10px" class="am-btn am-btn-danger am-btn-xs am-round am-modal-line-delete"><span class="am-icon-minus"></span></button></td>' +

        '</tr>';

    $("#payTotal").before(template);
    //重新绑定删除事件和input修改事件
    bindDeleteBtnPay();
    //绑定序号
    bindNum();
    //绑定时间
    bindTime();
    //绑定总计值
    bindPayTotal();
    //绑定数字输入框保留两位小数
    bindNumberInput();

    if ($('#costTable').find('tbody') && $('#costTable').find('tbody')[0]) {
        $('#costTable').find('tbody')[0].scrollTop = $('#costTable').find('tbody')[0].scrollHeight
    }
}

/**
 * 绑定时间选择器
 */
function bindTime() {
    $('[data-am-datepicker]').datepicker();
}

/**
 * 绑定每一行的删除事件,删除当前的一行tr,修改总计值
 */
function bindDeleteBtnPay() {
    $(".am-modal-line-delete").click(function () {
        //删除自己对应的tr
        $(this).parent().parent().remove();
        bindNum();
        updateTotal("input-changeable-pay-amount", "input-changeable-pay-amount-total");
    });
}

/**
 * 绑定每个可改变的输入框,修改后改变对应输入框的值
 */
function bindPayTotal() {
    //数量改变
    $(".input-changeable-pay-amount").change(function () {
        updateTotal("input-changeable-pay-amount", "input-changeable-pay-amount-total");
    });
}

/**
 * 更新页面收入的数据【累加】
 */
function updateCostData(data, returnData) {
    var details = data.details;
    var deviceTaxInclude = 0;
    var deviceTaxExclude = 0;
    var deviceTax = 0;
    var buildTaxInclude = 0;
    var buildTaxExclude = 0;
    var buildTax = 0;
    var serviceTaxInclude = 0;
    var serviceTaxExclude = 0;
    var serviceTax = 0;
    var otherTaxInclude = 0;
    var otherTaxExclude = 0;
    var otherTax = 0;
    var costTaxRates = "";
    var set = new Set();
    details.forEach(function (t, number, ts) {
        if (t["type"] == "1") {
            //设备类
            deviceTaxInclude += f2(t["totalTaxInclude"]);
            deviceTaxExclude += f2(t["totalTaxExclude"]);
            deviceTax += f2(t["totalTax"]);
        } else if (t["type"] == "2") {
            //施工类
            buildTaxInclude += f2(t["totalTaxInclude"]);
            buildTaxExclude += f2(t["totalTaxExclude"]);
            buildTax += f2(t["totalTax"]);
        } else if (t["type"] == "3") {
            //服务类
            serviceTaxInclude += f2(t["totalTaxInclude"]);
            serviceTaxExclude += f2(t["totalTaxExclude"]);
            serviceTax += f2(t["totalTax"]);
        } else if (t["type"] == "4") {
            //其他类
            otherTaxInclude += f2(t["totalTaxInclude"]);
            otherTaxExclude += f2(t["totalTaxExclude"]);
            otherTax += f2(t["totalTax"]);
        }
        if (!set.has(t["taxRate"])) {
            costTaxRates += f2Fixed(t["taxRate"]) + "%,";
            set.add(t["taxRate"]);
        }
    });
    $("input[name='costPurchaseDeviceTaxInclude']").val(f2Fixed(deviceTaxInclude));
    $("input[name='costPurchaseDeviceTaxExclude']").val(f2Fixed(deviceTaxExclude));
    $("input[name='costPurchaseDeviceTax']").val(f2Fixed(deviceTax));
    $("input[name='costPurchaseBuildTaxInclude']").val(f2Fixed(buildTaxInclude));
    $("input[name='costPurchaseBuildTaxExclude']").val(f2Fixed(buildTaxExclude));
    $("input[name='costPurchaseBuildTax']").val(f2Fixed(buildTax));
    $("input[name='costPurchaseServiceTaxInclude']").val(f2Fixed(serviceTaxInclude));
    $("input[name='costPurchaseServiceTaxExclude']").val(f2Fixed(serviceTaxExclude));
    $("input[name='costPurchaseServiceTax']").val(f2Fixed(serviceTax));
    $("input[name='costPurchaseOtherTaxInclude']").val(f2Fixed(otherTaxInclude));
    $("input[name='costPurchaseOtherTaxExclude']").val(f2Fixed(otherTaxExclude));
    $("input[name='costPurchaseOtherTax']").val(f2Fixed(otherTax));


    //资金计划表中的
    $(".input-total-title-device-cost-budget-plan").val(f2Fixed(deviceTaxInclude));
    $(".input-total-title-engineer-cost-budget-plan").val(f2Fixed(f2(serviceTaxInclude) + f2(buildTaxInclude) + f2(otherTaxInclude)));
    $(".input-total-title-total-cost-budget-plan").val(f2Fixed(f2(deviceTaxInclude) + f2(buildTaxInclude) + f2(serviceTaxInclude) + f2(otherTaxInclude)
        + f2($(".input-total-title-project-manage-cost-budget-plan").val())
        + f2($(".input-total-title-earnest-money-cost-budget-plan").val())));

    /*    var costOtherOtherTaxInclude = f2($("input[name='costOtherOtherTaxInclude']").val());
        var costOtherOtherTaxExclude = f2($("input[name='costOtherOtherTaxExclude']").val());

        var costProjectManageTaxInclude = f2($("input[name='costProjectManageTaxInclude']").val());
        var costProjectManageTaxExclude = f2($("input[name='costProjectManageTaxExclude']").val());

        $("input[name='costTotalTaxInclude']").val(f2(deviceTaxInclude+buildTaxInclude+serviceTaxInclude+otherTaxInclude+costOtherOtherTaxInclude+costProjectManageTaxInclude));
        $("input[name='costTotalTaxExclude']").val(f2(deviceTaxExclude+buildTaxExclude+serviceTaxExclude+otherTaxExclude+costOtherOtherTaxExclude+costProjectManageTaxExclude));*/

    calCostExclude();
    calCostInclude();
    calCostTotalTax();
    updateProjectContributionProfitRate();
    if (costTaxRates.length > 0) {
        $(".costTaxRates").text(costTaxRates.substr(0, costTaxRates.length - 1));
    }

    layuiAlert("保存成功");
    $('#my-prompt-cost-detail').modal('close');
}

/**
 * 大类类别联动效果
 */
/**
 * 初始化数据
 * SELECT_TYPE_CATEGORY_MAP_DATA
 * SELECT_CATEGORY_TYPE_MAP_DATA
 * SELECT_TYPE_CATEGORY_DATA
 */
function initTypeCategory(params, data) {
    var d = data.data;
    var map = d.map;

    Object.keys(map).forEach(function (t, number) {
        var temp = [];
        map[t].forEach(function (g) {
            temp.push({
                name: g.name,
                id: g.id + ""
            });
        });
        SELECT_TYPE_CATEGORY_MAP_DATA[t] = temp;
    });

    var procurementTypes = d.procurementTypes;
    procurementTypes.forEach(function (e) {
        SELECT_TYPE_CATEGORY_DATA.push({
            id: e.id + "",
            name: e.name
        });
        SELECT_CATEGORY_TYPE_MAP_DATA[e.id] = e.type;
    });
    //--请选择--的映射
    //SELECT_CATEGORY_TYPE_MAP_DATA["xxxx"]="xxxx";

    // console.log(SELECT_TYPE_CATEGORY_MAP_DATA);
    // console.log(SELECT_TYPE_CATEGORY_DATA);
    // console.log(SELECT_CATEGORY_TYPE_MAP_DATA);
}

//校验付款明细表
function verifyBudgetPay(isApprove) {
    // 时间必填校验
    var timeValue = $(".input-changeable-pay-time");
    var flag = true
    var timeFlag = true
    timeValue.each((index, element) => {
        if ($(element).val().length != 10)
            timeFlag = false
    })
    if (timeFlag == false) {
        flag = false
        layuiAlert('付款计划表中付款时间为必填')
    }
    // 采购成本与付款金额校验
    if (isApprove) {
        var payData = prepareAjaxDataVerify(collectData("am-modal-prompt-input-pay"), pay_DETAIL2, $("#id").val())
        var costData = prepareAjaxDataVerify(collectData("am-modal-prompt-input-cost"), COST_DETAIL2, $("#id").val())

        var payTotal_equipment = calculateTotal(payData, 1,'payProject','payAmount');
        var payTotal_project = calculateTotal(payData, 2,'payProject','payAmount');
        var payTotal_server = calculateTotal(payData, 3,'payProject','payAmount');
        var payTotal_other = calculateTotal(payData, 4,'payProject','payAmount');

        var costTotal_equipment = calculateTotal(costData, 1,'type','totalTaxInclude');
        var costTotal_project = calculateTotal(costData, 2,'type','totalTaxInclude');
        var costTotal_server = calculateTotal(costData, 3,'type','totalTaxInclude');
        var costTotal_other = calculateTotal(costData, 4,'type','totalTaxInclude');


        console.log(payTotal_equipment,payTotal_project,payTotal_server,payTotal_other,costTotal_equipment,costTotal_project,costTotal_server,costTotal_other)
        if (f2Fixed(payTotal_equipment) != f2Fixed(costTotal_equipment)) {
            flag = false
            layuiAlert('[付款计划表中"设备"成本总金]额需要与[采购成本明细表中"设备"成本总金额]一致')
        } else if (f2Fixed(payTotal_project) != f2Fixed(costTotal_project)) {
            flag = false
            layuiAlert('[付款计划表中"工程"成本总金]额需要与[采购成本明细表中"工程"成本总金额]一致')
        } else if (f2Fixed(payTotal_server) != f2Fixed(costTotal_server)) {
            flag = false
            layuiAlert('[付款计划表中"服务"成本总金]额需要与[采购成本明细表中"服务"成本总金额]一致')
        } else if (f2Fixed(payTotal_other) != f2Fixed(costTotal_other)) {
            flag = false
            layuiAlert('[付款计划表中"其他"成本总金]额需要与[采购成本明细表中"其他"成本总金额]一致')
        }
    }

    return flag
}

function calculateTotal(payData, type,key,value) {
    return payData.details.reduce((total, now) => {
        return now[key] == type ? parseFloat(now[value]) + total : total;
    }, 0);
}