فهرست منبع

1. 单位调整
2. 待办事项,变更令提示调整
3. 标段概况,标段进度提示

MaiXinRong 6 سال پیش
والد
کامیت
55b1d192b9

+ 15 - 1
app/const/audit.js

@@ -27,7 +27,21 @@ const ledger = (function () {
     statusClass[status.checking] = '';
     statusClass[status.checked] = 'text-success';
     statusClass[status.checkNo] = 'text-warning';
-    return { status, statusString, statusClass }
+
+    // 标段概况页
+    // 描述文本
+    const auditString = [];
+    auditString[status.uncheck] = '';
+    auditString[status.checking] = '审批中';
+    auditString[status.checked] = '审批完成';
+    auditString[status.checkNo] = '审批退回';
+    // 文字样式
+    const auditStringClass = [];
+    auditStringClass[status.uncheck] = '';
+    auditStringClass[status.checking] = 'text-warning';
+    auditStringClass[status.checked] = 'text-success';
+    auditStringClass[status.checkNo] = 'text-warning';
+    return { status, statusString, statusClass, auditString, auditStringClass }
 })();
 
 // 期审批流程

+ 3 - 0
app/controller/tender_controller.js

@@ -175,12 +175,15 @@ module.exports = app => {
          */
         async tenderInfo(ctx) {
             try {
+                const lastStage = await ctx.service.stage.getLastestStage(ctx.tender.id);
                 const renderData = {
                     tender: ctx.tender.data,
                     tenderInfo: ctx.tender.info,
                     tenderMenu: this.menu.tenderMenu,
                     preUrl: '/tender/' + ctx.tender.id,
                     cooperation: ctx.session.sessionUser.cooperation,
+                    lastStage,
+                    audit: auditConst,
                 };
                 await this.layout('tender/detail.ejs', renderData);
             } catch (error) {

+ 1 - 1
app/public/js/spreadjs_rela/spreadjs_zh.js

@@ -1368,7 +1368,7 @@ const SpreadJsObj = {
          */
         getUnitCellType: function () {
             let combo = this.getActiveComboCellType();
-            combo.itemHeight(10).items(['m', 'km', 'm2', 'm3', 'kg', 't', 'à·km', '总额', '月', '项', '处', '个', '根',
+            combo.itemHeight(10).items(['m', 'km', 'm2', 'm3', 'kg', 't', 'm3·km', '总额', '月', '项', '处', '个', '根',
                 '棵', '块', '每一试桩', '桥长米', '公路公里', '株', '组', '座', '元', '工日', '套', '台班', '艘班', 'm/处',
                 'm/道', 'm/座', 'm2/m', 'm3/m', 'm3/处', '根/米', '亩', 'm3/m2', 'dm3']);
             return combo;

+ 18 - 4
app/service/change_audit.js

@@ -253,13 +253,27 @@ module.exports = app => {
          */
         async getAuditChange(uid) {
             const sql = 'SELECT ca.`uid`, ca.`times`, ca.`usite`, ca.`usort`, ca.`tid`, ca.`cid`, ca.`sin_time`, ' +
-                '    c.`code` As `ccode`, c.`name` As `cname`,' +
+                '    c.`code` As `ccode`, c.`name` As `cname`, c.`status` As `cstatus`, ' +
                 '    t.`name`, t.`type`, t.`user_id` ' +
                 '  FROM ?? AS ca, ?? AS c, ?? As t ' +
-                '  WHERE ca.`uid` = ? and ca.`status` = ? and ca.`status` = c.`status`' +
+                '  WHERE ca.`uid` = ? and ca.`status` = ? and c.`status` != ?' +
                 '    and ca.`cid` = c.`cid` and ca.`tid` = t.`id`';
-            const sqlParam = [this.tableName, this.ctx.service.change.tableName, this.ctx.service.tender.tableName, uid, 2];
-            return await this.db.query(sql, sqlParam);
+            const sqlParam = [this.tableName, this.ctx.service.change.tableName, this.ctx.service.tender.tableName, uid, 2, audit.flow.status.uncheck];
+            const changes = await this.db.query(sql, sqlParam);
+            for (const c of changes) {
+                if (c.cstatus === audit.flow.status.back) {
+                    const preSql = 'SELECT pa.`id`, pa.`account`, pa.`account_group`, pa.`name`, pa.`company`, pa.`role`, pa.`telephone` FROM ?? As ca, ?? As pa ' +
+                        '  WHERE ca.cid = ? and ca.times = ? and ca.status = ? and ca.uid = pa.id';
+                    const preSqlParam = [this.tableName, this.ctx.service.projectAccount.tableName, c.cid, c.times - 1, c.cstatus];
+                    c.pre = await this.db.queryOne(preSql, preSqlParam);
+                } else {
+                    const preSql = 'SELECT pa.`id`, pa.`account`, pa.`account_group`, pa.`name`, pa.`company`, pa.`role`, pa.`telephone` FROM ?? As ca, ?? As pa ' +
+                        '  WHERE ca.cid = ? and ca.times = ? and ca.usort = ? and ca.uid = pa.id';
+                    const preSqlParam = [this.tableName, this.ctx.service.projectAccount.tableName, c.cid, c.times, c.usort - 1];
+                    c.pre = await this.db.queryOne(preSql, preSqlParam);
+                }
+            }
+            return changes;
         }
     }
 

+ 20 - 0
app/service/stage.js

@@ -24,6 +24,22 @@ module.exports = app => {
             this.tableName = 'stage';
         }
 
+        async getLastestStage(tenderId) {
+            this.initSqlBuilder();
+            this.sqlBuilder.setAndWhere('tid', {
+                value: tenderId,
+                operate: '=',
+            });
+            this.sqlBuilder.setAndWhere('status', {
+                value: auditConst.status.uncheck,
+                operate: '!=',
+            });
+            this.sqlBuilder.orderBy = [['order', 'desc']];
+            const [sql, sqlParam] = this.sqlBuilder.build(this.tableName);
+            const stage = await this.db.queryOne(sql, sqlParam);
+            return stage;
+        }
+
         /**
          * 获取标段下的全部计量期,按倒序
          * @param tenderId
@@ -128,6 +144,10 @@ module.exports = app => {
             }
         }
 
+        /**
+         * 获取 当期的 计算基数
+         * @returns {Promise<any>}
+         */
         async getStagePayCalcBase() {
             const calcBase = JSON.parse(JSON.stringify(payConst.calcBase));
             const param = this.ctx.tender.info.deal_param;

+ 11 - 3
app/view/dashboard/index.ejs

@@ -38,14 +38,22 @@
                     <img class="mr-3" src="public/images/avatar.png">
                     <div class="media-body">
                         <span class="pull-right text-muted"><%- (change.sin_time ? change.sin_time.toLocaleString() : '') %></span>
-                        <h5 class="mt-0"><%- ctx.session.sessionUser.name %><small class="ml-3 text-muted"><%- change.role %></small></h5>
+                        <h5 class="mt-0"><%- change.pre.name %><small class="ml-3 text-muted"><%- change.pre.role %></small></h5>
                         <p>
                             <a href="/tender/<%- change.tid %>"><%- change.name %></a>
                             变更令 <%- change.ccode %>
-                            <% if (change.sstatus === acChange.status.backnew) { %><span style="color: indianred">被退回</span> <% } %>
+                            <% if (change.cstatus === acChange.status.backnew || change.cstatus === acChange.status.back) { %>
+                            <span style="color: indianred">被退回</span>
+                            <% } %>
                             需要您
                             <a href="/tender/<%- change.tid %>/change/<%- change.cid %>/info">
-                                <% if (change.sstatus === acChange.status.backnew) { %>重新<% } %>审批
+                                <% if (change.status === acChange.status.checking) { %>
+                                审批
+                                <% } else if (change.sstatus === acChange.status.backnew && ctx.session.sessionUser.accountId !== change.cuid) { %>
+                                重新审批
+                                <% } else { %>
+                                重新上报
+                                <% } %>
                             </a>。
                         </p>
                     </div>

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

@@ -2,7 +2,15 @@
 <div class="panel-content">
     <div class="panel-title">
         <div class="title-main  d-flex justify-content-between">
-            <h2>进行至 第7期<small class="text-warning">(审批中)</small></h2>
+            <% if (tender.ledger_status !== audit.ledger.status.uncheck) { %>
+            <h2>进行至
+                <% if (lastStage) { %>
+                第<%- lastStage.order %>期<small class="<%- audit.stage.auditStringClass[stage.status] %>">(<%- audit.stage.auditString[stage.status] %>)</small>
+                <% } else { %>
+                台账<small class="<%- audit.ledger.auditStringClass[tender.ledger_status] %>">(<%- audit.ledger.auditString[tender.ledger_status] %>)</small>
+                <% } %>
+            </h2>
+            <% } %>
             <% if (cooperation) { %>
             <div>
                 <a href="/tender/<%= tender.id %>/cooperation" class="btn btn-sm btn-light" ><i class="fa fa-users"></i> 协作办公</a>