add_adv.html 7.8 KB

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