goods.html 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316
  1. <!DOCTYPE html>
  2. <html lang="zh-cn">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>浏览页面</title>
  6. <link rel="stylesheet" href="/app/admin/component/pear/css/pear.css" />
  7. <link rel="stylesheet" href="/app/admin/admin/css/reset.css" />
  8. </head>
  9. <body class="pear-container">
  10. <!-- 数据表格 -->
  11. <div class="layui-card">
  12. <div class="layui-card-body">
  13. <table id="data-table" lay-filter="data-table"></table>
  14. </div>
  15. </div>
  16. <script src="/app/admin/component/layui/layui.js?v=2.8.12"></script>
  17. <script src="/app/admin/component/pear/pear.js"></script>
  18. <script src="/app/admin/admin/js/permission.js"></script>
  19. <script src="/app/admin/admin/js/common.js"></script>
  20. <script>
  21. // 相关常量
  22. const PRIMARY_KEY = "id";
  23. const SELECT_API = "/app/admin/user/goods"+ location.search;
  24. // 字段 商品ID goods_id
  25. layui.use(["jquery", "xmSelect", "popup"], function() {
  26. layui.$.ajax({
  27. url: "/app/admin/good/addselect",
  28. dataType: "json",
  29. success: function (res) {
  30. let value = layui.$("#goods_id").attr("value");
  31. let initValue = value ? value.split(",") : [];
  32. layui.xmSelect.render({
  33. el: "#goods_id",
  34. name: "goods_id",
  35. initValue: initValue,
  36. filterable: true,
  37. data: res.data,
  38. model: {"icon":"hidden","label":{"type":"text"}},
  39. clickClose: true,
  40. radio: true,
  41. });
  42. if (res.code) {
  43. layui.popup.failure(res.msg);
  44. }
  45. }
  46. });
  47. });
  48. // 字段 状态 1有效 2失效 state
  49. layui.use(["jquery", "xmSelect"], function() {
  50. let value = layui.$("#state").attr("value");
  51. let initValue = value ? value.split(",") : [];
  52. layui.xmSelect.render({
  53. el: "#state",
  54. name: "state",
  55. filterable: true,
  56. initValue: initValue,
  57. data: [{"value":"1","name":"有效"},{"value":"2","name":"无效"}],
  58. model: {"icon":"hidden","label":{"type":"text"}},
  59. clickClose: true,
  60. radio: true,
  61. })
  62. });
  63. // 字段 购买时间 created_at
  64. layui.use(["laydate"], function() {
  65. layui.laydate.render({
  66. elem: "#created_at",
  67. range: ["#created_at-date-start", "#created_at-date-end"],
  68. type: "datetime",
  69. });
  70. })
  71. // 表格渲染
  72. layui.use(["table", "form", "common", "popup", "util"], function() {
  73. let table = layui.table;
  74. let form = layui.form;
  75. let $ = layui.$;
  76. let common = layui.common;
  77. let util = layui.util;
  78. // 表头参数
  79. let cols = [
  80. {
  81. title: "id",align: "center",
  82. field: "id",
  83. },{
  84. title: "商品",align: "center",
  85. field: "goods_id",
  86. sort: true,
  87. templet: function (d) {
  88. let field = "goods_id";
  89. if (typeof d[field] == "undefined") return "";
  90. let items = [];
  91. layui.each((d[field] + "").split(","), function (k , v) {
  92. items.push(apiResults[field][v] || v);
  93. });
  94. return util.escape(items.join(","));
  95. }
  96. },{
  97. title: "购买金额",align: "center",
  98. field: "money",
  99. sort: true,
  100. },{
  101. title: "购买时间",align: "center",
  102. field: "created_at",
  103. }
  104. ];
  105. // 渲染表格
  106. function render()
  107. {
  108. table.render({
  109. elem: "#data-table",
  110. url: SELECT_API,
  111. page: true,
  112. cols: [cols],
  113. skin: "line",
  114. size: "lg",
  115. toolbar: "#table-toolbar",
  116. autoSort: false,
  117. defaultToolbar: [{
  118. title: "刷新",
  119. layEvent: "refresh",
  120. icon: "layui-icon-refresh",
  121. }, "filter", "print", "exports"],
  122. done: function () {
  123. layer.photos({photos: 'div[lay-id="data-table"]', anim: 5});
  124. }
  125. });
  126. }
  127. // 获取表格中下拉或树形组件数据
  128. let apis = [];
  129. apis.push(["goods_id", "/app/admin/good/addselect"]);
  130. let apiResults = {};
  131. apiResults["goods_id"] = [];
  132. let count = apis.length;
  133. layui.each(apis, function (k, item) {
  134. let [field, url] = item;
  135. $.ajax({
  136. url: url,
  137. dateType: "json",
  138. success: function (res) {
  139. if (res.code) {
  140. return layui.popup.failure(res.msg);
  141. }
  142. function travel(items) {
  143. for (let k in items) {
  144. let item = items[k];
  145. apiResults[field][item.value] = item.name;
  146. if (item.children) {
  147. travel(item.children);
  148. }
  149. }
  150. }
  151. travel(res.data);
  152. },
  153. complete: function () {
  154. if (--count === 0) {
  155. render();
  156. }
  157. }
  158. });
  159. });
  160. if (!count) {
  161. render();
  162. }
  163. // 编辑或删除行事件
  164. table.on("tool(data-table)", function(obj) {
  165. if (obj.event === "remove") {
  166. remove(obj);
  167. } else if (obj.event === "edit") {
  168. edit(obj);
  169. }
  170. });
  171. // 表格顶部工具栏事件
  172. table.on("toolbar(data-table)", function(obj) {
  173. if (obj.event === "add") {
  174. add();
  175. } else if (obj.event === "refresh") {
  176. refreshTable();
  177. } else if (obj.event === "batchRemove") {
  178. batchRemove(obj);
  179. }
  180. });
  181. // 表格顶部搜索事件
  182. form.on("submit(table-query)", function(data) {
  183. table.reload("data-table", {
  184. page: {
  185. curr: 1
  186. },
  187. where: data.field
  188. })
  189. return false;
  190. });
  191. // 表格顶部搜索重置事件
  192. form.on("submit(table-reset)", function(data) {
  193. table.reload("data-table", {
  194. where: []
  195. })
  196. });
  197. // 字段允许为空
  198. form.verify({
  199. phone: [/(^$)|^1\d{10}$/, "请输入正确的手机号"],
  200. email: [/(^$)|^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/, "邮箱格式不正确"],
  201. url: [/(^$)|(^#)|(^http(s*):\/\/[^\s]+\.[^\s]+)/, "链接格式不正确"],
  202. number: [/(^$)|^\d+$/,'只能填写数字'],
  203. date: [/(^$)|^(\d{4})[-\/](\d{1}|0\d{1}|1[0-2])([-\/](\d{1}|0\d{1}|[1-2][0-9]|3[0-1]))*$/, "日期格式不正确"],
  204. identity: [/(^$)|(^\d{15}$)|(^\d{17}(x|X|\d)$)/, "请输入正确的身份证号"]
  205. });
  206. // 表格排序事件
  207. table.on("sort(data-table)", function(obj){
  208. table.reload("data-table", {
  209. initSort: obj,
  210. scrollPos: "fixed",
  211. where: {
  212. field: obj.field,
  213. order: obj.type
  214. }
  215. });
  216. });
  217. // 表格新增数据
  218. let add = function() {
  219. layer.open({
  220. type: 2,
  221. title: "新增",
  222. shade: 0.1,
  223. maxmin: true,
  224. area: [common.isModile()?"100%":"500px", common.isModile()?"100%":"450px"],
  225. content: INSERT_URL
  226. });
  227. }
  228. // 表格编辑数据
  229. let edit = function(obj) {
  230. let value = obj.data[PRIMARY_KEY];
  231. layer.open({
  232. type: 2,
  233. title: "修改",
  234. shade: 0.1,
  235. maxmin: true,
  236. area: [common.isModile()?"100%":"500px", common.isModile()?"100%":"450px"],
  237. content: UPDATE_URL + "?" + PRIMARY_KEY + "=" + value
  238. });
  239. }
  240. // 删除一行
  241. let remove = function(obj) {
  242. return doRemove(obj.data[PRIMARY_KEY]);
  243. }
  244. // 删除多行
  245. let batchRemove = function(obj) {
  246. let checkIds = common.checkField(obj, PRIMARY_KEY);
  247. if (checkIds === "") {
  248. layui.popup.warning("未选中数据");
  249. return false;
  250. }
  251. doRemove(checkIds.split(","));
  252. }
  253. // 执行删除
  254. let doRemove = function (ids) {
  255. let data = {};
  256. data[PRIMARY_KEY] = ids;
  257. layer.confirm("确定删除?", {
  258. icon: 3,
  259. title: "提示"
  260. }, function(index) {
  261. layer.close(index);
  262. let loading = layer.load();
  263. $.ajax({
  264. url: DELETE_API,
  265. data: data,
  266. dataType: "json",
  267. type: "post",
  268. success: function(res) {
  269. layer.close(loading);
  270. if (res.code) {
  271. return layui.popup.failure(res.msg);
  272. }
  273. return layui.popup.success("操作成功", refreshTable);
  274. }
  275. })
  276. });
  277. }
  278. // 刷新表格数据
  279. window.refreshTable = function(param) {
  280. table.reloadData("data-table", {
  281. scrollPos: "fixed"
  282. });
  283. }
  284. })
  285. </script>
  286. </body>
  287. </html>