Kaynağa Gözat

变更概况,显示未使用的变更清单

MaiXinRong 5 yıl önce
ebeveyn
işleme
b0b0051609

+ 28 - 13
app/controller/stage_controller.js

@@ -194,7 +194,7 @@ module.exports = app => {
                 let curStageData, preStageData;
                 responseData.data = await ctx.service.pos.getPosData(condition);
                 // 根据当前人,或指定对象查询数据
-                console.time('cur');
+                //console.time('cur');
                 const curWhere = JSON.parse(ctx.request.body.data);
                 if (ctx.stage.readOnly) {
                     curStageData = await ctx.service.stagePos.getAuditorStageData(ctx.tender.id,
@@ -202,22 +202,22 @@ module.exports = app => {
                 } else {
                     curStageData = await ctx.service.stagePos.getLastestStageData(ctx.tender.id, ctx.stage.id, curWhere);
                 }
-                console.timeEnd('cur');
+                //console.timeEnd('cur');
                 // 查询截止上期数据
-                console.time('pre');
+                //console.time('pre');
                 if (ctx.stage.order > 1) {
                     preStageData = await ctx.service.stagePosFinal.getFinalData(ctx.tender.data, ctx.stage);
                     //responseData.data.preStageData = await ctx.service.stagePos.getEndStageData(ctx.tender.id, ctx.stage.order - 1);
                 } else {
                     preStageData = [];
                 }
-                console.timeEnd('pre');
-                console.time('assign');
+                //console.timeEnd('pre');
+                //console.time('assign');
                 this.ctx.helper.assignRelaData(responseData.data, [
                     {data: curStageData, fields: ['contract_qty', 'qc_qty', 'postil'], prefix: '', relaId: 'pid'},
                     {data: preStageData, fields: ['contract_qty', 'qc_qty'], prefix: 'pre_', relaId: 'pid'}
                 ]);
-                console.timeEnd('assign');
+                //console.timeEnd('assign');
                 ctx.body = responseData;
             } catch (err) {
                 this.log(err);
@@ -739,11 +739,33 @@ module.exports = app => {
         async _getChangeDetailData(tid, sid, cid) {
             const data = {};
             data.attachments = await this.ctx.service.changeAtt.getChangeAttachment(cid);
+            data.bills = await this.ctx.service.changeAuditList.getAllDataByCondition({where: {cid: cid}});
             data.addUsedBills = await this.ctx.service.stageChange.getUsedData(tid, cid);
             data.curUsedBills = await this.ctx.service.stageChange.getStageUsedData(sid, cid);
             return data;
         }
         /**
+         * 获取变更数据 Post(Ajax)
+         * @param ctx
+         * @returns {Promise<void>}
+         */
+        async getChangeData(ctx) {
+            try {
+                const data = {};
+                data.ledger = await ctx.service.ledger.getDataByTenderId(ctx.tender.id, -1);
+                data.usedChangesId = await ctx.service.stageChange.getStageUsedChangeId(ctx.stage.id);
+                data.changes = await ctx.service.change.getChangeAndUsedInfo(ctx.tender.id);
+                if (data.changes.length > 0) {
+                    const change = data.changes[0];
+                    change.detail = await this._getChangeDetailData(ctx.tender.id, ctx.stage.id, change.cid);
+                }
+                ctx.body = {err: 0, msg: '', data: data};
+            } catch (err) {
+                this.log(err);
+                ctx.body = {err: 1, msg: err.toString(), data: null};
+            }
+        }
+        /**
          * 变更令 (Get)
          * @param ctx
          * @returns {Promise<void>}
@@ -752,13 +774,6 @@ module.exports = app => {
             try {
                 await this._getStageAuditViewData(ctx);
                 const renderData = await this._getDefaultRenderData(ctx);
-                renderData.ledger = await ctx.service.ledger.getDataByTenderId(ctx.tender.id, -1);
-                renderData.changes = await ctx.service.change.getChangeAndUsedInfo(ctx.tender.id);
-                if (renderData.changes.length > 0) {
-                    const change = renderData.changes[0];
-                    change.detail = await this._getChangeDetailData(ctx.tender.id, ctx.stage.id, change.cid);
-                }
-                renderData.usedChangesId = await ctx.service.stageChange.getStageUsedChangeId(ctx.stage.id);
                 renderData.changeConst = changeConst;
                 renderData.jsFiles = this.app.jsFiles.common.concat(this.app.jsFiles.stage.change);
                 await this.layout('stage/change.ejs', renderData);

+ 31 - 23
app/public/js/stage_change.js

@@ -8,7 +8,6 @@
  * @version
  */
 class ChangeAnalysis {
-
     constructor (ledgerData) {
         this.ledgerTreeSetting = {
             id: 'ledger_id',
@@ -21,7 +20,6 @@ class ChangeAnalysis {
         this.ledgerTree = createNewPathTree('ledger', this.ledgerTreeSetting);
         this.ledgerTree.loadDatas(ledgerData);
     }
-
     getLeafXmj (node) {
         let n = node;
         while (n) {
@@ -32,14 +30,20 @@ class ChangeAnalysis {
         }
         return null;
     }
-
     analyze (change) {
         change.filterBills = false;
         change.attachments = change.detail.attachments;
-        change.bills = change.detail.addUsedBills;
+        change.bills = change.detail.bills;
+        //change.bills = change.detail.addUsedBills;
         for (const b of change.bills) {
+            const aub = change.detail.addUsedBills.find(function (x) {
+                return x.id = b.id;
+            });
+            if (aub) {
+                b.used_qty = aub.used_qty;
+            }
             b.qty = _.toNumber(b.samount);
-            b.valid_qty = ZhCalc.sub(b.qty - b.used_qty);
+            b.valid_qty = ZhCalc.sub(b.qty, b.used_qty);
             b.pos = _.filter(change.detail.curUsedBills, {cbid: b.id});
             b.cur_qty = 0;
             for (const p of b.pos) {
@@ -56,6 +60,8 @@ class ChangeAnalysis {
         }
     }
 }
+let changes, usedChangesId, ledger, analysis;
+
 
 $(document).ready(() => {
     autoFlashHeight();
@@ -141,19 +147,11 @@ $(document).ready(() => {
     });
     // ------------end 初始化界面
 
-    // ------------begin 预处理数据
-    const analysis = new ChangeAnalysis(ledger);
-    if (changes.length > 0) {
-        analysis.analyze(changes[0]);
-    }
-    // ------------end 预处理数据
-
     // ------------begin spread界面操作方法
     const posSpreadObj = {
         loadCurPosData () {
             const bills = SpreadJsObj.getSelectObject(billsSpread.getActiveSheet());
             if (bills) {
-                console.log(bills.pos);
                 SpreadJsObj.loadSheetData(posSpread.getActiveSheet(), SpreadJsObj.DataType.Data, bills.pos);
             } else {
                 SpreadJsObj.loadSheetData(posSpread.getActiveSheet(), SpreadJsObj.DataType.Data, []);
@@ -267,16 +265,26 @@ $(document).ready(() => {
     changeSpread.bind(spreadNS.Events.SelectionChanged, changeSpreadObj.selectionChanged);
     // ------------end spread界面操作方法
 
-
-    // ------------begin 加载数据至界面
-    SpreadJsObj.loadSheetData(changeSpread.getActiveSheet(), SpreadJsObj.DataType.Data, changes);
-    changeSpreadObj.loadChangeDetailData();
-    if (usedChangesId.length > 0) {
-        changeSpreadObj.filterUsedChange(true);
-    } else {
-        $('#used-change')[0].checked = false;
-    }
-    // ------------end 加载数据至界面
+    postData(window.location.pathname + '/data', null, function (result) {
+        changes = result.changes;
+        usedChangesId = result.usedChangesId;
+        ledger = result.ledger;
+        // ------------begin 预处理数据
+        analysis = new ChangeAnalysis(ledger);
+        if (changes.length > 0) {
+            analysis.analyze(changes[0]);
+        }
+        // ------------end 预处理数据
+        // ------------begin 加载数据至界面
+        SpreadJsObj.loadSheetData(changeSpread.getActiveSheet(), SpreadJsObj.DataType.Data, changes);
+        changeSpreadObj.loadChangeDetailData();
+        if (usedChangesId.length > 0) {
+            changeSpreadObj.filterUsedChange(true);
+        } else {
+            $('#used-change')[0].checked = false;
+        }
+        // ------------end 加载数据至界面
+    });
 
     // ------------begin dom事件定义
     // 本期已用变更

+ 3 - 2
app/router.js

@@ -107,7 +107,7 @@ module.exports = app => {
     app.post('/tender/:id/revise/save', sessionAuth, tenderCheck, 'reviseController.save');
     app.get('/tender/:id/revise/info', sessionAuth, tenderCheck, 'reviseController.info');
     app.post('/tender/:id/revise/info/base-opr', sessionAuth, tenderCheck, 'reviseController.baseOpr');
-    app.post('/tender/:id/revise/info/batch-insert', sessionAuth, tenderCheck, 'reviseController.batchInsert')
+    app.post('/tender/:id/revise/info/batch-insert', sessionAuth, tenderCheck, 'reviseController.batchInsert');
     //app.post('/tender/:id/ledger/revise/audit/', sessionAuth, tenderCheck, 'ledgerController.reviseStatus');
     //app.get('/tender/:id/ledger/index', sessionAuth, 'ledgerController.index');
 
@@ -158,8 +158,9 @@ module.exports = app => {
     app.post('/tender/:id/measure/stage/:order/pay/upload/file', sessionAuth, tenderCheck, stageCheck, 'stageController.payUploadFile');
     app.get('/tender/:id/measure/stage/:order/pay/download/file/:pid/:index', sessionAuth, 'stageController.payDownloadFile');
     app.post('/tender/:id/measure/stage/:order/pay/delete/file', sessionAuth, 'stageController.payDeleteFile');
-    // 变更
+    // 变更概况
     app.get('/tender/:id/measure/stage/:order/change', sessionAuth, tenderCheck, stageCheck, 'stageController.change');
+    app.post('/tender/:id/measure/stage/:order/change/data', sessionAuth, tenderCheck, stageCheck, 'stageController.getChangeData');
     app.post('/tender/:id/measure/stage/:order/change/detail', sessionAuth, tenderCheck, stageCheck, 'stageController.changeDetail');
     // 审批
     app.post('/tender/:id/measure/stage/:order/audit/add', sessionAuth, tenderCheck, stageCheck, 'stageController.addAudit');

+ 1 - 6
app/view/stage/change.ejs

@@ -163,9 +163,4 @@
         </div>
     </div>
 </div>
-<img src="/public/images/icon-ok.png" id="icon-ok" />
-<script>
-    const changes = JSON.parse('<%- JSON.stringify(changes) %>');
-    const usedChangesId = JSON.parse('<%- JSON.stringify(usedChangesId) %>')
-    const ledger = JSON.parse('<%- JSON.stringify(ledger) %>');
-</script>
+<img src="/public/images/icon-ok.png" id="icon-ok" />