Sfoglia il codice sorgente

Merge branch 'dev' of http://192.168.1.41:3000/maixinrong/Calculation into dev

TonyKang 4 anni fa
parent
commit
9031a79db8

+ 4 - 4
app/const/advance.js

@@ -12,15 +12,15 @@
 const typeCol = [
     { key: 'start', type: 0, name: '开工预付款' },
     { key: 'material', type: 1, name: '材料预付款' },
-    { key: 'safe', type: 2, name: '安全生产预付款' },
-    { key: 'dust', type: 3, name: '扬尘污染预付款' },
+    { key: 'safe', type: 2, name: '安全生产预付款' },
+    { key: 'dust', type: 3, name: '扬尘污染预付款' },
 ];
 
 const typeColMap = {
     0: { text: '开工预付款', value: 'start' },
     1: { text: '材料预付款', value: 'material' },
-    2: { text: '安全生产预付款', value: 'safe' },
-    3: { text: '扬尘污染预付款', value: 'dust' },
+    2: { text: '安全生产预付款', value: 'safe' },
+    3: { text: '扬尘污染预付款', value: 'dust' },
 };
 
 

+ 1 - 1
app/controller/advance_controller.js

@@ -145,7 +145,7 @@ module.exports = app => {
          * @param {Object} ctx 全局上下文
          */
         async detail(ctx) {
-            const advancePayTotal = ctx.tender.info.deal_param[`${typeConsts.typeColMap[ctx.advance.type].value}startAdvance`];
+            const advancePayTotal = ctx.tender.info.deal_param[`${typeConsts.typeColMap[ctx.advance.type].value}Advance`];
             try {
                 await this._checkCanEntry(ctx);
                 const { uncheck, checkNo } = auditConst.status;

+ 13 - 1
app/lib/ledger.js

@@ -734,7 +734,19 @@ class checkData {
     }
 
     checkSameCode() {
-        let xmj = this.checkBills.nodes.filter(x => { return /^((GD*)|G)?[0-9]+/.test(x.code); });
+        //let xmj = this.checkBills.nodes.filter(x => { return /^((GD*)|G)?[0-9]+/.test(x.code); });
+        let xmj = [];
+        const addXmjCheck = function (node) {
+            if (/^((GD*)|G)?[0-9]+/.test(node.code)) xmj.push(node);
+            for (const child of node.children) {
+                addXmjCheck(child);
+            }
+        };
+        for (const topLevel of this.checkBills.children) {
+            if ([1, 3, 4].indexOf(topLevel.node_type) < 0) continue;
+
+            addXmjCheck(topLevel);
+        }
         let check = null;
         while (xmj.length > 0) {
             [check, xmj] = this.ctx.helper._.partition(xmj, x => { return x.code === xmj[0].code; });

+ 1 - 1
app/lib/rpt_data_analysis.js

@@ -1407,7 +1407,7 @@ const stageSelectConverse = {
         for (const s of stages) {
             const curReg = new RegExp('^s_' + s + '_');
             for (const [i, d] of data.entries()) {
-                const nd = { cross_index: i + 1 };
+                const nd = { cross_index: i + 1, s_order: s };
                 for (const prop in d) {
                     if (reg.test(prop)) {
                         if (curReg.test(prop)) {

+ 10 - 3
app/public/js/advance.js

@@ -10,9 +10,9 @@
 
 $(document).ready(function () {
 
-    if (!advancePayTotal) {
-        $('#erro').modal('show');
-    }
+    // if (!advancePayTotal) {
+    //     $('#erro').modal('show');
+    // }
 
     // $('#advance_add').click(function() {
     //     postData(`${window.location.pathname}/${type}/create`, {}, res => {
@@ -33,6 +33,13 @@ $(document).ready(function () {
     //     return false
     // })
 
+    $('.ml-auto').submit(function () {
+        if (!advancePayTotal) {
+            $('#erro').modal('show');
+            return false;
+        }
+        return true;
+    })
     $('#advanceList').on('click', `a[href="#file"]`, function() {
         const { fileList = [] } = advanceList.find(item => item.id === parseInt($(this).data('id')))
         $('#file-content').empty()

+ 13 - 1
app/public/js/ledger_check.js

@@ -117,7 +117,19 @@ const ledgerCheckUtil = {
     },
     checkSameCode: function (ledgerTree, ledgerPos, decimal, option) {
         const error = [];
-        let xmj = ledgerTree.nodes.filter(x => { return /^((GD*)|G)?[0-9]+/.test(x.code); });
+        //let xmj = ledgerTree.nodes.filter(x => { return /^((GD*)|G)?[0-9]+/.test(x.code); });
+        let xmj = [];
+        const addXmjCheck = function (node) {
+            if (/^((GD*)|G)?[0-9]+/.test(node.code)) xmj.push(node);
+            for (const child of node.children) {
+                addXmjCheck(child);
+            }
+        };
+        for (const topLevel of ledgerTree.children) {
+            if ([1, 3, 4].indexOf(topLevel.node_type) < 0) continue;
+
+            addXmjCheck(topLevel);
+        }
         let check = null;
         while (xmj.length > 0) {
             [check, xmj] = _.partition(xmj, x => { return x.code === xmj[0].code; });

+ 3 - 3
app/public/js/material_list.js

@@ -168,7 +168,7 @@ $(document).ready(() => {
             }
             SpreadJsObj.loadSheetData(leafXmjSpread.getActiveSheet(), SpreadJsObj.DataType.Data, gcl.leafXmjs);
             // 对清单调差工料table的单位数量进行改变
-            materialSpreadSetting.cols[materialSpreadSetting.cols.length - 1].title = '|' + gcl.unit + '数量 �';
+            materialSpreadSetting.cols[materialSpreadSetting.cols.length - 2].title = '|' + gcl.unit + '数量 �';
             // SpreadJsObj.initSheet(materialSpread.getActiveSheet(), materialSpreadSetting);
         } else {
             SpreadJsObj.loadSheetData(leafXmjSpread.getActiveSheet(), SpreadJsObj.DataType.Data, []);
@@ -229,8 +229,8 @@ $(document).ready(() => {
             {title: '清单工料含量|编号', colSpan: '5|1', rowSpan: '1|1', field: 'code', hAlign: 0, width: 80, formatter: '@', readOnly: true},
             {title: '|名称', colSpan: '|1', rowSpan: '|1', field: 'name', hAlign: 0, width: 100, formatter: '@', readOnly: true},
             {title: '|单位', colSpan: '|1', rowSpan: '|1', field: 'unit', hAlign: 1, width: 60, formatter: '@', readOnly: true},
-            {title: '|数量 �', colSpan: '1', rowSpan: '|1', field: 'quantity', hAlign: 2, width: 80, type: 'Number', readOnly: 'readOnly.isEdit'},
-            {title: '|计算式', colSpan: '|1', rowSpan: '|1', field: 'expr', hAlign: 2, width: 120, formatter: '@', readOnly: 'readOnly.isEdit'},
+            {title: '|数量 �', colSpan: '|1', rowSpan: '|1', field: 'quantity', hAlign: 2, width: 80, type: 'Number', readOnly: 'readOnly.isEdit'},
+            {title: '|计算式', colSpan: '1', rowSpan: '|1', field: 'expr', hAlign: 2, width: 120, formatter: '@', readOnly: 'readOnly.isEdit'},
         ],
         emptyRows: 0,
         headRows: 2,

+ 3 - 3
app/router.js

@@ -137,8 +137,8 @@ module.exports = app => {
     // 预付款
     app.get('/tender/:id/advance/:type', sessionAuth, tenderCheck, 'advanceController.index');
     // app.get('/tender/:id/advance/material', sessionAuth, tenderCheck, 'advanceController.materialList');
-    app.post('/tender/:id/advance/create', sessionAuth, tenderCheck, 'advanceController.create');
-    app.post('/tender/:id/advance/delete', sessionAuth, tenderCheck, 'advanceController.delete');
+    app.post('/tender/:id/advance/:type/create', sessionAuth, tenderCheck, 'advanceController.create');
+    app.post('/tender/:id/advance/:type/delete', sessionAuth, tenderCheck, 'advanceController.delete');
     app.get('/tender/:id/advance/:order/detail', sessionAuth, tenderCheck, advanceCheck, 'advanceController.detail');
     app.post('/tender/:id/advance/:type/create', sessionAuth, tenderCheck, 'advanceController.create');
     app.post('/tender/:id/advance/:order/audit/add', sessionAuth, tenderCheck, advanceCheck, 'advanceController.addAudit');
@@ -149,7 +149,7 @@ module.exports = app => {
     app.post('/tender/:id/advance/:order/file/upload', sessionAuth, tenderCheck, advanceCheck, 'advanceController.upload');
     app.get('/tender/:id/advance/:order/file/:fid/download', sessionAuth, tenderCheck, 'advanceController.downloadFile');
     app.post('/tender/:id/advance/:order/file/del', sessionAuth, tenderCheck, advanceCheck, 'advanceController.deleteFile');
-    app.post('/tender/:id/advance/:order/auditors', sessionAuth, tenderCheck, advanceCheck, 'advanceController.getAuditors');
+    app.post('/tender/:id/advance/:type/:order/auditors', sessionAuth, tenderCheck, advanceCheck, 'advanceController.getAuditors');
 
     // 标段协作办公
     app.get('/tender/:id/cooperation', sessionAuth, tenderCheck, 'tenderController.tenderCooperation');

+ 1 - 1
app/view/advance/detail.ejs

@@ -22,7 +22,7 @@
                         <thead>
                             <tr>
                                 <th colspan="4" class="text-center">
-                                    签约<%- typeColMap[advance.type].text %>:<%- ctx.helper.formatMoney(advancePayTotal, ',', parseFloat(advancePayTotal).toString().split('.')[1] && parseFloat(advancePayTotal).toString().split('.')[1].length || 0) %>
+                                    <%- typeColMap[advance.type].text %>:<%- ctx.helper.formatMoney(advancePayTotal, ',', parseFloat(advancePayTotal).toString().split('.')[1] && parseFloat(advancePayTotal).toString().split('.')[1].length || 0) %>
                                 </th>
                             </tr>

+ 3 - 3
app/view/advance/index.ejs

@@ -12,15 +12,15 @@
                             材料预付款<%- type === 1 && latestOrder ? `(第${latestOrder.order}期)` : '' %>
                         </a>
                         <a class="btn btn-sm btn-light <%- type === 2 ? 'active' : '' %>" href="/tender/<%- ctx.tender.id %>/advance/safe">
-                          安全生产预付款<%- type === 2 && latestOrder ? `(第${latestOrder.order}期)` : '' %>
+                          安全生产预付款<%- type === 2 && latestOrder ? `(第${latestOrder.order}期)` : '' %>
                         </a>
                         <a class="btn btn-sm btn-light <%- type === 3 ? 'active' : '' %>" href="/tender/<%- ctx.tender.id %>/advance/dust">
-                          扬尘污染预付款<%- type === 3 && latestOrder ? `(第${latestOrder.order}期)` : '' %>
+                          扬尘污染预付款<%- type === 3 && latestOrder ? `(第${latestOrder.order}期)` : '' %>
                         </a>
                     </div>
                 </div>
                 <div class="d-inline-block ml-2">
-                    签约<%- typeColMap[type].text%>
+                    <%- typeColMap[type].text%>
                     <b><%- ctx.helper.formatMoney(advancePayTotal, ',', parseFloat(advancePayTotal).toString().split('.')[1] && parseFloat(advancePayTotal).toString().split('.')[1].length || 0) %></b> 元
                 </div>
                 <div class="d-inline-block ml-4" style="width:300px">

+ 2 - 2
app/view/advance/modal.ejs

@@ -6,8 +6,8 @@
                 <h5 class="modal-title">提示</h5>
             </div>
             <div class="modal-body">
-                <p>预付款金额未填写,无法使用「预付款」,请先填写预付款金额;</p>
-                <p>进入「标段概况」打开「合同参数」填写预付款金额。</p>
+                <p><%- typeColMap[type].text %>金额未填写,无法使用「<%- typeColMap[type].text %> 」,请先填写<%- typeColMap[type].text %>金额;</p>
+                <p>进入「标段概况」打开「合同参数」填写<%- typeColMap[type].text %>金额。</p>
             </div>
             <div class="modal-footer">
               <a href="/tender/<%- ctx.tender.id %>" class="btn btn-sm btn-primary">标段概况</a>

+ 2 - 0
app/view/stage/stage_sub_menu.ejs

@@ -15,6 +15,7 @@
                 </li>
             </ul>
         </div>
+        <% if (ctx.session.sessionProject.page_show !== null && parseInt(ctx.session.sessionProject.page_show.stageExtra) === 1) { %>
         <div class="nav-box">
             <ul class="nav-list list-unstyled">
                 <li class="<% if (ctx.url === '/tender/' + ctx.tender.id + '/measure/stage/' + ctx.stage.order + '/extra/jgcl') { %>active<% } %>">
@@ -22,6 +23,7 @@
                 </li>
             </ul>
         </div>
+        <% } %>
         <div class="nav-box">
             <ul class="nav-list list-unstyled">
                 <li class="<% if (ctx.url === '/tender/' + ctx.tender.id + '/measure/stage/' + ctx.stage.order + '/pay') { %>active<% } %>">

+ 2 - 0
app/view/stage/stage_sub_mini_menu.ejs

@@ -17,6 +17,7 @@
                 </li>
             </ul>
         </div>
+        <% if (ctx.session.sessionProject.page_show !== null && parseInt(ctx.session.sessionProject.page_show.stageExtra) === 1) { %>
         <div class="nav-box">
             <ul class="nav-list list-unstyled">
                 <li class="<% if (ctx.url === '/tender/' + ctx.tender.id + '/measure/stage/' + ctx.stage.order + '/extra/jgcl') { %>active<% } %>">
@@ -24,6 +25,7 @@
                 </li>
             </ul>
         </div>
+        <% } %>
         <div class="nav-box">
             <ul class="nav-list list-unstyled">
                 <li class="<% if (ctx.url === '/tender/' + ctx.tender.id + '/measure/stage/' + ctx.stage.order + '/pay') { %>active<% } %>">