Просмотр исходного кода

功能设置,计量期审批配置

MaiXinRong 2 месяцев назад
Родитель
Сommit
45a86b4c79
3 измененных файлов с 126 добавлено и 40 удалено
  1. 4 1
      app/const/sp_page_show.js
  2. 3 0
      app/controller/sub_proj_setting_controller.js
  3. 119 39
      app/view/sp_setting/fun.ejs

+ 4 - 1
app/const/sp_page_show.js

@@ -30,7 +30,7 @@ const tenderPageControl = [
     { title: '投资进度', name: 'xxjd', value: pageStatus.show, type: 'checkbox' },
     { title: '材料调差', name: 'openMaterial', value: pageStatus.show, type: 'checkbox' },
     { title: '过程结算', name: 'openSettle', value: pageStatus.show, type: 'checkbox' },
-    { title: '施工日志', name: 'openTenderContract', value: pageStatus.show, type: 'checkbox' },
+    { title: '施工日志', name: 'openConstruction', value: pageStatus.show, type: 'checkbox' },
     { title: '合同管理', name: 'openTenderContract', value: pageStatus.show, type: 'checkbox' },
 ];
 // 报表相关开关
@@ -94,6 +94,9 @@ const defaultSetting = {
     openContract: 1,
     openFinancial: 1,
     openTenderContract: 1,
+    openStageAudit: 0,
+    stageAuditEarly: 3,
+    stageAuditWorry: 8,
 };
 
 module.exports = {

+ 3 - 0
app/controller/sub_proj_setting_controller.js

@@ -392,6 +392,9 @@ module.exports = app => {
                 this.ctx.subProject.page_show.close1stStageCheckDealParam = data.close1stStageCheckDealParam ? 1 : 0;
                 this.ctx.subProject.page_show.openMultiStageCalc = data.openMultiStageCalc ? 1 : 0;
                 this.ctx.subProject.page_show.closeWapYfSf = data.closeWapYfSf ? 1 : 0;
+                this.ctx.subProject.page_show.openStageAudit = data.openStageAudit ? 1 : 0;
+                this.ctx.subProject.page_show.stageAuditEarly = data.stageAuditEarly || 0;
+                this.ctx.subProject.page_show.stageAuditWorry = data.stageAuditWorry || 0;
                 const result2 = await ctx.service.subProject.updatePageshow(ctx.subProject.id);
                 if (!result2) throw '保存数据失败';
                 if (data.addFunSet) {

+ 119 - 39
app/view/sp_setting/fun.ejs

@@ -111,55 +111,85 @@
                             <div class="col-6">
                                 <div class="card mb-3 ">
                                     <div class="card-header d-flex justify-content-between">
-                                        <div>计量期上报</div>
-                                        <div class="row m-0">
-                                            <div class="pull-right d-inline-block form-group form-check ml-auto">
-                                                <div class="custom-control custom-switch">
-                                                    <input type="checkbox" class="custom-control-input" id="openStageStart" <% if(ctx.subProject.page_show.openStageStart) { %>checked<% } %> onchange="updateSetting();">
-                                                    <label class="custom-control-label" for="openStageStart"></label>
-                                                </div>
-                                            </div>
-                                        </div>
+                                        <div>计量期上报/审批</div>
                                     </div>
                                     <div class="card-body pb-2">
                                         <div class="form-group mb-1">
-                                            <div>
-                                                <div class="input-group input-group-sm mb-2">
-                                                    <div class="input-group-prepend">
-                                                        <span class="input-group-text">开始日期:</span>
-                                                        <span class="input-group-text" style="width: 90px;padding-left: 12px;">每月</span>
+                                            <nav class="nav nav-tabs">
+                                                <a class="nav-link nav-item active" data-toggle="tab" name="stage-setting" type="audit" onclick="changeSettingTab(this);">审批</a>
+                                                <a class="nav-link nav-item" data-toggle="tab" name="stage-setting" type="start" onclick="changeSettingTab(this);">上报</a>
+                                                <div class="ml-auto">
+                                                    <div class="custom-control custom-switch" id="switch-stage-start" style="display: none;">
+                                                        <input type="checkbox" class="custom-control-input" id="openStageStart" <% if(ctx.subProject.page_show.openStageStart) { %>checked<% } %> onchange="updateSetting();">
+                                                        <label class="custom-control-label" for="openStageStart"></label>
+                                                    </div>
+                                                    <div class="custom-control custom-switch" id="switch-stage-audit">
+                                                        <input type="checkbox" class="custom-control-input" id="openStageAudit" <% if(ctx.subProject.page_show.openStageAudit) { %>checked<% } %> onchange="updateSetting();">
+                                                        <label class="custom-control-label" for="openStageAudit"></label>
                                                     </div>
-                                                    <select class="form-control form-control-sm" id="start_day" style="width: 90px!important;flex: none;" <% if (ctx.subProject.page_show.openStageStart) { %>disabled<% } %>>
-                                                        <option value="0">请选择日</option>
-                                                        <% for (let i = 1; i <= 31;i++) { %>
-                                                            <option value="<%- i %>" <% if (funSet.stage_start.start_day === i) {%>selected<% } %>><%- i %></option>
-                                                        <% } %>
-                                                    </select>
-                                                    <span class="text-danger mx-2"></span>
                                                 </div>
-                                                <div class="input-group input-group-sm mb-2">
-                                                    <div class="input-group-prepend">
-                                                        <span class="input-group-text">截止日期:</span>
+                                            </nav>
+                                            <div class="tab-content my-2">
+                                                <div class="tab-pane fade active show" id="stage-audit-tab" role="tabpanel" aria-labelledby="home-tab">
+                                                    <div class="input-group input-group-sm mt-2 col-6">
+                                                        <div class="input-group-prepend">
+                                                            <span class="input-group-text">预警:</span>
+                                                        </div>
+                                                        <input type="number" class="form-control" value="<%- ctx.subProject.page_show.stageAuditEarly %>" <% if(!ctx.subProject.page_show.openStageAudit) { %>disabled<% } %> id="stage-audit-early" oninput="limitDecimal(this);" min="0" max="30" onchange="updateSetting();">
+                                                        <div class="input-group-append">
+                                                            <span class="input-group-text">天</span>
+                                                        </div>
+                                                    </div>
+                                                    <div class="text-muted ml-4 mt-2"><small>审批停留时长符合设置天数(包含节假日),审批流程提醒为预警</small></div>
+                                                    <div class="input-group input-group-sm mt-2 col-6">
+                                                        <div class="input-group-prepend">
+                                                            <span class="input-group-text">紧急:</span>
+                                                        </div>
+                                                        <input type="number" class="form-control" value="<%- ctx.subProject.page_show.stageAuditWorry %>" <% if(!ctx.subProject.page_show.openStageAudit) { %>disabled<% } %> id="stage-audit-worry" oninput="limitDecimal(this);" min="0" max="30" onchange="updateSetting();">
+                                                        <div class="input-group-append">
+                                                            <span class="input-group-text">天</span>
+                                                        </div>
                                                     </div>
-                                                    <select class="form-control form-control-sm" id="end_month" style="width: 90px!important;flex: none;" <% if (ctx.subProject.page_show.openStageStart) { %>disabled<% } %>>
-                                                        <option value="0">请选择月</option>
-                                                        <% for (const i of endMonth) { %>
-                                                        <option value="<%- i.val %>" <% if (funSet.stage_start.end_month === i.val) {%>selected<% } %> ><%- i.name %></option>
-                                                        <% } %>
-                                                    </select>
-                                                    <select class="form-control form-control-sm" id="end_day" style="width: 90px!important;flex: none;" <% if (ctx.subProject.page_show.openStageStart) { %>disabled<% } %>>
-                                                        <option value="0">请选择日</option>
-                                                        <% for (let i = 1; i <= 31;i++) { %>
+                                                    <div class="text-muted ml-4 mt-2"><small>审批停留时长符合设置天数(包含节假日),审批流程提醒为紧急</small></div>
+                                                </div>
+                                                <div class="tab-pane fade" id="stage-start-tab" role="tabpanel" aria-labelledby="profile-tab">
+                                                    <div class="input-group input-group-sm mb-2">
+                                                        <div class="input-group-prepend">
+                                                            <span class="input-group-text">开始日期:</span>
+                                                            <span class="input-group-text" style="width: 90px;padding-left: 12px;">每月</span>
+                                                        </div>
+                                                        <select class="form-control form-control-sm" id="start_day" style="width: 90px!important;flex: none;" <% if (ctx.subProject.page_show.openStageStart) { %>disabled<% } %>>
+                                                            <option value="0">请选择日</option>
+                                                            <% for (let i = 1; i <= 31;i++) { %>
+                                                            <option value="<%- i %>" <% if (funSet.stage_start.start_day === i) {%>selected<% } %>><%- i %></option>
+                                                            <% } %>
+                                                        </select>
+                                                        <span class="text-danger mx-2"></span>
+                                                    </div>
+                                                    <div class="input-group input-group-sm mb-2">
+                                                        <div class="input-group-prepend">
+                                                            <span class="input-group-text">截止日期:</span>
+                                                        </div>
+                                                        <select class="form-control form-control-sm" id="end_month" style="width: 90px!important;flex: none;" <% if (ctx.subProject.page_show.openStageStart) { %>disabled<% } %>>
+                                                            <option value="0">请选择月</option>
+                                                            <% for (const i of endMonth) { %>
+                                                            <option value="<%- i.val %>" <% if (funSet.stage_start.end_month === i.val) {%>selected<% } %> ><%- i.name %></option>
+                                                            <% } %>
+                                                        </select>
+                                                        <select class="form-control form-control-sm" id="end_day" style="width: 90px!important;flex: none;" <% if (ctx.subProject.page_show.openStageStart) { %>disabled<% } %>>
+                                                            <option value="0">请选择日</option>
+                                                            <% for (let i = 1; i <= 31;i++) { %>
                                                             <option value="<%- i %>" <% if (funSet.stage_start.end_day === i) {%>selected<% } %>><%- i %></option>
-                                                        <% } %>
-                                                    </select>
-                                                    <span class="text-danger mx-2"></span>
+                                                            <% } %>
+                                                        </select>
+                                                        <span class="text-danger mx-2"></span>
+                                                    </div>
+                                                    <div class="mt-3">
+                                                        <label class="form-text alert alert-danger">开启选项后,超出范围内的日期,则不允许上报期计量。</label>
+                                                    </div>
                                                 </div>
                                             </div>
                                         </div>
-                                        <div class="mt-3">
-                                            <label class="form-text alert alert-danger">开启选项后,超出范围内的日期,则不允许上报期计量。</label>
-                                        </div>
                                     </div>
                                 </div>
                             </div>
@@ -316,6 +346,20 @@
 <script>
     let changeClass = JSON.parse(unescape('<%- escape(JSON.stringify(funSet.change_class)) %>'));
     let changeState = JSON.parse(unescape('<%- escape(JSON.stringify(funSet.change_state)) %>'));
+    const changeSettingTab = function(tab) {
+        const type = tab.getAttribute('type');
+        if (type === 'start') {
+            $('#switch-stage-start').show();
+            $('#switch-stage-audit').hide();
+            $('#stage-start-tab').addClass('active').addClass('show');
+            $('#stage-audit-tab').removeClass('active').removeClass('show');
+        } else if (type === 'audit') {
+            $('#switch-stage-start').hide();
+            $('#switch-stage-audit').show();
+            $('#stage-audit-tab').addClass('active').addClass('show');
+            $('#stage-start-tab').removeClass('active').removeClass('show');
+        }
+    }
     $(() => {
         autoFlashHeight();
         // 自定义变更类别
@@ -384,6 +428,32 @@
             }
         });
     });
+
+    // 根据Min Max限制Input输入
+    function limitInputMinMax (obj) {
+        if (obj.max && _.toNumber(obj.value) > _.toNumber(obj.max)) {
+            obj.value = obj.max;
+        }
+        if(obj.min && _.toNumber(obj.value) < _.toNumber(obj.min)) {
+            obj.value = obj.min;
+        }
+    }
+    // 根据Maxlength限制input输入
+    function limitMaxLength (obj) {
+        if (obj.maxLength >= 0 && obj.value.length > obj.maxLength) {
+            obj.value = obj.value.substr(0, obj.maxLength);
+        }
+    }
+    // 根据正则限制输入
+    function limitReg(obj, reg) {
+        obj.value = obj.value.replace(reg, '');
+    }
+    // 小数位数 input 输入限制
+    function limitDecimal(obj) {
+        limitReg(obj, /[^\d]/g);
+        limitMaxLength(obj);
+        limitInputMinMax(obj);
+    }
     const updateSetting = function (tab = false, set_type = 0) {
         if (!$('#openChangeApply')[0].checked && $('#openChangeProject')[0].checked && tab === 1) {
             $('#openChangeApply').prop('checked', true);
@@ -451,6 +521,13 @@
             $('#end_month').removeAttr('disabled');
             $('#end_day').removeAttr('disabled');
         }
+        if ($('#openStageAudit')[0].checked) {
+            $('#stage-audit-early').removeAttr('disabled');
+            $('#stage-audit-worry').removeAttr('disabled');
+        } else {
+            $('#stage-audit-early').attr('disabled', 'disabled');
+            $('#stage-audit-worry').attr('disabled', 'disabled');
+        }
         if (set_type === 1) {
             // 自定义变更类别
             const change_class = [];
@@ -544,6 +621,9 @@
             openMultiStageCalc: $('#openMultiStageCalc')[0].checked,
             closeWapYfSf: $('#closeWapYfSf')[0].checked,
             addFunSet: _.size(pushData) !== 0 ? pushData : null,
+            openStageAudit: $('#openStageAudit')[0].checked,
+            stageAuditEarly: parseInt($('#stage-audit-early').val()),
+            stageAuditWorry: parseInt($('#stage-audit-worry').val()),
         }, function (result) {
             if ($('#openChangeState').is(':checked')) {
                 $('#openBgStatus').removeClass('text-secondary');