rank.js 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. "use strict";
  2. const common_vendor = require("../../common/vendor.js");
  3. const utils_api = require("../../utils/api.js");
  4. require("../../utils/auth.js");
  5. const _sfc_main = {
  6. __name: "rank",
  7. setup(__props) {
  8. const portfolio = common_vendor.ref({
  9. balance: 1e5,
  10. profit: 0,
  11. profitRate: 0
  12. });
  13. const myRank = common_vendor.ref({
  14. rank: 5,
  15. rate: 0
  16. });
  17. const leaderboard = common_vendor.ref([
  18. { rank: 1, name: "量化王者 608", rate: 35.2 },
  19. { rank: 2, name: "短线猎手 012", rate: 28.9 },
  20. { rank: 3, name: "趋势追踪者", rate: 22.1 }
  21. ]);
  22. const formatAmount = (amount) => {
  23. return amount.toLocaleString("zh-CN");
  24. };
  25. const formatProfit = (profit) => {
  26. return Math.abs(profit).toLocaleString("zh-CN");
  27. };
  28. const formatRate = (rate) => {
  29. return rate.toFixed(2);
  30. };
  31. const getRankClass = (rank) => {
  32. if (rank === 1)
  33. return "rank-first";
  34. if (rank === 2)
  35. return "rank-second";
  36. if (rank === 3)
  37. return "rank-third";
  38. return "";
  39. };
  40. const loadData = async () => {
  41. try {
  42. const portfolioRes = await utils_api.getUserPortfolio();
  43. if (portfolioRes.code === 0 && portfolioRes.data) {
  44. portfolio.value = portfolioRes.data;
  45. }
  46. } catch (err) {
  47. console.error("获取资产数据失败:", err);
  48. }
  49. try {
  50. const leaderboardRes = await utils_api.getLeaderboard();
  51. if (leaderboardRes.code === 0 && leaderboardRes.data) {
  52. leaderboard.value = leaderboardRes.data.list || [];
  53. myRank.value = leaderboardRes.data.myRank || { rank: 5, rate: 0 };
  54. }
  55. } catch (err) {
  56. console.error("获取排行榜数据失败:", err);
  57. }
  58. };
  59. common_vendor.onMounted(() => {
  60. loadData();
  61. });
  62. return (_ctx, _cache) => {
  63. return {
  64. a: common_vendor.t(formatAmount(portfolio.value.balance)),
  65. b: common_vendor.t(formatProfit(portfolio.value.profit)),
  66. c: common_vendor.t(formatRate(portfolio.value.profitRate)),
  67. d: common_vendor.n(portfolio.value.profitRate >= 0 ? "profit-positive" : "profit-negative"),
  68. e: common_vendor.t(myRank.value.rank),
  69. f: common_vendor.t(myRank.value.rate >= 0 ? "+" : ""),
  70. g: common_vendor.t(myRank.value.rate),
  71. h: common_vendor.n(myRank.value.rate >= 0 ? "rate-positive" : "rate-negative"),
  72. i: common_vendor.f(leaderboard.value, (item, index, i0) => {
  73. return {
  74. a: common_vendor.t(item.rank),
  75. b: common_vendor.n(getRankClass(item.rank)),
  76. c: common_vendor.t(item.name),
  77. d: common_vendor.t(item.rate >= 0 ? "+" : ""),
  78. e: common_vendor.t(item.rate),
  79. f: common_vendor.n(item.rate >= 0 ? "rate-positive" : "rate-negative"),
  80. g: index
  81. };
  82. })
  83. };
  84. };
  85. }
  86. };
  87. const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["__file", "D:/program/gupiao-wx/src/pages/rank/rank.vue"]]);
  88. wx.createPage(MiniProgramPage);