uploadImg.js 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. 'use strict';
  2. /**
  3. *
  4. *
  5. * @author Zhong
  6. * @date 2018/10/17
  7. * @version
  8. */
  9. $(document).ready(function () {
  10. //每页显示的图片数(后端也进行了控制)
  11. const perImgs = 3;
  12. /*
  13. * 上传图片,清单规则、定额说明、定额工程量计算规则共用
  14. * 通过各自的上传图片按钮value值判定触发来源
  15. * 根据触发来源放置图片位置,一个来源一个文件夹,便于管理
  16. * */
  17. let curTrigger = '';
  18. //同一页面中的所有触发器(定额中的说明和工程量计算规则都能上传图片)
  19. let allTriggers = $('.uploadImgTrigger');
  20. for(let theTrigger of allTriggers){
  21. //点击上传图片
  22. $(theTrigger).click(function () {
  23. curTrigger = $(theTrigger).attr('trigger');
  24. loadImges(curTrigger, 1);
  25. });
  26. }
  27. $('#uploadImgFile').change(function(){
  28. let file = $(this)[0],
  29. img = file.files[0],
  30. trigger = curTrigger;//触发源
  31. if(img){
  32. let formData = new FormData();
  33. formData.append('file', img);
  34. formData.append('trigger', trigger);
  35. $.ajax({
  36. url: '/stdBillsEditor/uploadImg',
  37. type: 'POST',
  38. data: formData,
  39. cache: false,
  40. contentType: false,
  41. processData: false,
  42. beforeSend: function() {
  43. $.bootstrapLoading.start();
  44. },
  45. success: function(response){
  46. loadImges(trigger, 1);
  47. },
  48. error: function(){
  49. alert('上传失败');
  50. $.bootstrapLoading.end();
  51. }
  52. });
  53. }
  54. });
  55. /*
  56. * 根据触发源和页码,按时间大小降序加载图片
  57. * @param {String}trigger(触发源,同源同文件夹) {Number}page(要展示的页码)
  58. * */
  59. function loadImges(trigger, page) {
  60. if(!$.bootstrapLoading.isLoading()){
  61. $.bootstrapLoading.start();
  62. }
  63. CommonAjax.post('/stdBillsEditor/loadImgs', {trigger, page}, function (rstData) {
  64. initImgsDiv(page, rstData.pageCount, rstData.currentImgsUrl);
  65. if($.bootstrapLoading.isLoading){
  66. $.bootstrapLoading.end();
  67. }
  68. }, function () {
  69. if($.bootstrapLoading.isLoading){
  70. $.bootstrapLoading.end();
  71. }
  72. });
  73. }
  74. /*
  75. * 根据图片路径删除图片
  76. * @param {String}trigger(操作源) {String}url(要删除图片的url)
  77. * */
  78. function delImg(trigger, url) {
  79. $.bootstrapLoading.start();
  80. CommonAjax.post('/stdBillsEditor/delImg', {trigger, url}, function (rstData) {
  81. let curPage = parseInt($('#pageInfo').text().trim().split('/')[0]);
  82. loadImges(trigger, curPage);
  83. }, function () {
  84. $.bootstrapLoading.end();
  85. });
  86. }
  87. /*
  88. * 设置图片展示DIV
  89. * @param {Number}curPage(当前页码) {Number}pageCount(页面总数) {Array}imgsUrl(所要展示图片的Url域后片段)
  90. * @return{void}
  91. * */
  92. function initImgsDiv(curPage, pageCount, imgsUrl) {
  93. let origin = window.location.origin;
  94. let trigger = curTrigger;
  95. $('#prevPage').removeAttr('disabled');
  96. $('#nextPage').removeAttr('disabled');
  97. if(curPage <= 1){
  98. $('#prevPage').attr('disabled', '');
  99. }
  100. if(curPage == pageCount){
  101. $('#nextPage').attr('disabled', '');
  102. }
  103. $('#pageInfo').text(`${curPage} / ${pageCount}`);
  104. $('#imgsDiv').find('.card').remove();
  105. for(let imgUrl of imgsUrl){
  106. let idx = imgsUrl.indexOf(imgUrl);
  107. if(idx < perImgs){
  108. //时间戳转化成时间显示
  109. let date = new Date(parseInt(imgUrl.split('/').pop().split('.')[0])).toLocaleString();
  110. date = date.replace(new RegExp('/', 'g'), '-').split(' ')[0];
  111. let cardHtml = `<div class="card"><img class="card-img-top" src="${origin}/${imgUrl}" alt="Card image cap" height="180px"><div class="card-block"><p class="card-text">
  112. <input class="form-control form-control-sm" value="<img src='${origin}/${imgUrl}'>" readonly="readonly"><small class="mr-2">${date} 上传</small>
  113. <a href="javascript:void(0);" class="text-danger" delUrl="${imgUrl}" id="del${idx}">删除</a></p></div></div>`;
  114. $('#imgsDiv').find(`.col-4:eq(${idx})`).html(cardHtml);
  115. //删除图片
  116. $(`#del${idx}`).click(function () {
  117. delImg(trigger, $(this).attr('delUrl'));
  118. });
  119. }
  120. }
  121. }
  122. //上一页
  123. $('#prevPage').click(function () {
  124. let curPage = parseInt($('#pageInfo').text().trim().split('/')[0]) - 1;
  125. //加载图片
  126. loadImges(curTrigger, curPage);
  127. });
  128. //下一页
  129. $('#nextPage').click(function () {
  130. let curPage = parseInt($('#pageInfo').text().trim().split('/')[0]) + 1;
  131. //加载图片
  132. loadImges(curTrigger, curPage);
  133. });
  134. });