add.html 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570
  1. {extend name="app/shop/view/base.html"/}
  2. {block name="resources"}
  3. <style>
  4. .coupon-box .layui-form{
  5. padding: 0!important;
  6. }
  7. .layui-layer-page .layui-layer-content{
  8. overflow: auto !important;
  9. }
  10. .del-btn {
  11. cursor: pointer;
  12. }
  13. .level-equity .layui-input {
  14. display: inline-block;
  15. }
  16. .gods-box table:first-of-type{
  17. margin-bottom: 0;
  18. }
  19. .gods-box table:last-of-type{
  20. margin-top: 0;
  21. display: block;
  22. max-height: 323px;
  23. overflow: auto;
  24. }
  25. .coupon-box .single-filter-box{
  26. padding-top: 0;
  27. }
  28. .coupon-box .select-coupon-btn{
  29. margin-top: 10px;
  30. }
  31. .layui-layer-page .layui-layer-content{
  32. overflow-y: scroll!important;
  33. }
  34. .num-name{display: inline-block}
  35. </style>
  36. {/block}
  37. {block name="main"}
  38. <div class="layui-form">
  39. <div class="layui-card card-common card-brief">
  40. <div class="layui-card-header">
  41. <span class="card-title">活动设置</span>
  42. </div>
  43. <div class="layui-card-body">
  44. <div class="layui-form-item">
  45. <label class="layui-form-label"><span class="required">*</span>活动名称:</label>
  46. <div class="layui-input-block">
  47. <input type="text" name="recommend_name" lay-verify="required|len" class="layui-input len-long" autocomplete="off" maxlength="40">
  48. </div>
  49. <div class="word-aux">
  50. <p>活动名称最多为25个字符</p>
  51. </div>
  52. </div>
  53. <div class="layui-form-item">
  54. <label class="layui-form-label"><span class="required">*</span>活动时间:</label>
  55. <div class="layui-inline">
  56. <div class="layui-input-inline len-mid">
  57. <input type="text" class="layui-input" name="start_time" lay-verify="required" id="start_time" autocomplete="off" readonly>
  58. <i class=" iconrili iconfont calendar"></i>
  59. </div>
  60. <span class="layui-form-mid">-</span>
  61. <div class="layui-input-inline len-mid end-time">
  62. <input type="text" class="layui-input" name="end_time" lay-verify="required|time" id="end_time" autocomplete="off" readonly>
  63. <i class=" iconrili iconfont calendar"></i>
  64. </div>
  65. </div>
  66. </div>
  67. <div class="layui-form-item">
  68. <label class="layui-form-label">活动说明:</label>
  69. <div class="layui-input-block">
  70. <textarea class="layui-textarea len-long" name="remark" maxlength="150"></textarea>
  71. </div>
  72. </div>
  73. </div>
  74. </div>
  75. <div class="layui-card card-common card-brief">
  76. <div class="layui-card-header">
  77. <span class="card-title">规则设置</span>
  78. </div>
  79. <div class="layui-card-body reward-wrap">
  80. <div class="layui-form-item">
  81. <label class="layui-form-label"><span class="required">*</span>邀请人可得奖励:</label>
  82. <div class="layui-input-block">
  83. <input type="checkbox" name="type" value="point" title="积分" lay-skin="primary" lay-filter="type" lay-verify="type" checked>
  84. <input type="checkbox" name="type" value="balance" title="余额" lay-skin="primary" lay-filter="type" lay-verify="type">
  85. <input type="checkbox" name="type" value="coupon" title="优惠券" lay-skin="primary" lay-filter="type" lay-verify="type">
  86. </div>
  87. </div>
  88. <div class="point-wrap">
  89. <div class="layui-form-item">
  90. <label class="layui-form-label"><span class="required">*</span>奖励积分:</label>
  91. <div class="layui-input-block">
  92. <input name="point" value="0" type="number" lay-verify="required|mum" class="layui-input len-short">
  93. </div>
  94. </div>
  95. </div>
  96. <div class="balance-wrap layui-hide">
  97. <div class="layui-form-item">
  98. <label class="layui-form-label"><span class="required">*</span>奖励红包:</label>
  99. <div class="layui-input-block len-long">
  100. <input name="balance" value="0" type="number" lay-verify="" class="layui-input len-short">
  101. </div>
  102. </div>
  103. <div class="word-aux"><p>红包为储值余额,仅在消费时可用</p></div>
  104. </div>
  105. <div class="coupon-wrap layui-hide">
  106. <div class="layui-form-item">
  107. <label class="layui-form-label"><span class="required">*</span>奖励优惠券:</label>
  108. <div class="layui-input-block">
  109. <table class="layui-table" id="coupon_selected" lay-skin="line" lay-size="lg">
  110. <colgroup>
  111. <col width="35%">
  112. <col width="25%">
  113. <col width="20%">
  114. <col width="20%">
  115. </colgroup>
  116. <thead>
  117. <tr>
  118. <th>优惠券名称</th>
  119. <th>优惠金额/折扣</th>
  120. <th>有效期</th>
  121. <th>操作</th>
  122. </tr>
  123. </thead>
  124. <tbody>
  125. <tr>
  126. <td class="goods-empty" colspan="5">
  127. <div class="goods-null">尚未选择赠送优惠券</div>
  128. </td>
  129. </tr>
  130. </tbody>
  131. </table>
  132. <div class="word-aux text-color" style="margin-left: 0">
  133. <p>活动优惠券发放,不受优惠券自身数量和领取数量的限制</p>
  134. </div>
  135. <button class="layui-btn" onclick="addCoupon()">添加优惠券</button>
  136. </div>
  137. </div>
  138. </div>
  139. <div class="max-fetch-wrap">
  140. <div class="layui-form-item">
  141. <label class="layui-form-label"><span class="required">*</span>邀请奖励上限:</label>
  142. <div class="layui-input-block">
  143. <input name="max_fetch" value="0" type="number" class="layui-input len-short num-name">
  144. <div class="word-aux text-color" style="margin-left: 0">
  145. <p>默认0,为不限制</p>
  146. </div>
  147. </div>
  148. </div>
  149. </div>
  150. <div class="form-row">
  151. <button class="layui-btn" lay-submit lay-filter="save">保存</button>
  152. <button class="layui-btn layui-btn-primary" onclick="back()">返回</button>
  153. </div>
  154. </div>
  155. </div>
  156. </div>
  157. {/block}
  158. {block name="script"}
  159. <script>
  160. var coupon_id = [], addCoupon,
  161. currentDate = new Date(); //当前时间;
  162. layui.use(['form', 'laytpl', 'laydate'], function() {
  163. var form = layui.form,
  164. laytpl = layui.laytpl,
  165. laydate = layui.laydate,
  166. repeat_flag = false; //防重复标识
  167. form.render();
  168. currentDate.setDate(currentDate.getDate() + 30); //当前时间+30之后的时间戳
  169. // 开始时间
  170. laydate.render({
  171. elem: '#start_time' ,//指定元素
  172. type: 'datetime',
  173. value: new Date(),
  174. done: function(value){
  175. minDate = value;
  176. reRender();
  177. }
  178. });
  179. //结束时间
  180. laydate.render({
  181. elem: '#end_time' ,//指定元素
  182. type: 'datetime',
  183. value: new Date(currentDate)
  184. });
  185. /**
  186. * 重新渲染结束时间
  187. * */
  188. function reRender(){
  189. $("#end_time").remove();
  190. $(".end-time").html('<input type="text" id="end_time" name="end_time" placeholder="请输入结束时间" lay-verify="required|time" class="layui-input len-mid" autocomplete="off"><i class=" iconrili iconfont calendar"></i>');
  191. laydate.render({
  192. elem: '#end_time',
  193. type: 'datetime',
  194. min: minDate
  195. });
  196. }
  197. form.on('checkbox(type)', function(data) {
  198. $('[name="type"]').each(function(){
  199. var type = $(this).val();
  200. if ($(this).is(':checked')) {
  201. $('.reward-wrap .' + type + '-wrap').removeClass('layui-hide');
  202. if (type == 'point' || type == 'coupon') {
  203. $('.reward-wrap .' + type + '-wrap [lay-verify]').attr('lay-verify', 'required|mum');
  204. }
  205. if (type == 'balance') {
  206. $('.reward-wrap .' + type + '-wrap [lay-verify]').attr('lay-verify', 'required|float');
  207. }
  208. } else {
  209. $('.reward-wrap .' + type + '-wrap').addClass('layui-hide');
  210. $('.reward-wrap .' + type + '-wrap [lay-verify]').attr('lay-verify', '');
  211. }
  212. })
  213. })
  214. /**
  215. * 监听保存
  216. */
  217. form.on('submit(save)', function(data) {
  218. var type = [];
  219. $('.reward-wrap [name="type"]:checked').each(function(){
  220. type.push($(this).val());
  221. })
  222. if ($.inArray('coupon', type) != -1 && coupon_id.length == 0) {
  223. layer.msg('请选择优惠券', {icon: 5});
  224. return;
  225. }
  226. if(data.field.max_fetch == ''){
  227. layer.msg('请输入邀请奖励上限', {icon: 5});
  228. return;
  229. }else if (data.field.max_fetch < 0){
  230. layer.msg('请输入大于或等于0的整数', {icon: 5});
  231. return;
  232. }
  233. data.field.type = type.toString();
  234. data.field.coupon = coupon_id.toString();
  235. if (repeat_flag) return false;
  236. repeat_flag = true;
  237. $.ajax({
  238. url: ns.url("memberrecommend://shop/memberrecommend/add"),
  239. data: data.field,
  240. dataType: 'JSON', //服务器返回json格式数据
  241. type: 'POST', //http请求类型
  242. success: function(res) {
  243. repeat_flag = false;
  244. if (res.code == 0) {
  245. layer.confirm('添加成功', {
  246. title:'操作提示',
  247. btn: ['返回列表', '继续添加'],
  248. closeBtn: 0,
  249. yes: function(){
  250. location.href = ns.url("memberrecommend://shop/memberrecommend/lists")
  251. },
  252. btn2: function() {
  253. location.href = ns.url("memberrecommend://shop/memberrecommend/add")
  254. }
  255. });
  256. }else{
  257. layer.msg(res.message);
  258. }
  259. }
  260. });
  261. });
  262. /**
  263. * 表单验证
  264. */
  265. form.verify({
  266. type: function(){
  267. if ($('.reward-wrap [name="type"]:checked').length == 0) {
  268. return '请选择邀请人可得奖励';
  269. }
  270. },
  271. mum: function(value, item){
  272. if (/^\d{0,10}$/.test(value) === false) {
  273. return '请输入大于0的整数';
  274. }
  275. if (parseInt(value) <= 0) {
  276. return '请输入大于0的整数';
  277. }
  278. },
  279. float: function(value, item){
  280. if (/^\d{0,10}$/.test(value) === false) {
  281. return '请输入大于0的数字,支持小数点后两位';
  282. }
  283. if (parseInt(value) <= 0) {
  284. return '请输入大于0的数字,支持小数点后两位';
  285. }
  286. }
  287. });
  288. //优惠券
  289. addCoupon = function() {
  290. var data = {};
  291. data.coupon_id = coupon_id;
  292. laytpl($("#couponList").html()).render(data, function(html) {
  293. coupon_list = layer.open({
  294. title: '优惠券列表',
  295. skin: 'layer-tips-class',
  296. type: 1,
  297. area: ['1100px', '600px'],
  298. content: html,
  299. });
  300. if ($("tbody tr input:checked").length == $(".coupon-box tbody tr").length) {
  301. $("input[lay-filter='selectAll']").prop("checked", true);
  302. }
  303. form.render();
  304. });
  305. /**
  306. * 监听全选按钮
  307. */
  308. form.on('checkbox(selectAll)', function(data) {
  309. if (data.elem.checked) {
  310. $("tr .check-box input:checkbox").each(function(index) {
  311. $(this).prop("checked", true);
  312. });
  313. } else {
  314. $("tr .check-box input:checkbox").each(function() {
  315. $(this).prop("checked", false);
  316. });
  317. }
  318. form.render();
  319. });
  320. /**
  321. * 监听每一行的多选按钮
  322. */
  323. var len = $(".coupon-box tbody tr").length;
  324. for (var i = 0; i < len; i++) {
  325. form.on('checkbox(select' + i + ')', function(data) {
  326. if ($("tbody tr input:checked").length == len) {
  327. $("input[lay-filter='selectAll']").prop("checked", true);
  328. } else {
  329. $("input[lay-filter='selectAll']").prop("checked", false);
  330. }
  331. form.render();
  332. });
  333. }
  334. }
  335. });
  336. function couponSelected() {
  337. layer.closeAll('page');
  338. coupon_id = [];
  339. var _len = $("tbody tr input:checked").length;
  340. $("#coupon_selected tbody").empty();
  341. $("#coupon tbody tr").each(function(){
  342. var bool = $(this).find("input[type='checkbox']").is(":checked");
  343. if (bool) {
  344. coupon_id.push($(this).find("#coupon_id").val());
  345. var html = '';
  346. var _id = $(this).find("#coupon_id").val(),
  347. image = $(this).find(".title-pic img").attr("src"),
  348. coupon_name = $(this).find(".title-content p").text(),
  349. money = $(this).find(".coupon-money").text(),
  350. stock = $(this).find(".coupon-stock").text(),
  351. end_time = $(this).find(".coupon-end-time").text();
  352. html += '<tr>'+
  353. '<td>'+
  354. '<div class="table-title">'+
  355. '<input type="hidden" value="'+ _id +'" />'+
  356. '<div class="title-pic">';
  357. if (image) {
  358. html += '<img src="'+ image +'">';
  359. }
  360. html += '</div>'+
  361. '<div class="title-content">'+
  362. '<p class="multi-line-hiding">'+ coupon_name +'</p>'+
  363. '</div>'+
  364. '</div>'+
  365. '</td>'+
  366. '<td class="layui-elip coupon-money">'+ money +'</td>'+
  367. '<td class="layui-elip coupon-end-time">'+ end_time +'</td>'+
  368. '<td class="layui-elip"><div class="table-btn"><a class="layui-btn del-btn" onclick="delCoupon(this)">删除</a></div></td>'+
  369. '</tr>';
  370. $("#coupon_selected tbody").append(html);
  371. }
  372. if (_len == 0) {
  373. var html = '<tr>'+
  374. '<td class="goods-empty" colspan="4">'+
  375. '<div class="goods-null">尚未选择赠送优惠券</div>'+
  376. '</td>'+
  377. '</tr>';
  378. $("#coupon_selected tbody").append(html);
  379. }
  380. });
  381. }
  382. //删除优惠券
  383. function delCoupon(e) {
  384. $(e).parents("tr").remove();
  385. var _len = $("#coupon_selected tbody tr").length;
  386. if(_len == 0) {
  387. var html = '<tr>'+
  388. '<td class="goods-empty" colspan="4">'+
  389. '<div class="goods-null">尚未选择赠送优惠券</div>'+
  390. '</td>'+
  391. '</tr>';
  392. $("#coupon_selected tbody").append(html);
  393. }
  394. couponId();
  395. }
  396. function couponId() {
  397. coupon_id = [];
  398. $("#coupon_selected tbody tr").each(function(){
  399. coupon_id.push($(this).find(".table-title input").val());
  400. });
  401. }
  402. function back(){
  403. location.href = ns.url("memberrecommend://shop/memberrecommend/lists");
  404. }
  405. </script>
  406. <!-- 优惠券 -->
  407. <script type="text/html" id="couponList">
  408. <div class="coupon-box">
  409. <!--<div class="single-filter-box">-->
  410. <!--<div class="layui-form">-->
  411. <!--<div class="layui-input-inline">-->
  412. <!--<input type="text" name="coupon_name" placeholder="请输入优惠券名称" class="layui-input">-->
  413. <!--<button type="button" class="layui-btn layui-btn-primary" lay-filter="coupon-search" lay-submit>-->
  414. <!--<i class="layui-icon">&#xe615;</i>-->
  415. <!--</button>-->
  416. <!--</div>-->
  417. <!--</div>-->
  418. <!--</div>-->
  419. <div>
  420. <table class="layui-table" lay-skin="line" id="coupon">
  421. <colgroup>
  422. <col width="10%">
  423. <col width="20%">
  424. <col width="10%">
  425. <col width="10%">
  426. <col width="10%">
  427. <col width="20%">
  428. <col width="20%">
  429. </colgroup>
  430. <thead>
  431. <tr>
  432. <th class="check-box">
  433. <div class="layui-form">
  434. <input type="checkbox" name="" lay-filter="selectAll" lay-skin="primary">
  435. </div>
  436. </th>
  437. <th class="layui-elip">优惠券名称</th>
  438. <th class="layui-elip">类型</th>
  439. <th class="layui-elip">优惠金额/折扣</th>
  440. <th class="layui-elip">适用商品</th>
  441. <th class="layui-elip">领取人限制</th>
  442. <th class="layui-elip">已领取/发放数</th>
  443. <th class="layui-elip">结束时间</th>
  444. </tr>
  445. </thead>
  446. <tbody>
  447. {foreach $coupon_list.data as $coupon_list_k => $coupon_list_v}
  448. <tr>
  449. <td class="check-box">
  450. <div class="layui-form">
  451. {{# var a = {$coupon_list_v.coupon_type_id} }}
  452. {{# if($.inArray(a.toString(), d.coupon_id) != -1){ }}
  453. <input type="checkbox" name="" lay-filter="select{$coupon_list_k}" lay-skin="primary" checked>
  454. {{# }else{ }}
  455. <input type="checkbox" name="" lay-filter="select{$coupon_list_k}" lay-skin="primary">
  456. {{# } }}
  457. <input type="hidden" id="coupon_id" value="{$coupon_list_v.coupon_type_id}">
  458. </div>
  459. </td>
  460. <td>
  461. <div class="table-title">
  462. <div class="title-pic">
  463. {if condition="$coupon_list_v.image"}
  464. <img src="{:img($coupon_list_v.image)}">
  465. {else/}
  466. <img src="__ROOT__/public/uniapp/game/coupon.png">
  467. {/if}
  468. </div>
  469. <div class="title-content">
  470. <p class="multi-line-hiding">{$coupon_list_v.coupon_name}</p>
  471. </div>
  472. </div>
  473. </td>
  474. {if $coupon_list_v.type == 'reward'}
  475. <td class="layui-elip">满减</td>
  476. {else/}
  477. <td class="layui-elip">折扣</td>
  478. {/if}
  479. {if $coupon_list_v.type == 'reward'}
  480. <td class="layui-elip coupon-money">{$coupon_list_v.money}元</td>
  481. {else/}
  482. <td class="layui-elip coupon-money">{$coupon_list_v.discount}折</td>
  483. {/if}
  484. {if $coupon_list_v.goods_type == 1}
  485. <td class="layui-elip">全部商品</td>
  486. {else/}
  487. <td class="layui-elip">指定商品</td>
  488. {/if}
  489. <td class="layui-elip">{$coupon_list_v.max_fetch}</td>
  490. {if $coupon_list_v.count == -1}
  491. <td class="layui-elip coupon-stock">{$coupon_list_v.lead_count}/不限量</td>
  492. {else/}
  493. <td class="layui-elip coupon-stock">{$coupon_list_v.lead_count}/{$coupon_list_v.count}</td>
  494. {/if}
  495. {if $coupon_list_v.validity_type == 0}
  496. <td class="layui-elip coupon-end-time">{:time_to_date($coupon_list_v.end_time)}</td>
  497. {elseif $coupon_list_v.validity_type == 1}
  498. <td class="layui-elip coupon-end-time">领取之日起{$coupon_list_v.fixed_term}天有效</td>
  499. {else/}
  500. <td class="layui-elip coupon-end-time">长期有效</td>
  501. {/if}
  502. </tr>
  503. {/foreach}
  504. </tbody>
  505. </table>
  506. <button class="layui-btn select-coupon-btn" onclick="couponSelected()">确定</button>
  507. </div>
  508. </div>
  509. </script>
  510. {/block}