edit.html 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  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">{$notes_info.data.goods_name}</div>
  38. </div>
  39. <div class="layui-form-item">
  40. <label class="layui-form-label">商品原价:</label>
  41. <div class="layui-input-inline good-price">
  42. ¥<span>{$notes_info.data.goods_price}</span>
  43. </div>
  44. </div>
  45. <div class="layui-form-item">
  46. <label class="layui-form-label"><span class="required">*</span>笔记价:</label>
  47. <div class="layui-input-block">
  48. <div class="layui-input-inline">
  49. <input type="number" name="notes_price" lay-verify="required|flnum" autocomplete="off" class="layui-input ns-len-short" value="{$notes_info.data.notes_price}">
  50. </div>
  51. <div class="layui-form-mid">元</div>
  52. </div>
  53. <div class="ns-word-aux">
  54. <p>如商品存在多规格,则所有规格均是此价售卖,请谨慎设置</p>
  55. </div>
  56. </div>
  57. <div class="layui-form-item">
  58. <label class="layui-form-label"><span class="required">*</span>最低购买数量:</label>
  59. <div class="layui-input-block">
  60. <input type="number" name="buy_num" lay-verify="required|int" autocomplete="off" class="layui-input ns-len-short primary_price" value="{$notes_info.data.buy_num}">
  61. </div>
  62. <div class="ns-word-aux">
  63. <p>最低购买数量不能小于2</p>
  64. </div>
  65. </div>
  66. <div class="layui-form-item">
  67. <label class="layui-form-label"><span class="required">*</span>开始时间:</label>
  68. <div class="layui-input-inline">
  69. <input type="text" id="start_time" name="start_time" lay-verify="required" class="layui-input ns-len-mid" autocomplete="off" readonly>
  70. <i class="ns-calendar"></i>
  71. </div>
  72. </div>
  73. <div class="layui-form-item">
  74. <label class="layui-form-label"><span class="required">*</span>结束时间:</label>
  75. <div class="layui-input-inline end-time">
  76. <input type="text" id="end_time" name="end_time" lay-verify="required|time" class="layui-input ns-len-mid" autocomplete="off" readonly>
  77. <i class="ns-calendar"></i>
  78. </div>
  79. <div class="ns-word-aux">
  80. <p>结束时间不能小于开始时间,也不能小于当前时间</p>
  81. </div>
  82. </div>
  83. <div class="ns-form-row">
  84. <button class="layui-btn ns-bg-color" lay-submit lay-filter="save">保存</button>
  85. <button class="layui-btn layui-btn-primary" onclick="back()">返回</button>
  86. </div>
  87. <input type="hidden" name="goods_id" value="{$notes_info.data.goods_id}" />
  88. <input type="hidden" name="sku_id" value="{$notes_info.data.sku_id}" />
  89. <input type="hidden" name="notes_id" value="{$notes_info.data.notes_id}" />
  90. <input type="hidden" class="start-time-hide" value="{$notes_info.data.start_time}" />
  91. <input type="hidden" class="end-time-hide" value="{$notes_info.data.end_time}" />
  92. </div>
  93. {/block}
  94. {block name="script"}
  95. <script>
  96. var goods_id = $("input[name=goods_id]").val();
  97. layui.use(['form', 'laydate'], function() {
  98. var form = layui.form,
  99. laydate = layui.laydate,
  100. repeat_flag = false,
  101. minDate = "";
  102. form.render();
  103. //开始时间
  104. laydate.render({
  105. elem: '#start_time', //指定元素
  106. type: 'datetime',
  107. value: ns.time_to_date($(".start-time-hide").val()),
  108. done: function(value) {
  109. minDate = value;
  110. reRender();
  111. }
  112. });
  113. //结束时间
  114. laydate.render({
  115. elem: '#end_time', //指定元素
  116. type: 'datetime',
  117. value: ns.time_to_date($(".end-time-hide").val())
  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 (primary_price < notes_price) {
  173. layer.msg('笔记价不能大于原价!', {icon: 5, anim: 6});
  174. }
  175. if(repeat_flag) return;
  176. repeat_flag = true;
  177. $.ajax({
  178. type: 'POST',
  179. dataType: 'JSON',
  180. url: ns.url("notes://shop/notes/edit"),
  181. data: data.field,
  182. async: false,
  183. success: function(res){
  184. repeat_flag = false;
  185. if (res.code == 0) {
  186. layer.confirm('编辑成功', {
  187. title:'操作提示',
  188. btn: ['返回列表', '继续操作'],
  189. yes: function(){
  190. location.href = ns.url("notes://shop/notes/lists");
  191. },
  192. btn2: function() {
  193. location.reload();
  194. }
  195. });
  196. }else{
  197. layer.msg(res.message);
  198. }
  199. }
  200. })
  201. });
  202. });
  203. /**
  204. * 添加商品
  205. */
  206. var selectedGoodsId = [goods_id];
  207. function addGoods() {
  208. goodsSelect(function (res) {
  209. if (!res.length) return false;
  210. var sku_ids = [];
  211. for (var i = 0; i < res.length; i++) {
  212. goods_id = res[i].goods_id;
  213. $("input[name=goods_id]").val(goods_id);
  214. $("#goodImg").html("<img src=" + ns.img(res[i].goods_image,'small') + " >");
  215. $(".good-img").val(res[i].goods_image);
  216. $(".good-name").text(res[i].goods_name);
  217. $(".good-price span").text(res[i].price);
  218. for (var k = 0; k < res[i].sku_list.length; k++) {
  219. sku_ids.push(res[i].sku_list[k].sku_id);
  220. }
  221. }
  222. selectedGoodsId = [goods_id];
  223. $("input[name=sku_id]").val(sku_ids.toString());
  224. }, selectedGoodsId, {mode: "spu", disabled: 0, max_num: 1, min_num: 1});
  225. }
  226. function back() {
  227. location.href = ns.url("notes://shop/notes/lists");
  228. }
  229. var goodsImgstr = "{$notes_info.data.goods_image}";
  230. if(goodsImgstr){
  231. var goodsImgArr = goodsImgstr.split(",");
  232. $("#goodImg").html(`<img src="${ns.img(goodsImgArr[0])}" />`);
  233. }
  234. </script>
  235. {/block}