diff --git a/src/pages/finance/reports/index.tsx b/src/pages/finance/reports/index.tsx index c367fa9..b50e5c2 100644 --- a/src/pages/finance/reports/index.tsx +++ b/src/pages/finance/reports/index.tsx @@ -1,34 +1,29 @@ import { defineComponent, ref, nextTick } from 'vue'; -import { Select, Table } from 'ant-design-vue'; +import { DatePicker, Table } from 'ant-design-vue'; import * as echarts from 'echarts'; import { useReportsModel } from './model/useReportsModel'; import { useEffect, useContainerSize } from '@/hooks'; import styles from './index.module.less'; +const { RangePicker } = DatePicker; + /** * 账务报表 - * - * 页面结构: - * 1. 顶部标题 + 时间范围选择 - * 2. 三张统计卡(总收入 / 总提现 / 平台余额) - * 3. 月度收支趋势(echarts 柱状 + 折线组合图) - * 4. 月度收支明细(表格) */ export default defineComponent({ name: 'FinanceReports', setup() { const { - range, - handleRangeChange, + dateRange, + handleDateRangeChange, summary, chartData, detailColumns, detailData, formatMoney, - RANGE_OPTIONS, } = useReportsModel(); - // ===== 组合图(柱状 + 折线,echarts) ===== + // ===== echarts 组合图 ===== const chartRef = ref(); let chartInstance: any = null; @@ -109,11 +104,7 @@ export default defineComponent({ symbol: 'circle', symbolSize: 8, lineStyle: { width: 3, color: '#52c41a' }, - itemStyle: { - color: '#52c41a', - borderWidth: 2, - borderColor: '#fff', - }, + itemStyle: { color: '#52c41a', borderWidth: 2, borderColor: '#fff' }, areaStyle: { color: { type: 'linear', @@ -136,17 +127,13 @@ export default defineComponent({ const renderChart = () => { if (!chartRef.value) return; - if (!chartInstance) { - chartInstance = echarts.init(chartRef.value); - } + if (!chartInstance) chartInstance = echarts.init(chartRef.value); chartInstance.setOption(getChartOption()); }; - const handleResize = () => { - chartInstance?.resize(); - }; + const handleResize = () => chartInstance?.resize(); - // ECharts 挂载/销毁 + 窗口 resize 监听 + // ECharts 挂载/销毁 useEffect(() => { const el = chartRef.value; if (!el) return; @@ -170,24 +157,9 @@ export default defineComponent({ }); return () => { - /** 根据增长率构建箭头 + 颜色 */ - const changeDesc = (rateStr: string | undefined, fallbackRate: number | null) => { - if (rateStr === undefined && fallbackRate !== null) rateStr = String(fallbackRate); - if (rateStr == null || rateStr === '' || isNaN(parseFloat(rateStr))) - return { desc: '= 总收入 - 提现金额', descColor: 'rgba(0, 0, 0, 0.55)' }; - const rate = parseFloat(rateStr); - const arrow = rate > 0 ? '↑' : rate < 0 ? '↓' : ''; - const sign = rate > 0 ? '+' : ''; - const absRate = Math.abs(rate).toFixed(2); - return { - desc: rate === 0 ? `→ 与上月持平` : `${arrow} 较上月 ${sign}${absRate}%`, - descColor: rate > 0 ? '#52c41a' : rate < 0 ? '#ff4d4f' : 'rgba(0, 0, 0, 0.55)', - }; - }; - const s = summary.value; - /** 顶部 3 张统计卡配置 */ + /** 顶部 3 张统计卡 */ const statCards = [ { key: 'totalIncome', @@ -195,7 +167,6 @@ export default defineComponent({ value: s.totalIncome, bgColor: '#f6ffed', accentColor: '#52c41a', - ...changeDesc(s.totalIncomeTendency, null), }, { key: 'totalWithdraw', @@ -203,7 +174,6 @@ export default defineComponent({ value: s.totalWithdraw, bgColor: '#fffbe6', accentColor: '#faad14', - ...changeDesc(s.totalWithdrawTendency, null), }, { key: 'totalBalance', @@ -211,13 +181,12 @@ export default defineComponent({ value: s.totalBalance, bgColor: '#e6f4ff', accentColor: '#1677ff', - ...changeDesc(undefined, null), }, ]; return (
- {/* ===== 顶部标题 + 时间范围 ===== */} + {/* ===== 顶部标题 + 时间段选择 ===== */}
财务报表
@@ -225,11 +194,12 @@ export default defineComponent({ 平台资金流水概览,包括收入、退款、提现、用户余额等核心财务指标
-