cropper.html 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. {extend name="../../admin/view/main"}
  2. {block name="content"}
  3. <div class="think-box-shadow" id="ContentBox">
  4. <div class="padding-left-20 padding-right-20" style="max-width:800px">
  5. <div class="margin-top-10">
  6. <p>1. 上传邀请码的背景图片( 支持 PNG 和 JPG 格式 )</p>
  7. <p>2. 选择需要绘制二维码的区域,生成相对图片坐标参数</p>
  8. <p>3. 保存位置数据,下次可直接显示</p>
  9. </div>
  10. <div class="margin-top-20">
  11. <div style="width:800px;height:572px">
  12. <img alt="img" class="layui-hide" id="target" src="{$data.image|default='https://d3o1694hluedf9.cloudfront.net/market-750.jpg'}">
  13. </div>
  14. <div class="margin-top-5">
  15. <label class="margin-top-5 block"><input class="layui-input layui-bg-gray" id="inputImage" readonly value=''></label>
  16. <label class="margin-top-5 block"><input class="layui-input layui-bg-gray" id="inputData" readonly value=''></label>
  17. </div>
  18. </div>
  19. <div class="margin-top-20 text-center">
  20. <a class="layui-btn layui-btn-primary margin-right-5" data-type="png,jpg" data-upload-image>上传背景图片</a>
  21. <a class="layui-btn layui-btn-primary margin-left-5" data-upload-commit>保存配置参数</a>
  22. </div>
  23. </div>
  24. <label class="layui-hide">
  25. <textarea class="layui-textarea" id="DefaPostion">{$data.postion|default=''}</textarea>
  26. </label>
  27. </div>
  28. <script>
  29. // 加载插件并显示界面
  30. require(['cropper'], function (Cropper) {
  31. (function (image, defaData, options, cropper) {
  32. // 初始化图片背景
  33. cropper = new Cropper(image, options = {
  34. viewMode: 2, aspectRatio: 1, ready: function () {
  35. if (typeof defaData === 'object') cropper.setData(defaData);
  36. }, crop: function () {
  37. $('#inputImage').val(image.src);
  38. $('#inputData').val(JSON.stringify(cropper.getData()));
  39. },
  40. });
  41. // 背景图片上传并切换
  42. $('[data-upload-image]').uploadFile(function (url) {
  43. (image.src = url), cropper.destroy();
  44. cropper = new Cropper(image, options);
  45. });
  46. // 保存图片配置参数
  47. $('[data-upload-commit]').on('click', function () {
  48. $.form.load('{:url("")}', {image: image.src, postion: JSON.stringify(cropper.getData())}, 'post');
  49. });
  50. })(document.getElementById('target'), JSON.parse($('#DefaPostion').val() || '{}'));
  51. // 窗口大小重置事件
  52. $(window).on('resize', function () {
  53. (function (height) {
  54. $('#ContentBox').css('minHeight', height + 'px')
  55. })($('.layui-layout-admin>.layui-body').height() - 120);
  56. }).trigger('resize');
  57. });
  58. </script>
  59. {/block}