financial_transfer.js 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. $(function () {
  2. autoFlashHeight();
  3. $('#add-transfer-btn').on('click', function () {
  4. if ($('#transfer-date').val() === '') {
  5. toastr.error('请选择日期');
  6. return false;
  7. }
  8. $('#add-transfer-form').submit();
  9. });
  10. let editPeriod = null;
  11. $('.edit-time').on('click', function () {
  12. const t_time = $(this).data('time');
  13. const ftid = parseInt($(this).data('ftid'));
  14. console.log(t_time, ftid);
  15. $('#edit-transfer-date').val('');
  16. $('#edit-ftid').val(ftid);
  17. $('#edit-transfer-date').val(t_time);
  18. editPeriod = !editPeriod ? $('#edit-transfer-date').datepicker().data('datepicker') : editPeriod;
  19. editPeriod.clear();
  20. editPeriod.selectDate(new Date(t_time));
  21. });
  22. $('#edit-ok').click(function () {
  23. const id = parseInt($('#edit-ftid').val());
  24. if (!id) {
  25. toastr.error('获取资金划拨信息失败');
  26. return;
  27. }
  28. const trInfo = _.find(transferList, { id });
  29. if (!trInfo) {
  30. toastr.error('获取资金划拨信息失败');
  31. return;
  32. }
  33. const t_time = $('#edit-transfer-date').val();
  34. if (t_time === '') {
  35. toastr.error('请选择划拨年月');
  36. return false;
  37. }
  38. postData(window.location.pathname + '/update', {postType: 'edit-transfer-time', postData: { id, t_time }}, function (result) {
  39. window.location.reload();
  40. })
  41. });
  42. $('body').on('click', '#transfer-list .del-transfer-btn', function () {
  43. const trid = $(this).data('id');
  44. deleteAfterHint(function () {
  45. postData(window.location.pathname + '/update', {postType: 'del-transfer', postData: { node: trid }}, function (result) {
  46. window.location.reload();
  47. })
  48. }, '确认删除该资金划拨并移除所有附件?');
  49. });
  50. $('body').on('click', '.open-transfer-files', function () {
  51. const trid = $(this).attr('data-trid');
  52. if (!trid) {
  53. toastr.error('获取资金划拨信息失败');
  54. return;
  55. }
  56. const trInfo = _.find(transferList, { id: parseInt(trid) });
  57. if (!trInfo) {
  58. toastr.error('获取资金划拨信息失败');
  59. return;
  60. }
  61. if (trInfo.uid === user_id || financialPermission.transfer_file) {
  62. $('#transfer-file .upload-permission').show();
  63. } else {
  64. $('#transfer-file .upload-permission').hide();
  65. }
  66. $('#transfer-file').modal('show');
  67. $('#transfer-file input[name="trid"]').val(trid);
  68. openFinancialTransferFiles(trInfo);
  69. });
  70. // 上传附件
  71. $('#transfer-file input[type="file"]').change(function () {
  72. const files = Array.from(this.files);
  73. const valiData = files.map(v => {
  74. const ext = v.name.substring(v.name.lastIndexOf('.') + 1)
  75. return {
  76. size: v.size,
  77. ext
  78. }
  79. });
  80. const trid = $('#transfer-file input[name="trid"]').val();
  81. const trInfo = _.find(transferList, { id: parseInt(trid) });
  82. if (!trInfo) {
  83. toastr.warning('不存在该资金划拨');
  84. $('#transfer-file input[type="file"]').val('');
  85. return;
  86. }
  87. if (validateFiles(valiData)) {
  88. if (files.length) {
  89. const formData = new FormData()
  90. files.forEach(file => {
  91. formData.append('name', file.name)
  92. formData.append('size', file.size)
  93. formData.append('file', file)
  94. })
  95. postDataWithFile(`/sp/${spid}/financial/transfer/${trInfo.id}/file/upload`, formData, function (result) {
  96. trInfo.files = result;
  97. openFinancialTransferFiles(trInfo);
  98. $('#transfer-list tr[data-id="' + trInfo.id + '"] .file-num').text(trInfo.files.length ? trInfo.files.length : '');
  99. });
  100. }
  101. }
  102. $('#transfer-file input[type="file"]').val('');
  103. });
  104. $('body').on('click', '#transfer-file .file-del', function () {
  105. const trid = $('#transfer-file input[name="trid"]').val();
  106. const trInfo = _.find(transferList, { id: parseInt(trid) });
  107. if (!trInfo) {
  108. toastr.warning('不存在该资金划拨');
  109. return;
  110. }
  111. const fid = $(this).data('id');
  112. deleteAfterHint(function () {
  113. postData(`/sp/${spid}/financial/transfer/${trInfo.id}/file/delete`, { id: fid }, function (result) {
  114. trInfo.files = result;
  115. openFinancialTransferFiles(trInfo);
  116. $('#transfer-list tr[data-id="' + trInfo.id + '"] .file-num').text(trInfo.files.length ? trInfo.files.length : '');
  117. });
  118. }, '确认删除该文件?');
  119. });
  120. function openFinancialTransferFiles(trInfo, _this = '#transfer-file table tbody') {
  121. const files = trInfo.files;
  122. let filesHtml = '';
  123. const newFiles = files.map(file => {
  124. let showDel = false;
  125. if (file.uid === user_id) {
  126. showDel = true
  127. }
  128. return {...file, showDel}
  129. })
  130. newFiles.forEach((file, idx) => {
  131. filesHtml += `<tr class="text-center">
  132. <td>${idx + 1}</td><td class="text-left"><a href="${file.filepath}" target="_blank">${file.filename}</a></td><td>${file.username}</td><td>${moment(file.upload_time).format('YYYY-MM-DD HH:mm:ss')}</td>
  133. <td>
  134. <div class="btn-group-table">
  135. ${file.viewpath ? `<a href="${file.viewpath}" target="_blank" class="mr-1"><i class="fa fa-eye fa-fw"></i></a>` : ''}
  136. <a href="/sp/${spid}/financial/transfer/${trInfo.id}/file/${file.id}/download" class="mr-1"><i class="fa fa-download fa-fw"></i></a>
  137. ${file.showDel ? `<a href="javascript: void(0);" class="text-danger file-del mr-1" data-id="${file.id}"><i class="fa fa-trash-o fa-fw text-danger"></i></a>` : ''}
  138. </div>
  139. </td>
  140. </tr>`;
  141. });
  142. $(_this).html(filesHtml);
  143. }
  144. $('body').on('click', '#transfer-list .edit-remark', function () {
  145. const trid = $(this).data('id');
  146. const trInfo = _.find(transferList, { id: trid });
  147. if (!trInfo) {
  148. toastr.error('获取资金划拨信息失败');
  149. return;
  150. }
  151. $('#edit-remark-modal .transfer-time').text(trInfo.t_time);
  152. $('#edit-remark-modal').modal('show');
  153. $('#edit-remark-modal input[name="ftid"]').val(trid);
  154. $('#edit-remark-modal textarea[name="remark"]').val(trInfo.remark);
  155. });
  156. $('#save-remark-btn').click(function () {
  157. const data = {
  158. id: parseInt($('#edit-remark-modal input[name="ftid"]').val()),
  159. remark: $('#edit-remark-modal textarea[name="remark"]').val(),
  160. }
  161. const trInfo = _.find(transferList, { id: data.id });
  162. if (!trInfo) {
  163. toastr.error('获取资金划拨信息失败');
  164. return;
  165. }
  166. postData(window.location.pathname + '/update', {postType: 'save-transfer', postData: data}, function (result) {
  167. trInfo.remark = data.remark;
  168. $('#edit-remark-modal').modal('hide');
  169. $('#transfer-list tr[data-id="' + trInfo.id + '"] .show-remark').html(trInfo.remark);
  170. });
  171. });
  172. $.subMenu({
  173. menu: '#sub-menu', miniMenu: '#sub-mini-menu', miniMenuList: '#mini-menu-list',
  174. toMenu: '#to-menu', toMiniMenu: '#to-mini-menu',
  175. key: 'menu.1.0.0',
  176. miniHint: '#sub-mini-hint', hintKey: 'menu.hint.1.0.1',
  177. callback: function (info) {
  178. if (info.mini) {
  179. $('.panel-title').addClass('fluid');
  180. $('#sub-menu').removeClass('panel-sidebar');
  181. } else {
  182. $('.panel-title').removeClass('fluid');
  183. $('#sub-menu').addClass('panel-sidebar');
  184. }
  185. autoFlashHeight();
  186. }
  187. });
  188. })
  189. /**
  190. * 校验文件大小、格式
  191. * @param {Array} files 文件数组
  192. */
  193. function validateFiles(files) {
  194. if (files.length > 10) {
  195. toastr.error('至多同时上传10个文件');
  196. return false
  197. }
  198. return files.every(file => {
  199. if (file.size > 1024 * 1024 * 50) {
  200. toastr.error('文件大小限制为50MB');
  201. return false
  202. }
  203. if (whiteList.indexOf('.' + file.ext.toLowerCase()) === -1) {
  204. toastr.error('请上传正确的格式文件');
  205. return false
  206. }
  207. return true
  208. })
  209. }