Prechádzať zdrojové kódy

调差清单页面改成后加载

laiguoran 3 rokov pred
rodič
commit
3a9d4f8dc2

+ 32 - 6
app/controller/material_controller.js

@@ -388,16 +388,16 @@ module.exports = app => {
                     }
                 }
                 // 取所有已被调用的工料清单表
-                renderData.materialListData = await ctx.service.materialList.getMaterialData(ctx.tender.id, ctx.material.id);
-                renderData.materialNotJoinListData = await ctx.service.materialListNotjoin.getAllDataByCondition({ where: { tid: ctx.tender.id, mid: ctx.material.id } });
+                // renderData.materialListData = await ctx.service.materialList.getMaterialData(ctx.tender.id, ctx.material.id);
+                // renderData.materialNotJoinListData = await ctx.service.materialListNotjoin.getAllDataByCondition({ where: { tid: ctx.tender.id, mid: ctx.material.id } });
                 renderData.materialType = JSON.stringify(materialConst);
                 renderData.jsFiles = this.app.jsFiles.common.concat(this.app.jsFiles.material.list);
                 // 获取清单数据
-                renderData.ledger = await ctx.service.ledger.getData(ctx.tender.id);
-                renderData.pos = await ctx.service.pos.getPosData({ tid: ctx.tender.id });
+                // renderData.ledger = await ctx.service.ledger.getData(ctx.tender.id);
+                // renderData.pos = await ctx.service.pos.getPosData({ tid: ctx.tender.id });
                 // 获取所选期数据并合并相加同类清单项
-                renderData.curLedgerData = await ctx.service.stageBills.getStagesData(ctx.tender.id, ctx.material.stage_id);
-                renderData.curPosData = await ctx.service.stagePos.getStagesData(ctx.tender.id, ctx.material.stage_id, 'list');
+                // renderData.curLedgerData = await ctx.service.stageBills.getStagesData(ctx.tender.id, ctx.material.stage_id);
+                // renderData.curPosData = await ctx.service.stagePos.getStagesData(ctx.tender.id, ctx.material.stage_id, 'list');
                 await this.layout('material/list.ejs', renderData, 'material/list_modal.ejs');
             } catch (err) {
                 this.log(err);
@@ -406,6 +406,32 @@ module.exports = app => {
         }
 
         /**
+         * 调差清单页面 (Get)
+         * @param {Object} ctx - egg全局变量
+         * @return {Promise<void>}
+         */
+        async loadListsData(ctx) {
+            try {
+                // const data = JSON.parse(ctx.request.body.data);
+                // const filter = data.filter.split(';');
+                const responseData = { err: 0, msg: '', data: {} };
+                // 取所有已被调用的工料清单表
+                responseData.data.materialListData = await ctx.service.materialList.getMaterialData(ctx.tender.id, ctx.material.id);
+                responseData.data.materialNotJoinListData = await ctx.service.materialListNotjoin.getAllDataByCondition({ where: { tid: ctx.tender.id, mid: ctx.material.id } });
+                // 获取清单数据
+                responseData.data.ledger = await ctx.service.ledger.getData(ctx.tender.id);
+                responseData.data.pos = await ctx.service.pos.getPosData({ tid: ctx.tender.id });
+                // 获取所选期数据并合并相加同类清单项
+                responseData.data.curLedgerData = await ctx.service.stageBills.getStagesData(ctx.tender.id, ctx.material.stage_id);
+                responseData.data.curPosData = await ctx.service.stagePos.getStagesData(ctx.tender.id, ctx.material.stage_id, 'list');
+                ctx.body = responseData;
+            } catch (err) {
+                this.log(err);
+                ctx.body = { err: 1, msg: err.toString(), data: null };
+            }
+        }
+
+        /**
          * 指数调差页面 (Get)
          * @param {Object} ctx - egg全局变量
          * @return {Promise<void>}

+ 37 - 22
app/public/js/material_list.js

@@ -153,28 +153,20 @@ $(document).ready(() => {
         font: '12px 微软雅黑',
         readOnly: true,
     };
-    // 解析清单汇总数据
-    gclGatherModel.loadLedgerData(ledger, curLedgerData);
-    gclGatherModel.loadPosData(pos, curPosData);
-    let gclGatherData = gclGatherModel.gatherGclData().filter(item => {
-        return item.qc_qty || item.contract_qty
-    });
-    calculateJiaCha(gclGatherData);
-    console.log(gclGatherData);
-
     // let gclGatherData = gclGatherModel.gatherGclData()
     // 获取项目节数据
     function loadLeafXmjData(iGclRow) {
         const gcl = gclGatherData[iGclRow];
         if (gcl) {
-            gcl.leafXmjs = gcl.leafXmjs.filter(item => {
-                return item.qc_qty || item.contract_qty
-            });
+            // gcl.leafXmjs = gcl.leafXmjs.filter(item => {
+            //     return item.qc_qty || item.contract_qty
+            // });
             for (const [index, xmj] of gcl.leafXmjs.entries()) {
                 const jiacha = calcOneBQJC(xmj);
                 gcl.leafXmjs[index].jiacha = jiacha !== 0 ? ZhCalc.round(jiacha, 2) : null;
             }
             SpreadJsObj.loadSheetData(leafXmjSpread.getActiveSheet(), SpreadJsObj.DataType.Data, gcl.leafXmjs);
+
             // 对清单调差工料table的单位数量进行改变
             materialSpreadSetting.cols[materialSpreadSetting.cols.length - 2].title = '|' + gcl.unit + '数量 �';
             // SpreadJsObj.initSheet(materialSpread.getActiveSheet(), materialSpreadSetting);
@@ -209,6 +201,32 @@ $(document).ready(() => {
         font: '12px 微软雅黑',
         readOnly: true,
     };
+    // 加载清单数据 - 暂时统一加载,如有需要,切换成动态加载并缓存
+    postData(window.location.pathname + '/load', {}, function (result) {
+        ledger = result.ledger;
+        curLedgerData = result.curLedgerData;
+        pos = result.pos;
+        curPosData = result.curPosData;
+        materialListData = result.materialListData;
+        notJoinList = result.materialNotJoinListData;
+        // 解析清单汇总数据
+        gclGatherModel.loadLedgerData(ledger, curLedgerData);
+        gclGatherModel.loadPosData(pos, curPosData);
+        gclGatherData = gclGatherModel.gatherGclData().filter(item => {
+            return item.qc_qty || item.contract_qty
+        });
+        calculateJiaCha(gclGatherData);
+        SpreadJsObj.initSheet(leafXmjSpread.getActiveSheet(), leafXmjSpreadSetting);
+        // 加载清单数据
+        SpreadJsObj.loadSheetData(ledgerSpread.getActiveSheet(), SpreadJsObj.DataType.Data, gclGatherData);
+        loadLeafXmjData(0);
+        loadMaterialData(0, 0);
+        const sheet = materialSpread.getActiveSheet();
+        sheet.suspendPaint();
+        sheet.setCellType(1, 3, new TipCellType(), spreadNS.SheetArea.colHeader);
+        sheet.resumePaint();
+        checkNotJoinMaterialData();
+    });
     // const leafXmjCol = {
     //     getValue: {
     //         jiacha: function (data) {
@@ -226,9 +244,6 @@ $(document).ready(() => {
     //     }
     // };
     // SpreadJsObj.initSpreadSettingEvents(leafXmjSpreadSetting, leafXmjCol);
-    SpreadJsObj.initSheet(leafXmjSpread.getActiveSheet(), leafXmjSpreadSetting);
-    // 加载清单数据
-    SpreadJsObj.loadSheetData(ledgerSpread.getActiveSheet(), SpreadJsObj.DataType.Data, gclGatherData);
 
     // 调差清单工料table
     const materialSpread = SpreadJsObj.createNewSpread($('#material-spread')[0]);
@@ -287,12 +302,12 @@ $(document).ready(() => {
     }
 
     // SpreadJsObj.locateTreeNode(ledgerSpread.getActiveSheet(), )
-    loadLeafXmjData(0);
-    loadMaterialData(0, 0);
-    const sheet = materialSpread.getActiveSheet();
-    sheet.suspendPaint();
-    sheet.setCellType(1, 3, new TipCellType(), spreadNS.SheetArea.colHeader);
-    sheet.resumePaint();
+    // loadLeafXmjData(0);
+    // loadMaterialData(0, 0);
+    // const sheet = materialSpread.getActiveSheet();
+    // sheet.suspendPaint();
+    // sheet.setCellType(1, 3, new TipCellType(), spreadNS.SheetArea.colHeader);
+    // sheet.resumePaint();
     // 不参与调差数据值变灰
     function checkNotJoinMaterialData() {
         const sheet = ledgerSpread.getActiveSheet();
@@ -308,7 +323,7 @@ $(document).ready(() => {
             }
         }
     }
-    checkNotJoinMaterialData();
+    // checkNotJoinMaterialData();
     // 对添加工料表格赋值
     function changeMaterialTable() {
         $('#materialBills tr').removeClass('table-secondary');

+ 1 - 0
app/router.js

@@ -438,6 +438,7 @@ module.exports = app => {
     // 调差清单
     app.get('/tender/:id/measure/material/:order/list', sessionAuth, tenderCheck, uncheckTenderCheck, materialCheck, 'materialController.list');
     app.post('/tender/:id/measure/material/:order/list/save', sessionAuth, tenderCheck, uncheckTenderCheck, materialCheck, 'materialController.saveListsData');
+    app.post('/tender/:id/measure/material/:order/list/load', sessionAuth, tenderCheck, uncheckTenderCheck, materialCheck, 'materialController.loadListsData');
 
     // 附件
     app.get('/tender/:id/measure/material/:order/file', sessionAuth, tenderCheck, uncheckTenderCheck, materialCheck, 'materialController.file');

+ 1 - 6
app/view/material/list.ejs

@@ -71,13 +71,8 @@
 <script>
     const materialType = JSON.parse('<%- materialType %>');
     const materialBillsData = JSON.parse(unescape('<%- escape(JSON.stringify(materialBillsData)) %>'));
-    let materialListData = JSON.parse(unescape('<%- escape(JSON.stringify(materialListData)) %>'));
-    const notJoinList = JSON.parse('<%- JSON.stringify(materialNotJoinListData) %>');
-    const ledger = JSON.parse(unescape('<%- escape(JSON.stringify(ledger)) %>'));
-    const curLedgerData = JSON.parse(unescape('<%- escape(JSON.stringify(curLedgerData)) %>'));
-    const pos = JSON.parse(unescape('<%- escape(JSON.stringify(pos)) %>'));
-    const curPosData = JSON.parse(unescape('<%- escape(JSON.stringify(curPosData)) %>'));
     const readOnly = <%- material.readOnly %>;
     const stage_order = <%- material.order %>;
     const materialID = <%- material.id %>;
+    let materialListData, notJoinList, ledger, curLedgerData, pos, curPosData, gclGatherData;
 </script>