Kaynağa Gözat

修订审批

laiguoran 4 yıl önce
ebeveyn
işleme
5edf0836fa

+ 9 - 3
app/controller/revise_controller.js

@@ -18,6 +18,7 @@ const accountGroup = require('../const/account_group').group;
 const tenderMenu = require('../../config/menu').tenderMenu;
 const measureType = require('../const/tender').measureType;
 const spreadConst = require('../const/spread');
+const shenpiConst = require('../const/shenpi');
 const fs = require('fs');
 const LzString = require('lz-string');
 
@@ -260,9 +261,11 @@ module.exports = app => {
             const [stdBills, stdChapters] = await this.ctx.service.valuation.getValuationStdList(
                 ctx.tender.data.valuation, ctx.tender.data.measure_type);
             const curAuditor = await ctx.service.reviseAudit.getCurAuditor(revise.id, revise.times);
-            const auditors = await ctx.service.reviseAudit.getAuditorsWithOwner(revise.id, revise.times);
             const user = await ctx.service.projectAccount.getAccountInfoById(revise.uid);
             const times = revise.status === audit.revise.status.checkNo ? revise.times - 1 : revise.times;
+            const auditors = revise.status === audit.revise.status.checkNo && revise.uid === ctx.session.sessionUser.accountId ?
+                await ctx.service.reviseAudit.getAuditorsWithOwner(revise.id, revise.times) :
+                await ctx.service.reviseAudit.getAuditorsWithOwner(revise.id, times);
             const auditHistory = [];
             if (times >= 1) {
                 for (let i = 1; i <= times; i++) {
@@ -283,6 +286,7 @@ module.exports = app => {
                 auditors,
                 user,
                 auditHistory,
+                shenpiConst,
             };
         }
 
@@ -799,10 +803,11 @@ module.exports = app => {
                 const exist = await ctx.service.reviseAudit.getAuditor(revise.id, id, revise.times);
                 if (exist) throw '该审核人已存在,请勿重复添加';
 
-                const result = await ctx.service.reviseAudit.addAuditor(revise, id);
+                const is_gdzs = ctx.tender.info.shenpi.revise === shenpiConst.sp_status.gdzs ? 1 : 0;
+                const result = await ctx.service.reviseAudit.addAuditor(revise, id, is_gdzs);
                 if (!result) throw '添加审核人失败';
 
-                const resultData = await ctx.service.reviseAudit.getAuditor(revise.id, id, revise.times);
+                const resultData = await ctx.service.reviseAudit.getAuditorsWithOwner(revise.id, revise.times);
                 ctx.body = { err: 0, msg: '', data: resultData };
             } catch (err) {
                 this.log(err, '数据错误');
@@ -858,6 +863,7 @@ module.exports = app => {
                 ctx.body = { err: 0, msg: '', data: {} };
             } catch (err) {
                 this.log(err);
+                ctx.session.postError = err.toString();
                 ctx.body = this.ajaxErrorBody(err, '上报失败');
             }
         }

+ 70 - 0
app/middleware/revise_audit_check.js

@@ -0,0 +1,70 @@
+'use strict';
+
+/**
+ *
+ *
+ * @author Ellisran
+ * @date 2020/10/15
+ * @version
+ */
+
+const status = require('../const/audit').revise.status;
+const shenpiConst = require('../const/shenpi');
+const _ = require('lodash');
+
+module.exports = options => {
+    /**
+     * 标段校验 中间件
+     * 1. 读取标段数据(包括属性)
+     * 2. 检验用户是否可见标段(不校验具体权限)
+     *
+     * @param {function} next - 中间件继续执行的方法
+     * @return {void}
+     */
+    return function* reviseAuditCheck(next) {
+        try {
+            // 获取revise
+            const revise = yield this.service.ledgerRevise.getLastestRevise(this.tender.id);
+            if (!revise) throw '台账修订数据有误';
+            if ((revise.status === status.uncheck || revise.status === status.checkNo) && this.tender.info.shenpi.revise !== shenpiConst.sp_status.sqspr) {
+                const shenpi_status = this.tender.info.shenpi.revise;
+                // 进一步比较审批流是否与审批流程设置的相同,不同则替换为固定审批流或固定的终审
+                const auditList = yield this.service.reviseAudit.getAllDataByCondition({ where: { tender_id: this.tender.id, times: revise.times } });
+                const auditIdList = _.map(auditList, 'audit_id');
+                if (shenpi_status === shenpiConst.sp_status.gdspl) {
+                    const shenpiList = yield this.service.shenpiAudit.getAllDataByCondition({ where: { tid: this.tender.id, sp_type: shenpiConst.sp_type.revise, sp_status: shenpi_status } });
+                    const shenpiIdList = _.map(shenpiList, 'audit_id');
+                    // 判断2个id数组是否相同,不同则删除原审批流,切换成固定的审批流
+                    if (!_.isEqual(auditIdList, shenpiIdList)) {
+                        yield this.service.reviseAudit.updateNewAuditList(revise, shenpiIdList);
+                    }
+                } else if (shenpi_status === shenpiConst.sp_status.gdzs) {
+                    const shenpiInfo = yield this.service.shenpiAudit.getDataByCondition({ tid: this.tender.id, sp_type: shenpiConst.sp_type.revise, sp_status: shenpi_status });
+                    // 判断最后一个id是否与固定终审id相同,不同则删除原审批流中如果存在的id和添加终审
+                    if (shenpiInfo && shenpiInfo.audit_id !== _.last(auditIdList)) {
+                        yield this.service.reviseAudit.updateLastAudit(revise, auditList, shenpiInfo.audit_id);
+                    } else if (!shenpiInfo) {
+                        // 不存在终审人的状态下这里恢复为授权审批人
+                        this.tender.info.shenpi.revise = shenpiConst.sp_status.sqspr;
+                    }
+                }
+            }
+            yield next;
+        } catch (err) {
+            console.log(err);
+            // 输出错误到日志
+            if (err.stack) {
+                this.logger.error(err);
+            } else {
+                this.getLogger('fail').info(JSON.stringify({
+                    error: err,
+                    project: this.session.sessionProject,
+                    user: this.session.sessionUser,
+                    body: this.session.body,
+                }));
+            }
+            // 重定向值标段管理
+            this.redirect(this.request.headers.referer);
+        }
+    };
+};

+ 2 - 2
app/public/js/material_audit.js

@@ -185,9 +185,9 @@ $(document).ready(function () {
 function checkAuditorFrom () {
     if ($('#auditors li').length === 0) {
         if(shenpi_status === shenpiConst.sp_status.gdspl) {
-            toastr.err('请联系管理员添加审批人');
+            toastr.error('请联系管理员添加审批人');
         } else {
-            toastr.err('请先选择审批人,再上报数据');
+            toastr.error('请先选择审批人,再上报数据');
         }
         return false;
     }

+ 5 - 4
app/router.js

@@ -10,6 +10,7 @@ module.exports = app => {
     // 标段读取中间件
     const tenderCheck = app.middlewares.tenderCheck();
     const ledgerAuditCheck = app.middlewares.ledgerAuditCheck();
+    const reviseAuditCheck = app.middlewares.reviseAuditCheck();
     const uncheckTenderCheck = app.middlewares.uncheckTenderCheck();
     // 期读取中间件
     const stageCheck = app.middlewares.stageCheck();
@@ -141,13 +142,13 @@ module.exports = app => {
     app.post('/tender/:id/pos/update', sessionAuth, tenderCheck, uncheckTenderCheck, 'ledgerController.posUpdate');
     app.post('/tender/:id/pos/paste', sessionAuth, tenderCheck, uncheckTenderCheck, 'ledgerController.posPaste');
     app.post('/tender/:id/ledger/deal2sgfh', sessionAuth, tenderCheck, uncheckTenderCheck, 'ledgerController.deal2sgfh');
-    app.post('/tender/:id/ledger/check', sessionAuth, tenderCheck, uncheckTenderCheck, ledgerAuditCheck, 'ledgerController.check');
+    app.post('/tender/:id/ledger/check', sessionAuth, tenderCheck, uncheckTenderCheck, 'ledgerController.check');
 
     // 台账审批相关
     app.get('/tender/:id/ledger/audit', sessionAuth, tenderCheck, uncheckTenderCheck, 'ledgerAuditController.index');
     app.post('/tender/:id/ledger/audit/add', sessionAuth, tenderCheck, uncheckTenderCheck, 'ledgerAuditController.add');
     app.post('/tender/:id/ledger/audit/delete', sessionAuth, tenderCheck, uncheckTenderCheck, 'ledgerAuditController.remove');
-    app.post('/tender/:id/ledger/audit/start', sessionAuth, tenderCheck, uncheckTenderCheck, 'ledgerAuditController.start');
+    app.post('/tender/:id/ledger/audit/start', sessionAuth, tenderCheck, uncheckTenderCheck, ledgerAuditCheck, 'ledgerAuditController.start');
     app.post('/tender/:id/ledger/audit/check', sessionAuth, tenderCheck, uncheckTenderCheck, 'ledgerAuditController.check');
 
     // 部位台账
@@ -166,7 +167,7 @@ module.exports = app => {
     // app.post('/tender/:id/revise/deal2sgfh', sessionAuth, tenderCheck, uncheckTenderCheck, 'reviseController.deal2sgfh');
 
     // 台账修订页面
-    app.get('/tender/:id/revise/info', sessionAuth, tenderCheck, uncheckTenderCheck, 'reviseController.info');
+    app.get('/tender/:id/revise/info', sessionAuth, tenderCheck, uncheckTenderCheck, reviseAuditCheck, 'reviseController.info');
     app.post('/tender/:id/revise/auditors', sessionAuth, tenderCheck, uncheckTenderCheck, 'reviseController.reviseAuditors');
     app.post('/tender/:id/revise/info/load', sessionAuth, tenderCheck, uncheckTenderCheck, 'reviseController.loadInfoData');
     app.post('/tender/:id/revise/info/update', sessionAuth, tenderCheck, uncheckTenderCheck, 'reviseController.update');
@@ -181,7 +182,7 @@ module.exports = app => {
     // 修订审批
     app.post('/tender/:id/revise/audit/add', sessionAuth, tenderCheck, uncheckTenderCheck, 'reviseController.addAuditor');
     app.post('/tender/:id/revise/audit/remove', sessionAuth, tenderCheck, uncheckTenderCheck, 'reviseController.removeAuditor');
-    app.post('/tender/:id/revise/audit/start', sessionAuth, tenderCheck, uncheckTenderCheck, 'reviseController.start');
+    app.post('/tender/:id/revise/audit/start', sessionAuth, tenderCheck, uncheckTenderCheck, reviseAuditCheck, 'reviseController.start');
     app.post('/tender/:id/revise/audit/check', sessionAuth, tenderCheck, uncheckTenderCheck, 'reviseController.check');
 
     // 签约清单

+ 86 - 17
app/service/revise_audit.js

@@ -12,6 +12,7 @@ const auditConst = require('../const/audit').revise;
 const smsTypeConst = require('../const/sms_type');
 const SmsAliConst = require('../const/sms_alitemplate');
 const wxConst = require('../const/wechat_template');
+const shenpiConst = require('../const/shenpi');
 const pushType = require('../const/audit').pushType;
 
 module.exports = app => {
@@ -129,20 +130,31 @@ module.exports = app => {
          * @param {Number} times - 第几次审批
          * @return {Promise<number>}
          */
-        async addAuditor(revise, auditorId) {
-            const times = revise.times ? revise.times : 1;
-            const newOrder = await this.getNewOrder(revise.id, times);
-            const data = {
-                tender_id: revise.tid,
-                audit_id: auditorId,
-                times,
-                audit_order: newOrder,
-                status: auditConst.status.uncheck,
-                rid: revise.id,
-                in_time: new Date(),
-            };
-            const result = await this.db.insert(this.tableName, data);
-            return (result.effectRows = 1);
+        async addAuditor(revise, auditorId, is_gdzs = 0) {
+            const transaction = await this.db.beginTransaction();
+            try {
+                const times = revise.times ? revise.times : 1;
+                let newOrder = await this.getNewOrder(revise.id, times);
+                // 判断是否存在固定终审,存在则newOrder - 1并使终审order+1
+                newOrder = is_gdzs === 1 ? newOrder - 1 : newOrder;
+                if (is_gdzs) await this._syncOrderByDelete(transaction, revise.id, newOrder, times, '+');
+                const data = {
+                    tender_id: revise.tid,
+                    audit_id: auditorId,
+                    times,
+                    audit_order: newOrder,
+                    status: auditConst.status.uncheck,
+                    rid: revise.id,
+                    in_time: new Date(),
+                };
+                const result = await transaction.insert(this.tableName, data);
+                await transaction.commit();
+                return (result.effectRows = 1);
+            } catch (err) {
+                await transaction.rollback();
+                throw err;
+            }
+            return false;
         }
 
         /**
@@ -154,7 +166,7 @@ module.exports = app => {
          * @return {Promise<*>}
          * @private
          */
-        async _syncOrderByDelete(transaction, reviseId, order, times) {
+        async _syncOrderByDelete(transaction, reviseId, order, times, selfOperate = '-') {
             this.initSqlBuilder();
             this.sqlBuilder.setAndWhere('rid', {
                 value: this.db.escape(reviseId),
@@ -170,7 +182,7 @@ module.exports = app => {
             });
             this.sqlBuilder.setUpdateData('audit_order', {
                 value: 1,
-                selfOperate: '-',
+                selfOperate: selfOperate,
             });
             const [sql, sqlParam] = this.sqlBuilder.build(this.tableName, 'update');
             const data = await transaction.query(sql, sqlParam);
@@ -214,7 +226,13 @@ module.exports = app => {
          */
         async start(revise, times = 1) {
             const audit = await this.getDataByCondition({ rid: revise.id, times, audit_order: 1 });
-            if (!audit) throw '审核人信息错误';
+            if (!audit) {
+                if(this.ctx.tender.info.shenpi.revise === shenpiConst.sp_status.gdspl) {
+                    throw '请联系管理员添加审批人';
+                } else {
+                    throw '请先选择审批人,再上报数据';
+                }
+            }
             const time = new Date();
 
             // 拷贝备份台账数据
@@ -683,6 +701,57 @@ module.exports = app => {
             const sqlParam = [tenderId];
             return this.db.query(sql, sqlParam);
         }
+
+        async updateNewAuditList(revise, newIdList) {
+            const transaction = await this.db.beginTransaction();
+            try {
+                // 先删除旧的审批流,再添加新的
+                transaction.delete(this.tableName, { rid: revise.id, times: revise.times });
+                const newAuditors = [];
+                let order = 1;
+                for (const aid of newIdList) {
+                    newAuditors.push({
+                        tender_id: revise.tid, audit_id: aid,
+                        times: revise.times, audit_order: order, status: auditConst.status.uncheck,
+                        rid: revise.id,in_time: new Date(),
+                    });
+                    order++;
+                }
+                if(newAuditors.length > 0) await transaction.insert(this.tableName, newAuditors);
+                await transaction.commit();
+            } catch (err) {
+                await transaction.rollback();
+                throw err;
+            }
+        }
+
+        async updateLastAudit(revise, auditList, lastId) {
+            const transaction = await this.db.beginTransaction();
+            try {
+                // 先判断auditList里的aid是否与lastId相同,相同则删除并重新更新order
+                const idList = this._.map(auditList, 'audit_id');
+                let order = idList.length + 1;
+                if (idList.indexOf(lastId) !== -1) {
+                    transaction.delete(this.tableName, { rid: revise.id, times: revise.times, audit_id: lastId });
+                    const audit = this._.find(auditList, { 'audit_id': lastId });
+                    // 顺移之后审核人流程顺序
+                    await this._syncOrderByDelete(transaction, revise.id, audit.audit_order, revise.times);
+                    order = order - 1;
+                }
+
+                // 添加终审
+                const newAuditor = {
+                    tender_id: revise.tid, audit_id: lastId,
+                    times: revise.times, audit_order: order, status: auditConst.status.uncheck,
+                    rid: revise.id, in_time: new Date(),
+                };
+                await transaction.insert(this.tableName, newAuditor);
+                await transaction.commit();
+            } catch (err) {
+                await transaction.rollback();
+                throw err;
+            }
+        }
     }
 
     return ReviseAudit;

+ 45 - 46
app/view/revise/info_modal.ejs

@@ -45,6 +45,7 @@
             </div>
             <div class="modal-body">
                 <div class="dropdown text-right">
+                    <% if (ctx.tender.info.shenpi.revise !== shenpiConst.sp_status.gdspl) { %>
                     <button class="btn btn-outline-primary btn-sm dropdown-toggle" type="button" id="dropdownMenuButton"
                         data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                         添加审批流程
@@ -69,6 +70,7 @@
                             <% }) %>
                         </dl>
                     </div>
+                    <% } %>
                 </div>
                 <div class="card mt-3">
                     <div class="card-header">
@@ -78,8 +80,11 @@
                         <ul class="list-group list-group-flush" id="auditors">
                             <% for (let i = 0, iLen = auditorList.length; i < iLen; i++) { %>
                             <li class="list-group-item" auditorId="<%- auditorList[i].audit_id %>">
+                                <% if (ctx.tender.info.shenpi.revise === shenpiConst.sp_status.sqspr ||
+                                        (ctx.tender.info.shenpi.revise === shenpiConst.sp_status.gdzs && i+1 !== iLen)) { %>
                                 <a href="javascript: void(0)" class="text-danger pull-right">移除</a>
-                                <%- auditorList[i].audit_order %> <%- auditorList[i].name %>
+                                <% } %>
+                                <span><%- auditorList[i].audit_order %> <%- auditorList[i].name %></span>
                                 <small class="text-muted"><%- auditorList[i].role %></small>
                             </li>
                             <% } %>
@@ -97,7 +102,7 @@
     </div>
 </div>
 <% } %>
-<% if (revise.status === auditConst.status.checking || revise.status === auditConst.status.checkNoPre) { %>
+<% if (revise.status === auditConst.status.checking) { %>
 <% if (curAuditor && curAuditor.audit_id === ctx.session.sessionUser.accountId) { %>
 <<!--审批通过-->
     <div class="modal fade sp-location-list" id="sp-done" data-backdrop="static">
@@ -542,7 +547,7 @@
                                 id="hideSp">修改审批流程</a>
                             <% } %>
                             <div class="card mt-3">
-                                <ul class="list-group list-group-flush">
+                                <ul class="list-group list-group-flush" id="auditors-list">
                                     <% auditors.forEach((item, idx) => { %>
                                     <% if (idx === 0) { %>
                                     <li class="list-group-item" data-auditorId="<%- item.audit_id %>">
@@ -721,6 +726,8 @@
         const cur_uid = '<%- ctx.session.sessionUser.accountId %>';
         const accountList = JSON.parse('<%- JSON.stringify(accountList) %>');
         const accountGroup = JSON.parse('<%- JSON.stringify(accountGroup ) %>');
+        const shenpi_status = <%- ctx.tender.info.shenpi.revise %>;
+        const shenpiConst = JSON.parse('<%- JSON.stringify(shenpiConst) %>');
         let timer = null;
         let oldSearchVal = null;
 
@@ -768,44 +775,32 @@
         $('dl').on('click', 'dd', function () {
             const auditorId = parseInt($(this).data('id'))
             if (auditorId) {
-                postData('/tender/<%- ctx.tender.id %>/revise/audit/add', { auditorId }, (data) => {
+                postData('/tender/<%- ctx.tender.id %>/revise/audit/add', { auditorId }, (datas) => {
                     const html = [];
-                    html.push('<li class="list-group-item" auditorId="' + data.audit_id + '"><a href="javascript: void(0)" class="text-danger pull-right">移除</a>');
-                    html.push('<span>');
-                    html.push(data.audit_order + ' ');
-                    html.push(data.name + ' ');
-                    html.push('</span>');
-                    html.push('<small class="text-muted">');
-                    html.push(data.role);
-                    html.push('</small></li>');
-                    $('#auditors').append(html.join(''));
-
                     // 如果是重新上报,添加到重新上报列表中
                     const auditorshtml = [];
-                    // 重新上报时。令其它的审批人流程图标转换
-                    $('#auditors-list li i').removeClass('fa-stop-circle').addClass('fa-chevron-circle-down');
-                    for (let i = 0; i < $('#auditors-list li').length; i++) {
-                        $('#auditors-list li').eq(i).find('.pull-right').text(transFormToChinese(i + 1) + '审');
-                        $('#auditors-list2 li').eq(i).find('.pull-right').text(transFormToChinese(i + 1) + '审');
+                    for (const [index,data] of datas.entries()) {
+                        if (index !== 0) {
+                            html.push('<li class="list-group-item" auditorId="' + data.audit_id + '">');
+                            if (shenpi_status === shenpiConst.sp_status.sqspr || (shenpi_status === shenpiConst.sp_status.gdzs && index+1 !== datas.length)) {
+                                html.push('<a href="javascript: void(0)" class="text-danger pull-right">移除</a>');
+                            }
+                            html.push('<span>');
+                            html.push(data.audit_order + ' ');
+                            html.push(data.name + ' ');
+                            html.push('</span>');
+                            html.push('<small class="text-muted">');
+                            html.push(data.role);
+                            html.push('</small></li>');
+                        }
+                        auditorshtml.push('<li class="list-group-item" data-auditid="' + data.audit_id + '">');
+                        auditorshtml.push('<i class="fa fa-stop-circle"></i> ');
+                        auditorshtml.push(data.name + ' <small class="text-muted">' + data.role + '</small>');
+                        auditorshtml.push('<span class="pull-right">终审</span>');
+                        auditorshtml.push('</li>');
                     }
-                    // 添加新审批人
-                    auditorshtml.push('<li class="list-group-item" data-auditid="' + data.audit_id + '">');
-                    auditorshtml.push('<i class="fa fa-stop-circle"></i> ');
-                    auditorshtml.push(data.name + ' <small class="text-muted">' + data.role + '</small>');
-                    auditorshtml.push('<span class="pull-right">终审</span>');
-                    auditorshtml.push('</li>');
-                    $('#auditors-list').append(auditorshtml.join(''));
-
-                    const auditorshtml2 = [];
-                    // 重新上报时。令其它的审批人流程图标转换
-                    $('#auditors-list2 li i').removeClass('fa-stop-circle').addClass('fa-chevron-circle-down');
-                    // 添加新审批人
-                    auditorshtml2.push('<li class="list-group-item" data-auditid="' + data.audit_id + '">');
-                    auditorshtml2.push('<h5 class="card-title"><i class="fa fa-stop-circle"></i> ');
-                    auditorshtml2.push(data.name + ' <small class="text-muted">' + data.role + '</small>');
-                    auditorshtml2.push('<span class="pull-right">终审</span>');
-                    auditorshtml2.push('</h5></li>');
-                    $('#auditors-list2').append(auditorshtml2.join(''));
+                    $('#auditors').html(html.join(''));
+                    $('#auditors-list').html(auditorshtml.join(''));
                 });
             }
         });
@@ -824,19 +819,19 @@
 
                 // 如果是重新上报
                 // 令最后一个图标转换
-                $('#auditors-list li[data-auditid="' + data.auditorId + '"]').remove();
+                $('#auditors-list li[data-auditorid="' + data.auditorId + '"]').remove();
                 if ($('#auditors-list li').length !== 0 && !$('#auditors-list li i').hasClass('fa-stop-circle')) {
                     $('#auditors-list li').eq($('#auditors-list li').length - 1).children('i')
                         .removeClass('fa-chevron-circle-down').addClass('fa-stop-circle');
                 }
-                $('#auditors-list2 li[data-auditid="' + data.auditorId + '"]').remove();
-                if ($('#auditors-list2 li').length !== 0 && !$('#auditors-list2 li i').hasClass('fa-stop-circle')) {
-                    $('#auditors-list2 li').eq($('#auditors-list2 li').length - 1).children('i')
-                        .removeClass('fa-chevron-circle-down').addClass('fa-stop-circle');
-                }
+                // $('#auditors-list2 li[data-auditid="' + data.auditorId + '"]').remove();
+                // if ($('#auditors-list2 li').length !== 0 && !$('#auditors-list2 li i').hasClass('fa-stop-circle')) {
+                //     $('#auditors-list2 li').eq($('#auditors-list2 li').length - 1).children('i')
+                //         .removeClass('fa-chevron-circle-down').addClass('fa-stop-circle');
+                // }
                 for (let i = 0; i < $('#auditors-list li').length; i++) {
-                    $('#auditors-list li').eq(i).find('.pull-right').text((i + 1 === $('#auditors-list li').length ? '终' : transFormToChinese(i + 1)) + '审');
-                    $('#auditors-list2 li').eq(i).find('.pull-right').text((i + 1 === $('#auditors-list2 li').length ? '终' : transFormToChinese(i + 1)) + '审');
+                    $('#auditors-list li').eq(i).find('.pull-right').text(i === 0 ? '原报' : (i+1 === $('#auditors-list li').length ? '终' : transFormToChinese(i+1)) + '审');
+                    // $('#auditors-list2 li').eq(i).find('.pull-right').text((i + 1 === $('#auditors-list2 li').length ? '终' : transFormToChinese(i + 1)) + '审');
                 }
             });
         });
@@ -893,7 +888,11 @@
                 return false;
             }
             if ($('#auditors li').length === 0) {
-                toastr.error('请先选择审批人,再上报数据');
+                if(shenpi_status === shenpiConst.sp_status.gdspl) {
+                    toastr.error('请联系管理员添加审批人');
+                } else {
+                    toastr.error('请先选择审批人,再上报数据');
+                }
                 return false;
             }
             $('#hide-all').show();