Browse Source

调差开关及权限控制

ellisran 1 year ago
parent
commit
e908b0443a

+ 1 - 0
app/const/page_show.js

@@ -27,6 +27,7 @@ const pageStatus = {
 const defaultSetting = {
     bwtz: 0,
     xxjd: 0,
+    openMaterial: 1,
     stageExtra: 1,
     closeExportPdf: 0,
     closeExportExcel: 0,

+ 3 - 3
app/controller/dashboard_controller.js

@@ -29,7 +29,7 @@ module.exports = app => {
             const auditStages = await ctx.service.stageAudit.getAuditStage(ctx.session.sessionUser.accountId);
             const auditChanges = await ctx.service.changeAudit.getAuditChange(ctx.session.sessionUser.accountId);
             const auditRevise = await ctx.service.reviseAudit.getAuditRevise(ctx.session.sessionUser.accountId);
-            const auditMaterial = await ctx.service.materialAudit.getAuditMaterial(ctx.session.sessionUser.accountId);
+            const auditMaterial = ctx.session.sessionProject.page_show.openMaterial ? await ctx.service.materialAudit.getAuditMaterial(ctx.session.sessionUser.accountId) : [];
             const auditAdvance = await ctx.service.advanceAudit.getAuditAdvance(ctx.session.sessionUser.accountId);
             const auditChangeProject = ctx.session.sessionProject.page_show.openChangeProject ? await ctx.service.changeProjectAudit.getAuditChangeProject(ctx.session.sessionUser.accountId) : [];
             const auditChangeApply = ctx.session.sessionProject.page_show.openChangeApply ? await ctx.service.changeApplyAudit.getAuditChangeApply(ctx.session.sessionUser.accountId) : [];
@@ -62,7 +62,7 @@ module.exports = app => {
             if (ctx.session.sessionProject.page_show.openChangeProject) shenpi_count.push({ count: await ctx.service.changeProjectAudit.getCountByChecked(ctx.session.sessionUser.accountId), name: '变更立项' });
             if (ctx.session.sessionProject.page_show.openChangeApply) shenpi_count.push({ count: await ctx.service.changeApplyAudit.getCountByChecked(ctx.session.sessionUser.accountId), name: '变更申请' });
             if (ctx.session.sessionProject.page_show.openChangePlan) shenpi_count.push({ count: await ctx.service.changePlanAudit.getCountByChecked(ctx.session.sessionUser.accountId), name: '变更方案' });
-            shenpi_count.push({ count: await ctx.service.materialAudit.getCountByChecked(ctx.session.sessionUser.accountId), name: '材料调差' });
+            if (ctx.session.sessionProject.page_show.openMaterial) shenpi_count.push({ count: await ctx.service.materialAudit.getCountByChecked(ctx.session.sessionUser.accountId), name: '材料调差' });
             // shenpi_count.push({ count: await ctx.service.advanceAudit.getCountByChecked(ctx.session.sessionUser.accountId), name: '预付款' });
             const total_count = ctx.app._.sumBy(shenpi_count, 'count');
             const shenpi_lastime = [
@@ -74,7 +74,7 @@ module.exports = app => {
                 ctx.session.sessionProject.page_show.openChangeProject ? await ctx.service.changeProjectAudit.getLastEndTimeByChecked(ctx.session.sessionUser.accountId) : null,
                 ctx.session.sessionProject.page_show.openChangeApply ? await ctx.service.changeApplyAudit.getLastEndTimeByChecked(ctx.session.sessionUser.accountId) : null,
                 ctx.session.sessionProject.page_show.openChangePlan ? await ctx.service.changePlanAudit.getLastEndTimeByChecked(ctx.session.sessionUser.accountId) : null,
-                await ctx.service.materialAudit.getLastEndTimeByChecked(ctx.session.sessionUser.accountId),
+                ctx.session.sessionProject.page_show.openMaterial ? await ctx.service.materialAudit.getLastEndTimeByChecked(ctx.session.sessionUser.accountId) : null,
             ];
             const last_time = ctx.app._.max(shenpi_lastime);
             // console.log(ctx.app._.max(shenpi_lastime), ctx.helper.calcDayNum(last_time));

+ 19 - 0
app/controller/material_controller.js

@@ -45,6 +45,9 @@ module.exports = app => {
          */
         async index(ctx) {
             try {
+                if (!ctx.session.sessionProject.page_show.openMaterial) {
+                    throw '该功能已关闭';
+                }
                 // 列展示
                 const tenderMsg = await ctx.service.tender.getTender(ctx.tender.id, ['material_col_show']);
                 const material_col_show = tenderMsg.material_col_show ? JSON.parse(tenderMsg.material_col_show) : ctx.helper._.cloneDeep(tenderConst.materialColShow);
@@ -115,6 +118,7 @@ module.exports = app => {
                 await this.layout('material/index.ejs', renderData, 'material/modal.ejs');
             } catch (err) {
                 this.log(err);
+                ctx.session.postError = err.toString();
                 ctx.redirect(this.menu.menu.dashboard.url);
             }
         }
@@ -126,6 +130,9 @@ module.exports = app => {
          */
         async materialAuditors(ctx) {
             try {
+                if (!ctx.session.sessionProject.page_show.openMaterial) {
+                    throw '该功能已关闭';
+                }
                 const responseData = {
                     err: 0, msg: '', data: {},
                 };
@@ -162,6 +169,9 @@ module.exports = app => {
          */
         async save(ctx) {
             try {
+                if (!ctx.session.sessionProject.page_show.openMaterial) {
+                    throw '该功能已关闭';
+                }
                 const data = {
                     mid: ctx.request.body.mid,
                     period: ctx.request.body.period,
@@ -191,6 +201,9 @@ module.exports = app => {
          */
         async saveData(ctx) {
             try {
+                if (!ctx.session.sessionProject.page_show.openMaterial) {
+                    throw '该功能已关闭';
+                }
                 const data = JSON.parse(ctx.request.body.data);
                 const responseData = {
                     err: 0,
@@ -217,6 +230,9 @@ module.exports = app => {
          */
         async add(ctx) {
             try {
+                if (!ctx.session.sessionProject.page_show.openMaterial) {
+                    throw '该功能已关闭';
+                }
                 if (ctx.session.sessionUser.accountId !== ctx.tender.data.user_id) {
                     throw '您无权创建材料调差期';
                 }
@@ -249,6 +265,9 @@ module.exports = app => {
          */
         async delete(ctx) {
             try {
+                if (!ctx.session.sessionProject.page_show.openMaterial) {
+                    throw '该功能已关闭';
+                }
                 const material_id = ctx.request.body.material_id;
                 const materialInfo = await ctx.service.material.getDataById(material_id);
                 // 获取最新的期数

+ 3 - 0
app/middleware/material_check.js

@@ -33,6 +33,9 @@ module.exports = options => {
      */
     return function* materialCheck(next) {
         try {
+            if (!this.session.sessionProject.page_show.openMaterial) {
+                throw '该功能已关闭';
+            }
             // 读取标段数据
             const materialOrder = parseInt(this.params.order);
             if (materialOrder <= 0) {

+ 6 - 2
app/view/dashboard/index.ejs

@@ -63,7 +63,7 @@
                                     <% if (ctx.session.sessionProject.page_show.openChangePlan && auditChangePlan.length !== 0) { %>
                                         <option value="9">变更方案(<%- auditChangePlan.length %>)</option>
                                     <% } %>
-                                    <% if (auditMaterial.length !== 0) { %>
+                                    <% if (ctx.session.sessionProject.page_show.openMaterial && auditMaterial.length !== 0) { %>
                                     <option value="1">材料调差(<%- auditMaterial.length %>)</option>
                                     <% } %>
                                     <% if (ctx.session.sessionProject.page_show.openPayment && auditPayments.length !== 0) { %>
@@ -358,7 +358,9 @@
                                     <% if (ctx.session.sessionProject.page_show.openChangePlan) { %>
                                         <option value="9">变更方案</option>
                                     <% } %>
+                                    <% if (ctx.session.sessionProject.page_show.openMaterial) { %>
                                     <option value="1">材料调差</option>
+                                    <% } %>
                                 </select>
                             </div>
                         </div>
@@ -395,7 +397,7 @@
                                                     <td class="<%- acStage.statusClass[notice.status]%>"><%- acStage.statusString[notice.status]%></td>
                                                     <td><%- notice.opinion ? notice.opinion : '' %></td>
                                                 </tr>
-                                            <% } else if(notice.type === pushType.material) { %>
+                                            <% } else if(notice.type === pushType.material && ctx.session.sessionProject.page_show.openMaterial) { %>
                                                 <tr data-type="1">
                                                     <td><span class="bg-new-material text-new-material badge text-width">材料调差</span></td>
                                                     <td><a href="/tender/<%- notice.tid %>"><%- notice.name %></a> <a href="/tender/<%- notice.tid %>/measure/material/<%- notice.order %>">第<%- notice.order %>期</a></td>
@@ -606,7 +608,9 @@
             <% if (ctx.session.sessionProject.page_show.openChangePlan) { %>
             'rgba(114, 46, 209,'+ transparentCount +')',
             <% } %>
+            <% if (ctx.session.sessionProject.page_show.openMaterial) { %>
             'rgba(187, 41, 210,'+ transparentCount +')',
+            <% } %>
         ],
         tooltip: {
             trigger: 'item'

+ 1 - 1
app/view/setting/fun.ejs

@@ -188,7 +188,7 @@
                                     </div>
                                 </div>
                             </div>
-                            <div class="col-6">
+                            <div class="col-6" <% if (!ctx.session.sessionProject.page_show.openMaterial) { %>style="display: none;"<% } %>>
                                 <div class="card mb-3">
                                     <div class="card-body">
                                         <h5 class="card-title">材料调差</h5>

+ 2 - 0
app/view/tender/tender_sub_menu.ejs

@@ -47,11 +47,13 @@
             </ul>
             <% } %>
         </div>
+        <% if (ctx.session.sessionProject.page_show.openMaterial) { %>
         <div class="nav-box">
             <ul class="nav-list list-unstyled">
                 <li <% if (ctx.url === '/tender/' + ctx.tender.id + '/measure/material') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/measure/material" class="h3"><i class="fa fa-line-chart fa-fw"></i> <span>材料调差</span></a></li>
             </ul>
         </div>
+        <% } %>
         <% if (ctx.session.sessionProject.page_show.xxjd && (ctx.tender.schedule_permission !== 0 || ctx.tender.isTourist)) { %>
         <div class="nav-box">
             <h3><i class="fa fa-bar-chart fa-fw"></i> 投资进度</h3>

+ 2 - 0
app/view/tender/tender_sub_mini_menu.ejs

@@ -48,11 +48,13 @@
                 </ul>
             <% } %>
         </div>
+        <% if (ctx.session.sessionProject.page_show.openMaterial) { %>
         <div class="nav-box">
             <ul class="nav-list list-unstyled">
                 <li <% if (ctx.url === '/tender/' + ctx.tender.id + '/measure/material') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/measure/material" class="h3"><i class="fa fa-line-chart fa-fw"></i> <span>材料调差</span></a></li>
             </ul>
         </div>
+        <% } %>
         <% if (ctx.session.sessionProject.page_show.xxjd && (ctx.tender.schedule_permission !== 0 || ctx.tender.isTourist)) { %>
             <div class="nav-box">
                 <h3><i class="fa fa-bar-chart fa-fw"></i> 投资进度</h3>