Просмотр исходного кода

台账未通过变更无法添加部位

ellisran 1 день назад
Родитель
Сommit
7a4234d75e
4 измененных файлов с 138 добавлено и 78 удалено
  1. 8 0
      app/controller/change_controller.js
  2. 80 55
      app/public/js/change_revise.js
  3. 32 23
      app/view/change/revise.ejs
  4. 18 0
      app/view/change/revise_modal.ejs

+ 8 - 0
app/controller/change_controller.js

@@ -1763,6 +1763,10 @@ module.exports = app => {
                     edit = false;
                     edit = false;
                     changing = true;
                     changing = true;
                 }
                 }
+                let ledgering = false;
+                if (ctx.tender.data.ledger_status !== audit.ledger.status.checked) {
+                    ledgering = true;
+                }
                 let revising = false;
                 let revising = false;
                 // 判断是否在修订中,是则无法操作本页
                 // 判断是否在修订中,是则无法操作本页
                 const lastRevise = await ctx.service.ledgerRevise.getLastestRevise(ctx.tender.id);
                 const lastRevise = await ctx.service.ledgerRevise.getLastestRevise(ctx.tender.id);
@@ -1801,6 +1805,7 @@ module.exports = app => {
                 renderData.readOnly = !edit;
                 renderData.readOnly = !edit;
                 renderData.changing = changing;
                 renderData.changing = changing;
                 renderData.revising = revising;
                 renderData.revising = revising;
+                renderData.ledgering = ledgering;
                 renderData.isYb = change.uid === ctx.session.sessionUser.accountId;
                 renderData.isYb = change.uid === ctx.session.sessionUser.accountId;
                 await this.layout('change/revise.ejs', renderData, 'change/revise_modal.ejs');
                 await this.layout('change/revise.ejs', renderData, 'change/revise_modal.ejs');
             } catch (err) {
             } catch (err) {
@@ -1899,6 +1904,9 @@ module.exports = app => {
                 if (change.status !== audit.change.status.uncheck && change.status !== audit.change.status.checkNo && change.status !== audit.change.status.revise) {
                 if (change.status !== audit.change.status.uncheck && change.status !== audit.change.status.checkNo && change.status !== audit.change.status.revise) {
                     throw '该变更令正在审批中或已完成,无法操作新增部位数据';
                     throw '该变更令正在审批中或已完成,无法操作新增部位数据';
                 }
                 }
+                if (ctx.tender.data.ledger_status !== audit.ledger.status.checked) {
+                    throw '台账未审批通过,无法操作新增部位数据';
+                }
                 // 判断是否在修订中,是则无法操作本页
                 // 判断是否在修订中,是则无法操作本页
                 const lastRevise = await ctx.service.ledgerRevise.getLastestRevise(ctx.tender.id);
                 const lastRevise = await ctx.service.ledgerRevise.getLastestRevise(ctx.tender.id);
                 if (lastRevise && lastRevise.status !== audit.revise.status.checked) {
                 if (lastRevise && lastRevise.status !== audit.revise.status.checked) {

+ 80 - 55
app/public/js/change_revise.js

@@ -99,7 +99,7 @@ $(document).ready(() => {
         },
         },
         readOnly: {
         readOnly: {
             isChangeAdd: function (data) {
             isChangeAdd: function (data) {
-                return !readOnly && !data.formc;
+                return ledgering || (!readOnly && !data.formc);
             },
             },
             isChangeList: function (data) {
             isChangeList: function (data) {
                 if (!data) return true;
                 if (!data) return true;
@@ -146,7 +146,7 @@ $(document).ready(() => {
         },
         },
         readOnly: {
         readOnly: {
             isChangeAdd: function (data) {
             isChangeAdd: function (data) {
-                return !readOnly && !data.formc && (!data.settle_status || (data.settle_status && data.settle_status === settleStatus.finish));
+                return ledgering || (!readOnly && !data.formc && (!data.settle_status || (data.settle_status && data.settle_status === settleStatus.finish)));
             },
             },
             isChangeList: function (data) {
             isChangeList: function (data) {
                 if (!data) return true;
                 if (!data) return true;
@@ -382,16 +382,16 @@ $(document).ready(() => {
                     }
                     }
 
 
                     if (col.field.indexOf('dgn') >= 0) {
                     if (col.field.indexOf('dgn') >= 0) {
-                        $('#bills-expr').attr('readOnly', readOnly || cell.locked() || (_.isString(data.b_code) && data.b_code !== '') || !data.formc);
+                        $('#bills-expr').attr('readOnly', ledgering || readOnly || cell.locked() || (_.isString(data.b_code) && data.b_code !== '') || !data.formc);
                     } else if (col.field === 'unit_price') {
                     } else if (col.field === 'unit_price') {
-                        $('#bills-expr').attr('readOnly', readOnly || cell.locked() || (data.children && data.children.length > 0) || (_.isBoolean(data.used) && data.used === true) || !data.formc);
+                        $('#bills-expr').attr('readOnly', ledgering || readOnly || cell.locked() || (data.children && data.children.length > 0) || (_.isBoolean(data.used) && data.used === true) || !data.formc);
                     } else {
                     } else {
                         const nodePos = pos.getLedgerPos(data.id);
                         const nodePos = pos.getLedgerPos(data.id);
                         if (nodePos && nodePos.length > 0) {
                         if (nodePos && nodePos.length > 0) {
                             $('#bills-expr').val('').attr('readOnly', true);
                             $('#bills-expr').val('').attr('readOnly', true);
                             $('#bills-expr').removeAttr('data-row');
                             $('#bills-expr').removeAttr('data-row');
                         } else {
                         } else {
-                            $('#bills-expr').attr('readOnly', readOnly || cell.locked() || (data.children && data.children.length > 0) || !data.formc);
+                            $('#bills-expr').attr('readOnly', ledgering || readOnly || cell.locked() || (data.children && data.children.length > 0) || !data.formc);
                         }
                         }
                     }
                     }
                     $('#bills-expr').attr('data-row', sel.row);
                     $('#bills-expr').attr('data-row', sel.row);
@@ -577,6 +577,7 @@ $(document).ready(() => {
          * @param spread
          * @param spread
          */
          */
         baseOpr: function (sheet, type, addCount = 1) {
         baseOpr: function (sheet, type, addCount = 1) {
+            if (ledgering) return;
             const self = this;
             const self = this;
             const [tree, node, count] = this.getDefaultSelectInfo(sheet);
             const [tree, node, count] = this.getDefaultSelectInfo(sheet);
             if (!tree || !node || !count) return;
             if (!tree || !node || !count) return;
@@ -870,6 +871,10 @@ $(document).ready(() => {
                 if (col.field === 'is_change' || col.field === 'is_valuation' || col.field === 'is_new_price') {
                 if (col.field === 'is_change' || col.field === 'is_valuation' || col.field === 'is_new_price') {
                     return;
                     return;
                 }
                 }
+                if (ledgering && col.field !== 'camount') {
+                    SpreadJsObj.reLoadRowData(info.sheet, info.row);
+                    return;
+                }
                 const sortData = info.sheet.zh_dataType === 'tree' ? info.sheet.zh_tree.nodes : info.sheet.zh_data;
                 const sortData = info.sheet.zh_dataType === 'tree' ? info.sheet.zh_tree.nodes : info.sheet.zh_data;
                 const node = sortData[info.row];
                 const node = sortData[info.row];
                 if (col.field === 'camount') {
                 if (col.field === 'camount') {
@@ -1185,6 +1190,7 @@ $(document).ready(() => {
                 for (let iCol = 0; iCol < info.cellRange.colCount; iCol++) {
                 for (let iCol = 0; iCol < info.cellRange.colCount; iCol++) {
                     const curCol = info.cellRange.col + iCol;
                     const curCol = info.cellRange.col + iCol;
                     const colSetting = info.sheet.zh_setting.cols[curCol];
                     const colSetting = info.sheet.zh_setting.cols[curCol];
+                    if (ledgering && colSetting.field !== 'camount') continue;
                     const value = colSetting.wordWrap ? pasteData[iRow-filterRow][iCol] : trimInvalidChar(pasteData[iRow-filterRow][iCol]);
                     const value = colSetting.wordWrap ? pasteData[iRow-filterRow][iCol] : trimInvalidChar(pasteData[iRow-filterRow][iCol]);
                     if (node.children && node.children.length > 0 && invalidFields.parent.indexOf(colSetting.field) >= 0) {
                     if (node.children && node.children.length > 0 && invalidFields.parent.indexOf(colSetting.field) >= 0) {
                         toastMessageUniq(hint.parent);
                         toastMessageUniq(hint.parent);
@@ -1561,6 +1567,7 @@ $(document).ready(() => {
                     const col = sheet.zh_setting.cols[iCol];
                     const col = sheet.zh_setting.cols[iCol];
                     const style = sheet.getStyle(iRow, iCol);
                     const style = sheet.getStyle(iRow, iCol);
                     if (style.locked || (['dgn_qty1', 'dgn_qty2'].indexOf(col.field) >= 0 && node.b_code)) continue;
                     if (style.locked || (['dgn_qty1', 'dgn_qty2'].indexOf(col.field) >= 0 && node.b_code)) continue;
+                    if (ledgering && col.field !== 'camount') continue;
                     if (col.type === 'Number' && node.settle_status === settleStatus.finish) continue;
                     if (col.type === 'Number' && node.settle_status === settleStatus.finish) continue;
 
 
                     if (['dgn_qty1', 'dgn_qty2', 'camount'].indexOf(col.field) < 0 && sheet.zh_tree.checkNodeUsed(node, pos)) {
                     if (['dgn_qty1', 'dgn_qty2', 'camount'].indexOf(col.field) < 0 && sheet.zh_tree.checkNodeUsed(node, pos)) {
@@ -1637,6 +1644,7 @@ $(document).ready(() => {
             }
             }
         },
         },
         pasteBlock: function (spread, copyInfo) {
         pasteBlock: function (spread, copyInfo) {
+            if (ledgering) return;
             const self = this;
             const self = this;
             const sheet = spread.getActiveSheet();
             const sheet = spread.getActiveSheet();
             const [tree, node] = this.getDefaultSelectInfo(spread.getActiveSheet());
             const [tree, node] = this.getDefaultSelectInfo(spread.getActiveSheet());
@@ -1779,6 +1787,7 @@ $(document).ready(() => {
             }
             }
         },
         },
         sortCode: function (sheet) {
         sortCode: function (sheet) {
+            if (ledgering) return;
             const tree = sheet.zh_tree;
             const tree = sheet.zh_tree;
             if (!tree) return;
             if (!tree) return;
 
 
@@ -1963,15 +1972,17 @@ $(document).ready(() => {
     billsSpread.bind(spreadNS.Events.topRowChanged, billsTreeSpreadObj.topRowChanged);
     billsSpread.bind(spreadNS.Events.topRowChanged, billsTreeSpreadObj.topRowChanged);
     if (!readOnly) {
     if (!readOnly) {
         // 增删上下移升降级
         // 增删上下移升降级
-        $('a[name="base-opr"]').click(function () {
-            billsTreeSpreadObj.baseOpr(billsSheet, this.getAttribute('type'));
-        });
-        $('a[name=cpc]').click(function () {
-            billsSpread.commandManager().execute({
-                cmd: this.getAttribute('type'),
-                sheetName: billsSheet.name()
+        if (!ledgering) {
+            $('a[name="base-opr"]').click(function () {
+                billsTreeSpreadObj.baseOpr(billsSheet, this.getAttribute('type'));
             });
             });
-        });
+            $('a[name=cpc]').click(function () {
+                billsSpread.commandManager().execute({
+                    cmd: this.getAttribute('type'),
+                    sheetName: billsSheet.name()
+                });
+            });
+        }
 
 
         $('#bills-expr').bind('change onblur', function () {
         $('#bills-expr').bind('change onblur', function () {
             if (this.readOnly) return;
             if (this.readOnly) return;
@@ -2143,7 +2154,7 @@ $(document).ready(() => {
             SpreadJsObj.Clipboard.setCopyData(copyText);
             SpreadJsObj.Clipboard.setCopyData(copyText);
         });
         });
         SpreadJsObj.addDeleteBind(billsSpread, billsTreeSpreadObj.deletePress);
         SpreadJsObj.addDeleteBind(billsSpread, billsTreeSpreadObj.deletePress);
-        SpreadJsObj.addCutEvents(billsSpread, billsTreeSpreadObj.cut);
+        if (!ledgering) SpreadJsObj.addCutEvents(billsSpread, billsTreeSpreadObj.cut);
     }
     }
     // 右键菜单
     // 右键菜单
     let batchInsertObj;
     let batchInsertObj;
@@ -2181,7 +2192,7 @@ $(document).ready(() => {
         },
         },
         items: {}
         items: {}
     };
     };
-    if (!readOnly) {
+    if (!readOnly && !ledgering) {
         billsContextMenuOptions.items.create = {
         billsContextMenuOptions.items.create = {
             name: '新增',
             name: '新增',
             icon: 'fa-sign-in',
             icon: 'fa-sign-in',
@@ -2327,7 +2338,7 @@ $(document).ready(() => {
             return select && select.level <= 1;
             return select && select.level <= 1;
         }
         }
     };
     };
-    if (!readOnly) {
+    if (!readOnly && !ledgering) {
         billsContextMenuOptions.items.pasteBlock = {
         billsContextMenuOptions.items.pasteBlock = {
             name: '粘贴整块',
             name: '粘贴整块',
             icon: 'fa-clipboard',
             icon: 'fa-clipboard',
@@ -2351,7 +2362,7 @@ $(document).ready(() => {
         };
         };
         billsContextMenuOptions.items.sprBlock = '----';
         billsContextMenuOptions.items.sprBlock = '----';
     }
     }
-    if (!readOnly) {
+    if (!readOnly && !ledgering) {
         billsContextMenuOptions.items.batchInsert = {
         billsContextMenuOptions.items.batchInsert = {
             name: '批量插入',
             name: '批量插入',
             type: 'batchInsert',
             type: 'batchInsert',
@@ -2498,7 +2509,7 @@ $(document).ready(() => {
                         ? (data[exprInfo.expr] ? data[exprInfo.expr] : data[col.field])
                         ? (data[exprInfo.expr] ? data[exprInfo.expr] : data[col.field])
                         : data[col.field];
                         : data[col.field];
                     $('#pos-expr').val(value).attr('field', col.field).attr('org', data[col.field])
                     $('#pos-expr').val(value).attr('field', col.field).attr('org', data[col.field])
-                        .attr('readOnly', readOnly || !data.formc || data.settle_status === settleStatus.finish).attr('data-row', sel.row);
+                        .attr('readOnly', ledgering || readOnly || !data.formc || data.settle_status === settleStatus.finish).attr('data-row', sel.row);
                 } else {
                 } else {
                     $('#pos-expr').val('').attr('readOnly', true);
                     $('#pos-expr').val('').attr('readOnly', true);
                     $('#pos-expr').removeAttr('data-row');
                     $('#pos-expr').removeAttr('data-row');
@@ -2529,7 +2540,7 @@ $(document).ready(() => {
                     posSheet.zh_setting.cols.forEach(function (col, i) {
                     posSheet.zh_setting.cols.forEach(function (col, i) {
                         for (let iRow = 0; iRow < posSheet.getRowCount(); iRow++) {
                         for (let iRow = 0; iRow < posSheet.getRowCount(); iRow++) {
                             if (i !== 0 && col.field !== 'camount' && col.field !== 'is_valuation') {
                             if (i !== 0 && col.field !== 'camount' && col.field !== 'is_valuation') {
-                                posSheet.getCell(iRow, i).locked((posSheet.zh_data[iRow] && !posSheet.zh_data[iRow].formc) || posSheet.zh_setting.readOnly || false);
+                                posSheet.getCell(iRow, i).locked(ledgering || (posSheet.zh_data[iRow] && !posSheet.zh_data[iRow].formc) || posSheet.zh_setting.readOnly || false);
                             } else {
                             } else {
                                 let lock = false;
                                 let lock = false;
                                 if (!posSheet.zh_data[iRow]) {
                                 if (!posSheet.zh_data[iRow]) {
@@ -2549,6 +2560,7 @@ $(document).ready(() => {
             posSpreadObj.refreshOperationValid(posSheet);
             posSpreadObj.refreshOperationValid(posSheet);
         },
         },
         baseOpr: function (sheet, type) {
         baseOpr: function (sheet, type) {
+            if (ledgering) return;
             const data = {
             const data = {
                 postType: 'pos',
                 postType: 'pos',
                 posPostType: type === 'delete' ? type : 'update',
                 posPostType: type === 'delete' ? type : 'update',
@@ -2800,6 +2812,10 @@ $(document).ready(() => {
             if (col.field === 'is_change' || col.field === 'is_valuation') {
             if (col.field === 'is_change' || col.field === 'is_valuation') {
                 return;
                 return;
             }
             }
+            if (ledgering && col.field !== 'camount') {
+                SpreadJsObj.reLoadRowData(info.sheet, info.row);
+                return;
+            }
             if (col.field === 'camount') {
             if (col.field === 'camount') {
                 if (!node) {
                 if (!node) {
                     toastr.error('数据错误,请选择台账节点后再试');
                     toastr.error('数据错误,请选择台账节点后再试');
@@ -3107,6 +3123,7 @@ $(document).ready(() => {
                     const cData = {};
                     const cData = {};
                     for (let iCol = sel.col; iCol < sel.col + sel.colCount; iCol++) {
                     for (let iCol = sel.col; iCol < sel.col + sel.colCount; iCol++) {
                         const colSetting = sheet.zh_setting.cols[iCol];
                         const colSetting = sheet.zh_setting.cols[iCol];
+                        if (ledgering && colSetting.field !== 'camount') continue;
                         if (colSetting.field === 'name') {
                         if (colSetting.field === 'name') {
                             toastr.error('部位名称不能为空');
                             toastr.error('部位名称不能为空');
                             return;
                             return;
@@ -3210,6 +3227,7 @@ $(document).ready(() => {
          * @param sheet
          * @param sheet
          */
          */
         deletePos: function (sheet) {
         deletePos: function (sheet) {
+            if (ledgering) return;
             const selection = sheet.getSelections();
             const selection = sheet.getSelections();
             const data = {
             const data = {
                 postType: 'pos',
                 postType: 'pos',
@@ -3313,13 +3331,14 @@ $(document).ready(() => {
             const lastOrder = sortData.length > 0 ? sortData[sortData.length - 1].porder + 1 : 1;
             const lastOrder = sortData.length > 0 ? sortData[sortData.length - 1].porder + 1 : 1;
             makeGclGatherData();
             makeGclGatherData();
             for (let iRow = 0; iRow < info.cellRange.rowCount; iRow++) {
             for (let iRow = 0; iRow < info.cellRange.rowCount; iRow++) {
-                let bPaste = true;
+                let bPaste = !ledgering;
                 const curRow = info.cellRange.row + iRow;
                 const curRow = info.cellRange.row + iRow;
                 const posData = curRow >= sortData.length ? {lid: node.id, porder: lastOrder + curRow - sortData.length} : {id: sortData[curRow].id, lid: node.id};
                 const posData = curRow >= sortData.length ? {lid: node.id, porder: lastOrder + curRow - sortData.length} : {id: sortData[curRow].id, lid: node.id};
                 for (let iCol = 0; iCol < info.cellRange.colCount; iCol++) {
                 for (let iCol = 0; iCol < info.cellRange.colCount; iCol++) {
                     const curCol = info.cellRange.col + iCol;
                     const curCol = info.cellRange.col + iCol;
                     const colSetting = info.sheet.zh_setting.cols[curCol];
                     const colSetting = info.sheet.zh_setting.cols[curCol];
                     if (!colSetting) continue;
                     if (!colSetting) continue;
+                    if (ledgering && colSetting.field !== 'camount') continue;
 
 
                     posData[colSetting.field] = colSetting.wordWrap ? info.sheet.getText(curRow, curCol) : trimInvalidChar(info.sheet.getText(curRow, curCol));
                     posData[colSetting.field] = colSetting.wordWrap ? info.sheet.getText(curRow, curCol) : trimInvalidChar(info.sheet.getText(curRow, curCol));
                     if (posData.id && colSetting.type === 'Number' && sortData[curRow].settle_status === settleStatus.finish) {
                     if (posData.id && colSetting.type === 'Number' && sortData[curRow].settle_status === settleStatus.finish) {
@@ -3504,6 +3523,7 @@ $(document).ready(() => {
             posSpreadObj.refreshOperationValid(posSheet);
             posSpreadObj.refreshOperationValid(posSheet);
         },
         },
         addPegs: function (pegs) {
         addPegs: function (pegs) {
+            if (ledgering) return;
             if (!pegs || pegs.length <= 0) return;
             if (!pegs || pegs.length <= 0) return;
             const node = SpreadJsObj.getSelectObject(billsSheet);
             const node = SpreadJsObj.getSelectObject(billsSheet);
             if (!node) return;
             if (!node) return;
@@ -3524,9 +3544,11 @@ $(document).ready(() => {
     };
     };
     posSpread.bind(spreadNS.Events.SelectionChanged, posSpreadObj.selectionChanged);
     posSpread.bind(spreadNS.Events.SelectionChanged, posSpreadObj.selectionChanged);
     if (!readOnly) {
     if (!readOnly) {
-        $('a[name="pos-opr"]').click(function () {
-            posSpreadObj.baseOpr(posSheet, this.getAttribute('type'));
-        });
+        if (!ledgering) {
+            $('a[name="pos-opr"]').click(function () {
+                posSpreadObj.baseOpr(posSheet, this.getAttribute('type'));
+            });
+        }
         $('#pos-expr').bind('change onblur', function () {
         $('#pos-expr').bind('change onblur', function () {
             if (this.readOnly) return;
             if (this.readOnly) return;
 
 
@@ -3688,39 +3710,41 @@ $(document).ready(() => {
         posSpread.bind(spreadNS.Events.ClipboardPasted, posSpreadObj.clipboardPasted);
         posSpread.bind(spreadNS.Events.ClipboardPasted, posSpreadObj.clipboardPasted);
         SpreadJsObj.addDeleteBind(posSpread, posSpreadObj.deletePress);
         SpreadJsObj.addDeleteBind(posSpread, posSpreadObj.deletePress);
 
 
-        $.contextMenu({
-            selector: '#pos-spread',
-            build: function ($trigger, e) {
-                const target = SpreadJsObj.safeRightClickSelection($trigger, e, posSpread);
-                return target.hitTestType === spreadNS.SheetArea.viewport || target.hitTestType === spreadNS.SheetArea.rowHeader;
-            },
-            items: {
-                'delete': {
-                    name: '删除',
-                    icon: 'fa-remove',
-                    disabled: function (key, opt) {
-                        if (posSheet.zh_data) {
-                            const selection = posSheet.getSelections();
-                            const sel = selection ? selection[0] : sheet.getSelections()[0];
-                            const row = sel ? sel.row : -1;
-                            const rowCount = sel.rowCount;
-                            let settleFinish = false;
-                            for (let i = row; i < row + rowCount; i++) {
-                                if (!posSheet.zh_data[i]) continue;
-                                settleFinish = settleFinish || posSheet.zh_data[i].settle_status === settleStatus.finish;
+        if (!ledgering) {
+            $.contextMenu({
+                selector: '#pos-spread',
+                build: function ($trigger, e) {
+                    const target = SpreadJsObj.safeRightClickSelection($trigger, e, posSpread);
+                    return target.hitTestType === spreadNS.SheetArea.viewport || target.hitTestType === spreadNS.SheetArea.rowHeader;
+                },
+                items: {
+                    'delete': {
+                        name: '删除',
+                        icon: 'fa-remove',
+                        disabled: function (key, opt) {
+                            if (posSheet.zh_data) {
+                                const selection = posSheet.getSelections();
+                                const sel = selection ? selection[0] : sheet.getSelections()[0];
+                                const row = sel ? sel.row : -1;
+                                const rowCount = sel.rowCount;
+                                let settleFinish = false;
+                                for (let i = row; i < row + rowCount; i++) {
+                                    if (!posSheet.zh_data[i]) continue;
+                                    settleFinish = settleFinish || posSheet.zh_data[i].settle_status === settleStatus.finish;
+                                }
+                                return (posSheet.zh_data.length < selection[0].row + selection[0].rowCount) || (posSheet.zh_data[selection[0].row] && !posSheet.zh_data[selection[0].row].formc) || settleFinish;
+                            } else {
+                                return true;
                             }
                             }
-                            return (posSheet.zh_data.length < selection[0].row + selection[0].rowCount) || (posSheet.zh_data[selection[0].row] && !posSheet.zh_data[selection[0].row].formc) || settleFinish;
-                        } else {
-                            return true;
+                        },
+                        callback: function (key, opt) {
+                            posSpreadObj.deletePos(posSheet);
                         }
                         }
                     },
                     },
-                    callback: function (key, opt) {
-                        posSpreadObj.deletePos(posSheet);
-                    }
-                },
-            }
+                }
 
 
-        });
+            });
+        }
     }
     }
 
 
     // 加载清单&计量单元数据
     // 加载清单&计量单元数据
@@ -3805,7 +3829,7 @@ $(document).ready(() => {
             this.spreadSetting = spreadSetting;
             this.spreadSetting = spreadSetting;
             this.spread = SpreadJsObj.createNewSpread(this.obj);
             this.spread = SpreadJsObj.createNewSpread(this.obj);
             SpreadJsObj.initSheet(this.spread.getActiveSheet(), this.spreadSetting);
             SpreadJsObj.initSheet(this.spread.getActiveSheet(), this.spreadSetting);
-            if (!readOnly) {
+            if (!readOnly && !ledgering) {
                 this.spread.bind(spreadNS.Events.CellDoubleClick, function (e, info) {
                 this.spread.bind(spreadNS.Events.CellDoubleClick, function (e, info) {
                     const dealSheet = info.sheet;
                     const dealSheet = info.sheet;
                     const mainSheet = billsSheet;
                     const mainSheet = billsSheet;
@@ -4218,7 +4242,7 @@ $(document).ready(() => {
             this.spread = SpreadJsObj.createNewSpread($(`#cb-${spreadSetting.stdType}-spread`)[0]);
             this.spread = SpreadJsObj.createNewSpread($(`#cb-${spreadSetting.stdType}-spread`)[0]);
             const searchSheet = this.spread.getActiveSheet();
             const searchSheet = this.spread.getActiveSheet();
             SpreadJsObj.initSheet(searchSheet, this.spreadSetting);
             SpreadJsObj.initSheet(searchSheet, this.spreadSetting);
-            if (!readOnly) {
+            if (!readOnly && !ledgering) {
                 this.spread.bind(spreadNS.Events.CellDoubleClick, function (e, info) {
                 this.spread.bind(spreadNS.Events.CellDoubleClick, function (e, info) {
                     const dealSheet = info.sheet;
                     const dealSheet = info.sheet;
                     const mainSheet = billsSheet;
                     const mainSheet = billsSheet;
@@ -4443,7 +4467,7 @@ $(document).ready(() => {
                     }, 100);
                     }, 100);
                 });
                 });
             })(`a[name=${relaSelect.showLevel}]`, searchSheet);
             })(`a[name=${relaSelect.showLevel}]`, searchSheet);
-            if (!readOnly) {
+            if (!readOnly && !ledgering) {
                 this.spread.bind(spreadNS.Events.CellDoubleClick, function (e, info) {
                 this.spread.bind(spreadNS.Events.CellDoubleClick, function (e, info) {
                     const dealSheet = info.sheet;
                     const dealSheet = info.sheet;
                     const mainSheet = billsSheet;
                     const mainSheet = billsSheet;
@@ -4781,6 +4805,7 @@ $(document).ready(() => {
     if (posSpread) posSpread.refresh();
     if (posSpread) posSpread.refresh();
 
 
     const stdLibCellDoubleClick = function (updateData, stdNode, stdTree) {
     const stdLibCellDoubleClick = function (updateData, stdNode, stdTree) {
+        if (ledgering) return;
         const mainSheet = billsSheet;
         const mainSheet = billsSheet;
         if (!stdTree || !mainSheet.zh_tree) { return; }
         if (!stdTree || !mainSheet.zh_tree) { return; }
 
 

+ 32 - 23
app/view/change/revise.ejs

@@ -26,17 +26,19 @@
                         </div>
                         </div>
                     </div>
                     </div>
                 </div>
                 </div>
-                <div class="d-inline-block">
-                    <a href="javascript: void(0);" name="base-opr" type="add" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="新增"><i class="fa fa-plus" aria-hidden="true"></i></a>
-                    <a href="javascript: void(0);" name="base-opr" type="delete" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="删除"><i class="fa fa-remove" aria-hidden="true"></i></a>
-                    <a href="javascript: void(0);" name="base-opr" type="up-level" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="升级"><i class="fa fa-arrow-left" aria-hidden="true"></i></a>
-                    <a href="javascript: void(0);" name="base-opr" type="down-level" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="降级"><i class="fa fa-arrow-right" aria-hidden="true"></i></a>
-                    <a href="javascript: void(0);" name="base-opr" type="down-move" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="下移"><i class="fa fa-arrow-down" aria-hidden="true"></i></a>
-                    <a href="javascript: void(0);" name="base-opr" type="up-move" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="上移"><i class="fa fa-arrow-up" aria-hidden="true"></i></a>
-                    <a href="javascript: void(0);" name="cpc" type="copy" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="复制"><i class="fa fa-files-o" aria-hidden="true"></i></a>
-                    <a href="javascript: void(0);" name="cpc" type="cut" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="剪切"><i class="fa fa-scissors" aria-hidden="true"></i></a>
-                    <a href="javascript: void(0);" name="cpc" type="paste" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="粘贴"><i class="fa fa-clipboard" aria-hidden="true"></i></a>
-                </div>
+                <% if (!ledgering) { %>
+                    <div class="d-inline-block">
+                        <a href="javascript: void(0);" name="base-opr" type="add" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="新增"><i class="fa fa-plus" aria-hidden="true"></i></a>
+                        <a href="javascript: void(0);" name="base-opr" type="delete" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="删除"><i class="fa fa-remove" aria-hidden="true"></i></a>
+                        <a href="javascript: void(0);" name="base-opr" type="up-level" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="升级"><i class="fa fa-arrow-left" aria-hidden="true"></i></a>
+                        <a href="javascript: void(0);" name="base-opr" type="down-level" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="降级"><i class="fa fa-arrow-right" aria-hidden="true"></i></a>
+                        <a href="javascript: void(0);" name="base-opr" type="down-move" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="下移"><i class="fa fa-arrow-down" aria-hidden="true"></i></a>
+                        <a href="javascript: void(0);" name="base-opr" type="up-move" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="上移"><i class="fa fa-arrow-up" aria-hidden="true"></i></a>
+                        <a href="javascript: void(0);" name="cpc" type="copy" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="复制"><i class="fa fa-files-o" aria-hidden="true"></i></a>
+                        <a href="javascript: void(0);" name="cpc" type="cut" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="剪切"><i class="fa fa-scissors" aria-hidden="true"></i></a>
+                        <a href="javascript: void(0);" name="cpc" type="paste" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="粘贴"><i class="fa fa-clipboard" aria-hidden="true"></i></a>
+                    </div>
+                <% } %>
                 <div class="d-inline-block">
                 <div class="d-inline-block">
                     <div class="btn-group">
                     <div class="btn-group">
                         <button href="javascript: void(0);" class="btn btn-sm btn-light text-primary" id="pos-show"><i class="fa fa-eye-slash"></i> 隐藏计量单元</button>
                         <button href="javascript: void(0);" class="btn btn-sm btn-light text-primary" id="pos-show"><i class="fa fa-eye-slash"></i> 隐藏计量单元</button>
@@ -74,10 +76,12 @@
                                 <a class="nav-link active" href="javascript:void(0)">计量单元</a>
                                 <a class="nav-link active" href="javascript:void(0)">计量单元</a>
                             </li>
                             </li>
                             <li class="ml-2 nav-item">
                             <li class="ml-2 nav-item">
+                                <% if (!ledgering) { %>
                                 <div class="d-inline-flex">
                                 <div class="d-inline-flex">
                                     <a href="javascript: void(0);" name="pos-opr" type="down-move" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="下移"><i class="fa fa-arrow-down" aria-hidden="true"></i></a>
                                     <a href="javascript: void(0);" name="pos-opr" type="down-move" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="下移"><i class="fa fa-arrow-down" aria-hidden="true"></i></a>
                                     <a href="javascript: void(0);" name="pos-opr" type="up-move" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="上移"><i class="fa fa-arrow-up" aria-hidden="true"></i></a>
                                     <a href="javascript: void(0);" name="pos-opr" type="up-move" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="上移"><i class="fa fa-arrow-up" aria-hidden="true"></i></a>
                                 </div>
                                 </div>
+                                <% } %>
                             </li>
                             </li>
                             <li class="nav-item" id="pos-search">
                             <li class="nav-item" id="pos-search">
                             </li>
                             </li>
@@ -156,24 +160,28 @@
                 <li class="nav-item">
                 <li class="nav-item">
                     <a class="nav-link" content="#search" href="javascript: void(0);">查找定位</a>
                     <a class="nav-link" content="#search" href="javascript: void(0);">查找定位</a>
                 </li>
                 </li>
-                <li class="nav-item">
-                    <a class="nav-link" content="#std-xmj" href="javascript: void(0);">项目节</a>
-                </li>
-                <li class="nav-item">
-                    <a class="nav-link" content="#std-gcl" href="javascript: void(0);">标准清单</a>
-                </li>
-                <li class="nav-item">
-                    <a class="nav-link" content="#deal-bills" href="javascript: void(0);">签约清单</a>
-                </li>
+                <% if (!ledgering) { %>
+                    <li class="nav-item">
+                        <a class="nav-link" content="#std-xmj" href="javascript: void(0);">项目节</a>
+                    </li>
+                    <li class="nav-item">
+                        <a class="nav-link" content="#std-gcl" href="javascript: void(0);">标准清单</a>
+                    </li>
+                    <li class="nav-item">
+                        <a class="nav-link" content="#deal-bills" href="javascript: void(0);">签约清单</a>
+                    </li>
+                <% } %>
                 <li class="nav-item">
                 <li class="nav-item">
                     <a class="nav-link" content="#error-list" id="error-list-tab" href="javascript: void(0);" style="display: none;">错误列表</a>
                     <a class="nav-link" content="#error-list" id="error-list-tab" href="javascript: void(0);" style="display: none;">错误列表</a>
                 </li>
                 </li>
                 <li class="nav-item">
                 <li class="nav-item">
                     <a class="nav-link" content="#check-list" id="check-list-tab" href="javascript: void(0);" style="display: none;">数据检查</a>
                     <a class="nav-link" content="#check-list" id="check-list-tab" href="javascript: void(0);" style="display: none;">数据检查</a>
                 </li>
                 </li>
-                <li class="nav-item">
-                    <a class="nav-link" content="#dsk-list" href="javascript: void(0);">新增清单</a>
-                </li>
+                <% if (!ledgering) { %>
+                    <li class="nav-item">
+                        <a class="nav-link" content="#dsk-list" href="javascript: void(0);">新增清单</a>
+                    </li>
+                <% } %>
             </ul>
             </ul>
         </div>
         </div>
     </div>
     </div>
@@ -183,6 +191,7 @@
     const stdChapters = JSON.parse(unescape('<%- escape(JSON.stringify(stdChapters)) %>'));
     const stdChapters = JSON.parse(unescape('<%- escape(JSON.stringify(stdChapters)) %>'));
     const stdBills = JSON.parse(unescape('<%- escape(JSON.stringify(stdBills)) %>'));
     const stdBills = JSON.parse(unescape('<%- escape(JSON.stringify(stdBills)) %>'));
     const readOnly = <%- readOnly %>;
     const readOnly = <%- readOnly %>;
+    const ledgering = <%- ledgering %>;
     const isYb = <%- isYb %>;
     const isYb = <%- isYb %>;
     const isTz = <%- ctx.tender.data.measure_type === measureType.tz.value %>;
     const isTz = <%- ctx.tender.data.measure_type === measureType.tz.value %>;
     const billsSpreadSetting = JSON.parse('<%- JSON.stringify(ledgerSpread) %>');
     const billsSpreadSetting = JSON.parse('<%- JSON.stringify(ledgerSpread) %>');

+ 18 - 0
app/view/change/revise_modal.ejs

@@ -17,6 +17,24 @@
     </div>
     </div>
     <script type="text/javascript">$('#unedit2').modal('show');</script>
     <script type="text/javascript">$('#unedit2').modal('show');</script>
 <% } %>
 <% } %>
+<% if (ledgering) { %>
+    <div class="modal fade" id="unedit3" data-backdrop="static">
+        <div class="modal-dialog " role="document" >
+            <div class="modal-content">
+                <div class="modal-header">
+                    <h5 class="modal-title">提示</h5>
+                </div>
+                <div class="modal-body">
+                    <h5>台账分解未审批通过,无法操作新增部位数据,只能勾选变更清单及填写申请变更数量。</h5>
+                </div>
+                <div class="modal-footer">
+                    <button type="button" class="btn btn-sm btn-primary" data-dismiss="modal">好的</button>
+                </div>
+            </div>
+        </div>
+    </div>
+    <script type="text/javascript">$('#unedit3').modal('show');</script>
+<% } %>
 <!--批量添加清单部位-->
 <!--批量添加清单部位-->
 <div class="modal fade" id="batch" data-backdrop="static">
 <div class="modal fade" id="batch" data-backdrop="static">
     <div class="modal-dialog modal-xl" role="document">
     <div class="modal-dialog modal-xl" role="document">