zone_config.html 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. {extend name="base"/}
  2. {block name="resources"}
  3. <link rel="stylesheet" href="STATIC_EXT/colorPicker/css/colorpicker.css"/>
  4. <link rel="stylesheet" href="SHOP_CSS/goods_detail_config.css"/>
  5. <style>
  6. .layui-layout-admin .layui-body .body-content{padding: 15px;margin: 15px;}
  7. .table-tab{margin-bottom: 20px;}
  8. #diyView{background: #fff;padding: 0;}
  9. .edit-attribute{padding: 0;border-top: none;}
  10. .edit-attribute .attr-wrap .attr-title{line-height: 40px;padding: 0 0 1px 10px;border-bottom: 1px solid #f1f1f1;}
  11. .preview-wrap{margin-right: 358px;}
  12. /*.custom-save{border-top: 1px solid #f1f1f1;}*/
  13. </style>
  14. {/block}
  15. {block name="main"}
  16. {notempty name="$promotion_zone_list"}
  17. <div id="diyView" class="layui-form">
  18. <div class="layui-tab table-tab" lay-filter="promotion_tab">
  19. <ul class="layui-tab-title">
  20. {foreach name="$promotion_zone_list" key="k" item="vo"}
  21. <li {if $k==0}class="layui-this"{/if} lay-id="{$vo['name']}" data-preview="{$vo['preview']}" data-url="{$vo['url']}" data-bg-color="{$vo['value']['bg_color']}">{$vo['title']}</li>
  22. {/foreach}
  23. </ul>
  24. </div>
  25. <div class="preview-wrap">
  26. <div class='diy-view-wrap'>
  27. <div class="preview-head">
  28. <span>专区</span>
  29. </div>
  30. <div class="preview-block">
  31. <div class="preview-draggable">
  32. <img />
  33. </div>
  34. <div class="edit-attribute">
  35. <div class="attr-wrap">
  36. <div class="attr-title">
  37. <span class="title">专区</span>
  38. </div>
  39. <div class="edit-content-wrap">
  40. <div class="layui-form-item">
  41. <label class="layui-form-label sm">广告图</label>
  42. <div class="layui-input-block">
  43. <a href="" target="_blank" class="text-color js-adv">管理广告</a>
  44. </div>
  45. </div>
  46. <div class="layui-form-item flex">
  47. <label class="layui-form-label sm">背景色</label>
  48. <div class="curr-color">
  49. <span></span>
  50. </div>
  51. <div class="layui-input-block flex_fill">
  52. <div id="bgColor" class="picker colorSelector">
  53. <div></div>
  54. </div>
  55. <input type="hidden" name="bg_color">
  56. <span class="color-selector-reset text-color">重置</span>
  57. </div>
  58. </div>
  59. </div>
  60. </div>
  61. </div>
  62. </div>
  63. </div>
  64. </div>
  65. <div class="custom-save">
  66. <input type="hidden" name="name" value="" />
  67. <input type="hidden" name="title" value="" />
  68. <input type="hidden" name="bg_color" {notempty name='$config'}value="{$config['bg_color']}"{/notempty} />
  69. <button class="layui-btn" lay-submit lay-filter="save">保存</button>
  70. </div>
  71. </div>
  72. {else/}
  73. <div class="empty">暂无活动专区</div>
  74. {/notempty}
  75. {/block}
  76. {block name="script"}
  77. <script src="STATIC_EXT/colorPicker/js/colorpicker.js"></script>
  78. <script>
  79. var promotion_config_list = JSON.parse('{:json_encode($promotion_config_list)}');
  80. layui.use(['form', 'laydate', 'laytpl','element'], function () {
  81. var form = layui.form;
  82. var repeat_flag = false; //防重复标识
  83. var element = layui.element;
  84. form.render();
  85. var size = 256; // 公式:二级面包屑layui-header-crumbs-second (55px)+ body-content(60px)+ .layui-tab table-tab(77px)+ .custom-save(64px)
  86. var commonHeight = $(window).height() - size;
  87. $('.preview-wrap').css("height", commonHeight + "px");
  88. $(".edit-attribute .attr-wrap").css("height", commonHeight + 64 + "px");
  89. $(".preview-block").css("min-height", (commonHeight - 84) + "px"); // 公式:高度 - 自定义模板区域下外编辑(20px)- 自定义模板头部(64px)
  90. setTimeout(function () {
  91. $('#diyView').css('visibility', 'visible');
  92. }, 50);
  93. // Tab 切换,以改变地址 hash 值
  94. element.on('tab(promotion_tab)', function () {
  95. var name = $(this).attr('lay-id');
  96. var title = $(this).text();
  97. var preview = $(this).attr('data-preview');
  98. var url = $(this).attr('data-url');
  99. $('.preview-wrap .diy-view-wrap .preview-head span').text(title + '专区');
  100. $('.edit-attribute .attr-wrap .attr-title .title').text(title + '专区');
  101. $('.preview-draggable img').attr('src', ns.img(preview));
  102. $('.js-adv').attr('href', ns.url(url));
  103. $('input[name="name"]').val(name);
  104. $('input[name="bg_color"]').val(promotion_config_list[name].bg_color);
  105. $('input[name="title"]').val(title);
  106. reset('#bgColor', promotion_config_list[name].bg_color);
  107. });
  108. $('.table-tab .layui-tab-title li:eq(0)').click();
  109. Colorpicker.create({
  110. el: 'bgColor',
  111. color: "{notempty name='$config'}{$config['bg_color']}{/notempty}",
  112. change: function (elem, hex) {
  113. $(elem).find("div").css('background', hex);
  114. $(elem).parent().parent().find('.curr-color span').text(hex);
  115. $('.preview-draggable').css('background',hex);
  116. $('input[name="bg_color"]').val(hex);
  117. }
  118. });
  119. // 重置活动背景色
  120. $('.color-selector-reset').click(function () {
  121. var li = $('.table-tab .layui-tab-title li.layui-this');
  122. reset('#bgColor', li.attr('data-bg-color'));
  123. });
  124. form.on('submit(save)', function (data) {
  125. if (repeat_flag) return;
  126. repeat_flag = true;
  127. $.ajax({
  128. type: 'POST',
  129. url: ns.url("shop/promotion/zoneConfig"),
  130. data: data.field,
  131. dataType: 'JSON',
  132. success: function (res) {
  133. repeat_flag = false;
  134. layer.msg(res.message);
  135. }
  136. });
  137. });
  138. });
  139. function reset(elem,color) {
  140. $(elem).children('div').css('background', color);
  141. $(elem).parent().parent().find('.curr-color span').text(color);
  142. $('input[name="bg_color"]').val(color);
  143. $('.preview-draggable').css('background',color);
  144. }
  145. </script>
  146. {/block}