Forráskód Böngészése

feat: 变更新增拷贝变更令功能

lanjianrong 4 éve
szülő
commit
d7e7be058e

+ 26 - 0
app/controller/change_controller.js

@@ -269,6 +269,9 @@ module.exports = app => {
                 // 获取附件列表
                 const attList = await ctx.service.changeAtt.getChangeAttachment(ctx.params.cid);
 
+                // 获取其他变更令数据
+                const othersChange = await ctx.service.change.getOthersChange(ctx.params.id, ctx.params.cid);
+
                 // 根据auditStatus获取审批人列表
                 const auditList = await ctx.service.changeAudit.getListByStatus(change, auditStatus);
                 // 获取已选清单
@@ -281,6 +284,7 @@ module.exports = app => {
                     uid: ctx.session.sessionUser.accountId,
                     tender,
                     change,
+                    othersChange,
                     changeConst,
                     auditStatus,
                     auditConst: audit.flow,
@@ -968,6 +972,28 @@ module.exports = app => {
 
             ctx.body = responseData;
         }
+
+        /**
+         * 拷贝其他变更令
+         * @param {object} ctx - 全局上下文
+         */
+        async copyChange(ctx) {
+            const responseData = {
+                err: 0,
+                msg: '',
+                data: '',
+            };
+            try {
+                const cid = ctx.params.cid;
+                const copy_cid = JSON.parse(ctx.request.body.data);
+                await ctx.service.change.handleCopyChange(cid, copy_cid);
+            } catch (error) {
+                responseData.err = 1;
+                responseData.msg = error;
+            }
+            ctx.body = responseData;
+
+        }
     }
 
     return ChangeController;

+ 16 - 0
app/public/js/change_detail.js

@@ -49,6 +49,22 @@ $(document).ready(() => {
             $('#bills').removeClass('first-bill-pane');
         }
     });
+
+    $('#add-bj').on('click', 'input[type="checkbox"]', function () {
+        const isCheck = $(this).prop('checked')
+        if (isCheck) {
+            $('#add-bj input[type="checkbox"]').each(function () {
+                $(this).prop('checked', false)
+            })
+            $(this).prop('checked', true)
+        }
+    })
+    $('#bg-copy').click(function() {
+        const cid = $('#add-bj input:checked').data('id')
+        postData(window.location.pathname + '/copy', cid, function () {
+            window.location.reload()
+        })
+    })
     // 上传附件
     $('#upload-file-btn').click(function () {
         const files = $('#upload-file')[0].files;

+ 1 - 1
app/router.js

@@ -325,7 +325,7 @@ module.exports = app => {
     app.post('/tender/:id/change/check/again', sessionAuth, tenderCheck, uncheckTenderCheck, 'changeController.checkAgain');
 
     app.post('/tender/:id/change/:cid/check/codeRepeat', sessionAuth, tenderCheck, uncheckTenderCheck, 'changeController.checkCodeRepeat');
-
+    app.post('/tender/:id/change/:cid/info/copy', sessionAuth, tenderCheck, uncheckTenderCheck, 'changeController.copyChange');
     // 变更单位管理
     app.post('/change/update/company', sessionAuth, 'changeController.updateCompany');
 

+ 23 - 1
app/service/change.js

@@ -957,7 +957,7 @@ module.exports = app => {
          */
         async getValidChanges(tid, bills, pos) {
             const self = this;
-            const getFilterPart = function (field, value) {
+            const getFilterPart = function(field, value) {
                 return value
                     ? field + ' = ' + self.db.escape(value)
                     : self.db.format("(?? = null or ?? = '')", [field, field]);
@@ -1308,6 +1308,28 @@ module.exports = app => {
             const content = await this.db.query(noticeSql, noticeSqlParam);
             return content.length ? JSON.stringify(content[0]) : '';
         }
+
+        /**
+         * 获取当前标段其他变更令
+         * @param {Number} tid - 标段id
+         * @param {Number} cid - 当前变更令
+         */
+        async getOthersChange(tid, cid) {
+            const sql = 'SELECT * FROM ?? WHERE tid = ? AND cid != ? ORDER BY ? desc ';
+            const sqlParam = [this.tableName, tid, cid, 'in_time'];
+            return await this.db.query(sql, sqlParam);
+        }
+
+        /**
+         * 拷贝变更令至当前变更令
+         * @param {String} cid - 当前变更令
+         * @param {String} copy_cid - 要拷贝的变更令
+         */
+        async handleCopyChange(cid, copy_cid) {
+            const change = await this.getDataByCondition({ cid });
+            const copyChange = await this.getDataByCondition({ cid: copy_cid });
+
+        }
     }
 
     return Change;

+ 11 - 1
app/view/change/info.ejs

@@ -124,7 +124,17 @@
 <div class="panel-content">
     <div class="panel-title pr-0">
         <div class="title-main d-flex justify-content-between">
-            <h2 id="info_title" class="show_title">变更信息</h2>
+            <!-- <h2 id="info_title" class="show_title">变更信息</h2> -->
+            <h2 id="info_title" class="show_title">
+                <% if(auditStatus === auditConst.status.uncheck || auditStatus === auditConst.status.back) { %>
+                    <div class="d-inline-block">
+                        <a class="btn btn-sm btn-primary" href="#add-bj" data-toggle="modal" data-target="#add-bj">拷贝其他变更令数据</a>
+                    </div>
+                <% } else { %>
+                    <span>变更信息</span>
+                <% } %>
+            </h2>
+
             <div id="bills_title" class="show_title" style="line-height:34px;display: none">
                 <div>
                     <% if (auditStatus === 1 || auditStatus === 2) { %>

+ 30 - 0
app/view/change/info_modal.ejs

@@ -999,6 +999,36 @@
         </div>
     </div>
 </div>
+
+<!--填充历史变更-->
+<div class="modal fade" id="add-bj" data-backdrop="static">
+    <div class="modal-dialog modal-lg" role="document">
+        <div class="modal-content">
+            <div class="modal-header">
+                <h5 class="modal-title">拷贝其他变更令数据</h5>
+            </div>
+            <div class="modal-body">
+            <div class="alert alert-warning p-2">选择需要拷贝的变更令,确认后将为您自动生成变更信息</div>
+            <div style="height: 300px; overflow: scroll; overflow-x: hidden;">
+                <table class="table table-bordered" >
+                    <thead>
+                        <tr><th>申请编号/变更令号</th><th>工程名称</th><th>变更类别</th><th>变更金额</th><th>审批状态</th><th>选择</th></tr>
+                    </thead>
+                    <tbody >
+                        <% othersChange.forEach(change => { %>
+                            <tr><td><%- change.code%></td><td><%- change.name%></td><td><%- change.type%></td><td><%- change.total_price %></td><td><%- change.status%></td><td><input type="checkbox" data-id="<%- change.cid %>"></td></tr>
+                        <% }); %>
+                    </tbody>
+                </table>
+            </div>
+            <div class="modal-footer">
+            <button type="button" class="btn btn-sm btn-secondary" data-dismiss="modal">关闭</button>
+            <button type="button" class="btn btn-sm btn-primary" id="bg-copy">确认拷贝</button>
+            </div>
+        </div>
+    </div>
+</div>
+
 <script type="text/javascript">
     const csrf = '<%= ctx.csrf %>';
     const authMobile = '<%= authMobile %>';