Bladeren bron

Merge branch 'master' of http://192.168.1.41:3000/maixinrong/Calculation

MaiXinRong 5 jaren geleden
bovenliggende
commit
7421149027

+ 2 - 2
app/controller/report_controller.js

@@ -419,7 +419,7 @@ async function getAllPagesCommon(ctx, rptTpl, params, option, outputType, baseDi
     // console.log(rawDataObj);
     try {
         // console.log('before assemble');
-        const tplData = rptDataUtil.assembleData(rawDataObj, baseDir);
+        const tplData = rptDataUtil.assembleData(ctx, rawDataObj, baseDir);
         // console.log(tplData);
         const printCom = JpcEx.createNew();
         if (params.pageSize) rptTpl[JV.NODE_MAIN_INFO][JV.NODE_PAGE_INFO][JV.PROP_PAGE_SIZE] = params.pageSize;
@@ -517,7 +517,7 @@ async function getMultiRptsCommon(ctx, params, outputType, baseDir) {
         for (let tplIdx = 0; tplIdx < rptTpls.length; tplIdx++) {
             const rptTpl = (rptTpls[tplIdx]._doc) ? rptTpls[tplIdx]._doc : rptTpls[tplIdx];
             rptDataUtil.initialize(rptTpl);
-            const tplData = rptDataUtil.assembleData(rawDataObj, baseDir);
+            const tplData = rptDataUtil.assembleData(ctx, rawDataObj, baseDir);
             const printCom = JpcEx.createNew();
             rptTpl[JV.NODE_MAIN_INFO][JV.NODE_PAGE_INFO][JV.PROP_PAGE_SIZE] = params.pageSize;
 

+ 6 - 6
app/extend/helper.js

@@ -144,25 +144,25 @@ module.exports = {
             } else {
                 let num = val.toString();
                 if (num.lastIndexOf('.') === -1) {
-                    num += '.';
-                    num += this.makezero(decimals);
+                    // num += '.';
+                    // num += this.makezero(decimals);
                     val = num;
                 } else {
                     const valdecimals = num.split('.')[1].length;
                     if (parseInt(valdecimals) < parseInt(decimals)) {
-                        num += this.makezero(parseInt(decimals) - parseInt(valdecimals));
+                        // num += this.makezero(parseInt(decimals) - parseInt(valdecimals));
                         val = num;
                     } else if (parseInt(valdecimals) > parseInt(decimals)) {
                         val = parseFloat(val) !== 0 ? Math.round(this.accMul(val, this.makemultiple(decimals))) / this.makemultiple(decimals) : this.makedecimalzero(decimals);
                         let num = val.toString();
                         if (num.lastIndexOf('.') === -1) {
-                            num += '.';
-                            num += this.makezero(decimals);
+                            // num += '.';
+                            // num += this.makezero(decimals);
                             val = num;
                         } else {
                             const valdecimals = num.split('.')[1].length;
                             if (parseInt(valdecimals) < parseInt(decimals)) {
-                                num += this.makezero(parseInt(decimals) - parseInt(valdecimals));
+                                // num += this.makezero(parseInt(decimals) - parseInt(valdecimals));
                                 val = num;
                             }
                         }

+ 3 - 0
app/public/js/change_calculation.js

@@ -120,6 +120,9 @@ Number.prototype.sub = function (arg){
 
 //四舍五入
 function roundnum(val,decimals){
+    if (val === '' || val === null) {
+        return '';
+    }
     if(val !== ''){
         val = parseFloat(val);
         let _sign = (val < 0) ? -1 : 1;

+ 34 - 0
app/public/js/change_set.js

@@ -213,6 +213,10 @@ $(document).ready(() => {
             if ( result.err === 0) {
                 $('.reduction-code').attr('data-code', $('input[name="code"]').val());
                 toastr.success(result.msg);
+                $('#show-save-btn').hide();
+                $('.title-main').removeClass('bg-warning');
+                $('#back-change-list').val($('#change-list').val());
+                $('#back-change-whitelist').val($('#change-whitelist').val());
             } else {
                 toastr.error(result.msg);
             }
@@ -220,6 +224,18 @@ $(document).ready(() => {
         return false;
     });
 
+    $('#cancel_change').on('click', function () {
+        $('#show-save-btn').hide();
+        $('.title-main').removeClass('bg-warning');
+        $('#change-list').val($('#back-change-list').val());
+        $('#change-whitelist').val($('#back-change-whitelist').val());
+        tableDataRemake(changeListData);
+        // 重新绘制table
+        maketablelist();
+
+        toastr.success('已还原到上次保存状态');
+    });
+
     // 审批人分组选择
     $('#account_group').change(function () {
         let account_html = '<option value="0">选择审批人</option>';
@@ -754,6 +770,7 @@ function totalamount(decimal){
     });
     $('.ctatalamount').eq(1).text(ctotalnum != 0 ? roundnum(ctotalnum,decimal) : zero);
     $('.otatalamount').eq(1).text(ototalnum != 0 ? roundnum(ototalnum,decimal) : zero);
+    judgeChange();
 }
 
 // 找出单位对应的小数位数值
@@ -768,3 +785,20 @@ function findDecimal(unit) {
     }
     return value;
 }
+// 判断是否有更改过
+function judgeChange() {
+    let change = false;
+    if ($('#change-list').val() !== $('#back-change-list').val()) {
+        change = true;
+    }
+    if ($('#change-whitelist').val() !== $('#back-change-whitelist').val()) {
+        change = true;
+    }
+    if (change) {
+        $('#show-save-btn').show();
+        $('.title-main').addClass('bg-warning');
+    } else {
+        $('#show-save-btn').hide();
+        $('.title-main').removeClass('bg-warning');
+    }
+}

+ 2 - 0
app/reports/rpt_component/jpc_value_define.js

@@ -64,6 +64,8 @@ module.exports = {
     PROP_FILTER_COMPARE_OBJ_KEY: 'compareObjIdKey',
     PROP_FILTER_COMPARE_VAL: 'compareValue',
     PROP_FILTER_CONDITION: '判断条件',
+    PROP_HANDLE_TYPE_PRE_DEFINED: '指定方式',
+    PROP_HANDLE_TYPE_PRE_DEFINED_KEY: '方式Key',
     PROP_HANDLE_TYPE_FILTER: '过滤',
     PROP_HANDLE_TYPE_SUM: '合计',
     PROP_HANDLE_TYPE_SORT: '排序',

+ 24 - 5
app/reports/util/rpt_calculation_data_util.js

@@ -11,6 +11,7 @@ const fs = require('fs');
 const fsUtil = require('../../public/js/fsUtil');
 const stringUtil = require('../../public/js/stringUtil');
 const scMathUtil = require('../../public/js/scMathUtil');
+const data_analyze_util = require('../../lib/rpt_data_analysis');
 const _ = require('lodash');
 
 const treeUtil = require('../public/treeUtil');
@@ -189,7 +190,7 @@ class Rpt_Data_Extractor {
     }
 
     // 装配数据(把收集到的数据,依据报表模板的指示,预处理(如:排序、过滤、合计)及装配到相关指标)
-    assembleData(rawDataObj, baseDir) {
+    assembleData(ctx, rawDataObj, baseDir) {
         const $PROJECT = { REPORT: {} };
         const tpl = this.rptTpl;
         this.COMMON.initialize(tpl, rawDataObj);
@@ -203,13 +204,13 @@ class Rpt_Data_Extractor {
                 const srcData = getModuleDataByKey(rawDataObj.prjData, preHandle[JV.PROP_DATA_KEY]);
                 switch (preHandle[JV.PROP_HANDLE_TYPE]) {
                     case JV.PROP_HANDLE_TYPE_SORT:
-                        sortData(srcData, preHandle, rawDataObj.prjData);
+                        // sortData(srcData, preHandle, rawDataObj.prjData);
                         break;
                     case JV.PROP_HANDLE_TYPE_FILTER:
-                        filterData(srcData, preHandle, rawDataObj.prjData);
+                        // filterData(srcData, preHandle, rawDataObj.prjData);
                         break;
-                    case JV.PROP_HANDLE_TYPE_ADJUST:
-                        adjustData(srcData, preHandle);
+                    case JV.PROP_HANDLE_TYPE_PRE_DEFINED:
+                        preDefineProcess(ctx, preHandle, rawDataObj);
                         break;
                     default:
                         break;
@@ -483,6 +484,24 @@ function filterData(sourceData, handleCfg, prjData) {
     // fsUtil.writeObjToFile(sourceData.data, 'D:/GitHome/ConstructionCost/tmp/filteredRst.jsp');
 }
 
+function preDefineProcess(ctx, preDefineCfg, rawDataObj) {
+    switch (preDefineCfg[JV.PROP_HANDLE_TYPE_PRE_DEFINED_KEY]) {
+        case 'changeSort' :
+            // [{field: 'b_code', table: 'mem_stage_bills'}, {field: 'id', table: 'mem_stage_bills'}]
+            try {
+                // 在预定义方式中,小麦处理原始数据,不需要
+                data_analyze_util.changeSort.fun(ctx, rawDataObj);
+            } catch (ex) {
+                //
+            }
+            break;
+        case '' :
+            break;
+        default:
+            break;
+    }
+}
+
 function adjustData(sourceData, adjustCfg) {
     const rstArr = [];
     for (const item of getActDataArr(sourceData)) {

+ 16 - 8
app/view/change/info.ejs

@@ -119,16 +119,16 @@
     </div>
 </div>
 <div class="panel-content">
-    <div class="panel-title">
+    <div class="panel-title pr-0">
         <div class="title-main d-flex justify-content-between">
             <h2 id="info_title" class="show_title">变更信息</h2>
-            <div id="bills_title" class="show_title" style="display: none">
+            <div id="bills_title" class="show_title" style="line-height:34px;display: none">
                 <div>
                     <% if (auditStatus === 1 || auditStatus === 2) { %>
                     <div class="d-inline-block">
                         <a href="#addlist" data-toggle="modal" class="btn btn-sm btn-light text-primary" id="open-list-modal" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="添加清单"><i class="fa fa-plus" aria-hidden="true"></i> 添加台帐清单</a>
                     </div>
-                    <div class="d-inline-block">
+                    <div class="d-inline-block mr-3">
                         <a href="javascript:void(0);" class="btn btn-sm btn-light text-primary" id="add-white-btn" data-original-title="添加清单"><i class="fa fa-plus" aria-hidden="true"></i> 添加空白清单</a>
                     </div>
                     <% } %>
@@ -148,7 +148,7 @@
                     <% } %>
                 </div>
             </div>
-            <div id="files_title" class="show_title" style="display: none">
+            <div id="files_title" class="show_title" style="line-height:34px;display: none">
                 <% if (auditStatus === 1 || auditStatus === 2 || auditStatus === 6) { %>
                 <a href="#addfujian" data-toggle="modal" class="btn btn-sm" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="添加清单">
                     <i class="fa fa-cloud-upload" aria-hidden="true"></i> 上传附件
@@ -161,9 +161,11 @@
             <input id="changeId" value="<%= change.cid %>" type="hidden">
             <!--info状态区分-->
             <% if (auditStatus === 1 || auditStatus === 2) { %>
-            <div>
-                <button class="btn btn-sm btn-success pull-right" id="save_change"><i class="fa fa-save"></i> 保存修改</button>
-            </div>
+                <div class="ml-auto px-4" id="show-save-btn" style="display: none">
+                    <span>您修改了变更内容,记得保存修改。</span>
+                    <button class="btn btn-sm btn-primary" id="save_change"><i class="fa fa-save"></i> 保存修改</button>
+                    <button class="btn btn-sm btn-light" id="cancel_change">取消</button>
+                </div>
             <% } %>
         </div>
     </div>
@@ -279,6 +281,12 @@
                 <input type="hidden" name="changeaudit" id="changeaudit" value="">
                 <input type="hidden" name="changestatus" id="changeStatus">
                 <input type="hidden" name="cid" value="<%= change.cid %>">
+
+                <!--保留旧数据回溯-->
+                <input type="hidden" id="back-change-list" value="<%= changeListData %>">
+                <input type="hidden" id="back-change-whitelist" value="<%= changeWhiteListData %>">
+                <!--<input type="hidden" id="change-info" value="">-->
+                <input type="hidden" id="back-change-info" value="<%= JSON.stringify(change) %>">
             </form>
             <% } else { %>
             <div class="row">
@@ -408,7 +416,7 @@
             <div class="sjs-height-0">
             <!--变更清单-->
             <% if (auditStatus === 1 || auditStatus === 2) { %>
-            <table class="table table-striped table-bordered nowrap qd-table table-list" id="tablelist" cellspacing="0" style="width:100%">
+            <table class="table table-striped table-bordered nowrap qd-table table-list" id="tablelist" cellspacing="0" style="margin-top:0 !important;width:100%">
                 <thead>
                 <tr>
                     <th rowspan="2" class="text-center">清单编号</th>