ellisran пре 9 месеци
родитељ
комит
7cfaba3e2d

+ 3 - 0
app/controller/financial_controller.js

@@ -237,6 +237,9 @@ module.exports = app => {
                     case 'lock-transfer':
                     case 'lock-transfer':
                         responseData.data = await ctx.service.financialTransfer.lockTransfer(data.postData.node, data.postData.lock);
                         responseData.data = await ctx.service.financialTransfer.lockTransfer(data.postData.node, data.postData.lock);
                         break;
                         break;
+                    case 'save-transfer':
+                        responseData.data = await ctx.service.financialTransfer.saveTransfer(data.postData);
+                        break;
                     default:
                     default:
                         throw '未知操作';
                         throw '未知操作';
                 }
                 }

+ 32 - 0
app/public/js/financial_transfer.js

@@ -67,6 +67,7 @@ $(function () {
                 postDataWithFile('/financial/' + spid + '/transfer/' + trInfo.id + '/file/upload', formData, function (result) {
                 postDataWithFile('/financial/' + spid + '/transfer/' + trInfo.id + '/file/upload', formData, function (result) {
                     trInfo.files = result;
                     trInfo.files = result;
                     openFinancialTransferFiles(trInfo);
                     openFinancialTransferFiles(trInfo);
+                    $('#transfer-list tr[data-id="' + trInfo.id + '"] .file-num').text(trInfo.files.length ? trInfo.files.length : '');
                 });
                 });
             }
             }
         }
         }
@@ -85,6 +86,7 @@ $(function () {
             postData('/financial/' + spid + '/transfer/' + trInfo.id + '/file/delete', { id: fid }, function (result) {
             postData('/financial/' + spid + '/transfer/' + trInfo.id + '/file/delete', { id: fid }, function (result) {
                 trInfo.files = result;
                 trInfo.files = result;
                 openFinancialTransferFiles(trInfo);
                 openFinancialTransferFiles(trInfo);
+                $('#transfer-list tr[data-id="' + trInfo.id + '"] .file-num').text(trInfo.files.length ? trInfo.files.length : '');
             });
             });
         }, '确认删除该文件?');
         }, '确认删除该文件?');
     });
     });
@@ -114,6 +116,36 @@ $(function () {
         $(_this).html(filesHtml);
         $(_this).html(filesHtml);
     }
     }
 
 
+    $('body').on('click', '#transfer-list .edit-remark', function () {
+        const trid = $(this).data('id');
+        const trInfo = _.find(transferList, { id: trid });
+        if (!trInfo) {
+            toastr.error('获取资金划拨信息失败');
+            return;
+        }
+        $('#edit-remark-modal .transfer-time').text(trInfo.t_time);
+        $('#edit-remark-modal').modal('show');
+        $('#edit-remark-modal input[name="ftid"]').val(trid);
+        $('#edit-remark-modal textarea[name="remark"]').val(trInfo.remark);
+    });
+
+    $('#save-remark-btn').click(function () {
+        const data = {
+            id: parseInt($('#edit-remark-modal input[name="ftid"]').val()),
+            remark: $('#edit-remark-modal textarea[name="remark"]').val(),
+        }
+        const trInfo = _.find(transferList, { id: data.id });
+        if (!trInfo) {
+            toastr.error('获取资金划拨信息失败');
+            return;
+        }
+        postData(window.location.pathname + '/update', {postType: 'save-transfer', postData: data}, function (result) {
+            trInfo.remark = data.remark;
+            $('#edit-remark-modal').modal('hide');
+            $('#transfer-list tr[data-id="' + trInfo.id + '"] .show-remark').html(trInfo.remark);
+        });
+    });
+
     $.subMenu({
     $.subMenu({
         menu: '#sub-menu', miniMenu: '#sub-mini-menu', miniMenuList: '#mini-menu-list',
         menu: '#sub-menu', miniMenu: '#sub-mini-menu', miniMenuList: '#mini-menu-list',
         toMenu: '#to-menu', toMiniMenu: '#to-mini-menu',
         toMenu: '#to-menu', toMiniMenu: '#to-mini-menu',

+ 2 - 0
app/public/js/financial_transfer_tender.js

@@ -98,6 +98,7 @@ $(function () {
                 postDataWithFile('/financial/' + spid + '/transfer/' + trid + '/tender/' + ftInfo.id + '/file/upload', formData, function (result) {
                 postDataWithFile('/financial/' + spid + '/transfer/' + trid + '/tender/' + ftInfo.id + '/file/upload', formData, function (result) {
                     ftInfo.files = result;
                     ftInfo.files = result;
                     openFinancialTransferTenderFiles(ftInfo);
                     openFinancialTransferTenderFiles(ftInfo);
+                    $('#tender-list tr[data-id="' + ftInfo.id + '"] .file-num').text(ftInfo.files.length ? ftInfo.files.length : '');
                 });
                 });
             }
             }
         }
         }
@@ -116,6 +117,7 @@ $(function () {
             postData('/financial/' + spid + '/transfer/' + trid + '/tender/' + ftInfo.id + '/file/delete', { id: fid }, function (result) {
             postData('/financial/' + spid + '/transfer/' + trid + '/tender/' + ftInfo.id + '/file/delete', { id: fid }, function (result) {
                 ftInfo.files = result;
                 ftInfo.files = result;
                 openFinancialTransferTenderFiles(ftInfo);
                 openFinancialTransferTenderFiles(ftInfo);
+                $('#tender-list tr[data-id="' + ftInfo.id + '"] .file-num').text(ftInfo.files.length ? ftInfo.files.length : '');
             });
             });
         }, '确认删除该文件?');
         }, '确认删除该文件?');
     });
     });

+ 20 - 1
app/service/financial_transfer.js

@@ -22,7 +22,7 @@ module.exports = app => {
         }
         }
 
 
         async getList(spid) {
         async getList(spid) {
-            const sql = 'SELECT ft.*, pa.`name` as username, pa.`company` FROM ?? as ft LEFT JOIN ?? as pa ON ft.`uid` = pa.`id` WHERE ft.`spid` = ?';
+            const sql = 'SELECT ft.*, pa.`name` as username, pa.`company` FROM ?? as ft LEFT JOIN ?? as pa ON ft.`uid` = pa.`id` WHERE ft.`spid` = ? ORDER BY ft.`id` DESC';
             const sqlParams = [this.tableName, this.ctx.service.projectAccount.tableName, spid];
             const sqlParams = [this.tableName, this.ctx.service.projectAccount.tableName, spid];
             const list = await this.db.query(sql, sqlParams);
             const list = await this.db.query(sql, sqlParams);
             for (const l of list) {
             for (const l of list) {
@@ -32,6 +32,10 @@ module.exports = app => {
         }
         }
 
 
         async addTransfer(spid, date, remark) {
         async addTransfer(spid, date, remark) {
+            const node = await this.getDataByCondition({ spid, t_time: date });
+            if (node) {
+                throw '资金划拨年月已存在,请勿重复';
+            }
             const insertData = {
             const insertData = {
                 spid,
                 spid,
                 t_time: date,
                 t_time: date,
@@ -84,6 +88,21 @@ module.exports = app => {
             const result = await this.db.update(this.tableName, { id: node.id, is_lock: lock });
             const result = await this.db.update(this.tableName, { id: node.id, is_lock: lock });
             return result.affectedRows === 1;
             return result.affectedRows === 1;
         }
         }
+
+        async saveTransfer(data) {
+            if (!data.id) {
+                throw '参数有误';
+            }
+            const node = await this.getDataById(data.id);
+            if (!node) {
+                throw '该资金划拨不存在';
+            }
+            if (node.uid !== this.ctx.session.sessionUser.accountId) {
+                throw '您没有权限操作';
+            }
+            const result = await this.db.update(this.tableName, data);
+            return result.affectedRows === 1;
+        }
     }
     }
     return FinancialTransfer;
     return FinancialTransfer;
 };
 };

+ 3 - 3
app/view/financial/transfer.ejs

@@ -31,15 +31,15 @@
                     <tbody id="transfer-list">
                     <tbody id="transfer-list">
                     <% if (transferList.length > 0) { %>
                     <% if (transferList.length > 0) { %>
                     <% for (const [i, t] of transferList.entries()) { %>
                     <% for (const [i, t] of transferList.entries()) { %>
-                    <tr class="text-center">
+                    <tr class="text-center" data-id="<%- t.id %>">
                         <td class=""><%- (transferList.length - i) %></td>
                         <td class=""><%- (transferList.length - i) %></td>
                         <td class=""><a href="/financial/<%- ctx.subProject.id %>/transfer/<%- t.id %>/tender"><%- t.t_time %></a></td>
                         <td class=""><a href="/financial/<%- ctx.subProject.id %>/transfer/<%- t.id %>/tender"><%- t.t_time %></a></td>
                         <td class="text-right"><%- t.total_price %></td>
                         <td class="text-right"><%- t.total_price %></td>
                         <td class=""><%- t.username %></td>
                         <td class=""><%- t.username %></td>
                         <td class="text-left" ><%- t.company %></td>
                         <td class="text-left" ><%- t.company %></td>
                         <td class="" ><%- moment(t.create_time).format('YYYY-MM-DD HH:mm:ss') %></td>
                         <td class="" ><%- moment(t.create_time).format('YYYY-MM-DD HH:mm:ss') %></td>
-                        <td class="" ><%- t.remark %></td>
-                        <td class="" ><a href="javascript:void(0);" data-trid="<%- t.id %>" class="text-primary open-transfer-files"><i class="fa fa-paperclip fa-rotate-90"></i></a></td>
+                        <td class="" ><span class="show-remark"><%- t.remark %></span> <% if (t.uid === ctx.session.sessionUser.accountId) { %><a href="javascript:void(0);" class="edit-remark" data-id="<%- t.id %>"><i class="fa fa-pencil-square-o"></i></a><% } %></td>
+                        <td class="" ><a href="javascript:void(0);" data-trid="<%- t.id %>" class="text-primary open-transfer-files"><i class="fa fa-paperclip fa-rotate-90"></i></a> <span class="file-num"><%- t.files.length > 0 ? t.files.length : '' %></span></td>
                         <% if (ctx.session.sessionUser.is_admin) { %>
                         <% if (ctx.session.sessionUser.is_admin) { %>
                         <td><a href="javascript:void(0);" class="text-danger del-transfer-btn" data-id="<%- t.id %>">删除</a></td>
                         <td><a href="javascript:void(0);" class="text-danger del-transfer-btn" data-id="<%- t.id %>">删除</a></td>
                         <% } %>
                         <% } %>

+ 17 - 0
app/view/financial/transfer_modal.ejs

@@ -61,3 +61,20 @@
         </div>
         </div>
     </div>
     </div>
 </div>
 </div>
+<div class="modal fade" id="edit-remark-modal" data-backdrop="static" style="z-index: 1049">
+    <input type="hidden" name="ftid">
+    <div class="modal-dialog" role="document">
+        <div class="modal-content">
+            <div class="modal-header">
+                <h5 class="modal-title">填报备注(<span class="transfer-time"></span>)</h5>
+            </div>
+            <div class="modal-body">
+                <textarea class="form-control form-control-sm" rows="5" name="remark"></textarea>
+            </div>
+            <div class="modal-footer">
+                <button type="button" class="btn btn-outline-secondary btn-sm" data-dismiss="modal">关闭</button>
+                <button type="button" class="btn btn-primary btn-sm" id="save-remark-btn">确定</button>
+            </div>
+        </div>
+    </div>
+</div>

+ 2 - 2
app/view/financial/transfer_tender.ejs

@@ -41,7 +41,7 @@
                     <tbody id="tender-list">
                     <tbody id="tender-list">
                     <% if (transferTenderList.length > 0) { %>
                     <% if (transferTenderList.length > 0) { %>
                     <% for (const [i, t] of transferTenderList.entries()) { %>
                     <% for (const [i, t] of transferTenderList.entries()) { %>
-                    <tr class="text-right">
+                    <tr class="text-right" data-id="<%- t.id %>">
                         <td class="text-center"><%- i+1 %></td>
                         <td class="text-center"><%- i+1 %></td>
                         <td class="text-left"><%- t.name %></td>
                         <td class="text-left"><%- t.name %></td>
                         <td class="text-center">第<%- t.sorder %>期</td>
                         <td class="text-center">第<%- t.sorder %>期</td>
@@ -52,7 +52,7 @@
                         <td class="" ><%- t.yf_tp %></td>
                         <td class="" ><%- t.yf_tp %></td>
                         <td class="" ><%- t.sf_tp %></td>
                         <td class="" ><%- t.sf_tp %></td>
                         <td><% if (transferInfo.uid === ctx.session.sessionUser.accountId && !transferInfo.is_lock) { %><input type="text" class="form-control form-control-sm" placeholder="默认等于本期实付" data-ftid="<%- t.id %>" value="<%- t.hb_tp %>"><% } else { %><%- t.hb_tp %><% } %></td>
                         <td><% if (transferInfo.uid === ctx.session.sessionUser.accountId && !transferInfo.is_lock) { %><input type="text" class="form-control form-control-sm" placeholder="默认等于本期实付" data-ftid="<%- t.id %>" value="<%- t.hb_tp %>"><% } else { %><%- t.hb_tp %><% } %></td>
-                        <td class="text-center" ><a href="javascript:void(0);" class="text-primary open-tender-files" data-ftid="<%- t.id %>"><i class="fa fa-paperclip fa-rotate-90"></i></a></td>
+                        <td class="text-center" ><a href="javascript:void(0);" class="text-primary open-tender-files" data-ftid="<%- t.id %>"><i class="fa fa-paperclip fa-rotate-90"></i></a> <span class="file-num"><%- t.files.length > 0 ? t.files.length : '' %></span></td>
                         <% if (transferInfo.uid === ctx.session.sessionUser.accountId) { %><td class="text-center"><% if (!transferInfo.is_lock) { %><a class="text-danger del-tender-btn" href="javascript:void(0);" data-id="<%- t.id %>">移除</a><% } %></td><% } %>
                         <% if (transferInfo.uid === ctx.session.sessionUser.accountId) { %><td class="text-center"><% if (!transferInfo.is_lock) { %><a class="text-danger del-tender-btn" href="javascript:void(0);" data-id="<%- t.id %>">移除</a><% } %></td><% } %>
                     </tr>
                     </tr>
                     <% } %>
                     <% } %>