浏览代码

1. 切换清单,部位明细应定位至第一条
2. 计量期终审,兼容无任何计量的情况
3. 计量期,终审时只读状态问题

MaiXinRong 5 年之前
父节点
当前提交
2ee28b29a5

+ 1 - 1
app/middleware/stage_check.js

@@ -65,7 +65,7 @@ module.exports = options => {
                 if (stage.status === status.uncheck) {
                     throw '您无权查看该数据';
                 }
-                stage.readOnly = (stage.status === status.checking || stage.status === status.checkNoPre) && accountId !== stage.curAuditor.aid;
+                stage.readOnly = (stage.status !== status.checking && stage.status !== status.checkNoPre) || accountId !== stage.curAuditor.aid;
                 stage.curTimes = stage.status === status.checkNo ? stage.times - 1 : stage.times;
                 if (stage.status === status.checked) {
                     stage.curOrder = _.max(_.map(stage.auditors, 'order'));

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

@@ -772,6 +772,7 @@ $(document).ready(function() {
             } else {
                 SpreadJsObj.loadSheetData(posSpread.getActiveSheet(), 'data', []);
             }
+            SpreadJsObj.resetTopAndSelect(posSpread.getActiveSheet());
         },
         /**
          * 编辑单元格响应事件

+ 1 - 0
app/public/js/ledger_audit.js

@@ -48,6 +48,7 @@ $(document).ready(() => {
         } else {
             SpreadJsObj.loadSheetData(posSpread.getActiveSheet(), 'data', []);
         }
+        SpreadJsObj.resetTopAndSelect(posSpread.getActiveSheet());
     };
     // 台账模式加载部位明细数据
     if (checkTzMeasureType()) {

+ 3 - 2
app/public/js/revise.js

@@ -274,10 +274,11 @@ $(document).ready(() => {
             const node = SpreadJsObj.getSelectObject(billsSheet);
             if (node) {
                 const posData = pos.getLedgerPos(node.id) || [];
-                SpreadJsObj.loadSheetData(posSpread.getActiveSheet(), 'data', posData);
+                SpreadJsObj.loadSheetData(posSheet, 'data', posData);
             } else {
-                SpreadJsObj.loadSheetData(posSpread.getActiveSheet(), 'data', []);
+                SpreadJsObj.loadSheetData(posSheet, 'data', []);
             }
+            SpreadJsObj.resetFieldReadOnly(posSheet);
         },
         editStarting: function (e, info) {
             posSpreadObj.ledgerTreeNode = SpreadJsObj.getSelectObject(billsSheet);

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

@@ -608,6 +608,10 @@ const SpreadJsObj = {
             }
         }
     },
+    resetTopAndSelect: function (sheet) {
+        sheet.setSelection(0, 0, 1, 1);
+        sheet.showRow(0, spreadNS.VerticalPosition.top);
+    },
     /**
      * 获取当前选行的数据对象
      * @param {GC.Spread.Sheets.Worksheet} sheet

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

@@ -813,6 +813,7 @@ $(document).ready(() => {
             } else {
                 SpreadJsObj.loadSheetData(spSpread.getActiveSheet(), 'data', []);
             }
+            SpreadJsObj.resetTopAndSelect(spSpread.getActiveSheet());
         },
         editEnded: function (e, info) {
             if (info.sheet.zh_setting) {

+ 1 - 0
app/public/js/stage_compare.js

@@ -101,6 +101,7 @@ $(document).ready(function () {
         } else {
             SpreadJsObj.loadSheetData(posSpread.getActiveSheet(), SpreadJsObj.DataType.Data, []);
         }
+        SpreadJsObj.resetTopAndSelect(posSpread.getActiveSheet());
     }
     loadPosData(0);
     // 切换清单行,读取所属项目节数据

+ 15 - 5
app/public/js/stage_pay.js

@@ -103,6 +103,12 @@ $(document).ready(() => {
             },
         },
         readOnly: {
+            isNonZero: function (num) {
+                return !(!num || num === 0)
+            },
+            isYF: function (data) {
+                return data.ptype === 2;
+            },
             isSpecial: function (data) {
                 return data.ptype !== 1;
             },
@@ -114,13 +120,13 @@ $(document).ready(() => {
                 }
             },
             isYB: function (data) {
-                return (stage.curOrder > 0);
+                return (stage.status === 1 || stage.status === 4);
             },
             isStarted: function (data) {
-                return (data.tp === data.end_tp) && (!data.pre_tp || data.pre_tp === 0);
+                return ((payCol.readOnly.isNonZero(data.end_tp) || payCol.readOnly.isNonZero(data.tp)) && data.tp !== data.end_tp) || payCol.readOnly.isNonZero(data.pre_tp);
             },
             name: function (data) {
-                return payCol.readOnly.isSpecial(data); // 所有人,轮到自己时,均可修改
+                return payCol.readOnly.isSpecial(data); //所有人,轮到自己时,均可修改
             },
             minus: function (data) {
                 if (payCol.readOnly.isOld(data)) { // 上报或审批后,仅原报,在未开始计量前,可修改
@@ -133,10 +139,14 @@ $(document).ready(() => {
                 return data.ptype === 2 || data.ptype === 4; // 仅本期完成计量、本期应付,不可修改
             },
             sprice: function (data) {
-                return payCol.readOnly.minus(data); // 同扣款项
+                if (payCol.readOnly.isOld(data)) { // 上报或审批后,仅原报,在未开始计量前,可修改
+                    return payCol.readOnly.isYF(data) || payCol.readOnly.isStarted(data) || !payCol.readOnly.isYB(data);
+                } else { // 新增时,新增人可修改
+                    return payCol.readOnly.isSpecial(data);
+                }
             },
             rprice: function (data) {
-                return payCol.readOnly.minus(data); // 同扣款项
+                return payCol.readOnly.sprice(data); // 同起扣金额
             },
         }
     };

+ 1 - 0
app/service/stage_bills_final.js

@@ -55,6 +55,7 @@ module.exports = app => {
             }
             if (stage.order > 1) {
                 const cur = await this.ctx.service.stageBills.getLastestStageData(tender.id, stage.id);
+                if (!cur || cur.length === 0) return;
                 const pre = await this.getFinalData(tender, stage);
                 for (const c of cur) {
                     delete c.id;

+ 1 - 0
app/service/stage_pos_final.js

@@ -56,6 +56,7 @@ module.exports = app => {
             }
             if (stage.order > 1) {
                 const cur = await this.ctx.service.stagePos.getLastestStageData(tender.id, stage.id);
+                if (!cur || cur.length === 0) return;
                 const pre = await this.getFinalData(tender, stage);
                 for (const c of cur) {
                     delete c.id;