feat(largeScreen): 大屏展示功能开发

- 新增 RevenueContractCard 组件,用于展示收入、支出等合同数据
- 实现 bottomboxconpoent 组件的通用化,支持自定义标题、数值等
- 在 centerPage 中集成 RevenueContractCard 组件,展示大屏数据
- 更新 rightPage 组件,添加实际数据请求和展示
- 优化 optionList 中的图表配置,提高图表可读性
This commit is contained in:
tcy
2025-08-22 16:37:14 +08:00
parent c1512c5a34
commit ad04cff917
6 changed files with 144 additions and 76 deletions

View File

@ -45,38 +45,48 @@ import TitleComponent from './TitleComponent.vue';
import EchartBox from '@/components/EchartBox/index.vue';
import { getLineOption, getBarOptions } from './optionList';
import ProgressComponent from './ProgressComponent.vue';
import { monthMoney, monthCash } from '@/api/largeScreen';
const lineOption = ref();
const barOption = ref();
const getCapitalData = (data?: any) => {
const getCapitalData = async () => {
const { data } = await monthMoney()
const month = data.map((item: any) => item.month);
const income = data.map((item: any) => item.incomeAmount);
const expenses = data.map((item: any) => item.expensesAmount);
const profit = data.map((item: any) => item.profitAmount);
// const xData = data.map((item) => item.time);
// const yData = data.map((item) => item.content);
const lineData = {
xLabel: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
xLabel: month,
line1: [
[100, 200, 150, 300, 250, 350, 400, 350, 450, 500, 400, 550],
[220, 250, 230, 280, 270, 300, 350, 320, 380, 400, 450, 500],
[300, 350, 320, 380, 400, 450, 500, 480, 520, 550, 600, 650]
income,
expenses,
profit
]
// line2: ['20', '50', '12', '65', '30', '60']
};
lineOption.value = getLineOption(lineData);
};
const getTurnoverList = (data?: any) => {
const getTurnoverList = async () => {
// const xData = data.map((item) => item.time);
// const yData = data.map((item) => {
// // 先将content转换为数字再调用toFixed
// const num = Number(item.content);
// return isNaN(num) ? 0 : Number(num.toFixed(2));
// });
const { data } = await monthCash()
const month = data.map((item: any) => item.month);
const income = data.map((item: any) => item.incomeAmount);
const expenses = data.map((item: any) => item.expensesAmount);
// const profit = data.map((item: any) => item.profitAmount);
const barData = {
name: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
name: month,
value: [
[2, 5, 15, 30, 25, 35, 40, 35, 45, 50, 40, 55],
[4, 3, 6, 11, 15, 22, 30, 14, 48, 22, 25, 60]
income,
expenses
]
};
barOption.value = getBarOptions(barData);