/** * 初始*/ initData = function () { LoadData(); LoadPage(); BindEvent(); ProcesField(); ResetShowType(); BuildSumDiv(); if (window.taskid == '') { $("#SumDiv").remove(); } } /** * 核价信息数据*/ var PriceReview = {}; /** * 加载数据*/ function LoadData() { var sysid = window.sysid; // 主表数据 $.ajax({ url: "/ERP/Erp_PriceReview/GetBizPageData?sysid=" + sysid , async: false , cache: false , dataType: "json", success: function (data) { PriceReview = data; } }); } /** * 加载页面绑定数据*/ function LoadPage() { // 绑定主表数据 $("[name='erp_price_review.code']").val(PriceReview.code); $("[name='erp_price_review.title']").val(PriceReview.title); $("[name='erp_price_review.date_start']").val(JsonDateToDate(PriceReview.date_start).Format('yyyy-MM-dd')); $("[name='erp_price_review.date_end']").val(JsonDateToDate(PriceReview.date_end).Format('yyyy-MM-dd')); if (window.sysid == '') { $("[name='erp_price_review.project_id']").prepend(''); $("[name='erp_price_review.project_id']").find("option:contains('请选择')").attr("selected", true); $("[name='erp_price_review.supplier_id']").prepend(''); $("[name='erp_price_review.supplier_id']").find("option:contains('请选择')").attr("selected", true); $("[name='erp_price_review.date_start']").val(''); $("[name='erp_price_review.date_end']").val(''); } else { $("[name='erp_price_review.project_id']").val(PriceReview.project_id); $("[name='erp_price_review.supplier_id']").val(PriceReview.supplier_id); } $("[name='erp_price_review.project_id']").trigger("chosen:updated"); $("[name='erp_price_review.supplier_id']").trigger("chosen:updated"); $("[name='erp_price_review.remark']").val(PriceReview.remark); // 绑定子表数据 $.each(PriceReview.Children, function (i, r) { $('#girdtable .body').eq(i).find("[name='erp_price_review_dtl.materielinfo_code']").val(r.materielinfo_code); $('#girdtable .body').eq(i).find("[name='erp_price_review_dtl.materielinfo_name']").val(r.materielinfo_name); $('#girdtable .body').eq(i).find("[name='erp_price_review_dtl.specification']").val(r.specification); $('#girdtable .body').eq(i).find("[name='erp_price_review_dtl.unit']").val(r.unit); $('#girdtable .body').eq(i).find("[name='erp_price_review_dtl.count']").val(r.count); $('#girdtable .body').eq(i).find("[name='erp_price_review_dtl.original_amount']").val(r.original_amount); $('#girdtable .body').eq(i).find("[name='erp_price_review_dtl.original_no_taxrate_amount']").val(r.original_no_taxrate_amount); $('#girdtable .body').eq(i).find("[name='erp_price_review_dtl.new_price']").val(r.new_price); $('#girdtable .body').eq(i).find("[name='erp_price_review_dtl.new_price']").attr("jsonData", ' ' + JSON.stringify(r) + ''); $('#girdtable .body').eq(i).find("[name='erp_price_review_dtl.new_amount']").val(r.new_amount); $('#girdtable .body').eq(i).find("[name='erp_price_review_dtl.new_no_taxrate_amount']").val(r.new_no_taxrate_amount); $('#girdtable .body').eq(i).find("[name='erp_price_review_dtl.differ_amount']").val(r.differ_amount); $('#girdtable .body').eq(i).find("[name='erp_price_review_dtl.differ_no_taxrate_amount']").val(r.differ_no_taxrate_amount); if (i + 1 != PriceReview.Children.length) { if (window.taskid == '') { $(".subtradd_js").click(); } } }); } /** * 加载子表数据*/ function LoadDtl() { var projectId = $("[name='erp_price_review.project_id']").val(); var supplierId = $("[name='erp_price_review.supplier_id']").val(); var dateStart = $("[name='erp_price_review.date_start']").val(); var dateEnd = $("[name='erp_price_review.date_end']").val(); if (projectId == '' || supplierId == '' || dateStart == '' || dateEnd == '') { return false; } $('#girdtable .body').remove(); $("#SumDiv").remove(); $.ajax({ url: '/ERP/Erp_PriceReview/GetDtlForPage', data: { ProjectId: projectId, SupplierId: supplierId, DateStart: dateStart, DateEnd: dateEnd }, async: true, type: 'POST', success: function (data) { if (data.Result != true) { layer.alert(data.Message); } else { if (data.DataInfo.length>0) { // 绑定子表数据 $.each(data.DataInfo, function (i, r) { if (i + 1 <= data.DataInfo.length) { $(".subtradd_js").click(); } $('#girdtable .body').eq(i).find("[name='erp_price_review_dtl.materielinfo_code']").val(r.materielinfo_code); $('#girdtable .body').eq(i).find("[name='erp_price_review_dtl.materielinfo_name']").val(r.materielinfo_name); $('#girdtable .body').eq(i).find("[name='erp_price_review_dtl.specification']").val(r.specification); $('#girdtable .body').eq(i).find("[name='erp_price_review_dtl.unit']").val(r.unit); $('#girdtable .body').eq(i).find("[name='erp_price_review_dtl.count']").val(r.count); $('#girdtable .body').eq(i).find("[name='erp_price_review_dtl.original_amount']").val(r.original_amount); $('#girdtable .body').eq(i).find("[name='erp_price_review_dtl.original_no_taxrate_amount']").val(r.original_no_taxrate_amount); $('#girdtable .body').eq(i).find("[name='erp_price_review_dtl.new_price']").val(r.new_price); $('#girdtable .body').eq(i).find("[name='erp_price_review_dtl.new_price']").attr("jsonData", ' ' + JSON.stringify(r) + ''); $('#girdtable .body').eq(i).find("[name='erp_price_review_dtl.new_amount']").val('待计算'); $('#girdtable .body').eq(i).find("[name='erp_price_review_dtl.new_no_taxrate_amount']").val('待计算'); $('#girdtable .body').eq(i).find("[name='erp_price_review_dtl.differ_amount']").val('待计算'); $('#girdtable .body').eq(i).find("[name='erp_price_review_dtl.differ_no_taxrate_amount']").val('待计算'); }); BuildSumDiv(); } else { layer.alert("没有符合条件的混凝土入库单!"); } } }, }); } /** * * 计算子表数据 * @param {Number} i 行索引 */ function CalculatePriceReviewDtl(i) { $('#girdtable .body').eq(i).find("[name='erp_price_review_dtl.new_amount']").val('计算中...'); $('#girdtable .body').eq(i).find("[name='erp_price_review_dtl.new_no_taxrate_amount']").val('计算中...'); $('#girdtable .body').eq(i).find("[name='erp_price_review_dtl.differ_amount']").val('待计算'); $('#girdtable .body').eq(i).find("[name='erp_price_review_dtl.differ_no_taxrate_amount']").val('计算中...'); var rowData = JSON.parse($('#girdtable .body').eq(i).find("[name='erp_price_review_dtl.new_price']").attr("jsonData")); rowData.new_price = $('#girdtable .body').eq(i).find("[name='erp_price_review_dtl.new_price']").val(); $.ajax({ url: '/ERP/Erp_PriceReview/CalculatePriceReviewDtl', data: rowData, async: true, type: 'POST', success: function (data) { debugger; if (data.Result != true) { layer.alert(data.Message); } else { // 绑定子表数据 var r = data.DataInfo; $('#girdtable .body').eq(i).find("[name='erp_price_review_dtl.new_amount']").val(r.new_amount); $('#girdtable .body').eq(i).find("[name='erp_price_review_dtl.new_no_taxrate_amount']").val(r.new_no_taxrate_amount); $('#girdtable .body').eq(i).find("[name='erp_price_review_dtl.differ_amount']").val(r.differ_amount); $('#girdtable .body').eq(i).find("[name='erp_price_review_dtl.differ_no_taxrate_amount']").val(r.differ_no_taxrate_amount); //删除已经有的信息 $('#girdtable .body').eq(i).find('[name="erp_price_review_dtl.relation_id"]').remove(); $('#girdtable .body').eq(i).find('[name="erp_price_review_dtl.differ_no_taxrate_amount_dtl"]').remove(); var fieldName = 'relation_id'; var fieldValue = r.relation_id; var hiddenHtml = ''; fieldName = 'differ_no_taxrate_amount_dtl'; fieldValue = r.differ_no_taxrate_amount_dtl; hiddenHtml += ''; $('#girdtable .body').eq(i).find("[name='erp_price_review_dtl.materielinfo_code']").after(hiddenHtml); $('#girdtable .body').eq(i).find("[name='erp_price_review_dtl.new_amount']").attr("jsonData", '' + JSON.stringify(r) + ''); BuildSumDiv(); } }, beforeSend: function () { layer.closeAll(); parent.layer.closeAll(); } }); } /** * 处理一些特殊字段*/ function ProcesField() { /* * 把页面上没展示的字段 对应生成出隐藏框 * 这样可以在提交的时候在表单里面取得到 */ $.each(PriceReview, function (i, v) { if (!$("input[name='erp_price_review." + i + "']").length > 0) { v = v == null ? "" : v; var hiddenHtml = ''; $("[name='erp_price_review.orderNum']").after(hiddenHtml); } }); $.each(PriceReview.Children, function (itemIndex, itmeData) { $.each(itmeData, function (i, v) { if (!$('#girdtable .body').eq(itemIndex).find("[name='erp_price_review_dtl." + i + "']").length > 0) { v = v == "null" ? "" : v; var hiddenHtml = ''; $("[name='erp_price_review_dtl.materielinfo_code']").eq(itemIndex).after(hiddenHtml); } }); }); } /** * 重置展现方式(隐藏一下东西什么什么的)*/ function ResetShowType() { $(".subtradd_js").hide(); $(".subtrdel_js").hide(); } /** * 绑定框框的事件*/ function BindEvent() { $("[name='erp_price_review.date_start'],[name='erp_price_review.end'],[name='erp_price_review.project_id'],[name='erp_price_review.supplier_id']").change(function () { LoadDtl(); }); $("[name='erp_price_review_dtl.new_price']").change(function () { var index = $("#girdtable .body [name='" + this.name + "']").index(this); CalculatePriceReviewDtl(index); }); $("[name='erp_price_review_dtl.new_price']").keyup(function () { $(this).val($(this).val().toString().match(/^\d+(?:\.\d{0,8})?/)); }); $("[name='erp_price_review_dtl.new_price']").mouseover(function () { if ($(this).attr("jsonData") == undefined || $(this).attr("jsonData") == '') { return false; } var rowData = JSON.parse($(this).attr("jsonData")); var price = accDiv(rowData.original_amount, rowData.count); var msg = '原平均含税单价:' + price; layer.tips(msg, this, { tips: [3, '#4284c69e'], time: 3000 }); }); $("[name='erp_price_review_dtl.materielinfo_code']").css({ "color": "cornflowerblue", "cursor": "pointer" }); $("[name='erp_price_review_dtl.materielinfo_code']").parent("td").click(function () { var jsonDataStr = $(this).parent().children().find("[name='erp_price_review_dtl.new_price']").attr("jsonData"); if (jsonDataStr == undefined || jsonDataStr == '') { return false; } var rowData = JSON.parse(jsonDataStr); var relationIdArry = rowData.relation_id.split('^'); var inOrderDtlIds = ''; $.each(relationIdArry, function (i, v) { inOrderDtlIds += v.split('_')[1]; if (i + 1 < relationIdArry.length) { inOrderDtlIds += '^'; } }); var url = '/erp/Erp_inorder/indetail?InOrderDtlIds=' + inOrderDtlIds + '&differ_no_taxrate_amount_dtl=' + rowData.differ_no_taxrate_amount_dtl; appendTabByUrl(url, "入库单明细"); }); window.onresize = function () { BuildSumDiv(); }; } /** * 构建合计行*/ BuildSumDiv = function () { //$("#girdtable") $("#SumDiv").remove(); var htmlString = '
'; htmlString += '合计'; htmlString += ''; htmlString += ''; htmlString += ''; htmlString += ''; htmlString += ''; htmlString += ''; htmlString += ''; htmlString += ''; htmlString += '
'; $("#girdtable").after(htmlString); var countSum = 0; $("input[name='erp_price_review_dtl.count']").each(function (i, v) { countSum = accAdd(countSum, $(v).val()); }); $("#countSum").text(countSum); $("#countSum").css({ "left": $("input[name='erp_price_review_dtl.count']").eq(0).offset().left + 12 }); var original_amountSum = 0; $("input[name='erp_price_review_dtl.original_amount']").each(function (i, v) { original_amountSum = accAdd(original_amountSum, $(v).val()); }); $("#original_amountSum").text(original_amountSum); $("#original_amountSum").css({ "left": $("input[name='erp_price_review_dtl.original_amount']").eq(0).offset().left + 12 }); var original_no_taxrate_amountSum = 0; $("input[name='erp_price_review_dtl.original_no_taxrate_amount']").each(function (i, v) { original_no_taxrate_amountSum = accAdd(original_no_taxrate_amountSum, $(v).val()); }); $("#original_no_taxrate_amountSum").text(original_no_taxrate_amountSum); $("#original_no_taxrate_amountSum").css({ "left": $("input[name='erp_price_review_dtl.original_no_taxrate_amount']").eq(0).offset().left + 12 }); var new_priceSum = 0; $("input[name='erp_price_review_dtl.new_price']").each(function (i, v) { new_priceSum = accAdd(new_priceSum, $(v).val()); }); $("#new_priceSum").text(new_priceSum); $("#new_priceSum").css({ "left": $("input[name='erp_price_review_dtl.new_price']").eq(0).offset().left + 12 }); var new_amountSum = 0; $("input[name='erp_price_review_dtl.new_amount']").each(function (i, v) { if ($(v).val() == "待计算"||$(v).val() == "计算中...") { new_amountSum = ""; return false; } new_amountSum = accAdd(new_amountSum, $(v).val()); }); $("#new_amountSum").text(new_amountSum); $("#new_amountSum").css({ "left": $("input[name='erp_price_review_dtl.new_amount']").eq(0).offset().left + 12 }); var new_no_taxrate_amountSum = 0; $("input[name='erp_price_review_dtl.new_no_taxrate_amount']").each(function (i, v) { if ($(v).val() == "待计算"||$(v).val() == "计算中...") { new_no_taxrate_amountSum = ""; return false; } new_no_taxrate_amountSum = accAdd(new_no_taxrate_amountSum, $(v).val()); }); $("#new_no_taxrate_amountSum").text(new_no_taxrate_amountSum); $("#new_no_taxrate_amountSum").css({ "left": $("input[name='erp_price_review_dtl.new_no_taxrate_amount']").eq(0).offset().left + 12 }); var differ_amountSum = 0; $("input[name='erp_price_review_dtl.differ_amount']").each(function (i, v) { if ($(v).val() == "待计算"||$(v).val() == "计算中...") { differ_amountSum = ""; return false; } differ_amountSum = accAdd(differ_amountSum, $(v).val()); }); $("#differ_amountSum").text(differ_amountSum); $("#differ_amountSum").css({ "left": $("input[name='erp_price_review_dtl.differ_amount']").eq(0).offset().left + 12 }); var differ_no_taxrate_amountSum = 0; $("input[name='erp_price_review_dtl.differ_no_taxrate_amount']").each(function (i, v) { if ($(v).val() == "待计算"||$(v).val() == "计算中...") { differ_no_taxrate_amountSum = ""; return false; } differ_no_taxrate_amountSum = accAdd(differ_no_taxrate_amountSum, $(v).val()); }); $("#differ_no_taxrate_amountSum").text(differ_no_taxrate_amountSum); $("#differ_no_taxrate_amountSum").css({ "left": $("input[name='erp_price_review_dtl.differ_no_taxrate_amount']").eq(0).offset().left + 12 }); } /** * 删除子表数据事件回调操作*/ deleteMethod = function () { } /** * 添加子表数据事件回调操作*/ createMethod = function () { BindEvent(); $(".subtrdel_js").hide(); } /** * 日期框选择事件回调操作*/ compute = function (value, date, endDate) { $("[name='erp_price_review.date']").val(value); LoadDtl(); } /** * 获取href里面的参数 * @param {String} parameter 参数名 * @returns {String} */ function getQueryVariable(parameter) { var query = window.location.search.substring(1); var vars = query.split("&"); for (var i = 0; i < vars.length; i++) { var pair = vars[i].split("="); if (pair[0] === parameter) { return pair[1]; } } return ""; } /** * 乘法 * @param arg1 * @param arg2 * @returns {Number} */ function accMul(arg1, arg2) { var num1 = Number(arg1.toString()); var num2 = Number(arg2.toString()); return Number(num1 * num2); } /** * 除法 * @param arg1 * @param arg2 * @returns {Number} */ function accDiv(arg1, arg2) { var t1 = 0, t2 = 0, r1, r2; try { t1 = arg1.toString().split(".")[1].length } catch (e) { } try { t2 = arg2.toString().split(".")[1].length } catch (e) { } with (Math) { r1 = Number(arg1.toString().replace(".", "")) r2 = Number(arg2.toString().replace(".", "")) return (r1 / r2) * pow(10, t2 - t1); } } /** * 加法 * @param arg1A * @param arg2 AS * @returns {Number} */ function accAdd(arg1, arg2) { var r1, r2, m, c; try { r1 = arg1.toString().split(".")[1].length } catch (e) { r1 = 0 } try { r2 = arg2.toString().split(".")[1].length } catch (e) { r2 = 0 } c = Math.abs(r1 - r2); m = Math.pow(10, Math.max(r1, r2)) if (c > 0) { var cm = Math.pow(10, c); if (r1 > r2) { arg1 = Number(arg1.toString().replace(".", "")); arg2 = Number(arg2.toString().replace(".", "")) * cm; } else { arg1 = Number(arg1.toString().replace(".", "")) * cm; arg2 = Number(arg2.toString().replace(".", "")); } } else { arg1 = Number(arg1.toString().replace(".", "")); arg2 = Number(arg2.toString().replace(".", "")); } return (arg1 + arg2) / m } /** * 减法 * @param arg1 * @param arg2 * @returns */ function accSub(arg1, arg2) { var r1, r2, m, n; try { r1 = arg1.toString().split(".")[1].length } catch (e) { r1 = 0 } try { r2 = arg2.toString().split(".")[1].length } catch (e) { r2 = 0 } m = Math.pow(10, Math.max(r1, r2)); //last modify by deeka //动态控制精度长度 n = (r1 >= r2) ? r1 : r2; return ((arg1 * m - arg2 * m) / m).toFixed(n); } function ConvertCurrency(money) { //汉字的数字 var cnNums = new Array('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'); //基本单位 var cnIntRadice = new Array('', '拾', '佰', '仟'); //对应整数部分扩展单位 var cnIntUnits = new Array('', '万', '亿', '兆'); //对应小数部分单位 var cnDecUnits = new Array('角', '分', '厘', '毫'); //整数金额时后面跟的字符 var cnInteger = '整'; //整型完以后的单位 var cnIntLast = '元'; //最大处理的数字 var maxNum = 999999999999999.9999; //金额整数部分 var integerNum; //金额小数部分 var decimalNum; //输出的中文金额字符串 var chineseStr = ''; //分离金额后用的数组,预定义 var parts; if (money === '') { return ''; } money = parseFloat(money); if (money >= maxNum) { //超出最大处理数字 return ''; } if (money === 0) { chineseStr = cnNums[0] + cnIntLast + cnInteger; return chineseStr; } //转换为字符串 money = money.toString(); if (money.indexOf('.') == -1) { integerNum = money; decimalNum = ''; } else { parts = money.split('.'); integerNum = parts[0]; decimalNum = parts[1].substr(0, 4); } //获取整型部分转换 if (parseInt(integerNum, 10) > 0) { var zeroCount = 0; var IntLen = integerNum.length; for (var i = 0; i < IntLen; i++) { var n = integerNum.substr(i, 1); var p = IntLen - i - 1; var q = p / 4; var m = p % 4; if (n == '0') { zeroCount++; } else { if (zeroCount > 0) { chineseStr += cnNums[0]; } //归零 zeroCount = 0; chineseStr += cnNums[parseInt(n)] + cnIntRadice[m]; } if (m == 0 && zeroCount < 4) { chineseStr += cnIntUnits[q]; } } chineseStr += cnIntLast; } //小数部分 if (decimalNum != '') { var decLen = decimalNum.length; for (var i = 0; i < decLen; i++) { var n = decimalNum.substr(i, 1); if (n != '0') { chineseStr += cnNums[Number(n)] + cnDecUnits[i]; } } } if (chineseStr == '') { chineseStr += cnNums[0] + cnIntLast + cnInteger; } else if (decimalNum == '') { chineseStr += cnInteger; } return chineseStr; }