Parcourir la source

安全生产给,小数位数计算问题

MaiXinRong il y a 1 an
Parent
commit
b84c84aa5b

+ 31 - 4
app/controller/settle_controller.js

@@ -47,6 +47,7 @@ module.exports = app => {
                     auditConst: auditConst.settle,
                     auditType: auditConst.auditType,
                 };
+                renderData.jsFiles = this.app.jsFiles.common.concat(this.app.jsFiles.settle.list);
                 renderData.settles = await ctx.service.settle.getValidSettles(ctx.tender.id);
                 for (const s of renderData.settles) {
                     if (s.status === auditConst.settle.status.uncheck) {
@@ -63,7 +64,7 @@ module.exports = app => {
                 renderData.checkedStageCount = await ctx.service.stage.count({ tid: ctx.tender.id, status: auditConst.stage.status.checked });
                 await this.layout('settle/list.ejs', renderData, 'settle/list_modal.ejs');
             } catch (err) {
-                this.log(err);
+                ctx.log(err);
                 ctx.redirect(this.menu.menu.dashboard.url);
             }
         }
@@ -82,7 +83,7 @@ module.exports = app => {
                 await ctx.service.settle.loadAuditViewData(settle);
                 ctx.body = { err: 0, msg: '', data: settle };
             } catch (error) {
-                this.log(error);
+                ctx.log(error);
                 ctx.body = { err: 1, msg: error.toString(), data: null };
             }
         }
@@ -150,7 +151,6 @@ module.exports = app => {
         async _getDefaultRenderData(ctx) {
             const data = {
                 tender: ctx.tender.data,
-                tenderMenu: JSON.parse(JSON.stringify(this.menu.settleMenu)),
                 auditConst: auditConst.settle,
                 measureType,
                 preUrl: '/tender/' + ctx.tender.id + '/settle/' + ctx.params.sorder,
@@ -194,6 +194,7 @@ module.exports = app => {
                 renderData.whiteList = this.ctx.app.config.multipart.whitelist;
                 await this.layout('settle/index.ejs', renderData, 'settle/modal.ejs');
             } catch(err) {
+                console.log(err);
                 ctx.log(err);
                 ctx.redirect('/tender/' + ctx.tender.id + '/settle');
             }
@@ -236,10 +237,36 @@ module.exports = app => {
 
                 ctx.body = responseData;
             } catch (err) {
-                this.log(err);
+                ctx.log(err);
                 ctx.body = { err: 1, msg: err.toString(), data: null };
             }
         }
+
+        async loadGatherData(ctx) {
+            try {
+                const settle = await this.ctx.service.settle.getLatestCompleteSettle(ctx.tender.id);
+                const bills = await this.ctx.service.settleBillsFinal.getDataByCondition({ where: { settle_id: settle.id }});
+                const pos = await this.ctx.service.settlePosFinal.getDataByCondition({ where: { settle_id: settle.id }});
+                ctx.body = { err: 0, msg: '', data: { bills, pos } };
+            } catch(err) {
+                ctx.log(err);
+                ctx.ajaxErrorBody(err, '获取结算汇总数据错误');
+            }
+        }
+
+        async gather(ctx) {
+            try {
+                const renderData = {
+                    tender: ctx.tender.data,
+                    preUrl: `/tender/${ctx.tender.id}/measure/stage`,
+                };
+                renderData.jsFiles = this.app.jsFiles.common.concat(this.app.jsFiles.settle.gather);
+                await this.layout('settle/gather.ejs', renderData, 'settle/gather_modal.ejs');
+            } catch (err) {
+                ctx.log(err);
+                ctx.redirect(this.menu.menu.dashboard.url);
+            }
+        }
     }
 
     return SettleController;

+ 1 - 1
app/middleware/settle_check.js

@@ -16,7 +16,7 @@ module.exports = options => {
      * @param {function} next - 中间件继续执行的方法
      * @return {void}
      */
-    return function* stageCheck(next) {
+    return function* settleCheck(next) {
         try {
             // 读取标段数据
             const settleOrder = parseInt(this.params.sorder);

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

@@ -3675,8 +3675,8 @@ $(document).ready(function() {
           toastr.error('附件信息获取失败');
       }
   });
-  // $('body').on('click', '.alllist-table a', handleFileList);
-  $('body').on('click', '#btn-att a', function () {
+    // $('body').on('click', '.alllist-table a', handleFileList);
+    $('body').on('click', '#btn-att a', function () {
       const content = $(this).attr('content');
       const fid = $('#showAttachment').attr('file-id');
       const node = SpreadJsObj.getSelectObject(ledgerSpread.getActiveSheet());
@@ -3869,7 +3869,6 @@ $(document).ready(function() {
           // const url = `/tender/${tender.id}/ledger/compresse/file?fileIds=${JSON.stringify(fileIds)}`;
       }
   });
-
   // 监听附件check是否选中
   $('.list-table').on('click', '.check-file', function() {
       const checkedList = $(this).parents('.list-table').children().find('input:checked');

+ 4 - 0
app/router.js

@@ -429,6 +429,10 @@ module.exports = app => {
     app.post('/tender/:id/settle/delete', sessionAuth, tenderCheck, uncheckTenderCheck, tenderBuildCheck, 'settleController.delete');
     // 结算期
     app.get('/tender/:id/settle/:sorder', sessionAuth, tenderCheck, uncheckTenderCheck, settleCheck, 'settleController.index');
+    app.post('/tender/:id/settle/:sorder/load', sessionAuth, tenderCheck, uncheckTenderCheck, settleCheck, 'settleController.loadSettleData');
+    // 结算汇总
+    app.get('/tender/:id/settle/gather', sessionAuth, tenderCheck, uncheckTenderCheck, 'settleController.gather');
+    app.get('/tender/:id/settle/gather/load', sessionAuth, tenderCheck, uncheckTenderCheck, 'settleController.loadGatherData');
 
     // 报表
     app.get('/tender/:id/report', sessionAuth, tenderCheck, uncheckTenderCheck, 'reportController.index');

+ 2 - 2
app/service/payment_safe_bills.js

@@ -533,8 +533,8 @@ module.exports = app => {
                     nd.unit_price = calcUp ? this.ctx.helper.round(cd.unit_price, decimal.up) : cd.unit_price;
                     nd.cur_qty = calcQty ? this.ctx.helper.round(cd.cur_qty, decimal.qty) : cd.cur_qty;
                     nd.cur_tp = this.ctx.helper.mul(nd.unit_price, nd.cur_qty, decimal.tp);
-                    nd.end_qty = this.ctx.helper.add(nd.pre_qty, nd.cur_qty);
-                    nd.end_tp = this.ctx.helper.add(nd.pre_tp, nd.cur_tp);
+                    nd.end_qty = this.ctx.helper.add(cd.pre_qty, nd.cur_qty);
+                    nd.end_tp = this.ctx.helper.add(cd.pre_tp, nd.cur_tp);
                     updateData.push(nd);
                 }
             }

+ 9 - 0
app/service/settle.js

@@ -45,6 +45,15 @@ module.exports = app => {
             return settles;
         }
 
+        async getLatestCompleteSettle(tenderId) {
+            const settles = await this.getAllDataByCondition({
+                where: { tid: tenderId, status: auditConst.settle.status.checked },
+                order: [['settle_order', 'desc']],
+                limit: 1, offset: 0
+            });
+            return settles[0];
+        }
+
         /**
          * 新增结算期
          * @param tenderId - 标段id

+ 2 - 2
app/view/settle/list.ejs

@@ -1,8 +1,8 @@
-<% include ../tender/tender_sub_menu.ejs %>
+<% include ./list_menu.ejs %>
 <div class="panel-content">
     <div class="panel-title">
         <div class="title-main d-flex">
-            <% include ../tender/tender_sub_mini_menu.ejs %>
+            <% include ./list_mini_menu.ejs %>
             <h2>
                 结算期列表
             </h2>

+ 14 - 0
app/view/settle/list_menu.ejs

@@ -0,0 +1,14 @@
+<div class="panel-sidebar" id="sub-menu">
+    <div class="sidebar-title" data-toggle="tooltip" data-placement="right" data-original-title="<%- ctx.tender.data.name %>">
+        <%- (ctx.tender.data.name.length > 15 ? ctx.tender.data.name.substring(0,15) + '...' : ctx.tender.data.name) %>
+    </div>
+    <div class="scrollbar-auto">
+        <% include ./list_menu_list.ejs %>
+        <div class="side-fold"><a href="javascript: void(0)" data-toggle="tooltip" data-placement="top" data-original-title="折叠侧栏" id="to-mini-menu"><i class="fa fa-upload fa-rotate-270"></i></a></div>
+    </div>
+    <script>
+        new Vue({
+            el: '.scrollbar-auto',
+        });
+    </script>
+</div>

+ 3 - 0
app/view/settle/list_menu_list.ejs

@@ -0,0 +1,3 @@
+<nav-menu title="返回" url="/tender/<%= ctx.tender.id %>/measure/stage" tclass="text-primary" ml="1" icon="fa-chevron-left"></nav-menu>
+<nav-menu title="结算列表" url="/tender/<%= ctx.tender.id %>/settle" ml="3" active="<%= (ctx.url.indexOf('gather') < 0 ? 1 : -1) %>"></nav-menu>
+<nav-menu title="汇总台账" url="/tender/<%= ctx.tender.id %>/settle/gather" ml="3" active="<%= (ctx.url.indexOf('gather') > 0 ? 1 : -1) %>"></nav-menu>

+ 16 - 0
app/view/settle/list_mini_menu.ejs

@@ -0,0 +1,16 @@
+<!--折起的菜单-->
+<div class="min-side" id="sub-mini-menu" style="display: none;">
+    <div id="sub-mini-hint" class="side-switch" data-container="body" data-toggle="popover" data-placement="bottom" data-content="这里打开收起的菜单栏"></div>
+    <div class="side-switch">
+        <i class="fa fa-bars"></i>
+    </div>
+    <div class="side-menu" id="mini-menu-list" style="display: none">
+        <% include ./list_menu_list.ejs %>
+        <div class="side-fold"><a href="javascript: void(0);" data-toggle="tooltip" data-placement="top" data-original-title="展开侧栏" id="to-menu"><i class="fa fa-upload fa-rotate-90"></i></a></div>
+    </div>
+</div>
+<script>
+    new Vue({
+        el: '.side-menu',
+    });
+</script>

+ 14 - 0
app/view/settle/settle_menu.ejs

@@ -0,0 +1,14 @@
+<div class="panel-sidebar" id="sub-menu">
+    <div class="sidebar-title" data-toggle="tooltip" data-placement="right" data-original-title="第<%- ctx.stage.order%>期 - 关联台账">
+        关联台账
+    </div>
+    <div class="scrollbar-auto">
+        <% include ./settle_menu_list.ejs %>
+        <div class="side-fold"><a href="javascript: void(0)" data-toggle="tooltip" data-placement="top" data-original-title="折叠侧栏" id="to-mini-menu"><i class="fa fa-upload fa-rotate-270"></i></a></div>
+    </div>
+    <script>
+        new Vue({
+            el: '.scrollbar-auto',
+        });
+    </script>
+</div>

+ 3 - 0
app/view/settle/settle_menu_list.ejs

@@ -0,0 +1,3 @@
+<nav-menu title="返回" url="/tender/<%= ctx.tender.id %>/settle" tclass="text-primary" ml="1" icon="fa-chevron-left"></nav-menu>
+<nav-menu title="结算列表" url="/tender/<%= ctx.tender.id %>/settle/<%= ctx.settle.settle_order%>" ml="3" active="<%= (ctx.url.indexOf(ctx.settle.settle.order) > 0 ? 1 : -1) %>"></nav-menu>
+<nav-menu title="汇总台账" url="/tender/<%= ctx.tender.id %>/settle/gather" ml="3" active="<%= (ctx.url.indexOf('gather') > 0 ? 1 : -1) %>"></nav-menu>

+ 16 - 0
app/view/settle/settle_mini_menu.ejs

@@ -0,0 +1,16 @@
+<!--折起的菜单-->
+<div class="min-side" id="sub-mini-menu" style="display: none;">
+    <div id="sub-mini-hint" class="side-switch" data-container="body" data-toggle="popover" data-placement="bottom" data-content="这里打开收起的菜单栏"></div>
+    <div class="side-switch">
+        <i class="fa fa-bars"></i>
+    </div>
+    <div class="side-menu" id="mini-menu-list" style="display: none">
+        <% include ./settle_menu_list.ejs %>
+        <div class="side-fold"><a href="javascript: void(0);" data-toggle="tooltip" data-placement="top" data-original-title="展开侧栏" id="to-menu"><i class="fa fa-upload fa-rotate-90"></i></a></div>
+    </div>
+</div>
+<script>
+    new Vue({
+        el: '.side-menu',
+    });
+</script>

+ 10 - 0
config/web.js

@@ -1337,6 +1337,16 @@ const JsFiles = {
                 mergeFile: 'setting_manage',
             },
         },
+        settle: {
+            list: {
+                files: [],
+                mergeFiles: [
+                    '/public/js/component/menu.js',
+                    '/public/js/sub_menu.js',
+                ],
+                mergeFile: 'settle_list',
+            },
+        }
     },
 };
 

+ 13 - 0
publish.md

@@ -10,6 +10,19 @@
 ##特殊操作
 如果没有特殊说明,则在第默认操作的第3步前,执行相关脚本,如果有特殊要求,需特别说明
 
+
+### V3.5.xx 2023-12-15 update
+#### uat
+```shell
+$ cd db_script
+$ node change_bills uat
+```
+#### prod
+```shell
+$ cd db_script
+$ node change_bills default
+```
+
 ### V3.5.35
 #### uat
 ```shell