Browse Source

PC端及小程序端合同审批流程调整

ouyj 3 ngày trước cách đây
mục cha
commit
0f4dcf1951

+ 74 - 1
src/main/contract/com/yw/contract/client/action/ContractMiniAppAction.java

@@ -84,6 +84,8 @@ public class ContractMiniAppAction extends RequestAbs {
                 rv = getContractTypeList(json);
             } else if ("getPaymentTypeList".equals(task)) {
                 rv = getPaymentTypeList(json);
+            } else if ("selectClient".equals(task)) {
+                rv = selectClient(json);
             } else {
                 rv = new ResultVo();
                 rv.setReturnCode("-1");
@@ -269,7 +271,12 @@ public class ContractMiniAppAction extends RequestAbs {
         String supplierName = formData.optString("supplierName", "");
         if (StringUtils.isNotEmpty(supplierName)) {
             contractInfo.setSupplierName(supplierName);
-            contractInfo.setSecondparty_name(supplierName);
+        }
+        
+        // 设置供方名称(从 secondparty_name 字段获取)
+        String secondpartyName = formData.optString("secondparty_name", "");
+        if (StringUtils.isNotEmpty(secondpartyName)) {
+            contractInfo.setSecondparty_name(secondpartyName);
         }
         
         String contractMoneyStr = formData.optString("contract_money", "");
@@ -676,6 +683,19 @@ public class ContractMiniAppAction extends RequestAbs {
         contractInfoJson.put("contract_entrying_operator", contractInfo.getContract_entrying_operator());
         contractInfoJson.put("unit_id", contractInfo.getUnit_id());
         
+        // 添加公司名称字段(用于销售合同时对调需方供方)
+        // 采购合同:firstparty_name=公司,secondparty_name=供应商
+        // 销售合同:firstparty_name=客户,secondparty_name=公司
+        String companyName = "";
+        if (contractInfo.getContract_type() != null && contractInfo.getContract_type() == 1) {
+            // 销售合同:从 secondparty_name 获取公司名称
+            companyName = contractInfo.getSecondparty_name() != null ? contractInfo.getSecondparty_name() : "";
+        } else {
+            // 采购合同或其他:从 firstparty_name 获取公司名称
+            companyName = contractInfo.getFirstparty_name() != null ? contractInfo.getFirstparty_name() : "";
+        }
+        contractInfoJson.put("companyName", companyName);
+        
         // 添加物料明细列表
         JSONArray materialArray = new JSONArray();
         if (contractMaterialList != null && !contractMaterialList.isEmpty()) {
@@ -803,6 +823,19 @@ public class ContractMiniAppAction extends RequestAbs {
         // 设置录入人信息 
         contractInfoJson.put("contract_entrying_operator", contractInfo.getContract_entrying_operator());
         contractInfoJson.put("unit_id", contractInfo.getUnit_id());
+        
+        // 添加公司名称字段(用于销售合同时对调需方供方)
+        // 采购合同:firstparty_name=公司,secondparty_name=供应商
+        // 销售合同:firstparty_name=客户,secondparty_name=公司
+        String companyName = "";
+        if (contractInfo.getContract_type() != null && contractInfo.getContract_type() == 1) {
+            // 销售合同:从 secondparty_name 获取公司名称
+            companyName = contractInfo.getSecondparty_name() != null ? contractInfo.getSecondparty_name() : "";
+        } else {
+            // 采购合同或其他:从 firstparty_name 获取公司名称
+            companyName = contractInfo.getFirstparty_name() != null ? contractInfo.getFirstparty_name() : "";
+        }
+        contractInfoJson.put("companyName", companyName);
 
         // 添加物料明细列表
         JSONArray materialArray = new JSONArray();
@@ -1009,6 +1042,46 @@ public class ContractMiniAppAction extends RequestAbs {
         return rv;
     }
 
+    /**
+     * 选择客户(支持分页搜索)- 参考 PC 端实现
+     */
+    private ResultVo selectClient(JSONObject json) throws Exception {
+        ResultVo rv = new ResultVo();
+        User user = getUserFromJson(json);
+        
+        // 获取分页参数(参考 selectSupplier)
+        int page = json.optInt("page", 1);
+        int pageSize = json.optInt("pageSize", 20);
+        String clientName = json.optString("clientName", "");
+        
+        MesCommonHelper mesCommonHelper = new MesCommonHelper();
+        org.json.JSONObject resp = mesCommonHelper.getClients(page, pageSize, clientName);
+        int total = resp.getInt("total");
+        // 获取 rows 数组 
+        org.json.JSONArray rowsArray = resp.getJSONArray("rows");   
+        
+        // 转换为 List<Map<String, Object>>(参考 selectSupplier)
+        List<Map<String, Object>> clientList = new ArrayList<>();
+        for (int i = 0; i < rowsArray.length(); i++) {
+            org.json.JSONObject jsonObject = rowsArray.getJSONObject(i);
+            Map<String, Object> map = new HashMap<>();
+            for (String key : jsonObject.keySet()) {
+                Object value = jsonObject.get(key);
+                map.put(key, value);
+            }
+            clientList.add(map);
+        }
+        
+        Map<String, Object> resultMap = new HashMap<>();
+        resultMap.put("list", clientList);   // ✅ 返回对象列表,而不是 JSON 字符串
+        resultMap.put("total", total);   
+
+        rv.setReturnCode("1");
+        rv.setReturnMsg("success");
+        rv.setReturnParams(resultMap);
+        return rv;
+    }
+
     @Override
     public String getServiceId() {
         return serviceId;

+ 2 - 1
src/main/contract/com/yw/contract/contract/action/ContractFlowCustomAction.java

@@ -207,7 +207,8 @@ public class ContractFlowCustomAction  extends BpmBaseAction {
 		request.setAttribute("contractMaterialList", contractMaterialList);
 		request.setAttribute("contractPaymentList", contractPaymentList);
 		request.setAttribute("flow_ins_id", flow_id);
-		request.setAttribute("companyName", contractInfo.getFirstparty_name()); // 传递公司名称到前端
+		String companyName = oasession.getCompanyName();
+		request.setAttribute("companyName", companyName); // 传递公司名称到前端
 		String insId = contractInfo.getFlowInsId().toString();
 		String formId = "200002";
 		if(StringUtils.isNotEmpty(contractInfo.getDepartmentalOpinion())){

+ 15 - 7
src/main/webapp/yw/contract/contractFlowCustom/js/contract.js

@@ -43,7 +43,8 @@ function initContractTypeListener() {
 }
 
 // 根据合同类型调整需方和供方的显示
-function adjustPartyDisplay(contractType) {
+// preserveValues: 是否保留原有值(true=保留,false=清空后重新设置)
+function adjustPartyDisplay(contractType, preserveValues) {
 	// 合同类型:1=销售合同,2=采购合同
 	// 采购合同或未选择类型:需方=公司(只读),供方=选择供应商按钮
 	// 销售合同:需方=选择客户按钮,供方=公司(只读)
@@ -52,14 +53,19 @@ function adjustPartyDisplay(contractType) {
 	// 从隐藏字段获取公司名称
 	var companyName = $("#companyName").val() || "";
 
-	$("#supplierName").val(""); // 清空hidden字段
-	$("#supplierCode").val("");
+	if (!preserveValues) {
+		$("#supplierName").val(""); // 清空hidden字段
+		$("#supplierCode").val("");
+	}
+	
 	if (isSalesContract) {
 		// 销售合同:需方显示选择客户按钮,供方显示公司名称(只读)
 		$("#firstparty_name_display").hide();
 		$("#clientSelectDiv").show();
-		$("#firstparty_name_text").val(""); // 清空显示框
-		$("#firstparty_name").val(""); // 清空hidden字段
+		if (!preserveValues) {
+			$("#firstparty_name_text").val(""); // 清空显示框
+			$("#firstparty_name").val(""); // 清空hidden字段
+		}
 		
 		$("#supplierSelectDiv").hide();
 		$("#secondparty_name_display").show().val(companyName);
@@ -72,8 +78,10 @@ function adjustPartyDisplay(contractType) {
 		
 		$("#supplierSelectDiv").show();
 		$("#secondparty_name_display").hide();
-		$("#secondparty_name_text").val(""); // 清空显示框
-		$("#secondparty_name").val(""); // 清空hidden字段
+		if (!preserveValues) {
+			$("#secondparty_name_text").val(""); // 清空显示框
+			$("#secondparty_name").val(""); // 清空hidden字段
+		}
 	}
 }
 

+ 8 - 2
src/main/webapp/yw/contract/contractFlowCustom/processContract.jsp

@@ -58,6 +58,12 @@
                      }
                  });
         	}else{
+        		// 发起环节:根据当前合同类型初始化需方供方显示(保留原有值)
+        		var contractType = $("#contract_type").val();
+        		if(contractType) {
+        			adjustPartyDisplay(contractType, true);
+        		}
+        				
         		addMaterialIdAndName();
         		addPayIdAndName();
         		updateContractMoneyState(); 
@@ -605,7 +611,7 @@
 							<input id="selectSupplierBtn" type="button" class="button_fj" value="选择供应商" onclick="supplier_search()"/>
 						</div>
 						<!-- 销售合同:显示公司名称(只读) -->
-						<input id="secondparty_name_display" type="text" value="${contractInfo.firstparty_name}" readonly="readonly" style="display:none;"/>
+						<input id="secondparty_name_display" type="text" value="${companyName}" readonly="readonly" style="display:none;"/>
 				    </c:when>
                     <c:otherwise>
                     	${contractInfo.secondparty_name }
@@ -1030,7 +1036,7 @@
     <input id="relation_ids" name="contractInfo.relation_ids" value="" type="hidden"/>
     <input id="contract_entrying_operator" name="contractInfo.contract_entrying_operator" type="hidden" value="${contractInfo.contract_entrying_operator }"  />
 	<!-- 存储公司名称,用于销售合同时对调需方供方 -->
-	<input id="companyName" name="companyName" value="${contractInfo.firstparty_name}" type="hidden"/>
+	<input id="companyName" name="companyName" value="${companyName}" type="hidden"/>
 	<!-- 供方/客户编码和名称 -->
 	<input id="supplierCode" name="contractInfo.supplierCode" type="hidden" value="${contractInfo.supplierCode }"/>
 	<input id="supplierName" name="contractInfo.supplierName" type="hidden" value="${contractInfo.supplierName }"/>