default.php 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. <?php
  2. use yii\helpers\Html;
  3. use yii\helpers\Url;
  4. ?>
  5. <div class="rf-row">
  6. <div class="col-sm-12">
  7. <div class="upload-list">
  8. <ul id="<?= $boxId; ?>" data-name="<?= $name ?>" data-boxId="<?= $boxId ?>"
  9. data-multiple="<?= $config['multiple'] ?>">
  10. <?php foreach ($value as $vo) { ?>
  11. <li>
  12. <?= Html::hiddenInput($name, $vo) ?>
  13. <div class="img-box">
  14. <a href="<?= trim($vo) ?>" data-fancybox="rfUploadImg">
  15. <div class="bg-cover" style="background-image: url(<?= $vo ?>);"></div>
  16. </a>
  17. <i class="delimg-crop" data-multiple="<?= $config['multiple'] ?>"></i>
  18. </div>
  19. </li>
  20. <?php } ?>
  21. <li class="upload-box crop-upload <?php if (!empty($value) && $config['multiple'] == false) { ?>hide<?php } ?>">
  22. <i class="fa fa-crop"></i>
  23. <?php if ($themeConfig['select'] === true) { ?>
  24. <div class="upload-box-bg hide befor-upload">
  25. <a class="first openUploadIframe" href="<?= Url::to(['/files/selector', 'box_id' => $boxId, 'upload_type' => $type, 'multiple' => $config['multiple'], 'upload_drive' => $formData['drive']]) ?>">选择图片</a>
  26. <a class="second crop-upload">裁剪上传</a>
  27. </div>
  28. <?php } ?>
  29. </li>
  30. </ul>
  31. </div>
  32. </div>
  33. </div>
  34. <!--隐藏上传组件-->
  35. <div class="hidden" id="crop-upload-<?= $boxId; ?>">
  36. <a href="<?= Url::to(['/cropper/crop', 'boxId' => $boxId, 'multiple' => $config['multiple'], 'aspectRatio' => $config['aspectRatio']]) ?>" data-toggle="modal" data-target="#ajaxModalLg"></a>
  37. </div>
  38. <!--模板-->
  39. <script type="text/html" id="tpl-<?= $boxId; ?>">
  40. <li>
  41. <input type="hidden" name="<?= $name; ?>" value="{{value}}">
  42. <div class="img-box">
  43. <a href="{{value}}" data-fancybox="rfUploadImg">
  44. <div class="bg-cover" style="background-image: url({{value}});"></div>
  45. </a>
  46. <i class="delimg-crop" data-multiple="{{multiple}}"></i>
  47. </div>
  48. </li>
  49. </script>
  50. <script>
  51. var boxId = "<?= $boxId ?>";
  52. // 上传成功
  53. $(document).on('cropper-upload-' + boxId, function (e, src, width, height, multiple, boxId) {
  54. var cropperConfig = JSON.parse('<?= json_encode($config); ?>');
  55. var formDataConfig = JSON.parse('<?= json_encode($formData); ?>');
  56. formDataConfig.image = src;
  57. formDataConfig.width = width;
  58. formDataConfig.height = height;
  59. console.log(multiple)
  60. $.ajax({
  61. url: cropperConfig.server,
  62. type: "post",
  63. dataType: 'json',
  64. data: formDataConfig,
  65. success: function (data) {
  66. if (parseInt(data.code) === 200) {
  67. data = data.data;
  68. // 判断是否是多图上传
  69. let obj = $('#' + boxId + ' .upload-box');
  70. if (multiple === 'false' || multiple === false || multiple == '0'){
  71. $(obj).addClass('hide');
  72. }
  73. // 增加显示
  74. let callData = [];
  75. callData["id"] = data.id;
  76. callData["value"] = data.url;
  77. callData["multiple"] = multiple;
  78. let html = template('tpl-' + boxId, callData);
  79. // 查找文本框并移除
  80. $(obj).parent().find('#hideInput-' + boxId).remove();
  81. $(obj).before(html);
  82. } else {
  83. rfError(data.message)
  84. }
  85. }
  86. });
  87. });
  88. // 删除图片节点
  89. $(document).on("click", ".delimg-crop", function () {
  90. let parentObj = $(this).parent().parent();
  91. let multiple = $(this).data('multiple');
  92. let name = parentObj.parent().attr('data-name');
  93. let boxId = parentObj.parent().attr('data-boxId');
  94. if (multiple == true) {
  95. name = name.substring(0, name.length - 2);
  96. }
  97. let input = '<input type="hidden" name="' + name + '" value="" id="hideInput-' + boxId + '">';
  98. // 判断是否是多图上传
  99. if (multiple === '' || multiple === false || multiple == '0') {
  100. //增加值为空的隐藏域
  101. parentObj.parent().append(input);
  102. //显示上传图片按钮
  103. parentObj.next("li").removeClass('hide');
  104. } else {
  105. // 增加值为空的隐藏域
  106. let length = parentObj.parent().find('li').length;
  107. if (length === 2) {
  108. parentObj.parent().append(input);
  109. }
  110. }
  111. parentObj.remove();
  112. });
  113. // 选择回调
  114. $(document).on('select-file-' + boxId, function (e, boxId, data) {
  115. if (data.length === 0) {
  116. return;
  117. }
  118. let multiple = $('#' + boxId).data('multiple');
  119. // 判断是否是多图上传
  120. let obj = $('#' + boxId + ' .upload-box');
  121. if (multiple === 'false' || multiple === false || multiple === '' || multiple == '0') {
  122. $(obj).addClass('hide');
  123. // 增加显示
  124. var arr = data[0].url.split('.');
  125. let callData = [];
  126. callData["id"] = data[0].id;
  127. callData["value"] = data[0].url;
  128. callData["upload_type"] = data[0].upload_type;
  129. callData["extend"] = '.' + arr[arr.length - 1];
  130. callData["multiple"] = multiple;
  131. let html = template('tpl-' + boxId, callData);
  132. $(obj).before(html);
  133. } else {
  134. for (let i = 0; i < data.length; i++) {
  135. // 增加显示
  136. var arr = data[i].url.split('.');
  137. let callData = [];
  138. callData["id"] = data[i].id;
  139. callData["value"] = data[i].url;
  140. callData["upload_type"] = data[i].upload_type;
  141. callData["extend"] = '.' + arr[arr.length - 1];
  142. callData["multiple"] = multiple;
  143. let html = template('tpl-' + boxId, callData);
  144. $(obj).before(html);
  145. }
  146. }
  147. // 查找文本框并移除
  148. $(obj).parent().find('#hideInput-' + boxId).remove();
  149. });
  150. </script>
粤ICP备19079148号