浏览代码

变更令重新审批功能修正

ellisran 1 年之前
父节点
当前提交
d6513754c5
共有 4 个文件被更改,包括 118 次插入139 次删除
  1. 0 27
      app/controller/change_controller.js
  2. 36 30
      app/service/change.js
  3. 2 6
      app/view/change/information.ejs
  4. 80 76
      app/view/change/information_modal.ejs

+ 0 - 27
app/controller/change_controller.js

@@ -1540,13 +1540,6 @@ module.exports = app => {
                         throw '验证码不正确!';
                     }
                 }
-
-                // 获取是否已存在调用变更令
-                const changeUsedData = await ctx.service.stageChange.getFinalUsedData(ctx.tender.id, changeData.cid);
-                const stageChangeNum = this.ctx.helper.sum(changeUsedData.map(x => { return Math.abs(x.qty); }));
-                if (stageChangeNum !== 0) {
-                    throw '该变更令已被调用,无法重新审批';
-                }
                 // 重新审批
                 const result = await ctx.service.change.checkAgain(changeData.cid);
                 if (!result) {
@@ -2687,12 +2680,6 @@ module.exports = app => {
                     }
                 }
 
-                // 获取是否已存在调用变更令
-                // const changeUsedData = await ctx.service.stageChange.getFinalUsedData(ctx.tender.id, changeData.cid);
-                // const stageChangeNum = this.ctx.helper.sum(changeUsedData.map(x => { return Math.abs(x.qty); }));
-                // if (stageChangeNum !== 0) {
-                //     throw '该变更令已被调用,无法重新审批';
-                // }
                 // 重新审批
                 const result = await ctx.service.changeProjectAudit.checkRevise(ctx.change);
                 if (!result) {
@@ -3413,13 +3400,6 @@ module.exports = app => {
                         throw '验证码不正确!';
                     }
                 }
-
-                // 获取是否已存在调用变更令
-                // const changeUsedData = await ctx.service.stageChange.getFinalUsedData(ctx.tender.id, changeData.cid);
-                // const stageChangeNum = this.ctx.helper.sum(changeUsedData.map(x => { return Math.abs(x.qty); }));
-                // if (stageChangeNum !== 0) {
-                //     throw '该变更令已被调用,无法重新审批';
-                // }
                 // 重新审批
                 const result = await ctx.service.changeApplyAudit.checkRevise(ctx.change);
                 if (!result) {
@@ -4146,13 +4126,6 @@ module.exports = app => {
                         throw '验证码不正确!';
                     }
                 }
-
-                // 获取是否已存在调用变更令
-                // const changeUsedData = await ctx.service.stageChange.getFinalUsedData(ctx.tender.id, changeData.cid);
-                // const stageChangeNum = this.ctx.helper.sum(changeUsedData.map(x => { return Math.abs(x.qty); }));
-                // if (stageChangeNum !== 0) {
-                //     throw '该变更令已被调用,无法重新审批';
-                // }
                 // 重新审批
                 const result = await ctx.service.changePlanAudit.checkRevise(ctx.change);
                 if (!result) {

+ 36 - 30
app/service/change.js

@@ -1630,13 +1630,15 @@ module.exports = app => {
          */
         async checkAgain(cid) {
             // 初始化事务
+            const time = new Date();
             this.transaction = await this.db.beginTransaction();
             let result = false;
             try {
                 const changeInfo = await this.getDataByCondition({ cid });
 
                 // 获取终审
-                const auditInfo = (
+                const zsAudit = await this.ctx.service.changeAudit.getAuditorByStatus(cid, changeInfo.times, audit.flow.auditStatus.checked);
+                const lastAudit = (
                     await this.ctx.service.changeAudit.getAllDataByCondition({
                         where: { cid },
                         orders: [['usort', 'desc']],
@@ -1644,39 +1646,40 @@ module.exports = app => {
                         offset: 0,
                     })
                 )[0];
-                let usort = auditInfo.usort + 1;
+                let usort = lastAudit.usort + 1;
+                const insert_audit_array = [];
 
                 // 新增2个审批状态到审批列表中
-                const insert_audit1 = {
-                    tid: auditInfo.tid,
-                    cid: auditInfo.cid,
-                    uid: auditInfo.uid,
-                    name: auditInfo.name,
-                    jobs: auditInfo.jobs,
-                    company: auditInfo.company,
-                    times: auditInfo.times,
-                    usite: auditInfo.usite,
+                insert_audit_array.push({
+                    tid: changeInfo.tid,
+                    cid: changeInfo.cid,
+                    uid: zsAudit.uid,
+                    name: zsAudit.name,
+                    jobs: zsAudit.jobs,
+                    company: zsAudit.company,
+                    times: zsAudit.times,
+                    usite: zsAudit.usite,
                     usort,
-                    sin_time: new Date(),
+                    sin_time: time,
                     status: audit.flow.auditStatus.checkAgain,
-                };
-                await this.transaction.insert(this.ctx.service.changeAudit.tableName, insert_audit1);
+                    sdesc: '',
+                });
                 usort++;
                 // 新增2个审批人到审批列表中
-                const insert_audit2 = {
-                    tid: auditInfo.tid,
-                    cid: auditInfo.cid,
-                    uid: auditInfo.uid,
-                    name: auditInfo.name,
-                    jobs: auditInfo.jobs,
-                    company: auditInfo.company,
-                    times: auditInfo.times,
-                    usite: auditInfo.usite,
+                insert_audit_array.push({
+                    tid: changeInfo.tid,
+                    cid: changeInfo.cid,
+                    uid: zsAudit.uid,
+                    name: zsAudit.name,
+                    jobs: zsAudit.jobs,
+                    company: zsAudit.company,
+                    times: zsAudit.times,
+                    usite: zsAudit.usite,
                     usort,
                     status: audit.flow.auditStatus.checking,
-                    sin_time: new Date(),
-                };
-                await this.transaction.insert(this.ctx.service.changeAudit.tableName, insert_audit2);
+                    sin_time: time,
+                });
+                await this.transaction.insert(this.ctx.service.changeAudit.tableName, insert_audit_array);
 
                 // 审批列表数据也要回退
                 let total_price = 0;
@@ -1684,6 +1687,7 @@ module.exports = app => {
                 const changeList = await this.ctx.service.changeAuditList.getAllDataByCondition({
                     where: { cid: changeInfo.cid },
                 });
+                const updateChangeList = [];
                 for (const cl of changeList) {
                     const audit_amount = cl.audit_amount.split(',');
                     const last_amount = audit_amount[audit_amount.length - 1];
@@ -1692,16 +1696,18 @@ module.exports = app => {
                         id: cl.id,
                         audit_amount: audit_amount.join(','),
                         samount: '',
+                        spamount: parseFloat(last_amount),
                     };
                     total_price = this.ctx.helper.add(total_price, this.ctx.helper.mul(cl.unit_price, parseFloat(last_amount), tp_decimal));
-                    await this.transaction.update(this.ctx.service.changeAuditList.tableName, list_update);
+                    updateChangeList.push(list_update);
                 }
+                if (updateChangeList.length > 0) await this.transaction.updateRows(this.ctx.service.changeAuditList.tableName, updateChangeList);
 
                 // 设置变更令审批中
                 const change_update = {
                     p_code: null,
                     status: audit.flow.status.checking,
-                    cin_time: Date.parse(new Date()) / 1000,
+                    cin_time: Date.parse(time) / 1000,
                     sin_time: null,
                     total_price,
                 };
@@ -1718,7 +1724,7 @@ module.exports = app => {
                 const shenpiUrl = await this.ctx.helper.urlToShort(
                     this.ctx.protocol + '://' + this.ctx.host + '/wap/tender/' + changeInfo.tid + '/change/' + changeInfo.cid + '/information#shenpi'
                 );
-                await this.ctx.helper.sendAliSms(auditInfo.uid, smsTypeConst.const.BG, smsTypeConst.judge.approval.toString(), SmsAliConst.template.change_check, {
+                await this.ctx.helper.sendAliSms(zsAudit.uid, smsTypeConst.const.BG, smsTypeConst.judge.approval.toString(), SmsAliConst.template.change_check, {
                     biangeng: code,
                     code: shenpiUrl,
                 });
@@ -1731,7 +1737,7 @@ module.exports = app => {
                     code: this.ctx.session.sessionProject.code,
                     c_name: changeInfo.name,
                 };
-                await this.ctx.helper.sendWechat(auditInfo.uid, smsTypeConst.const.BG, smsTypeConst.judge.approval.toString(), wxConst.template.change, wechatData);
+                await this.ctx.helper.sendWechat(zsAudit.uid, smsTypeConst.const.BG, smsTypeConst.judge.approval.toString(), wxConst.template.change, wechatData);
 
             } catch (error) {
                 await this.transaction.rollback();

+ 2 - 6
app/view/change/information.ejs

@@ -105,12 +105,8 @@
                         <% } %>
                     <% } %>
                     <% if (auditStatus === 4 && ctx.session.sessionUser.accountId === auditList[auditList.length-1].uid) { %>
-                        <% if (stageChangeNum === 0) { %>
-                            <!--重新审批-->
-                            <!--<a href="javascript: void(0);" data-toggle="modal" data-target="#sp-down-back" class="btn btn-warning btn-sm">重新审批</a>-->
-                        <% } else { %>
-                            <!--<button class="btn btn-outline-secondary btn-sm" data-toggle="tooltip" data-placement="bottom" title="已被调用">重新审批</button>-->
-                        <% } %>
+                        <!--重新审批-->
+                        <a href="javascript: void(0);" data-toggle="modal" data-target="#sp-down-back" class="btn btn-warning btn-sm">重新审批</a>
                     <% } %>
                     <% if (auditStatus === 4 && ctx.session.sessionUser.accountId === change.uid) { %>
                         <a href="javascript: void(0);" data-toggle="modal" data-target="#sp-down-revise" class="btn btn-warning btn-sm">修订变更</a>

+ 80 - 76
app/view/change/information_modal.ejs

@@ -704,8 +704,8 @@
                                                         </div>
                                                         <!--审批意见-->
                                                         <% if(auditor.status !== auditConst.auditStatus.uncheck) { %>
+                                                            <% if (auditor.status === auditConst.auditStatus.checking) { %>
                                                             <div class="card-body p-3 border-top">
-                                                                <% if (auditor.status === auditConst.auditStatus.checking) { %>
                                                                     <label>审批意见<b class="text-danger">*</b></label>
                                                                     <textarea class="form-control form-control-sm"
                                                                               name="sdesc">同意</textarea>
@@ -719,10 +719,12 @@
                                                                     <% } else { %>
                                                                         <input type="hidden" name="audit_next_id" value="<%= auditList3[index+1].id %>">
                                                                     <% } %>
-                                                                <% } else { %>
-                                                                    <p style="margin: 0;"><%- auditor.sdesc %></p>
-                                                                <% } %>
                                                             </div>
+                                                            <% } else if (auditor.sdesc) { %>
+                                                            <div class="card-body p-3 border-top">
+                                                                <p style="margin: 0;"><%- auditor.sdesc %></p>
+                                                            </div>
+                                                            <% } %>
                                                         <% } %>
                                                     </div>
                                                 </div>
@@ -941,33 +943,35 @@
                                                         </div>
                                                         <!--审批意见-->
                                                         <% if(auditor.status !== auditConst.auditStatus.uncheck) { %>
+                                                            <% if (auditor.status === auditConst.auditStatus.checking) { %>
                                                             <div class="card-body p-3 border-top">
-                                                                <% if (auditor.status === auditConst.auditStatus.checking) { %>
-                                                                    <label>审批意见<b class="text-danger">*</b></label>
-                                                                    <textarea class="form-control form-control-sm"
-                                                                              name="sdesc">不同意</textarea>
-                                                                    <input type="hidden" name="audit_id" value="<%= auditor.id %>">
-                                                                    <div id="change-back-content" class="alert alert-warning"
-                                                                         style="margin-top: 15px;">
+                                                                <label>审批意见<b class="text-danger">*</b></label>
+                                                                <textarea class="form-control form-control-sm"
+                                                                          name="sdesc">不同意</textarea>
+                                                                <input type="hidden" name="audit_id" value="<%= auditor.id %>">
+                                                                <div id="change-back-content" class="alert alert-warning"
+                                                                     style="margin-top: 15px;">
+                                                                    <div class="form-check form-check-inline">
+                                                                        <input class="form-check-input" type="radio" name="status"
+                                                                               id="change-back" value="<%- auditConst.auditStatus.back %>">
+                                                                        <label class="form-check-label" for="change-back">退回原报 <%= auditList3[0].name %></label>
+                                                                    </div>
+                                                                    <% if (auditor.usite !== 1) { %>
                                                                         <div class="form-check form-check-inline">
                                                                             <input class="form-check-input" type="radio" name="status"
-                                                                                   id="change-back" value="<%- auditConst.auditStatus.back %>">
-                                                                            <label class="form-check-label" for="change-back">退回原报 <%= auditList3[0].name %></label>
+                                                                                   id="chagne-backnew"
+                                                                                   value="<%- auditConst.auditStatus.backnew %>">
+                                                                            <label class="form-check-label" for="chagne-backnew">退回上一审批人 <%= auditList2[auditor.usite-1].name %></label>
+                                                                            <input type="hidden" name="audit_last_id" value="<%= auditList2[auditor.usite-1].id %>">
                                                                         </div>
-                                                                        <% if (auditor.usite !== 1) { %>
-                                                                            <div class="form-check form-check-inline">
-                                                                                <input class="form-check-input" type="radio" name="status"
-                                                                                       id="chagne-backnew"
-                                                                                       value="<%- auditConst.auditStatus.backnew %>">
-                                                                                <label class="form-check-label" for="chagne-backnew">退回上一审批人 <%= auditList2[auditor.usite-1].name %></label>
-                                                                                <input type="hidden" name="audit_last_id" value="<%= auditList2[auditor.usite-1].id %>">
-                                                                            </div>
-                                                                        <% } %>
-                                                                    </div>
-                                                                <% } else if(auditor.status === auditConst.auditStatus.checked){ %>
-                                                                    <p style="margin: 0;"><%- auditor.sdesc %></p>
-                                                                <% } %>
+                                                                    <% } %>
+                                                                </div>
                                                             </div>
+                                                            <% } else if(auditor.sdesc) { %>
+                                                                <div class="card-body p-3 border-top">
+                                                                    <p style="margin: 0;"><%- auditor.sdesc %></p>
+                                                                </div>
+                                                            <% } %>
                                                         <% } %>
                                                     </div>
                                                 </div>
@@ -1012,57 +1016,57 @@
         </div>
     </div>
 </div>
-<% if (auditStatus === 4 && ctx.session.sessionUser.accountId === auditList[auditList.length-1].uid && stageChangeNum === 0) { %>
+<% if (auditStatus === 4 && ctx.session.sessionUser.accountId === auditList[auditList.length-1].uid) { %>
     <% if (!authMobile && ctx.session.sessionUser.loginStatus === 0) { %>
-        <!--&lt;!&ndash;终审重新审批&ndash;&gt;-->
-        <!--<div class="modal fade" id="sp-down-back" data-backdrop="static">-->
-        <!--<div class="modal-dialog" role="document">-->
-        <!--<div class="modal-content">-->
-        <!--<div class="modal-header">-->
-        <!--<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-sm btn-secondary" data-dismiss="modal">取消</button>-->
-        <!--<a href="/profile/sms" class="btn btn-sm btn-primary">去设置</a>-->
-        <!--</div>-->
-        <!--</div>-->
-        <!--</div>-->
-        <!--</div>-->
-    <!--<% } else { %>-->
-    <!--&lt;!&ndash;重新审批&ndash;&gt;-->
-    <!--<div class="modal fade" id="sp-down-back" data-backdrop="static">-->
-    <!--<div class="modal-dialog" role="document">-->
-    <!--<form id="againForm" class="modal-content" method="post" action="/tender/<%- tender.id %>/change/check/again" onsubmit="return false;">-->
-    <!--<div class="modal-header">-->
-    <!--<h5 class="modal-title">重新审批</h5>-->
-    <!--</div>-->
-    <!--<div class="modal-body">-->
-    <!--<h5>确认由「终审-<%= auditList[auditList.length-1].name %>」重新审批「<%= change.code %>」?</h5>-->
-    <!--<% if (ctx.session.sessionUser.loginStatus === 0) { %>-->
-    <!--<div class="form-group">-->
-    <!--<label>重审需要验证码确认,验证码将发送至尾号<%- authMobile.slice(-4) %>的手机</label>-->
-    <!--<div class="input-group input-group-sm mb-3">-->
-    <!--<input class="form-control" type="text" readonly="readonly" name="code" placeholder="输入短信中的6位验证码" />-->
-    <!--<div class="input-group-append">-->
-    <!--<button class="btn btn-outline-secondary" type="button" id="get-code">获取验证码</button>-->
-    <!--</div>-->
-    <!--</div>-->
-    <!--</div>-->
-    <!--<% } %>-->
-    <!--</div>-->
-    <!--<div class="modal-footer">-->
-    <!--<input type="hidden" name="cid" value="<%= change.cid %>">-->
-    <!--<input type="hidden" name="_csrf_j" value="<%= ctx.csrf %>" />-->
-    <!--<button type="button" class="btn btn-secondary btn-sm" data-dismiss="modal">关闭</button>-->
-    <!--<button type="button" id="re-shenpi-btn" class="btn btn-warning btn-sm" <% if (ctx.session.sessionUser.loginStatus === 0) { %>disabled<% } %>>确定重审</button>-->
-    <!--</div>-->
-    <!--</form>-->
-    <!--</div>-->
-    <!--</div>-->
+        <!--终审重新审批-->
+        <div class="modal fade" id="sp-down-back" data-backdrop="static">
+            <div class="modal-dialog" role="document">
+                <div class="modal-content">
+                    <div class="modal-header">
+                        <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-sm btn-secondary" data-dismiss="modal">取消</button>
+                        <a href="/profile/sms" class="btn btn-sm btn-primary">去设置</a>
+                    </div>
+                </div>
+            </div>
+        </div>
+    <% } else { %>
+        <!--重新审批-->
+        <div class="modal fade" id="sp-down-back" data-backdrop="static">
+            <div class="modal-dialog" role="document">
+                <form id="againForm" class="modal-content" method="post" action="/tender/<%- tender.id %>/change/check/again" onsubmit="return false;">
+                    <div class="modal-header">
+                        <h5 class="modal-title">重新审批</h5>
+                    </div>
+                    <div class="modal-body">
+                        <h5>确认由「终审-<%= auditList[auditList.length-1].name %>」重新审批「<%= change.code %>」?</h5>
+                        <% if (ctx.session.sessionUser.loginStatus === 0) { %>
+                            <div class="form-group">
+                                <label>重审需要验证码确认,验证码将发送至尾号<%- authMobile.slice(-4) %>的手机</label>
+                                <div class="input-group input-group-sm mb-3">
+                                    <input class="form-control" type="text" readonly="readonly" name="code" placeholder="输入短信中的6位验证码" />
+                                    <div class="input-group-append">
+                                        <button class="btn btn-outline-secondary" type="button" id="get-code">获取验证码</button>
+                                    </div>
+                                </div>
+                            </div>
+                        <% } %>
+                    </div>
+                    <div class="modal-footer">
+                        <input type="hidden" name="cid" value="<%= change.cid %>">
+                        <input type="hidden" name="_csrf_j" value="<%= ctx.csrf %>" />
+                        <button type="button" class="btn btn-secondary btn-sm" data-dismiss="modal">关闭</button>
+                        <button type="button" id="re-shenpi-btn" class="btn btn-warning btn-sm" <% if (ctx.session.sessionUser.loginStatus === 0) { %>disabled<% } %>>确定重审</button>
+                    </div>
+                </form>
+            </div>
+        </div>
     <% } %>
 <% } %>
 <% if (auditStatus === 4 && ctx.session.sessionUser.accountId === change.uid) { %>