فهرست منبع

调差周期功能

laiguoran 3 سال پیش
والد
کامیت
52c55ec4c1
7فایلهای تغییر یافته به همراه125 افزوده شده و 1 حذف شده
  1. 29 0
      app/controller/material_controller.js
  2. 39 1
      app/public/js/measure_material.js
  3. 1 0
      app/router.js
  4. 14 0
      app/service/material.js
  5. 10 0
      app/view/material/index.ejs
  6. 30 0
      app/view/material/modal.ejs
  7. 2 0
      sql/update.sql

+ 29 - 0
app/controller/material_controller.js

@@ -128,6 +128,35 @@ module.exports = app => {
         }
 
         /**
+         * 编辑期(Post)
+         * @param ctx
+         * @return {Promise<void>}
+         */
+        async save(ctx) {
+            try {
+                const data = {
+                    mid: ctx.request.body.mid,
+                    period: ctx.request.body.period,
+                };
+                const material = await ctx.service.material.getDataById(data.mid);
+                if (!material) {
+                    throw '提交数据错误';
+                }
+                // if (stage.status === auditConst.status.checked) {
+                //     throw '该计量期当前不可编辑';
+                // }
+                // if (ctx.session.sessionUser.accountId !== stage.user_id) {
+                //     throw '您无权修改该数据';
+                // }
+                await this.ctx.service.material.saveMaterial(data.mid, data.period);
+                ctx.redirect('/tender/' + ctx.tender.id + '/measure/material');
+            } catch (err) {
+                this.log(err);
+                ctx.redirect('/tender/' + ctx.tender.id + '/measure/material');
+            }
+        }
+
+        /**
          * 新增期(Post)
          * @param ctx
          * @return {Promise<void>}

+ 39 - 1
app/public/js/measure_material.js

@@ -246,5 +246,43 @@ $(function () {
         }
         $(this).text('正在生成新一期数据中,请勿刷新本页!...');
         $(this).parents('form').submit();
-    })
+    });
+    let editPeriod = null;
+    $('.edit-material').on('click', function () {
+        const order = parseInt($(this).data('order'));
+        const mid = parseInt($(this).data('mid'));
+        $('#edit-period').val('');
+        $('#edit-name').val('第 ' + order + ' 期');
+        $('#edit-mid').val(mid);
+        const m_period = $(this).data('period');
+        const period = [];
+        for (const p of m_period.split('~')) {
+            if (p && p !== '') {
+                period.push(new Date(p));
+            }
+        }
+        $('#edit-period').val(m_period);
+        editPeriod = !editPeriod ? $('#edit-period').datepicker().data('datepicker') : editPeriod;
+        editPeriod.clear();
+        if (period.length > 0) {
+            editPeriod.selectDate(period);
+        }
+
+    });
 });
+function checkForm () {
+    if ($('#edit-period').val() == '') {
+        toastr.error('请选择调差周期');
+        return false;
+    }
+    // const date = $('#edit-date').val();
+    // const period = $('#edit-period').val();
+    // const startDate = period.split('~')[0];
+    // const endDate = period.split('~')[1];
+    // if (startDate.indexOf(date) === -1 && endDate.indexOf(date) === -1) {
+    //     toastr.error('所选日期与当前月份不匹配,请重新选择');
+    //     $('#edit-period').parents('.form-group').find('.text-danger').remove();
+    //     $('#edit-period').parents('.form-group').append('<small class="text-danger">所选日期与当前月份不匹配,请重新选择</small>');
+    //     return false;
+    // }
+};

+ 1 - 0
app/router.js

@@ -509,6 +509,7 @@ module.exports = app => {
     app.post('/tender/:id/measure/material/delete', sessionAuth, tenderCheck, uncheckTenderCheck, 'materialController.delete');
     app.post('/tender/:id/measure/material/auditors', sessionAuth, tenderCheck, uncheckTenderCheck, 'materialController.materialAuditors');
     app.post('/tender/:id/measure/material/:order/save/decimal', sessionAuth, tenderCheck, uncheckTenderCheck, materialCheck, 'materialController.saveDecimal');
+    app.post('/tender/:id/measure/material/save', sessionAuth, tenderCheck, uncheckTenderCheck, 'materialController.save');
     // 审批
     app.post('/tender/:id/measure/material/:order/audit/add', sessionAuth, tenderCheck, uncheckTenderCheck, materialCheck, 'materialController.addAudit');
     app.post('/tender/:id/measure/material/:order/audit/delete', sessionAuth, tenderCheck, uncheckTenderCheck, materialCheck, 'materialController.deleteAudit');

+ 14 - 0
app/service/material.js

@@ -139,6 +139,7 @@ module.exports = app => {
             const newMaterial = {
                 tid: tenderId,
                 order,
+                period: data.period,
                 in_time: new Date(),
                 times: 1,
                 status: auditConst.status.uncheck,
@@ -197,6 +198,19 @@ module.exports = app => {
         }
 
         /**
+         * 编辑计量期
+         *
+         * @param {Number} mid - 第N期
+         * @param {String} period - 开始-截止时间
+         * @return {Promise<void>}
+         */
+        async saveMaterial(mid, period) {
+            await this.db.update(this.tableName, {
+                period,
+            }, { where: { id: mid } });
+        }
+
+        /**
          * 删除材料调差期
          *
          * @param {Number} id - 期Id

+ 10 - 0
app/view/material/index.ejs

@@ -23,6 +23,7 @@
                         <th rowspan="2">期数</th>
                         <th class="text-center" rowspan="2">添加时间</th>
                         <th class="text-center" rowspan="2">计量期</th>
+                        <th class="text-center" rowspan="2">调差周期</th>
                         <th class="text-center" colspan="<% if (openMaterialTax && !allMaterialTax) { %>3<% } else { %>2<% } %>">信息价调差</th>
                         <th class="text-center" colspan="2">指数法调差</th>
                         <th class="text-center" colspan="<% if (openMaterialTax) { %>3<% } else { %>2<% } %>">合计</th>
@@ -48,6 +49,12 @@
                             </td>
                             <td class="text-center"><%= moment(m.in_time).format('YYYY-MM-DD') %></td>
                             <td class="text-center">第 <%= m.s_order %> 期</td>
+                            <td class="text-center">
+                                <span data-toggle="tooltip" data-placement="bottom" data-original-title="<%- (m.period ? m.period : '') %>">
+                                    <%- (m.period ? (m.period.split('~')[1] ? m.period.split('~')[1] : m.period)  : '') %>
+                                </span>
+                                <a href="#edit" class="edit-material" data-mid="<%- m.id %>" data-order="<%- m.order %>" data-period="<%- m.period %>" data-toggle="modal" data-target="#edit"><i class="fa fa-pencil-square-o "></i></a>
+                            </td>
                             <td class="text-right"><%= m.m_tp !== null ? ctx.helper.round(m.m_tp, m.decimal.tp) : null %></td>
                             <% if (openMaterialTax) { %><td class="text-right"><% if (m.material_tax) { %><% if (m.m_tax_tp) { %><%- m.m_tax_tp %><% } else { %><%- m.m_tp %><% } %><% } %></td><% } %>
                             <% if ((openMaterialTax && !allMaterialTax) || !openMaterialTax) { %><td class="text-right"><% if (!m.material_tax) { %><%= m.m_tp !== null ? ctx.helper.round(ctx.helper.mul(m.m_tp, 1+m.rate/100), m.decimal.tp) : null %><% } %></td><% } %>
@@ -85,6 +92,9 @@
     </div>
 </div>
 <script src="/public/js/sub_menu.js"></script>
+<script src="/public/js/datepicker/datepicker.min.js"></script>
+<script src="/public/js/datepicker/datepicker.zh.js"></script>
+
 <script>
     const tenderId = '<%- ctx.tender.id %>';
     const auditConst = JSON.parse('<%- auditConst2 %>');

+ 30 - 0
app/view/material/modal.ejs

@@ -13,6 +13,10 @@
                     <input class="form-control form-control-sm" value="第 <%- materials.length + 1 %> 期" type="text" readonly="">
                 </div>
                 <div class="form-group">
+                    <label>调差周期</label>
+                    <input class="datepicker-here form-control form-control-sm" autocomplete="off" readonly name="period" placeholder="点击选择时间" data-range="true" data-multiple-dates-separator=" ~ " data-language="zh" type="text">
+                </div>
+                <div class="form-group">
                     <label>本期调差,包含计量期<span class="ml-2 text-danger" id="show_order" style="display: none">第<b class="mx-2"></b>期</span></label>
                     <div class="row">
                         <% for (const stage of stages) { %>
@@ -58,6 +62,32 @@
     </div>
 </div>
 <% } %>
+<!--设置-->
+<div class="modal fade" id="edit" data-backdrop="static">
+    <div class="modal-dialog" role="document">
+        <form class="modal-content" action="<%- preUrl + '/measure/material/save' %>" method="post" onsubmit="return checkForm();">
+            <div class="modal-header">
+                <h5 class="modal-title">调差周期编辑</h5>
+            </div>
+            <div class="modal-body">
+                <div class="form-group">
+                    <label>期</label>
+                    <input class="form-control form-control-sm" id="edit-name" value="" type="text" readonly="" name="name">
+                </div>
+                <div class="form-group">
+                    <label>调差周期<b class="text-danger">*</b></label>
+                    <input class="datepicker-here form-control form-control-sm" autocomplete="off" readonly id="edit-period" name="period" placeholder="点击选择时间" data-range="true" data-multiple-dates-separator=" ~ " data-language="zh" type="text">
+                </div>
+            </div>
+            <div class="modal-footer">
+                <input type="hidden" name="_csrf_j" value="<%= ctx.csrf %>" />
+                <input type="hidden" name="mid" id="edit-mid" value="">
+                <button type="button" class="btn btn-secondary btn-sm" data-dismiss="modal">关闭</button>
+                <button type="submit" class="btn btn-primary btn-sm" id="edit-ok" >确定修改</button>
+            </div>
+        </form>
+    </div>
+</div>
 <!--审批流程/结果-->
 <div class="modal fade" id="sp-list" data-backdrop="static">
     <div class="modal-dialog modal-lg" role="document">

+ 2 - 0
sql/update.sql

@@ -231,3 +231,5 @@ CREATE TABLE `zh_change_plan_list`  (
   PRIMARY KEY (`id`) USING BTREE
 ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_unicode_ci COMMENT = '变更方案清单表' ROW_FORMAT = Dynamic;
 
+ALTER TABLE `zh_material` ADD `period` VARCHAR(255) NULL DEFAULT NULL COMMENT '调差周期' AFTER `s_order`;
+