浏览代码

财务开票后校验逻辑修改

ljy121 11 月之前
父节点
当前提交
b3eed1a010

+ 7 - 0
zjugis-business/src/main/java/com/zjugis/business/flow/contractinvoice/controller/FlowContractInvoiceController.java

@@ -43,6 +43,13 @@ public class FlowContractInvoiceController extends BaseController {
         return resultPage(map);
     }
 
+    @WorkFlow(isReceiveMaterial = true, isReceiveOpinion = true)
+    @GetMapping("/afterFinance")
+    public String afterFinance(Integer kp, String flowInstanceId) throws Exception {
+        Map<String, Object> map = invoiceFlowService.getFormParams(flowInstanceId,kp);
+        return resultPage(map);
+    }
+
 
     @GetMapping("/mobileAdd")
     public CommonResult<ContractInvoiceVO> mobileAdd(String activityTemplateId, String flowInstanceId, String userId){

+ 788 - 0
zjugis-business/src/main/resources/templates/FlowContractInvoice/afterFinance.ftl

@@ -0,0 +1,788 @@
+<@w.workFlow javascripts=['/FlowContractInvoice/js/afterFinance.js','/flow/js/formCommon.js', '/OwCommon/OwCommon.js']
+styles=[ '/flow/css/formCommon.css', '/OwCommon/OwCommon.css' ]>
+    <style type="text/css">
+        .z-write {
+            border: 1px solid rgb(203, 209, 214) !important;
+            border-radius: 4px !important;
+        }
+    </style>
+    <div class="z-position form-boss ow-tabs" name="flow-form">
+        <ul class="ow-tab-nav oa_tabBox">
+            <li z-tabindex="0" class="ow-tab-item on" data-name="jbxx">基础信息</li>
+            <#if WORKFLOW.OPINION! !="">
+                <li z-tabindex="1" class="ow-tab-item" data-name="yj">审批意见</li>
+            </#if>
+        </ul>
+
+        <div class="ow-tab-scroll z-tab-content">
+            <div class="ow-tab-content" name="jbxx" style="padding-bottom: 40px;">
+                <div class="z-form-row" style="display: none;">
+                    <input type="text" value="${formEntity.instanceId!}" name="contractInvoice$instanceId">
+                    <input type="text" value="${formEntity.id!}" name="contractInvoice$id">
+                    <input type="text" value="${formEntity.contractId!}" name="contractInvoice$contractId">
+                    <input type="text" value="${formEntity.contractMilestoneId!}" name="contractInvoice$contractMilestoneId">
+                </div>
+                <div class="form-title" style="margin-top: 0px;">
+                    <div class="form-icon">
+                        <img src="/imgs/titleIcon.png" alt="">
+                        <span>合同信息</span>
+                    </div>
+                    <div class="form-btn">
+                    </div>
+                </div>
+                <div class="jbxx-box jbxx-box-flex">
+                    <table class="jbxx-table-info">
+                        <tr>
+                            <td class="th">
+                                <div class="form-label">合同名称:</div>
+                            </td>
+                            <td colspan="3">
+                                <div class="form-group">
+                                    <div class="form-item btns-form-box">
+                                        <input type="text" style="display: none" name="contractInvoice$contractId" value="${formEntity.contractId!}">
+                                        <div class="z-comp-input" name="contract$name">
+                                            <input type="text" value="${(contract.name)!}">
+                                        </div>
+                                    </div>
+                                </div>
+                            </td>
+                        </tr>
+                        <tr>
+                            <td class="th">
+                                <div class="form-label">合同编号:</div>
+                            </td>
+                            <td>
+                                <div class="form-group">
+                                    <div class="form-item">
+                                        <div class="z-comp-input" name="contract$contractNumber">
+                                            <input type="text" value="${(contract.contractNumber)!}">
+                                        </div>
+                                    </div>
+                                </div>
+                            </td>
+                            <td class="th">
+                                <div class="form-label">合同主类型:</div>
+                            </td>
+                            <td>
+                                <div class="form-group">
+                                    <div class="form-item">
+                                        <div class="z-comp-input" name="contract$mainType">
+                                            <input type="text" value="${mainType!}">
+                                        </div>
+                                    </div>
+                                </div>
+                            </td>
+                        </tr>
+                        <tr>
+                            <td class="th">
+                                <div class="form-label">合同次类型:</div>
+                            </td>
+                            <td>
+                                <div class="form-group">
+                                    <div class="form-item">
+                                        <div class="z-comp-input" name="contract$secondType">
+                                            <input type="text" value="${secondType!}">
+                                        </div>
+                                    </div>
+                                </div>
+                            </td>
+                            <td class="th">
+                                <div class="form-label">关联合同里程碑:</div>
+                            </td>
+                            <td>
+                                <div class="form-group">
+                                    <div class="form-item btns-form-box">
+                                        <input type="text" style="display: none" name="contractInvoice$contractMilestoneId" value="${formEntity.contractMilestoneId!}">
+                                        <div class="z-comp-input" name="milestone">
+                                            <input type="text" value="${formEntity.contractMilestoneName!}" name="contractInvoice$contractMilestoneName">
+                                            <div id="selectMilestone" style="width: 50px;float: right; " name="selectMilestone">
+                                                <div class="btn btn-sm btn-primary">选择</div>
+                                            </div>
+                                        </div>
+                                    </div>
+                                </div>
+                            </td>
+                        </tr>
+                    </table>
+                </div>
+                <div class="form-title" style="margin-top: 0px;">
+                    <div class="form-icon">
+                        <img src="/imgs/titleIcon.png" alt="">
+                        <span>项目信息</span>
+                    </div>
+                    <div class="form-btn">
+                    </div>
+                </div>
+                <div class="jbxx-box jbxx-box-flex">
+                    <table class="jbxx-table-info">
+                        <tr>
+                            <td class="th">
+                                <div class="form-label">项目名称:</div>
+                            </td>
+                            <td colspan="3">
+                                <div class="form-group">
+                                    <div class="form-item">
+                                        <div class="z-comp-input" name="project$xmmc">
+                                            <input type="text" value="${(project.xmmc)!}">
+                                        </div>
+                                    </div>
+                                </div>
+                            </td>
+                        </tr>
+                        <tr>
+                            <td class="th">
+                                <div class="form-label">项目编号:</div>
+                            </td>
+                            <td>
+                                <div class="form-group">
+                                    <div class="form-item">
+                                        <div class="z-comp-input" name="project$xmbh">
+                                            <input type="text" value="${(project.xmbh)!}">
+                                        </div>
+                                    </div>
+                                </div>
+                            </td>
+                            <td class="th">
+                                <div class="form-label">项目类型:</div>
+                            </td>
+                            <td>
+                                <div class="form-group">
+                                    <div class="form-item">
+                                        <div class="z-comp-input" name="project$projectTypeName">
+                                            <input type="text" value="${(project.projectTypeName)!}">
+                                        </div>
+                                    </div>
+                                </div>
+                            </td>
+                        </tr>
+                        <tr>
+                            <td class="th">
+                                <div class="form-label">项目责任部门:</div>
+                            </td>
+                            <td>
+                                <div class="form-group">
+                                    <div class="form-item">
+                                        <div class="z-comp-input" name="project$zrbm">
+                                            <input type="text" value="${(project.zrbm)!}">
+                                        </div>
+                                    </div>
+                                </div>
+                            </td>
+                            <td class="th">
+                                <div class="form-label">销售经理:</div>
+                            </td>
+                            <td>
+                                <div class="form-group">
+                                    <div class="form-item">
+                                        <div class="z-comp-input" name="project$xsry">
+                                            <input type="text" value="${(project.xsry)!}">
+                                        </div>
+                                    </div>
+                                </div>
+                            </td>
+                        </tr>
+                    </table>
+                </div>
+                <div class="form-title" style="margin-top: 0px;">
+                    <div class="form-icon">
+                        <img src="/imgs/titleIcon.png" alt="">
+                        <span>基本信息</span>
+                    </div>
+                    <div class="form-btn">
+                    </div>
+                </div>
+                <div class="jbxx-box jbxx-box-flex">
+                    <table class="jbxx-table-info">
+                        <tr>
+                            <td class="th">
+                                <div class="form-label">开票申请人:</div>
+                            </td>
+                            <td>
+                                <div class="form-group">
+                                    <div class="form-item">
+                                        <div class="z-comp-input" name="contractInvoice$applyWorkerName">
+                                            <input type="text" value="${formEntity.applyWorkerName!}">
+                                        </div>
+                                    </div>
+                                </div>
+                            </td>
+                            <td class="th">
+                                <div class="form-label">所在部门:</div>
+                            </td>
+                            <td>
+                                <div class="form-group">
+                                    <div class="form-item">
+                                        <div class="z-comp-input" name="contractInvoice$applyWorkerDept">
+                                            <input type="text" value="${formEntity.applyWorkerDept!}">
+                                        </div>
+                                    </div>
+                                </div>
+                            </td>
+                        </tr>
+                        <tr>
+                            <td class="th">
+                                <div class="form-label">申请时间:</div>
+                            </td>
+                            <td>
+                                <div class="form-group">
+                                    <div class="form-item">
+                                        <div class="z-comp-input" name="contractInvoice$applyDate">
+                                            <input type="text" value="${formEntity.applyDate!}">
+                                        </div>
+                                    </div>
+                                </div>
+                            </td>
+                            <td class="th">
+                                <div class="form-label">开票单号:</div>
+                            </td>
+                            <td>
+                                <div class="form-group">
+                                    <div class="form-item btns-form-box">
+                                        <div class="z-comp-input" name="contractInvoice$invoiceNumber">
+                                            <input type="text" value="${formEntity.invoiceNumber!}">
+                                            <div id="generateSerial" style="width: 50px; " name="generateSerial">
+                                                <div class="btn btn-sm btn-primary">生成</div>
+                                            </div>
+                                        </div>
+                                    </div>
+                                </div>
+                            </td>
+                        </tr>
+
+
+                        <tr>
+                            <td class="th">
+                                <div class="form-label">客户名称:</div>
+                            </td>
+                            <td>
+                                <div class="form-group">
+                                    <div class="form-item">
+                                        <div class="z-comp-input" name="contractInvoice$customerName">
+                                            <input type="text" value="${formEntity.customerName!}">
+                                        </div>
+                                    </div>
+                                </div>
+                            </td>
+                            <td class="th">
+                                <div class="form-label">税号:</div>
+                            </td>
+                            <td>
+                                <div class="form-group">
+                                    <div class="form-item">
+                                        <div class="z-comp-input" name="contractInvoice$taxNumber">
+                                            <input type="text" value="${formEntity.taxNumber!}">
+                                        </div>
+                                    </div>
+                                </div>
+                            </td>
+                        </tr>
+                        <tr>
+                            <td class="th">
+                                <div class="form-label">开户行:</div>
+                            </td>
+                            <td>
+                                <div class="form-group">
+                                    <div class="form-item">
+                                        <div class="z-comp-input" name="contractInvoice$bank">
+                                            <input type="text" value="${formEntity.bank!}">
+                                        </div>
+                                    </div>
+                                </div>
+                            </td>
+                            <td class="th">
+                                <div class="form-label">账号:</div>
+                            </td>
+                            <td>
+                                <div class="form-group">
+                                    <div class="form-item">
+                                        <div class="z-comp-input" name="contractInvoice$bankaccount">
+                                            <input type="text" value="${formEntity.bankaccount!}">
+                                        </div>
+                                    </div>
+                                </div>
+                            </td>
+                        </tr>
+                        <tr>
+                            <td class="th">
+                                <div class="form-label">开票单位:</div>
+                            </td>·
+                            <td>
+                                <div class="form-group">
+                                    <div class="z-comp-selecttree" name="invoiceCompany">
+                                        <input type="hidden" name="contractInvoice$invoiceCompanyId" value="${formEntity.invoiceCompanyId!}">
+                                        <input type="hidden" name="contractInvoice$invoiceCompany" value="${formEntity.invoiceCompany!}">
+                                        <div class="z-inputselect-bar">
+                                            <span> ${formEntity.invoiceCompany!} </span><i></i>
+                                        </div>
+                                    </div>
+                                </div>
+                            </td>
+                            <td class="th">
+                                <div class="form-label">开票金额:</div>
+                            </td>
+                            <td>
+                                <div class="form-group">
+                                    <div class="form-item">
+                                        <div class="z-comp-input" name="contractInvoice$invoiceAmount">
+                                            <input type="text" value="${formEntity.invoiceAmount!}">
+                                        </div>
+                                    </div>
+                                </div>
+                            </td>
+                        </tr>
+                        <tr>
+                            <td class="th">
+                                <div class="form-label">发票类型:</div>
+                            </td>
+                            <td>
+                                <div class="form-group">
+                                    <div class="form-item">
+                                        <div class="z-comp-select" name="contractInvoice$invoiceType"
+                                             data='${invoiceTypeList!}' value="${formEntity.invoiceType!}">
+                                            <div class="z-inputselect-bar">
+                                                <span> ${invoiceType!} </span><i></i>
+                                            </div>
+                                        </div>
+                                    </div>
+                                </div>
+                            </td>
+                            <td class="th">
+                                <div class="form-label">开票内容:</div>
+                            </td>
+                            <td>
+                                <div class="form-group">
+                                    <div class="form-item">
+                                        <div class="z-comp-input" name="contractInvoice$invoiceContent">
+                                            <input type="text" value="${formEntity.invoiceContent!}">
+                                        </div>
+                                    </div>
+                                </div>
+                            </td>
+                        </tr>
+
+                        <tr>
+                            <td class="th">
+                                <div class="form-label">规格:</div>
+                            </td>
+                            <td>
+                                <div class="form-group">
+                                    <div class="form-item">
+                                        <div class="z-comp-input" name="contractInvoice$gg">
+                                            <input type="text" value="${formEntity.gg!}">
+                                        </div>
+                                    </div>
+                                </div>
+                            </td>
+                            <td class="th">
+                                <div class="form-label">数量:</div>
+                            </td>
+                            <td>
+                                <div class="form-group">
+                                    <div class="form-item">
+                                        <div class="z-comp-input" name="contractInvoice$sl">
+                                            <input type="text" value="${formEntity.sl!}">
+                                        </div>
+                                    </div>
+                                </div>
+                            </td>
+                        </tr>
+
+                        <tr>
+                            <td class="th">
+                                <div class="form-label">单价:</div>
+                            </td>
+                            <td>
+                                <div class="form-group">
+                                    <div class="form-item">
+                                        <div class="z-comp-input" name="contractInvoice$dj">
+                                            <input type="text" value="${formEntity.dj!}">
+                                        </div>
+                                    </div>
+                                </div>
+                            </td>
+                            <td class="th"></td>
+                            <td></td>
+                        </tr>
+                        <tr>
+                            <td class="th">
+                                <div class="form-label">付款单位:</div>
+                            </td>
+                            <td>
+                                <div class="form-group">
+                                    <div class="form-item">
+                                        <div class="z-comp-selecttree" name="payCompany">
+                                            <input type="hidden" name="contractInvoice$payCompanyId" value="${formEntity.payCompanyId!}">
+                                            <input type="hidden" name="contractInvoice$payCompany" value="${formEntity.payCompany!}">
+                                            <div class="z-inputselect-bar">
+                                                <span> ${formEntity.payCompany!} </span><i></i>
+                                            </div>
+                                        </div>
+                                    </div>
+                                </div>
+                            </td>
+                            <td class="th">
+                                <div class="form-label">付款税号:</div>
+                            </td>
+                            <td>
+                                <div class="form-group">
+                                    <div class="form-item">
+                                        <div class="z-comp-input" name="contractInvoice$payTaxNumber">
+                                            <input type="text" value="${formEntity.payTaxNumber!}">
+                                        </div>
+                                    </div>
+                                </div>
+                            </td>
+                        </tr>
+                        <tr>
+                            <td class="th">
+                                <div class="form-label">付款地址及电话:</div>
+                            </td>
+                            <td colspan="3">
+                                <div class="form-group">
+                                    <div class="form-item">
+                                        <div class="z-comp-input" name="contractInvoice$payAddress">
+                                            <input type="text" value="${formEntity.payAddress!}">
+                                        </div>
+                                    </div>
+                                </div>
+                            </td>
+                        </tr>
+                        <tr>
+                            <td class="th">
+                                <div class="form-label">付款开户行及账号:</div>
+                            </td>
+                            <td colspan="3">
+                                <div class="form-group">
+                                    <div class="form-item">
+                                        <div class="z-comp-input" name="contractInvoice$payBank">
+                                            <input type="text" value="${formEntity.payBank!}">
+                                        </div>
+                                    </div>
+                                </div>
+                            </td>
+                        </tr>
+                        <tr>
+                            <td class="th">
+                                <div class="form-label">收款银行账户:</div>
+                            </td>
+                            <td colspan="3">
+                                <div class="form-group">
+                                    <div class="form-item">
+                                        <div class="z-comp-input" name="contractInvoice$receiveBankaccount">
+                                            <input type="text" value="${formEntity.receiveBankaccount!}">
+                                        </div>
+                                    </div>
+                                </div>
+                            </td>
+                        </tr>
+                        <tr>
+                            <td class="th">
+                                <div class="form-label">电子发票接收人手机号:</div>
+                            </td>
+                            <td>
+                                <div class="form-group">
+                                    <div class="form-item">
+                                        <div class="z-comp-input" name="contractInvoice$eleInvReceivePhone">
+                                            <input type="text" value="${formEntity.eleInvReceivePhone!}">
+                                        </div>
+                                    </div>
+                                </div>
+                            </td>
+                            <td class="th">
+                                <div class="form-label">电子发票接收人邮箱:</div>
+                            </td>
+                            <td>
+                                <div class="form-group">
+                                    <div class="form-item">
+                                        <div class="z-comp-input" name="contractInvoice$eleInvReceiveEmail">
+                                            <input type="text" value="${formEntity.eleInvReceiveEmail!}">
+                                        </div>
+                                    </div>
+                                </div>
+                            </td>
+                        </tr>
+
+                        <tr>
+                            <td class="th">
+                                <div class="form-label">开票备注:</div>
+                            </td>
+                            <td colspan="3">
+                                <div class="form-group">
+                                    <div class="form-item" style="margin: 10px 0;">
+                                        <div class="z-comp-textarea" name="contractInvoice$invoiceBz">
+                                            <textarea>${formEntity.invoiceBz!}</textarea>
+                                        </div>
+                                    </div>
+                                </div>
+                            </td>
+                        </tr>
+                    </table>
+                </div>
+                <div class="form-title">
+                    <div class="form-icon">
+                        <img src="/imgs/titleIcon.png" alt="">
+                        <span>回款信息</span>
+                    </div>
+                    <div class="form-btn">
+                    </div>
+                </div>
+                <div class="qjsjxx-box">
+                    <div class="jbxx-box jbxx-box-flex">
+                        <table class="jbxx-table-info">
+                            <tr>
+                                <td class="th">
+                                    <div class="form-label">合同金额:</div>
+                                </td>
+                                <td>
+                                    <div class="form-group">
+                                        <div class="form-item">
+                                            <div class="z-comp-input" name="contract$contractAmount">
+                                                <input type="text" value="${(contract.contractAmount)!}">
+                                            </div>
+                                        </div>
+                                    </div>
+                                </td>
+                                <td class="th">
+                                    <div class="form-label">已开票金额:</div>
+                                </td>
+                                <td>
+                                    <div class="form-group">
+                                        <div class="form-item">
+                                            <div class="z-comp-input" name="amount$invoiceAmount">
+                                                <input type="text" value="${(amount.invoiceAmount)!}">
+                                            </div>
+                                        </div>
+                                    </div>
+                                </td>
+                            </tr>
+                            <tr>
+                                <td class="th">
+                                    <div class="form-label">已回款金额:</div>
+                                </td>
+                                <td>
+                                    <div class="form-group">
+                                        <div class="form-item">
+                                            <div class="z-comp-input" name="amount$returnAmount">
+                                                <input type="text" value="${(amount.returnAmount)!}">
+                                            </div>
+                                        </div>
+                                    </div>
+                                </td>
+                                <td class="th">
+                                    <div class="form-label">应收账款:</div>
+                                </td>
+                                <td>
+                                    <div class="form-group">
+                                        <div class="form-item">
+                                            <div class="z-comp-input" name="amount$receivableAmount">
+                                                <input type="text" value="${(amount.receivableAmount)!}">
+                                            </div>
+                                        </div>
+                                    </div>
+                                </td>
+                            </tr>
+                            <tr>
+                                <td class="th">
+                                    <div class="form-label">合同余额:</div>
+                                </td>
+                                <td>
+                                    <div class="form-group">
+                                        <div class="form-item">
+                                            <div class="z-comp-input" name="amount$contractBalance">
+                                                <input type="text" value="${(amount.contractBalance)!}">
+                                            </div>
+                                        </div>
+                                    </div>
+                                </td>
+                                <td class="th"></td>
+                                <td></td>
+                            </tr>
+                            <tr>
+                                <td class="th">
+                                    <div class="form-label">付款条件:</div>
+                                </td>
+                                <td colspan="3">
+                                    <div class="form-group">
+                                        <div class="form-item" style="margin: 10px 0;">
+                                            <div class="z-comp-textarea" name="contract$paymentTerms">
+                                                <textarea>${(contract.paymentTerms)!}</textarea>
+                                            </div>
+                                        </div>
+                                    </div>
+                                </td>
+                            </tr>
+                        </table>
+                    </div>
+                </div>
+                <div class="form-title">
+                    <div class="form-icon">
+                        <img src="/imgs/titleIcon.png" alt="">
+                        <span>开票信息</span>
+                    </div>
+                    <div class="form-btn">
+                    </div>
+                </div>
+                <div class="qjsjxx-box">
+                    <div class="jbxx-box jbxx-box-flex">
+                        <table class="jbxx-table-info">
+                            <tr>
+                                <td class="th">
+                                    <div class="form-label">开票人:</div>
+                                </td>
+                                <td>
+                                    <div class="form-group">
+                                        <div class="form-item">
+                                            <input type="hidden" name="contractInvoice$invoicePersonId" value="${formEntity.invoicePersonId!}">
+                                            <div class="z-comp-input" name="contractInvoice$invoicePerson">
+                                                <input type="text" value="${formEntity.invoicePerson!}">
+                                            </div>
+                                        </div>
+                                    </div>
+                                </td>
+                                <td class="th">
+                                    <div class="form-label">领票人:</div>
+                                </td>
+                                <td>
+                                    <div class="form-group">
+                                        <div class="z-comp-selecttree" name="lpr">
+                                            <input type="hidden" name="contractInvoice$lprId" value="${formEntity.lprId!}">
+                                            <input type="hidden" name="contractInvoice$lpr" value="${formEntity.lpr!}">
+                                            <div class="z-inputselect-bar">
+                                                <span> ${formEntity.lpr!} </span><i></i>
+                                            </div>
+                                        </div>
+                                    </div>
+                                </td>
+                            </tr>
+                            <tr>
+                                <td class="th">
+                                    <div class="form-label">开票日期:</div>
+                                </td>
+                                <td>
+                                    <div class="form-group">
+                                        <div class="form-item">
+                                            <div class="z-comp-date" name="contractInvoice$invoiceDate">
+                                                <input type="text" value="${formEntity.invoiceDate!}">
+                                            </div>
+                                        </div>
+                                    </div>
+                                </td>
+                                <td class="th">
+                                    <div class="form-label">发票号码:</div>
+                                </td>
+                                <td>
+                                    <div class="form-group">
+                                        <div class="form-item">
+                                            <div class="z-comp-input" name="contractInvoice$invoiceNo">
+                                                <input type="text" value="${formEntity.invoiceNo!}">
+                                            </div>
+                                        </div>
+                                    </div>
+                                </td>
+                            </tr>
+                        </table>
+                    </div>
+                </div>
+                <div class="form-title" name="invoice-header">
+                    <div class="form-icon">
+                        <img src="/imgs/titleIcon.png" alt="">
+                        <span>子项目信息</span>
+                    </div>
+                </div>
+                <div class="qjsjxx-box" name="invoice-body">
+                    <table class="form-table-info">
+                        <thead>
+                        <tr>
+                            <td>序号</td>
+                            <td>类型</td>
+                            <td>责任部门</td>
+                            <td>项目经理</td>
+                            <td>合同额</td>
+                            <td>本次开票金额</td>
+                            <td>回款金额</td>
+                            <td>操作</td>
+                        </tr>
+                        </thead>
+                        <tbody class="tbody tbodyQjsq" name="contractInvoiceList"></tbody>
+                    </table>
+                </div>
+                <div class="form-title"  name="return-header">
+                    <div class="form-icon">
+                        <img src="/imgs/titleIcon.png" alt="">
+                        <span>回款信息</span>
+                    </div>
+                    <div class="form-btn">
+                        <div id="addData" name="addData">
+                            <img src="/imgs/addIcon.png" alt="">
+                            <span>新增</span>
+                        </div>
+                    </div>
+                </div>
+                <div name="returnStats" style="display: flex">
+                    <div style="width: 50%;" name="contractBalance">合同剩余回款金额:
+                        <span>${(amount.contractBalance)!}</span>
+                    </div>
+                    <div style="width: 50%;" name="invoiceReceivable">该开票剩余回款金额:
+                        <span>${invoiceReceivable!}</span>
+                    </div>
+                </div>
+                <div class="qjsjxx-box" name="return-body">
+                    <table class="form-table-info">
+                        <thead>
+                        <tr>
+                            <td>序号</td>
+                            <td>到款金额(元)</td>
+                            <td>到款日期</td>
+                            <td>备注</td>
+                            <td style="width: 170px;">操作</td>
+                        </tr>
+                        </thead>
+                        <tbody class="tbody tbodyQjsq" name="returnMoney"></tbody>
+                    </table>
+                </div>
+            </div>
+            <div class="ow-tab-content" name="yj">
+                <#if WORKFLOW.OPINION! !="">
+                    <div class="form-title">
+                        <div class="form-icon">
+                            <img src="/imgs/titleIcon.png" alt="">
+                            <span>审批意见</span>
+                        </div>
+                        <div class="form-btn">
+                        </div>
+                    </div>
+                    <div class="qjsjxx-box">
+                        <div class="z-form-wrap" name="opinionsDiv">
+                            <div class="z-form-row"> ${WORKFLOW.OPINION!} </div>
+                        </div>
+                    </div>
+                </#if>
+            </div>
+        </div>
+    </div>
+    <style type="text/css">
+        .jbxx-box-flex .th {
+            width: 160px !important;
+        }
+        .jbxx-box-flex>table>tbody>tr {
+            display: flex;
+            height: auto !important;
+        }
+        .jbxx-box-flex>table>tbody>tr>td {
+            padding: 10px 10px;
+        }
+        .jbxx-box-flex>table>tbody>tr>td:not(.th) {
+            flex: 1;
+        }
+        .qjsjxx-box .form-table-info tr:nth-child(1){
+            height: 63px;
+        }
+    </style>
+    <script>
+        window.returnMoneyList = '${returnMoneyListJson!}';
+        window.contractList = '${contractListJson!}';
+        window.curUserId = '${currentUserId!}' ;
+        window.curUser = '${currentUser!}' ;
+        window.invoiceReceivable = '${invoiceReceivable!}';
+    </script>
+</@w.workFlow>

+ 878 - 0
zjugis-business/src/main/resources/templates/FlowContractInvoice/js/afterFinance.js

@@ -0,0 +1,878 @@
+(function () {
+    var lists = [];
+    let viewState = z.ui.comm.getUrlParam("_o");
+    let isKp = z.ui.comm.getUrlParam("kp");
+    let read = z.ui.comm.getUrlParam("read");
+    var totalContractAmount = 0;
+    var totalReturnAmount =0;
+    var totalInvoiceAmount = 0;
+    var contractInvoiceList = [];
+    let flowInstanceId = "";
+    var contractId = $("[name='contractInvoice$contractId']").val()
+    var contractInvoiceId = $("[name='contractInvoice$id']").val()
+    var contractMilestoneId = $("[name='contractInvoice$contractMilestoneId']").val()
+    var contractMilestoneName = $("[name='contractInvoice$contractMilestoneName']").val()
+    let isView = "";
+    window.onload = function () {
+        flowInstanceId = z.ui.comm.getUrlParam("flowInstanceId");
+        bindEvents();
+    };
+
+    function bindEvents() {
+        initData();
+        bindGenerateSerial();
+        bindSelectMilestone();
+        initContractReturnMoney();
+        initContractInvoiceList();
+        bindCalcInvoiceAmount();
+        bindReturnMoney();
+        initReturnReg();
+        z.workflow.saveBtn.addListener("onSaveClick", submit);
+    }
+
+    function initData(){
+        initPayCompany();
+        initInvoiceCompany();
+        initLpr();
+    }
+    function initLpr() {
+        z.ui.ajax({
+            type: "get",
+            url: "/common/user-tree",
+            data: {},
+            success: function (res) {
+                if (res && res.length > 0) {
+                    selecttree("[name='lpr']", res, clickLpr, allowChildClick,null,setLpr);
+                }
+            },
+            error: function () {
+            }
+        })
+    }
+
+    function setLpr(){
+        var id = $("[name='contractInvoice$lprId']").val();
+        if(id){
+            z.ui.selecttree("[name='lpr']").setValue(id);
+        }
+    }
+
+    function clickLpr(even, treeId, treeNode) {
+        if (treeNode.type === 3) {
+            $("[name='contractInvoice$lpr']").val(treeNode.name);
+            $("[name='contractInvoice$lprId']").val(treeNode.id);
+        }
+    }
+
+    function initReturnReg(){
+        let register = z.ui.comm.getUrlParam("registerReturn");
+        if(register === '1'){
+            $("[name=addData]").show().removeClass("z-hide").removeClass("z-readonly");
+            $("[name=return-header]").css("display", "flex").removeClass("z-hide").removeClass("z-readonly");
+            $("[name=return-body]").css("display", "flex").removeClass("z-hide").removeClass("z-readonly");
+            $("[name=returnStats]").css("display", "flex").removeClass("z-hide").removeClass("z-readonly");
+        }
+    }
+
+    function bindGenerateSerial(){
+        $("#generateSerial").on("click",function(){
+            var serial = $("[name='contractInvoice$invoiceNumber'] input").val();
+            var postdata = {"name": '开票单号'};
+            if(serial) {
+                z.ui.confirm("confirm").init({
+                    content: '已有编号[' +serial + '],重新生成会覆盖原有编号,是否继续?',
+                    onConfirm: function() {
+                        z.ui.ajax({
+                            type: "post",
+                            contentType: "application/json",
+                            url: "/common/generate-serial-number",
+                            data: JSON.stringify(postdata),
+                            success: function (res) {
+                                if(res && res.code === 0){
+                                    $("[name='contractInvoice$invoiceNumber'] input").val(res.data)
+                                } else {
+                                    z.ui.alertWarning(res.msg);
+                                }
+                            },
+                            error: function () {
+                            }
+                        })
+                    },
+                    onCancel: function () {
+                    }
+                })
+            } else {
+                z.ui.ajax({
+                    type: "post",
+                    contentType: "application/json",
+                    url: "/common/generate-serial-number",
+                    data: JSON.stringify(postdata),
+                    success: function (res) {
+                        if(res && res.code === 0){
+                            $("[name='contractInvoice$invoiceNumber'] input").val(res.data)
+                        } else {
+                            z.ui.alertWarning(res.msg);
+                        }
+                    },
+                    error: function () {
+                    }
+                })
+            }
+        })
+    }
+
+    function bindSelectMilestone(){
+        $("#selectMilestone").click(function () {
+            var contractId = $("[name='contractInvoice$contractId']").val();
+            selectMilestone(contractId, setMilestone);
+        })
+    }
+
+    function setMilestone(res) {
+        if (res.data) {
+            $("[name='contractInvoice$contractMilestoneName']").val(res.data.name);
+            $("[name='contractInvoice$contractMilestoneId']").val(res.data.id);
+            contractMilestoneName = res.data.name;
+            contractMilestoneId = res.data.id;
+        }
+    }
+
+
+    function submit(all, istransfer) {
+        var postData = z.ui.form.getFormFields("[name=flow-form]", {validatorRequired: istransfer});
+        if (postData === false) {
+            all({success: false});
+            return;
+        }
+        z.ui.ajax({
+            url: z.ui.comm.getEntranceUrl("/flow/invoice/update"),
+            data: z.ui.form.childStringify(postData),
+            success: function () {
+                all({success: true});
+            },
+            error: function () {
+                all({success: false});
+            }
+        })
+    }
+
+    function initContractInvoiceList(){
+        var contractList = JSON.parse(window.contractList);
+        if(!contractList || contractList.length<2){
+            $("[name=invoice-header]").hide();
+            $("[name=invoice-body]").hide();
+            return ;
+        }
+        if (contractList.length > 0) {
+            for (let i = 0; i < contractList.length; i++) {
+                let obj = {
+                    type: contractList[i].contractType || "",
+                    zrbm: contractList[i].zrbm || "",
+                    xmjl: contractList[i].xmjl || "",
+                    virtualAmount: contractList[i].virtualAmount || "",
+                    invoiceAmount: contractList[i].invoiceAmount || "",
+                    returnAmount: contractList[i].returnAmount || "",
+                    id: contractList[i].id || ""
+                }
+                contractInvoiceList.push(obj)
+            }
+        }
+        updateContractInoviceListView()
+    }
+
+    function updateContractInoviceListView() {
+        let tbodyQjsq = document.querySelector('[name=contractInvoiceList]')
+        let html = ''
+        for (let i = 0; i < contractInvoiceList.length; i++) {
+            var type = contractInvoiceList[i].type === 1? '主合同': '子合同'
+            html += '<tr class="qjsjClass" id="contract_invoce_list' + i + '" style="background:#fff">'
+                + '<td name="contract_invoce_list_seq">' + (i + 1) + '</td>'
+                + '<td>'
+                + '<div class="form-flex">'
+                + '<div class="form-item" style="width: 100%;margin-right: 5px;">'
+                + '<input type="hidden" name="Contract[' + i + ']$id" value="'+contractInvoiceList[i].id+'"/>'
+                + '<div class="z-comp-input" name="Contract[' + i + ']$type">'
+                + '<input type="text" value="'+type+'">'
+                + '</div>'
+                + '</div>'
+                + '</div>'
+                + '</td>'
+                + '<td>'
+                + '<div class="form-flex">'
+                + '<div class="form-item" style="width: 100%;margin-right: 5px;">'
+                + '<div class="z-comp-input" name="Contract[' + i + ']$zrbm">'
+                + '<input type="text" value="'+contractInvoiceList[i].zrbm+'">'
+                + '</div>'
+                + '</div>'
+                + '</div>'
+                + '</td>'
+                + '<td>'
+                + '<div class="form-flex">'
+                + '<div class="form-item" style="width: 100%;margin-right: 5px;">'
+                + '<div class="z-comp-input" name="Contract[' + i + ']$xmjl">'
+                + '<input type="text" value="'+contractInvoiceList[i].xmjl+'">'
+                + '</div>'
+                + '</div>'
+                + '</div>'
+                + '</td>'
+                + '<td>'
+                + '<div class="form-flex">'
+                + '<div class="form-item" style="width: 100%;margin-right: 5px;">'
+                + '<div class="z-comp-input" name="Contract[' + i + ']$virtualAmount">'
+                + '<input type="text" class="contractAmount" value="'+contractInvoiceList[i].virtualAmount+'">'
+                + '</div>'
+                + '</div>'
+                + '</div>'
+                + '</td>'
+                + '<td>'
+                + '<div class="form-flex">'
+                + '<div class="form-item" style="width: 100%;margin-right: 5px;">'
+                + '<div class="z-comp-input" name="Contract[' + i + ']$invoiceAmount">'
+                + '<input type="text" class="contractInvoice" value="'+contractInvoiceList[i].invoiceAmount+'">'
+                + '</div>'
+                + '</div>'
+                + '</div>'
+                + '</td>'
+                + '<td>'
+                + '<div class="form-flex">'
+                + '<div class="form-item" style="width: 100%;margin-right: 5px;">'
+                + '<div class="z-comp-input" name="Contract[' + i + ']$returnAmount">'
+                + '<input type="text" class="invoiceReturnAmount" value="'+contractInvoiceList[i].returnAmount+'">'
+                + '</div>'
+                + '</div>'
+                + '</div>'
+                + '</td>'
+                + '<td>';
+            if(viewState !== "v") {
+                html += '<div id="invoiceEditBtn_' + (i) + '" class="table-btn editBtn_' + (i) + '" data-index="' + (i) + '">'
+                + '<span>编辑</span>'
+                + '</div>';
+            }
+            html += '</td>'
+                + '</tr>';
+        }
+        tbodyQjsq.innerHTML = html
+        for (let i = 0; i < contractInvoiceList.length; i++) {
+            if(viewState !== "v") {
+                $("#invoiceEditBtn_" + i).click(function () {
+                    const span = $(this).find("span");
+                    const html = span.html();
+                    var tr = $("#contract_invoce_list" + i);
+                    var invoiceInput = tr.find("[name='Contract[" + i + "]$invoiceAmount'] input");
+                    if (html === '编辑') {
+                        span.html('保存')
+                        invoiceInput.removeAttr('disabled').removeClass("z-readonly").addClass("z-write");
+                        return;
+                    }
+                    if (html === '保存') {
+
+                        var invoiceAmount = invoiceInput.val();
+
+                        var returnAmount = tr.find("[name='Contract[" + i + "]$returnAmount'] input").val();
+                        var id = tr.find("[name='Contract[" + i + "]$id']").val();
+
+                        z.ui.ajax({
+                            url: z.ui.comm.getEntranceUrl("/contract-invoice-relation"),
+                            type: 'put',
+                            contentType: 'application/json',
+                            data: JSON.stringify({
+                                'id': id,
+                                'returnAmount': returnAmount,
+                                'invoiceAmount': invoiceAmount
+                            }),
+                            success: function (res) {
+                                if (res.code === 0) {
+                                    z.ui.alertSuccess("保存成功");
+                                    invoiceInput.addClass("z-readonly").removeClass("z-write");
+                                    invoiceInput[0].disabled = true;
+                                    span.html("编辑")
+                                } else {
+                                    z.ui.alertWarning(res.msg);
+                                }
+                            },
+                            error: function () {
+
+                            }
+                        })
+                        return;
+                    }
+                })
+            }
+            detailReadonly(i,false,"contract_invoce_list")
+            $("#contract_invoce_list" + i).addClass("form-table-disable")
+        }
+    }
+
+    function bindCalcInvoiceAmount(){
+        $("[name='contractInvoice$invoiceAmount'] input").change(function(){
+            if(!parseFloat($(this).val())){
+                return;
+            }
+            totalContractAmount = 0;
+            let arr = $('.contractAmount');
+            for (let i = 0; i < arr.length; i++) {
+                if(parseFloat($(arr[i]).val())) {
+                    totalContractAmount += parseFloat($(arr[i]).val())
+                }
+            }
+            for (let i = 0; i < arr.length; i++) {
+                var dom = $(arr[i]).closest("tr").find(".contractInvoice");
+                $(dom).val(($(arr[i]).val() / totalContractAmount * $(this).val()).toFixed(2));
+            }
+        })
+
+    }
+
+    function bindReturnMoney(){
+        var arr = $('.contractInvoice');
+        for(var i =0 ;i < arr.length;i++){
+            $(arr[i]).change(function(){
+                calcReturnAmount();
+            })
+        }
+        $("[name=returnMoney]").delegate('.returnAmount',"propertychange input",function(){
+            calcReturnAmount();
+        })
+        // var arr = $('.returnAmount');
+        // for(var i =0 ;i < arr.length;i++){
+        //     $(arr[i]).change(function(){
+        //         calcReturnAmount();
+        //     })
+        // }
+    }
+
+    function calcReturnAmount(){
+        calcTotalReturnAmount();
+        calcTotalInvoiceAmount()
+        let arr = $('.invoiceReturnAmount');
+        for (let i = 0; i < arr.length; i++) {
+            var ia = $(arr[i]).closest("tr").find(".contractInvoice").val();
+            $(arr[i]).val((ia / totalInvoiceAmount * totalReturnAmount).toFixed(2));
+        }
+    }
+
+    function calcTotalInvoiceAmount(){
+        totalInvoiceAmount = 0;
+        let arr = $('.contractInvoice');
+        for (let i = 0; i < arr.length; i++) {
+            if(parseFloat($(arr[i]).val())) {
+                totalInvoiceAmount += parseFloat($(arr[i]).val());
+            }
+        }
+    }
+
+    function calcTotalReturnAmount(){
+        totalReturnAmount = 0;
+        let arr = $('.returnAmount');
+        for (let i = 0; i < arr.length; i++) {
+            if(parseFloat($(arr[i]).val())) {
+                if(parseFloat($(arr[i]).val())){
+                    totalReturnAmount += parseFloat($(arr[i]).val())
+                }
+            }
+        }
+    }
+
+    function initContractReturnMoney(){
+        var returnMoney = JSON.parse(window.returnMoneyList);
+        if (returnMoney.length > 0) {
+            totalReturnAmount = 0;
+            for (let i = 0; i < returnMoney.length; i++) {
+                totalReturnAmount += returnMoney[i].returnAmount;
+                let obj = {
+                    contractMilestoneName: returnMoney[i].contractMilestoneName || contractMilestoneName,
+                    contractMilestoneId: returnMoney[i].contractId || contractMilestoneId,
+                    returnAmount: returnMoney[i].returnAmount || "",
+                    returnDate: returnMoney[i].returnDate || "",
+                    bz: returnMoney[i].bz || "",
+                    id: returnMoney[i].id || "",
+                    contractId: returnMoney[i].contractId || contractId,
+                    contractInvoiceId: returnMoney[i].contractInvoiceId || contractInvoiceId,
+                    sortnum: returnMoney[i].sortnum || ""
+                }
+                lists.push(obj)
+            }
+        }
+        $("#addData").click(function(){
+            addContractReturnMoney();
+        })
+        updateView()
+    }
+
+    function updateList(){
+        lists = [];
+        var postData = z.ui.form.getFormFields("[name=flow-form]", {validatorRequired: false});
+        for (let key of Object.keys(postData)) {
+            let mealName = postData[key];
+            if (key.startsWith("ContractReturnMoney")) {
+                var dataObj = {
+                    contractMilestoneName: contractMilestoneName,
+                    contractMilestoneId: contractMilestoneId,
+                    returnAmount: mealName.returnAmount,
+                    returnDate:  mealName.returnDate,
+                    bz: mealName.bz,
+                    id: mealName.id,
+                    contractId: contractId,
+                    contractInvoiceId: contractInvoiceId,
+                    sortnum: lists.length
+                }
+                lists.push(dataObj);
+            }
+        }
+    }
+
+
+    function getCurrentDate() {
+        const now = new Date();
+        const year = now.getFullYear();
+        const month = (now.getMonth() + 1).toString().padStart(2, '0');
+        const day = now.getDate().toString().padStart(2, '0');
+        return `${year}-${month}-${day}`;
+    }
+
+
+    function addContractReturnMoney(){
+        var trFragment = document.createDocumentFragment();
+        let tbody = document.querySelectorAll('[name=returnMoney] tr')
+        let qjsjElements = document.getElementsByName("contract_return_seq");
+        var dataObj = {
+            contractMilestoneName: contractMilestoneName,
+            contractMilestoneId: contractMilestoneId,
+            returnAmount: window.invoiceReceivable,
+            returnDate:  getCurrentDate(),
+            bz: "",
+            id: "",
+            contractId: contractId,
+            contractInvoiceId: contractInvoiceId,
+            sortnum: ""
+        }
+        lists.push(dataObj);
+        trFragment.appendChild(generateTableTrHtml(lists.length-1))
+        var index = lists.length - 1;
+        $("[name=returnMoney]").append(trFragment)
+        $("#delBtn_" + index).click(function () {
+            var i = this.id.substring(this.id.indexOf("_") + 1)
+            var tr =$("#contract_return_" + i);
+            var returnId = tr.find("[name='ContractReturnMoney["+i+"]$id']").val();
+            z.ui.confirm("compid").init({
+                content: "确定删除吗?",
+                onConfirm: function () {
+                    z.ui.ajax({
+                        url: z.ui.comm.getEntranceUrl("/contract-return-money?id="+returnId),
+                        type: 'delete',
+                        contentType: 'application/json',
+                        data: {},
+                        success: function (res) {
+                            if(res.code === 0){
+                                z.ui.alertSuccess("删除成功");
+                                var element = document.getElementById("contract_return_" +  i);
+                                element.remove();
+                                buildSeq();
+                                updateList();
+                                //lists.splice(i,1);
+                                updateView();
+                            } else {
+                                z.ui.alertWarning(res.msg);
+                            }
+                        },
+                        error: function () {
+
+                        }
+                    })
+                },
+                onCancel: function () {
+
+                }
+            })
+        })
+        $("#editBtn_" + index).click(function () {
+            var i = this.id.substring(this.id.indexOf("_") + 1)
+            const span = $(this).find("span");
+            const html = span.html();
+            var tr =$("#contract_return_" + i);
+            if (html === '保存') {
+                var returnAmount = tr.find("[name='ContractReturnMoney["+i+"]$returnAmount'] input").val();
+                var returnId = tr.find("[name='ContractReturnMoney["+i+"]$id']").val();
+                var dom = $("[name^='ContractReturnMoney['][name$='$returnAmount'] input");
+                var totalReturnAmount = 0;
+                for (let j = 0; j < dom.length; j++) {
+                    var tmp = $(dom[j]).val()
+                    if(parseFloat(tmp)){
+                        totalReturnAmount += parseFloat(tmp);
+                    }
+                }
+                var invoiceAmount = $("[name='contractInvoice$invoiceAmount'] input").val();
+                if(!returnAmount){
+                    z.ui.alertWarning("请填写回款金额");
+                    return;
+                }
+                if(!parseFloat(returnAmount)){
+                    z.ui.alertWarning("回款金额有误");
+                    return;
+                }
+                if(parseFloat(invoiceAmount) && (totalReturnAmount > parseFloat(invoiceAmount))){
+                    z.ui.alertWarning("回款金额不能超过开票金额");
+                    return;
+                }
+                var returnDate = tr.find("[name='ContractReturnMoney["+i+"]$returnDate'] input").val();
+                if(!returnDate){
+                    z.ui.alertWarning("请填写回款日期");
+                    return;
+                }
+                var bz =tr.find("[name='ContractReturnMoney["+i+"]$bz'] input").val();
+                var formInfo = z.ui.form.getFormFields("[name=flow-form]", {validatorRequired: false});
+                var relationList = [];
+                for (let key of Object.keys(formInfo)) {
+                    let mealName = formInfo[key];
+                    if (key.startsWith("Contract[")) {
+                        relationList.push(z.ui.form.childStringify(mealName));
+                    }
+                }
+                z.ui.ajax({
+                    url: z.ui.comm.getEntranceUrl("/contract-return-money"),
+                    type: 'post',
+                    contentType: 'application/json',
+                    data: JSON.stringify({
+                        'id': returnId,
+                        'contractId' : contractId,
+                        'contractInvoiceId' : contractInvoiceId,
+                        'contractMilestoneId' : contractMilestoneId,
+                        'contractMilestoneName' : contractMilestoneName,
+                        'returnAmount': returnAmount,
+                        'returnDate': returnDate,
+                        'bz': bz,
+                        'relationList': relationList
+                    }),
+                    success: function (res) {
+                        if(res.code === 0){
+                            if(!returnId){
+                                tr.find("[name='ContractReturnMoney["+i+"]$id']").val(res.data);
+                            }
+                            z.ui.alertSuccess("回款添加成功");
+                            detailReadonly(i, false,"contract_return_")
+                            $("#addData").removeAttr('disabled')
+                            tr.addClass("form-table-disable")
+                            span.html('编辑');
+                        } else {
+                            z.ui.alertWarning(res.msg);
+                        }
+                    },
+                    error: function () {
+
+                    }
+                })
+            } else if (html === '编辑') {
+                span.html('保存')
+                detailWrite(i);
+                $("#addData").attr('disabled', "true");
+                tr.removeClass("form-table-disable")
+            }
+        })
+        z.ui.date("[name='ContractReturnMoney[" + (lists.length-1) + "]$returnDate']").init()
+        buildSeq();
+
+        for (let i = 0; i < tbody.length; i++) {
+            z.ui.date("[name='ContractReturnMoney[" + i + "]$returnDate']").init({
+                done: function (value, date, endDate) {
+                    //改变日期后触发
+                    console.log(value);
+                }
+            });
+
+        }
+    }
+
+    function buildSeq() {
+        let elementsByName = document.getElementsByName("contract_return_seq");
+        for (let i = 0; i < elementsByName.length; i++) {
+            const seqElement = elementsByName[i];
+            seqElement.innerHTML = i + 1;
+        }
+    }
+
+
+    function initInvoiceCompany(){
+        z.ui.ajax({
+            type: "get",
+            url: "/common/company-tree",
+            data: {},
+            success: function (res) {
+                if(res && res.code === 0 && res.data.length > 0){
+                    selecttree("[name='invoiceCompany']",res.data,clickInvoiceCompany,null,null,setInvoiceCompany)
+                }
+            },
+            error: function () {
+            }
+        })
+    }
+
+    function setInvoiceCompany(){
+        var id = $("[name='contractInvoice$invoiceCompanyId']").val();
+        if(id){
+            z.ui.selecttree("[name='invoiceCompany']").setValue(id);
+        }
+    }
+
+    function clickInvoiceCompany(even, treeId, treeNode) {
+        $("[name='contractInvoice$invoiceCompany']").val(treeNode.name);
+        $("[name='contractInvoice$invoiceCompanyId']").val(treeNode.id);
+    }
+
+    function initPayCompany(){
+        z.ui.ajax({
+            type: "get",
+            url: "/customer-tree",
+            data: {},
+            success: function (res) {
+                if(res && res.code === 0 && res.data.length > 0){
+                    selecttree("[name='payCompany']",res.data,clickPayCompany,null,null,setPayCompany);
+                }
+            },
+            error: function () {
+            }
+        })
+    }
+
+    function setPayCompany(){
+        var id = $("[name='contractInvoice$payCompanyId']").val();
+        if(id){
+            z.ui.selecttree("[name='payCompany']").setValue(id);
+        }
+    }
+
+    function clickPayCompany(even, treeId, treeNode) {
+        $("[name='contractInvoice$payCompany']").val(treeNode.name);
+        $("[name='contractInvoice$payCompanyId']").val(treeNode.id);
+        $("[name='contractInvoice$payTaxNumber'] input").val(treeNode.extendData.taxNumber);
+        $("[name='contractInvoice$payAddress'] input").val(treeNode.extendData.payAddress);
+        $("[name='contractInvoice$payBank'] input").val(treeNode.extendData.bankaccount);
+    }
+
+    function updateView() {
+        let tbodyQjsq = document.querySelector('[name=returnMoney]')
+        let html = ''
+        for (let i = 0; i < lists.length; i++) {
+            // var ratio = '';
+            // if(parseFloat(contractAmount) && parseFloat(contractAmount) > 0 ){
+            //     ratio = ((lists[i].returnAmount / parseFloat(contractAmount)) * 100).toFixed(2) + '%';
+            // }
+            html += '<tr class="qjsjClass" id="contract_return_' + i + '" style="background:#fff">'
+                + '<td name="contract_return_seq">' + (i + 1) + '</td>'
+                + '<td>'
+                + '<div class="form-flex">'
+                + '<div class="form-item" style="width: 100%;margin-right: 5px;">'
+                + '<input type="hidden" name="ContractReturnMoney[' + i + ']$id" value="'+lists[i].id+'"/>'
+                + '<input type="hidden" name="ContractReturnMoney[' + i + ']$sortnum" value="'+lists[i].sortnum+'"/>'
+                + '<input type="hidden" name="ContractReturnMoney[' + i + ']$contractInvoiceId" value="'+lists[i].contractInvoiceId+'"/>'
+                + '<input type="hidden" name="ContractReturnMoney[' + i + ']$contractId" value="'+lists[i].contractId+'"/>'
+                + '<input type="hidden" name="ContractReturnMoney[' + i + ']$contractMilestoneId" value="'+lists[i].contractMilestoneId+'"/>'
+                + '<div class="z-comp-input" name="ContractReturnMoney[' + i + ']$returnAmount">'
+                + '<input type="text" class="returnAmount" value="'+lists[i].returnAmount+'">'
+                + '</div>'
+                + '</div>'
+                + '</div>'
+                + '</td>'
+                + '<td>'
+                + '<div class="form-flex">'
+                + '<div class="form-item" style="width: 100%;margin-right: 5px;">'
+                + '<div class="z-comp-date" name="ContractReturnMoney[' + i + ']$returnDate">'
+                + '<input type="text" value="'+lists[i].returnDate+'">'
+                + '</div>'
+                + '</div>'
+                + '</div>'
+                + '</td>'
+                + '<td>'
+                + '<div class="form-flex">'
+                + '<div class="form-item" style="width: 100%;margin-right: 5px;">'
+                + '<div class="z-comp-input" name="ContractReturnMoney[' + i + ']$bz">'
+                + '<input type="text" value="'+lists[i].bz+'">'
+                + '</div>'
+                + '</div>'
+                + '</div>'
+                + '</td>'
+                + '<td>'
+                + '<div style="display: flex;white-space: nowrap">'
+                + '<div id="editBtn_' + (i) + '" class="table-btn editBtn_' + (i) + '" data-index="' + (i) + '">'
+                + '<span>编辑</span>'
+                + '</div>'
+                + '<div id="delBtn_' + (i) + '" class="table-btn delBtn_' + (i) + '" data-index="' + (i) + '">'
+                + '<span>删除</span>'
+                + '</div></div>'
+                + '</td></tr>';
+        }
+        tbodyQjsq.innerHTML = html
+        for (let i = 0; i < lists.length; i++) {
+            z.ui.date("[name='ContractReturnMoney[" + i + "]$returnDate']").init()
+            $("#delBtn_" + i).click(function () {
+                var tr =$("#contract_return_" + i);
+                var returnId = tr.find("[name='ContractReturnMoney["+i+"]$id']").val();
+                z.ui.confirm("compid").init({
+                    content: "确定删除吗?",
+                    onConfirm: function () {
+                        z.ui.ajax({
+                            url: z.ui.comm.getEntranceUrl("/contract-return-money?id="+returnId),
+                            type: 'delete',
+                            contentType: 'application/json',
+                            data: {},
+                            success: function (res) {
+                                if(res.code === 0){
+                                    z.ui.alertSuccess("删除成功");
+                                    var element = document.getElementById("contract_return_" +  i);
+                                    element.remove();
+                                    buildSeq();
+                                    updateList();
+                                    //lists.splice(i,1);
+                                    updateView();
+                                } else {
+                                    z.ui.alertWarning(res.msg);
+                                }
+                            },
+                            error: function () {
+
+                            }
+                        })
+                    },
+                    onCancel: function () {
+
+                    }
+                })
+
+            })
+
+            $("#editBtn_" + i).click(function () {
+                const span = $(this).find("span");
+                const html = span.html();
+                var tr =$("#contract_return_" + i);
+                var returnAmount = tr.find("[name='ContractReturnMoney["+i+"]$returnAmount'] input").val();
+
+                var returnDate = tr.find("[name='ContractReturnMoney["+i+"]$returnDate'] input").val();
+                var returnId = tr.find("[name='ContractReturnMoney["+i+"]$id']").val();
+
+                var bz =tr.find("[name='ContractReturnMoney["+i+"]$bz'] input").val();
+                if (html === '保存')  {
+
+                    z.ui.ajax({
+                        url: z.ui.comm.getEntranceUrl("/contract-return-money"),
+                        type: 'post',
+                        contentType: 'application/json',
+                        data: JSON.stringify({
+                            'id': returnId,
+                            'contractId' : contractId,
+                            'contractInvoiceId' : contractInvoiceId,
+                            'contractMilestoneId' : contractMilestoneId,
+                            'contractMilestoneName' : contractMilestoneName,
+                            'returnAmount': returnAmount,
+                            'returnDate': returnDate,
+                            'bz': bz
+                        }),
+                        success: function (res) {
+                            if(res.code === 0){
+                                if(!returnId){
+                                    tr.find("[name='ContractReturnMoney["+i+"]$id']").val(res.data);
+                                }
+                                z.ui.alertSuccess("回款添加成功");
+                                detailReadonly(i, false,"contract_return_")
+                                $("#addData").removeAttr('disabled')
+                                tr.addClass("form-table-disable")
+                                span.html('编辑');
+                            } else {
+                                z.ui.alertWarning(res.msg);
+                            }
+                        },
+                        error: function () {
+
+                        }
+                    })
+                } else if (html === '编辑'){
+                    span.html('保存')
+                    detailWrite(i);
+                    $("#addData").attr('disabled', "true");
+                    tr.removeClass("form-table-disable")
+                }
+
+            })
+            detailReadonly(i,false,"contract_return_")
+            $("#contract_return_" + i).addClass("form-table-disable")
+        }
+        // detailTotalInit()
+    }
+
+    function detailReadonly(i, isBool = true,prefix) {
+        if (isBool) {
+            $("#delBtn_" + i).css("display", "none");
+            $("#editBtn_" + i).css("display", "none");
+        }
+        let detailElement = document.getElementById(prefix + i);
+        let detailInput = detailElement.getElementsByTagName("input");
+        for (let j = 0; j < detailInput.length; j++) {
+            detailInput[j].disabled = true;
+            detailInput[j].className += " z-readonly"
+        }
+    }
+
+
+    function detailWrite(i) {
+        //财务审核时可以核减修改金额
+        let detailElement = document.getElementById("contract_return_" + i);
+        let detailInput = detailElement.getElementsByTagName("input");
+        for (let j = 0; j < detailInput.length; j++) {
+            detailInput[j].disabled = false;
+            $(detailInput[j]).removeClass(" z-readonly")
+        }
+    }
+
+
+
+    function generateTableTrHtml(index) {
+        var trDom = document.createElement("tr");
+        trDom.style.backgroundColor = "#fff";
+        trDom.id = "contract_return_" + index;
+        trDom.className = 'qjsjClass';
+        trDom.innerHTML = '<td name="contract_return_seq">' + (index + 1) + '</td>'
+            + '<td>'
+            + '<div class="form-flex">'
+            + '<div class="form-item" style="width: 100%;margin-right: 5px;">'
+            + '<input type="hidden" name="ContractReturnMoney[' + index + ']$id" value="'+lists[index].id+'"/>'
+            + '<input type="hidden" name="ContractReturnMoney[' + index + ']$sortnum" value="'+lists[index].sortnum+'"/>'
+            + '<input type="hidden" name="ContractReturnMoney[' + index + ']$contractInvoiceId" value="'+lists[index].contractInvoiceId+'"/>'
+            + '<input type="hidden" name="ContractReturnMoney[' + index + ']$contractId" value="'+lists[index].contractId+'"/>'
+            + '<input type="hidden" name="ContractReturnMoney[' + index + ']$contractMilestoneId" value="'+lists[index].contractMilestoneId+'"/>'
+            + '<div class="z-comp-input" name="ContractReturnMoney[' + index + ']$returnAmount">'
+            + '<input type="text" class="returnAmount" value="'+lists[index].returnAmount+'">'
+            + '</div>'
+            + '</div>'
+            + '</div>'
+            + '</td>'
+            + '<td>'
+            + '<div class="form-flex">'
+            + '<div class="form-item" style="width: 100%;margin-right: 5px;">'
+            + '<div class="z-comp-date" name="ContractReturnMoney[' + index + ']$returnDate">'
+            + '<input type="text" value="'+lists[index].returnDate+'">'
+            + '</div>'
+            + '</div>'
+            + '</div>'
+            + '</td>'
+            + '<td>'
+            + '<div class="form-flex">'
+            + '<div class="form-item" style="width: 100%;margin-right: 5px;">'
+            + '<div class="z-comp-input" name="ContractReturnMoney[' + index + ']$bz">'
+            + '<input type="text" value="">'
+            + '</div>'
+            + '</div>'
+            + '</div>'
+            + '</td>'
+            + '<td>'
+            + '<div style="display: flex;white-space: nowrap">'
+            + '<div id="editBtn_' + (index) + '" class="table-btn editBtn_' + (index) + '" data-index="' + (index) + '">'
+            + '<span>保存</span>'
+            + '</div>'
+            + '<div id="delBtn_' + (index) + '" class="table-btn delBtn_' + (index) + '" data-index="' + (index) + '">'
+            + '<span>删除</span>'
+            + '</div></div>'
+            + '</td>';
+        return trDom;
+    }
+
+
+
+}())

+ 3 - 3
zjugis-business/src/main/resources/templates/FlowContractInvoice/js/apply.js

@@ -141,13 +141,13 @@
     function submit(all, istransfer) {
         var invoiceAmount = $('[name="contractInvoice$invoiceAmount"] input').val();
         var contractBalance = $('[name="amount$contractBalance"] input').val();
-        if( contractBalance !== 0 && !contractBalance ){
+        if( !contractBalance ){
             contractBalance = $('[name="contract$contractAmount"] input').val();
             if(!contractBalance){
-                contractBalance = 0;
+                contractBalance = '0';
             }
         }
-        if(invoiceAmount > contractBalance){
+        if(parseFloat(invoiceAmount) > parseFloat(contractBalance)){
             all({success: false, errorMsg: "开票金额超出合同余额!"});
             return;
         }