edit_adv.html 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266
  1. {extend name="base"/}
  2. {block name="resources"}
  3. <style>
  4. .adv-url-show{margin-right: 10px;}
  5. .form-wrap {margin-top: 0;}
  6. .layui-colorpicker-main-input div.layui-inline{margin-right: 0;}
  7. .layui-colorpicker-main-input input.layui-input{width: 130px;height: 34px;}
  8. </style>
  9. {/block}
  10. {block name="main"}
  11. <div class="layui-form form-wrap">
  12. <div class="layui-form-item">
  13. <label class="layui-form-label"><span class="required">*</span>广告名称:</label>
  14. <div class="layui-input-block">
  15. <input name="adv_title" type="text" value="{$adv_info.adv_title}" lay-verify="required" class="layui-input len-long">
  16. </div>
  17. </div>
  18. {notempty name="$adv_position_list"}
  19. <div class="layui-form-item">
  20. <label class="layui-form-label">所属广告位:</label>
  21. <div class="layui-input-block len-mid">
  22. <select name="ap_id" lay-filter="ap_id">
  23. {foreach $adv_position_list as $adv_position_k => $adv_position_v}
  24. <option value="{$adv_position_v.ap_id}" data-type="{$adv_position_v.type}" data-width="{$adv_position_v.ap_width}" data-height="{$adv_position_v.ap_height}" {if condition="$adv_position_v.ap_id == $adv_info.ap_id"}selected{/if} >{$adv_position_v.ap_name}</option>
  25. {/foreach}
  26. </select>
  27. </div>
  28. </div>
  29. <div class="layui-form-item" data-type="2" {if $type == 1}style="display: none"{/if}>
  30. <label class="layui-form-label">移动端广告链接:</label>
  31. <div class="layui-input-block len-mid">
  32. <span class="adv-url-show"></span>
  33. <button class="layui-btn layui-btn-primary sm" onclick="selectedLink()">选择链接</button>
  34. </div>
  35. </div>
  36. <input name="adv_url" type="hidden" value="{$adv_info.adv_url}" />
  37. {/notempty}
  38. <div class="layui-form-item">
  39. <label class="layui-form-label">广告图片:</label>
  40. <div class="layui-input-block">
  41. <div class="upload-img-block img-upload">
  42. <div class="upload-img-box {notempty name="$adv_info['adv_image']"}hover{/notempty}">
  43. <div class="upload-default" id="adv_image">
  44. {if condition="$adv_info.adv_image"}
  45. <div id="preview_adv_image" class="preview_img">
  46. <img layer-src src="{:img($adv_info.adv_image)}" class="img_prev"/>
  47. </div>
  48. {else/}
  49. <div class="upload">
  50. <i class="iconfont iconshangchuan"></i>
  51. <p>点击上传</p>
  52. </div>
  53. {/if}
  54. </div>
  55. <div class="operation">
  56. <div>
  57. <i title="图片预览" class="iconfont iconreview js-preview" style="margin-right: 20px;"></i>
  58. <i title="删除图片" class="layui-icon layui-icon-delete js-delete"></i>
  59. </div>
  60. <div class="replace_img js-replace">点击替换</div>
  61. </div>
  62. <input type="hidden" name="adv_image" value="{$adv_info.adv_image}">
  63. </div>
  64. <!-- <div class="upload-img-box icon">
  65. {if condition="$adv_info.adv_image"}
  66. <img layer-src src="{:img($adv_info.adv_image)}" />
  67. {else/}
  68. <div class="upload-default">
  69. <i class="iconfont iconshangchuan"></i>
  70. <p>点击上传</p>
  71. </div>
  72. {/if}
  73. </div>
  74. <p id="adv_image" class=" {if condition="$adv_info.adv_image"} replace {else/} no-replace{/if}">替换</p>
  75. <input type="hidden" name="adv_image" value="{$adv_info.adv_image}">
  76. <i class="del {if condition="$adv_info.adv_image"}show{/if}">x</i> -->
  77. </div>
  78. </div>
  79. <div class="word-aux">建议宽度<span class="pic_width">750</span>px 建议高度<span class="pic_height">350</span>px</div>
  80. </div>
  81. <div class="layui-form-item">
  82. <label class="layui-form-label">排序:</label>
  83. <div class="layui-input-block">
  84. <input name="slide_sort" value="{$adv_info.slide_sort}" type="number" placeholder="排序" lay-verify="num" class="layui-input len-short">
  85. </div>
  86. <div class="word-aux">排序值必须为整数</div>
  87. </div>
  88. <div class="layui-form-item" style="display: none">
  89. <label class="layui-form-label">广告价格:</label>
  90. <div class="layui-input-block">
  91. <input name="price" value="{$adv_info.price}" type="number" placeholder="广告价格" lay-verify="flo" class="layui-input len-short">
  92. </div>
  93. <div class="word-aux">单位:元 &nbsp;&nbsp; 价格不能小于0,可以保留两位小数</div>
  94. </div>
  95. <!--<div class="layui-form-item">
  96. <label class="layui-form-label">背景色:</label>
  97. <div class="layui-input-inline">
  98. <div id="bg_color"></div>
  99. </div>
  100. </div>-->
  101. <div class="form-row">
  102. <button class="layui-btn" lay-submit lay-filter="save">保存</button>
  103. <button class="layui-btn layui-btn-primary" onclick="back()">返回</button>
  104. <a id="advImageId"></a>
  105. </div>
  106. <input type="hidden" name="background" id="background" value="{$adv_info.background}" />
  107. <input type="hidden" name="adv_id" value="{$adv_info.adv_id}" />
  108. </div>
  109. {/block}
  110. {block name="script"}
  111. <script>
  112. var color = $("#background").val();
  113. var adv_url_json = $("input[name='adv_url']").val();
  114. var saveData = null;
  115. var totalUploadNum = 0;
  116. var completeUploadNum = 0;
  117. var ap_id = '{$ap_id}';
  118. var logo_upload;
  119. if(adv_url_json) adv_url_json = JSON.parse(adv_url_json);
  120. $(".adv-url-show").text(adv_url_json.title);
  121. layui.use(['form', 'colorpicker'], function () {
  122. var form = layui.form,
  123. colorpicker = layui.colorpicker,
  124. repeat_flag = false; //防重复标识
  125. form.render();
  126. form.on('select(ap_id)', function(data){
  127. var type = $(data.elem).find("option:selected").attr("data-type");
  128. $("[data-type]").hide();
  129. $("[data-type='"+ type+"']").show();
  130. });
  131. /**
  132. * 颜色
  133. */
  134. colorpicker.render({
  135. elem: '#bg_color', //绑定元素
  136. color: color,
  137. done: function(color) {
  138. $(".tdrag-name").css("color", color);
  139. $("#background").val(color);
  140. }
  141. });
  142. // 广告图片
  143. logo_upload = new Upload({
  144. elem: '#adv_image',
  145. auto:false,
  146. bindAction:'#advImageId',
  147. callback: function(res) {
  148. uploadComplete('adv_image', res.data.pic_path);
  149. }
  150. });
  151. function uploadComplete(field, pic_path) {
  152. saveData.field[field] = pic_path;
  153. completeUploadNum += 1;
  154. if(completeUploadNum == totalUploadNum){
  155. saveFunc();
  156. }
  157. }
  158. function saveFunc(){
  159. var data = saveData;
  160. $.ajax({
  161. url: ns.url("shop/adv/editAdv"),
  162. data: data.field,
  163. dataType: 'JSON',
  164. type: 'POST',
  165. success: function(res) {
  166. repeat_flag = false;
  167. if (res.code == 0) {
  168. layer.confirm('编辑成功', {
  169. title:'操作提示',
  170. btn: ['返回列表', '继续操作'],
  171. yes: function() {
  172. location.href = ns.url("shop/adv/lists", {ap_id:ap_id})
  173. },
  174. btn2: function() {
  175. location.reload();
  176. }
  177. });
  178. } else {
  179. layer.msg(res.message);
  180. }
  181. }
  182. });
  183. }
  184. /**
  185. * 监听提交
  186. */
  187. form.on('submit(save)', function(data) {
  188. if (repeat_flag) return;
  189. repeat_flag = true;
  190. saveData = data;
  191. var obj = $("img.img_prev[data-prev='1']");
  192. totalUploadNum = obj.length;
  193. if(totalUploadNum > 0){
  194. obj.each(function(){
  195. var actionId = $(this).attr('data-action-id');
  196. $(actionId).click();
  197. })
  198. }else{
  199. saveFunc();
  200. }
  201. });
  202. /**
  203. * 表单验证
  204. */
  205. form.verify({
  206. num: function (value) {
  207. if (value == '') {
  208. return;
  209. }
  210. if (value%1 != 0) {
  211. return '排序数值必须为整数';
  212. }
  213. if (value < 0) {
  214. return '排序数值必须为大于0';
  215. }
  216. },
  217. flo: function (value) {
  218. if (value == '') {
  219. return;
  220. }
  221. var reg = /^(0|[1-9]\d*)(\s|$|\.\d{1,2}\b)/;
  222. if (!reg.test(value)) {
  223. return '价格不能小于0,可保留两位小数!'
  224. }
  225. }
  226. });
  227. });
  228. function back() {
  229. location.href = ns.url("shop/adv/lists", {ap_id:ap_id})
  230. }
  231. function selectedLink() {
  232. if (adv_url_json == "") {
  233. adv_url_json = {};
  234. }
  235. ns.select_link(adv_url_json, function (data) {
  236. for (var o in data) {
  237. if (data[o] == null) delete data[o];
  238. }
  239. $("input[name='adv_url']").val(JSON.stringify(data));
  240. $(".adv-url-show").text(data.title);
  241. });
  242. }
  243. </script>
  244. {/block}