bill.js 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. // 获取URL参数
  2. function getUrlParams() {
  3. const params = new URLSearchParams(window.location.search);
  4. return {
  5. groupId: params.get('groupId'),
  6. userName: params.get('userName'),
  7. robotId: params.get('robotId'),
  8. robotTemplate: params.get('robotTemplate'),
  9. d: params.get('d')
  10. };
  11. }
  12. // 格式化金额
  13. function formatAmount(amount) {
  14. return parseFloat(amount).toFixed(2);
  15. }
  16. // 格式化时间
  17. function formatTime(timestamp) {
  18. const date = new Date(timestamp);
  19. return date.toLocaleString('zh-CN', {
  20. year: 'numeric',
  21. month: '2-digit',
  22. day: '2-digit',
  23. hour: '2-digit',
  24. minute: '2-digit',
  25. second: '2-digit',
  26. hour12: false
  27. });
  28. }
  29. // 更新统计数据
  30. function updateSummary(data) {
  31. const totalDeposit = data.deposits.reduce((sum, d) => sum + d.amount, 0);
  32. const totalWithdrawal = data.withdrawals.reduce((sum, w) => sum + w.amount, 0);
  33. const depositFee = totalDeposit * 0.05; // 5% 费率
  34. const withdrawalFee = totalWithdrawal * 0.0; // 0% 费率
  35. const shouldWithdraw = totalDeposit - depositFee;
  36. const currentBalance = shouldWithdraw - totalWithdrawal - withdrawalFee;
  37. document.getElementById('totalDeposit').textContent = formatAmount(totalDeposit);
  38. document.getElementById('depositFee').textContent = formatAmount(depositFee);
  39. document.getElementById('totalWithdrawal').textContent = formatAmount(totalWithdrawal);
  40. document.getElementById('withdrawalFee').textContent = formatAmount(withdrawalFee);
  41. document.getElementById('shouldWithdraw').textContent = formatAmount(shouldWithdraw);
  42. document.getElementById('currentBalance').textContent = formatAmount(currentBalance);
  43. }
  44. // 更新表格数据
  45. function updateTables(data) {
  46. // 更新入款表格
  47. const depositTable = document.getElementById('depositTable').getElementsByTagName('tbody')[0];
  48. depositTable.innerHTML = '';
  49. data.deposits.forEach(deposit => {
  50. const row = depositTable.insertRow();
  51. row.insertCell(0).textContent = formatTime(deposit.time);
  52. row.insertCell(1).textContent = formatAmount(deposit.amount);
  53. });
  54. // 更新下发表格
  55. const withdrawalTable = document.getElementById('withdrawalTable').getElementsByTagName('tbody')[0];
  56. withdrawalTable.innerHTML = '';
  57. data.withdrawals.forEach(withdrawal => {
  58. const row = withdrawalTable.insertRow();
  59. row.insertCell(0).textContent = formatTime(withdrawal.time);
  60. row.insertCell(1).textContent = formatAmount(withdrawal.amount);
  61. });
  62. }
  63. // 加载数据
  64. async function loadData() {
  65. try {
  66. const params = getUrlParams();
  67. const response = await fetch(`/api/bill?${new URLSearchParams(params)}`);
  68. const data = await response.json();
  69. updateSummary(data);
  70. updateTables(data);
  71. } catch (error) {
  72. console.error('加载数据失败:', error);
  73. }
  74. }
  75. // 页面加载完成后执行
  76. document.addEventListener('DOMContentLoaded', loadData);