add.html 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  1. {extend name="app/shop/view/base.html"/}
  2. {block name="resources"}
  3. <style>
  4. .good-name, .good-price {
  5. line-height: 34px;
  6. }
  7. .layui-form-item .layui-input-inline.end-time{
  8. float: none;
  9. }
  10. </style>
  11. {/block}
  12. {block name="main"}
  13. <div class="layui-collapse ns-tips">
  14. <div class="layui-colla-item">
  15. <h2 class="layui-colla-title">操作提示</h2>
  16. <ul class="layui-colla-content layui-show">
  17. <li>管理员可以在此页添加笔记活动</li>
  18. </ul>
  19. </div>
  20. </div>
  21. <div class="layui-form ns-form">
  22. <div class="layui-form-item">
  23. <label class="layui-form-label img-upload-lable ns-short-label"><span class="required">*</span>选择商品:</label>
  24. <div class="layui-input-inline">
  25. <div class="upload-img-block square">
  26. <div class="upload-img-box" id="goodImg" lay-verify="select" onclick="addGoods()">
  27. <div class="ns-upload-default">
  28. <img src="SHOP_IMG/upload_img.png" />
  29. <p>选择商品</p>
  30. </div>
  31. </div>
  32. </div>
  33. </div>
  34. </div>
  35. <div class="layui-form-item">
  36. <label class="layui-form-label">商品名称:</label>
  37. <div class="layui-input-inline good-name">
  38. </div>
  39. </div>
  40. <div class="layui-form-item">
  41. <label class="layui-form-label">商品原价:</label>
  42. <div class="layui-input-inline good-price">
  43. ¥<span>0.00</span>
  44. </div>
  45. </div>
  46. <div class="layui-form-item">
  47. <label class="layui-form-label"><span class="required">*</span>笔记价:</label>
  48. <div class="layui-input-block">
  49. <div class="layui-input-inline">
  50. <input type="number" name="notes_price" lay-verify="required|flnum" autocomplete="off" class="layui-input ns-len-short notes_price">
  51. </div>
  52. <div class="layui-form-mid">元</div>
  53. </div>
  54. <div class="ns-word-aux">
  55. <p>如商品存在多规格,则所有规格均是此价售卖,请谨慎设置</p>
  56. </div>
  57. </div>
  58. <div class="layui-form-item">
  59. <label class="layui-form-label"><span class="required">*</span>最低购买数量:</label>
  60. <div class="layui-input-block">
  61. <input type="number" value="2" name="buy_num" lay-verify="required|int" autocomplete="off" class="layui-input ns-len-short">
  62. </div>
  63. <div class="ns-word-aux">
  64. <p>最低购买数量不能小于2,默认为2</p>
  65. </div>
  66. </div>
  67. <div class="layui-form-item">
  68. <label class="layui-form-label"><span class="required">*</span>开始时间:</label>
  69. <div class="layui-input-inline">
  70. <input type="text" id="start_time" name="start_time" lay-verify="required" class="layui-input ns-len-mid" autocomplete="off" readonly>
  71. <i class="ns-calendar"></i>
  72. </div>
  73. </div>
  74. <div class="layui-form-item">
  75. <label class="layui-form-label"><span class="required">*</span>结束时间:</label>
  76. <div class="layui-input-inline end-time">
  77. <input type="text" id="end_time" name="end_time" lay-verify="required|time" class="layui-input ns-len-mid" autocomplete="off" readonly>
  78. <i class="ns-calendar"></i>
  79. </div>
  80. <div class="ns-word-aux">
  81. <p>结束时间不能小于开始时间,也不能小于当前时间</p>
  82. </div>
  83. </div>
  84. <div class="ns-form-row">
  85. <button class="layui-btn ns-bg-color" lay-submit lay-filter="save">保存</button>
  86. <button class="layui-btn layui-btn-primary" onclick="back()">返回</button>
  87. </div>
  88. <input type="hidden" name="goods_id" value="" />
  89. <input type="hidden" name="sku_id" value="" />
  90. </div>
  91. {/block}
  92. {block name="script"}
  93. <script>
  94. var goods_id = "";
  95. layui.use(['form', 'laydate'], function() {
  96. var form = layui.form,
  97. laydate = layui.laydate,
  98. repeat_flag = false,
  99. currentDate = new Date(),
  100. minDate = "";
  101. currentDate.setDate(currentDate.getDate() + 30);
  102. form.render();
  103. //开始时间
  104. laydate.render({
  105. elem: '#start_time', //指定元素
  106. type: 'datetime',
  107. value: new Date(),
  108. done: function(value) {
  109. minDate = value;
  110. reRender();
  111. }
  112. });
  113. //结束时间
  114. laydate.render({
  115. elem: '#end_time', //指定元素
  116. type: 'datetime',
  117. value: new Date(currentDate)
  118. });
  119. /**
  120. * 重新渲染结束时间
  121. * */
  122. function reRender() {
  123. $("#end_time").remove();
  124. $(".end-time").html('<input type="text" id="end_time" name="end_time" placeholder="请输入结束时间" lay-verify="required|time" class="layui-input ns-len-mid" autocomplete="off" readonly> ');
  125. laydate.render({
  126. elem: '#end_time',
  127. type: 'datetime',
  128. min: minDate
  129. });
  130. }
  131. /**
  132. * 表单验证
  133. */
  134. form.verify({
  135. time: function(value) {
  136. var now_time = (new Date()).getTime();
  137. var start_time = (new Date($("#start_time").val())).getTime();
  138. var end_time = (new Date(value)).getTime();
  139. if (now_time > end_time) {
  140. return '结束时间不能小于当前时间!'
  141. }
  142. if (start_time > end_time) {
  143. return '结束时间不能小于开始时间!';
  144. }
  145. },
  146. flnum: function(value) {
  147. var arrMen = value.split(".");
  148. var val = 0;
  149. if (arrMen.length == 2) {
  150. val = arrMen[1];
  151. }
  152. if (val.length > 2) {
  153. return '保留小数点后两位!'
  154. }
  155. },
  156. int: function(value) {
  157. if (value <= 1 || value % 1 != 0) {
  158. return '请输入大于1的正整数!'
  159. }
  160. }
  161. });
  162. /**
  163. * 表单提交
  164. */
  165. form.on('submit(save)', function(data){
  166. if (goods_id.length == 0) {
  167. layer.msg('请选择参与活动的商品!', {icon: 5, anim: 6});
  168. return;
  169. }
  170. var notes_price = $(".notes_price").val();
  171. var primary_price = $(".good-price span").text();
  172. if (Number(primary_price) < Number(notes_price)) {
  173. layer.msg('笔记价不能大于原价!', {icon: 5, anim: 6});
  174. return false;
  175. }
  176. if(repeat_flag) return;
  177. repeat_flag = true;
  178. $.ajax({
  179. type: 'POST',
  180. dataType: 'JSON',
  181. url: ns.url("notes://shop/notes/add"),
  182. data: data.field,
  183. async: false,
  184. success: function(res){
  185. repeat_flag = false;
  186. if (res.code == 0) {
  187. layer.confirm('添加成功', {
  188. title:'操作提示',
  189. btn: ['返回列表', '继续添加'],
  190. closeBtn: 0,
  191. yes: function(){
  192. location.href = ns.url("notes://shop/notes/lists");
  193. },
  194. btn2: function() {
  195. location.href = ns.url("notes://shop/notes/add");
  196. }
  197. });
  198. }else{
  199. layer.msg(res.message);
  200. }
  201. }
  202. })
  203. });
  204. });
  205. /**
  206. * 添加商品
  207. */
  208. var selectedGoodsId = [];
  209. function addGoods() {
  210. goodsSelect(function (res) {
  211. if (!res.length) return false;
  212. selectedGoodsId = [];
  213. var sku_ids = [];
  214. for (var i = 0; i < res.length; i++) {
  215. goods_id = res[i].goods_id;
  216. $("input[name=goods_id]").val(goods_id);
  217. $("#goodImg").html("<img src=" + ns.img(res[i].goods_image.split(",")[0],'small') + " >");
  218. $(".good-img").val(res[i].goods_image);
  219. $(".good-name").text(res[i].goods_name);
  220. $(".good-price span").text(res[i].price);
  221. for (var k = 0; k < res[i].sku_list.length; k++) {
  222. sku_ids.push(res[i].sku_list[k].sku_id);
  223. }
  224. }
  225. selectedGoodsId.push(goods_id);
  226. $("input[name=sku_id]").val(sku_ids.toString());
  227. }, selectedGoodsId, {mode: "spu", max_num: 1, min_num: 1, disabled:0});
  228. }
  229. function back() {
  230. location.href = ns.url("notes://shop/notes/lists");
  231. }
  232. </script>
  233. {/block}