lists.html 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. {extend name="base"/}
  2. {block name="resources"}
  3. <style>
  4. .layui-layer-content {
  5. padding-bottom: 20px!important;
  6. }
  7. </style>
  8. {/block}
  9. {block name="main"}
  10. <!-- 搜索框 -->
  11. <div class="single-filter-box">
  12. <button class="layui-btn" onclick="addAttr()">添加商品参数模板</button>
  13. <div class="layui-form">
  14. <div class="layui-input-inline">
  15. <input type="text" name="search_keys" placeholder="请输入商品参数模板名称" autocomplete="off" class="layui-input">
  16. <button type="button" class="layui-btn layui-btn-primary" lay-filter="search" lay-submit>
  17. <i class="layui-icon">&#xe615;</i>
  18. </button>
  19. </div>
  20. </div>
  21. </div>
  22. <!-- 列表 -->
  23. <table id="attr_class_list" lay-filter="attr_class_list"></table>
  24. <!-- 操作 -->
  25. <script type="text/html" id="operation">
  26. <div class="table-btn">
  27. <a class="layui-btn" lay-event="edit">管理</a>
  28. <a class="layui-btn" lay-event="delete">删除</a>
  29. </div>
  30. </script>
  31. <script type="text/html" id="addAttr">
  32. <div class="layui-form">
  33. <div class="layui-form-item">
  34. <label class="layui-form-label mid"><span class="required">*</span>商品参数名称:</label>
  35. <div class="layui-input-block">
  36. <input name="class_name" type="text" placeholder="请输入商品参数名称" lay-verify="required" class="layui-input len-mid" maxlength="20">
  37. </div>
  38. </div>
  39. <div class="layui-form-item">
  40. <label class="layui-form-label mid">排序</label>
  41. <div class="layui-input-block">
  42. <input name="sort" type="number" value="0" placeholder="请输入排序" lay-verify="num" class="layui-input len-short">
  43. </div>
  44. <p class="word-aux mid">排序值必须为整数</p>
  45. </div>
  46. <div class="form-row mid">
  47. <button class="layui-btn" lay-submit lay-filter="save">保存</button>
  48. <button class="layui-btn layui-btn-primary" onclick="closeAttrLayer()">返回</button>
  49. </div>
  50. </div>
  51. </script>
  52. <script type="text/html" id="editSort">
  53. <input name="sort" type="number" onchange="editSort({{d.class_id}},this)" value="{{d.sort}}" placeholder="请输入排序" class="layui-input edit-sort len-short">
  54. </script>
  55. {/block}
  56. {block name="script"}
  57. <script>
  58. var laytpl, add_attr_index = -1,
  59. form, table;
  60. layui.use(['form', 'laytpl'], function() {
  61. var repeat_flag = false; //防重复标识
  62. laytpl = layui.laytpl;
  63. form = layui.form;
  64. form.render();
  65. table = new Table({
  66. elem: '#attr_class_list',
  67. url: ns.url("shop/goodsattr/lists"),
  68. cols: [
  69. [ {
  70. field: 'class_name',
  71. title: '模板名称',
  72. width: '50%',
  73. unresize: 'false'
  74. }, {
  75. field: 'sort',
  76. unresize: 'false',
  77. title: '排序',
  78. width: '30%',
  79. sort : true,
  80. templet: '#editSort'
  81. }, {
  82. title: '操作',
  83. toolbar: '#operation',
  84. unresize: 'false',
  85. align : 'right'
  86. }]
  87. ]
  88. });
  89. /**
  90. * 监听工具栏操作
  91. */
  92. table.tool(function(obj) {
  93. var data = obj.data;
  94. switch (obj.event) {
  95. case 'edit':
  96. location.href = ns.url("shop/goodsattr/editattr?class_id=" + data.class_id);
  97. break;
  98. case 'delete':
  99. deleteAttr(data.class_id);
  100. break;
  101. }
  102. });
  103. /**
  104. * 删除
  105. */
  106. function deleteAttr(class_id) {
  107. layer.confirm('删除商品参数后将会删除对应关联关系,移除后数据会发生不可逆转的行为,请谨慎操作', function() {
  108. $.ajax({
  109. url: ns.url("shop/goodsattr/deleteAttr"),
  110. data: {
  111. class_id
  112. },
  113. dataType: 'JSON',
  114. type: 'POST',
  115. success: function(res) {
  116. layer.msg(res.message);
  117. if (res.code == 0) {
  118. table.reload();
  119. }
  120. }
  121. });
  122. });
  123. }
  124. table.on("sort",function (obj) {
  125. table.reload({
  126. page: {
  127. curr: 1
  128. },
  129. where: {
  130. order:obj.field,
  131. sort:obj.type
  132. }
  133. });
  134. });
  135. /**
  136. * 搜索功能
  137. */
  138. form.on('submit(search)', function(data) {
  139. table.reload({
  140. page: {
  141. curr: 1
  142. },
  143. where: data.field
  144. });
  145. });
  146. form.on('submit(save)', function(data) {
  147. if (repeat_flag) return false;
  148. repeat_flag = true;
  149. $.ajax({
  150. url: '{:addon_url("shop/goodsattr/addAttr")}',
  151. data: data.field,
  152. dataType: 'JSON',
  153. type: 'POST',
  154. success: function(data) {
  155. layer.msg(data.message);
  156. if (data.code == 0) {
  157. table.reload();
  158. layer.close(add_attr_index);
  159. }
  160. repeat_flag = false;
  161. }
  162. });
  163. return false;
  164. });
  165. /**
  166. * 表单验证
  167. */
  168. form.verify({
  169. num: function(value) {
  170. if (value == '') {
  171. return;
  172. }
  173. if (value % 1 != 0) {
  174. return '排序数值必须为整数';
  175. }
  176. if (value < 0) {
  177. return '排序数值必须为大于0';
  178. }
  179. }
  180. });
  181. });
  182. // 监听单元格编辑
  183. function editSort(id, event) {
  184. var data = $(event).val();
  185. if (!new RegExp("^-?[1-9]\\d*$").test(data)) {
  186. layer.msg("排序号只能是整数");
  187. return;
  188. }
  189. if(data<0){
  190. layer.msg("排序号必须大于0");
  191. return ;
  192. }
  193. $.ajax({
  194. type: 'POST',
  195. url: ns.url("shop/goodsattr/modifySort"),
  196. data: {
  197. sort: data,
  198. class_id: id
  199. },
  200. dataType: 'JSON',
  201. success: function(res) {
  202. layer.msg(res.message);
  203. if (res.code == 0) {
  204. table.reload();
  205. }
  206. }
  207. });
  208. }
  209. function addAttr() {
  210. var add_attr = $("#addAttr").html();
  211. laytpl(add_attr).render({}, function(html) {
  212. add_attr_index = layer.open({
  213. title: '添加商品参数',
  214. skin: 'layer-tips-class',
  215. type: 1,
  216. area: ['500px', '250px'],
  217. content: html
  218. });
  219. });
  220. }
  221. function closeAttrLayer() {
  222. layer.close(add_attr_index);
  223. }
  224. </script>
  225. {/block}