소스 검색

合同支付,锁定相关

MaiXinRong 2 년 전
부모
커밋
596179ae61
5개의 변경된 파일39개의 추가작업 그리고 6개의 파일을 삭제
  1. 3 0
      app/controller/stage_controller.js
  2. 17 4
      app/public/js/stage_pay.js
  3. 4 2
      app/service/project.js
  4. 14 0
      app/view/setting/fun.ejs
  5. 1 0
      app/view/stage/pay.ejs

+ 3 - 0
app/controller/stage_controller.js

@@ -987,6 +987,9 @@ module.exports = app => {
                 // 用户有无权限上传和删除附件
                 renderData.uploadPermission = !ctx.tender.isTourist || ctx.tender.touristPermission.file;
 
+                const projectFunInfo = await this.ctx.service.project.getFunRela(ctx.session.sessionProject.id);
+                renderData.lockPayExpr = projectFunInfo.lockPayExpr;
+
                 if (!ctx.stage.readOnly || ctx.tender.isTourist) {
                     // 计算 本期金额
                     const payCalculator = new PayCalculator(ctx, ctx.stage, ctx.tender.info);

+ 17 - 4
app/public/js/stage_pay.js

@@ -215,10 +215,23 @@ $(document).ready(() => {
             return data.uid === 0 ? payCol.isYB() : data.uid === userID;
         },
         isStarted: function (data) {
-            return data.pre_used;
+            return !!data.pre_used;
         },
         isFinish: function (data) {
             return data.pre_finish;
+        },
+        hasBase: function (data) {
+            if (!data.expr) return false;
+
+            for (const b of payCalc.bases) {
+                if (b.reg.test(data.expr)) return true;
+            }
+            return false;
+        },
+        isLock: function (data) {
+            const result = !!lockPayExpr && payBase.isStarted(data) && payBase.hasBase(data);
+            console.log(data.name, result);
+            return result;
         }
     };
     const payCol = {
@@ -249,18 +262,18 @@ $(document).ready(() => {
                 }
             },
             tp: function (data) {
-                return payBase.isWC(data) || payBase.isYF(data);
+                return payBase.isWC(data) || payBase.isYF(data) || payBase.isLock(data);
             },
             sprice: function (data) {
                 if (payBase.isOld(data)) {
-                    return payBase.isStarted(data) || !payBase.isYB(data);
+                    return payBase.isStarted(data) || !payBase.isYB(data) || payBase.isLock(data);
                 } else {
                     return payBase.isWC(data) || payBase.isSF(data) || payBase.isYF(data) || !(payBase.isOwner(data) || payBase.isYB());
                 }
             },
             rprice: function (data) {
                 if (payBase.isOld(data)) {
-                    return !payBase.isYB(data);
+                    return !payBase.isYB(data) || payBase.isLock(data);
                 } else {
                     return payBase.isWC(data) || payBase.isYF(data) || !(payBase.isOwner(data) || payBase.isYB());
                 }

+ 4 - 2
app/service/project.js

@@ -13,6 +13,7 @@ const defaultFunRela = {
     hintOver: true,
     banMinusChangeBills: false,
     minusNoValue: true,
+    lockPayExpr: false,
     imType: imType.zl.value,
     needGcl: false,
 };
@@ -65,7 +66,8 @@ module.exports = app => {
                         banOver: {type: 'bool', required: true,},
                         hintOver: {type: 'bool', required: true,},
                         banMinusChangeBills: {type: 'bool', required: true,},
-                        minusNoValue: {type: 'bool', required: true,}
+                        minusNoValue: {type: 'bool', required: true,},
+                        lockPayExpr: {type: 'bool', required: true,},
                     };
                     break;
                 default:
@@ -172,7 +174,7 @@ module.exports = app => {
             const result = await this.db.update(this.tableName, {
                 id: id, fun_rela: JSON.stringify({
                     banOver: data.banOver, hintOver: data.hintOver, banMinusChangeBills: data.banMinusChangeBills,
-                    imType: data.imType, needGcl: data.needGcl, minusNoValue: data.minusNoValue,
+                    imType: data.imType, needGcl: data.needGcl, minusNoValue: data.minusNoValue, lockPayExpr: data.lockPayExpr,
                 }),
             });
             return result.affectedRows === 1;

+ 14 - 0
app/view/setting/fun.ejs

@@ -60,6 +60,19 @@
                                 </div>
                             </div>
                         </div>
+                        <div class="card mb-3">
+                            <div class="card-body">
+                                <h5 class="card-title">合同支付</h5>
+                                <div class="form-group mb-4">
+                                    <div>
+                                        <div class="form-check form-check-inline">
+                                            <input class="form-check-input" type="checkbox" id="lockPayExpr" name="lockPayExpr" <% if (funRela.lockPayExpr) { %>checked<% } %> onchange="updateSetting();">
+                                            <label class="form-check-label" for="lockPayExpr">锁定往期带技术计算的合同支付项</label>
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
                         <div class="card mb-3 ">
                             <div class="card-body pb-2">
                                 <div class="row m-0">
@@ -289,6 +302,7 @@
             hintOver: $('#hint_over')[0].checked,
             banMinusChangeBills: $('[name=ban_minus_cb]')[0].checked,
             minusNoValue: $('[name=minusNoValue]')[0].checked,
+            lockPayExpr: $('#lockPayExpr')[0].checked,
             needGcl: $('#need_gcl')[0].checked,
             openChangeProject: $('#openChangeProject')[0].checked,
             openChangeApply: $('#openChangeApply')[0].checked,

+ 1 - 0
app/view/stage/pay.ejs

@@ -69,4 +69,5 @@
     const preQcTp = <%- (pre.qc_tp || 0) %>;
     const preGatherTp = <%- (pre.gather_tp || 0) %>;
     const auditConst = JSON.parse('<%- JSON.stringify(auditConst) %>');
+    const lockPayExpr = <%- lockPayExpr %>;
 </script>