system.order.stats.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260
  1. <?php defined('InShopNC') or exit('Access Invalid!'); ?>
  2. <div class="page">
  3. <div class="fixed-bar">
  4. <div class="item-title">
  5. <h3>对账管理</h3>
  6. <ul class="tab-base">
  7. <li><a href="index.php?act=merchant&op=provider_evidence"><span>上游充值申请记录</span></a></li>
  8. <li><a href="index.php?act=merchant&op=provider_evidence_add"><span>新增上游充值申请</span></a></li>
  9. <li><a href="JavaScript:void(0);" class="current"><span>平台对账记录</span></a></li>
  10. <li><a href="index.php?act=OrderStats&op=index&type=provider"><span>上游对账记录</span></a></li>
  11. <li><a href="index.php?act=OrderStats&op=index&type=merchant"><span>下游对账记录</span></a></li>
  12. </ul>
  13. </div>
  14. </div>
  15. <div class="fixed-empty"></div>
  16. <form method="get" name="formSearch" id="formSearch">
  17. <input type="hidden" value="OrderStats" name="act">
  18. <input type="hidden" value="index" name="op">
  19. <table class="tb-type1 noborder search">
  20. <tbody>
  21. <tr>
  22. <th><label for="query_start_time">统计时间</label></th>
  23. <td>
  24. <input class="txt date" type="text" value="<?php echo $_GET['query_start_time']; ?>"
  25. id="startTime" name="query_start_time" autocomplete="off" style="width:120px" />
  26. <label for="query_start_time">~</label>
  27. <input class="txt date" type="text" value="<?php echo $_GET['query_end_time']; ?>"
  28. id="endTime" name="query_end_time" autocomplete="off" style="width:120px" /></td>
  29. <td><a href="javascript:void(0);" id="ncsubmit" class="btn-search "
  30. title="<?php echo $lang['nc_query']; ?>">&nbsp;</a>
  31. <?php if ($output['mch_name'] != '') { ?>
  32. <a href="index.php?act=OrderStats&op=index" class="btns "
  33. title="<?php echo $lang['nc_cancel_search']; ?>"><span><?php echo $lang['nc_cancel_search']; ?></span></a>
  34. <?php } ?></td>
  35. <td>
  36. <a href="javascript:void(0);" id="ncexport" class="btn">
  37. <span>导出</span>
  38. </a>
  39. </td>
  40. </tr>
  41. </tbody>
  42. </table>
  43. </form>
  44. <table class="table tb-type2" id="prompt">
  45. <tbody>
  46. <tr class="space odd">
  47. <th colspan="12"><div class="title">
  48. <h5>总量统计</h5>
  49. <span class="arrow"></span></div></th>
  50. </tr>
  51. <tr>
  52. <td>
  53. <ul>
  54. <li class="lineLi" style="color:#000;">总计成功订单量: <?php echo $output['total_stats']['success_count_total'] ?? 0?></li>
  55. <li class="lineLi" style="color:#000;">总计成功订单金额:<?php echo $output['total_stats']['success_refill_amounts_total'] ?? 0?></li>
  56. <li class="lineLi" style="color:#000;">总计下游扣款金额:<?php echo $output['total_stats']['success_mch_amounts_toatl'] ?? 0?></li>
  57. <li class="lineLi" style="color:#000;">总计上游扣款金额:<?php echo $output['total_stats']['success_channel_amounts_total'] ?? 0?></li>
  58. </ul>
  59. </td>
  60. </tr>
  61. </tbody>
  62. </table>
  63. <form method="post" id="merchant_name_form">
  64. <input type="hidden" name="form_submit" value="ok"/>
  65. <table class="table tb-type2">
  66. <thead>
  67. <tr class="thead">
  68. <th>统计日期</th>
  69. <th>主体名称</th>
  70. <th>主体ID</th>
  71. <th class="align-center">成功订单数</th>
  72. <th class="align-center">成功金额</th>
  73. <th class="align-center">商户金额</th>
  74. <th class="align-center">通道金额</th>
  75. <th class="align-center">利润</th>
  76. <th class="align-center">服务费</th>
  77. <th class="align-center">订单总量</th>
  78. <th class="align-center">失败订单数量</th>
  79. <th class="align-center">成功占比</th>
  80. <!-- <th class="align-center">操作</th>-->
  81. </tr>
  82. </thead>
  83. <tbody>
  84. <?php if (!empty($output['stats_list']) && is_array($output['stats_list'])) { ?>
  85. <?php foreach ($output['stats_list'] as $k => $v) { ?>
  86. <tr class="trFlex">
  87. <td><?php echo $v['time_text']; ?></td>
  88. <td><?php echo $v['cname']; ?></td>
  89. <td><?php echo $v['cid']; ?></td>
  90. <td class="align-center"><?php echo $v['success_count']; ?></td>
  91. <td class="align-center"><?php echo $v['success_refill_amounts']; ?></td>
  92. <td class="align-center"><?php echo $v['success_mch_amounts']; ?></td>
  93. <td class="align-center"><?php echo $v['success_channel_amounts']; ?></td>
  94. <td class="align-center"><?php echo $v['profit_amounts']; ?></td>
  95. <td class="align-center"><?php echo $v['service_amounts']; ?></td>
  96. <td class="align-center"><?php echo $v['order_count']; ?></td>
  97. <td class="align-center"><?php echo $v['cancel_count']; ?></td>
  98. <td class="align-center"><?php echo $v['success_ratio']; ?></td>
  99. <!-- <td class="align-center w200">-->
  100. <!-- <a href="index.php?act=merchant&op=OrderStatsReload&stat_id=--><?php //echo $v['stat_id'];?><!--">重新统计</a>-->
  101. <!-- </td>-->
  102. </tr>
  103. <?php } ?>
  104. <?php } else { ?>
  105. <tr class="no_data">
  106. <td colspan="15"><?php echo $lang['nc_no_record']; ?></td>
  107. </tr>
  108. <?php } ?>
  109. </tbody>
  110. <tfoot>
  111. <tr class="tfoot">
  112. <td></td>
  113. <td colspan="16">
  114. <div class="pagination"><?php echo $output['page']; ?></div>
  115. </td>
  116. </tr>
  117. </tfoot>
  118. </table>
  119. </form>
  120. </div>
  121. <script type="text/javascript" src="<?php echo RESOURCE_SITE_URL; ?>/js/jquery.edit.js" charset="utf-8"></script>
  122. <script type="text/javascript" src="<?php echo RESOURCE_SITE_URL; ?>/laydate/laydate.js"></script>
  123. <script>
  124. $(function () {
  125. $('#ncsubmit').click(function () {
  126. $('input[name="op"]').val('index');
  127. $('#formSearch').submit();
  128. });
  129. // 日期选择器
  130. laydate.render({
  131. elem: '#startTime',
  132. type: 'datetime'
  133. });
  134. laydate.render({
  135. elem: '#endTime',
  136. type: 'datetime'
  137. });
  138. // 表格hover时背景
  139. $('.trFlex').each(function () {
  140. $(this).hover(function () {
  141. $(this)[0].style.backgroundColor = '#cbe9f3'
  142. },function() {
  143. $(this)[0].style.backgroundColor = '#fff'
  144. })
  145. })
  146. function JSONToExcelConvertor(JSONData, FileName, ShowLabel, headData) {
  147. //先转化json
  148. var arrData = typeof JSONData != 'object' ? JSON.parse(JSONData) : JSONData;
  149. var excel = '<table>';
  150. // 标题
  151. for (const key in headData) {
  152. var head = "<tr>";
  153. var td = "<td colspan='13' style='font-size:16px;'>"+ headData[key] + '</td>';
  154. excel += td + "</tr>";
  155. }
  156. //设置表头
  157. var row = "<tr>";
  158. for (var i = 0, l = ShowLabel.length; i < l; i++) {
  159. row += "<th style='font-size:14px;'>" + ShowLabel[i].value + '</th>';
  160. }
  161. //换行
  162. excel += row + "</tr>";
  163. //设置数据
  164. for (var i = 0; i < arrData.length; i++) {
  165. var row = "<tr>";
  166. let code = i+1
  167. row += "<td>" +code+ "</td>"
  168. row += '<td style=font-size:14px;'+ 'mso-number-format:"\@"'+ '>' + arrData[i].time_text + '</td>';
  169. row += '<td style=font-size:14px;'+ 'mso-number-format:"\@"'+ '>' + arrData[i].cname + '</td>';
  170. row += '<td style=font-size:14px;'+ 'mso-number-format:"\@"'+ '>' + arrData[i].cid + '</td>';
  171. row += '<td style=font-size:14px;'+ 'mso-number-format:"\@"'+ '>' + arrData[i].success_count + '</td>';
  172. row += '<td style=font-size:14px;'+ 'mso-number-format:"\@"'+ '>' + arrData[i].success_refill_amounts + '</td>';
  173. row += '<td style=font-size:14px;'+ 'mso-number-format:"\@"'+ '>' + arrData[i].success_mch_amounts + '</td>';
  174. row += '<td style=font-size:14px;'+ 'mso-number-format:"\@"'+ '>' + arrData[i].success_channel_amounts + '</td>';
  175. row += '<td style=font-size:14px;'+ 'mso-number-format:"\@"'+ '>' + arrData[i].profit_amounts + '</td>';
  176. row += '<td style=font-size:14px;'+ 'mso-number-format:"\@"'+ '>' + arrData[i].service_amounts + '</td>';
  177. row += '<td style=font-size:14px;'+ 'mso-number-format:"\@"'+ '>' + arrData[i].order_count + '</td>';
  178. row += '<td style=font-size:14px;'+ 'mso-number-format:"\@"'+ '>' + arrData[i].cancel_count + '</td>';
  179. row += '<td style=font-size:14px;'+ 'mso-number-format:"\@"'+ '>' + arrData[i].success_ratio + '</td>';
  180. excel += row + "</tr>";
  181. }
  182. excel += "</table>";
  183. var excelFile = "<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:x='urn:schemas-microsoft-com:office:excel' xmlns='http://www.w3.org/TR/REC-html40'>";
  184. excelFile += '<meta http-equiv="content-type" content="application/vnd.ms-excel; charset=UTF-8">';
  185. excelFile += '<meta http-equiv="content-type" content="application/vnd.ms-excel';
  186. excelFile += '; charset=UTF-8">';
  187. excelFile += "<head>";
  188. excelFile += "<!--[if gte mso 9]>";
  189. excelFile += "<xml>";
  190. excelFile += "<x:ExcelWorkbook>";
  191. excelFile += "<x:ExcelWorksheets>";
  192. excelFile += "<x:ExcelWorksheet>";
  193. excelFile += "<x:Name>";
  194. excelFile += "{worksheet}";
  195. excelFile += "</x:Name>";
  196. excelFile += "<x:WorksheetOptions>";
  197. excelFile += "<x:DisplayGridlines/>";
  198. excelFile += "</x:WorksheetOptions>";
  199. excelFile += "</x:ExcelWorksheet>";
  200. excelFile += "</x:ExcelWorksheets>";
  201. excelFile += "</x:ExcelWorkbook>";
  202. excelFile += "</xml>";
  203. excelFile += "<![endif]-->";
  204. excelFile += "</head>";
  205. excelFile += "<body>";
  206. excelFile += excel;
  207. excelFile += "</body>";
  208. excelFile += "</html>";
  209. var uri = 'data:application/vnd.ms-excel;charset=utf-8,' + encodeURIComponent(excelFile);
  210. var link = document.createElement("a");
  211. link.href = uri;
  212. link.style = "visibility:hidden";
  213. link.download = FileName + ".xls";
  214. document.body.appendChild(link);
  215. link.click();
  216. document.body.removeChild(link);
  217. }
  218. $('#ncexport').click(function () {
  219. let starTime = new Date($('input[name="query_start_time"]').val()).getTime()/1000;
  220. let endTime = new Date($('input[name="query_end_time"]').val()).getTime()/1000;
  221. $.get('index.php?act=orderstats&op=ExportData', {
  222. query_start_time: starTime,
  223. query_end_time: endTime
  224. }, function (data) {
  225. data = JSON.parse(data)
  226. if (data && data.data) {
  227. let head = ['北京椰子电子商务有限责任公司']
  228. let time = ''
  229. if (starTime && endTime) {
  230. time = '统计时间:'+$('input[name="query_start_time"]').val()+' - '+$('input[name="query_end_time"]').val()
  231. head.push(time)
  232. } else if (starTime) {
  233. time = '统计时间:'+$('input[name="query_start_time"]').val()
  234. head.push(time)
  235. }
  236. head.push('总计成功订单量:' + data.total_stats.success_count_total)
  237. head.push('总计成功订单金额:' + data.total_stats.success_refill_amounts_total)
  238. head.push('总计下游扣款金额:' + data.total_stats.success_mch_amounts_toatl)
  239. head.push('总计上游扣款金额:' + data.total_stats.success_channel_amounts_total)
  240. head.push('总计利润金额:' + data.total_stats.profit_amounts_total)
  241. let title = [{value: "序号"},{value: "统计日期"},{value: "主体名称"},{value: "主体ID"},{value: "成功订单数"},{value: "成功金额"},{value: "下游金额"},{value: "上游金额"},{value: "利润"},{value: "服务费"},{value: "订单总量"}, {value: "失败订单数量"},{value: "成功占比"}]
  242. JSONToExcelConvertor(data.data, '平台对账记录', title, head)
  243. }
  244. // console.log('data', data);
  245. })
  246. })
  247. });
  248. </script>