system.order.stats.php 16 KB

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