lists.html 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322
  1. {extend name="base"/}
  2. {block name="resources"}
  3. <style>
  4. .screen{margin-bottom: 15px;}
  5. .contraction span {
  6. cursor: pointer;
  7. display: inline-block;
  8. width: 17px;
  9. height: 17px;
  10. text-align: center;
  11. line-height: 14px;
  12. user-select: none;
  13. }
  14. .verify-list {
  15. overflow: hidden;
  16. padding: 0 45px;
  17. }
  18. .verify-list li .img-wrap {
  19. vertical-align: middle;
  20. margin-right: 8px;
  21. width: 80px;
  22. height: 80px;
  23. text-align: center;
  24. border: 1px solid #e2e2e2;
  25. }
  26. .verify-list li .img-wrap img {
  27. max-width: 100%;
  28. max-height: 100%;
  29. }
  30. .verify-list li .info-wrap{
  31. flex: 1;
  32. display: flex;
  33. flex-direction: column;
  34. }
  35. .verify-list li .name-wrap{
  36. flex: 1;
  37. }
  38. .verify-list li .info-wrap span.sku-name {
  39. -webkit-line-clamp: 2;
  40. margin-bottom: 5px;
  41. line-height: 1.3;
  42. margin-top: 0;
  43. color: #333;
  44. font-size: 14px;
  45. }
  46. .verify-list li .info-wrap span {
  47. display: -webkit-box;
  48. margin-top: 5px;
  49. overflow: hidden;
  50. text-overflow: ellipsis;
  51. white-space: normal;
  52. word-break: break-all;
  53. -webkit-box-orient: vertical;
  54. -webkit-line-clamp: 1;
  55. line-height: 1;
  56. font-size: 12px;
  57. }
  58. .verify-list li {
  59. float: left;
  60. display: flex;
  61. padding: 10px;
  62. margin-right: 10px;
  63. margin-bottom: 10px;
  64. border: 1px solid #EFEFEF;
  65. width: 294px;
  66. align-items: center;
  67. }
  68. .table-title .title-content p{overflow: hidden;text-overflow:ellipsis;white-space: nowrap;}
  69. .table-title .title-content .verify-type{font-size:12px;margin-right: 4px;padding: 0px 6px;display: inline-block; border: 1px solid;border-radius: 3px;line-height: 18px}
  70. .table-title .title-content .verify-code{display:inline-block;width:200px}
  71. .layui-table-box .layui-table-body .laytable-cell-1-0-0{padding-top: 5px;padding-bottom: 5px}
  72. </style>
  73. {/block}
  74. {block name="main"}
  75. <!-- 搜索框 -->
  76. <div class="screen layui-collapse" lay-filter="selection_panel">
  77. <div class="layui-colla-item">
  78. <form class="layui-colla-content layui-form layui-show">
  79. <div class="layui-form-item">
  80. <div class="layui-inline">
  81. <label class="layui-form-label">核销员名称:</label>
  82. <div class="layui-input-inline">
  83. <input type="text" name="verifier_name" placeholder="请输入核销员名称" autocomplete="off" class="layui-input">
  84. </div>
  85. </div>
  86. <div class="layui-inline">
  87. <label class="layui-form-label">核销码:</label>
  88. <div class="layui-input-inline">
  89. <input type="text" name="verify_code" placeholder="请输入核销码" autocomplete="off" class="layui-input">
  90. </div>
  91. </div>
  92. <div class="layui-inline">
  93. <label class="layui-form-label">核销码类型:</label>
  94. <div class="layui-input-inline">
  95. <select name="verify_type">
  96. <option value="">请选择核销码类型</option>
  97. {foreach $verify_type as $k => $v}
  98. <option value="{$k}">{$v.name}</option>
  99. {/foreach}
  100. </select>
  101. </div>
  102. </div>
  103. <div class="layui-inline">
  104. <label class="layui-form-label">核销地址:</label>
  105. <div class="layui-input-inline">
  106. <select name="verify_from">
  107. <option value="">请选择核销地址</option>
  108. {foreach $verify_from as $k => $v}
  109. <option value="{$k}">{$v}</option>
  110. {/foreach}
  111. </select>
  112. </div>
  113. </div>
  114. </div>
  115. <div class="layui-form-item">
  116. <div class="layui-inline">
  117. <label class="layui-form-label">核销时间:</label>
  118. <div class="layui-input-inline">
  119. <input type="text" class="layui-input" name="start_time" id="start_time" autocomplete="off" placeholder="开始时间" readonly>
  120. <i class=" iconrili iconfont calendar"></i>
  121. </div>
  122. <div class="layui-form-mid">-</div>
  123. <div class="layui-input-inline">
  124. <input type="text" class="layui-input" name="end_time" id="end_time" autocomplete="off" placeholder="结束时间" readonly>
  125. <i class=" iconrili iconfont calendar"></i>
  126. </div>
  127. </div>
  128. </div>
  129. <div class="form-row">
  130. <button class="layui-btn" lay-submit lay-filter="search">筛选</button>
  131. <button type="reset" class="layui-btn layui-btn-primary">重置</button>
  132. <button class="layui-btn layui-btn-primary" lay-submit lay-filter="export_verify" >批量导出</button>
  133. </div>
  134. </form>
  135. </div>
  136. </div>
  137. <!-- 列表 -->
  138. <table id="verify_list" lay-filter="verify_list"></table>
  139. <!-- 工具栏操作 -->
  140. <script type="text/html" id="operation">
  141. </script>
  142. <!-- 核销信息 -->
  143. <script type="text/html" id="verify_code">
  144. <div class="table-title">
  145. <div class="contraction" data-id="{{d.id}}" data-open="0">
  146. <span>+</span>
  147. </div>
  148. <div class="title-content table-title">
  149. {{# if(d.verify_type == "pickup"){ }}
  150. <div class="title-pic"><img src="SHOP_IMG/hexiao_dindan.png"></div>
  151. {{# } }}
  152. {{# if(d.verify_type == "virtualgoods"){ }}
  153. <div class="title-pic"><img src="{{ns.img(d.sku_image)}}"></div>
  154. {{# } }}
  155. <div class="title-content" style="overflow: unset;">
  156. <p title="{{ d.order_info.order_name }}">{{ d.order_info.order_name }}</p>
  157. <span class="verify-type text-color border-color">{{ d.verify_type_name}}</span>
  158. <span class="verify-code">核销码:{{ d.verify_code }}</span>
  159. </div>
  160. </div>
  161. </div>
  162. </script>
  163. <!-- 核销内容 -->
  164. <script type="text/html" id="verifyList">
  165. <tr class="js-list-{{d.index}}" id="sku_img_{{d.index}}">
  166. <td colspan="8">
  167. <ul class="verify-list">
  168. {{# for(var i=0; i<d.list.length; i++){ }}
  169. <li>
  170. <div class="img-wrap">
  171. <img layer-src src="{{ns.img(d.list[i].img, 'mid')}}">
  172. </div>
  173. <div class="info-wrap">
  174. <div class="name-wrap">
  175. <span class="sku-name">{{d.list[i].name}}</span>
  176. </div>
  177. <span class="price">价格:¥{{d.list[i].price}}</span>
  178. <span class="sale_num">数量:{{d.list[i].num}}</span>
  179. </div>
  180. </li>
  181. {{# } }}
  182. </ul>
  183. </td>
  184. </tr>
  185. </script>
  186. {/block}
  187. {block name="script"}
  188. <script>
  189. var laytpl;
  190. $(function () {
  191. $("body").on("click", ".contraction", function () {
  192. var id = $(this).attr("data-id");
  193. var open = $(this).attr("data-open");
  194. var tr = $(this).parent().parent().parent().parent();
  195. var index = tr.attr("data-index");
  196. if (open == 1) {
  197. $(this).children("span").text("+");
  198. $(".js-list-" + index).remove();
  199. } else {
  200. $(this).children("span").text("-");
  201. $.ajax({
  202. url: ns.url("shop/verify/verifyInfo"),
  203. data: {id: id},
  204. dataType: 'JSON',
  205. type: 'POST',
  206. async: false,
  207. success: function (res) {
  208. var verify_list = $("#verifyList").html();
  209. var data = {
  210. list: res.data.data.item_array,
  211. index: index
  212. };
  213. laytpl(verify_list).render(data, function (html) {
  214. tr.after(html);
  215. });
  216. layer.photos({
  217. photos: '.img-wrap',
  218. anim: 5
  219. });
  220. }
  221. });
  222. }
  223. $(this).attr("data-open", (open == 0 ? 1 : 0));
  224. });
  225. layui.use(['form', 'laydate','laytpl'], function () {
  226. laytpl = layui.laytpl;
  227. var table,
  228. form = layui.form,
  229. laydate = layui.laydate;
  230. form.render();
  231. //渲染时间
  232. laydate.render({
  233. elem: '#start_time',
  234. type: 'datetime'
  235. });
  236. laydate.render({
  237. elem: '#end_time',
  238. type: 'datetime'
  239. });
  240. /**
  241. * 加载表格
  242. */
  243. table = new Table({
  244. elem: '#verify_list',
  245. url: ns.url("shop/verify/lists"), //数据接口
  246. cols: [
  247. [{
  248. title: '核销信息',
  249. width: '30%',
  250. templet: '#verify_code'
  251. },
  252. {
  253. field: 'order_no',
  254. title: '订单编号',
  255. width: '12%',
  256. templet: function (data) {
  257. return '<a href="'+ ns.url("shop/order/detail", {order_id:data.order_info.order_id}) +'" target="_blank">'+ data.order_no +'</a>';
  258. }
  259. },{
  260. field: 'name',
  261. title: '买家姓名',
  262. width: '8%'
  263. },
  264. {
  265. field: 'verifyFrom',
  266. title: '核销地址',
  267. width: '8%',
  268. },
  269. {
  270. field: 'verify_remark',
  271. title: '核销备注',
  272. unresize: 'false',
  273. width: '22%',
  274. align: 'right',
  275. }]
  276. ]
  277. });
  278. /**
  279. * 搜索功能
  280. */
  281. form.on('submit(search)', function (data) {
  282. table.reload({
  283. page: {
  284. curr: 1
  285. },
  286. where: data.field
  287. });
  288. return false;
  289. });
  290. //批量导出
  291. form.on('submit(export_verify)', function (data) {
  292. location.href = ns.url("shop/verify/exportVerify", data.field);
  293. return false;
  294. });
  295. });
  296. })
  297. </script>
  298. {/block}