diff --git a/pages/detail/detail.vue b/pages/detail/detail.vue index d4e0b11..c17ccc2 100755 --- a/pages/detail/detail.vue +++ b/pages/detail/detail.vue @@ -28,10 +28,7 @@ - 组合总额 (NV) - - 账本追踪中 - + 组合总额 @@ -269,8 +266,7 @@ - {{ log.date }} - {{ log.time }} + {{ log.date }} {{ log.time || '' }} @@ -280,12 +276,14 @@ - {{ log.title }} {{ log.stockCode || '' }} + + {{ log.title || (log.type === 'buy' ? '买入' : '卖出') }} {{ log.stockCode || '' }} + {{ log.remark || '' }} + {{ log.type === 'buy' ? '+' : '-' }}{{ getCurrencySymbol(portfolioData.currency) }}{{ (log.amount || 0).toLocaleString('zh-CN', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) }} - {{ log.type === 'buy' ? '买入' : '卖出' }} 操作 @@ -621,7 +619,7 @@ const drawNavChart = () => { // 画布尺寸 (rpx -> px) - 匹配 CSS 高度 320rpx ≈ 160px const width = 350; const height = 160; - const padding = { top: 10, right: 10, bottom: 25, left: 10 }; + const padding = { top: 10, right: 10, bottom: 25, left: 45 }; const chartWidth = width - padding.left - padding.right; const chartHeight = height - padding.top - padding.bottom; @@ -641,6 +639,29 @@ const drawNavChart = () => { // 清空画布 ctx.clearRect(0, 0, width, height); + // 绘制 Y 轴刻度 + ctx.setFillStyle('#D1D5DB'); + ctx.setStrokeStyle('#F3F4F6'); + ctx.setLineWidth(1); + ctx.setFontSize(9); + ctx.setTextAlign('right'); + + const yTicks = 5; + for (let i = 0; i <= yTicks; i++) { + const y = padding.top + (chartHeight / yTicks) * i; + const val = maxVal - (range / yTicks) * i; + + // 刻度线 + ctx.beginPath(); + ctx.moveTo(padding.left, y); + ctx.lineTo(width - padding.right, y); + ctx.stroke(); + + // 刻度标签 + ctx.setFillStyle('#9CA3AF'); + ctx.fillText(val.toFixed(2), padding.left - 5, y + 3); + } + // 计算点坐标 const points = data.map((item, index) => ({ x: padding.left + (chartWidth / (data.length - 1 || 1)) * index, @@ -1399,6 +1420,8 @@ const deletePortfolio = async () => { .tl-left { width: 120rpx; text-align: right; padding-right: 24rpx; display: flex; flex-direction: column; } .tl-date { font-size: 26rpx; font-weight: 600; color: #374151; } .tl-time { font-size: 22rpx; color: #9CA3AF; margin-top: 4rpx; } +.tl-datetime { font-size: 22rpx; color: #9CA3AF; white-space: nowrap; } +.tl-shares { font-size: 22rpx; color: #9CA3AF; margin-top: 4rpx; } .tl-line { width: 40rpx; display: flex; flex-direction: column; align-items: center; position: relative; } .tl-dot { width: 16rpx; height: 16rpx; border-radius: 50%; z-index: 2; margin-top: 10rpx; } .tl-dash { width: 2rpx; flex: 1; background-color: #E5E7EB; margin-top: 8rpx; } diff --git a/pages/index/index.vue b/pages/index/index.vue index 035813f..e94d033 100755 --- a/pages/index/index.vue +++ b/pages/index/index.vue @@ -636,6 +636,10 @@ const handleRefresh = async (): Promise => { font-weight: 700; color: #1F2937; margin-bottom: 6rpx; + max-width: 320rpx; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } .card-tags { diff --git a/pages/me/me.vue b/pages/me/me.vue index c2d48f7..7749514 100755 --- a/pages/me/me.vue +++ b/pages/me/me.vue @@ -22,7 +22,7 @@ {{ userInfo.userName || '加载中...' }} - + {{ userInfo.email }} diff --git a/todo.md b/todo.md index cb2b5de..057f0b0 100644 --- a/todo.md +++ b/todo.md @@ -110,9 +110,24 @@ - ✅ IDE 自动补全 - ✅ 重构安全性提升 -### P5 - 其他代码质量优化(TS 迁移后) -- [ ] 统一错误处理机制 -- [ ] 优化 API 调用封装 +### P6 - UI/UX 优化(产品评审反馈)⏳ 进行中 + +#### P0 - 紧急 +- [x] 收益曲线空状态添加引导按钮("生成收益曲线")✅ 已实现 + +#### P1 - 高优先级 +- [x] 首页组合卡片添加当日涨跌幅显示 ✅ 已实现 +- [x] 详情页收益曲线 Y 轴添加刻度 ✅ + +#### P2 - 中优先级 +- [x] 状态标签颜色优化(运行中=绿色,已暂停=黄色)✅ 已实现 +- [x] 交易记录时间格式合并为一行 ✅ +- [x] 组合名称长度限制(超出截断)✅ +- [x] 详情页去掉无意义标签("账本追踪中"、"NV")✅ + +#### P3 - 低优先级 +- [x] 持仓明细优化(显示成本价)✅ 已实现 +- [x] 我的页面会员等级改为运行天数 ✅ ## 兼容性 - ✅ 微信小程序(已验证)