Переглянути джерело

1. 计量台账,记住台账显示位置,选中节点
2. 同步修改台账分解、台账审批、台账修订-修订详情

MaiXinRong 6 роки тому
батько
коміт
df0ef31997

+ 8 - 1
app/public/js/ledger.js

@@ -5,6 +5,7 @@
  * @date 2018/02/05
  * @version
  */
+const ckBillsSpread = window.location.pathname + '-billsSelect';
 function checkTzMeasureType () {
     return tender.measure_type === measureType.tz.value;
 }
@@ -44,6 +45,7 @@ $(document).ready(function() {
     SpreadJsObj.initSheet(ledgerSpread.getActiveSheet(), ledgerSpreadSetting);
     // 加载台账数据到界面
     SpreadJsObj.loadSheetData(ledgerSpread.getActiveSheet(), 'tree', ledgerTree);
+    SpreadJsObj.loadTopAndSelect(ledgerSpread.getActiveSheet(), ckBillsSpread);
     // 初始化 部位明细
     const pos = new PosData({
         id: 'id', ledgerId: 'lid',
@@ -493,11 +495,16 @@ $(document).ready(function() {
                 posOperationObj.loadCurPosData();
                 posSearch.search($('#pos-keyword').val());
             }
+            SpreadJsObj.saveTopAndSelect(info.sheet, ckBillsSpread);
+        },
+        topRowChanged(e, info) {
+            SpreadJsObj.saveTopAndSelect(info.sheet, ckBillsSpread);
         },
     };
     // 绑定事件
     ledgerSpread.bind(GC.Spread.Sheets.Events.SelectionChanged, treeOperationObj.selectionChanged);
     ledgerSpread.bind(GC.Spread.Sheets.Events.ClipboardChanging, treeOperationObj.clipboardChanging);
+    ledgerSpread.bind(spreadNS.Events.TopRowChanged, treeOperationObj.topRowChanged);
     if (!ledgerSpreadSetting.readOnly) {
         ledgerSpread.bind(GC.Spread.Sheets.Events.SelectionChanged, function (e, info) {
             treeOperationObj.refreshOperationValid(info.sheet, info.newSelections);
@@ -737,6 +744,7 @@ $(document).ready(function() {
         SpreadJsObj.initSheet(posSpread.getActiveSheet(), posSpreadSetting);
         postData('/tender/' + getTenderId() + '/pos', null, function (data) {
             pos.loadDatas(data);
+            posOperationObj.loadCurPosData();
         });
         $('#pos-keyword').bind('input propertychange', function () {
             posSearch.search(this.value);
@@ -971,7 +979,6 @@ $(document).ready(function() {
             }
         },
     };
-    posOperationObj.loadCurPosData();
     if (!posSpreadSetting.readOnly) {
         SpreadJsObj.addDeleteBind(posSpread, posOperationObj.deletePress);
         posSpread.bind(spreadNS.Events.EditStarting, posOperationObj.editStarting);

+ 17 - 15
app/public/js/ledger_audit.js

@@ -8,6 +8,7 @@
  * @version
  */
 
+const ckBillsSpread = window.location.pathname + '-billsSelect';
 function getTenderId() {
     return window.location.pathname.split('/')[2];
 }
@@ -31,6 +32,7 @@ $(document).ready(() => {
     ledgerTree.loadDatas(ledger);
     SpreadJsObj.initSheet(ledgerSpread.getActiveSheet(), ledgerSpreadSetting);
     SpreadJsObj.loadSheetData(ledgerSpread.getActiveSheet(), 'tree', ledgerTree);
+    SpreadJsObj.loadTopAndSelect(ledgerSpread.getActiveSheet(), ckBillsSpread);
 
     // 初始化 部位明细
     const pos = new PosData({
@@ -38,6 +40,15 @@ $(document).ready(() => {
     });
     const posSpread = SpreadJsObj.createNewSpread($('#pos-spread')[0]);
 
+    const loadCurPosData = function () {
+        const node = SpreadJsObj.getSelectObject(ledgerSpread.getActiveSheet());
+        if (node) {
+            const posData = pos.ledgerPos[itemsPre + node.id] || [];
+            SpreadJsObj.loadSheetData(posSpread.getActiveSheet(), 'data', posData);
+        } else {
+            SpreadJsObj.loadSheetData(posSpread.getActiveSheet(), 'data', []);
+        }
+    };
     // 台账模式加载部位明细数据
     if (checkTzMeasureType()) {
         $.divResizer({
@@ -52,25 +63,16 @@ $(document).ready(() => {
         SpreadJsObj.initSheet(posSpread.getActiveSheet(), posSpreadSetting);
         postData('/tender/' + getTenderId() + '/pos', null, function (data) {
             pos.loadDatas(data);
+            loadCurPosData();
         });
     }
 
     ledgerSpread.bind(GC.Spread.Sheets.Events.SelectionChanged, function (e, info) {
-        const sheet = ledgerSpread.getActiveSheet();
-        let node;
-        if (!sheet || !sheet.zh_tree) {
-            node = null;
-        } else {
-            const sel = sheet.getSelections()[0];
-            node = sheet.zh_tree.nodes[sel.row];
-        }
-
-        if (node) {
-            const posData = pos.ledgerPos[itemsPre + node.id] || [];
-            SpreadJsObj.loadSheetData(posSpread.getActiveSheet(), 'data', posData);
-        } else {
-            SpreadJsObj.loadSheetData(posSpread.getActiveSheet(), 'data', []);
-        }
+        loadCurPosData();
+        SpreadJsObj.saveTopAndSelect(info.sheet, ckBillsSpread);
+    });
+    ledgerSpread.bind(spreadNS.Events.TopRowChanged, function (e, info) {
+        SpreadJsObj.saveTopAndSelect(info.sheet, ckBillsSpread);
     });
 
     let dealBills;

+ 9 - 1
app/public/js/revise.js

@@ -8,6 +8,8 @@
  * @version
  */
 
+const ckBillsSpread = window.location.pathname + '-billsSelect';
+
 $(document).ready(() => {
     autoFlashHeight();
     // 初始化spread
@@ -38,6 +40,7 @@ $(document).ready(() => {
     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);
@@ -134,6 +137,7 @@ $(document).ready(() => {
                 posSpreadObj.loadCurPosData();
                 //posSearch.search($('#pos-keyword').val());
             }
+            SpreadJsObj.saveTopAndSelect(info.sheet, ckBillsSpread);
         },
         /**
          * 新增节点
@@ -212,14 +216,18 @@ $(document).ready(() => {
                 });
             }
         },
+        topRowChanged: function (e, info) {
+            SpreadJsObj.saveTopAndSelect(info.sheet, ckBillsSpread);
+        },
     };
     billsTreeSpreadObj.refreshOperationValid(billsSheet);
+    billsSpread.bind(spreadNS.Events.SelectionChanged, billsTreeSpreadObj.selectionChanged);
+    billsSpread.bind(spreadNS.Events.topRowChanged, billsTreeSpreadObj.topRowChanged);
     if (!readOnly) {
         // 增删上下移升降级
         $('a[name="base-opr"]').click(function () {
             billsTreeSpreadObj.baseOpr(billsSheet, this.getAttribute('type'));
         });
-        billsSpread.bind(spreadNS.Events.SelectionChanged, billsTreeSpreadObj.selectionChanged);
         let batchInsertObj;
         // 右键菜单
         $.contextMenu({

+ 18 - 0
app/public/js/spreadjs_rela/spreadjs_zh.js

@@ -590,6 +590,24 @@ const SpreadJsObj = {
         sheet.setSelection(index, sels[0].col, 1, 1);
         sheet.showRow(index, spreadNS.VerticalPosition.center);
     },
+    saveTopAndSelect: function (sheet, cacheKey) {
+        const sel = sheet.getSelections()[0];
+        const top = sheet.getViewportTopRow(1);
+        setLocalCache(cacheKey, JSON.stringify({top: top, sel: sel}));
+    },
+    loadTopAndSelect: function (sheet, cacheKey) {
+        let ts = getLocalCache(cacheKey);
+        if (ts !== '') {
+            ts = JSON.parse(ts);
+            if (ts === undefined || ts === null) return;
+            if (ts.sel) {
+                sheet.setSelection(ts.sel.row, ts.sel.col, ts.sel.rowCount, ts.sel.colCount);
+            }
+            if (ts.top) {
+                sheet.showRow(ts.top, spreadNS.VerticalPosition.top);
+            }
+        }
+    },
     /**
      * 获取当前选行的数据对象
      * @param {GC.Spread.Sheets.Worksheet} sheet

+ 8 - 1
app/public/js/stage.js

@@ -7,6 +7,7 @@
  * @date 2018/12/7
  * @version
  */
+const ckBillsSpread = window.location.pathname + '-billsSelect';
 function checkTzMeasureType () {
     return tender.measure_type === measureType.tz.value;
 }
@@ -451,8 +452,8 @@ $(document).ready(() => {
     ledgerSpreadSetting.imageClick = function (data) {
         changesObj.loadChanges({bills: data});
     };
-    //
     SpreadJsObj.initSheet(slSpread.getActiveSheet(), ledgerSpreadSetting);
+
     stageTree.loadDatas(ledgerData);
     stageTree.loadCurStageData(curStageData);
     stageTree.loadPreStageData(preStageData);
@@ -460,6 +461,7 @@ $(document).ready(() => {
     treeCalc.calculateAll(stageTree);
     // 绘制界面
     SpreadJsObj.loadSheetData(slSpread.getActiveSheet(), 'tree', stageTree);
+    SpreadJsObj.loadTopAndSelect(slSpread.getActiveSheet(), ckBillsSpread);
 
     //初始化所有附件列表
     getAllList();
@@ -524,6 +526,7 @@ $(document).ready(() => {
         },
         selectionChanged: function (e, info) {
             stagePosSpreadObj.loadCurPosData();
+            SpreadJsObj.saveTopAndSelect(info.sheet, ckBillsSpread);
         },
         deletePress(sheet) {
             if (sheet.zh_setting && sheet.zh_dataType === 'tree') {
@@ -675,11 +678,15 @@ $(document).ready(() => {
                 stagePosSpreadObj.loadCurPosData();
             });
         },
+        topRowChanged(e, info) {
+            SpreadJsObj.saveTopAndSelect(info.sheet, ckBillsSpread);
+        },
     };
     slSpread.bind(spreadNS.Events.EditEnded, stageTreeSpreadObj.editEnded);
     slSpread.bind(spreadNS.Events.SelectionChanged, stageTreeSpreadObj.selectionChanged);
     slSpread.bind(spreadNS.Events.ClipboardPasting, stageTreeSpreadObj.clipboardPasting);
     slSpread.bind(spreadNS.Events.ClipboardPasted, stageTreeSpreadObj.clipboardPasted);
+    slSpread.bind(spreadNS.Events.TopRowChanged, stageTreeSpreadObj.topRowChanged);
     SpreadJsObj.addDeleteBind(slSpread, stageTreeSpreadObj.deletePress);
     $.contextMenu({
         selector: '#stage-ledger',