Browse Source

允许原报协同人创建期

MaiXinRong 9 months ago
parent
commit
f12431607b

+ 3 - 2
app/controller/measure_controller.js

@@ -101,7 +101,7 @@ module.exports = app => {
          */
          */
         async add(ctx) {
         async add(ctx) {
             try {
             try {
-                if (ctx.session.sessionUser.accountId !== ctx.tender.data.user_id) {
+                if (ctx.session.sessionUser.accountId !== ctx.tender.data.user_id && ctx.tender.userAssistsId.indexOf(ctx.session.sessionUser.accountId) < 0) {
                     throw '您无权创建计量期';
                     throw '您无权创建计量期';
                 }
                 }
                 const date = ctx.request.body.date;
                 const date = ctx.request.body.date;
@@ -119,13 +119,14 @@ module.exports = app => {
                         throw `最新一起未审批通过,请审批通过后再新增计量`
                         throw `最新一起未审批通过,请审批通过后再新增计量`
                     }
                     }
                 }
                 }
-                const newStage = await ctx.service.stage.addStage(ctx.tender.id, date, period);
+                const newStage = await ctx.service.stage.addStage(ctx.tender.data, date, period);
                 if (!newStage) {
                 if (!newStage) {
                     throw '新增计量期失败,请重试';
                     throw '新增计量期失败,请重试';
                 }
                 }
                 ctx.redirect('/tender/' + ctx.tender.id + '/measure/stage/' + newStage.order);
                 ctx.redirect('/tender/' + ctx.tender.id + '/measure/stage/' + newStage.order);
             } catch (err) {
             } catch (err) {
                 this.log(err);
                 this.log(err);
+                ctx.postError(err, '新增计量期失败');
                 ctx.redirect(ctx.request.header.referer);
                 ctx.redirect(ctx.request.header.referer);
             }
             }
         }
         }

+ 2 - 0
app/middleware/tender_check.js

@@ -64,6 +64,8 @@ module.exports = options => {
                 return x.user_id === tender.data.user_id || stageAuditorsId.indexOf(x.user_id) >= 0;
                 return x.user_id === tender.data.user_id || stageAuditorsId.indexOf(x.user_id) >= 0;
             });
             });
             const auditAssistsId = this.helper._.map(auditAssists, 'ass_user_id');
             const auditAssistsId = this.helper._.map(auditAssists, 'ass_user_id');
+            tender.userAssistsId = auditAssists.filter(x => {return x.user_id === tender.data.user_id;})
+                .map(x => { return x.ass_user_id; });
             const settleAuditors = yield this.service.settleAudit.getAllAuditors(tender.id);
             const settleAuditors = yield this.service.settleAudit.getAllAuditors(tender.id);
             const settleAuditorsId = this.helper._.map(settleAuditors, 'audit_id');
             const settleAuditorsId = this.helper._.map(settleAuditors, 'audit_id');
             const changeAuditors = yield this.service.changeAudit.getAllAuditors(tender.id);
             const changeAuditors = yield this.service.changeAudit.getAllAuditors(tender.id);

+ 3 - 3
app/service/stage.js

@@ -500,7 +500,7 @@ module.exports = app => {
          * @param period - 开始-截止日期
          * @param period - 开始-截止日期
          * @return {Promise<void>}
          * @return {Promise<void>}
          */
          */
-        async addStage(tenderId, date, period) {
+        async addStage(tender, date, period) {
             const stages = await this.getAllDataByCondition({
             const stages = await this.getAllDataByCondition({
                 where: { tid: tenderId },
                 where: { tid: tenderId },
                 orders: [['order', 'DESC']],
                 orders: [['order', 'DESC']],
@@ -510,14 +510,14 @@ module.exports = app => {
             const order = stages.length + 1;
             const order = stages.length + 1;
             const newStage = {
             const newStage = {
                 sid: this.uuid.v4(),
                 sid: this.uuid.v4(),
-                tid: tenderId,
+                tid: tender.id,
                 order,
                 order,
                 in_time: new Date(),
                 in_time: new Date(),
                 s_time: date,
                 s_time: date,
                 period,
                 period,
                 times: 1,
                 times: 1,
                 status: auditConst.stage.status.uncheck,
                 status: auditConst.stage.status.uncheck,
-                user_id: this.ctx.session.sessionUser.accountId,
+                user_id: tender.user_id, // this.ctx.session.sessionUser.accountId,
                 check_calc: false,
                 check_calc: false,
             };
             };
             newStage.cache_time_l = newStage.in_time;
             newStage.cache_time_l = newStage.in_time;

+ 1 - 1
app/view/measure/stage.ejs

@@ -10,7 +10,7 @@
                 <% if (ctx.session.sessionProject.page_show.openSettle) { %>
                 <% if (ctx.session.sessionProject.page_show.openSettle) { %>
                 <a href="/tender/<%= ctx.tender.id %>/settle" class="btn btn-primary btn-sm">计量结算</a>
                 <a href="/tender/<%= ctx.tender.id %>/settle" class="btn btn-primary btn-sm">计量结算</a>
                 <% } %>
                 <% } %>
-                <% if (ctx.session.sessionUser.accountId === ctx.tender.data.user_id && ctx.tender.data.ledger_status === auditConst.status.checked) { %>
+                <% if ((ctx.session.sessionUser.accountId === ctx.tender.data.user_id || ctx.tender.userAssistsId.indexOf(ctx.session.sessionUser.accountId) >= 0) && ctx.tender.data.ledger_status === auditConst.status.checked) { %>
                     <% if (!ctx.session.sessionProject.page_show.close1stStageCheckDealParam && ctx.helper.checkZero(ctx.tender.info.deal_param.contractPrice) && stages.length === 0) { %>
                     <% if (!ctx.session.sessionProject.page_show.close1stStageCheckDealParam && ctx.helper.checkZero(ctx.tender.info.deal_param.contractPrice) && stages.length === 0) { %>
                         <a href="#add-qi" data-toggle="modal" data-target="#tips" class="btn btn-primary btn-sm">开始新一期</a>
                         <a href="#add-qi" data-toggle="modal" data-target="#tips" class="btn btn-primary btn-sm">开始新一期</a>
                     <% } else { %>
                     <% } else { %>

+ 2 - 2
app/view/measure/stage_modal.ejs

@@ -1,4 +1,4 @@
-<% if (ctx.session.sessionUser.accountId === ctx.tender.data.user_id && ctx.tender.data.ledger_status === auditConst.status.checked) { %>
+<% if ((ctx.session.sessionUser.accountId === ctx.tender.data.user_id || ctx.tender.userAssistsId.indexOf(ctx.session.sessionUser.accountId) >= 0) && ctx.tender.data.ledger_status === auditConst.status.checked) { %>
 <!--弹出填写合同参数-->
 <!--弹出填写合同参数-->
 <div class="modal fade" id="tips" data-backdrop="static">
 <div class="modal fade" id="tips" data-backdrop="static">
     <div class="modal-dialog" role="document">
     <div class="modal-dialog" role="document">
@@ -106,7 +106,7 @@
 <script src="/public/js/datepicker/datepicker.min.js"></script>
 <script src="/public/js/datepicker/datepicker.min.js"></script>
 <script src="/public/js/datepicker/datepicker.zh.js"></script>
 <script src="/public/js/datepicker/datepicker.zh.js"></script>
 <script>
 <script>
-    <% if (stages.length > 0 && stages[0].user_id === ctx.session.sessionUser.accountId) { %>
+    <% if (stages.length > 0 && stages[0].user_id === ctx.session.sessionUser.accountId ) { %>
     $(function () {
     $(function () {
        $('.edit-stage').on('click', function () {
        $('.edit-stage').on('click', function () {
            const index = parseInt($(this).data('index'));
            const index = parseInt($(this).data('index'));