index.html 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. {extend name="app/shop/view/base.html"/}
  2. {block name="resources"}
  3. <style>
  4. .progress-layer {width:400px;background:#fff;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:1px 1px 50px rgba(0,0,0,.3);padding:20px 20px;z-index:100;display:none;}
  5. .progress-layer h3 {line-height:1;margin-bottom:15px;text-align:center;font-size:14px;}
  6. .progress-layer .layui-progress-big,.progress-layer .layui-progress-big .layui-progress-bar {height:14px;line-height:14px;}
  7. .progress-layer .layui-progress-text {line-height:14px;}
  8. .goods-info {padding: 5px 0;align-items: center;flex-wrap:unset!important;}
  9. .goods-info .room-name {padding-left: 5px;line-height: 1}
  10. .goods-info img {width:50px;height: 50px;}
  11. .single-filter-box{justify-content: end}
  12. </style>
  13. {/block}
  14. {block name="main"}
  15. <div class="single-filter-box">
  16. <button class="layui-btn" onclick="sync()">同步商品库</button>
  17. <a href="{:addon_url('live://shop/goods/add')}" class="layui-btn layui-btn-primary">添加商品</a>
  18. </div>
  19. <table id="goods_list" lay-filter="goods_list"></table>
  20. <!-- 直播间信息 -->
  21. <script type="text/html" id="goodsinfo">
  22. <div class="layui-table-cell goods-info">
  23. <img src="{{ ns.img(d.cover_img) }}">
  24. <span class="room-name" title="{{ d.name }}">{{ d.name }}</span>
  25. </div>
  26. </script>
  27. <!-- 操作 -->
  28. <script type="text/html" id="operation">
  29. <div class="table-btn">
  30. {{# if( (d.status == 2 || d.status == 3) && d.third_party_tag != 0 ){ }}
  31. <a class="layui-btn" lay-event="del">删除</a>
  32. {{# } }}
  33. </div>
  34. </script>
  35. <div class="progress-layer">
  36. <h3>正在同步中...</h3>
  37. <div class="layui-progress layui-progress-big" lay-showPercent="true" lay-filter="progress">
  38. <div class="layui-progress-bar layui-bg-blue" lay-percent="0%"></div>
  39. </div>
  40. </div>
  41. {/block}
  42. {block name="script"}
  43. <script>
  44. var form,table,element,syncClick = false,delete_flag = false;
  45. layui.use(['form', 'element'], function() {
  46. form = layui.form;
  47. element = layui.element;
  48. table = new Table({
  49. elem: '#goods_list',
  50. url: ns.url("live://shop/goods/index"),
  51. cols: [
  52. [{
  53. title: '商品信息',
  54. unresize: 'false',
  55. width: '30%',
  56. templet: "#goodsinfo"
  57. }, {
  58. title: '价格',
  59. unresize: 'false',
  60. width: '15%',
  61. field: 'price'
  62. }, {
  63. field: 'url',
  64. title: '商品链接',
  65. unresize: 'false',
  66. width: '30%'
  67. }, {
  68. field: 'status_name',
  69. title: '状态',
  70. unresize: 'false',
  71. width: '15%',
  72. }, {
  73. title: '操作',
  74. toolbar: '#operation',
  75. unresize: 'false',
  76. align:'right'
  77. }]
  78. ]
  79. });
  80. table.tool(function(obj) {
  81. var data = obj.data;
  82. switch (obj.event) {
  83. case 'del': //删除
  84. layer.confirm('确定要删除该商品吗?', function() {
  85. if (delete_flag) return false;
  86. delete_flag = true;
  87. $.ajax({
  88. url: ns.url("live://shop/goods/delete"),
  89. data: {
  90. id: data.id
  91. },
  92. dataType: 'JSON',
  93. type: 'POST',
  94. success: function(res) {
  95. layer.msg(res.message);
  96. delete_flag = false;
  97. if (res.code == 0) {
  98. table.reload({
  99. page: {
  100. curr: 1
  101. },
  102. });
  103. }
  104. }
  105. });
  106. }, function() {
  107. layer.close();
  108. delete_flag = false;
  109. });
  110. break;
  111. }
  112. })
  113. });
  114. // 同步商品
  115. function sync(start){
  116. if (syncClick) return;
  117. syncClick = true;
  118. var start = start == undefined ? 0 : start;
  119. $.ajax({
  120. url: ns.url("live://shop/goods/sync"),
  121. data: {
  122. start: 0,
  123. },
  124. dataType: 'JSON',
  125. type: 'POST',
  126. success: function(res) {
  127. syncClick = false;
  128. if (res.code == 0) {
  129. var data = res.data,
  130. next = parseInt(start) + 1;
  131. if (next < data.total_page) {
  132. if (start == 0) {
  133. $(".progress-layer").fadeOut();
  134. }
  135. var progress = (next / data.total_page * 100).toFixed(2);
  136. element.progress('progress', progress + '%');
  137. // 拉取下一页
  138. sync(next);
  139. } else {
  140. if (!$(".progress-layer").is(':hidden')) $(".progress-layer").fadeOut();
  141. layer.closeAll();
  142. layer.msg('同步成功');
  143. table.reload();
  144. }
  145. } else {
  146. layer.msg(res.message);
  147. }
  148. }
  149. });
  150. }
  151. </script>
  152. {/block}