uploadImg.js 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  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. //去掉端口的源
  94. let origin = `${window.location.protocol}//${window.location.hostname}`;
  95. let trigger = curTrigger;
  96. $('#prevPage').removeAttr('disabled');
  97. $('#nextPage').removeAttr('disabled');
  98. if(curPage <= 1){
  99. $('#prevPage').attr('disabled', '');
  100. }
  101. if(curPage == pageCount){
  102. $('#nextPage').attr('disabled', '');
  103. }
  104. $('#pageInfo').text(`${curPage} / ${pageCount}`);
  105. $('#imgsDiv').find('.card').remove();
  106. for(let imgUrl of imgsUrl){
  107. let idx = imgsUrl.indexOf(imgUrl);
  108. if(idx < perImgs){
  109. //时间戳转化成时间显示
  110. let date = new Date(parseInt(imgUrl.split('/').pop().split('.')[0])).toLocaleString();
  111. date = date.replace(new RegExp('/', 'g'), '-').split(' ')[0];
  112. 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">
  113. <input class="form-control form-control-sm" value="<img src='${origin}/${imgUrl}'>" readonly="readonly"><small class="mr-2">${date} 上传</small>
  114. <a href="javascript:void(0);" class="text-danger" delUrl="${imgUrl}" id="del${idx}">删除</a></p></div></div>`;
  115. $('#imgsDiv').find(`.col-4:eq(${idx})`).html(cardHtml);
  116. //删除图片
  117. $(`#del${idx}`).click(function () {
  118. delImg(trigger, $(this).attr('delUrl'));
  119. });
  120. }
  121. }
  122. }
  123. //上一页
  124. $('#prevPage').click(function () {
  125. let curPage = parseInt($('#pageInfo').text().trim().split('/')[0]) - 1;
  126. //加载图片
  127. loadImges(curTrigger, curPage);
  128. });
  129. //下一页
  130. $('#nextPage').click(function () {
  131. let curPage = parseInt($('#pageInfo').text().trim().split('/')[0]) + 1;
  132. //加载图片
  133. loadImges(curTrigger, curPage);
  134. });
  135. });