Explorar el Código

标段概况更新

laiguoran hace 3 años
padre
commit
2e63087d78

+ 34 - 0
app/controller/tender_controller.js

@@ -22,6 +22,7 @@ const path = require('path');
 const sendToWormhole = require('stream-wormhole');
 const scheduleConst = require('../const/schedule');
 const SumLoad = require('../lib/sum_load');
+const changeConst = require('../const/change');
 
 module.exports = app => {
 
@@ -434,6 +435,35 @@ module.exports = app => {
                 const revise = await ctx.service.ledgerRevise.getLastestRevise(tender.id);
                 const tenders = await ctx.service.tender.getList('', null, 1);
                 const categoryData = await ctx.service.category.getAllCategory(ctx.session.sessionProject.id);
+
+                // 变更图表数据
+                const change_done_total = await ctx.service.change.getCountByStatus(tender.id, auditConst.filter.status.checked);
+                const change_doing_total = await ctx.service.change.getCountByStatus(tender.id, auditConst.filter.status.checking);
+                const change_uncheck_total = await ctx.service.change.getCountByStatus(tender.id, auditConst.filter.status.uncheck);
+                const change_status_total = [
+                    { num: change_uncheck_total, name: '待上报' },
+                    { num: change_doing_total, name: '审批中' },
+                    { num: change_done_total, name: '已完成' },
+                ];
+                const change_common_total = await ctx.service.change.getCountByQuality(tender.id, changeConst.quality.common.value);
+                const change_more_total = await ctx.service.change.getCountByQuality(tender.id, changeConst.quality.more.value);
+                const change_great_total = await ctx.service.change.getCountByQuality(tender.id, changeConst.quality.great.value);
+                const change_quality_total = [
+                    { num: change_common_total, name: '一般变更' },
+                    { num: change_more_total, name: '较大变更' },
+                    { num: change_great_total, name: '重大变更' },
+                ];
+                // 调差最新期数据
+                const materials = await ctx.service.material.getValidMaterials(ctx.tender.id);
+                let materialData = null;
+                if (materials && materials.length > 0) {
+                    materialData = materials[0];
+                    materialData.curAuditor = await ctx.service.materialAudit.getAuditorByStatus(materialData.id, materialData.status, materialData.times);
+                    const times = materialData.status === auditConst.material.status.checkNo ? materialData.times - 1 : materialData.times;
+                    materialData.auditors = await ctx.service.materialAudit.getAuditors(materialData.id, times);
+                }
+                // 修订完成数目
+                const reviseNum = await ctx.service.ledgerRevise.count({ tid: tender.id, status: auditConst.revise.status.checked });
                 const renderData = {
                     tenders,
                     categoryData,
@@ -447,6 +477,10 @@ module.exports = app => {
                     stages: stages.reverse(),
                     monthProgress,
                     audit: auditConst,
+                    change_status_total,
+                    change_quality_total,
+                    materialData,
+                    reviseNum,
                     jsFiles: this.app.jsFiles.common.concat(this.app.jsFiles.tender.tenderInfo),
                 };
                 if (ctx.session.sessionUser.is_admin) {

+ 2 - 2
app/extend/helper.js

@@ -961,8 +961,8 @@ module.exports = {
         return retstr.replace(/^,+/, '').replace(/\.$/, '');
     },
 
-    dateTran(time) {
-        return moment(time).format('YYYY年MM月DD日 HH:mm');
+    dateTran(time, style = 'YYYY年MM月DD日 HH:mm') {
+        return moment(time).format(style);
     },
 
     // 审批日期格式:2020-5-7 9:40:30

+ 24 - 0
app/public/css/main.css

@@ -1292,4 +1292,28 @@ overflow-y: auto;
 }
 .context-menu-icon.context-menu-hover.context-menu-icon--fa.fa-tag span{
     color: #fff;!important;
+}
+.circle-box{
+  float: left;
+  position: relative;
+}
+.circle{
+  width: 46px; 
+  height: 46px;
+  border-radius: 50%;
+  background: none; 
+  border: 3px solid #D7B014;
+}
+.circle-num{
+  position: absolute;
+  top: 4px;
+  left: 16px;
+  font-size: 24px;
+  font-weight: 500;
+}
+.circle-text{
+  float: right;
+  margin-left: 20px;
+  margin-top: 10px;
+  font-size: 16px;
 }

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 49 - 32
app/public/js/echarts/echarts.min.js


+ 10 - 0
app/service/change.js

@@ -371,6 +371,16 @@ module.exports = app => {
         }
 
         /**
+         * 获取变更令个数
+         * @param {int} tenderId - 标段id
+         * @param {int} quality - 变更性质
+         * @return {void}
+         */
+        async getCountByQuality(tenderId, quality) {
+            return await this.db.count(this.tableName, { tid: tenderId, quality });
+        }
+
+        /**
          * 上报或重新上报或保存修改功能
          * @param {int} postData - 表单提交的数据
          * @param {int} tenderId - 标段id

+ 29 - 23
app/view/report/index_sign.ejs

@@ -313,6 +313,32 @@
 
 
     const netcaSignData = JSON.parse(unescape('<%- escape(JSON.stringify(netcaSignData)) %>'));
+
+    function base64Set(value) {
+        let retSignValue = value;
+
+        //处理base填充问题,这里去掉Base64的填充内容
+        if(retSignValue!=null&&retSignValue.length>2)
+        {
+            var paddingCount=0;
+            if(retSignValue[retSignValue.length-1]=="=")
+            {
+                paddingCount++;
+            }
+
+            if(retSignValue[retSignValue.length-2]=="=")
+            {
+                paddingCount++;
+            }
+
+            if(paddingCount>0)
+            {
+                //裁剪后面的=号
+                retSignValue=retSignValue.substring(0,retSignValue.length-paddingCount);
+            }
+        }
+        return retSignValue;
+    }
     $(function () {
         // 多层modal关闭后的滚动bug修复
         $('#add-sign').on('hidden.bs.modal', function (e) {
@@ -399,7 +425,7 @@
                                     url: rptArchiveObj.currentArchivePdfPath,
                                     hashAlgo: 'SHA256',
                                     documentId: new Date().getTime(),
-                                    imageBase64: netcaSignData.sign_base64,
+                                    imageBase64: base64Set(netcaSignData.sign_base64),
                                     certContent: res.certCode,
                                 }
                                 console.log(requestJson);
@@ -442,28 +468,8 @@
                             NetcaPKI.signedDataSign(params)
                                 .Then(function (res) {
                                     _self.text('签名中,请勿关闭本页...');
-                                    let retSignValue = res.signValue;
-
-                                    //处理base填充问题,这里去掉Base64的填充内容
-                                    if(retSignValue!=null&&retSignValue.length>2)
-                                    {
-                                        var paddingCount=0;
-                                        if(retSignValue[retSignValue.length-1]=="=")
-                                        {
-                                            paddingCount++;
-                                        }
-
-                                        if(retSignValue[retSignValue.length-2]=="=")
-                                        {
-                                            paddingCount++;
-                                        }
-
-                                        if(paddingCount>0)
-                                        {
-                                            //裁剪后面的=号
-                                            retSignValue=retSignValue.substring(0,retSignValue.length-paddingCount);
-                                        }
-                                    }
+                                    // let retSignValue = res.signValue;
+                                    const retSignValue = base64Set(res.signValue);
                                     if(res.result==-5||res.result==-81)
                                     {
                                         toastr.error("密码错误,密码重试次数为:"+res.retrynum);

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 501 - 77
app/view/tender/detail.ejs


+ 16 - 1
app/view/tender/detail_modal.ejs

@@ -810,7 +810,22 @@
         </div>
     </div>
 </div>
-
+<div class="modal fade" id="sp-list" data-backdrop="static">
+    <div class="modal-dialog" role="document">
+        <div class="modal-content">
+            <div class="modal-header bg-dark text-white border-secondary">
+                <h5 class="modal-title">审批进度详情</h5>
+            </div>
+            <div class="modal-body bg-dark text-white">
+                <div class="modal-height-500" style="overflow: auto" id="audit-list">
+                </div>
+            </div>
+            <div class="modal-footer bg-dark text-white border-secondary">
+                <button type="button" class="btn btn-secondary btn-sm" data-dismiss="modal">关闭</button>
+            </div>
+        </div>
+    </div>
+</div>
 <script>
     let property = JSON.parse(unescape('<%- escape(JSON.stringify(tenderInfo)) %>'));
     let ledgerChecked = <%- (tender.ledger_status === audit.ledger.status.checked) && ((lastStage !== undefined && lastStage !== null) || !revise || !revise.valid || revise.status === audit.revise.status.checked) %>;