detail.html 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609
  1. {extend name="app/shop/view/base.html"/}
  2. {block name="resources"}
  3. <link rel="stylesheet" href="STATIC_CSS/promotion_detail.css">
  4. {/block}
  5. {block name="main"}
  6. <div class="layui-card card-common card-brief">
  7. <div class="layui-card-header">
  8. <div>
  9. <span class="card-title">基本信息</span>
  10. </div>
  11. </div>
  12. <div class="layui-card-body">
  13. <div class="promotion-view">
  14. <div class="promotion-view-item">
  15. <label>活动名称:</label>
  16. <span>{$blindbox_info.blindbox_name}</span>
  17. {if $blindbox_info.blindbox_status == 0 || $blindbox_info.blindbox_status == 1}
  18. <i class="layui-icon text-color" style="margin-left: 5px;" onclick="editName(this)"> </i>
  19. {/if}
  20. </div>
  21. <div class="promotion-view-item">
  22. <label>盲盒分类:</label>
  23. <span>{$blindbox_info.category_name}</span>
  24. {if $blindbox_info.blindbox_status == 0 || $blindbox_info.blindbox_status == 1}
  25. <i class="layui-icon text-color" style="margin-left: 5px;" onclick="editCategory(this)"> </i>
  26. {/if}
  27. </div>
  28. <div class="promotion-view-item">
  29. <label>拆盒价:</label>
  30. <span>{$blindbox_info.price}</span>
  31. </div>
  32. <div class="promotion-view-item">
  33. <label>状态:</label>
  34. <span>
  35. {switch name="$blindbox_info.blindbox_status"}
  36. {case value="0"}未开始{/case}
  37. {case value="1"}进行中{/case}
  38. {case value="2"}已结束{/case}
  39. {case value="-1"}已关闭{/case}
  40. {/switch}
  41. </span>
  42. </div>
  43. <div class="promotion-view-item">
  44. <label>盒子数:</label>
  45. <span>{$blindbox_info.blindbox_count}</span>
  46. </div>
  47. <div class="promotion-view-item">
  48. <label>已拆:</label>
  49. <span>{$blindbox_info.blindbox_num}</span>
  50. </div>
  51. <div class="promotion-view-item">
  52. <label>未拆:</label>
  53. <span>{$blindbox_info.blindbox_inventory}</span>
  54. </div>
  55. <div class="promotion-view-item">
  56. <label>开始时间:</label>
  57. <span>{:date('Y-m-d H:i:s',$blindbox_info.start_time)}</span>
  58. </div>
  59. <div class="promotion-view-item">
  60. <label>结束时间:</label>
  61. <span>{:date('Y-m-d H:i:s',$blindbox_info.end_time)}</span>
  62. {if $blindbox_info.blindbox_status == 0 || $blindbox_info.blindbox_status == 1}
  63. <i class="layui-icon text-color" style="margin-left: 5px;" onclick="editEndtime(this)"> </i>
  64. {/if}
  65. </div>
  66. <div class="promotion-view-item">
  67. <label>是否余额支付:</label>
  68. <span data-value="{$blindbox_info.is_balance}">
  69. {switch name="$blindbox_info.is_balance"}
  70. {case value="0"}否{/case}
  71. {case value="1"}是{/case}
  72. {/switch}
  73. </span>
  74. </div>
  75. <div class="promotion-view-item">
  76. <label>空盒是否显示:</label>
  77. <span data-value="{$blindbox_info.is_emptybox}">
  78. {switch name="$blindbox_info.is_emptybox"}
  79. {case value="1"}显示{/case}
  80. {case value="2"}不显示{/case}
  81. {/switch}
  82. </span>
  83. {if $blindbox_info.blindbox_status == 0 || $blindbox_info.blindbox_status == 1}
  84. <i class="layui-icon text-color" style="margin-left: 5px;" onclick="editIsEmptybox(this)"> </i>
  85. {/if}
  86. </div>
  87. </div>
  88. </div>
  89. </div>
  90. <input type="hidden" name="blindbox_id" value="{$blindbox_info.blindbox_id}" />
  91. <div class="layui-card card-common card-brief">
  92. <div class="layui-card-header">
  93. <div>
  94. <span class="card-title">活动商品</span>
  95. </div>
  96. </div>
  97. <div class='promotion-view-list'>
  98. <div class="layui-tab-brief" lay-filter="blindbox_tab">
  99. <div class="layui-tab-content">
  100. {if $blindbox_info.blindbox_status == 0 || $blindbox_info.blindbox_status == 1}
  101. <div class="single-filter-box">
  102. <button class="layui-btn"lay-submit lay-filter="add_goods" >添加盲盒</button>
  103. </div>
  104. {/if}
  105. <!--筛选面板-->
  106. <div class="screen layui-collapse" lay-filter="selection_panel">
  107. <div class="layui-colla-item">
  108. <form class="layui-colla-content layui-form layui-show">
  109. <div class="layui-form-item">
  110. <div class="layui-inline">
  111. <label class="layui-form-label">商品名称:</label>
  112. <div class="layui-input-inline">
  113. <input type="text" name="goods_name" placeholder="请输入商品名称" autocomplete="off" class="layui-input">
  114. </div>
  115. </div>
  116. <div class="layui-inline">
  117. <label class="layui-form-label">盲盒状态:</label>
  118. <div class="layui-input-inline">
  119. <select name="status">
  120. <option value="">全部</option>
  121. <option value="0">未拆</option>
  122. <option value="1">已拆</option>
  123. </select>
  124. </div>
  125. </div>
  126. </div>
  127. <div class="form-row">
  128. <button class="layui-btn" lay-submit lay-filter="search">筛选</button>
  129. <button type="reset" class="layui-btn layui-btn-primary">重置</button>
  130. </div>
  131. </form>
  132. </div>
  133. </div>
  134. <!-- 盒子列表 -->
  135. <table id="promotion_list" lay-filter="promotion_list"></table>
  136. </div>
  137. </div>
  138. </div>
  139. </div>
  140. <!-- 操作 -->
  141. <script type="text/html" id="operation">
  142. <div class="operation-wrap" data-coupon-id="{{d.category_id}}">
  143. <div class="table-btn">
  144. {{# if(d.status == 0 && ({$blindbox_info.blindbox_status} == 0 || {$blindbox_info.blindbox_status} == 1)){ }}
  145. <a class="layui-btn" lay-event="edit">更换商品</a>
  146. <a class="layui-btn" lay-event="del">删除</a>
  147. {{# } }}
  148. {{# if(d.status == 1){ }}
  149. <a class="layui-btn" lay-event="detail">详情</a>
  150. {{# } }}
  151. </div>
  152. </div>
  153. </script>
  154. {if $blindbox_info.blindbox_status == 0 || $blindbox_info.blindbox_status == 1}
  155. <script type="text/html" id="toolbarOperation">
  156. <button class="layui-btn layui-btn-primary" lay-event="dels">批量删除</button>
  157. </script>
  158. {/if}
  159. <script type="text/html" id="blindboxOrder">
  160. <div class="shop-information">
  161. <div class="shop-information-table">
  162. <table lay-filter="parse-table-order-product" lay-skin="line">
  163. <thead>
  164. <tr class="table-trOne">
  165. <th>订单号</th>
  166. <th>商品名</th>
  167. <th>实付金额</th>
  168. <th>付款方式</th>
  169. <th>购买会员</th>
  170. <th>订单状态</th>
  171. <th>操作</th>
  172. </tr>
  173. </thead>
  174. <tbody>
  175. <tr class="table-trTow">
  176. <td>{{d.order_number}}</td>
  177. <td>{{d.sku_name}}</td>
  178. <td>{{d.order_price}}</td>
  179. <td>{{d.pay_type_name}}</td>
  180. <td><a class="text-color" onclick="memberInfo({{d.member_id}})">{{d.nickname}}</a></td>
  181. <td>已支付</td>
  182. {{# if(d.is_dispatch == 0){ }}
  183. <td>待用户完善订单信息</td>
  184. {{# }else { }}
  185. <td><a class="text-color" onclick="goodsOrderInfo({{d.id}})">查看订单</a></td>
  186. {{# }}}
  187. </tr>
  188. </tbody>
  189. </table>
  190. </div>
  191. </div>
  192. </script>
  193. {/block}
  194. {block name="script"}
  195. <script type='text/html' id="promotion_list_item_box_html">
  196. <div class="promotion-list-item-title">
  197. <div class="promotion-list-item-title-icon">
  198. <img src="{{ ns.img(d.sku_image) }}" alt="">
  199. </div>
  200. <p class="promotion-list-item-title-name multi-line-hiding">{{ d.sku_name }}</p>
  201. </div>
  202. </script>
  203. <script>
  204. var laytpl,repeat_flag = false; //防重复标识
  205. var blindbox_id,selectedGoodsId = [],
  206. currentDate = new Date(),
  207. minDate = "",
  208. box_id,form,laydate;
  209. blindbox_id = {$blindbox_info.blindbox_id};
  210. blindbox_end_time = {$blindbox_info.end_time};
  211. // currentDate = {$blindbox_info.end_time};
  212. layui.use(['form', 'laytpl', 'laydate', 'element'], function () {
  213. var table;
  214. laydate = layui.laydate;
  215. currentDate.setDate(currentDate.getDate() + 30);
  216. minDate = "";
  217. form = layui.form,
  218. laytpl = layui.laytpl,
  219. form.render();
  220. table = new Table({
  221. elem: '#promotion_list',
  222. url: ns.url("blindbox://shop/blindboxGoods/lists",{'blindbox_id':blindbox_id}),
  223. cols: [
  224. [{
  225. width: "3%",
  226. type: 'checkbox',
  227. unresize: 'false'
  228. }, {
  229. title: '商品信息',
  230. unresize: 'false',
  231. width: '25%',
  232. templet: '#promotion_list_item_box_html'
  233. },{
  234. field: 'price',
  235. title: '价格',
  236. unresize: 'false',
  237. width: '20%',
  238. templet:function (data){
  239. return '¥' + data.price;
  240. }
  241. },{
  242. field: 'status',
  243. title: '状态',
  244. unresize: 'false',
  245. width: '20%',
  246. templet: function (data) {
  247. var status_name = '';
  248. if(data.status == 1 ){
  249. status_name = '已拆';
  250. }else{
  251. status_name = '未拆';
  252. }
  253. return status_name;
  254. }
  255. },{
  256. title: '操作',
  257. toolbar: '#operation',
  258. unresize: 'false',
  259. align:'right'
  260. }]
  261. ],
  262. toolbar: '#toolbarOperation',
  263. });
  264. /**
  265. * 批量操作
  266. */
  267. table.toolbar(function(obj) {
  268. if (obj.data.length < 1) {
  269. layer.msg('请选择要操作的数据');
  270. return;
  271. }
  272. switch (obj.event) {
  273. case "dels":
  274. var id_array = new Array();
  275. var sku_array = new Array();
  276. for (i in obj.data) id_array.push(obj.data[i].id);
  277. for (i in obj.data) sku_array.push(obj.data[i].sku_id);
  278. dels(id_array.toString(),sku_array.toString());
  279. break;
  280. }
  281. });
  282. /**
  283. * 监听工具栏操作
  284. */
  285. table.tool(function (obj) {
  286. var data = obj.data;
  287. switch (obj.event) {
  288. case 'edit': //编辑
  289. editGoods(data.id);
  290. break;
  291. case 'del': //删除
  292. dels(data.id,data.sku_id);
  293. break;
  294. case 'detail':
  295. blindboxOrderInfo(data);
  296. break;
  297. }
  298. });
  299. /**
  300. * 搜索功能
  301. */
  302. form.on('submit(search)', function (data) {
  303. table.reload({
  304. page: {
  305. curr: 1
  306. },
  307. where: data.field
  308. });
  309. return false;
  310. });
  311. form.on('submit(add_goods)', function (data) {
  312. addGoods();
  313. return false;
  314. });
  315. });
  316. // 盲盒订单详情
  317. function blindboxOrderInfo(data){
  318. laytpl($("#blindboxOrder").html()).render(data, function(html){
  319. layer.open({
  320. type: 1,
  321. title:'盲盒订单信息',
  322. content: html,
  323. area: ['1500px','300px']
  324. });
  325. })
  326. }
  327. function memberInfo(id){
  328. location.href = ns.url("shop/member/editmember", {"member_id": id})
  329. }
  330. // 商品订单详情
  331. function goodsOrderInfo(id){
  332. $.ajax({
  333. url: ns.url("blindbox://shop/blindboxGoods/boxOrderInfo",{'id':id}),
  334. dataType: 'JSON',
  335. type: 'POST',
  336. success: function (res) {
  337. if(res.data != null){
  338. var order_id = res.data.order_id;
  339. location.href = ns.url("shop/order/detail", {"order_id": order_id})
  340. }
  341. }
  342. });
  343. }
  344. function dels(ids,sku_ids){
  345. layer.confirm('确定要删除该盲盒盒子吗?', function () {
  346. if (repeat_flag) return false;
  347. repeat_flag = true;
  348. $.ajax({
  349. url: ns.url("blindbox://shop/blindboxGoods/dels",{'blindbox_id':blindbox_id,'ids':ids,'sku_ids':sku_ids}),
  350. dataType: 'JSON',
  351. type: 'POST',
  352. success: function (res) {
  353. layer.msg(res.message);
  354. repeat_flag = false;
  355. location.reload();
  356. }
  357. });
  358. }, function () {
  359. layer.close();
  360. repeat_flag = false;
  361. });
  362. }
  363. function editName(event){
  364. var blindbox_name = $(event).prev('span').text();
  365. var html = `<div class="layui-form form-wrap">
  366. <div class="layui-form-item">
  367. <label class="layui-form-label" style="width:auto"><span class="required">*</span>名称:</label>
  368. <div class="layui-input-block" style="margin-left: 0;">
  369. <input name="blindbox_name" type="text" lay-verify="required" value="`+ blindbox_name +`" class="layui-input len-mid" maxlength="40">
  370. </div>
  371. </div>
  372. </div>`;
  373. layer.open({
  374. title: '编辑名称',
  375. skin: 'edit-blindbox-layer',
  376. type: 1,
  377. area: ['360px', '180px'],
  378. content: html,
  379. success: function(){
  380. form.render();
  381. },
  382. btn: ['保存', '取消'],
  383. yes: function () {
  384. if($.trim($('[name="blindbox_name"]').val()) == ''){
  385. layer.msg('名称不能为空');
  386. return false;
  387. }
  388. var data = {blindbox_name: $.trim($('[name="blindbox_name"]').val())};
  389. editBlindbox(data, function(res){
  390. if (res.code == 0) {
  391. $(event).prev('span').text(data.blindbox_name);
  392. layer.closeAll();
  393. } else {
  394. layer.msg(res.message);
  395. }
  396. });
  397. }
  398. })
  399. }
  400. function editCategory(){
  401. var html = `<div class="layui-form form-wrap">
  402. <div class="layui-form-item">
  403. <label class="layui-form-label" style="width:auto"><span class="required">*</span>盲盒分类:</label>
  404. <div class="layui-input-inline len-mid">
  405. <select class="category_id" name="category_id" lay-verify="required">
  406. {foreach $category_data as $k=>$v}
  407. <option value="{$k}" {if $blindbox_info['category_id']== $k }selected{/if}> {$v}</option>
  408. {/foreach}
  409. </select>
  410. </div>
  411. </div>
  412. </div>`;
  413. layer.open({
  414. title: '编辑盲盒分类',
  415. skin: 'edit-blindbox-layer',
  416. type: 1,
  417. area: ['400px', '200px'],
  418. content: html,
  419. success: function(){
  420. form.render();
  421. },
  422. btn: ['保存', '取消'],
  423. yes: function () {
  424. var data = {category_id: $.trim($('[name="category_id"]').val())};
  425. editBlindbox(data, function(res){
  426. if (res.code == 0) {
  427. location.reload();
  428. } else {
  429. layer.msg(res.message);
  430. }
  431. });
  432. }
  433. })
  434. }
  435. function editEndtime(){
  436. var html = `<div class="layui-form-item">
  437. <label class="layui-form-label"><span class="required">*</span>活动结束时间:</label>
  438. <div class="layui-input-block len-mid end_time">
  439. <input type="text" class="layui-input" name="end_time" lay-verify="required" id="end_time" autocomplete="off" readonly value="{:date('Y-m-d H:i:s',$blindbox_info.end_time)}">
  440. <i class=" iconrili iconfont calendar"></i>
  441. </div>
  442. </div>`;
  443. layer.open({
  444. title: '编辑活动结束时间',
  445. skin: 'edit-blindbox-layer',
  446. type: 1,
  447. area: ['600px', '200px'],
  448. content: html,
  449. zIndex: 9999,
  450. success: function(){
  451. //结束时间
  452. laydate.render({
  453. elem: '#end_time',//指定元素
  454. type: 'datetime',
  455. });
  456. },
  457. btn: ['保存', '取消'],
  458. yes: function () {
  459. end_time = $.trim($('[name="end_time"]').val());
  460. if(ns.date_to_time(end_time) < blindbox_end_time){
  461. layer.msg('修改日期不能小于之前日期');
  462. return false;
  463. }
  464. var data = {end_time: $.trim($('[name="end_time"]').val())};
  465. editBlindbox(data, function(res){
  466. if (res.code == 0) {
  467. location.reload();
  468. } else {
  469. layer.msg(res.message);
  470. }
  471. });
  472. }
  473. })
  474. }
  475. function editIsEmptybox(event){
  476. var is_emptybox = $(event).prev('span').attr('data-value');
  477. var html = `<div class="layui-form form-wrap">
  478. <div class="layui-form-item">
  479. <label class="layui-form-label" style="width:auto"><span class="required">*</span>空盒是否显示:</label>
  480. <div class="layui-input-block" style="margin-left: 0;">
  481. <input type="radio" name="is_emptybox" value="1" title="显示" `+ (is_emptybox == 1 ? 'checked' : '') +`>
  482. <input type="radio" name="is_emptybox" value="2" title="不显示" `+ (is_emptybox == 2 ? 'checked' : '') +`>
  483. </div>
  484. </div>
  485. </div>`;
  486. layer.open({
  487. title: '空盒是否显示',
  488. skin: 'edit-blindbox-layer',
  489. type: 1,
  490. area: ['320px', '160px'],
  491. content: html,
  492. success: function(){
  493. form.render();
  494. },
  495. btn: ['保存', '取消'],
  496. yes: function () {
  497. var data = {is_emptybox: $('[name="is_emptybox"]:checked').val()};
  498. if (!data.is_emptybox) {
  499. layer.msg('请选择空盒是否显示', {icon: 5});
  500. return;
  501. }
  502. editBlindbox(data, function(res){
  503. if (res.code == 0) {
  504. $(event).prev('span').text($('[name="is_emptybox"]:checked').attr('title'));
  505. $(event).prev('span').attr('data-value', data.is_emptybox);
  506. layer.closeAll();
  507. } else {
  508. layer.msg(res.message);
  509. }
  510. });
  511. }
  512. })
  513. }
  514. function editBlindbox(data, callback){
  515. if(repeat_flag) return false;
  516. repeat_flag = true;
  517. data.blindbox_id = '{$blindbox_info.blindbox_id}';
  518. $.ajax({
  519. url: ns.url("blindbox://shop/blindbox/edit"),
  520. data: data,
  521. dataType: 'JSON', //服务器返回json格式数据
  522. type: 'POST', //HTTP请求类型
  523. success: function(res) {
  524. repeat_flag = false;
  525. typeof callback == 'function' && callback(res);
  526. }
  527. });
  528. }
  529. /* 商品 */
  530. function addGoods() {
  531. goodsSelect(function (res) {
  532. if (!res.length) return false;
  533. sku_id = [];
  534. for (var i = 0; i < res.length; i++) {
  535. for(var s = 0; s < res[i]['selected_sku_list'].length;s++){
  536. sku_id.push(res[i]['selected_sku_list'][s].sku_id);
  537. }
  538. }
  539. $.ajax({
  540. url: ns.url("blindbox://shop/blindboxGoods/add",{'blindbox_id':blindbox_id,'sku_id_arr':sku_id}),
  541. dataType: 'JSON',
  542. type: 'POST',
  543. success: function (res) {
  544. layer.msg(res.message);
  545. repeat_flag = false;
  546. location.reload();
  547. }
  548. });
  549. }, selectedGoodsId, {mode: "sku"});
  550. return false;
  551. }
  552. /* 商品 */
  553. function editGoods(id) {
  554. box_id = id;
  555. goodsSelect(function (res) {
  556. if (!res.length) return false;
  557. if (res.length > 1){
  558. layer.msg('只能选择一件商品哦!亲!');
  559. return false;
  560. }
  561. sku_id = res[0]['selected_sku_list'][0]['sku_id'];
  562. $.ajax({
  563. url: ns.url("blindbox://shop/blindboxGoods/edit",{'blindbox_id':blindbox_id,'id':box_id,'sku_id':sku_id}),
  564. dataType: 'JSON',
  565. type: 'POST',
  566. success: function (res) {
  567. layer.msg(res.message);
  568. repeat_flag = false;
  569. location.reload();
  570. }
  571. });
  572. }, selectedGoodsId, {mode: "sku"});
  573. }
  574. </script>
  575. {/block}