form.html 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372
  1. <link rel="stylesheet" href="/static/plugs/layui/css/layui.css" media="all">
  2. <style>
  3. .layui-form-item {
  4. width: 80%;
  5. height: 90%;
  6. }
  7. </style>
  8. <div class="think-box-shadow" style="height: 100%">
  9. <form class="layui-form layui-card" id="subForm" action="{:request()->url()}" data-auto="true" method="post" autocomplete="off">
  10. <fieldset class="layui-elem-field layui-field-title" style="margin-top: 30px;">
  11. <legend>商品编辑</legend>
  12. </fieldset>
  13. <div class="layui-tab">
  14. <ul class="layui-tab-title">
  15. <li class="layui-this">基础设置</li>
  16. <li>其他</li>
  17. </ul>
  18. <div class="layui-tab-content">
  19. <!-- 基础设置-->
  20. <div class="layui-tab-item layui-show">
  21. <div class="layui-form-item">
  22. <label class="layui-form-label label-required">商品名称</label>
  23. <div class="layui-input-block">
  24. <input name="name" lay-verify="required" value='{$vo.name|default=""}' placeholder="请输入商品名称" class="layui-input">
  25. </div>
  26. </div>
  27. <div class="layui-form-item">
  28. <label class="layui-form-label label-required">商品简介</label>
  29. <div class="layui-input-block">
  30. <input name="desc" maxlength="50" value='{$vo.desc|default=""}' placeholder="请输入商品简介" class="layui-input">
  31. </div>
  32. </div>
  33. <div class="layui-form-item">
  34. <label class="layui-form-label label-required">商品分类</label>
  35. <div class="layui-input-inline">
  36. <select name="first_classify" lay-filter ="first_classify">
  37. <option value="0">请选择</option>
  38. {if !empty($goods_cate)}
  39. {foreach $goods_cate as $ck=>$cv}
  40. {if !empty($vo.first_classify) && $vo.first_classify == $cv['id'] }
  41. <option selected data-cl_key="{$ck}" value="{$cv['id']}">{$cv['title']}</option>
  42. {else}
  43. <option data-cl_key="{$ck}" value="{$cv['id']}">{$cv['title']}</option>
  44. {/if}
  45. {/foreach}
  46. {/if}
  47. </select>
  48. </div>
  49. <div class="layui-input-inline">
  50. <select name="second_classify" lay-filter ="second_classify">
  51. <option value="0">请选择</option>
  52. {if !empty($goods_cate)}
  53. {foreach $goods_cate as $ck=>$cv}
  54. {if !empty($vo.first_classify) && $vo.first_classify == $cv['id'] }
  55. {foreach $cv['children'] as $cln}
  56. {if $vo.second_classify == $cln['id'] }
  57. <option selected value="{$cln['id']}">{$cln['title']}</option>
  58. {else}
  59. <option value="{$cln['id']}">{$cln['title']}</option>
  60. {/if}
  61. {/foreach}
  62. {/if}
  63. {/foreach}
  64. {/if}
  65. </select>
  66. </div>
  67. </div>
  68. <div class="layui-form-item">
  69. <label class="layui-form-label label-required">最低等级</label>
  70. <div class="layui-input-inline">
  71. <select class="layui-select" name="level">
  72. {foreach $lev_set as $k=>$v}
  73. {if isset($vo.level) && $vo.level eq $k}
  74. <option selected value="{$k}">{$v}</option>
  75. {else}
  76. <option value="{$k}">{$v}</option>
  77. {/if}
  78. {/foreach}
  79. </select>
  80. </div>
  81. </div>
  82. <div class="layui-form-item">
  83. <label class="layui-form-label label-required">商品封面</label>
  84. <div class="layui-input-block">
  85. <input name="cover" type="hidden" value="{$vo.cover|default=''}">
  86. </div>
  87. </div>
  88. <div class="layui-form-item">
  89. <label class="layui-form-label label-required">规格设置</label>
  90. <div class="layui-input-block">
  91. <table class="layui-table margin-top-10" lay-skin="line">
  92. <thead>
  93. <tr>
  94. <th class='text-left nowrap'>货号</th>
  95. <th class='text-left nowrap'>库存</th>
  96. <th class='text-left nowrap'>原价</th>
  97. <th class='text-left nowrap' style="display: none">售价</th>
  98. <th class='text-left nowrap'>积分</th>
  99. </tr>
  100. </thead>
  101. <tbody class="no_html">
  102. {if isset($vo.spec)}
  103. {foreach $vo.spec as $sk=>$sv}
  104. <tr class="no_detail">
  105. <td class='text-left nowrap'>
  106. <input class='layui-input' name='goods_no[]' value="{$sv['goods_no']}"/>
  107. </td>
  108. <td class='text-left nowrap'>
  109. <input class='layui-input' name='store_num[]' value="{$sv['store_num']}"/>
  110. </td>
  111. <td class='text-left nowrap'>
  112. <input class='layui-input' name='price[]' value="{$sv['price']}"/>
  113. </td>
  114. <td class='text-left nowrap' style="display: none">
  115. <input class='layui-input' name='sell_money[]' value="{$sv['sell_money']}"/>
  116. </td>
  117. <td class='text-left nowrap'>
  118. <input class='layui-input' name='integral[]' value="{$sv['integral']}"/>
  119. </td>
  120. </tr>
  121. {/foreach}
  122. {else}
  123. <tr class="no_detail">
  124. <td class='text-left nowrap'>
  125. <input class='layui-input' id="wlgc" name='goods_no[]' value=""/>
  126. </td>
  127. <td class='text-left nowrap'>
  128. <input class='layui-input' name='store_num[]' value=""/>
  129. </td>
  130. <td class='text-left nowrap'>
  131. <input class='layui-input' name='price[]' value=""/>
  132. </td>
  133. <td class='text-left nowrap' style="display: none">
  134. <input class='layui-input' name='sell_money[]' value=""/>
  135. </td>
  136. <td class='text-left nowrap'>
  137. <input class='layui-input' name='integral[]' value=""/>
  138. </td>
  139. </tr>
  140. {/if}
  141. </tbody>
  142. </table>
  143. </div>
  144. </div>
  145. </div>
  146. <!--其他设置-->
  147. <div class="layui-tab-item">
  148. <!-- 运费设置-->
  149. <div class="freight_box">
  150. <div class="layui-form-item">
  151. <label class="layui-form-label">模板开关</label>
  152. <div class="layui-input-inline">
  153. {if isset($vo.freight_type) && $vo.freight_type == 1}
  154. <input type="checkbox" lay-filter="freight_type" checked="checked" lay-skin="switch" lay-text="ON|OFF">
  155. {else}
  156. <input type="checkbox" lay-filter="freight_type" lay-skin="switch" lay-text="ON|OFF">
  157. {/if}
  158. <input type="hidden" name="freight_type" value="{$vo.freight_type|default='0'}" />
  159. </div>
  160. </div>
  161. <div class="layui-form-item freight_mud" {if !isset($vo.freight_type) || !$vo.freight_type}style="display:none"{/if}>
  162. <label class="layui-form-label">运费模板</label>
  163. <div class="layui-input-inline">
  164. <select name="freight_id" lay-filter ="freight_id">
  165. <option value="0">请选择</option>
  166. {if !empty($all_temp)}
  167. {foreach $all_temp as $tk=>$tv}
  168. {if isset($vo.freight_id) && $vo.freight_id ==$tv['id'] }
  169. <option selected value="{$tv['id']}">{$tv['name']}</option>
  170. {else}
  171. <option value="{$tv['id']}">{$tv['name']}</option>
  172. {/if}
  173. {/foreach}
  174. {/if}
  175. </select>
  176. </div>
  177. </div>
  178. <div class="layui-form-item postage" {if isset($vo.freight_type) && $vo.freight_type}style="display:none"{/if}>
  179. <label class="layui-form-label">运费金额</label>
  180. <div class="layui-input-inline">
  181. <input type="number" step="1" min="0" name="postage" value="{$vo.postage|default=''}" class="layui-input">
  182. </div>
  183. <div class="layui-form-mid layui-word-aux">不填(或0)表示包邮</div>
  184. </div>
  185. </div>
  186. <div class="layui-form-item" >
  187. <label class="layui-form-label">详情</label>
  188. <div class="layui-input-block">
  189. <textarea name="detail">{$vo.detail|default=""}</textarea>
  190. </div>
  191. </div>
  192. {notempty name='vo.id'}<input type='hidden' value='{$vo.id}' name='id'>{/notempty}
  193. <div class="layui-form-item text-center">
  194. <span class="layui-btn" type='submit' id ="submit">保 存</span>
  195. <button class="layui-btn layui-btn-danger" type='button' data-confirm="确定取消编辑吗?" data-close>取消编辑</button>
  196. </div>
  197. </div>
  198. </form>
  199. </div>
  200. <script src="/static/plugs/layui/layui.all.js" charset="utf-8"></script>
  201. <script>
  202. window.form.render();
  203. require(['ckeditor', 'angular'], function () {
  204. window.createEditor('[name="detail"]', {height: 500,width:1000});
  205. })
  206. $.each($('.spec_img'),function (ik,iv) {
  207. $('.spec_img').eq(ik).uploadOneImage();
  208. })
  209. $('[name="cover"]').uploadOneImage();
  210. layui.use('laydate', function(){
  211. var laydate = layui.laydate;
  212. laydate.render({
  213. elem: '#presell_time'
  214. ,type: 'datetime'
  215. });
  216. })
  217. layui.use('element', function(){
  218. var $ = layui.jquery
  219. ,element = layui.element;
  220. var active = {
  221. tabAdd: function(){
  222. element.tabAdd('demo', {
  223. title: '新选项'+ (Math.random()*1000|0)
  224. ,content: '内容'+ (Math.random()*1000|0)
  225. ,id: new Date().getTime()
  226. })
  227. }
  228. ,tabDelete: function(othis){
  229. element.tabDelete('demo', '44');
  230. othis.addClass('layui-btn-disabled');
  231. }
  232. ,tabChange: function(){
  233. element.tabChange('demo', '22');
  234. }
  235. };
  236. $('.site-demo-active').on('click', function(){
  237. var othis = $(this), type = othis.data('type');
  238. active[type] ? active[type].call(this, othis) : '';
  239. });
  240. //Hash地址的定位
  241. var layid = location.hash.replace(/^#test=/, '');
  242. element.tabChange('test', layid);
  243. element.on('tab(test)', function(elem){
  244. location.hash = 'test='+ $(this).attr('lay-id');
  245. });
  246. });
  247. $("#wlgc").val(getCode());
  248. function getCode() {
  249. var t = "ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678",
  250. n = "";
  251. for (i = 0; i < 5; i++) n += t.charAt(Math.floor(Math.random() * t.length));
  252. return "SY_" + n + Math.floor(Math.random() * 1000000000);
  253. };
  254. layui.use('form', function(){
  255. var form = layui.form,layer = layui.layer;
  256. //监听指定开关
  257. form.on('switch(freight_type)', function(data) {
  258. console.log(this.checked);
  259. if (this.checked) {
  260. $("input[name='freight_type']").val(1);
  261. $(".freight_mud").show();
  262. $(".postage").hide();
  263. $(".seckill_price").show();
  264. } else {
  265. $("input[name='freight_type']").val(0);
  266. $(".freight_mud").hide();
  267. $(".postage").show();
  268. $(".seckill_price").hide();
  269. }
  270. })
  271. })
  272. // 分类选择监听
  273. form.on('select(first_classify)', function(data){
  274. var cl_html = '<option value="0">请选择</option>';
  275. if(data.value == 0) {
  276. $("select[name='second_classify']").html(cl_html);
  277. }else{
  278. var cl_key = data.elem[data.elem.selectedIndex].dataset.cl_key;
  279. var goods_spec = {:json_encode($goods_cate)};
  280. $.each(goods_spec[cl_key]['children'],function (ck,cv) {
  281. cl_html +='<option value="'+cv.id+'">'+cv.title+'</option>';
  282. })
  283. $("select[name='second_classify']").html(cl_html);
  284. }
  285. window.form.render();
  286. })
  287. /**
  288. * 表单验证
  289. */
  290. var is_click = 0;
  291. $(document).on('click','#submit',function () {
  292. if(is_click == 1) return;
  293. is_click = 1;
  294. var name = $("input[name='name']").val();
  295. var desc = $("input[name='desc']").val();
  296. var cover = $("input[name='cover']").val();
  297. var poster = $("input[name='poster']").val();
  298. var video = $("input[name='video']").val();
  299. var first_classify = $("select[name='first_classify']").val();
  300. var spec_id = $("select[name='spec_id']").val();
  301. var error_detail = 0;
  302. $.each($(".no_detail"),function (k,v) {
  303. if( !$(".no_detail").eq(k).find("input[name='goods_no[]']").val() ){
  304. error_detail = 1;
  305. return false;
  306. }
  307. if( !$(".no_detail").eq(k).find("input[name='store_num[]']").val() ){
  308. error_detail = 2;
  309. return false;
  310. }
  311. if( !$(".no_detail").eq(k).find("input[name='integral[]']").val() ){
  312. error_detail = 3;
  313. return false;
  314. }
  315. })
  316. if(error_detail !==0 ){
  317. layer.msg('请完善规格信息');
  318. is_click = 0;
  319. return false;
  320. }
  321. console.log($("select[name='freight_id']").val());
  322. if($("input[name='freight_type']").val() == 1 && $("select[name='freight_id']").val() == 0)
  323. {
  324. layer.msg('请选择运费模板');
  325. is_click = 0;
  326. return false;
  327. }
  328. $("#subForm").submit();
  329. is_click = 0;
  330. })
  331. </script>