fourcal/src/main/resources/static/assets/js/project_common.js

140 lines
4.0 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/**
* 一维数组变二维数组
* @param list
* @param elementsPerSubArray
* @returns {Array}
*/
function arrayToMatrix(list, elementsPerSubArray) {
var matrix = [], i, k;
for (i = 0, k = -1; i < list.length; i++) {
if (i % elementsPerSubArray === 0) {
k++;
matrix[k] = [];
}
matrix[k].push(list[i]);
}
return matrix;
}
/**
* 根据映射关系将数组变为对象
*/
function arr2Object(arr, mapArr) {
var obj = {};
for (var i = 0; i < mapArr.length; i++) {
if(!arr[i]){
//如果有空的就返回空
return null;
}
obj[mapArr[i]]=arr[i];
}
return obj;
}
/**
* 收集收入明细的数据因为动态添加的行modal无法识别所以自己来收集
* @returns {Array}
*/
function collectData(className) {
var a= [];
$("." + className).each(function (t) {
a.push($(this).val());
});
return a;
}
/**
* 绑定每一行的删除事件删除当前的一行tr
*/
function bindDeleteBtn() {
$(".am-modal-line-delete").click(function () {
//删除自己对应的tr
$(this).parent().parent().remove();
});
}
/**
* 将页面收集到的数据转换为ajax请求的数据【一维数组转换为对象数组】
* @param data
* @param detailPropertyArr
* @returns {Array}
*/
function convertDetail(data,detailPropertyArr) {
var arr = arrayToMatrix(data,detailPropertyArr.length);
var details = [];
for (var i=0;i<arr.length;i++){
var obj = arr2Object(arr[i], detailPropertyArr);
if(obj){
details.push(obj);
}
}
return details;
}
function prepareAjaxData(data,detailPropertyArr,projectId){
var details = convertDetail(data, detailPropertyArr);
return {
"details":details,
"projectId":projectId
};
}
function saveDetail(url, data, callback) {
$.ajax({
url: url,
data: JSON.stringify(data),
type: "post",
dataType: "json",
contentType:"application/json",
async: false,
success: function (d) {
console.log(d);
callback(data.details);
}
});
}
/**
* 绑定每个可改变的输入框,修改后改变对应输入框的值
*/
function bindChangeableInput() {
//数量改变
$(".input-changeable-amount").change(function () {
var amount = parseFloat($(this).val());
//找到对应的单价和税率
var price = parseFloat($(this).parent().parent().find(".input-changeable-price").val());
var taxRate = parseFloat($(this).parent().parent().find(".input-changeable-tax-rate").val());
console.log(amount,price,taxRate);
$(this).parent().parent().find(".input-changeable-total-tax-include").val(amount*price);
$(this).parent().parent().find(".input-changeable-total-tax-exclude").val(amount*price/(1+taxRate/100));
});
//单价改变
$(".input-changeable-price").change(function () {
var price = parseFloat($(this).val());
//找到对应的数量和税率
var amount = parseFloat($(this).parent().parent().find(".input-changeable-amount").val());
var taxRate = parseFloat($(this).parent().parent().find(".input-changeable-tax-rate").val());
console.log(amount,price,taxRate);
$(this).parent().parent().find(".input-changeable-total-tax-include").val(amount*price);
$(this).parent().parent().find(".input-changeable-total-tax-exclude").val(amount*price/(1+taxRate/100));
});
//税率改变
$(".input-changeable-tax-rate").change(function () {
var taxRate = parseFloat($(this).val());
//找到对应的数量和单价
var amount = parseFloat($(this).parent().parent().find(".input-changeable-amount").val());
var price = parseFloat($(this).parent().parent().find(".input-changeable-price").val());
console.log(amount,price,taxRate);
$(this).parent().parent().find(".input-changeable-total-tax-exclude").val(amount*price/(1+taxRate/100));
});
}