ggfwjsc/src/view/echarts_hygiene/pie2.vue

224 lines
4.9 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div ref="chart" style="width: 100%; height: 260px"></div>
</template>
<script setup>
import { onMounted, reactive, ref, onBeforeMount, defineProps } from "vue";
// 局部引入echarts核心模块
import * as echarts from "echarts";
const props = defineProps({
list: {
type: Array,
default: () => [],
},
year: {
type: Array,
default: () => [],
},
});
const data = reactive({
list: [],
zgffje: [], //职工医疗保险发放人次
cxffje: [], //城乡医疗保险发放人次
year: [],
option: {},
bg: [],
});
const chart = ref(); // 创建DOM引用
const getOption = () => {
data.option = {
tooltip: {
trigger: "axis",
padding: [20, 10, 20, 10],
formatter: "{b0}<br />{a1}:{c1} <br />{a2}:{c2} ",
},
legend: {
data: ["职工医疗保险金额", "城乡医疗保险金额"],
top: "3%",
right: "25%",
textStyle: {
fontSize: 16,
color: "#ffffff",
},
},
grid: {
top: "25%",
left: "1%",
right: "5%",
bottom: "0%",
containLabel: true,
},
xAxis: {
type: "category",
// boundaryGap: false,
data: data.year,
axisLabel: {
//坐标轴刻度标签的相关设置
textStyle: {
fontSize: 16,
color: "#ffffff",
},
},
},
yAxis: [
{
name: "职工医疗保险金额",
type: "value",
nameTextStyle: {
// 设置Y轴名称的样式
fontSize: 14, // 这里设置字体大小为20
},
splitLine: {
show: true,
lineStyle: {
color: "rgba(226, 226, 226, 0.3)",
width: 1,
},
},
axisLabel: {
//坐标轴刻度标签的相关设置
textStyle: {
fontSize: 16,
color: "#ffffff",
},
},
axisLine: {
//y轴线的颜色以及宽度
show: false,
lineStyle: {
color: "#ffffff",
fontSize: 16,
width: 1,
type: "solid",
},
},
},
{
name: "城乡医疗保险金额",
type: "value",
min: 0, // 设置Y轴最小值
max: function (value) {
// 自定义Y轴最大值确保数据点显示在顶部
return Math.ceil(Math.max(value.max, value.max * 1.5) / 50) * 50;
},
splitLine: {
show: false,
lineStyle: {
color: "rgba(226, 226, 226, 0.3)",
width: 1,
},
},
nameTextStyle: {
// 设置Y轴名称的样式
fontSize: 14, // 这里设置字体大小为20
},
axisLabel: {
//坐标轴刻度标签的相关设置
textStyle: {
fontSize: 16,
color: "#ffffff",
},
},
axisLine: {
//y轴线的颜色以及宽度
show: false,
lineStyle: {
color: "#ffffff",
fontSize: 16,
width: 1,
type: "solid",
},
},
},
],
series: [
{
name: "背景",
type: "bar",
data: data.bg,
showBackground: true,
backgroundStyle: {
color: "rgba(180, 180, 180, 0.2)",
},
},
{
yAxisIndex: 0,
name: "职工医疗保险金额",
type: "line",
symbol: "emptyCircle",
symbolSize: 10,
itemStyle: {
borderColor: "#00FCFF",
borderWidth: 1,
color: "#00FCFF",
},
label: {
show: true,
color: "#ffffff",
position: "top",
formatter: function (data) {
return data.value;
},
},
data: data.zgffje,
},
{
yAxisIndex: 1,
name: "城乡医疗保险金额",
type: "line",
symbol: "emptyCircle",
symbolSize: 10,
itemStyle: {
borderColor: "#2468FF",
borderWidth: 1,
color: "#2468FF",
},
label: {
show: true,
color: "#ffffff",
position: "bottom",
formatter: function (data) {
return data.value;
},
},
data: data.cxffje,
},
],
};
};
const setChart = () => {
var myChart = echarts.init(chart.value);
myChart.setOption(data.option);
};
const setChart1 = () => {
data.zgffje = [];
data.cxffje = [];
data.bg = [];
data.list.forEach((item) => {
data.zgffje.push(item.zgffje);
data.cxffje.push(item.cxffje);
data.bg.push("");
});
};
onBeforeMount(() => {
setTimeout(() => {
data.list = props.list;
data.year = props.year;
if (data.list.length !== 0) {
// console.log("城乡医疗保险金额", data.list, data.year);
setChart1();
getOption();
setChart();
}
}, 600);
});
</script>
<style scoped></style>