form.html 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. {extend name='admin@main'}
  2. {block name="button"}
  3. <button class="layui-btn layui-btn-sm layui-btn-primary" type='button' onclick="javascript:history.back()">返回</button>
  4. {/block}
  5. {block name="content"}
  6. <div class="think-box-shadow">
  7. <form class="layui-form layui-card" action="{:request()->url()}" data-auto="true" method="post" autocomplete="off">
  8. <div class="layui-card-body">
  9. {notempty name='vo.id'}<input type='hidden' value='{$vo.id}' name='id'>{/notempty}
  10. <div class="layui-form-item">
  11. <label class="layui-form-label color-green font-w7">商品分类</label>
  12. <div class="layui-input-block">
  13. <div class="layui-input-inline">
  14. <select class="layui-select" name="first_classify" id="first_classify" lay-filter="first_classify" lay-search>
  15. <option selected data-first_key="-1" value="0">请选择</option>
  16. {foreach $category_list as $kk=>$vv}
  17. {if isset_full_check($vo,'first_classify',$vv.id)}
  18. <option selected data-first_key="{$kk}" value="{$vv.id}">{$vv.name}</option>
  19. {else}
  20. <option data-first_key="{$kk}" value="{$vv.id}">{$vv.name}</option>
  21. {/if}
  22. {/foreach}
  23. </select>
  24. </div>
  25. <div class="layui-input-inline">
  26. <select class="layui-select" name="second_classify" id="second_classify" lay-filter="second_classify" lay-search></select>
  27. </div>
  28. <input type="hidden" id="first" value="{$vo.first_classify|default='-1'}"/>
  29. <input type="hidden" id="second" value="{$vo.second_classify|default='-1'}"/>
  30. </div>
  31. </div>
  32. <div class="layui-form-item">
  33. <label class="layui-form-label color-green font-w7">商品编号</label>
  34. <div class="layui-input-block">
  35. <input type="text" name="goods_no" placeholder="请输入商品编号" value="{$vo.goods_no|default=''}" class="layui-input" required>
  36. <p class="help-block"></p>
  37. </div>
  38. </div>
  39. <div class="layui-form-item">
  40. <label class="layui-form-label color-green font-w7">商品名称</label>
  41. <div class="layui-input-block">
  42. <input type="text" name="goods_name" placeholder="请输入商品名称" value="{$vo.goods_name|default=''}" class="layui-input" required>
  43. <p class="help-block"></p>
  44. </div>
  45. </div>
  46. <div class="layui-form-item">
  47. <label class="layui-form-label color-green font-w7">商品品牌</label>
  48. <div class="layui-input-block">
  49. <input type="text" name="goods_brand" placeholder="请输入商品品牌" value="{$vo.goods_brand|default=''}" class="layui-input" required>
  50. </div>
  51. </div>
  52. <div class="layui-form-item">
  53. <label class="layui-form-label color-green font-w7">权重</label>
  54. <div class="layui-input-block">
  55. <input type="number" name="sort" placeholder="请输入数字" value="{$vo.sort|default='10'}"
  56. class="layui-input" min="0" required>
  57. <p class="help-block"></p>
  58. </div>
  59. </div>
  60. <div class="layui-form-item">
  61. <label class="layui-form-label color-green font-w7">商品规格</label>
  62. <div class="layui-input-block"></div>
  63. </div>
  64. <div class="paramsData">
  65. {notempty name='vo.goods_stock'}
  66. {foreach name="vo.goods_stock" item="val" key="key"}
  67. <div class="layui-form-item paramsItem{$key}">
  68. <label class="layui-form-label"></label>
  69. <div class="layui-input-block">
  70. <div class="layui-input-inline" style="width: 50px">规格名称</div>
  71. <div class="layui-input-inline">
  72. <input type="text" name="goods_stock[{$key}][name]" placeholder="请输入规格名称"
  73. value="{$val.name|default=''}" class="layui-input goods_stock_name" required>
  74. </div>
  75. <div class="layui-input-inline" style="width: 50px">库存数量</div>
  76. <div class="layui-input-inline">
  77. <input type="number" name="goods_stock[{$key}][stock]" placeholder="请输入库存数量"
  78. value="{$val.stock|default=''}" class="layui-input goods_stock_stock" required>
  79. </div>
  80. <div class="layui-input-inline" style="width: 50px">冻结库存</div>
  81. <div class="layui-input-inline">
  82. <input type="number" placeholder="" value="{$val.freeze_stock|default=''}" class="layui-input layui-bg-gray goods_stock_freeze_stock" readonly>
  83. </div>
  84. <div class="layui-input-inline">
  85. <button type="button" class="layui-btn layui-btn-sm layui-btn-danger" onclick="delParams('{$key}');">删除</button>
  86. </div>
  87. <input type="hidden" name="goods_stock[{$key}][id]" value="{$val.id|default=''}"
  88. class="goods_stock_id">
  89. </div>
  90. </div>
  91. {/foreach}
  92. {/notempty}
  93. </div>
  94. <div class="layui-form-item">
  95. <label class="layui-form-label color-green font-w7"></label>
  96. <div class="layui-input-block">
  97. <button type="button" class="layui-btn layui-btn-sm layui-btn-primary" onclick="addParams();">+ 添加规格</button>
  98. </div>
  99. </div>
  100. </div>
  101. <div class="hr-line-dashed"></div>
  102. {if $Think.get.type == 1}
  103. {else/}
  104. <div class="layui-form-item text-center">
  105. <button class="layui-btn" type='submit'>保存数据</button>
  106. <!-- <button class="layui-btn layui-btn-danger" type='button' data-confirm="确定要取消编辑吗?" data-close>取消编辑</button>-->
  107. </div>
  108. {/if}
  109. </form>
  110. <script>
  111. window.form.render();
  112. </script>
  113. </div>
  114. {/block}
  115. {block name="style"}{/block}
  116. {block name='script'}
  117. <script>
  118. // 商品分类联动 start
  119. var sel_second = {:isset($vo['second_classify']) ? $vo['second_classify']:0};
  120. var goods_spec = {:json_encode($category_list)};
  121. first(1);
  122. function first(source){
  123. // 将其他选择框置空
  124. var first_key = $("select[name='first_classify']").find("option:selected").data("first_key")
  125. $("#first").val(first_key);
  126. $("select[name='second_classify']").html('');
  127. // 没有下级不继续
  128. if(first_key == -1 || !("childlist" in goods_spec[first_key])){
  129. $("#second").val(-1);
  130. window.form.render();
  131. return true;
  132. }else{
  133. var second_html = '<option data-second_key="-1" selected value="0">请选择分类</option>';
  134. var to_each = goods_spec[first_key]['childlist'];
  135. $.each(to_each,function (ck,cv) {
  136. if(source == 1 && sel_second == cv.id){
  137. second_html +='<option selected data-second_key="'+ck+'" value="'+cv.id+'">'+cv.name+'</option>';
  138. $("#second").val(ck);
  139. }else{
  140. second_html +='<option data-second_key="'+ck+'" value="'+cv.id+'">'+cv.name+'</option>';
  141. }
  142. })
  143. $("select[name='second_classify']").html(second_html);
  144. second()
  145. window.form.render();
  146. }
  147. }
  148. function second(){
  149. var first_key = $("select[name='first_classify']").find("option:selected").data("first_key");
  150. var second_key = $("select[name='second_classify']").find("option:selected").data("second_key");
  151. // 将其他选择框置空
  152. $("#second").val(second_key);
  153. // 没有下级不继续
  154. if(second_key == -1 || !("childlist" in goods_spec[first_key]['childlist'][second_key])){
  155. $("#third").val(-1);
  156. window.form.render();
  157. return true;
  158. }
  159. window.form.render();
  160. }
  161. // 一级分类监听
  162. form.on('select(first_classify)', function(data){
  163. var first_key = data.elem[data.elem.selectedIndex].dataset.first_key;
  164. //与之前选择的一样不处理
  165. if($("#first").val() == first_key){
  166. return true;
  167. }
  168. first(2);
  169. })
  170. // 二级分类监听
  171. form.on('select(second_classify)', function(data){
  172. var second_key = data.elem[data.elem.selectedIndex].dataset.second_key;
  173. //与之前选择的一样不处理
  174. if($("#second").val() == second_key){
  175. return true;
  176. }
  177. second()
  178. })
  179. // 商品分类end
  180. // 商品规格 start
  181. function addParams() {
  182. var length = $('.paramsData').children().length;
  183. var key = length;
  184. var html = '<div class="layui-form-item paramsItem'+key+'"> ' +
  185. '<label class="layui-form-label"></label> ' +
  186. '<div class="layui-input-block"> ' +
  187. '<div class="layui-input-inline" style="width: 50px">规格名称</div>' +
  188. '<div class="layui-input-inline">' +
  189. '<input type="text" name="goods_stock['+key+'][name]" placeholder="请输入规格名称" value="" class="layui-input goods_stock_name" required>'+
  190. '</div> ' +
  191. '<div class="layui-input-inline" style="width: 50px">库存数量</div>' +
  192. '<div class="layui-input-inline paramsItemvalue paramsItemvalue'+key+'"> ' +
  193. '<input type="number" name="goods_stock['+key+'][stock]" placeholder="请输入库存数量" value="" class="layui-input goods_stock_stock" required>' +
  194. '</div>' +
  195. '<div class="layui-input-inline" style="width: 50px">冻结库存</div>' +
  196. '<div class="layui-input-inline">' +
  197. '<input type="number" placeholder="" value="0" class="layui-input layui-bg-gray goods_stock_freeze_stock" readonly></div>' +
  198. '<div class="layui-input-inline"> ' +
  199. '<button type="button" class="layui-btn layui-btn-sm layui-btn-danger" onclick="delParams('+key+');">删除</button> ' +
  200. '</div> ' +
  201. '<input type="hidden" name="goods_stock['+key+'][id]" value="" class="goods_stock_id">'+
  202. '</div> ' +
  203. '</div>';
  204. $(".paramsData").append(html);
  205. form.render();
  206. }
  207. function delParams(key) {
  208. var length = $('.paramsData').children().length;
  209. var count = length-1;
  210. console.log(length);
  211. if(key > 0 && key == count){
  212. //删除的是最后一步(不是唯一一步)
  213. $(".paramsItem" + key).remove();
  214. } else{
  215. //删除的是中间的一步,所有步骤序号重新排列
  216. $(".paramsItem" + key).remove();
  217. for(var i=key;i < length;i++){
  218. var ii = i-1;
  219. $(".paramsData .layui-form-item").eq(ii).attr("class","layui-form-item paramsItem"+ii);
  220. $(".paramsData .layui-form-item").eq(ii).find(".goods_stock_name").attr('name',"goods_stock["+ii+"][name]");
  221. $(".paramsData .layui-form-item").eq(ii).find(".goods_stock_stock").attr('name',"goods_stock["+ii+"][stock]");
  222. $(".paramsData .layui-form-item").eq(ii).find(".goods_stock_id").attr('name',"goods_stock["+ii+"][id]");
  223. $(".paramsData .layui-form-item").eq(ii).find(".layui-btn-danger").attr("onclick","delParams("+ii+");");
  224. }
  225. }
  226. }
  227. // 商品规格 end
  228. </script>
  229. {/block}