Pārlūkot izejas kodu

1. 期计量,审核比较,增加颜色标记
2. 期计量,中间计量,生成规则,勾选情况初始化异常
3. 台账分解,设置了节点类别的节点,不可删除

MaiXinRong 5 gadi atpakaļ
vecāks
revīzija
30d5fd05b1

+ 3 - 0
app/base/base_bills_service.js

@@ -13,6 +13,9 @@ const TreeService = require('./base_tree_service');
 const rootId = -1;
 const calcFields = ['unit_price', 'sgfh_qty', 'sgfh_tp', 'sjcl_qty', 'sjcl_tp', 'qtcl_qty', 'qtcl_tp', 'deal_qty', 'deal_tp', 'dgn_qty1', 'dgn_qty2'];
 const readOnlyFields = ['id', 'tender_id', 'ledger_id', 'ledger_pid', 'order', 'level', 'full_path', 'is_leaf'];
+const upFields = ['unit_price'];
+const qtyFields = ['sgfh_qty', 'sjcl_qty', 'qtcl_qty', 'quantity', 'deal_qty', 'dgn_qty1', 'dgn_qty2'];
+const tpFields = ['sgfh_tp', 'sjcl_tp', 'qtcl_tp', 'total_price', 'deal_tp'];
 
 class BaseBillsSerivce extends TreeService {
 

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

@@ -136,7 +136,7 @@ $(document).ready(function() {
             const valid = !sheet.zh_setting.readOnly;
 
             setObjEnable($('#insert'), valid && first && first.level > 1);
-            setObjEnable($('#delete'), valid && first && sameParent && first.level > 1);
+            setObjEnable($('#delete'), valid && first && sameParent && first.level > 1 && !first.node_type);
             setObjEnable($('#up-move'), valid && first && sameParent && first.level > 1 && preNode);
             setObjEnable($('#down-move'), valid && first && sameParent && first.level > 1 && !tree.isLastSibling(last));
             if (checkTzMeasureType()) {

+ 1 - 1
app/public/js/path_tree.js

@@ -1264,7 +1264,7 @@ const createNewPathTree = function (type, setting) {
         return new StageTree(setting);
     } else if (type === 'ledger') {
         return new LedgerTree(setting);
-    } else if (type = 'revise') {
+    } else if (type === 'revise') {
         return new ReviseTree(setting);
     } else if (type === 'measure') {
         return new MeasureTree(setting);

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

@@ -357,7 +357,7 @@ const SpreadJsObj = {
                 cell.formatter('0.######');
             }
             if (sheet.zh_setting.getColor && Object.prototype.toString.apply(sheet.zh_setting.getColor) === "[object Function]") {
-                cell.backColor(sheet.zh_setting.getColor(data, col, sheet.getDefaultStyle().backColor));
+                cell.backColor(sheet.zh_setting.getColor(sheet, data, col, sheet.getDefaultStyle().backColor));
             }
         });
 
@@ -476,6 +476,7 @@ const SpreadJsObj = {
         this.beginMassOperation(sheet);
         try {
             sheet.clear(0, 0, sheet.getRowCount(), sheet.getColumnCount(), spreadNS.SheetArea.viewport, spreadNS.StorageType.data);
+            sheet.getRange(0, 0, sheet.getRowCount(), sheet.getColumnCount()).backColor(sheet.getDefaultStyle().backColor);
             // 设置总行数
             const totalRow = sortData.length + sheet.zh_setting.emptyRows;
             sheet.setRowCount(totalRow, spreadNS.SheetArea.viewport);
@@ -513,6 +514,7 @@ const SpreadJsObj = {
         try {
             // 清空原单元格数据
             sheet.clear(row, -1, count, -1, spreadNS.SheetArea.viewport, spreadNS.StorageType.data);
+            sheet.getRange(row, -1, count, -1).backColor(sheet.getDefaultStyle().backColor);
             // 单元格重新写入数据
             for (let i = row; i < row + count; i++) {
                 const data = sortData[i];
@@ -540,6 +542,7 @@ const SpreadJsObj = {
                 if (row < 0) { continue; }
                 // 清空原单元格数据
                 sheet.clear(row, -1, 1, -1, spreadNS.SheetArea.viewport, spreadNS.StorageType.data);
+                sheet.getRange(row, -1, 1, -1).backColor(sheet.getDefaultStyle().backColor);
                 const data = sortData[row];
                 // 单元格重新写入数据
                 this._loadRowData(sheet, data, row);

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

@@ -209,7 +209,7 @@ $(document).ready(() => {
                 emptyRows: 0,
                 headRows: 1,
                 headRowHeight: [40],
-                getColor: function (data, col, defaultColor) {
+                getColor: function (sheet, data, col, defaultColor) {
                     if (col.field === 'uamount') {
                         if (!data.vamount) {
                             return (data.uamount && data.uamount > 0) ? '#ff6f5c' : defaultColor;

+ 27 - 2
app/public/js/stage_compare.js

@@ -36,6 +36,8 @@ function initSpreadSettingWithRoles(compareRoles) {
             }
         }
     }
+    ledgerSpreadSetting.fieldSufs = fieldSufs;
+    posSpreadSetting.fieldSufs = fieldSufs;
     setSpreadSettingCols(ledgerSpreadSetting, fieldSufs, roles);
     setSpreadSettingCols(posSpreadSetting, fieldSufs, roles);
 }
@@ -54,6 +56,29 @@ function calculateStagePosData(datas) {
 $(document).ready(function () {
     autoFlashHeight();
     // 根据设置整理Spread设置
+    ledgerSpreadSetting.getColor = function (sheet, data, col, defaultColor) {
+        function checkDiffer(data) {
+            const fieldSufs = sheet.zh_setting.fieldSufs;
+            if (fieldSufs.length <= 1) return false;
+            const field = data.quantity ? 'gather_qty' : 'gather_tp';
+            const base = data[field + fieldSufs[0]];
+            for (let i = 1; i< scRoles.length; i++) {
+                if (data[field + fieldSufs[i]] !== base) return true;
+            }
+        }
+        return data.children.length === 0 && checkDiffer(data) ? '#F2DEDE' : defaultColor;
+    };
+    posSpreadSetting.getColor = function (sheet, data, col, defaultColor) {
+        function checkDiffer(data) {
+            const fieldSufs = sheet.zh_setting.fieldSufs;
+            if (fieldSufs.length <= 1) return false;
+            const base = data['gather_qty' + fieldSufs[0]];
+            for (let i = 1; i< scRoles.length; i++) {
+                if (data['gather_qty' + fieldSufs[i]] !== base) return true;
+            }
+        }
+        return checkDiffer(data) ? '#F2DEDE' : defaultColor;
+    };
     initSpreadSettingWithRoles(scRoles);
     // 初始化台账
     const ledgerSpread = SpreadJsObj.createNewSpread($('#ledger-spread')[0]);
@@ -134,7 +159,7 @@ $(document).ready(function () {
     function loadPosData(iRow) {
         const node = ledgerSpread.getActiveSheet().zh_tree.nodes[iRow];
         if (node) {
-            SpreadJsObj.loadSheetData(posSpread.getActiveSheet(), SpreadJsObj.DataType.Data, scPos.getLedgerPos(node.id));
+            SpreadJsObj.loadSheetData(posSpread.getActiveSheet(), SpreadJsObj.DataType.Data, scPos.getLedgerPos(node.id) || []);
         } else {
             SpreadJsObj.loadSheetData(posSpread.getActiveSheet(), SpreadJsObj.DataType.Data, []);
         }
@@ -211,8 +236,8 @@ $(document).ready(function () {
     });
     // 显示层次
     (function (select, sheet) {
-        if (!sheet.zh_tree) return;
         $(select).click(function () {
+            if (!sheet.zh_tree) return;
             const tag = $(this).attr('tag');
             const tree = sheet.zh_tree;
             switch (tag) {

+ 2 - 1
app/public/js/stage_detail.js

@@ -337,6 +337,7 @@ $(document).ready(() => {
         function chooseType(obj) {
             obj.style.cursor = 'default';
             $(obj).children().addClass('text-primary');
+            $('i', obj).remove();
             $('h5', obj).prepend('<i class="fa fa-check pull-right"></i>');
         }
         function validType(obj) {
@@ -347,7 +348,7 @@ $(document).ready(() => {
         $('#im-pre').val(stage.im_pre ? stage.im_pre : '');
         const typeArr = $('div[name="im-type"]');
         for (const t of typeArr) {
-            if ($(t).attr('im-type') === stage.im_type) {
+            if (parseInt($(t).attr('im-type')) === stage.im_type) {
                 chooseType(t);
             } else {
                 validType(t)

+ 1 - 1
app/public/js/stage_pay.js

@@ -91,7 +91,7 @@ $(document).ready(() => {
         makeAttTable(data.id, data.attachment);
         $('#file').modal('show');
     };
-    paySpreadSetting.getColor = function (data, col, defaultColor) {
+    paySpreadSetting.getColor = function (sheet, data, col, defaultColor) {
         if (data) {
             if (data.pause) {
                 return '#f2f2f2';

+ 3 - 3
app/service/revise_audit.js

@@ -180,13 +180,13 @@ module.exports = app => {
          * @private
          */
         async saveReviseHistoryFile(revise) {
-            const timestamp = Date.parse(new Date());
+            const timestamp = (new Date()).getTime();
 
-            const billsHis = 'file/revise/bills' + timestamp + '.json';
+            const billsHis = '/file/revise/bills' + timestamp + '.json';
             const bills = await this.ctx.service.reviseBills.getData(revise.tid);
             await this.ctx.helper.saveBufferFile(JSON.stringify(bills), this.ctx.app.baseDir + billsHis);
 
-            const posHis = 'file/revise/pos' + timestamp + '.json';
+            const posHis = '/file/revise/pos' + timestamp + '.json';
             const pos = await this.ctx.service.revisePos.getData(revise.tid);
             await this.ctx.helper.saveBufferFile(JSON.stringify(pos), this.ctx.app.baseDir + posHis);
 

+ 7 - 7
app/view/stage/detail_modal.ejs

@@ -9,14 +9,14 @@
                 <div class="form-group">
                     <label>中间计量模式 <a href="/public/images/example/jiliangmoshi.png" target="_blank" data-toggle="tooltip" data-placement="bottom" data-original-title="点击查看相关报表"><i class="fa fa-question-circle-o"></i></a></label>
                     <div class="row" id="im-type">
-                        <% for (const iT in imType) { %>
-                        <% const t = imType[iT]; %>
+                        <% for (const i in imType) { %>
+                        <% console.log(ctx.stage.im_type === imType[i].value); %>
                         <div class="col-6">
-                            <div class="card border-primary" name="im-type" im-type="<%- t.value %>" <% if (ctx.stage.im_type !== t.value) { %> style="cursor:pointer;"<% } %>>
-                                <div class="card-body<% if (ctx.stage.im_type === t.value) { %> text-primary<% } %>">
-                                    <h5 class="card-title mb-0" im-type="<%- t.value %>">
-                                        <% if (ctx.stage.im_type === t.value) { %><i class="fa fa-check pull-right"></i><% } %>
-                                        <%- t.name %>
+                            <div class="card border-primary" name="im-type" im-type="<%- imType[i].value %>" <% if (ctx.stage.im_type !== imType[i].value) { %>style="cursor:pointer;"<% } %>>
+                                <div class="card-body<% if (ctx.stage.im_type === imType[i].value) { %> text-primary<% } %>">
+                                    <h5 class="card-title mb-0" im-type="<%- imType[i].value %>">
+                                        <% if (ctx.stage.im_type === imType[i].value) { %><i class="fa fa-check pull-right"></i><% } %>
+                                        <%- imType[i].name %>
                                     </h5>
                                 </div>
                             </div>