/**
 * 一个采购成本详情的字段
 */
//COST_DETAIL_ARR=["type","category","name","unit","amount","price","taxRate","totalTaxInclude","totalTaxExclude"];
COST_DETAIL={
    "num":[false,"序号","string"],
    "type":[true,"大类","string"],
    "category":[true,"类别","string"],
    "name":[true,"名称","string"],
    "unit":[true,"单位","string"],
    "amount":[true,"数量","string"],
    "price":[true,"单价","price"],
    "taxRate":[true,"税率","number"],
    "totalTaxInclude":[true,"含税总金额","number"],
    "totalTaxExclude":[true,"不含税金额","number"],
    "totalTax":[true,"税金","number"],
    "contractParty":[true,"签约方","string"],
    "isUnderwritten":[true,"是否垫资","string"],
    "underwrittenAmount":[true,"预估垫资金额","number"],
    "payTime":[true,"支出时间","string"],
    "payAmount":[true,"支出金额","number"],
    "payWay":[true,"付款方式","string"],
    "remark":[true,"备注","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();
    });

    //绑定其他其他的输入框
    bindOtherOtherChangeable();
    //绑定采购明细中select联动事件
    bindTypeSelectChange();

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

$(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) {
            }
        });
    });
});

//保存采购成本明细表
$(function () {
    $("#costTableSave").click(function () {
        //不能使用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);
        }
    });

    $("#costAddBtn").click(function () {
        appendTrCost();
    });

    //绑定其他其他的输入框
    bindOtherOtherChangeable();
    //绑定采购明细中select联动事件
    bindTypeSelectChange();
    //绑定删除按钮
    bindDeleteBtnCost();

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

/**
 * 采购成本增加一行
 */
function appendTrCost() {
    //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><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost input-budget-num" readonly></td>' +
        '<td><select style="width: 100px;float: left;" class="am-modal-prompt-input am-modal-prompt-input-cost am-modal-prompt-input-cost-type">'+
        '<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>'+
        '<select style="width: 180px;float: left;" class="am-modal-prompt-input am-modal-prompt-input-cost am-modal-prompt-input-cost-category">'+

        /*'<option value="1">华智产品</option>'+
        '<option value="2">紫光其他产品</option>'+
        '<option value="3">外购产品</option>'+
        '<option value="4">外购工程</option>'+
        '<option value="5">华智服务</option>'+
        '<option value="6">紫光其他服务</option>'+
        '<option value="7">外购服务</option>'+
        '<option value="8">其他</option>'+*/

        options+

        '</select>'+
        '</td>'+
        '<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost"></td>'+
        '<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost""></td>'+
        '<td><input type="number" min="0" max="99999999" step="1" maxlength="8" class="am-modal-prompt-input am-modal-prompt-input-cost input-changeable-amount input-changeable-amount-cost"></td>'+
        '<td><input type="text" min="0.00" max="9999999999.99" step="0.01" maxlength="19" class="price am-modal-prompt-input am-modal-prompt-input-cost input-changeable-price input-changeable-price-cost"></td>'+
        '<td><input type="text" min="0.00" max="99.99" step="0.01" maxlength="5" class="number am-modal-prompt-input am-modal-prompt-input-cost input-changeable-tax-rate input-changeable-tax-rate-cost"></td>'+
        '<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost input-changeable-total-tax-include input-changeable-total-tax-include-cost" readonly></td>'+
        '<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost input-changeable-total-tax-exclude input-changeable-total-tax-exclude-cost" readonly></td>'+
        '<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost input-changeable-total-tax input-changeable-total-tax-cost" readonly></td>'+
        '<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost" ></td>\n' +
        '<td>\n' +
        '    <select style="width: 100px;float: left;" class="am-modal-prompt-input am-modal-prompt-input-cost am-modal-prompt-input-cost-underwritten">\n' +
        '        <option value="0" ></option>\n' +
        '        <option value="1" >是</option>\n' +
        '        <option value="2" >否</option>\n' +
        '    </select>\n' +
        '</td>\n' +
        '<td><input type="text" class="number am-modal-prompt-input am-modal-prompt-input-cost input-changeable-total-underwritten-amount-cost" ></td>\n' +
        '<td><input style="width: 150px;float: left;" type="text" class="am-modal-prompt-input am-modal-prompt-input-cost" data-am-datepicker></td>\n' +
        '<td><input type="text" class="number am-modal-prompt-input am-modal-prompt-input-cost input-changeable-total-pay-amount-cost" ></td>\n' +
        '<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost" ></td>\n' +
        '<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost" ></td>\n' +
        '<td><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>';

    $("#costTotal").before(template);
    //重新绑定删除事件和input修改事件
    bindDeleteBtnCost();
    //绑定序号
    bindNum();
    //绑定时间
    bindTime();
    //重新绑定
    bindChangeableInput();
    //绑定总计值
    bindCostTotal();
    //绑定采购明细中select联动事件
    bindTypeSelectChange();
    //绑定数字输入框保留两位小数
    bindNumberInput();
}

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

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

/**
 * 绑定每个可改变的输入框,修改后改变对应输入框的值
 */
function bindCostTotal() {
    //数量改变
    $(".input-changeable-amount-cost").change(function () {
        updateAmount("input-changeable-amount-cost", "input-changeable-total-amount-cost");
        updateTotal("input-changeable-total-tax-include-cost", "input-changeable-total-total-tax-include-cost");
        updateTotal("input-changeable-total-tax-exclude-cost", "input-changeable-total-total-tax-exclude-cost");
        updateTotal("input-changeable-total-tax-cost", "input-changeable-total-total-tax-cost");
    });
    //单价改变
    $(".input-changeable-price-cost").change(function () {
        updateTotal("input-changeable-total-tax-include-cost", "input-changeable-total-total-tax-include-cost");
        updateTotal("input-changeable-total-tax-exclude-cost", "input-changeable-total-total-tax-exclude-cost");
        updateTotal("input-changeable-total-tax-cost", "input-changeable-total-total-tax-cost");
    });
    //税率改变
    $(".input-changeable-tax-rate-cost").change(function () {
        updateTotal("input-changeable-total-tax-exclude-cost", "input-changeable-total-total-tax-exclude-cost");
        updateTotal("input-changeable-total-tax-cost", "input-changeable-total-total-tax-cost");
    });
    //收款金额变化
    $(".input-changeable-total-pay-amount-cost").change(function () {
        updateTotal("input-changeable-total-pay-amount-cost", "input-changeable-total-total-pay-amount-cost");
    });
    //垫资金额变化
    $(".input-changeable-total-underwritten-amount-cost").change(function () {
        updateTotal("input-changeable-total-underwritten-amount-cost", "input-changeable-total-total-underwritten-amount-cost");
    });
}

/**
 * 更新页面收入的数据【累加】
 */
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');
}

function bindOtherOtherChangeable() {
    $("input[name='costOtherOtherTaxInclude']").change(function () {
        /*var costPurchaseDeviceTaxInclude = f2($("input[name='costPurchaseDeviceTaxInclude']").val());
        var costPurchaseBuildTaxInclude = f2($("input[name='costPurchaseBuildTaxInclude']").val());
        var costPurchaseServiceTaxInclude = f2($("input[name='costPurchaseServiceTaxInclude']").val());
        var costPurchaseOtherTaxInclude = f2($("input[name='costPurchaseOtherTaxInclude']").val());

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

        $("input[name='costTotalTaxInclude']").val(f2(costPurchaseDeviceTaxInclude+costPurchaseBuildTaxInclude
            +costPurchaseServiceTaxInclude+costPurchaseOtherTaxInclude+costProjectManageTaxInclude+costOtherOther));*/

        calCostInclude();

        calCostOtherOtherTax();
        calCostTotalTax();

        updateProjectContributionProfitRate();
        digitalSelf("costOtherOtherTaxInclude", "input[name='costOtherOtherTaxInclude']");
    });

    $("input[name='costOtherOtherTaxExclude']").change(function () {
        /*var costPurchaseDeviceTaxExclude = f2($("input[name='costPurchaseDeviceTaxExclude']").val());
        var costPurchaseBuildTaxExclude = f2($("input[name='costPurchaseBuildTaxExclude']").val());
        var costPurchaseServiceTaxExclude = f2($("input[name='costPurchaseServiceTaxExclude']").val());
        var costPurchaseOtherTaxExclude = f2($("input[name='costPurchaseOtherTaxExclude']").val());

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

        $("input[name='costTotalTaxExclude']").val(f2(costPurchaseDeviceTaxExclude+costPurchaseBuildTaxExclude
            +costPurchaseServiceTaxExclude+costPurchaseOtherTaxExclude+costProjectManageTaxExclude+costOtherOther));*/

        calCostExclude();

        calCostOtherOtherTax();
        calCostTotalTax();

        updateProjectContributionProfitRate();
        digitalSelf("costOtherOtherTaxExclude", "input[name='costOtherOtherTaxExclude']");
    });
}

/**
 * 大类类别联动效果
 */
function bindTypeSelectChange() {
    //大类变化联动类别
    $(".am-modal-prompt-input-cost-type").on('change',function () {
        var categorySelect = $(this).parent().parent().find(".am-modal-prompt-input-cost-category");
        var type = $(this).val();
        //删除后重新添加对应的类别
        categorySelect.empty();

        //console.log(SELECT_TYPE_CATEGORY_MAP_DATA);

        if(SELECT_TYPE_CATEGORY_MAP_DATA[type]){
            categorySelect.append("<option value='xxxx' disabled selected>--请选择--</option>");
            SELECT_TYPE_CATEGORY_MAP_DATA[type].forEach(function (d) {
                categorySelect.append("<option value='"+d.id+"'>"+d.name+"</option>");
            });
        }

    });
    //类别变化联动大类
    $(".am-modal-prompt-input-cost-category").on('change',function () {
        var typeSelect = $(this).parent().parent().find(".am-modal-prompt-input-cost-type");
        var category = $(this).val();
        //设置他选中类别对应的大类

        //console.log(SELECT_CATEGORY_TYPE_MAP_DATA);

        typeSelect.val(SELECT_CATEGORY_TYPE_MAP_DATA[category]);
    });
}
/**
 * 初始化数据
 * 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);
}