Browse Source

合同金额修改

ouyj 1 week ago
parent
commit
caab3c1f25

+ 42 - 0
src/main/webapp/yw/contract/contractFlowCustom/js/contract.js

@@ -605,6 +605,9 @@ function calculateTotalPrice() {
     
     
     // 更新付款信息中的金额
     // 更新付款信息中的金额
     calculatePaymentAmount();
     calculatePaymentAmount();
+    
+    // 更新合同金额大写
+    updateContractMoneyUppercase();
      
      
     // 检查物料是否已填写,更新付款信息状态
     // 检查物料是否已填写,更新付款信息状态
     //checkMaterialFilled();
     //checkMaterialFilled();
@@ -670,6 +673,45 @@ function clearAllPaymentInfo() {
     addPayIdAndName(); // 重新编号
     addPayIdAndName(); // 重新编号
 }
 }
 
 
+//数字转中文大写
+function numberToChineseUppercase(n) {
+    var fraction = ['角', '分'];
+    var digit = [
+        '零', '壹', '贰', '叁', '肆',
+        '伍', '陆', '柒', '捌', '玖'
+    ];
+    var unit = [
+        ['元', '万', '亿'],
+        ['', '拾', '佰', '仟']
+    ];
+    var head = n < 0 ? '欠' : '';
+    n = Math.abs(n);
+    var s = '';
+    for (var i = 0; i < fraction.length; i++) {
+        s += (digit[Math.floor(n * 10 * Math.pow(10, i)) % 10] + fraction[i]).replace(/零./, '');
+    }
+    s = s || '整';
+    n = Math.floor(n);
+    for (var i = 0; i < unit[0].length && n > 0; i++) {
+        var p = '';
+        for (var j = 0; j < unit[1].length && n > 0; j++) {
+            p = digit[n % 10] + unit[1][j] + p;
+            n = Math.floor(n / 10);
+        }
+        s = p.replace(/(零.)*零$/, '').replace(/^$/, '零') + unit[0][i] + s;
+    }
+    return head + s.replace(/(零.)*零元/, '元')
+        .replace(/(零.)+/g, '零')
+        .replace(/^整$/, '零元整');
+}
+
+// 更新合同金额大写显示
+function updateContractMoneyUppercase() {
+    var contractMoney = parseFloat($("#contract_money").val()) || 0;
+    var uppercase = numberToChineseUppercase(contractMoney);
+    $("#contract_money_uppercase").text(uppercase);
+}
+
 function initPriceForProcess() { 
 function initPriceForProcess() { 
     var total = 0; 
     var total = 0; 
     $(".startTr1:not(.hide)").each(function() {
     $(".startTr1:not(.hide)").each(function() {

+ 31 - 1
src/main/webapp/yw/contract/contractFlowCustom/processContract.jsp

@@ -166,10 +166,20 @@
                 	$(this).removeData("manual-input");
                 	$(this).removeData("manual-input");
                 	 $("#contract_money").val(totalPrice);
                 	 $("#contract_money").val(totalPrice);
                 	 addError("合同金额不能小于物料总金额: " + totalPrice.toFixed(2));  
                 	 addError("合同金额不能小于物料总金额: " + totalPrice.toFixed(2));  
-                } 
+                	 // 更新大写金额
+                	 updateContractMoneyUppercase();
+                } else {
+                	 // 即使没有修正,也要更新大写(用户手动修改金额的情况)
+                	 updateContractMoneyUppercase();
+                }
                 calculatePaymentAmount();
                 calculatePaymentAmount();
             });
             });
             
             
+            // 监听合同金额变化,实时更新大写
+            $("#contract_money").on('input', function() {
+                updateContractMoneyUppercase();
+            });
+            
             $(document).on('blur', '.startTr1:not(.hide) input.qty', function() {
             $(document).on('blur', '.startTr1:not(.hide) input.qty', function() {
                 var qty = parseFloat($(this).val()) || 0;
                 var qty = parseFloat($(this).val()) || 0;
                 if (qty <= 0) { 
                 if (qty <= 0) { 
@@ -328,6 +338,20 @@
             if ($('.startTr1:not(.hide)').length > 0) {
             if ($('.startTr1:not(.hide)').length > 0) {
                 calculateTotalPrice();
                 calculateTotalPrice();
             }
             }
+            
+            // 初始化合同金额大写显示
+            if (se == 1) {
+                // 可编辑模式:使用updateContractMoneyUppercase函数
+                updateContractMoneyUppercase();
+            } else {
+                // 只读模式:直接从隐藏域或文本中获取金额
+                var contractMoney = parseFloat('${contractInfo.contract_money}') || 0;
+                if (contractMoney > 0) {
+                    $("#contract_money_uppercase_display").text(numberToChineseUppercase(contractMoney));
+                } else {
+                    $("#contract_money_uppercase_display").text('零元整');
+                }
+            }
         });
         });
     </script>
     </script>
     <style type="text/css">
     <style type="text/css">
@@ -530,12 +554,18 @@
 				 <c:choose>
 				 <c:choose>
                     <c:when test="${fn:contains(curTacheModel.table_fields, ',contract_money,') || curTacheModel.n_se eq 1}">
                     <c:when test="${fn:contains(curTacheModel.table_fields, ',contract_money,') || curTacheModel.n_se eq 1}">
                         <input type="text" id="contract_money" name="contractInfo.contract_money" value="${contractInfo.contract_money }" onkeyup="value=value.replace(/[^\d\.]/g,'')" onblur="value=value.replace(/[^\d\.]/g,'')">
                         <input type="text" id="contract_money" name="contractInfo.contract_money" value="${contractInfo.contract_money }" onkeyup="value=value.replace(/[^\d\.]/g,'')" onblur="value=value.replace(/[^\d\.]/g,'')">
+                        <div style="font-size: 12px; color: #666; margin-top: 5px;">
+                        	<span id="contract_money_uppercase">零元整</span>
+                        </div>
                         <div class="contract-money-hint manual-input-hint" style="display: none;">
                         <div class="contract-money-hint manual-input-hint" style="display: none;">
 						        合同金额可随时输入,添加物料后会自动计算总金额
 						        合同金额可随时输入,添加物料后会自动计算总金额
 						 </div>
 						 </div>
                     </c:when>
                     </c:when>
                     <c:otherwise>
                     <c:otherwise>
                         ${contractInfo.contract_money }
                         ${contractInfo.contract_money }
+                        <div style="font-size: 12px; color: #666; margin-top: 5px;">
+                        	<span id="contract_money_uppercase_display"></span>
+                        </div>
                     </c:otherwise>
                     </c:otherwise>
                 </c:choose>  
                 </c:choose>  
 			</td>
 			</td>

+ 16 - 1
src/main/webapp/yw/contract/contractFlowCustom/startContract.jsp

@@ -118,10 +118,20 @@
                 	 $(this).removeData("manual-input");
                 	 $(this).removeData("manual-input");
                 	 $("#contract_money").val(totalPrice);
                 	 $("#contract_money").val(totalPrice);
                 	 addError("合同金额不能小于物料总金额: " + totalPrice.toFixed(2));  
                 	 addError("合同金额不能小于物料总金额: " + totalPrice.toFixed(2));  
-                } 
+                	 // 更新大写金额
+                	 updateContractMoneyUppercase();
+                } else {
+                	 // 即使没有修正,也要更新大写(用户手动修改金额的情况)
+                	 updateContractMoneyUppercase();
+                }
                 calculatePaymentAmount();
                 calculatePaymentAmount();
             });
             });
             
             
+            // 监听合同金额变化,实时更新大写
+            $("#contract_money").on('input', function() {
+                updateContractMoneyUppercase();
+            });
+            
             $(document).on('blur', '.startTr1:not(.hide) input.qty', function() {
             $(document).on('blur', '.startTr1:not(.hide) input.qty', function() {
                 var qty = parseFloat($(this).val()) || 0;
                 var qty = parseFloat($(this).val()) || 0;
                 if (qty <= 0) { 
                 if (qty <= 0) { 
@@ -248,6 +258,8 @@
             if ($('.startTr1:not(.hide)').length > 0) {
             if ($('.startTr1:not(.hide)').length > 0) {
                 calculateTotalPrice();
                 calculateTotalPrice();
             }
             }
+            // 初始化合同金额大写显示
+            updateContractMoneyUppercase();
         });
         });
     </script>
     </script>
     <style type="text/css">
     <style type="text/css">
@@ -424,6 +436,9 @@
             <td class="l-table-edit-text">合同金额:</td>
             <td class="l-table-edit-text">合同金额:</td>
 			<td class="l-table-edit-td" colspan="2">
 			<td class="l-table-edit-td" colspan="2">
 				 <input id="contract_money" name="contractInfo.contract_money" type='text' value="" onkeyup="value=value.replace(/[^\d\.]/g,'')" onblur="value=value.replace(/[^\d\.]/g,'')"/> 
 				 <input id="contract_money" name="contractInfo.contract_money" type='text' value="" onkeyup="value=value.replace(/[^\d\.]/g,'')" onblur="value=value.replace(/[^\d\.]/g,'')"/> 
+				 <div style="font-size: 12px; color: #666; margin-top: 5px;">
+				 	<span id="contract_money_uppercase">零元整</span>
+				 </div>
 				 <div class="contract-money-hint manual-input-hint" style="display: none;">
 				 <div class="contract-money-hint manual-input-hint" style="display: none;">
 				        合同金额可随时输入,添加物料后会自动计算总金额
 				        合同金额可随时输入,添加物料后会自动计算总金额
 				 </div>
 				 </div>

+ 12 - 0
src/main/webapp/yw/contract/contractFlowCustom/viewContract.jsp

@@ -54,6 +54,15 @@
         		addMaterialIdAndName();
         		addMaterialIdAndName();
         		addPayIdAndName();
         		addPayIdAndName();
         	} 
         	} 
+        	
+        	// 初始化合同金额大写显示
+        	// viewContract.jsp 始终是只读模式,直接从后端数据获取金额
+        	var contractMoney = parseFloat('${contractInfo.contract_money}') || 0;
+        	if (contractMoney > 0) {
+        		$("#contract_money_uppercase_display").text(numberToChineseUppercase(contractMoney));
+        	} else {
+        		$("#contract_money_uppercase_display").text('零元整');
+        	}
         }); 
         }); 
     </script>
     </script>
     <style type="text/css">
     <style type="text/css">
@@ -172,6 +181,9 @@
             <td class="l-table-edit-text">合同金额:</td>
             <td class="l-table-edit-text">合同金额:</td>
 			<td class="l-table-edit-td" colspan="2"> 
 			<td class="l-table-edit-td" colspan="2"> 
                 ${contractInfo.contract_money }  
                 ${contractInfo.contract_money }  
+                <div style="font-size: 12px; color: #666; margin-top: 5px;">
+                	<span id="contract_money_uppercase_display"></span>
+                </div>
 			</td>
 			</td>
         </tr> 
         </tr> 
         <tr>
         <tr>