list.blade.php 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>layuiAdmin 网站用户</title>
  6. <meta name="renderer" content="webkit">
  7. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  8. <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
  9. <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
  10. <link rel="stylesheet" href="/layuiadmin/style/admin.css" media="all">
  11. </head>
  12. <body>
  13. <div class="layui-fluid">
  14. <div class="layui-card">
  15. <div class="layui-form layui-card-header layuiadmin-card-header-auto">
  16. <div class="layui-form-item">
  17. <div class="layui-inline">
  18. <label class="layui-form-label">商品类型</label>
  19. <div class="layui-input-block">
  20. <select name="type" lay-filter="type">
  21. <option value="0">普通区</option>
  22. <option value="1">金币区</option>
  23. <option value="2">至尊区</option>
  24. </select>
  25. </div>
  26. </div>
  27. <div class="layui-inline">
  28. <button class="layui-btn layuiadmin-btn-useradmin" lay-submit lay-filter="LAY-user-front-search">
  29. <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
  30. </button>
  31. </div>
  32. </div>
  33. </div>
  34. <div class="layui-card-body">
  35. <div class="layui-hide" style="padding-bottom: 10px;">
  36. <button class="layui-btn layuiadmin-btn-list" data-type="add">添加</button>
  37. </div>
  38. <table id="LAY-user-manage" lay-filter="LAY-user-manage"></table>
  39. </div>
  40. </div>
  41. </div>
  42. @verbatim
  43. <script type="text/html" id="cover">
  44. <div style="width: 26px;height:26px;display: inline-block;text-align: center;">
  45. <img src="{{ d.cover}}" style="max-height: 100%;max-width: 100%;cursor: pointer;" lay-event="cover"/>
  46. </div>
  47. <span>{{d.goods_name}}</span>
  48. </script>
  49. <script type="text/html" id="toolbar">
  50. <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
  51. <a class="layui-btn layui-btn-xs layui-bg-orange" lay-event="del">删除</a>
  52. </script>
  53. <script type="text/html" id="status">
  54. <input lay-event="status" type="checkbox" name="status" value="{{ d.id }}" title="上架|下架" lay-skin="switch" lay-filter="status" {{ d.status == 1 ? "checked" : "" }}>
  55. </script>
  56. <script type="text/html" id="head-toolbar">
  57. <div class="layui-table-tool-temp">
  58. <div class="layui-inline" lay-event="add"><i class="layui-icon layui-icon-add-1"></i></div>
  59. </div>
  60. </script>
  61. @endverbatim
  62. <script src="/layuiadmin/layui/layui.js"></script>
  63. <script>
  64. layui.config({
  65. base: '/layuiadmin/'
  66. }).extend({
  67. index: 'lib/index'
  68. }).use(['index', 'form', 'table', 'layer'], function () {
  69. const $ = layui.$, form = layui.form, table = layui.table, layer = layui.layer;
  70. form.on('switch(status)', function (obj) {
  71. let name = this.name;
  72. let data = {
  73. id: this.value,
  74. [name]: obj.elem.checked ? 1 : 0
  75. };
  76. $.ajax({
  77. url: "{{ route('goods.setStatus') }}",
  78. method: "post",
  79. headers: {'X-CSRF-TOKEN': "{{ csrf_token() }}"},
  80. data,
  81. success(res) {
  82. if (res.code !== 0) {
  83. layer.msg(res.msg);
  84. tableList.reloadData();
  85. }
  86. }
  87. });
  88. });
  89. form.on('select(type)', function (data) {
  90. tableList.reloadData({
  91. where: {type: data.value}
  92. });
  93. });
  94. var count = 0, active = {
  95. add() {
  96. if (count >= 12) return layer.alert('最多不超过12个选项');
  97. layer.open({
  98. type: 2,
  99. title: '添加奖品',
  100. content: "{{ route('goods.edit') }}",
  101. resize: false,
  102. area: ['350px', '360px'],
  103. btn: ['确定', '取消'],
  104. success(layero, index, that) {
  105. let iframe = layero.find('iframe')[0];
  106. let iframeWindow = iframe.contentWindow;
  107. iframeWindow.layui.form.val('form', {
  108. type: tableList.config.where.type,
  109. });
  110. },
  111. end() {
  112. tableList.reloadData();
  113. },
  114. yes: function (index, layero) {
  115. //点击确认触发 iframe 内容中的按钮提交
  116. var submit = layero.find('iframe').contents().find("#layuiadmin-app-form-submit");
  117. submit.click();
  118. }
  119. });
  120. }
  121. };
  122. table.on('toolbar(LAY-user-manage)', function (obj) {
  123. let type = obj.event;
  124. active[type] ? active[type].call(this) : '';
  125. });
  126. // $('.layui-btn.layuiadmin-btn-list').on('click', function () {
  127. // var type = $(this).data('type');
  128. // active[type] ? active[type].call(this) : '';
  129. // });
  130. let tableList = table.render({
  131. elem: '#LAY-user-manage',
  132. url: "{{url('goods/getList')}}",
  133. // toolbar: true,
  134. toolbar: '#head-toolbar',
  135. defaultToolbar: [],
  136. cols: [[
  137. {field: 'cover', title: '商品', templet: "#cover"},
  138. {field: 'rank', title: '排序', width: 100, edit: "text",},
  139. {field: 'probability', title: '权重', width: 100, edit: 'text'},
  140. {field: 'stock', title: '库存', hide: true},
  141. {
  142. field: 'is_prize', title: '中奖', width: 100, templet(d) {
  143. if (d.is_prize === 0) {
  144. return "否";
  145. } else {
  146. return "是";
  147. }
  148. }
  149. },
  150. {title: "状态", width: 100, templet: "#status"},
  151. {title: '操作', width: 200, toolbar: '#toolbar'}
  152. ]],
  153. page: true,
  154. limit: 50,
  155. limits: [50, 100, 200, 300],
  156. where: {lang: 'zh-CN', type: 0},
  157. height: 'full-130',
  158. text: {none: '无数据'},
  159. parseData(res) {
  160. count = res.data.count;
  161. return {
  162. code: res.data.code,
  163. msg: res.data.msg,
  164. count: res.data.count,
  165. data: res.data.data
  166. };
  167. }
  168. });
  169. table.on('edit(LAY-user-manage)', function (obj) {
  170. var value = obj.value;
  171. var data = obj.data; // 得到所在行所有键值
  172. let test = /^(0|[1-9]\d*)$/;
  173. switch (obj.field) {
  174. case "rank":
  175. test = /^(0|[1-9]\d*)$/;
  176. if (!test.test(value)) {
  177. layer.tips('请输入正确的数值', this, {tips: 1});
  178. return obj.reedit();
  179. }
  180. if (value > 1000) {
  181. layer.tips('最大1000', this, {tips: 1});
  182. return obj.reedit();
  183. }
  184. $.ajax({
  185. url: "{{ route('goods.setRank') }}",
  186. method: "post",
  187. headers: {
  188. 'X-CSRF-TOKEN': "{{ csrf_token() }}",
  189. },
  190. data: {
  191. id: data.id,
  192. rank: value
  193. },
  194. success(res) {
  195. if (res.code !== 0) {
  196. layer.alert(res.msg);
  197. return obj.reedit();
  198. } else {
  199. tableList.reloadData();
  200. }
  201. }
  202. });
  203. break;
  204. case "probability":
  205. test = /^(0|[1-9]\d*)$/;
  206. if (!test.test(value)) {
  207. layer.tips('请输入正确的数值', this, {tips: 1});
  208. return obj.reedit();
  209. }
  210. if (value > 1000) {
  211. layer.tips('最大1000', this, {tips: 1});
  212. return obj.reedit();
  213. }
  214. $.ajax({
  215. url: "{{ route('goods.setProbability') }}",
  216. method: "post",
  217. headers: {
  218. 'X-CSRF-TOKEN': "{{ csrf_token() }}",
  219. },
  220. data: {
  221. id: data.id,
  222. probability: value
  223. },
  224. success(res) {
  225. if (res.code !== 0) {
  226. layer.alert(res.msg);
  227. return obj.reedit();
  228. }
  229. }
  230. });
  231. break;
  232. }
  233. });
  234. table.on('tool(LAY-user-manage)', function (obj) {
  235. switch (obj.event) {
  236. case 'cover':
  237. layer.photos({
  238. toolbar: false,
  239. photos: {
  240. title: "奖品图片",
  241. id: obj.data.id,
  242. start: 0,
  243. data: [{
  244. "alt": obj.data.goods_name,
  245. "pid": obj.data.id,
  246. "src": obj.data.cover,
  247. "thumb": obj.data.cover
  248. }]
  249. }
  250. });
  251. break;
  252. case "del":
  253. layer.alert('删除?', function (index) {
  254. $.ajax({
  255. url: "{{ route('goods.del') }}",
  256. method: 'post',
  257. data: {id: obj.data.id},
  258. headers: {'X-CSRF-TOKEN': "{{ csrf_token() }}"},
  259. success(res) {
  260. if (res.code === 0) {
  261. layer.close(index);
  262. tableList.reloadData();
  263. } else {
  264. layer.msg(res.msg);
  265. }
  266. }
  267. });
  268. });
  269. break;
  270. case "edit":
  271. layer.open({
  272. type: 2,
  273. title: '编辑奖品',
  274. content: "{{ route('goods.edit') }}",
  275. resize: false,
  276. area: ['350px', '360px'],
  277. btn: ['确定', '取消'],
  278. success(layero, index, that) {
  279. let iframe = layero.find('iframe')[0];
  280. layero.find('iframe').contents().find("#cover").attr('src', obj.data.cover);
  281. let iframeWindow = iframe.contentWindow;
  282. iframeWindow.layui.form.val('form', {
  283. type: obj.data.type,
  284. id: obj.data.id,
  285. goodsName: obj.data.goods_name,
  286. probability: obj.data.probability,
  287. cover: obj.data.cover
  288. });
  289. if (obj.data.is_prize === 1) {
  290. iframeWindow.layui.form.val('form', {
  291. isPrize: true
  292. });
  293. }
  294. },
  295. end() {
  296. tableList.reloadData();
  297. },
  298. yes: function (index, layero) {
  299. //点击确认触发 iframe 内容中的按钮提交
  300. var submit = layero.find('iframe').contents().find("#layuiadmin-app-form-submit");
  301. submit.click();
  302. }
  303. });
  304. break;
  305. case "video":
  306. let src = obj.data.video;
  307. let deo = document.createElement('video');
  308. deo.src = src;
  309. deo.onloadedmetadata = function () {
  310. let videoWidth = deo.videoWidth;
  311. let videoHeight = deo.videoHeight;
  312. let maxWidth = 800;
  313. let maxHeight = 600;
  314. if (videoWidth > maxWidth) {
  315. let scale = maxWidth / videoWidth;
  316. videoWidth = maxWidth;
  317. videoHeight = videoHeight * scale;
  318. }
  319. if (videoHeight > maxHeight) {
  320. let scale = maxHeight / videoHeight;
  321. videoHeight = maxHeight;
  322. videoWidth = videoWidth * scale;
  323. }
  324. layer.open({
  325. type: 2,
  326. title: false,
  327. area: [`${videoWidth}px`, `${videoHeight}px`],
  328. shade: 0.8,
  329. closeBtn: 0,
  330. shadeClose: true,
  331. content: src, // video 地址
  332. });
  333. };
  334. break;
  335. case "mp4":
  336. let url = obj.data.photo[0];
  337. let video = document.createElement('video');
  338. video.src = url;
  339. video.onloadedmetadata = function () {
  340. let videoWidth = video.videoWidth;
  341. let videoHeight = video.videoHeight;
  342. let maxWidth = 800;
  343. let maxHeight = 600;
  344. if (videoWidth > maxWidth) {
  345. let scale = maxWidth / videoWidth;
  346. videoWidth = maxWidth;
  347. videoHeight = videoHeight * scale;
  348. }
  349. if (videoHeight > maxHeight) {
  350. let scale = maxHeight / videoHeight;
  351. videoHeight = maxHeight;
  352. videoWidth = videoWidth * scale;
  353. }
  354. layer.open({
  355. type: 2,
  356. title: false,
  357. area: [`${videoWidth}px`, `${videoHeight}px`],
  358. shade: 0.8,
  359. closeBtn: 0,
  360. shadeClose: true,
  361. content: url, // video 地址
  362. });
  363. };
  364. layer.msg('点击遮罩区域可关闭');
  365. break;
  366. case "img":
  367. let start = this.dataset.index - 1;
  368. let data = [];
  369. for (let i = 1; i < obj.data.photo.length; i++) {
  370. if (obj.data.photo[i]) {
  371. data.push({
  372. "alt": `个人自拍_${i}`,
  373. "pid": (i - 1),
  374. "src": obj.data.photo[i],
  375. "thumb": obj.data.photo[i],
  376. });
  377. }
  378. }
  379. layer.photos({
  380. toolbar: false,
  381. photos: {
  382. title: "个人自拍",
  383. id: obj.data.id,
  384. start: start,
  385. data: data
  386. }
  387. });
  388. break;
  389. }
  390. // console.log(this.src);
  391. // console.log(obj)
  392. });
  393. form.on('submit(LAY-user-front-search)', function (data) {
  394. let where = data.field;
  395. tableList.reloadData({where});
  396. });
  397. });
  398. </script>
  399. </body>
  400. </html>