Browse Source

台账修订,调整数据加载方式

maixinrong 5 năm trước cách đây
mục cha
commit
8a689ccefd

+ 99 - 34
app/controller/revise_controller.js

@@ -209,13 +209,13 @@ module.exports = app => {
         }
 
         async _getDefaultReviseInfoData(ctx, revise) {
-            const reviseBills = revise.bills_file
-                ? JSON.parse(await fs.readFileSync(this.ctx.app.config.filePath + revise.bills_file, 'utf8'))
-                : await ctx.service.reviseBills.getData(ctx.tender.id);
+            // const reviseBills = revise.bills_file
+            //     ? JSON.parse(await fs.readFileSync(this.ctx.app.config.filePath + revise.bills_file, 'utf8'))
+            //     : await ctx.service.reviseBills.getData(ctx.tender.id);
 
-            const revisePos = revise.pos_file
-                ? JSON.parse(await fs.readFileSync(this.ctx.app.config.filePath + revise.pos_file, 'utf8'))
-                : await ctx.service.revisePos.getData(ctx.tender.id);
+            // const revisePos = revise.pos_file
+            //     ? JSON.parse(await fs.readFileSync(this.ctx.app.config.filePath + revise.pos_file, 'utf8'))
+            //     : await ctx.service.revisePos.getData(ctx.tender.id);
             const [ledgerSpread, posSpread] = this._getSpreadSetting(revise);
             const [stdBills, stdChapters] = await this.ctx.service.valuation.getValuationStdList(
                 ctx.tender.data.valuation, ctx.tender.data.measure_type);
@@ -230,7 +230,8 @@ module.exports = app => {
             }
             return {
                 revise: revise, tender: ctx.tender.data,
-                reviseBills, revisePos, ledgerSpread, posSpread, tenderMenu, measureType,
+                //reviseBills, revisePos, 
+                ledgerSpread, posSpread, tenderMenu, measureType,
                 preUrl: '/tender/' + ctx.tender.id,
                 audit: audit.revise,
                 jsFiles: this.app.jsFiles.common.concat(this.app.jsFiles.revise.info),
@@ -282,30 +283,30 @@ module.exports = app => {
             const renderData = await this._getDefaultReviseInfoData(ctx, revise);
             // 台账只读、使用数据
             renderData.readOnly = false;
-            const lastStage = await ctx.service.stage.getLastestStage(ctx.tender.id, true);
-            if (lastStage) {
-                if (lastStage.status === audit.stage.status.checked) {
-                    const usedPreBills = await ctx.service.stageBillsFinal.getUsedBills(ctx.tender.id, lastStage.order);
-                    for (const b of renderData.reviseBills) {
-                        b.used = usedPreBills.indexOf(b.id) >= 0;
-                    }
-                    const usedPrePos = await ctx.service.stagePosFinal.getUsedPos(ctx.tender.id, lastStage.order);
-                    for (const p of renderData.revisePos) {
-                        p.used = usedPrePos.indexOf(p.id) >= 0;
-                    }
-                } else {
-                    const usedPreBills = lastStage.order > 1 ? await ctx.service.stageBillsFinal.getUsedBills(ctx.tender.id, lastStage.order - 1) : [];
-                    const usedCurBills = await ctx.service.stageBills.getStageUsedBills(ctx.tender.id, lastStage.id);
-                    for (const b of renderData.reviseBills) {
-                        b.used = usedPreBills.indexOf(b.id) >= 0 || usedCurBills.indexOf(b.id) >= 0;
-                    }
-                    const usedPrePos = lastStage.order > 1 ? await ctx.service.stagePosFinal.getUsedPos(ctx.tender.id, lastStage.order - 1) : [];
-                    const usedCurPos = await ctx.service.stagePos.getStageUsedPos(ctx.tender.id, lastStage.id);
-                    for (const p of renderData.revisePos) {
-                        p.used = usedPrePos.indexOf(p.id) >= 0 || usedCurPos.indexOf(p.id) >= 0;
-                    }
-                }
-            }
+            // const lastStage = await ctx.service.stage.getLastestStage(ctx.tender.id, true);
+            // if (lastStage) {
+            //     if (lastStage.status === audit.stage.status.checked) {
+            //         const usedPreBills = await ctx.service.stageBillsFinal.getUsedBills(ctx.tender.id, lastStage.order);
+            //         for (const b of renderData.reviseBills) {
+            //             b.used = usedPreBills.indexOf(b.id) >= 0;
+            //         }
+            //         const usedPrePos = await ctx.service.stagePosFinal.getUsedPos(ctx.tender.id, lastStage.order);
+            //         for (const p of renderData.revisePos) {
+            //             p.used = usedPrePos.indexOf(p.id) >= 0;
+            //         }
+            //     } else {
+            //         const usedPreBills = lastStage.order > 1 ? await ctx.service.stageBillsFinal.getUsedBills(ctx.tender.id, lastStage.order - 1) : [];
+            //         const usedCurBills = await ctx.service.stageBills.getStageUsedBills(ctx.tender.id, lastStage.id);
+            //         for (const b of renderData.reviseBills) {
+            //             b.used = usedPreBills.indexOf(b.id) >= 0 || usedCurBills.indexOf(b.id) >= 0;
+            //         }
+            //         const usedPrePos = lastStage.order > 1 ? await ctx.service.stagePosFinal.getUsedPos(ctx.tender.id, lastStage.order - 1) : [];
+            //         const usedCurPos = await ctx.service.stagePos.getStageUsedPos(ctx.tender.id, lastStage.id);
+            //         for (const p of renderData.revisePos) {
+            //             p.used = usedPrePos.indexOf(p.id) >= 0 || usedCurPos.indexOf(p.id) >= 0;
+            //         }
+            //     }
+            // }
             // 修订历史
             renderData.history = false;
             renderData.historyRevise = [];
@@ -344,13 +345,59 @@ module.exports = app => {
             }
         }
 
+        async loadInfoData(ctx) {
+            try {
+                const revise = await ctx.service.ledgerRevise.getLastestRevise(ctx.tender.id);
+                if (!revise) throw '台账修订数据有误';
+
+                const reviseBills = revise.bills_file
+                    ? JSON.parse(await fs.readFileSync(this.ctx.app.config.filePath + revise.bills_file, 'utf8'))
+                    : await ctx.service.reviseBills.getData(ctx.tender.id);
+
+                const revisePos = revise.pos_file
+                    ? JSON.parse(await fs.readFileSync(this.ctx.app.config.filePath + revise.pos_file, 'utf8'))
+                    : await ctx.service.revisePos.getData(ctx.tender.id);
+                if (revise.uid === ctx.session.sessionUser.accountId &&
+                    (revise.status === audit.revise.status.uncheck || revise.status === audit.revise.status.checkNo)) {                    
+                    const lastStage = await ctx.service.stage.getLastestStage(ctx.tender.id, true);
+                    if (lastStage) {
+                        if (lastStage.status === audit.stage.status.checked) {
+                            const usedPreBills = await ctx.service.stageBillsFinal.getUsedBills(ctx.tender.id, lastStage.order);
+                            for (const b of reviseBills) {
+                                b.used = usedPreBills.indexOf(b.id) >= 0;
+                            }
+                            const usedPrePos = await ctx.service.stagePosFinal.getUsedPos(ctx.tender.id, lastStage.order);
+                            for (const p of revisePos) {
+                                p.used = usedPrePos.indexOf(p.id) >= 0;
+                            }
+                        } else {
+                            const usedPreBills = lastStage.order > 1 ? await ctx.service.stageBillsFinal.getUsedBills(ctx.tender.id, lastStage.order - 1) : [];
+                            const usedCurBills = await ctx.service.stageBills.getStageUsedBills(ctx.tender.id, lastStage.id);
+                            for (const b of reviseBills) {
+                                b.used = usedPreBills.indexOf(b.id) >= 0 || usedCurBills.indexOf(b.id) >= 0;
+                            }
+                            const usedPrePos = lastStage.order > 1 ? await ctx.service.stagePosFinal.getUsedPos(ctx.tender.id, lastStage.order - 1) : [];
+                            const usedCurPos = await ctx.service.stagePos.getStageUsedPos(ctx.tender.id, lastStage.id);
+                            for (const p of revisePos) {
+                                p.used = usedPrePos.indexOf(p.id) >= 0 || usedCurPos.indexOf(p.id) >= 0;
+                            }
+                        }
+                    }  
+                }
+                ctx.body = {err: 0, msg: '', data: {bills: reviseBills, pos: revisePos}};
+            } catch(err) {
+                ctx.helper.log(err);
+                this.ajaxErrorBody(err, '加载台账修订数据错误');
+            }
+        }
+
         async history(ctx) {
             try {
                 const revise = await ctx.service.ledgerRevise.getLastestRevise(ctx.tender.id, false);
                 if (!revise) throw '台账修订数据有误';
 
-                const reviseBills = await ctx.service.ledger.getData(ctx.tender.id);
-                const revisePos = await ctx.service.pos.getPosData({tid: ctx.tender.id});
+                //const reviseBills = await ctx.service.ledger.getData(ctx.tender.id);
+                //const revisePos = await ctx.service.pos.getPosData({tid: ctx.tender.id});
                 const [ledgerSpread, posSpread] = this._getSpreadSetting(revise);
                 ledgerSpread.readOnly = true;
                 posSpread.readOnly = true;
@@ -358,7 +405,7 @@ module.exports = app => {
                 const renderData = {
                     measureType, audit, revise,
                     ledgerSpread, posSpread,
-                    reviseBills, revisePos,
+                    //reviseBills, revisePos,
                     readOnly: true,
                     historyRevise,
                     jsFiles: this.app.jsFiles.common.concat(this.app.jsFiles.revise.history),
@@ -383,6 +430,24 @@ module.exports = app => {
             }
         }
 
+        /**
+         * 加载 数据
+         * @param {} ctx 
+         */
+        async loadHistoryData(ctx) {
+            try {
+                const revise = await ctx.service.ledgerRevise.getLastestRevise(ctx.tender.id, false);
+                if (!revise) throw '台账修订数据有误';
+    
+                const reviseBills = await ctx.service.ledger.getData(ctx.tender.id);
+                const revisePos = await ctx.service.pos.getPosData({tid: ctx.tender.id});
+                ctx.body = {err: 0, msg: '', data: {bills: reviseBills, pos: revisePos}};
+            } catch (error) {
+                ctx.helper.log(error);
+                this.ajaxErrorBody(error, '获取台账修订数据错误,请刷新页面');
+            }
+        }
+
         async checkRevise(ctx) {
             const revise = await ctx.service.ledgerRevise.getLastestRevise(ctx.tender.id);
             if (revise.uid !== ctx.session.sessionUser.accountId) {

+ 0 - 1
app/controller/spss_controller.js

@@ -38,7 +38,6 @@ module.exports = app => {
                 }
                 await this.layout('spss/compare_tz.ejs', renderData, 'spss/compare_tz_modal.ejs');
             } catch (err) {
-                console.log(err);
                 ctx.helper.log(err);
             }
         }

+ 16 - 11
app/public/js/revise.js

@@ -49,16 +49,11 @@ $(document).ready(() => {
     treeSetting.calcFun = function (node) {
         node.dgn_price = ZhCalc.round(ZhCalc.div(node.total_price, node.dgn_qty1), 2);
     };
-    const billsTree = createNewPathTree('revise', treeSetting);
-    billsTree.loadDatas(billsData);
-    treeCalc.calculateAll(billsTree);
-    // 加载至spread
-    SpreadJsObj.loadSheetData(billsSheet, SpreadJsObj.DataType.Tree, billsTree);
-    SpreadJsObj.loadTopAndSelect(billsSheet, ckBillsSpread);
+    const billsTree = createNewPathTree('revise', treeSetting);    
     // 初始化 计量单元
     const pos = new PosData({ id: 'id', ledgerId: 'lid' });
-    pos.loadDatas(posData);
-
+    
+    // 清单 相关方法&绑定spreadjs事件
     const billsTreeSpreadObj = {
         loadExprToInput(sheet) {
             const sel = sheet.getSelections()[0];
@@ -996,7 +991,7 @@ $(document).ready(() => {
             }
         });
     }
-
+    // 计量单元 相关方法&绑定spreadjs事件
     const posSpreadObj = {
         /**
          * 加载计量单元 根据当前台账选择节点
@@ -1307,8 +1302,6 @@ $(document).ready(() => {
             });
         }
     };
-    posSpreadObj.loadCurPosData();
-    SpreadJsObj.resetTopAndSelect(posSheet);
     posSpread.bind(spreadNS.Events.SelectionChanged, posSpreadObj.selectionChanged);
     if (!readOnly && isTz) {
         $('#pos-expr').bind('change mouseleave', function () {
@@ -1395,6 +1388,18 @@ $(document).ready(() => {
 
         });
     }
+
+    // 加载清单&计量单元数据
+    postData(window.location.pathname + '/load', {}, function (result) {
+        billsTree.loadDatas(result.bills);
+        treeCalc.calculateAll(billsTree);
+        SpreadJsObj.loadSheetData(billsSheet, SpreadJsObj.DataType.Tree, billsTree);
+        SpreadJsObj.loadTopAndSelect(billsSheet, ckBillsSpread);        
+
+        pos.loadDatas(result.pos);
+        posSpreadObj.loadCurPosData();
+        SpreadJsObj.resetTopAndSelect(posSheet);
+    }, null);    
     $.divResizer({
         select: '#revise-resize',
         callback: function () {

+ 12 - 8
app/public/js/revise_history.js

@@ -57,14 +57,8 @@ $(document).ready(() => {
         node.dgn_price = ZhCalc.round(ZhCalc.div(node.total_price, node.dgn_qty1), 2);
     };
     const billsTree = createNewPathTree('revise', treeSetting);
-    billsTree.loadDatas(billsData);
-    treeCalc.calculateAll(billsTree);
-    // 加载至spread
-    SpreadJsObj.loadSheetData(billsSheet, SpreadJsObj.DataType.Tree, billsTree);
-    SpreadJsObj.loadTopAndSelect(billsSheet, ckBillsSpread);
     // 初始化 部位明细
     const pos = new PosData({ id: 'id', ledgerId: 'lid' });
-    pos.loadDatas(posData);
 
     const billsTreeSpreadObj = {
         /**
@@ -152,8 +146,18 @@ $(document).ready(() => {
             SpreadJsObj.resetFieldReadOnly(posSheet);
         },
     };
-    posSpreadObj.loadCurPosData();
-    SpreadJsObj.resetTopAndSelect(posSheet);
+    // 加载清单&计量单元数据
+    postData(window.location.pathname + '/load', {}, function (result) {
+        billsTree.loadDatas(result.bills);
+        treeCalc.calculateAll(billsTree);
+        SpreadJsObj.loadSheetData(billsSheet, SpreadJsObj.DataType.Tree, billsTree);
+        SpreadJsObj.loadTopAndSelect(billsSheet, ckBillsSpread);        
+
+        pos.loadDatas(result.pos);
+        posSpreadObj.loadCurPosData();
+        SpreadJsObj.resetTopAndSelect(posSheet);
+    }, null);   
+
     $.divResizer({
         select: '#revise-resize',
         callback: function () {

+ 2 - 0
app/router.js

@@ -119,10 +119,12 @@ 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/load', sessionAuth, tenderCheck, 'reviseController.loadInfoData');
     app.post('/tender/:id/revise/info/update', sessionAuth, tenderCheck, 'reviseController.update');
     app.post('/tender/:id/revise/info/upload-excel/:ueType', sessionAuth, tenderCheck, 'reviseController.uploadExcel');
     // 查看修订数据
     app.get('/tender/:id/revise/history', sessionAuth, tenderCheck, 'reviseController.history');
+    app.post('/tender/:id/revise/history/load', sessionAuth, tenderCheck, 'reviseController.loadHistoryData');
     app.post('/tender/:id/revise/history/info', sessionAuth, tenderCheck, 'reviseController.historyInfo');
     // 修订审批
     app.post('/tender/:id/revise/audit/add', sessionAuth, tenderCheck, 'reviseController.addAuditor');

+ 1 - 3
app/view/revise/history.ejs

@@ -105,10 +105,8 @@
     </div>
 </div>
 <script>
-    const posSpreadSetting = JSON.parse('<%- JSON.stringify(posSpread) %>');
-    const posData = JSON.parse('<%- JSON.stringify(revisePos) %>');
+    const posSpreadSetting = JSON.parse('<%- JSON.stringify(posSpread) %>');   
     const readOnly = <%- readOnly %>;
     const isTz = <%- ctx.tender.data.measure_type === measureType.tz.value %>;
     const billsSpreadSetting = JSON.parse('<%- JSON.stringify(ledgerSpread) %>');
-    const billsData = JSON.parse('<%- JSON.stringify(reviseBills) %>');
 </script>

+ 0 - 2
app/view/revise/info.ejs

@@ -202,8 +202,6 @@
 <script>
     const readOnly = <%- readOnly %>;
     const isTz = <%- ctx.tender.data.measure_type === measureType.tz.value %>;
-    const posData = JSON.parse('<%- JSON.stringify(revisePos) %>');
     const billsSpreadSetting = JSON.parse('<%- JSON.stringify(ledgerSpread) %>');
     const posSpreadSetting = JSON.parse('<%- JSON.stringify(posSpread) %>');
-    const billsData = JSON.parse('<%- JSON.stringify(reviseBills) %>');
 </script>