lists.html 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309
  1. {extend name="base"/}
  2. {block name="resources"}
  3. <style>
  4. .layui-layer-content {padding-bottom: 20px!important;}
  5. </style>
  6. {/block}
  7. {block name="main"}
  8. <!--<div class="layui-collapse tips-wrap">-->
  9. <!--<div class="layui-colla-item">-->
  10. <!--<h2 class="layui-colla-title">操作提示</h2>-->
  11. <!--<ul class="layui-colla-content layui-show">-->
  12. <!--<li>商品类型用在添加或者编辑商品选择类型然后配置对应的商品参数。</li>-->
  13. <!--<li>商品配置好对应的类型和属性,前台用户可以根据分类关联的类型在搜索分类商品之后根据属性进行进一步的搜索。</li>-->
  14. <!--<li>商家也可添加自己店铺的类型和属性,平台端的商品类型和属性才能参与前台搜索。</li>-->
  15. <!--</ul>-->
  16. <!--</div>-->
  17. <!--</div>-->
  18. <!-- 搜索框 -->
  19. <div class="single-filter-box">
  20. <button class="layui-btn" onclick="addLabel()">添加商品标签</button>
  21. <div class="layui-form">
  22. <div class="layui-input-inline">
  23. <input type="text" name="search_keys" placeholder="请输入商品标签名称" autocomplete="off" class="layui-input" maxlength="10">
  24. <button type="button" class="layui-btn layui-btn-primary" lay-filter="search" lay-submit>
  25. <i class="layui-icon">&#xe615;</i>
  26. </button>
  27. </div>
  28. </div>
  29. </div>
  30. <!-- 列表 -->
  31. <table id="attr_class_list" lay-filter="attr_class_list"></table>
  32. <!-- 编辑排序 -->
  33. <script type="text/html" id="editSort">
  34. <input name="sort" type="number" onchange="editSort({{d.id}}, this)" value="{{d.sort}}" class="layui-input edit-sort len-short">
  35. </script>
  36. <!-- 操作 -->
  37. <script type="text/html" id="operation">
  38. <div class="table-btn">
  39. <a class="layui-btn" lay-event="edit">编辑</a>
  40. <a class="layui-btn" lay-event="delete">删除</a>
  41. </div>
  42. </script>
  43. <script type="text/html" id="addLabel">
  44. <div class="layui-form">
  45. <div class="layui-form-item">
  46. <label class="layui-form-label mid"><span class="required">*</span>商品标签:</label>
  47. <div class="layui-input-block">
  48. <input name="label_name" type="text" placeholder="请输入商品标签名称" lay-verify="required" class="layui-input len-mid" maxlength="10">
  49. </div>
  50. </div>
  51. <div class="form-row mid">
  52. <button class="layui-btn" lay-submit lay-filter="save">保存</button>
  53. <button class="layui-btn layui-btn-primary" onclick="closeAttrLayer()">返回</button>
  54. </div>
  55. </div>
  56. </script>
  57. <script type="text/html" id="editLabel">
  58. <div class="layui-form">
  59. <div class="layui-form-item">
  60. <label class="layui-form-label mid"><span class="required">*</span>商品标签:</label>
  61. <div class="layui-input-block">
  62. <input name="label_name" type="text" value="{{ d.label_name }}" placeholder="请输入商品标签名称" lay-verify="required" class="layui-input len-mid" maxlength="10">
  63. </div>
  64. </div>
  65. <input type="hidden" name="id" value="{{ d.id }}">
  66. <div class="form-row mid">
  67. <button class="layui-btn" lay-submit lay-filter="edit_save">保存</button>
  68. <button class="layui-btn layui-btn-primary" onclick="closeAttrLayer()">返回</button>
  69. </div>
  70. </div>
  71. </script>
  72. {/block}
  73. {block name="script"}
  74. <script>
  75. var laytpl, add_attr_index = -1,
  76. form, table;
  77. layui.use(['form', 'laytpl'], function() {
  78. var repeat_flag = false; //防重复标识
  79. laytpl = layui.laytpl;
  80. form = layui.form;
  81. form.render();
  82. table = new Table({
  83. elem: '#attr_class_list',
  84. url: ns.url("shop/goodslabel/lists"),
  85. cols: [
  86. [ {
  87. field: 'label_name',
  88. title: '标签名称',
  89. unresize: 'false'
  90. }, {
  91. field: 'sort',
  92. unresize:'false',
  93. title: '排序',
  94. width: '20%',
  95. sort : true,
  96. align: 'center',
  97. templet: '#editSort'
  98. }, {
  99. title: '操作',
  100. toolbar: '#operation',
  101. unresize: 'false',
  102. align : 'right'
  103. }]
  104. ]
  105. });
  106. /**
  107. * 监听工具栏操作
  108. */
  109. table.tool(function(obj) {
  110. var data = obj.data;
  111. switch (obj.event) {
  112. case 'edit':
  113. editLabel(data);
  114. break;
  115. case 'delete':
  116. deleteLabel(data.id);
  117. break;
  118. }
  119. });
  120. table.on("sort",function (obj) {
  121. table.reload({
  122. page: {
  123. curr: 1
  124. },
  125. where: {
  126. order:obj.field,
  127. sort:obj.type
  128. }
  129. });
  130. });
  131. /**
  132. * 删除
  133. */
  134. function deleteLabel(id) {
  135. layer.confirm('确认删除该标签吗?', function() {
  136. $.ajax({
  137. url: ns.url("shop/goodslabel/delete"),
  138. data: {
  139. id:id
  140. },
  141. dataType: 'JSON',
  142. type: 'POST',
  143. success: function(res) {
  144. layer.msg(res.message);
  145. if (res.code == 0) {
  146. table.reload();
  147. }
  148. }
  149. });
  150. });
  151. }
  152. /**
  153. * 搜索功能
  154. */
  155. form.on('submit(search)', function(data) {
  156. table.reload({
  157. page: {
  158. curr: 1
  159. },
  160. where: data.field
  161. });
  162. });
  163. form.on('submit(save)', function(data) {
  164. if (repeat_flag) return false;
  165. repeat_flag = true;
  166. $.ajax({
  167. url: '{:addon_url("shop/goodslabel/add")}',
  168. data: data.field,
  169. dataType: 'JSON',
  170. type: 'POST',
  171. success: function(data) {
  172. layer.msg(data.message);
  173. if (data.code == 0) {
  174. table.reload();
  175. layer.close(add_attr_index);
  176. }
  177. repeat_flag = false;
  178. }
  179. });
  180. return false;
  181. });
  182. form.on('submit(edit_save)', function(data) {
  183. if (repeat_flag) return false;
  184. repeat_flag = true;
  185. $.ajax({
  186. url: '{:addon_url("shop/goodslabel/edit")}',
  187. data: data.field,
  188. dataType: 'JSON',
  189. type: 'POST',
  190. success: function(data) {
  191. layer.msg(data.message);
  192. if (data.code == 0) {
  193. table.reload();
  194. layer.close(add_attr_index);
  195. }
  196. repeat_flag = false;
  197. }
  198. });
  199. return false;
  200. });
  201. /**
  202. * 表单验证
  203. */
  204. form.verify({
  205. num: function(value) {
  206. if (value == '') {
  207. return;
  208. }
  209. if (value % 1 != 0) {
  210. return '排序数值必须为整数';
  211. }
  212. if (value < 0) {
  213. return '排序数值必须为大于0';
  214. }
  215. }
  216. });
  217. });
  218. function addLabel() {
  219. var add_attr = $("#addLabel").html();
  220. laytpl(add_attr).render({}, function(html) {
  221. add_attr_index = layer.open({
  222. title: '添加商品标签',
  223. skin: 'layer-tips-class',
  224. type: 1,
  225. area: ['500px', '300px'],
  226. content: html
  227. });
  228. });
  229. }
  230. function editLabel(data) {
  231. var add_attr = $("#editLabel").html();
  232. laytpl(add_attr).render(data, function(html) {
  233. add_attr_index = layer.open({
  234. title: '编辑商品标签',
  235. skin: 'layer-tips-class',
  236. type: 1,
  237. area: ['500px', '300px'],
  238. content: html
  239. });
  240. });
  241. }
  242. function closeAttrLayer() {
  243. layer.close(add_attr_index);
  244. }
  245. // 监听单元格编辑
  246. function editSort(id, event){
  247. var data = $(event).val();
  248. if (data == '') {
  249. $(event).val(0);
  250. data = 0;
  251. }
  252. if(!new RegExp("^-?[0-9]\\d*$").test(data)){
  253. layer.msg("排序号只能是整数");
  254. return ;
  255. }
  256. if(data<0){
  257. layer.msg("排序号必须大于0");
  258. return ;
  259. }
  260. $.ajax({
  261. type: 'POST',
  262. url: ns.url("shop/goodslabel/modifySort"),
  263. data: {
  264. sort: data,
  265. id: id
  266. },
  267. dataType: 'JSON',
  268. success: function(res) {
  269. layer.msg(res.message);
  270. if(res.code==0){
  271. table.reload();
  272. }
  273. }
  274. });
  275. }
  276. </script>
  277. {/block}