瀏覽代碼

公式拷贝相关

MaiXinRong 6 月之前
父節點
當前提交
4f9b9c33d7
共有 2 個文件被更改,包括 13 次插入2 次删除
  1. 6 2
      app/public/js/phase_pay_detail.js
  2. 7 0
      app/service/phase_pay_detail.js

+ 6 - 2
app/public/js/phase_pay_detail.js

@@ -86,7 +86,7 @@ $(document).ready(() => {
                 return result;
             },
             tpReadOnly: function(data) {
-                return payUtils.check.isYf(data) || payUtils.check.isLock(data);
+                return payUtils.check.isYf(data) || (data.children && data.children.length > 0) || payUtils.check.isLock(data);
             },
             startTpReadOnly: function(data) {
                 if (payUtils.check.isOld(data)) {
@@ -625,12 +625,16 @@ $(document).ready(() => {
                         info.cancel = payUtils.check.isFixed(select);
                         break;
                     case 'tp':
+                        info.cancel = payUtils.check.tpReadOnly(select);
+                        break;
                     case 'is_gather':
                         info.cancel = !payUtils.check.isGatherValid(select);
                         break;
                     case 'start_tp':
+                        info.cancel = payUtils.check.startTpReadOnly(select);
+                        break;
                     case 'range_tp':
-                        info.cancel = (select.children && select.children.length > 0) || payUtils.check.isYf(select);
+                        info.cancel = payUtils.check.rangeTpReadOnly(select);
                         break;
                     case 'is_gather':
                         info.cancel = true;

+ 7 - 0
app/service/phase_pay_detail.js

@@ -81,6 +81,11 @@ class PayCalculator {
         };
     }
 
+    checkQuetoExpr(expr) {
+        if (!this.basesReg) this.basesReg = new RegExp(this.bases.map(x => {return '(' + x.code + ')'}).join('|'));
+        return this.basesReg.test(expr) || this.nodeReg.test(expr);
+    }
+
     _calculateTpExpr(pay, pays) {
         let formula = pay.expr;
         const nodeParam = pay.expr.match(this.nodeReg);
@@ -359,6 +364,7 @@ class PhasePayDetail extends TreeService {
         const preData = await this.getAllDataByCondition({
             where: { phase_id: prePhase.id, audit_times: prePhase.audit_times, audit_sort: prePhase.audit_max_sort },
         });
+        const payCalc = new PayCalculator(this.ctx, prePhase);
         for (const pd of preData) {
             delete pd.id;
             pd.tp = 0;
@@ -369,6 +375,7 @@ class PhasePayDetail extends TreeService {
             pd.audit_sort = 0;
             if (!pd.pre_used) pd.pre_used = pd.pre_tp ? 1 : 0;
             if (!pd.pre_finished) pd.pre_finished = pd.end_tp >= pd.range_tp;
+            if (pd.expr && (!pd.pay_type || pd.pay_type === payType.bqsf) && payCalc.checkQuetoExpr(pd.expr)) pd.expr = '';
         }
         await conn.insert(this.tableName, preData);
     }