edit_adv.html 9.3 KB

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