Преглед на файлове

修订限制及变更数据控制

laiguoran преди 3 години
родител
ревизия
bd10debf3a
променени са 4 файла, в които са добавени 61 реда и са изтрити 10 реда
  1. 4 2
      app/controller/change_controller.js
  2. 37 5
      app/controller/revise_controller.js
  3. 5 3
      app/view/revise/index.ejs
  4. 15 0
      app/view/revise/modal.ejs

+ 4 - 2
app/controller/change_controller.js

@@ -934,10 +934,12 @@ module.exports = app => {
 
         async defaultBills(ctx) {
             try {
+                // 判断是否台账修订中,修订中则不获取changeLedger及changePos值
+                const lastRevise = await ctx.service.ledgerRevise.getLastestRevise(ctx.tender.id);
                 const ledgerData = await ctx.service.ledger.getData(ctx.tender.id);
-                const changeLedgerData = await ctx.service.changeLedger.getData(ctx.tender.id);
+                const changeLedgerData = lastRevise && lastRevise.status !== audit.revise.status.checked ? [] : await ctx.service.changeLedger.getData(ctx.tender.id);
                 const posData = await ctx.service.pos.getPosData({ tid: ctx.tender.id });
-                const changePosData = await ctx.service.changePos.getPosData({ tid: ctx.tender.id });
+                const changePosData = lastRevise && lastRevise.status !== audit.revise.status.checked ? [] : await ctx.service.changePos.getPosData({ tid: ctx.tender.id });
                 const dealBills = await ctx.service.dealBills.getAllDataByCondition({ where: { tender_id: ctx.tender.id } });
                 ctx.body = { err: 0, msg: '', data: { bills: ctx.helper._.concat(ledgerData, changeLedgerData), pos: ctx.helper._.concat(posData, changePosData), dealBills } };
             } catch (err) {

+ 37 - 5
app/controller/revise_controller.js

@@ -50,7 +50,37 @@ module.exports = app => {
                 (!revise || !revise.valid || revise.status === audit.revise.status.checked);
             const addValid = addVisible && (!lastStage || lastStage.status === audit.stage.status.uncheck ||
                 lastStage.status === audit.stage.status.checkNo || lastStage.status === audit.stage.status.checked);
-            return [addVisible, addValid];
+            let changeValid = true;
+            // 判断变更是否存在审批中,有则可能无法新增修订
+            const changeList = await ctx.service.change.getAllDataByCondition({
+                where: {
+                    tid: ctx.tender.id,
+                    status: [audit.flow.status.checking, audit.flow.status.backnew],
+                },
+            });
+            if (changeList.length > 0) {
+                // 判断是否已存在新增部位,有则可能无法新增修订
+                const changeLedgerList = await ctx.service.changeLedger.getAllDataByCondition({ where: { tender_id: ctx.tender.id, is_leaf: 1 } });
+                const changePosList = await ctx.service.changePos.getAllDataByCondition({ where: { tid: ctx.tender.id } });
+                // 判断变更是否已添加新增部位,有则可能无法新增修订
+                if (changeLedgerList.length > 0 || changePosList.length > 0) {
+                    // 判断审批中的变更令是否有调用了新增部位,有则无法新增修订,都没有则可新增修订
+                    for (const c of changeList) {
+                        const caList = await ctx.service.changeAuditList.getList(c.cid);
+                        const gclIdList = ctx.helper._.uniq(ctx.helper._.map(caList, 'gcl_id'));
+                        for (const gcl of gclIdList) {
+                            if (gcl && (ctx.helper._.findIndex(changeLedgerList, { id: gcl }) !== -1 || ctx.helper._.findIndex(changePosList, { lid: gcl }) !== -1)) {
+                                changeValid = false;
+                                break;
+                            }
+                        }
+                        if (!changeValid) {
+                            break;
+                        }
+                    }
+                }
+            }
+            return [addVisible, addValid, changeValid];
         }
 
         /**
@@ -82,8 +112,7 @@ module.exports = app => {
                         lr.curAuditor = await ctx.service.reviseAudit.getAuditorByStatus(lr.id, lr.status, lr.times);
                     }
                 }
-                const [addVisible, addValid] = await this._getAddReviseValid(ctx);
-                console.log(addVisible, addValid);
+                const [addVisible, addValid, changeValid] = await this._getAddReviseValid(ctx);
                 const [stdBills, stdChapters] = await this.ctx.service.valuation.getValuationStdList(
                     ctx.tender.data.valuation, ctx.tender.data.measure_type);
                 const renderData = {
@@ -98,6 +127,7 @@ module.exports = app => {
                     ledgerRevise,
                     addVisible,
                     addValid,
+                    changeValid,
                     auditConst: audit.revise,
                     auditConst2: JSON.stringify(audit.revise),
                     stdBills,
@@ -151,12 +181,14 @@ module.exports = app => {
          */
         async add(ctx) {
             try {
-                const addValid = await this._getAddReviseValid(ctx);
+                const [addValid, changeValid] = await this._getAddReviseValid(ctx);
                 if (!addValid) {
                     throw '无法新增修订';
                 }
+                if (!changeValid) {
+                    throw '台账修订会影响审批中的变更令(包含新增部位),请审批完成后再创建台账修订';
+                }
                 const revise = await ctx.service.ledgerRevise.add(ctx.tender.id, ctx.session.sessionUser.accountId);
-
                 ctx.redirect('/tender/' + ctx.tender.id + '/revise/info');
             } catch (err) {
                 this.log(err);

+ 5 - 3
app/view/revise/index.ejs

@@ -16,10 +16,12 @@
             <div class="ml-auto">
                 <% if (addVisible) { %>
                 <div class="d-inline-block">
-                    <% if (addValid) { %>
+                    <% if (addValid && changeValid) { %>
                     <a href="#add-bg" data-toggle="modal" data-target="#add-bg" class="btn btn-primary btn-sm">新建修订</a>
-                    <% } else { %>
-                    <a href="#add-bg-hint" data-toggle="modal" data-target="#add-bg-hint" class="btn btn-primary btn-sm">新建修订</a>
+                    <% } else if (!addValid && changeValid) { %>
+                        <a href="#add-bg-hint" data-toggle="modal" data-target="#add-bg-hint" class="btn btn-primary btn-sm">新建修订</a>
+                    <% } else if (addValid && !changeValid) { %>
+                    <a href="#add-bg-hint2" data-toggle="modal" data-target="#add-bg-hint2" class="btn btn-primary btn-sm">新建修订</a>
                     <% } %>
                 </div>
                 <% } %>

+ 15 - 0
app/view/revise/modal.ejs

@@ -31,6 +31,21 @@
         </div>
     </div>
 </div>
+<div class="modal fade" id="add-bg-hint2" data-backdrop="static">
+    <div class="modal-dialog" role="document">
+        <div class="modal-content">
+            <div class="modal-header">
+                <h5 class="modal-title">新增修订</h5>
+            </div>
+            <div class="modal-body">
+                <h6>修订会影响审批中的变更令(包含新增部位),请审批完成后再创建台账修订。</h6>
+            </div>
+            <div class="modal-footer">
+                <button type="button" class="btn btn-sm btn-secondary" data-dismiss="modal">关闭</button>
+            </div>
+        </div>
+    </div>
+</div>
 <!--审批流程/结果-->
 <div class="modal fade" id="sp-list" data-backdrop="static">
     <div class="modal-dialog modal-lg" role="document">