截流自动化的商城平台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

lists.html 24KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529
  1. {layout name="layout1" /}
  2. <style>
  3. .layui-table-cell {
  4. height: auto;
  5. }
  6. </style>
  7. <div class="wrapper">
  8. <div class="layui-card">
  9. <!--操作提示-->
  10. <div class="layui-card-body">
  11. <div class="layui-collapse like-layui-collapse" lay-accordion="" style="border:1px dashed #c4c4c4">
  12. <div class="layui-colla-item">
  13. <h2 class="layui-colla-title like-layui-colla-title" style="background-color: #fff">操作提示</h2>
  14. <div class="layui-colla-content layui-show">
  15. <p>*平台审核商家发布的商品,当商品审核通过并且处于销售中状态时,商家可以销售该商品</p>
  16. <p>*平台可通过“违规重审”,下架违规商品并标记为审核未通过。</p>
  17. </div>
  18. </div>
  19. </div>
  20. </div>
  21. <!--搜索条件-->
  22. <div class="layui-card-body layui-form">
  23. <div class="layui-form-item">
  24. <div class="layui-inline">
  25. <label class="layui-form-label">商家名称:</label>
  26. <div class="layui-input-inline">
  27. <input type="text" name="shop_name" id="shop_name" autocomplete="off" class="layui-input">
  28. </div>
  29. </div>
  30. <div class="layui-inline">
  31. <label class="layui-form-label">商品名称:</label>
  32. <div class="layui-input-inline">
  33. <input type="text" name="goods_name" id="goods_name" autocomplete="off" class="layui-input">
  34. </div>
  35. </div>
  36. <div class="layui-inline">
  37. <label class="layui-form-label">商品类型:</label>
  38. <div class="layui-input-block">
  39. <select name="goods_type" id="goods_type" >
  40. <option value="">全部</option>
  41. {foreach $goods_type as $key => $val }
  42. <option value="{$key}">{$val}</option>
  43. {/foreach}
  44. </select>
  45. </div>
  46. </div>
  47. <div class="layui-inline">
  48. <label class="layui-form-label">平台分类:</label>
  49. <div class="layui-input-block">
  50. <select name="platform_cate_id" id="platform_cate_id" placeholder="请选择平台商品分类" >
  51. <option value="0">全部</option>
  52. {foreach $cate_list as $val }
  53. <option value="{$val.id}">{$val.html}{$val.name}</option>
  54. {/foreach}
  55. </select>
  56. </div>
  57. </div>
  58. <div class="layui-inline">
  59. <label class="layui-form-label">商品栏目:</label>
  60. <div class="layui-input-block">
  61. <select name="goods_column_id" id="goods_column_id" placeholder="请选择商品栏目" >
  62. <option value="">全部</option>
  63. {foreach $column_list as $val }
  64. <option value="{$val.id}">{$val.name}</option>
  65. {/foreach}
  66. </select>
  67. </div>
  68. </div>
  69. <div class="layui-inline">
  70. <button class="layui-btn layui-btn-sm layui-btn-normal" lay-submit lay-filter="search">查询</button>
  71. <button class="layui-btn layui-btn-sm layui-btn-primary" lay-submit lay-filter="clear-search">重置</button>
  72. </div>
  73. </div>
  74. </div>
  75. <!-选项卡-->
  76. <div class="layui-tab layui-tab-card" lay-filter="like-tabs">
  77. <ul class="layui-tab-title">
  78. <li data-type='1' class="layui-this">销售中商品({$statistics.sell})</li>
  79. <li data-type='2' >仓库中商品({$statistics.warehouse})</li>
  80. <li data-type='3' >回收站商品({$statistics.recycle})</li>
  81. <li data-type='4' >待审核商品({$statistics.audit_stay})</li>
  82. <li data-type='5' >审核未通过商品({$statistics.audit_refuse})</li>
  83. </ul>
  84. <div class="layui-tab-content" style="padding: 0 15px;">
  85. <div class="layui-btn-container" style="margin-top: 10px">
  86. <button class="layui-btn layui-btn-sm layEvent layui-btn-primary" lay-event="more_audit" id="more_audit" style="display: none">批量审核</button>
  87. <button class="layui-btn layui-btn-sm layEvent layui-btn-primary" lay-event="more_lower" id="more_lower">批量下架</button>
  88. </div>
  89. <table id="goods-lists" lay-filter="goods-lists"></table>
  90. <script type="text/html" id="shop-info">
  91. <img src="{{d.shop_logo}}" style="height:60px;width: 60px" class="image-show">
  92. <div class="layui-input-inline" style="text-align: left;">
  93. <p>商家编号:{{d.shop_id}}</p>
  94. <p style="width: 180px;text-overflow:ellipsis;overflow: hidden">商家名称:{{d.shop_name}}</p>
  95. <p>商家类型:{{d.shop_type_desc}}</p>
  96. </div>
  97. </script>
  98. <script type="text/html" id="goods-info">
  99. <img src="{{d.image}}" style="height:60px;width: 60px;margin-right: 5px;" class="image-show"> {{d.name}}
  100. </script>
  101. <script type="text/html" id="price-info">
  102. {{d.min_price}} ~ {{d.max_price}}
  103. </script>
  104. <script type="text/html" id="ratio">
  105. 一级分销比例:{{d.first_ratio}}% <br />
  106. 二级分销比例:{{d.second_ratio}}% <br />
  107. 三级分销比例:{{d.third_ratio}}% <br />
  108. </script>
  109. <script type="text/html" id="goods-operation">
  110. <a class="layui-btn layui-btn-normal layui-btn-sm" lay-event="view">查看</a>
  111. <a class="layui-btn layui-btn-normal layui-btn-sm" lay-event="set">设置</a>
  112. {{# if( (d.audit_status == 1) ){ }}
  113. <a class="layui-btn layui-btn-normal layui-btn-sm" lay-event="re_audit">违规重审</a>
  114. {{# } }}
  115. {{# if( (d.audit_status == 0) ){ }}
  116. <a class="layui-btn layui-btn-normal layui-btn-sm" lay-event="audit">审核</a>
  117. {{# } }}
  118. </script>
  119. </div>
  120. </div>
  121. </div>
  122. </div>
  123. <script>
  124. layui.use(['table', 'form', 'element'], function(){
  125. var $ = layui.$
  126. ,form = layui.form
  127. ,table = layui.table
  128. ,element = layui.element;
  129. //监听搜索
  130. form.on('submit(search)', function(data){
  131. var field = data.field;
  132. //执行重载
  133. table.reload('goods-lists', {
  134. where: field,
  135. page: {curr: 1}
  136. });
  137. updateTabNumber();
  138. });
  139. //清空查询
  140. form.on('submit(clear-search)', function(){
  141. $('#shop_name').val('');
  142. $('#goods_name').val('');
  143. $('#goods_type').val('');
  144. $('#platform_cate_id').val('');
  145. $('#shop_cate_id').val('');
  146. $('#goods_column_id').val('');
  147. form.render('select');
  148. //刷新列表
  149. table.reload('goods-lists', {
  150. where: [], page: {curr: 1}
  151. });
  152. updateTabNumber();
  153. });
  154. $('.layui-btn.layuiadmin-btn-goods').on('click', function(){
  155. var type = $(this).data('type');
  156. active[type] ? active[type].call(this) : '';
  157. });
  158. //获取列表
  159. getList(1); // 初始加载获取销售中的商品
  160. //切换列表
  161. element.on('tab(like-tabs)', function (data) {
  162. var type = $(this).attr('data-type');
  163. // 重置搜索模块
  164. $('#shop_name').val('');
  165. $('#goods_name').val('');
  166. $('#platform_cate_id').val('');
  167. $('#shop_cate_id').val('');
  168. $('#goods_column_id').val('');
  169. form.render('select');
  170. if (type == 4) {
  171. $("#more_audit").show();
  172. }else {
  173. $("#more_audit").hide();
  174. }
  175. if (type == 1 || type == 2 || type == 3) {
  176. $("#more_lower").show();
  177. }else {
  178. $("#more_lower").hide();
  179. }
  180. // 重新获取商品列表
  181. getList(type);
  182. });
  183. //监听工具条
  184. table.on('tool(goods-lists)', function(obj){
  185. var id = obj.data.id;
  186. var name = obj.data.name;
  187. if(obj.event === 'view') {
  188. var id = obj.data.id;
  189. layer.open({
  190. type: 2
  191. ,title: '查看'
  192. ,content: '{:url("goods.goods/view")}?goods_id='+id
  193. ,area: ['90%', '90%']
  194. ,btn: ['确定', '返回']
  195. ,maxmin: true
  196. ,yes: function(index, layero){
  197. layer.close(index);
  198. }
  199. ,cancel: function(index, layero){
  200. layer.close(index);
  201. }
  202. });
  203. }
  204. if(obj.event === 're_audit') {
  205. var id = obj.data.id;
  206. layer.open({
  207. type: 2
  208. ,title: '违规重审'
  209. ,content: '{:url("goods.goods/reAudit")}?goods_id='+id
  210. ,area: ['60%', '60%']
  211. ,btn: ['确定', '返回']
  212. ,scrollbar: false
  213. ,maxmin: true
  214. ,yes: function(index, layero){
  215. var iframeWindow = window['layui-layer-iframe'+ index]
  216. ,submitID = 'reaudit-submit'
  217. ,submit = layero.find('iframe').contents().find('#'+ submitID);
  218. //监听提交
  219. iframeWindow.layui.form.on('submit('+ submitID +')', function(data){
  220. var field = data.field;
  221. like.ajax({
  222. url:'{:url("goods.goods/reAudit")}',
  223. data:field,
  224. type:"post",
  225. success:function(res)
  226. {
  227. if(res.code == 1)
  228. {
  229. layui.layer.msg(res.msg, {
  230. offset: '15px'
  231. , icon: 1
  232. , time: 1000
  233. },function () {
  234. // window.location.href = window.location.href;
  235. updateTabNumber();
  236. table.reload('goods-lists');
  237. });
  238. }
  239. }
  240. });
  241. });
  242. submit.trigger('click');
  243. layer.close(index);
  244. }
  245. ,cancel: function(index, layero){
  246. layer.close(index);
  247. }
  248. });
  249. }
  250. if(obj.event === 'set') {
  251. var id = obj.data.id;
  252. layer.open({
  253. type: 2
  254. ,title: '设置'
  255. ,content: '{:url("goods.goods/setInfo")}?goods_id='+id
  256. ,area: ['60%', '60%']
  257. ,btn: ['确定', '返回']
  258. ,scrollbar: false
  259. ,maxmin: true
  260. ,yes: function(index, layero){
  261. var iframeWindow = window['layui-layer-iframe'+ index]
  262. ,submitID = 'setinfo-submit'
  263. ,submit = layero.find('iframe').contents().find('#'+ submitID);
  264. //监听提交
  265. iframeWindow.layui.form.on('submit('+ submitID +')', function(data){
  266. var field = data.field;
  267. like.ajax({
  268. url:'{:url("goods.goods/setInfo")}',
  269. data:field,
  270. type:"post",
  271. success:function(res)
  272. {
  273. if(res.code == 1)
  274. {
  275. layui.layer.msg(res.msg, {
  276. offset: '15px'
  277. , icon: 1
  278. , time: 1000
  279. },function () {
  280. // window.location.href = window.location.href;
  281. layer.close(index);
  282. updateTabNumber();
  283. table.reload('goods-lists');
  284. });
  285. }
  286. }
  287. });
  288. });
  289. submit.trigger('click');
  290. }
  291. ,cancel: function(index, layero){
  292. layer.close(index);
  293. }
  294. });
  295. }
  296. if(obj.event === 'audit') {
  297. var id = obj.data.id;
  298. layer.open({
  299. type: 2
  300. ,title: '审核'
  301. ,content: '{:url("goods.goods/audit")}?goods_id='+id
  302. ,area: ['60%', '60%']
  303. ,btn: ['确定', '返回']
  304. ,scrollbar: false
  305. ,maxmin: true
  306. ,yes: function(index, layero){
  307. var iframeWindow = window['layui-layer-iframe'+ index]
  308. ,submitID = 'audit-submit'
  309. ,submit = layero.find('iframe').contents().find('#'+ submitID);
  310. //监听提交
  311. iframeWindow.layui.form.on('submit('+ submitID +')', function(data){
  312. var field = data.field;
  313. like.ajax({
  314. url:'{:url("goods.goods/audit")}',
  315. data:field,
  316. type:"post",
  317. success:function(res)
  318. {
  319. if(res.code == 1)
  320. {
  321. layui.layer.msg(res.msg, {
  322. offset: '15px'
  323. , icon: 1
  324. , time: 1000
  325. },function () {
  326. // window.location.href = window.location.href;
  327. layer.close(index);
  328. updateTabNumber();
  329. table.reload('goods-lists');
  330. });
  331. }
  332. }
  333. });
  334. });
  335. submit.trigger('click');
  336. }
  337. ,cancel: function(index, layero){
  338. layer.close(index);
  339. }
  340. });
  341. }
  342. });
  343. //图片放大
  344. $(document).on('click', '.image-show', function () {
  345. var src = $(this).attr('src');
  346. like.showImg(src,600);
  347. });
  348. function getList(type) {
  349. like.tableLists('#goods-lists', '{:url("goods.goods/lists")}?type='+type, [
  350. {type: 'checkbox', fixed: 'left'}
  351. ,{title: '商家信息',width:280, templet: '#shop-info'}
  352. ,{title: '商品信息',width:280, templet: '#goods-info'}
  353. ,{field: 'columnStr', title: '商品栏目',width:220}
  354. ,{field: 'price',title: '价格区间(元)', width: 180, align: 'center'}
  355. ,{field: 'sales_actual',width: 80,title: '总销售', align: 'center'}
  356. ,{field: 'stock',width: 80,title: '总库存', align: 'center'}
  357. // ,{field: 'is_distribution_desc',width: 120,title: '分销商品', align: 'center'}
  358. // ,{width: 220,title: '分销比例', templet: '#ratio', align: 'center'}
  359. ,{field: 'sort_weight',width: 120, title:'排序权重', align: 'center'}
  360. ,{field: 'audit_remark', width: 220, title: '审核说明', align: 'center'}
  361. ,{field: 'create_time', width: 220, title:'发布日期', align: 'center'}
  362. ,{fixed: 'right', title: '操作', width: 280, align: 'center', toolbar: '#goods-operation'}
  363. ]);
  364. // if(type == 5) { // 审核未通过,显示审核说明列(注意计时器时间控制,先让动态表格渲染完成,再去移除layui-hide)
  365. // setTimeout(function() {
  366. // $('.layui-table .layui-hide').removeClass('layui-hide');
  367. // }, 1500);
  368. // }
  369. }
  370. /**
  371. * 更新选项卡 统计数据
  372. */
  373. function updateTabNumber() {
  374. var goods_column = $('#goods_column_id[name=goods_column_id]').val();
  375. like.ajax({
  376. url: '{:url("goods.goods/totalCount")}',
  377. data: {"goods_column_id" : goods_column},
  378. type: "GET",
  379. success: function (res) {
  380. if (res.code === 1) {
  381. $(".layui-tab-title li[data-type=1]").html("销售中商品(" + res.data.sell + ")");
  382. $(".layui-tab-title li[data-type=2]").html("仓库中商品(" + res.data.warehouse + ")");
  383. $(".layui-tab-title li[data-type=3]").html("回收站商品(" + res.data.recycle + ")");
  384. $(".layui-tab-title li[data-type=4]").html("待审核商品(" + res.data.audit_stay + ")");
  385. $(".layui-tab-title li[data-type=5]").html("审核未通过商品(" + res.data.audit_refuse + ")");
  386. }
  387. }
  388. });
  389. }
  390. //事件
  391. var active = {
  392. more_audit: function(){
  393. var checkStatus = table.checkStatus('goods-lists');
  394. var checkData = checkStatus.data;
  395. var ids = [];
  396. // 取出选中的行ID
  397. checkData.forEach(function (item) {
  398. ids.push(parseInt(item['id']));
  399. });
  400. if (ids.length <= 0) {
  401. layui.layer.msg('请选择商品', {time: 1000});
  402. return false;
  403. }
  404. layer.open({
  405. type: 2
  406. ,title: '批量审核'
  407. ,content: '{:url("goods.goods/moreAudit")}?ids='+ids
  408. ,area: ['60%', '60%']
  409. ,btn: ['确定', '返回']
  410. ,scrollbar: false
  411. ,maxmin: true
  412. ,yes: function(index, layero){
  413. var iframeWindow = window['layui-layer-iframe'+ index]
  414. ,submitID = 'audit-submit'
  415. ,submit = layero.find('iframe').contents().find('#'+ submitID);
  416. //监听提交
  417. iframeWindow.layui.form.on('submit('+ submitID +')', function(data){
  418. var field = data.field;
  419. like.ajax({
  420. url:'{:url("goods.goods/moreAudit")}',
  421. data:field,
  422. type:"post",
  423. success:function(res)
  424. {
  425. if(res.code == 1)
  426. {
  427. layui.layer.msg(res.msg, {
  428. offset: '15px'
  429. , icon: 1
  430. , time: 1000
  431. },function () {
  432. layer.close(index);
  433. updateTabNumber();
  434. table.reload('goods-lists');
  435. });
  436. }
  437. }
  438. });
  439. });
  440. submit.trigger('click');
  441. }
  442. ,cancel: function(index, layero){
  443. layer.close(index);
  444. }
  445. });
  446. },
  447. more_lower: function() {
  448. var checkStatus = table.checkStatus('goods-lists');
  449. var checkData = checkStatus.data;
  450. var ids = [];
  451. // 取出选中的行ID
  452. checkData.forEach(function (item) {
  453. ids.push(parseInt(item['id']));
  454. });
  455. if (ids.length <= 0) {
  456. layui.layer.msg('请选择商品', {time: 1000});
  457. return false;
  458. }
  459. layer.open({
  460. type: 2
  461. ,title: '批量下架'
  462. ,content: '{:url("goods.goods/moreLower")}?ids='+ids
  463. ,area: ['60%', '60%']
  464. ,btn: ['确定', '返回']
  465. ,scrollbar: false
  466. ,maxmin: true
  467. ,yes: function(index, layero){
  468. var iframeWindow = window['layui-layer-iframe'+ index]
  469. ,submitID = 'reaudit-submit'
  470. ,submit = layero.find('iframe').contents().find('#'+ submitID);
  471. //监听提交
  472. iframeWindow.layui.form.on('submit('+ submitID +')', function(data){
  473. var field = data.field;
  474. like.ajax({
  475. url:'{:url("goods.goods/moreLower")}',
  476. data:field,
  477. type:"post",
  478. success:function(res)
  479. {
  480. if(res.code == 1)
  481. {
  482. layui.layer.msg(res.msg, {
  483. offset: '15px'
  484. , icon: 1
  485. , time: 1000
  486. },function () {
  487. updateTabNumber();
  488. table.reload('goods-lists');
  489. });
  490. }
  491. }
  492. });
  493. });
  494. submit.trigger('click');
  495. layer.close(index);
  496. }
  497. ,cancel: function(index, layero){
  498. layer.close(index);
  499. }
  500. });
  501. },
  502. };
  503. like.eventClick(active);
  504. });
  505. </script>