//获取href里面的参数 getQueryVariable = function (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 ""; } $(document).ready(function () { //收货单相关字段隐藏 $("[name='erp_inorder.receipt_order_id']").parent().parent().hide(); $("[name='erp_inorder.receipt_order_code']").parent().parent().hide(); $("[name='erp_inorder.receipt_order_code']").attr("readonly", "readonly"); if (window.taskid != '') { } else { //var date = new Date(); //var curDate = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate(); //$("#construction_start_date").val(curDate); //$("#construction_end_date").val(curDate); } }); ///数据加载 initData = function () { LoadData(); LoadPage(); BindEvent(); ProcesField(); ResetShowType(); if ($.trim(sysid) != '' && initItems != null) { var sprintbtn = '表单打印'; $('#txtTitle').append(sprintbtn); } } var InOrder = {}; var ReceiptOrderList = []; // 加载入库单实体数据 function LoadData() { var sysid = window.sysid; var relationCode = getQueryVariable('relationCode'); var wareHouseId = getQueryVariable('wareHouseId'); sysid = sysid == "" ? 0 : sysid; // 主表数据 $.ajax({ url: "/ERP/Erp_inorder/GetInOrderBizData?sysid=" + sysid + "&relationCode=" + relationCode + "&wareHouseId=" + wareHouseId , async: false , cache: false , dataType: "json", success: function (data) { InOrder = data; } }); $.ajax({ url: '/ERP/Erp_ReceiptOrder/ReceiptOrderList?procurementOrderCode=' + InOrder.procurementOrder_id , async: false , cache: false , dataType: "json", success: function (data) { ReceiptOrderList = data; } }); } // 加载页面绑定数据 function LoadPage() { // 绑定主表数据 $("[name='erp_inorder.orderNum']").val(InOrder.orderNum); $("[name='erp_inorder.procurementOrder_id']").val(InOrder.procurementOrder_id); $("[name='erp_inorder.inorder_type']").val(InOrder.inorder_type); $("[name='erp_inorder.inorder_type']").trigger("chosen:updated"); $("[name='erp_inorder.supplier_id']").val(InOrder.supplier_id); $("[name='erp_inorder.supplier_id']").trigger("chosen:updated"); $("[name='erp_inorder.money']").val(InOrder.money); $("[name='erp_inorder.moneyfont']").val(InOrder.moneyfont); $("[name='erp_inorder.warehouse_id']").val(InOrder.warehouse_id); $("[name='erp_inorder.warehouse_id']").trigger("chosen:updated"); $("[name='erp_inorder.biz_time']").val(JsonDateToDate(InOrder.biz_time).Format('yyyy-MM-dd')); $("[name='erp_inorder.remark']").val(InOrder.remark); $("[name='erp_inorder.receipt_order_code']").val(InOrder.receipt_order_code); $("[name='erp_inorder.receipt_order_id']").val(InOrder.receipt_order_id); // 绑定子表数据 $.each(InOrder.Children, function (i, r) { $('#girdtable .body').eq(i).find("[name='erp_inorder_dtl.materielinfo_code']").val(r.materielinfo_code); $('#girdtable .body').eq(i).find("[name='erp_inorder_dtl.materielinfo_name']").val(r.materielinfo_name); $('#girdtable .body').eq(i).find("[name='erp_inorder_dtl.specification']").val(r.specification); $('#girdtable .body').eq(i).find("[name='erp_inorder_dtl.unit']").val(r.unit); $('#girdtable .body').eq(i).find("[name='erp_inorder_dtl.history_count']").val(r.history_count); $('#girdtable .body').eq(i).find("[name='erp_inorder_dtl.estimate_count']").val(r.estimate_count); $('#girdtable .body').eq(i).find("[name='erp_inorder_dtl.count']").val(r.count); $('#girdtable .body').eq(i).find("[name='erp_inorder_dtl.price']").val(r.price); $('#girdtable .body').eq(i).find("[name='erp_inorder_dtl.posterity']").val(r.posterity); $('#girdtable .body').eq(i).find("[name='erp_inorder_dtl.amount']").val(r.amount); $('#girdtable .body').eq(i).find("[name='erp_inorder_dtl.taxrate']").val(r.taxrate); $('#girdtable .body').eq(i).find("[name='erp_inorder_dtl.taxrate']").trigger("chosen:updated"); $('#girdtable .body').eq(i).find("[name='erp_inorder_dtl.no_taxrate_amount']").val(r.no_taxrate_amount); $('#girdtable .body').eq(i).find("[name='erp_inorder_dtl.remark']").val(r.remark); $('#girdtable .body').eq(i).find("[name='erp_inorder_dtl.purpose']").val(r.purpose); $('#girdtable .body').eq(i).find("[name='erp_inorder_dtl.purpose']").trigger("chosen:updated"); $('#girdtable .body').eq(i).find("[name='erp_inorder_dtl.freight_price']").val(r.freight_price); $('#girdtable .body').eq(i).find("[name='erp_inorder_dtl.freight_amount']").val(r.freight_amount); $('#girdtable .body').eq(i).find("[name='erp_inorder_dtl.freight_taxrate']").val(r.freight_taxrate); $('#girdtable .body').eq(i).find("[name='erp_inorder_dtl.freight_no_taxrate_amount']").val(r.freight_no_taxrate_amount); if (i + 1 != InOrder.Children.length) { if (window.taskid == '') { $(".subtradd_js").click(); } } }); } // 处理一些特殊字段 function ProcesField() { /* * 把页面上没展示的字段 对应生成出隐藏框 * 这样可以在提交的时候在表单里面取得到 */ $.each(InOrder, function (i, v) { if ((!$("input[name='erp_inorder." + i + "']").length > 0) && (!$("select[name='erp_inorder." + i + "']").length > 0) && (!$("textarea[name='erp_inorder." + i + "']").length > 0)) { v = v == null ? "" : v; var hiddenHtml = ''; $("[name='erp_inorder.orderNum']").after(hiddenHtml); } }); $.each(InOrder.Children, function (itemIndex, itmeData) { $.each(itmeData, function (i, v) { if (!$('#girdtable .body').eq(itemIndex).find("[name='erp_inorder_dtl." + i + "']").length > 0) { v = v == "null" ? "" : v; var hiddenHtml = ''; $("[name='erp_inorder_dtl.materielinfo_code']").eq(itemIndex).after(hiddenHtml); } }); }); /* * 采购审批的时候这些字段是联动变化的 * 流程配置成无法修改 * 这里给个edit的class后面抓取数据的时候就会抓到 */ $("[name='erp_inorder.money'],[name='erp_inorder.moneyfont'],[name='erp_inorder_dtl.no_taxrate_amount'],[name='erp_inorder.receipt_order_code'],[name='erp_inorder.receipt_order_id']").addClass("edit"); } // 重置展现方式(隐藏一下东西什么什么的) function ResetShowType() { // if (InOrder.IsHNT == false) {//非混凝土隐藏用途字段所有td var tdIndex = $('#girdtable .body').eq(0).find('[name="erp_inorder_dtl.purpose"]').parent('td').index(); $('#girdtable tr').each(function () { $(this).children("td").eq(tdIndex).hide(); }); } else { $('[name="erp_inorder_dtl.purpose"]').attr("checkexpession", "NotNull"); } if (InOrder.ShowFreight == 0) {// 合同上选择的是不包含运费的时候才展示运费相关的框 var tdIndex = $('#girdtable .body').eq(0).find('[name="erp_inorder_dtl.freight_price"]').parent('td').index(); $('#girdtable tr').each(function () { $(this).children("td").eq(tdIndex).hide(); }); tdIndex = $('#girdtable .body').eq(0).find('[name="erp_inorder_dtl.freight_amount"]').parent('td').index(); $('#girdtable tr').each(function () { $(this).children("td").eq(tdIndex).hide(); }); tdIndex = $('#girdtable .body').eq(0).find('[name="erp_inorder_dtl.freight_taxrate"]').parent('td').index(); $('#girdtable tr').each(function () { $(this).children("td").eq(tdIndex).hide(); }); tdIndex = $('#girdtable .body').eq(0).find('[name="erp_inorder_dtl.freight_no_taxrate_amount"]').parent('td').index(); $('#girdtable tr').each(function () { $(this).children("td").eq(tdIndex).hide(); }); $("[name='erp_inorder.freight_supplier_id']").parent().parent().hide(); } else { $("[name='erp_inorder.freight_supplier_id']").prepend(""); } if (InOrder.DisablesMoneyInput == 1) { $('[name="erp_inorder_dtl.price"]').attr('disabled', 'disabled'); $('[name="erp_inorder_dtl.amount"]').attr('disabled', 'disabled'); $('[name="erp_inorder_dtl.taxrate"]').each(function () { $(this).attr('disabled', 'disabled'); $(this).trigger("chosen:updated"); }); } if (InOrder.inorder_type == 2) { $('[name="erp_inorder_dtl.price"]').attr('disabled', 'disabled'); $('[name="erp_inorder_dtl.amount"]').attr('disabled', 'disabled'); } $(".subtradd_js").hide(); //设置是否显示选择收货单 var sysid = window.sysid; if ((sysid.length == 0 && ReceiptOrderList.length > 0) || (InOrder.receipt_order_id!=null&&InOrder.receipt_order_id.length > 0)) { $("[name='erp_inorder.receipt_order_code']").parent().parent().show(); } } function BindEvent() { $("[name='erp_inorder_dtl.price'],[name='erp_inorder_dtl.taxrate']").change(function () { var index = $("#girdtable .body [name='" + this.name + "']").index(this); CountDtlMoney(index); }); $("[name='erp_inorder_dtl.freight_price'],[name='erp_inorder_dtl.freight_taxrate']").change(function () { var index = $("#girdtable .body [name='" + this.name + "']").index(this); FreightCountDtlMoney(index); }); $("[name='erp_inorder_dtl.count']").change(function () { var index = $("#girdtable .body [name='" + this.name + "']").index(this); CountDtlMoney(index); FreightCountDtlMoney(index); }); $("[name='erp_inorder_dtl.amount']").change(function () { var index = $("#girdtable .body [name='" + this.name + "']").index(this); ChangeDtlAmount(index); }); $("[name='erp_inorder_dtl.freight_amount']").change(function () { var index = $("#girdtable .body [name='" + this.name + "']").index(this); FreightChangeDtlAmount(index); }); $("[name='erp_inorder_dtl.count']").keyup(function () { $(this).val($(this).val().toString().match(/^\d+(?:\.\d{0,4})?/)); }); $("[name='erp_inorder_dtl.price'],[name='erp_inorder_dtl.freight_price']").keyup(function () { $(this).val($(this).val().toString().match(/^\d+(?:\.\d{0,8})?/)); }); $("[name='erp_inorder_dtl.amount'],[name='erp_inorder_dtl.freight_amount']").keyup(function () { $(this).val($(this).val().toString().match(/^\d+(?:\.\d{0,2})?/)); }); //选择收货单 $("[name='erp_inorder.receipt_order_code']").click(function () { layer.open({ type: 2, title: '选择收货单', shadeClose: true, shade: 0.4, area: ['90%', '90%'], content: "/ERP/Erp_ReceiptOrder/ReceiptOrderView?procurementOrderCode=" + InOrder.procurementOrder_id }); }); } function SelectReceiptOrderCallback(id, code,num) { $("[name='erp_inorder.receipt_order_code']").val(code); $("[name='erp_inorder.receipt_order_id']").val(id); $('#girdtable .body').eq(0).find("[name='erp_inorder_dtl.count']").val(num); $('#girdtable .body').eq(0).find("[name='erp_inorder_dtl.count']").attr('disabled', 'disabled'); CountDtlMoney(0); layer.closeAll(); } /** * 计算子表物料费明细 * @param {any} i */ function CountDtlMoney(i) { var count = Number($('#girdtable .body').eq(i).find('input[name="erp_inorder_dtl.count"]').val()); var price = Number($('#girdtable .body').eq(i).find('input[name="erp_inorder_dtl.price"]').val()); var taxrate = accDiv(Number($('#girdtable .body').eq(i).find('select[name="erp_inorder_dtl.taxrate"]').val()), 100); // 含税合计=数量*单价 var amount = accMul(price, count); //不含税合计 =含税合计- (含税合计 / (1 + 税率) * 税率) var no_taxrate_amount = accSub(amount, (accMul(accDiv(amount, accAdd(1, taxrate)), taxrate))); $('#girdtable .body').eq(i).find('input[name="erp_inorder_dtl.amount"]').val(amount.toFixed(2)); $('#girdtable .body').eq(i).find('input[name="erp_inorder_dtl.no_taxrate_amount"]').val(no_taxrate_amount.toFixed(2)); CountAllMoney(); } /** * 计算子表运费明细 * @param {any} i */ function FreightCountDtlMoney(i) { var count = Number($('#girdtable .body').eq(i).find('input[name="erp_inorder_dtl.count"]').val()); var freight_price = Number($('#girdtable .body').eq(i).find('input[name="erp_inorder_dtl.freight_price"]').val()); var freight_taxrate = accDiv(Number($('#girdtable .body').eq(i).find('select[name="erp_inorder_dtl.freight_taxrate"]').val()), 100); // 含税合计=数量*单价 var freight_amount = accMul(freight_price, count); //不含税合计 =含税合计- (含税合计 / (1 + 税率) * 税率) var freight_no_taxrate_amount = accSub(freight_amount, (accMul(accDiv(freight_amount, accAdd(1, freight_taxrate)), freight_taxrate))); $('#girdtable .body').eq(i).find('input[name="erp_inorder_dtl.freight_amount"]').val(freight_amount.toFixed(2)); $('#girdtable .body').eq(i).find('input[name="erp_inorder_dtl.freight_no_taxrate_amount"]').val(freight_no_taxrate_amount.toFixed(2)); CountAllMoney(); } /** * 计算全部金额 * */ function CountAllMoney() { var allAmount = 0; $('#girdtable .body').each(function () { debugger; var amount = Number($(this).find('input[name="erp_inorder_dtl.amount"]').val()); var freight_amount = Number($(this).find('input[name="erp_inorder_dtl.freight_amount"]').val()); var curRowAmount = accAdd(amount, freight_amount); allAmount = accAdd(allAmount, curRowAmount); }); $('input[name="erp_inorder.money"]').val(allAmount); $('input[name="erp_inorder.moneyfont"]').val(ConvertCurrency(allAmount)); } /** * 修改子表运费金额 * @param {any} i */ var ChangeDtlAmount = function (i) { var count = Number($('#girdtable .body').eq(i).find('input[name="erp_inorder_dtl.count"]').val()); var amount = Number($('#girdtable .body').eq(i).find('input[name="erp_inorder_dtl.amount"]').val()); if (!count > 0) {// 0不能做被除数 return false; } var price = accDiv(amount, count).toFixed(8); $('#girdtable .body').eq(i).find('input[name="erp_inorder_dtl.price"]').val(price); CountDtlMoney(i); } /** * 修改子表运费金额 * @param {any} i */ var FreightChangeDtlAmount = function (i) { var count = Number($('#girdtable .body').eq(i).find('input[name="erp_inorder_dtl.count"]').val()); var freight_amount = Number($('#girdtable .body').eq(i).find('input[name="erp_inorder_dtl.freight_amount"]').val()); if (!count > 0) {// 0不能做被除数 return false; } var freight_price = accDiv(freight_amount, count); $('#girdtable .body').eq(i).find('input[name="erp_inorder_dtl.freight_price"]').val(freight_price.toFixed(8)); FreightCountDtlMoney(i); } //删除事件回调操作 deleteMethod = function () { $('#girdtable .body').each(function (i, v) { ChangeAmount(i); }); } //添加事件回调操作 createMethod = function () { } /** * 乘法 * @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; }