lists.html 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437
  1. {layout name="layout1" /}
  2. <style>
  3. .layui-table-cell {
  4. height:auto;
  5. }
  6. .goods-content>div:not(:last-of-type) {
  7. border-bottom:1px solid #DCDCDC;
  8. }
  9. .goods-data::after{
  10. display: block;
  11. content: '';
  12. clear: both;
  13. }
  14. .goods_name_hide{
  15. overflow:hidden;
  16. white-space:nowrap;
  17. text-overflow: ellipsis;
  18. }
  19. .operation-btn {
  20. margin: 5px;
  21. }
  22. .table-operate{
  23. text-align: left;
  24. font-size:14px;
  25. padding:0 5px;
  26. height:auto;
  27. overflow:visible;
  28. text-overflow:inherit;
  29. white-space:normal;
  30. word-break: break-all;
  31. }
  32. </style>
  33. <div class="wrapper">
  34. <div class="layui-card">
  35. <div class="layui-card-body">
  36. <div class="layui-collapse like-layui-collapse" lay-accordion="" style="border:1px dashed #c4c4c4">
  37. <div class="layui-colla-item">
  38. <h2 class="layui-colla-title like-layui-colla-title" style="background-color: #fff">操作提示</h2>
  39. <div class="layui-colla-content layui-show">
  40. <p>*会员在商城下单的列表。</p>
  41. <p>*订单状态有待付款,待发货,待收货,已完成,已关闭;不做售后流程。</p>
  42. <p>*待付款订单取消后则为已关闭。待付款订单支付后则为待发货。待发货订单发货后则为待收货。待收货订单收货后则为已完成。红包类型的订单一付款就变成已完成状态。</p>
  43. </div>
  44. </div>
  45. </div>
  46. </div>
  47. <div class="layui-tab layui-tab-card" lay-filter="tab-all">
  48. <ul class="layui-tab-title">
  49. <li data-type='' class="layui-this">全部</li>
  50. {foreach $order_status as $item => $val}
  51. <li data-type="{$item}">{$val}</li>
  52. {/foreach}
  53. </ul>
  54. <div class="layui-card-body layui-form">
  55. <div class="layui-form-item">
  56. <div class="layui-row">
  57. <div class="layui-inline">
  58. <label class="layui-form-label">兑换单号:</label>
  59. <div class="layui-input-block">
  60. <input type="text" name="order_sn" id="order_sn" placeholder="请输入兑换单号"
  61. autocomplete="off" class="layui-input">
  62. </div>
  63. </div>
  64. <div class="layui-inline">
  65. <label class="layui-form-label">商品名称:</label>
  66. <div class="layui-input-block">
  67. <input type="text" name="goods_name" id="goods_name" placeholder="请输入商品名称"
  68. autocomplete="off" class="layui-input">
  69. </div>
  70. </div>
  71. <div class="layui-inline">
  72. <label class="layui-form-label">兑换类型:</label>
  73. <div class="layui-input-block">
  74. <select name="type" id="type">
  75. <option value="">全部</option>
  76. {foreach $type as $item => $val}
  77. <option value="{$item}">{$val}</option>
  78. {/foreach}
  79. </select>
  80. </div>
  81. </div>
  82. <div class="layui-inline">
  83. <label class="layui-form-label">订单状态:</label>
  84. <div class="layui-input-block">
  85. <select name="order_status" id="order_status">
  86. <option value="">全部</option>
  87. {foreach $order_status as $item => $val}
  88. <option value="{$item}">{$val}</option>
  89. {/foreach}
  90. </select>
  91. </div>
  92. </div>
  93. </div>
  94. <div class="layui-row">
  95. <div class="layui-inline">
  96. <label class="layui-form-label">下单时间:</label>
  97. <div class="layui-input-inline">
  98. <div class="layui-input-inline">
  99. <input type="text" name="start_time" class="layui-input" id="start_time"
  100. placeholder="" autocomplete="off">
  101. </div>
  102. </div>
  103. <div class="layui-input-inline" style="margin-right: 5px;width: 20px;">
  104. <label class="layui-form-mid">至</label>
  105. </div>
  106. <div class="layui-input-inline">
  107. <input type="text" name="end_time" class="layui-input" id="end_time"
  108. placeholder="" autocomplete="off">
  109. </div>
  110. </div>
  111. <div class="layui-inline">
  112. <button class="layui-btn layui-btn-sm layuiadmin-btn-ad {$view_theme_color}" lay-submit
  113. lay-filter="order-search">查询
  114. </button>
  115. <button class="layui-btn layui-btn-sm layuiadmin-btn-ad layui-btn-primary " lay-submit
  116. lay-filter="order-clear-search">清空查询
  117. </button>
  118. </div>
  119. </div>
  120. </div>
  121. </div>
  122. <div class="layui-tab-item layui-show">
  123. <div class="layui-card">
  124. <div class="layui-card-body">
  125. <table id="order-lists" lay-filter="order-lists"></table>
  126. <script type="text/html" id="order-operation" >
  127. <div class="table-operate">
  128. <a class="layui-btn layui-btn-primary layui-btn-sm operation-btn" lay-event="detail">订单详情</a>
  129. {{# if(d.order_status == 1 && d.delivery_way == 1){ }}
  130. <a class="layui-btn layui-btn-normal layui-btn-sm operation-btn" lay-event="delivery">发货</a>
  131. {{# } }}
  132. {{# if(d.order_status == 2 && d.delivery_way == 1 ){ }}
  133. <a class="layui-btn layui-btn-normal layui-btn-sm operation-btn" lay-event="confirm">确认收货</a>
  134. {{# } }}
  135. {{# if(d.order_status == 2 && d.shipping_status == 1 ){ }}
  136. <a class="layui-btn layui-btn-primary layui-btn-sm operation-btn" lay-event="express">物流查询</a>
  137. {{# } }}
  138. {{# if(d.order_status == 3 && d.shipping_status == 1 ){ }}
  139. <a class="layui-btn layui-btn-primary layui-btn-sm operation-btn" lay-event="express">物流查询</a>
  140. {{# } }}
  141. {{# if(d.order_status <= 2 && d.exchange_type == 1){ }}
  142. <a class="layui-btn layui-btn-danger layui-btn-sm operation-btn" lay-event="cancel">取消订单</a>
  143. {{# } }}
  144. </div>
  145. </script>
  146. <script type="text/html" id="image">
  147. <img src="{{d.image}}" style="height:80px;width: 80px" class="image-show">
  148. </script>
  149. <!--订单信息-->
  150. <script type="text/html" id="order">
  151. <div style="text-align: left">
  152. <p>订单编号:{{d.order_sn}}</p>
  153. <p>下单时间:{{d.create_time}}</p>
  154. <p>支付时间:{{d.pay_time}}</p>
  155. </div>
  156. </script>
  157. <!--会员信息-->
  158. <script type="text/html" id="user">
  159. <img src="{{d.user.avatar}}" style="height:80px;width: 80px" class="image-show">
  160. <div class="layui-input-inline" style="text-align: left;">
  161. <p>会员编号:{{d.user.sn}}</p>
  162. <p style="width: 180px;text-overflow:ellipsis;overflow: hidden">会员昵称:{{d.user.nickname}}</p>
  163. </div>
  164. </script>
  165. <!--收货信息-->
  166. <script type="text/html" id="delivery">
  167. <div style="text-align: left">
  168. <p>收货人:{{d.consignee}}</p>
  169. <p>手机号码:{{d.mobile}}</p>
  170. <p>收货地址:{{d.delivery_address}}</p>
  171. </div>
  172. </script>
  173. <!--商品信息-->
  174. <script type="text/html" id="goods">
  175. <div class="goods-content">
  176. <div style="text-align: left;" class="goods-data">
  177. <img src="{{d.goods_snap.image}}" style="height:80px;width: 80px;" class="image-show layui-col-md4">
  178. <div class="layui-input-inline layui-col-md8" style="margin-left: 10px">
  179. <span class="layui-col-md7 goods_name_hide">{{d.goods_snap.name}}</span>
  180. <br>
  181. <span class="layui-col-md7 goods_name_hide" style="width: 100%">积分金额:{{d.goods_snap.need_integral}}积分{{# if(d.goods_snap.exchange_way == 2){ }}+{{d.goods_snap.need_money}}元{{# } }}</span>
  182. <br>
  183. <span class="layui-col-md5">数量:{{d.total_num}}</span>
  184. </div>
  185. </div>
  186. </div>
  187. </script>
  188. <!--实际支付-->
  189. <script type="text/html" id="order_amount">
  190. <div style="text-align: left">
  191. <p>{{d.order_integral}}积分{{# if(d.order_amount > 0){ }}+{{d.order_amount}}元{{# } }}</p>
  192. </div>
  193. </script>
  194. </div>
  195. </div>
  196. </div>
  197. </div>
  198. </div>
  199. </div>
  200. <script>
  201. layui.config({
  202. version:"{$front_version}",
  203. base: '/static/lib/' //静态资源所在路径
  204. }).use(['form'], function(){
  205. var $ = layui.$
  206. , form = layui.form
  207. , table = layui.table
  208. , element = layui.element
  209. , laydate = layui.laydate;
  210. //图片放大
  211. $(document).on('click', '.image-show', function () {
  212. var src = $(this).attr('src');
  213. like.showImg(src,400);
  214. });
  215. //监听搜索
  216. form.on('submit(order-search)', function (data) {
  217. var field = data.field;
  218. //执行重载
  219. table.reload('order-lists', {
  220. where: field,
  221. page: {
  222. curr: 1
  223. }
  224. });
  225. });
  226. //清空查询
  227. form.on('submit(order-clear-search)', function () {
  228. $('#order_sn').val('');
  229. $('#goods_name').val('');
  230. $('#type').val('');
  231. $('#order_status').val('');
  232. $('#start_time').val('');
  233. $('#end_time').val('');
  234. form.render('select');
  235. //刷新列表
  236. table.reload('order-lists', {
  237. where: [],
  238. page: {
  239. curr: 1
  240. }
  241. });
  242. });
  243. //日期时间范围
  244. laydate.render({
  245. elem: '#start_time'
  246. ,type: 'datetime'
  247. ,trigger: 'click'
  248. ,done: function (value, date, endDate) {
  249. var startDate = new Date(value).getTime();
  250. var endTime = new Date($('#end_time').val()).getTime();
  251. if (endTime < startDate) {
  252. layer.msg('结束时间不能小于开始时间');
  253. $('#start_time').val($('#end_time').val());
  254. }
  255. }
  256. });
  257. laydate.render({
  258. elem: '#end_time'
  259. ,type: 'datetime'
  260. ,trigger: 'click'
  261. ,done: function (value, date, endDate) {
  262. var startDate = new Date($('#start_time').val()).getTime();
  263. var endTime = new Date(value).getTime();
  264. console.log(startDate);
  265. if (endTime < startDate) {
  266. layer.msg('结束时间不能小于开始时间');
  267. $('#end_time').val($('#start_time').val());
  268. }
  269. }
  270. });
  271. //获取列表
  272. getList('');
  273. //切换列表
  274. element.on('tab(tab-all)', function (data) {
  275. $('#order_sn').val('');
  276. $('#goods_name').val('');
  277. $('#type').val('');
  278. $('#order_status').val('');
  279. $('#start_time').val('');
  280. $('#end_time').val('');
  281. form.render('select');
  282. var status = $(this).attr('data-type');
  283. getList(status);
  284. });
  285. function getList(status) {
  286. table.render({
  287. elem: '#order-lists'
  288. , url: '{:url("integral.IntegralOrder/lists")}?status=' + status
  289. , cols: [[
  290. {field: 'order', title: '兑换单号', align: 'center',templet:'#order',width:230}
  291. , {field: 'order_goods', title: '商品信息', align: 'center',templet:'#goods',width:350}
  292. , {field: 'type_desc', title: '兑换类型', align: 'center',width:100}
  293. , {field: 'user', title: '会员信息', templet:'#user',width:300}
  294. , {field: 'order_amount', title: '实际支付', align: 'center',templet:'#order_amount',width:150}
  295. , {field: 'delivery', title: '收货信息', align: 'center',templet:'#delivery',width:200}
  296. , {field: 'order_status_desc', title: '订单状态', align: 'center',width:100}
  297. , {fixed: 'right', title: '操作', width: 300, align: 'center', toolbar: '#order-operation'}
  298. ]]
  299. , page: true
  300. , text: {none: '暂无数据!'}
  301. ,response: {
  302. statusCode: 1
  303. }
  304. , parseData: function (res) {
  305. return {
  306. "code": res.code,
  307. "msg": res.msg,
  308. "count": res.data.count,
  309. "data": res.data.lists,
  310. };
  311. }
  312. ,done: function(res, curr, count){
  313. // 解决操作栏因为内容过多换行问题
  314. $(".layui-table-main tr").each(function (index, val) {
  315. $($(".layui-table-fixed-l .layui-table-body tbody tr")[index]).height($(val).height());
  316. $($(".layui-table-fixed-r .layui-table-body tbody tr")[index]).height($(val).height());
  317. });
  318. }
  319. });
  320. }
  321. //监听工具条
  322. table.on('tool(order-lists)', function (obj) {
  323. var id = obj.data.id;
  324. //订单详情
  325. if(obj.event === 'detail'){
  326. layer.open({
  327. type: 2
  328. ,title: '订单详情'
  329. ,content: '{:url("integral.IntegralOrder/detail")}?id='+id
  330. ,area: ['90%', '90%']
  331. ,yes: function(index, layero){
  332. table.reload('order-lists');
  333. }
  334. })
  335. }
  336. //发货
  337. if(obj.event === 'delivery'){
  338. layer.open({
  339. type: 2
  340. ,title: '订单发货'
  341. ,content: '{:url("integral.IntegralOrder/delivery")}?id='+id
  342. ,area: ['90%', '90%']
  343. ,yes: function(index, layero){
  344. }
  345. })
  346. }
  347. //物流信息
  348. if(obj.event === 'express'){
  349. layer.open({
  350. type: 2
  351. ,title: '物流信息'
  352. ,content: '{:url("integral.IntegralOrder/express")}?id='+id
  353. ,area: ['90%', '90%']
  354. ,yes: function(index, layero){
  355. }
  356. })
  357. }
  358. //确认收货
  359. if(obj.event === 'confirm'){
  360. layer.confirm('确认订单商品已收货吗?', {
  361. btn: ['确认','取消'] //按钮
  362. }, function(){
  363. like.ajax({
  364. url: '{:url("integral.IntegralOrder/confirm")}'
  365. , data: {'id': id}
  366. , type: 'post'
  367. , success: function (res) {
  368. if (res.code == 1) {
  369. layui.layer.msg(res.msg, {
  370. offset: '15px'
  371. , icon: 1
  372. , time: 1000
  373. },function () {
  374. table.reload('order-lists');
  375. });
  376. }
  377. },
  378. });
  379. });
  380. }
  381. //取消订单
  382. if (obj.event === 'cancel') {
  383. layer.confirm('确认取消订单吗?', {
  384. btn: ['确认', '取消'] //按钮
  385. }, function () {
  386. like.ajax({
  387. url: '{:url("integral.IntegralOrder/cancel")}'
  388. , data: {'id': id}
  389. , type: 'post'
  390. , success: function (res) {
  391. if (res.code == 1) {
  392. layui.layer.msg(res.msg, {
  393. offset: '15px'
  394. , icon: 1
  395. , time: 1000
  396. }, function () {
  397. table.reload('order-lists');
  398. });
  399. }
  400. },
  401. });
  402. });
  403. }
  404. });
  405. });
  406. </script>