Explorar el Código

忽略不存在的清单

MaiXinRong hace 2 años
padre
commit
eff8050dcd

+ 1 - 1
app/controller/tender_controller.js

@@ -1425,7 +1425,7 @@ module.exports = app => {
                         ctx.body = {err: 0, msg: '', data: reviseData};
                         break;
                     case 'stage':
-                        const stageData = await this.ctx.service.stageBills.sumLoad(data.lid, data.tenders, data.cover);
+                        const stageData = await this.ctx.service.stageBills.sumLoad(data.lid, data.tenders, data.cover, data.ignore);
                         stageData.import_change = { target: { import_lid: data.lid } };
                         stageData.import_change.data = await this.ctx.service.stageImportChange.getLeafXmjStageImportData(ctx.stage, data.lid);
                         await ctx.service.stage.updateCheckCalcFlag(ctx.stage, true);

+ 7 - 4
app/lib/sum_load.js

@@ -29,6 +29,7 @@ class loadGclBaseTree {
         this.baseNodes = [];
 
         this.ignoreParent = setting.ignoreParent;
+        this.ignoreNotFind = setting.ignoreNotFind;
 
         // 缓存
         this.keyNodeId = setting.maxId ? setting.maxId + 1 : 1;
@@ -432,8 +433,10 @@ class gatherStageGclTree extends loadGclBaseTree {
                 }
             }
         }
-        for (const i of this.items) {
-            result.errors.push({ b_code: i.b_code, name: i.name, unit: i.unit, qty: i.contract_qty, qc_qty: i.qc_qty, qc_minus_qty: i.qc_minus_qty, type: 'miss' });
+        if (!this.ignoreNotFind) {
+            for (const i of this.items) {
+                result.errors.push({ b_code: i.b_code, name: i.name, unit: i.unit, qty: i.contract_qty, qc_qty: i.qc_qty, qc_minus_qty: i.qc_minus_qty, type: 'miss' });
+            }
         }
         return result;
     }
@@ -541,10 +544,10 @@ class sumLoad {
         }
     }
 
-    async stageGatherGcl(select, maxId, tenders, defaultData, cover) {
+    async stageGatherGcl(select, maxId, tenders, defaultData, cover, ignore) {
         const ignoreParent = this.ctx.tender.info.fun_rela.sum_load.ignoreParent;
         this.loadTree = new gatherStageGclTree(this.ctx, {
-            parent: select, maxId, type: 'ledger', defaultData, ignoreParent, cover,
+            parent: select, maxId, type: 'ledger', defaultData, ignoreParent, cover, ignoreNotFind: ignore,
         });
         const posterity = await this.ctx.service.ledger.getPosterityByParentId(this.ctx.tender.id, select.ledger_id);
         const extraData = await this.ctx.service.ledgerExtra.getData(this.ctx.tender.id, ['is_tp']);

+ 4 - 1
app/public/js/shares/tender_select.js

@@ -181,7 +181,10 @@ const TenderSelect = function (setting) {
 
             $('#tender-select-ok').click(() => {
                 const updateData = { lid: tsObj.select.id, type: tsObj.setting.type, tenders: tsObj.trArray };
-                if (tsObj.setting.type === 'stage') updateData.cover = $('#ts-cover')[0].checked;
+                if (tsObj.setting.type === 'stage') {
+                    updateData.cover = $('#ts-cover')[0].checked;
+                    updateData.ignore = $('#ts-ignore')[0].checked;
+                }
                 if (updateData.tenders.length > 0) {
                     postData(window.location.pathname + '/sumLoad', updateData, result => {
                         tsObj.setting.afterLoad(result, tsObj.select);

+ 2 - 2
app/service/stage_bills.js

@@ -517,13 +517,13 @@ module.exports = app => {
             return { contract_tp, qc_tp };
         }
 
-        async sumLoad(lid, tenders, cover) {
+        async sumLoad(lid, tenders, cover, ignore) {
             const conn = await this.db.beginTransaction();
             try {
                 const maxId = await this.ctx.service.ledger._getMaxLid(this.ctx.tender.id);
                 const select = await this.ctx.service.ledger.getCompleteDataById(lid);
                 const sumLoad = new SumLoad(this.ctx);
-                const loadTree = await sumLoad.stageGatherGcl(select, maxId, tenders, null, cover);
+                const loadTree = await sumLoad.stageGatherGcl(select, maxId, tenders, null, cover, ignore);
                 const result = loadTree.getUpdateData();
                 // if (result.errors.length > 100) throw '您导入的数据存在大量数据错误,请您仔细检查';
 

+ 4 - 0
app/view/shares/tender_select_modal.ejs

@@ -23,6 +23,10 @@
                                 <input class="form-check-input" type="checkbox" id="ts-cover">
                                 <label class="form-check-label" for="ts-cover">覆盖数据</label>
                             </div>
+                            <div class="form-check form-check-inline">
+                                <input class="form-check-input" type="checkbox" id="ts-ignore">
+                                <label class="form-check-label" for="ts-ignore">忽略找不到的清单</label>
+                            </div>
                         </div>
                     </div>
                     <div id="tender-select-hint">