| | |
| | | import Echarts from '@/components/Echarts/echarts.vue' |
| | | import PanelHeader from './PanelHeader.vue' |
| | | import ProductTypeSwitch from './ProductTypeSwitch.vue' |
| | | import { rawMaterialPurchaseAmountRatio } from '@/api/viewIndex.js' |
| | | import { expenseCompositionAnalysis } from '@/api/viewIndex.js' |
| | | |
| | | /** |
| | | * @introduction 把数组中key值相同的那一项提取出来,组成一个对象 |
| | |
| | | const amountType = ref(1) |
| | | |
| | | const amountTypeOptions = [ |
| | | { label: 1, text: '支出' }, |
| | | { label: 2, text: '收入' }, |
| | | { label: 1, text: '产品' }, |
| | | { label: 2, text: '客户' }, |
| | | ] |
| | | |
| | | // 数据列表(来自接口) |
| | |
| | | formatter: function (name) { |
| | | const item = landObjData.value[name] |
| | | if (!item) return name |
| | | return `{title|${name}}{value|${item.value}}{unit|元}{percent|${item.rate}}{unit|%}` |
| | | const num = Number(item.value) |
| | | const isWan = num > 10000 |
| | | const displayValue = isWan ? (num / 10000).toFixed(2) : num |
| | | const displayUnit = isWan ? '万元' : '元' |
| | | return `{title|${name}}{value|${displayValue}}{unit|${displayUnit}}{percent|${item.rate}}{unit|%}` |
| | | }, |
| | | textStyle: { |
| | | rich: { |
| | |
| | | } |
| | | |
| | | const fetchData = () => { |
| | | // 目前接口只有支出构成占比,先忽略类型参数 |
| | | // 预留扩展:后续可根据 amountType 切不同接口 |
| | | rawMaterialPurchaseAmountRatio() |
| | | expenseCompositionAnalysis({ type: amountType.value }) |
| | | .then((res) => { |
| | | if (res.code === 200 && Array.isArray(res.data)) { |
| | | const items = res.data |
| | |
| | | } |
| | | }) |
| | | .catch((err) => { |
| | | console.error('获取原材料采购金额占比失败:', err) |
| | | console.error('获取费用构成分析失败:', err) |
| | | }) |
| | | } |
| | | |