uploadDetailImg.html 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>上传详情图片</title>
  6. <meta name="renderer" content="webkit">
  7. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  8. <meta name="viewport"
  9. content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
  10. <link rel="stylesheet" href="../../layuiadmin/layui/css/layui.css" media="all">
  11. <link rel="stylesheet" href="../../layuiadmin/style/admin.css" media="all">
  12. <style>
  13. .input {
  14. border-radius: 2px;
  15. height: 38px;
  16. border-width: 1px;
  17. border-color: lightgray;
  18. border-style: solid;
  19. background-color: white;
  20. padding-left: 3px;
  21. }
  22. .processText {
  23. margin-top: 6px;
  24. }
  25. .layui-upload-drag {
  26. padding: 10px;
  27. margin-right: 15px;
  28. }
  29. .imgsContent {
  30. display: flex;
  31. justify-content: flex-start;
  32. flex-direction: row;
  33. flex-wrap: wrap;
  34. }
  35. .image {
  36. width: 150px;
  37. height: auto;
  38. }
  39. .imgItem {
  40. margin: 3px 10px;
  41. }
  42. .option {
  43. display: flex;
  44. justify-content: space-between;
  45. flex-direction: row;
  46. }
  47. .optionItem {
  48. padding: 0 13px;
  49. margin: 10px;
  50. border: 1px solid rgba(0, 0, 0, 0.1);
  51. background: #009688;
  52. color: #ffffff;
  53. }
  54. </style>
  55. </head>
  56. <body>
  57. <div class="layui-fluid">
  58. <div class="layui-row layui-col-space15">
  59. <div class="layui-card">
  60. <div class="layui-card-body" pad15>
  61. <form class="layui-form" action="" lay-filter="component-form-element">
  62. <div class="layui-row layui-col-space10 layui-form-item">
  63. <div>
  64. <label class="layui-form-label"><font color='red' size="4">*</font>上传图片:</label>
  65. <div class="imgsContent">
  66. <div class="layui-upload-drag" id="upload_img">
  67. <div>
  68. <p style="padding-bottom: 10px">多选,最多选10张</p>
  69. <i class="layui-icon"></i>
  70. <p>点击上传,或将图片拖到此处</p>
  71. </div>
  72. </div>
  73. <div id="imgsList" class="imgsContent"></div>
  74. </div>
  75. </div>
  76. <button id="id_save" class="layui-btn" lay-submit lay-filter="component-form-element"
  77. style="display: none">保存
  78. </button>
  79. </div>
  80. </form>
  81. </div>
  82. </div>
  83. </div>
  84. </div>
  85. <script src="../../layuiadmin/layui/layui.js"></script>
  86. <script>
  87. //即将上传的文件数组
  88. var filesList = [];
  89. //渲染的图片列表
  90. var imgsList = [];
  91. //渲染待上传的图片列表
  92. var renderImgsList = function (list) {
  93. var html = "";
  94. list.forEach((item, index) => {
  95. var src = item.src
  96. html += "<div class='imgItem'>\n";
  97. html += "<img src='" + src + "' class='image'>\n";
  98. html += '<div class="option">\n';
  99. html += '<div onclick="showImg(' + index + ')" class="optionItem">查看</div>\n';
  100. html += '<div onclick="deleteImg(' + index + ')" class="optionItem">删除</div>\n';
  101. html += '</div>\n';
  102. html += '</div>\n';
  103. })
  104. layui.$('#imgsList').html(html);
  105. }
  106. var showImg = function (index) {
  107. var newPage = window.open();
  108. newPage.document.write("<img src=" + imgsList[index].src + " />")
  109. };
  110. var deleteImg = function (index) {
  111. var id = imgsList[index].id
  112. if (id) {
  113. // 删除此id
  114. layer.confirm('确定要删除此图片吗?', function (conf_index) {
  115. layer.close(conf_index);
  116. layui.admin.req({
  117. notice: true
  118. , url: '/commodity/del_images/' + id + '/'
  119. , type: 'delete'
  120. , done: function (res) {
  121. imgsList.splice(index, 1);
  122. renderImgsList(imgsList);
  123. }
  124. });
  125. });
  126. } else {
  127. filesList.splice(index, 1);
  128. imgsList.splice(index, 1);
  129. renderImgsList(imgsList);
  130. }
  131. };
  132. layui.link('../../../layuiadmin/style/autocomplete.css');
  133. layui.config({
  134. base: '../../../layuiadmin/' //静态资源所在路径
  135. , autocomplete: 'autocomplete'
  136. }).extend({
  137. index: 'lib/index',
  138. }).use(['index', 'form', 'autocomplete', 'upload'], function () {
  139. var $ = layui.$
  140. , admin = layui.admin
  141. , upload = layui.upload
  142. , form = layui.form;
  143. var id = layui.view.getParameterByName('id');
  144. var type = layui.view.getParameterByName('type');
  145. admin.req({
  146. url: '/commodity/' + id + '/query_images/'
  147. , data: {type}
  148. , type: 'post'
  149. , done: function (res) {
  150. imgsList = res.data;
  151. renderImgsList(imgsList)
  152. }
  153. });
  154. //拖拽上传
  155. upload.render({
  156. elem: '#upload_img'
  157. , accept: 'file'
  158. , exts: 'jpg|png|jpeg|bmp'
  159. , acceptMime: '.jpg,.png,.jpeg,.bmp'
  160. , data: {}
  161. , multiple: true
  162. , number: 10
  163. , auto: false
  164. , choose: function (obj) {
  165. if (imgsList.length > 10) {
  166. layer.msg("图片最多只允许上传10张", {icon: 2});
  167. return
  168. }
  169. //预读本地文件,如果是多文件,则会遍历。(不支持ie8/9)
  170. obj.preview(function (index, file, result) {
  171. filesList.push(file);
  172. imgsList.push({
  173. id: '',
  174. src: result,
  175. });
  176. // 有图片列表的话渲染图片
  177. if (imgsList.length > 0) {
  178. renderImgsList(imgsList)
  179. }
  180. });
  181. }
  182. });
  183. form.on('submit(component-form-element)', function (data) {
  184. if (filesList.length === 0) {
  185. layer.msg("请先选择图片!", {icon: 2});
  186. return false
  187. }
  188. var formData = new FormData();
  189. formData.append("type", type);
  190. filesList.forEach((item, index) => {
  191. formData.append(`file${index}`, item)
  192. });
  193. var url = '/commodity/' + id + '/upload_images/';
  194. admin.req({
  195. url: url
  196. , data: formData
  197. , contentType: false
  198. , processData: false
  199. , type: 'post'
  200. , done: function (res) {
  201. parent.layui.onSubmitChild(res);
  202. }
  203. });
  204. return false;
  205. });
  206. parent.layui.submitChild = function () {
  207. $("#id_save").click();
  208. };
  209. });
  210. </script>
  211. </body>
  212. </html>