Kaynağa Gözat

合同管理测试bug修复

ellisran 10 ay önce
ebeveyn
işleme
f7da751e30
2 değiştirilmiş dosya ile 36 ekleme ve 23 silme
  1. 34 21
      app/public/js/contract_detail.js
  2. 2 2
      app/view/contract/detail.ejs

+ 34 - 21
app/public/js/contract_detail.js

@@ -1,6 +1,6 @@
 const copyBlockTag = 'zh.calc.copyBlock';
-const ckBillsSpread = '/contract/' + window.location.pathname.split('/')[2] + '/detail/contract-billsSelect';
 $(document).ready(function() {
+    const ckBillsSpread = '/contract/' + window.location.pathname.split('/')[2] + '/' + contractConst.typeMap[contract_type] + '/detail/contract-billsSelect';
     autoFlashHeight();
     const contractSpreadSetting = {
         cols: [
@@ -352,8 +352,9 @@ $(document).ready(function() {
                 }
                 return {...pay, showEdit}
             })
+            console.log(pays);
             newPays.forEach((pay, idx) => {
-                paysHtml += `<tr class="text-center">
+                paysHtml += `<tr class="text-center" data-cpid="${pay.id}">
                                         <td>${idx + 1}</td>
                                         <td>${moment(pay.pay_time).format('YYYY-MM-DD')}</td>
                                         <td>${pay.pay_price}</td>
@@ -364,7 +365,7 @@ $(document).ready(function() {
                                         <td>${pay.username}</td>
                                         <td>${moment(pay.create_time).format('YYYY-MM-DD HH:mm:ss')}</td>
                                         <td>${pay.remark}</td>
-                                        <td><a href="javascript:void(0);" class="text-primary open-pay-files" data-cpid="${pay.id}"><i class="fa fa-paperclip fa-rotate-90"></i></a></td>
+                                        <td><a href="javascript:void(0);" class="text-primary open-pay-files" data-cpid="${pay.id}"><i class="fa fa-paperclip fa-rotate-90"></i></a> <span class="files-num">${pay.files.length > 0 ? pay.files.length : ''}</span></td>
                                         <td><a href="javascript:void(0);" class="text-primary pay-edit" data-id="${pay.id}" ${ !pay.showEdit ? `style="display:none"` : ''}>编辑</a> <a href="javascript:void(0);" class="text-danger pay-del" data-id="${pay.id}" ${ !pay.showEdit ? `style="display:none"` : ''}>删除</a></td>
                                     </tr>`;
             });
@@ -427,6 +428,7 @@ $(document).ready(function() {
                 if (!info.oldSelections || info.newSelections[0].row !== info.oldSelections[0].row || info.newSelections[0].rowCount !== info.oldSelections[0].rowCount) {
                     contractTreeSpreadObj.refreshOperationValid(info.sheet);
                     contractTreeSpreadObj.setContract(info.sheet);
+                    SpreadJsObj.saveTopAndSelect(info.sheet, ckBillsSpread);
                 }
             } else {
                 $('#add-cons-btn').hide();
@@ -1344,6 +1346,7 @@ $(document).ready(function() {
                 postDataWithFile('/contract/' + stid + '/detail/' + contractConst.typeMap[contract_type] + '/' + node.id + '/pay/' + cpInfo.id + '/file/upload', formData, function (result) {
                     cpInfo.files = result;
                     contractTreeSpreadObj.openContractPayFiles(cpInfo);
+                    $('#htpay-table tbody').find('tr[data-cpid="' + cpInfo.id + '"]').find('.files-num').text(result.length || '');
                 });
             }
         }
@@ -1363,6 +1366,7 @@ $(document).ready(function() {
             postData('/contract/' + stid + '/detail/' + contractConst.typeMap[contract_type] + '/' + node.id + '/pay/' + cpInfo.id + '/file/delete', { id: fid }, function (result) {
                 cpInfo.files = result;
                 contractTreeSpreadObj.openContractPayFiles(cpInfo);
+                $('#htpay-table tbody').find('tr[data-cpid="' + cpInfo.id + '"]').find('.files-num').text(result.length || '');
             });
         }, '确认删除该文件?');
     });
@@ -1380,6 +1384,7 @@ $(document).ready(function() {
         // SpreadJsObj.initSpreadSettingEvents(changeSpreadSetting, changeCol);
         SpreadJsObj.loadSheetData(contractSheet, SpreadJsObj.DataType.Tree, contractTree);
         SpreadJsObj.loadTopAndSelect(contractSheet, ckBillsSpread);
+        contractTreeSpreadObj.setContract(contractSheet);
         checkShowLast(result.contractTree.length);
         contractTreeSpreadObj.refreshOperationValid(contractSheet);
         // contractTreeSpreadObj.setAllForeColor(contractSheet);
@@ -1790,21 +1795,6 @@ $(document).ready(function() {
             toastr.error(name + '款金额只能输入数字');
             return false;
         }
-        // if (cpInfo) {
-        //     const newNodePayPrice = ZhCalc.add(ZhCalc.sub(node.pay_price, cpInfo.pay_price), parseFloat(data.pay_price));
-        //     const newNodeDebitPrice = ZhCalc.add(ZhCalc.sub(node.debit_price, cpInfo.debit_price), parseFloat(data.debit_price));
-        //     const newNodeYfPrice = ZhCalc.sub(newNodePayPrice, newNodeDebitPrice);
-        //     const newNodeSfPrice = ZhCalc.add(ZhCalc.sub(node.sf_price, cpInfo.sf_price), parseFloat(data.sf_price));
-        //     // if (parseFloat(data.pay_price) > ZhCalc.sub(newNodeYfPrice, newNodeSfPrice)) {
-        //     //     toastr.error(name + '款金额不能大于待支付金额 ' + ZhCalc.sub(newNodeYfPrice, newNodeSfPrice) + '元');
-        //     //     return false;
-        //     // }
-        // } else {
-        //     if (parseFloat(data.pay_price) > ZhCalc.sub(node.yf_price, node.sf_price)) {
-        //         toastr.error(name + '款金额不能大于待支付金额 ' + ZhCalc.sub(node.yf_price, node.sf_price) + '元');
-        //         return false;
-        //     }
-        // }
         if (data.debit_price && !/^\d+(\.\d+)?$/.test(data.debit_price)) {
             toastr.error('扣款金额只能输入数字');
             return false;
@@ -1817,10 +1807,33 @@ $(document).ready(function() {
             toastr.error('实'+ name +'金额只能输入数字');
             return false;
         }
-        if (parseFloat(data.sf_price) > parseFloat(data.yf_price)) {
-            toastr.error('实'+ name +'金额不能大于应'+ name +'金额');
-            return false;
+        if (cpInfo) {
+            const newNodePayPrice = ZhCalc.add(ZhCalc.sub(node.pay_price, cpInfo.pay_price), parseFloat(data.pay_price));
+            const newNodeDebitPrice = ZhCalc.add(ZhCalc.sub(node.debit_price, cpInfo.debit_price), parseFloat(data.debit_price));
+            const newNodeYfPrice = ZhCalc.sub(newNodePayPrice, newNodeDebitPrice);
+            const newNodeSfPrice = ZhCalc.add(ZhCalc.sub(node.sf_price, cpInfo.sf_price), parseFloat(data.sf_price));
+            if (newNodeYfPrice > node.total_price) {
+                toastr.error('累计应'+ name +'金额不能大于合同金额');
+                return false;
+            }
+            if (newNodeSfPrice > newNodeYfPrice) {
+                toastr.error('累计实'+ name +'金额不能大于累计应'+ name +'金额');
+                return false;
+            }
+        } else {
+            if (ZhCalc.add(parseFloat(data.yf_price), node.yf_price) > node.total_price) {
+                toastr.error('累计应'+ name +'金额不能大于合同金额');
+                return false;
+            }
+            if (ZhCalc.add(parseFloat(data.sf_price), node.sf_price) > ZhCalc.add(parseFloat(data.yf_price), node.yf_price)) {
+                toastr.error('累计实'+ name +'金额不能大于累计应'+ name +'金额');
+                return false;
+            }
         }
+        // if (parseFloat(data.sf_price) > parseFloat(data.yf_price)) {
+        //     toastr.error('实'+ name +'金额不能大于应'+ name +'金额');
+        //     return false;
+        // }
         if (!data.pay_type) {
             toastr.error('请选择' + contractConst.typeName[contract_type] + '方式');
             return false;

+ 2 - 2
app/view/contract/detail.ejs

@@ -98,7 +98,7 @@
                                     <tr>
                                         <th class="text-center align-middle">合同金额</th>
                                         <td class="change-input-td" id="htdetail_total_price"></td>
-                                        <th class="text-center align-middle"><% if (ctx.contract_type === contractConst.type.income) { %>累计回款(P)<% } else if (ctx.contract_type === contractConst.type.expenses) { %>累计付(P)<% } %></th>
+                                        <th class="text-center align-middle"><% if (ctx.contract_type === contractConst.type.income) { %>累计回款(P)<% } else if (ctx.contract_type === contractConst.type.expenses) { %>累计付(P)<% } %></th>
                                         <td id="htdetail_pay_price"></td>
                                         <th class="text-center align-middle">累计扣款(K)</th>
                                         <td id="htdetail_debit_price"></td>
@@ -106,7 +106,7 @@
                                     <tr>
                                         <th class="text-center align-middle"><% if (ctx.contract_type === contractConst.type.income) { %>累计应回(S=P-K)<% } else if (ctx.contract_type === contractConst.type.expenses) { %>累计应付(S=P-K)<% } %></th>
                                         <td id="htdetail_yf_price"></td>
-                                        <th class="text-center align-middle"><% if (ctx.contract_type === contractConst.type.income) { %>累计已回(A)<% } else if (ctx.contract_type === contractConst.type.expenses) { %>累计已付(A)<% } %></th>
+                                        <th class="text-center align-middle"><% if (ctx.contract_type === contractConst.type.income) { %>累计实回(A)<% } else if (ctx.contract_type === contractConst.type.expenses) { %>累计实付(A)<% } %></th>
                                         <td id="htdetail_sf_price"></td>
                                         <th class="text-center align-middle"><% if (ctx.contract_type === contractConst.type.income) { %>待回款(S-A)<% } else if (ctx.contract_type === contractConst.type.expenses) { %>待支付(S-A)<% } %></th>
                                         <td id="htdetail_df_price"></td>