ソースを参照

合同参数修改方式更改,形象进度改名

laiguoran 4 年 前
コミット
721e0e7f03

+ 1 - 0
app/const/advance.js

@@ -13,6 +13,7 @@ const typeCol = [
     { key: 'start', type: 0, name: '开工预付款' },
     { key: 'material', type: 1, name: '材料预付款' },
     // { key: 'safe', type: 2, name: '安全生产预付款' },
+    // { key: 'dust', type: 2, name: '扬尘污染预付款' },
 ]
 
 module.exports = {

+ 1 - 0
app/const/tender_info.js

@@ -101,6 +101,7 @@ const defaultInfo = {
         startAdvance: 0,
         materialAdvance: 0,
         safeAdvance: 0,
+        dustAdvance: 0,
     },
     // 显示设置
     display: {

+ 1 - 1
app/controller/schedule_controller.js

@@ -574,7 +574,7 @@ module.exports = app => {
                 }
                 // 判断修改权限
                 if (ctx.session.sessionUser.is_admin === 0) {
-                    throw '你没有权限修改形象进度';
+                    throw '你没有权限修改投资进度';
                 }
                 let info = '';
                 switch (data.type) {

+ 1 - 1
app/controller/tender_controller.js

@@ -468,7 +468,7 @@ module.exports = app => {
                     renderData.accountGroup = accountGroupList;
                 }
                 if (ctx.session.sessionProject.page_show !== null && parseInt(ctx.session.sessionProject.page_show.xxjd) === 1 && ctx.session.sessionUser.is_admin) {
-                    // 形象进度内容
+                    // 投资进度内容
                     renderData.scheduleAuditList = await ctx.service.scheduleAudit.getAllDataByCondition({ where: { tid: tender.id } });
                     renderData.scPermission = scheduleConst.permission;
                 }

+ 1 - 1
app/middleware/schedule_check.js

@@ -10,7 +10,7 @@
 const scPermission = require('../const/schedule').permission;
 module.exports = options => {
     /**
-     * 形象进度校验 中间件
+     * 投资进度校验 中间件
      *
      * @param {function} next - 中间件继续执行的方法
      * @return {void}

+ 1 - 1
app/middleware/tender_check.js

@@ -78,7 +78,7 @@ module.exports = options => {
             tender.ledgerUsers = tender.ledger_status === auditConst.status.uncheck ? [tender.data.user_id] : [tender.data.user_id, ...auditorsId];
             this.tender = tender;
             this.session.sessionProject.page_show = yield this.service.project.getPageshow(this.session.sessionProject.id);
-            // 形象进度权限获取
+            // 投资进度权限获取
             let schedule_permission = scPermission.no;
             if (this.session.sessionUser.accountId === tender.data.user_id) {
                 schedule_permission = scPermission.edit;

+ 2 - 2
app/router.js

@@ -25,7 +25,7 @@ module.exports = app => {
     const advanceCheck = app.middlewares.advanceCheck();
     // 变更令中间件
     const changeCheck = app.middlewares.changeCheck();
-    // 形象进度中间件
+    // 投资进度中间件
     const scheduleCheck = app.middlewares.scheduleCheck();
     // 登入登出相关
     app.get('/login', 'loginController.index');
@@ -469,7 +469,7 @@ module.exports = app => {
     app.get('/wx/test', 'wechatController.testwx');
     app.get('/MP_verify_t3MkWAMqplVxPjmr.txt', 'wechatController.oauthTxt');
 
-    // 形象进度
+    // 投资进度
     app.get('/tender/:id/schedule', sessionAuth, tenderCheck, uncheckTenderCheck, scheduleCheck, 'scheduleController.index');
     app.get('/tender/:id/schedule/ledger', sessionAuth, tenderCheck, uncheckTenderCheck, scheduleCheck, 'scheduleController.ledger');
     app.post('/tender/:id/schedule/ledger/load', sessionAuth, tenderCheck, uncheckTenderCheck, 'scheduleController.loadLedgerData');

+ 1 - 1
app/service/ledger_revise.js

@@ -216,7 +216,7 @@ module.exports = app => {
                     id: revise.id, valid: false, end_time: new Date(),
                     bills_file: billsHis, pos_file: posHis,
                 });
-                // 形象进度改变状态
+                // 投资进度改变状态
                 await transaction.update(this.ctx.service.schedule.tableName, { revising: 0 }, { where: { tid: this.ctx.tender.id } });
                 await transaction.commit();
                 return result.affectedRows === 1;

+ 1 - 1
app/service/revise_audit.js

@@ -258,7 +258,7 @@ module.exports = app => {
                 }
                 await transaction.update(this.ctx.service.ledgerRevise.tableName, reviseData);
 
-                // 形象进度改变状态
+                // 投资进度改变状态
                 await transaction.update(this.ctx.service.schedule.tableName, { revising: 1 }, { where: { tid: this.ctx.tender.id } });
 
                 // 添加短信通知-需要审批提醒功能

+ 1 - 1
app/service/schedule_ledger.js

@@ -53,7 +53,7 @@ module.exports = app => {
                     total_tp = this.ctx.helper.add(total_tp, u.tp);
                 }
                 if (updateOptions.length > 0) await transaction.updateRows(this.tableName, updateOptions);
-                // 判断是否已创建了形象进度表
+                // 判断是否已创建了投资进度表
                 const scheduleInfo = await this.ctx.service.schedule.getDataByCondition({ tid: this.ctx.tender.id });
                 if (!scheduleInfo) {
                     const newSchedule = {

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

@@ -15,7 +15,7 @@
             </div>
             <% } else { %>
             <div class="modal-body">
-                <h5>首次使用形象进度需要进行进度台帐初始化设置</h5>
+                <h5>首次使用投资进度需要进行进度台帐初始化设置</h5>
             </div>
             <div class="modal-footer">
                 <a href="/tender/<%- ctx.tender.id %>/schedule/ledger" class="btn btn-sm btn-primary">开始设置</a>
@@ -34,7 +34,7 @@
                     <h5 class="modal-title">提示</h5>
                 </div>
                 <div class="modal-body">
-                    <h5>台账正在进行修订,形象进度无法进行任何操作。</h5>
+                    <h5>台账正在进行修订,投资进度无法进行任何操作。</h5>
                 </div>
                 <div class="modal-footer">
                     <button type="button" class="btn btn-secondary btn-sm" data-dismiss="modal">好的</button>

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

@@ -102,7 +102,7 @@
                                 <a href="#bd-set-7" data-toggle="modal" data-target="#bd-set-7" class="btn btn-sm btn-outline-primary">付款账号</a>
                                 <i class="mx-2">|</i>
                                 <% if (ctx.session.sessionProject.page_show !== null && parseInt(ctx.session.sessionProject.page_show.xxjd) === 1 && ctx.session.sessionUser.is_admin) { %>
-                                <a href="#xxjd-set" data-toggle="modal" data-target="#xxjd-set" class="btn btn-sm btn-outline-primary">形象进度</a>
+                                <a href="#xxjd-set" data-toggle="modal" data-target="#xxjd-set" class="btn btn-sm btn-outline-primary">投资进度</a>
                                 <% } %>
                                 <a href="javascript: void(0);" class="btn btn-sm btn-outline-primary" id="copyBtn">拷贝设置</a>
                                 <% if (ctx.session.sessionUser.is_admin) { %>

+ 142 - 19
app/view/tender/detail_modal.ejs

@@ -601,9 +601,31 @@
                 <h5 class="modal-title">合同参数</h5>
             </div>
             <div class="modal-body">
-                <div class="form-group">
-                    <!--默认显示-->
-                    <div class="form-group" id="param-spread" style="height: 230px; width: 465px;">
+                <ul class="nav nav-tabs nav-justified mb-2">
+                    <li class="nav-item">
+                        <a class="nav-link active" data-toggle="tab" href="#htcs" role="tab" aria-selected="true">合同参数</a>
+                    </li>
+                    <li class="nav-item">
+                        <a class="nav-link" data-toggle="tab" href="#bzqd" role="tab" aria-selected="false">100章清单</a>
+                    </li>
+                </ul>
+                <div class="tab-content">
+                    <div class="tab-pane active" id="htcs">
+                        <div class="modal-height-300" style="overflow-y: auto">
+                            <div class="form-group">
+                                <!--默认显示-->
+                                <div class="form-group" id="param-spread" style="height: 230px; width: 465px;">
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="tab-pane" id="bzqd">
+                        <div class="modal-height-300" style="overflow-y: auto">
+                            <div class="form-group">
+                                <div class="form-group" id="cap100-spread" style="height: 230px; width: 465px;">
+                                </div>
+                            </div>
+                        </div>
                     </div>
                 </div>
             </div>
@@ -623,9 +645,31 @@
                 <h5 class="modal-title">合同参数</h5>
             </div>
             <div class="modal-body">
-                <div class="form-group">
-                    <!--默认显示-->
-                    <div class="form-group" id="param-spread" style="height: 230px; width: 465px;">
+                <ul class="nav nav-tabs nav-justified mb-2">
+                    <li class="nav-item">
+                        <a class="nav-link active" data-toggle="tab" href="#htcs" role="tab" aria-selected="true">合同参数</a>
+                    </li>
+                    <li class="nav-item">
+                        <a class="nav-link" data-toggle="tab" href="#bzqd" role="tab" aria-selected="false">100章清单</a>
+                    </li>
+                </ul>
+                <div class="tab-content">
+                    <div class="tab-pane active" id="htcs">
+                        <div class="modal-height-300" style="overflow-y: auto">
+                            <div class="form-group">
+                                <!--默认显示-->
+                                <div class="form-group" id="param-spread" style="height: 230px; width: 465px;">
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="tab-pane" id="bzqd">
+                        <div class="modal-height-300" style="overflow-y: auto">
+                            <div class="form-group">
+                                <div class="form-group" id="cap100-spread" style="height: 230px; width: 465px;">
+                                </div>
+                            </div>
+                        </div>
                     </div>
                 </div>
             </div>
@@ -1220,11 +1264,11 @@
         SpreadJsObj.massOperationSheet(sheet, function () {
             sheet.defaults.rowHeight = 21;
             sheet.setColumnCount(2);
-            sheet.setRowCount(6);
+            sheet.setRowCount(5);
             sheet.setColumnWidth(0, 200);
             sheet.setColumnWidth(1, 200);
-            sheet.getRange(0, 0, 6, 1).vAlign(1).backColor('#e4e7ea').locked(true);
-            sheet.getRange(0, 1, 6, 1).vAlign(1).hAlign(2).locked(false);
+            sheet.getRange(0, 0, 5, 1).vAlign(1).backColor('#e4e7ea').locked(true);
+            sheet.getRange(0, 1, 5, 1).vAlign(1).hAlign(2).locked(false);
             sheet.setText(0, 0, '签约合同价');
             sheet.setText(1, 0, '暂列金额');
             sheet.setText(2, 0, '签约合同价(不含暂列金)');
@@ -1233,11 +1277,39 @@
             sheet.setText(5, 0, '安全生产费');
             sheet.getCell(2, 1).locked(true);
             const lineBorder = new spreadNS.LineBorder('#dee2e6', spreadNS.LineStyle.thin);
-            sheet.getRange(0, 0, 6, 2).setBorder(lineBorder, {all: true});
-            sheet.getRange(0, 0, 6, 2).formatter('@');
+            sheet.getRange(0, 0, 5, 2).setBorder(lineBorder, {all: true});
+            sheet.getRange(0, 0, 5, 2).formatter('@');
             sheet.setSelection(0, 1, 1, 1);
         });
 
+        const cap100spread = SpreadJsObj.createNewSpread($('#cap100-spread')[0]);
+        cap100spread.options.showVerticalScrollbar = false;
+        cap100spread.options.showHorizontalScrollbar = false;
+        const cap100sheet = cap100spread.getActiveSheet();
+        SpreadJsObj.protectedSheet(cap100sheet);
+        cap100sheet.setText(0, 0, '参数名', spreadNS.SheetArea.colHeader);
+        cap100sheet.setText(0, 1, '参数值', spreadNS.SheetArea.colHeader);
+        cap100sheet.setRowHeight(0, 32, spreadNS.SheetArea.colHeader);
+        cap100sheet.setDefaultStyle(vStyle, spreadNS.SheetArea.viewport);
+        cap100sheet.setDefaultStyle(xStyle, spreadNS.SheetArea.colHeader);
+        cap100sheet.setDefaultStyle(yStyle, spreadNS.SheetArea.rowHeader);
+
+        SpreadJsObj.massOperationSheet(cap100sheet, function () {
+            cap100sheet.defaults.rowHeight = 21;
+            cap100sheet.setColumnCount(2);
+            cap100sheet.setRowCount(2);
+            cap100sheet.setColumnWidth(0, 200);
+            cap100sheet.setColumnWidth(1, 200);
+            cap100sheet.getRange(0, 0, 2, 1).vAlign(1).backColor('#e4e7ea').locked(true);
+            cap100sheet.getRange(0, 1, 2, 1).vAlign(1).hAlign(2).locked(false);
+            cap100sheet.setText(0, 0, '安全生产费');
+            cap100sheet.setText(1, 0, '扬尘污染费');
+            const cap100lineBorder = new spreadNS.LineBorder('#dee2e6', spreadNS.LineStyle.thin);
+            cap100sheet.getRange(0, 0, 2, 2).setBorder(cap100lineBorder, {all: true});
+            cap100sheet.getRange(0, 0, 2, 2).formatter('@');
+            cap100sheet.setSelection(0, 1, 1, 1);
+        });
+
         function calcHtjMinusZlj() {
             const htj = _.toNumber(sheet.getText(0, 1));
             const zlj = _.toNumber(sheet.getText(1, 1));
@@ -1290,6 +1362,51 @@
             }
             calcHtjMinusZlj();
         });
+        cap100spread.bind(spreadNS.Events.EditEnded, function (e, info) {
+            const value = _.toNumber(info.editingText);
+            if (_.isNaN(value)) {
+                toastr.warning('请输入不超过万亿的数字');
+                info.sheet.setText(info.row, info.col, '0');
+            } else if (value > Math.pow(10, 13)) {
+                toastr.warning('请输入不超过万亿的数字');
+                info.sheet.setText(info.row, info.col, '0');
+            }
+            // if (info.row === 0 || info.row === 1) {
+            //     calcHtjMinusZlj();
+            // }
+        });
+        SpreadJsObj.addDeleteBind(cap100spread, function (sheet) {
+            const sel = sheet.getSelections()[0];
+            // let calc = false;
+            if (sel) {
+                for (let iRow = sel.row, iRowLength = sel.row + sel.rowCount; iRow < iRowLength; iRow++) {
+                    if (iRow === 2) continue;
+                    for (let iCol = sel.col, iColLength = sel.col + sel.colCount; iCol < iColLength; iCol++) {
+                        if (iCol !== 1) continue;
+                        sheet.setText(iRow, iCol, '0');
+                        // if (iRow === 0 || iRow === 1) calc = true;
+                    }
+                }
+            }
+            // if (calc) calcHtjMinusZlj();
+        });
+        cap100spread.bind(spreadNS.Events.ClipboardPasted, function (e, info) {
+            let bHint = false;
+            for (let iRow = 0; iRow < info.cellRange.rowCount; iRow++) {
+                const curRow = info.cellRange.row + iRow;
+                for (let iCol = 0; iCol < info.cellRange.colCount; iCol++) {
+                    const curCol = info.cellRange.col + iCol;
+                    const value = _.toNumber(info.sheet.getText(curRow, curCol));
+                    if (_.isNaN(value) || value > Math.pow(10, 13)) {
+                        bHint = true;
+                        info.sheet.setText(curRow, curCol, '0');
+                    }
+                }
+            }
+            if (bHint) {
+                toastr.warning('请输入不超过万亿的数字');
+            }
+        });
 
         function loadDealProperty() {
             sheet.setValue(0, 1, property.deal_param.contractPrice);
@@ -1297,7 +1414,9 @@
             sheet.setValue(2, 1, ZhCalc.sub(property.deal_param.contractPrice, property.deal_param.zanLiePrice));
             sheet.setValue(3, 1, property.deal_param.startAdvance);
             sheet.setValue(4, 1, property.deal_param.materialAdvance);
-            sheet.setValue(5, 1, property.deal_param.safeAdvance);
+            // sheet.setValue(5, 1, property.deal_param.safeAdvance);
+            cap100sheet.setValue(0, 1, property.deal_param.safeAdvance);
+            cap100sheet.setValue(1, 1, property.deal_param.dustAdvance);
 
         }
         function setReadOnly (readOnly) {
@@ -1305,7 +1424,9 @@
             sheet.getCell(1, 1).locked(readOnly);
             sheet.getCell(3, 1).locked(readOnly);
             sheet.getCell(4, 1).locked(readOnly);
-            sheet.getCell(5, 1).locked(readOnly);
+            // sheet.getCell(5, 1).locked(readOnly);
+            cap100sheet.getCell(0, 1).locked(readOnly);
+            cap100sheet.getCell(1, 1).locked(readOnly);
         }
         function getNewDealData () {
             const result = {};
@@ -1313,7 +1434,9 @@
             result.zanLiePrice = _.toNumber(sheet.getText(1, 1));
             result.startAdvance = _.toNumber(sheet.getText(3, 1));
             result.materialAdvance = _.toNumber(sheet.getText(4, 1));
-            result.safeAdvance = _.toNumber(sheet.getText(5, 1));
+            // result.safeAdvance = _.toNumber(sheet.getText(5, 1));
+            result.safeAdvance = _.toNumber(cap100sheet.getText(0, 1));
+            result.dustAdvance = _.toNumber(cap100sheet.getText(1, 1));
             return result;
         }
 
@@ -1648,7 +1771,7 @@
         });
     }
     $(function () {
-        // 形象进度
+        // 投资进度
         let timer2 = null;
         let oldSearchVal2 = null;
         $('body').on('input propertychange', '#tourist_dropdownMenu .gr-search', function (e) {
@@ -1772,15 +1895,15 @@
 </script>
 <% } %>
 <% if (ctx.session.sessionProject.page_show !== null && parseInt(ctx.session.sessionProject.page_show.xxjd) === 1 && ctx.session.sessionUser.is_admin) { %>
-<!--标段设置-形象进度-->
+<!--标段设置-投资进度-->
 <div class="modal fade" id="xxjd-set" data-backdrop="static">
     <div class="modal-dialog" role="document">
         <div class="modal-content">
             <div class="modal-header">
-                <h5 class="modal-title">形象进度</h5>
+                <h5 class="modal-title">投资进度</h5>
             </div>
             <div class="modal-body">
-                <div class="alert alert-warning">设置可使用「形象进度」用户</div>
+                <div class="alert alert-warning">设置可使用「投资进度」用户</div>
                 <div class="dropdown">
                     <button class="btn btn-outline-primary btn-sm dropdown-toggle" type="button" id="xxjd_dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                         添加用户
@@ -1841,7 +1964,7 @@
 <script>
     $(function () {
         const scPermission = JSON.parse(unescape('<%- escape(JSON.stringify(scPermission)) %>'));
-        // 形象进度
+        // 投资进度
         let timer = null;
         let oldSearchVal = null;
         $('body').on('input propertychange', '#xxjd_dropdownMenu .gr-search', function(e) {

+ 1 - 1
app/view/tender/tender_sub_menu.ejs

@@ -45,7 +45,7 @@
         </div>
         <% if (ctx.session.sessionProject.page_show !== null && parseInt(ctx.session.sessionProject.page_show.xxjd) === 1 && (ctx.tender.schedule_permission !== 0 || ctx.tender.isTourist)) { %>
         <div class="nav-box">
-            <h3><i class="fa fa-bar-chart "></i> 形象进度</h3>
+            <h3><i class="fa fa-bar-chart "></i> 投资进度</h3>
             <ul class="nav-list list-unstyled sub-list">
                 <li <% if (ctx.url === '/tender/' + ctx.tender.id + '/schedule' || ctx.url === '/tender/' + ctx.tender.id + '/schedule/ledger') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/schedule"><span>进度概况</span></a></li>
                 <li <% if (ctx.url === '/tender/' + ctx.tender.id + '/schedule/plan') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/schedule/plan"><span>计划进度</span></a></li>

+ 1 - 1
app/view/tender/tender_sub_mini_menu.ejs

@@ -49,7 +49,7 @@
         </div>
         <% if (ctx.session.sessionProject.page_show !== null && parseInt(ctx.session.sessionProject.page_show.xxjd) === 1 && (ctx.tender.schedule_permission !== 0|| ctx.tender.isTourist)) { %>
         <div class="nav-box">
-            <h3><i class="fa fa-bar-chart "></i> 形象进度</h3>
+            <h3><i class="fa fa-bar-chart "></i> 投资进度</h3>
             <ul class="nav-list list-unstyled sub-list">
                 <li <% if (ctx.url === '/tender/' + ctx.tender.id + '/schedule' || ctx.url === '/tender/' + ctx.tender.id + '/schedule/ledger') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/schedule"><span>进度概况</span></a></li>
                 <li <% if (ctx.url === '/tender/' + ctx.tender.id + '/schedule/plan') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/schedule/plan"><span>计划进度</span></a></li>

+ 3 - 0
sql/update.sql

@@ -6,3 +6,6 @@ CREATE TABLE `calculation`.`zh_rpt_archive_encryption` (
   PRIMARY KEY (`id`),
   INDEX `PRJ_STG` (`prj_id` ASC, `stage_id` ASC))
 COMMENT = '归档文档的需要加密签名的坐标及其他key信息(如签名角色id,签名角色名称等)';
+
+ALTER TABLE `zh_material_list` ADD `expr` VARCHAR(500) NULL DEFAULT '' COMMENT '公式' AFTER `quantity`;
+