form.html 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461
  1. {extend name='admin@main'}
  2. {block name="content"}
  3. {include file='mall@store_goods/form_style'}
  4. <style>
  5. .layui-form-radio{
  6. margin: 0 !important;
  7. padding-right:0 !important;
  8. }
  9. .layui-form-select{
  10. margin-right: 10px !important;
  11. }
  12. .layui-col-xs9{
  13. width: 90%;
  14. }
  15. </style>
  16. <form onsubmit="return false;" id="GoodsForm" data-auto="true" method="post" class='layui-form layui-card' autocomplete="off">
  17. <div class="layui-card-body think-box-shadow padding-left-40">
  18. <div class="layui-tab">
  19. <ul class="layui-tab-title">
  20. <li class="layui-this">商品设置</li>
  21. </ul>
  22. <div class="layui-tab-content">
  23. <!--基础设置-->
  24. <div class="layui-tab-item layui-show">
  25. <!--基础设置start-->
  26. <div class="layui-form-item layui-row layui-col-space15">
  27. <label class="layui-col-xs9 relative">
  28. <span class="color-green">名称</span>
  29. <input name="name" required class="layui-input" placeholder="请输入商品名称" value="{$vo.name|default=''}">
  30. </label>
  31. </div>
  32. <div class="layui-form-item layui-row layui-col-space15">
  33. <label class="layui-col-xs9 relative">
  34. <span class="color-green">标签</span><span class="margin-left-10 color-gray">多个半角逗号(,)隔开</span>
  35. <textarea placeholder="请输入标签" class="layui-textarea" name="label">{$vo.label|default=''}</textarea>
  36. </label>
  37. </div>
  38. <div class="layui-form-item layui-row layui-col-space15">
  39. <label class="layui-col-xs9 relative" style="width: 100%;">
  40. <span class="color-green">商品分类</span>
  41. </label>
  42. <div style="width: 100%">
  43. <div style="width: 15%;float: left;">
  44. <select class="layui-select" id="first_classify" name="first_classify" lay-filter="first_classify" lay-search>
  45. <option selected data-first_key="-1" selected value="0">请选择</option>
  46. {if !empty($goods_cate)}
  47. {foreach $goods_cate as $ck=>$cv}
  48. {if isset_full_check($vo,'first_classify',$cv['id'])}
  49. <option selected data-first_key="{$ck}" value="{$cv['id']}">{$cv['title']}</option>
  50. {else}
  51. <option data-first_key="{$ck}" value="{$cv['id']}">{$cv['title']}</option>
  52. {/if}
  53. {/foreach}
  54. {/if}
  55. </select>
  56. </div>
  57. <div style="width: 15%;float: left">
  58. <select class="layui-select" id="second_classify" name="second_classify" lay-filter="second_classify" lay-search>
  59. </select>
  60. </div>
  61. <div style="width: 15%;float: left">
  62. <select class="layui-select" id="third_classify" name="third_classify" lay-filter="third_classify" lay-search>
  63. </select>
  64. </div>
  65. <div style="width: 12%;float: left">
  66. <select class="layui-select" id="fourth_classify" name="fourth_classify" lay-filter="fourth_classify" lay-search>
  67. </select>
  68. </div>
  69. <input type="hidden" id="first" value="{$vo.first_classify|default='-1'}"/>
  70. <input type="hidden" id="second" value="{$vo.second_classify|default='-1'}"/>
  71. <input type="hidden" id="third" value="{$vo.third_classify|default='-1'}"/>
  72. </div>
  73. </div>
  74. <div class="layui-form-item layui-row layui-col-space15" >
  75. <label class="layui-col-xs9 relative">
  76. <span class="color-green">供应商</span>
  77. </label>
  78. <div class="layui-inline" style="top: -15px;margin-bottom: -25px">
  79. <div class="layui-input-inline">
  80. <select name="supplier_id" lay-filter ="supplier_id">
  81. <option value="0">请选择</option>
  82. {foreach $supplier_list as $dk=>$dv}
  83. <option {if isset($vo.supplier_id) && $vo.supplier_id == $dv['id'] }selected{/if} value="{$dv['id']}">{$dv['title']}</option>
  84. {/foreach}
  85. </select>
  86. </div>
  87. </div>
  88. </div>
  89. <div class="layui-form-item layui-row layui-col-space15">
  90. <label class="layui-col-xs9 relative">
  91. <span class="color-green">关联资料</span>
  92. </label>
  93. <div class="layui-inline" style="top: -15px;margin-bottom: -25px">
  94. <div class="layui-input-inline">
  95. <select name="datum_id" lay-filter ="datum_id">
  96. <option value="0">请选择</option>
  97. {foreach $datum_list as $dk=>$dv}
  98. <option {if isset($vo.datum_id) && $vo.datum_id == $dv['id'] }selected{/if} data-dl_key="{$dk}" value="{$dv['id']}">{$dv['title']}</option>
  99. {/foreach}
  100. </select>
  101. </div>
  102. <div class="layui-input-inline">
  103. <select name="datum_item" lay-filter ="datum_item">
  104. <option value="0">请选择</option>
  105. {foreach $datum_list as $vk=>$vv}
  106. {if isset($vo.datum_id) && $vo.datum_id == $vv['id'] }
  107. {foreach $vv['url_arr'] as $cln}
  108. <option {if isset($vo.datum_item) && $vo.datum_item == $cln['id']} selected {/if} value="{$cln['id']}">{$cln['title']}</option>
  109. {/foreach}
  110. {/if}
  111. {/foreach}
  112. </select>
  113. </div>
  114. </div>
  115. </div>
  116. <div class="layui-form-item layui-row layui-col-space15">
  117. <label class="layui-col-xs9 relative">
  118. <span class="color-green">关联视频</span>
  119. </label>
  120. <div class="layui-inline" style="top: -15px;margin-bottom: -25px">
  121. <div class="layui-input-inline">
  122. <select name="video_id" lay-filter ="video_id">
  123. <option value="0">请选择</option>
  124. {foreach $video_list as $vk=>$vv}
  125. <option {if isset($vo.video_id) && $vo.video_id == $vv['id'] }selected{/if} data-vl_key="{$vk}" value="{$vv['id']}">{$vv['title']}</option>
  126. {/foreach}
  127. </select>
  128. </div>
  129. <div class="layui-input-inline">
  130. <select name="video_item" lay-filter ="video_item">
  131. <option value="0">请选择</option>
  132. {foreach $video_list as $vk=>$vv}
  133. {if isset($vo.video_id) && $vo.video_id == $vv['id'] }
  134. {foreach $vv['video_arr'] as $cln}
  135. <option {if isset($vo.video_item) && $vo.video_item == $cln['id']} selected {/if} value="{$cln['id']}">{$cln['title']}</option>
  136. {/foreach}
  137. {/if}
  138. {/foreach}
  139. </select>
  140. </div>
  141. </div>
  142. </div>
  143. <div class="layui-form-item layui-row layui-col-space15">
  144. <label class="layui-col-xs9 relative">
  145. <span class="color-green">关联文章</span>
  146. </label>
  147. <div class="layui-inline" style="top: -15px;margin-bottom: -25px">
  148. <div class="layui-input-inline">
  149. <select name="article_id" lay-filter ="article_id">
  150. <option value="0">请选择</option>
  151. {foreach $article_list as $vk=>$vv}
  152. <option {if isset($vo.article_id) && $vo.article_id == $vv['id'] }selected{/if} data-vl_key="{$vk}" value="{$vv['id']}">{$vv['title']}</option>
  153. {/foreach}
  154. </select>
  155. </div>
  156. <div class="layui-input-inline">
  157. <select name="article_item" lay-filter ="article_item">
  158. <option value="0">请选择</option>
  159. {foreach $article_list as $vk=>$vv}
  160. {if isset($vo.article_id) && $vo.article_id == $vv['id'] }
  161. {foreach $vv['item_children'] as $cln}
  162. <option {if isset($vo.article_item) && $vo.article_item == $cln['id']} selected {/if} value="{$cln['id']}">{$cln['title']}</option>
  163. {/foreach}
  164. {/if}
  165. {/foreach}
  166. </select>
  167. </div>
  168. </div>
  169. </div>
  170. <div class="layui-form-item layui-row layui-col-space15">
  171. <label class="layui-col-xs9 relative">
  172. <span class="color-green label-required-prev">图片</span>
  173. <table class="layui-table">
  174. <thead>
  175. <tr>
  176. <th class="text-left">展示图片</th>
  177. </tr>
  178. <tr>
  179. <td width="auto" class="text-left"><input name="cover" type="hidden" value="{$vo.cover|default=''}"></td>
  180. </tr>
  181. </thead>
  182. </table>
  183. </label>
  184. <script>$('[name="cover"]').uploadMultipleImage()</script>
  185. </div>
  186. <div class="layui-form-item layui-row layui-col-space15">
  187. <label class="layui-col-xs9 relative">
  188. <span class="color-green">排序</span>
  189. <input name="sort" required class="layui-input" placeholder="请输入排序号" value="{$vo.sort|default='0'}">
  190. </label>
  191. </div>
  192. <div class="layui-form-item layui-row layui-col-space15">
  193. <label class="layui-col-xs9 relative">
  194. <span class="color-green">阅读量</span>
  195. <input name="read_num" required class="layui-input" placeholder="请输入阅读量" value="{$vo.read_num|default='0'}">
  196. </label>
  197. </div>
  198. <div class="layui-form-item layui-row layui-col-space15">
  199. <label class="layui-col-xs9 relative">
  200. <span class="color-green">转发量</span>
  201. <input name="transmit_num" required class="layui-input" placeholder="请输入转发量" value="{$vo.transmit_num|default='0'}">
  202. </label>
  203. </div>
  204. <div class="layui-form-item layui-row layui-col-space15">
  205. <label class="layui-col-xs9 relative">
  206. <span class="color-green">商品详情</span>
  207. <textarea name="content">{$vo.content|default=""}</textarea>
  208. </label>
  209. </div>
  210. <div class="layui-form-item text-center">
  211. {notempty name='vo.id'}<input type="hidden" name="id" value="{$vo.id}">{/notempty}
  212. <!-- <input type='hidden' value='{$supplier_id|default="0"}' name='supplier_id'>
  213. <input type='hidden' value='{$company_id|default="0"}' name='company_id'>-->
  214. <button class="layui-btn" type="submit">保存</button>
  215. <button class="layui-btn layui-btn-danger" type='button' onclick="history.go(-1)" data-close>返回</button>
  216. </div>
  217. </div>
  218. </div>
  219. </div>
  220. </div>
  221. </form>
  222. {/block}
  223. {block name='script'}
  224. <script>
  225. window.form.render();
  226. layui.use('element', function(){
  227. var $ = layui.jquery
  228. ,element = layui.element;
  229. var active = {
  230. tabAdd: function(){
  231. element.tabAdd('demo', {
  232. title: '新选项'+ (Math.random()*1000|0)
  233. ,content: '内容'+ (Math.random()*1000|0)
  234. ,id: new Date().getTime()
  235. })
  236. }
  237. ,tabDelete: function(othis){
  238. element.tabDelete('demo', '44');
  239. othis.addClass('layui-btn-disabled');
  240. }
  241. ,tabChange: function(){
  242. element.tabChange('demo', '22');
  243. }
  244. };
  245. $('.site-demo-active').on('click', function(){
  246. var othis = $(this), type = othis.data('type');
  247. active[type] ? active[type].call(this, othis) : '';
  248. });
  249. //Hash地址的定位
  250. var layid = location.hash.replace(/^#test=/, '');
  251. element.tabChange('test', layid);
  252. element.on('tab(test)', function(elem){
  253. location.hash = 'test='+ $(this).attr('lay-id');
  254. });
  255. });
  256. require(['ckeditor', 'angular'], function () {
  257. window.createEditor('[name="content"]', {
  258. height: 500,
  259. });
  260. })
  261. // 关联视频监听
  262. form.on('select(video_id)', function(data){
  263. var cl_html = '<option value="0">请选择</option>';
  264. if(data.value == 0) {
  265. $("select[name='video_item']").html(cl_html);
  266. }else{
  267. var vl_key = data.elem[data.elem.selectedIndex].dataset.vl_key;
  268. var video_list = {:json_encode($video_list)};
  269. $.each(video_list[vl_key]['video_arr'],function (ck,cv) {
  270. cl_html +='<option value="'+cv.id+'">'+cv.title+'</option>';
  271. })
  272. $("select[name='video_item']").html(cl_html);
  273. }
  274. window.form.render();
  275. });
  276. // 关联资料监听
  277. form.on('select(datum_id)', function(data){
  278. var cl_html = '<option value="0">请选择</option>';
  279. if(data.value == 0) {
  280. $("select[name='datum_item']").html(cl_html);
  281. }else{
  282. var dl_key = data.elem[data.elem.selectedIndex].dataset.dl_key;
  283. var datum_list = {:json_encode($datum_list)};
  284. $.each(datum_list[dl_key]['url_arr'],function (ck,cv) {
  285. cl_html +='<option value="'+cv.id+'">'+cv.title+'</option>';
  286. })
  287. $("select[name='datum_item']").html(cl_html);
  288. }
  289. window.form.render();
  290. });
  291. // 文章监听
  292. form.on('select(article_id)', function(data){
  293. var cl_html = '<option value="0">请选择</option>';
  294. if(data.value == 0) {
  295. $("select[name='article_item']").html(cl_html);
  296. }else{
  297. var vl_key = data.elem[data.elem.selectedIndex].dataset.vl_key;
  298. var article_list = {:json_encode($article_list)};
  299. $.each(article_list[vl_key]['item_children'],function (ck,cv) {
  300. cl_html +='<option value="'+cv.id+'">'+cv.title+'</option>';
  301. })
  302. $("select[name='article_item']").html(cl_html);
  303. }
  304. window.form.render();
  305. });
  306. // 四级分类联动 start
  307. var sel_second = {:isset($vo['second_classify']) ? $vo['second_classify']:0};
  308. var sel_third = {:isset($vo['third_classify']) ? $vo['third_classify']:0};
  309. var sel_fourth = {:isset($vo['fourth_classify']) ? $vo['fourth_classify']:0};
  310. var goods_spec = {:json_encode($goods_cate)};
  311. first(1);
  312. function first(source){
  313. // 将其他选择框置空
  314. var first_key = $("select[name='first_classify']").find("option:selected").data("first_key")
  315. $("#first").val(first_key);
  316. $("select[name='second_classify']").html('');
  317. $("select[name='third_classify']").html('');
  318. $("select[name='fourth_classify']").html('');
  319. // 没有下级不继续
  320. if(first_key == -1 || !("children" in goods_spec[first_key])){
  321. $("#second").val(-1);
  322. $("#third").val(-1);
  323. window.form.render();
  324. return true;
  325. }else{
  326. var second_html = '<option data-second_key="-1" selected value="0">请选择分类</option>';
  327. var to_each = goods_spec[first_key]['children'];
  328. $.each(to_each,function (ck,cv) {
  329. if(source == 1 && sel_second == cv.id){
  330. second_html +='<option selected data-second_key="'+ck+'" value="'+cv.id+'">'+cv.title+'</option>';
  331. $("#second").val(ck);
  332. }else{
  333. second_html +='<option data-second_key="'+ck+'" value="'+cv.id+'">'+cv.title+'</option>';
  334. }
  335. })
  336. $("select[name='second_classify']").html(second_html);
  337. window.form.render();
  338. second(source);
  339. }
  340. }
  341. function second(source){
  342. var first_key = $("select[name='first_classify']").find("option:selected").data("first_key");
  343. var second_key = $("select[name='second_classify']").find("option:selected").data("second_key");
  344. // 将其他选择框置空
  345. $("#second").val(second_key);
  346. $("select[name='third_classify']").html('');
  347. $("select[name='fourth_classify']").html('');
  348. // 没有下级不继续
  349. if(second_key == -1 || !("children" in goods_spec[first_key]['children'][second_key])){
  350. $("#third").val(-1);
  351. window.form.render();
  352. return true;
  353. }
  354. var to_each = goods_spec[first_key]['children'][second_key]['children'];
  355. var third_html = '<option data-third_key="-1" selected value="0">请选择分类</option>';
  356. $.each(to_each,function (ck,cv) {
  357. if(source == 1 && sel_third == cv.id){
  358. third_html +='<option selected data-third_key="'+ck+'" value="'+cv.id+'">'+cv.title+'</option>';
  359. $("#third").val(ck);
  360. }else{
  361. third_html +='<option data-third_key="'+ck+'" value="'+cv.id+'">'+cv.title+'</option>';
  362. }
  363. })
  364. $("select[name='third_classify']").html(third_html);
  365. $("select[name='fourth_classify']").html('');
  366. window.form.render();
  367. third(source);
  368. }
  369. function third(source){
  370. var first_key = $("select[name='first_classify']").find("option:selected").data("first_key");
  371. var second_key = $("select[name='second_classify']").find("option:selected").data("second_key");
  372. var third_key = $("select[name='third_classify']").find("option:selected").data("third_key");
  373. // 将其他选择框置空
  374. $("#third").val(third_key);
  375. $("select[name='fourth_classify']").html('');
  376. // 没有下级不继续
  377. if(third_key == -1 || !("children" in goods_spec[first_key]['children'][second_key]['children'][third_key])){
  378. window.form.render();
  379. return true;
  380. }
  381. var to_each = goods_spec[first_key]['children'][second_key]['children'][third_key]['children'];
  382. var fourth_html = '<option data-froth_key="-1" selected value="0">请选择分类</option>';
  383. $.each(to_each,function (ck,cv) {
  384. if(source == 1 && sel_fourth == cv.id){
  385. fourth_html +='<option selected data-froth_key="'+ck+'" value="'+cv.id+'">'+cv.title+'</option>';
  386. }else{
  387. fourth_html +='<option data-froth_key="'+ck+'" value="'+cv.id+'">'+cv.title+'</option>';
  388. }
  389. })
  390. $("select[name='fourth_classify']").html(fourth_html);
  391. window.form.render();
  392. }
  393. // 一级分类监听
  394. form.on('select(first_classify)', function(data){
  395. var first_key = data.elem[data.elem.selectedIndex].dataset.first_key;
  396. //与之前选择的一样不处理
  397. if($("#first").val() == first_key){
  398. return true;
  399. }
  400. first(2);
  401. })
  402. // 二级分类监听
  403. form.on('select(second_classify)', function(data){
  404. var second_key = data.elem[data.elem.selectedIndex].dataset.second_key;
  405. //与之前选择的一样不处理
  406. if($("#second").val() == second_key){
  407. return true;
  408. }
  409. second(2)
  410. })
  411. // 三级分类监听
  412. form.on('select(third_classify)', function(data){
  413. var third_key = data.elem[data.elem.selectedIndex].dataset.third_key;
  414. //与之前选择的一样不处理
  415. if($("#third").val() == third_key){
  416. return true;
  417. }
  418. third(2)
  419. })
  420. // 四级分类end
  421. </script>
  422. {/block}