Browse Source

1. 重新上传签约清单后,批量插入清单部位处,签约清单应更新
2. 删除1-10-1-1导致的第三部分信息丢失问题
3. 批量插入清单部位,双击签约清单添加至清单

MaiXinRong 6 years ago
parent
commit
f7a12ac831

+ 19 - 14
app/public/js/ledger.js

@@ -1029,8 +1029,6 @@ $(document).ready(function() {
                 )
             }
             this.posSpread = SpreadJsObj.createNewSpread($('.batch-l-b', this.obj)[0]);
-            // 初始化 清单编号、部位数量复核表 表格
-            this.initView();
             // 初始化 签约清单 参数
             this.dealSpreadSetting = {
                 cols: [
@@ -1044,6 +1042,8 @@ $(document).ready(function() {
                 headRowHeight: [40],
             };
             this.dealSpread = SpreadJsObj.createNewSpread($('.batch-r', this.obj)[0]);
+            // 初始化 清单编号、部位数量复核表 表格
+            this.initView();
             SpreadJsObj.initSheet(this.dealSpread.getActiveSheet(), this.dealSpreadSetting);
             // 拉取签约清单数据
             if (dealBills) {
@@ -1056,21 +1056,22 @@ $(document).ready(function() {
             // 双击签约清单,自动添加到清单编号窗口
             this.dealSpread.bind(GC.Spread.Sheets.Events.CellDoubleClick, function (e, info) {
                 const deal = info.sheet.zh_data[info.row];
-                const sel = self.gclSpread.getActiveSheet().getSelections()[0];
-                self.qdSpread.getActiveSheet().getCell(sel.row, 0).value(deal.code);
-                self.qdSpread.getActiveSheet().getCell(sel.row, 1).value(deal.name);
-                self.qdSpread.getActiveSheet().getCell(sel.row, 2).value(deal.unit);
-                self.qdSpread.getActiveSheet().getCell(sel.row, 3).value(deal.unit_price);
-                if (sel.row + 1 === self.gclSpread.getActiveSheet().getRowCount()) {
+                const qdSheet = self.qdSpread.getActiveSheet(), posSheet = self.posSpread.getActiveSheet();
+                const sel = qdSheet.getSelections()[0];
+                qdSheet.getCell(sel.row, 0).value(deal.code);
+                qdSheet.getCell(sel.row, 1).value(deal.name);
+                qdSheet.getCell(sel.row, 2).value(deal.unit);
+                qdSheet.getCell(sel.row, 3).value(deal.unit_price);
+                if (sel.row + 1 === qdSheet.getRowCount()) {
                     const count = sel.row + 2;
-                    self.qdSpread.getActiveSheet().setRowCount(count);
-                    self.qdSpread.getActiveSheet().getCell(sel.row + 1, 0, GC.Spread.Sheets.SheetArea.rowHeader).text('清单' + count);
+                    qdSheet.setRowCount(count);
+                    qdSheet.getCell(sel.row + 1, 0, GC.Spread.Sheets.SheetArea.rowHeader).text('清单' + count);
 
-                    const colCount = self.posSpread.getActiveSheet().getColumnCount() + 1
-                    self.posSpread.getActiveSheet().setColumnCount(colCount);
-                    self.posSpread.getActiveSheet().getCell(0, colCount - 1, GC.Spread.Sheets.SheetArea.colHeader).text('数量' + count);
+                    const colCount = posSheet.getColumnCount() + 1
+                    posSheet.setColumnCount(colCount);
+                    posSheet.getCell(0, colCount - 1, GC.Spread.Sheets.SheetArea.colHeader).text('数量' + count);
                 }
-                self.qdSpread.getActiveSheet().setSelection(sel.row + 1, sel.col, 1, 1);
+                qdSheet.setSelection(sel.row + 1, sel.col, 1, 1);
             });
 
             this.obj.bind('shown.bs.modal', function () {
@@ -1120,6 +1121,10 @@ $(document).ready(function() {
             posSheet.setColumnWidth(0, 45, GC.Spread.Sheets.SheetArea.rowHeader);
             posSheet.clear(0, 0, posSheet.getRowCount(), posSheet.getColumnCount(), GC.Spread.Sheets.SheetArea.viewport, GC.Spread.Sheets.StorageType.data);
             SpreadJsObj.endMassOperation(posSheet);
+            // 检查签约清单数据,以工具栏数据为准
+            if (dealBills) {
+                SpreadJsObj.loadSheetData(this.dealSpread.getActiveSheet(), 'data', dealBills.data);
+            }
         }
         // 获取界面数据
         getBatchData () {

+ 9 - 7
app/public/js/path_tree.js

@@ -93,12 +93,14 @@ class PosData {
      */
     removeDatasByMasterId (mid) {
         const masterKey = itemsPre + mid;
-        const range = this.ledgerPos(mid);
-        delete this.ledgerPos[masterKey];
-        for (const r of range) {
-            this.datas.splice(this.datas.indexOf(r), 1);
-            const key = itemsPre + r[this.setting.id];
-            delete this.items[key];
+        const range = this.ledgerPos[masterKey];
+        if (range) {
+            delete this.ledgerPos[masterKey];
+            for (const r of range) {
+                this.datas.splice(this.datas.indexOf(r), 1);
+                const key = itemsPre + r[this.setting.id];
+                delete this.items[key];
+            }
         }
     }
 
@@ -714,7 +716,7 @@ const createNewPathTree = function (type, setting) {
                         }
                     }
                 }
-                if (node.children.length > 0) {
+                if (this.getItems(node.id) && node.children.length > 0) {
                     parents.push(node);
                 }
             }

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

@@ -293,6 +293,7 @@ const SpreadJsObj = {
      * @param {Number} count
      */
     reLoadRowData: function (sheet, row, count) {
+        //if (row < 0) { return; }
         const self = this;
         const sortData = sheet.zh_dataType === 'tree' ? sheet.zh_tree.nodes : sheet.zh_data;
         this.beginMassOperation(sheet);
@@ -332,6 +333,7 @@ const SpreadJsObj = {
         this.beginMassOperation(sheet);
         try {
             for (const row of rows) {
+                if (row < 0) { continue; }
                 // 清空原单元格数据
                 sheet.clear(row, -1, 1, -1, spreadNS.SheetArea.viewport, spreadNS.StorageType.data);
                 const data = sortData[row];

+ 3 - 1
app/service/tender.js

@@ -103,7 +103,9 @@ module.exports = app => {
             const [sql, sqlParam] = this.sqlBuilder.build(this.tableName);
 
             const tender = await this.db.queryOne(sql, sqlParam);
-            tender.category = tender.category && tender.category !== '' ? JSON.parse(tender.category) : null;
+            if (tender) {
+                tender.category = tender.category && tender.category !== '' ? JSON.parse(tender.category) : null;
+            }
             return tender;
         }