You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
211 lines
4.0 KiB
211 lines
4.0 KiB
<template>
|
|
|
|
<div class="cash-management">
|
|
<div class="cash-title">
|
|
<div class="text1"> 现金管理
|
|
<span class="text1-update-time">最后更新时间:{{
|
|
workDataUpdateTime && workDataUpdateTime !== '1970-01-01 08:00:00' ? workDataUpdateTime : '该地区暂无数据'
|
|
}}</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="text2"><span class="text2-income">总营收:{{ cashData.totalIncome }}</span></div>
|
|
|
|
|
|
<div class="chart-container">
|
|
<!-- 左侧数据列表 -->
|
|
<div class="market-data">
|
|
<div v-for="market in cashData.markets" :key="market.name" class="market-item">
|
|
<span class="market-name">{{ market.name }}:</span>
|
|
<span class="market-value">{{ market.value.toLocaleString() }}新币</span>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- 图表区域 -->
|
|
<div ref="chartRef" class="chart"></div>
|
|
</div>
|
|
|
|
</div>
|
|
</template>
|
|
|
|
<script setup>
|
|
import * as echarts from 'echarts'
|
|
import {ref, onMounted} from 'vue'
|
|
|
|
// 模拟数据
|
|
const cashData = ref({
|
|
updateTime: '2025-09-24 12:00:00',
|
|
totalIncome: 1200000,
|
|
markets: [
|
|
{name: '北京', value: 450000},
|
|
{name: '上海', value: 300000},
|
|
{name: '广州', value: 200000},
|
|
{name: '深圳', value: 150000},
|
|
{name: '其他', value: 100000}
|
|
]
|
|
})
|
|
|
|
const chartRef = ref(null)
|
|
let chartInstance = null
|
|
|
|
const renderChart = () => {
|
|
if (!chartInstance && chartRef.value) {
|
|
chartInstance = echarts.init(chartRef.value)
|
|
}
|
|
const option = {
|
|
tooltip: {trigger: 'item'},
|
|
legend: {
|
|
bottom: 5, // 增加底部距离的
|
|
left: 'center'
|
|
},
|
|
|
|
series: [
|
|
{
|
|
label: {show: false},
|
|
|
|
type: 'pie',
|
|
radius: ['40%', '70%'],
|
|
data: cashData.value.markets,
|
|
center: ['60%', '45%'] //图表靠右一点
|
|
}
|
|
]
|
|
}
|
|
chartInstance.setOption(option)
|
|
}
|
|
|
|
onMounted(() => {
|
|
renderChart()
|
|
})
|
|
</script>
|
|
|
|
<style scoped>
|
|
/* 背景卡片大小 */
|
|
.cash-management {
|
|
margin: 10px 5px;
|
|
width: 100%;
|
|
height: 50vh;
|
|
flex-shrink: 0;
|
|
border-radius: 8px;
|
|
background: #E7F4FD;
|
|
box-shadow: 0 2px 2px 0 #00000040;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
}
|
|
|
|
/*
|
|
.cash-card {
|
|
width: 100%;
|
|
}
|
|
|
|
.chart {
|
|
width: 100%;
|
|
height: 200px;
|
|
} */
|
|
|
|
|
|
.cash-title {
|
|
width: 100%;
|
|
height: 5vh;
|
|
flex-shrink: 0;
|
|
border-radius: 8px;
|
|
background: linear-gradient(90deg, #E4F0FC 0%, #C6ADFF 50%, #E4F0FC 100%);
|
|
box-shadow: 0 2px 2px 0 #00152940;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
.text1 {
|
|
color: #040a2d;
|
|
font-family: "PingFang SC";
|
|
font-size: 28px;
|
|
font-style: normal;
|
|
font-weight: 900;
|
|
line-height: 31.79px;
|
|
}
|
|
|
|
.text1-update-time {
|
|
width: 100%;
|
|
height: 26px;
|
|
flex-shrink: 0;
|
|
color: #040a2d;
|
|
font-family: "PingFang SC";
|
|
font-size: 20px;
|
|
font-style: normal;
|
|
font-weight: 700;
|
|
line-height: 31.79px;
|
|
}
|
|
|
|
/* 总收入的渐变框 */
|
|
.text2 {
|
|
margin: 13px;
|
|
width: 95%;
|
|
height: 48px;
|
|
flex-shrink: 0;
|
|
border-radius: 8px;
|
|
background: linear-gradient(90deg, #E4F0FC 0%, #C1DCF8 50%, #E4F0FC 100%);
|
|
box-shadow: 0 2px 2px 0 #00152940;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
/* 总收入字体 */
|
|
.text2-income {
|
|
width: 215px;
|
|
height: 26px;
|
|
flex-shrink: 0;
|
|
color: #040a2d;
|
|
font-family: "PingFang SC";
|
|
font-size: 20px;
|
|
font-style: normal;
|
|
font-weight: 900;
|
|
line-height: 31.79px;
|
|
}
|
|
|
|
/* 图表容器 */
|
|
.chart-container {
|
|
display: flex;
|
|
align-items: center;
|
|
width: 100%;
|
|
height: 100%;
|
|
padding: 10px;
|
|
}
|
|
|
|
/* 左侧数据列表,使用指定的样式 */
|
|
.market-data {
|
|
display: flex;
|
|
width: 180px;
|
|
flex-direction: column;
|
|
align-items: flex-start;
|
|
gap: 20px;
|
|
padding: 10px;
|
|
margin-left: 40px;
|
|
}
|
|
|
|
.market-item {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
width: 100%;
|
|
font-family: "PingFang SC";
|
|
font-size: 16px;
|
|
color: #040a2d;
|
|
}
|
|
|
|
.market-name {
|
|
white-space: nowrap;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.market-value {
|
|
font-weight: 500;
|
|
}
|
|
|
|
/* 图表样式 */
|
|
.chart {
|
|
flex: 1;
|
|
height: 300px;
|
|
margin-top: 10px;
|
|
}
|
|
</style>
|