This commit is contained in:
姚宇浩 2024-07-11 16:57:39 +08:00
parent f28aec9a6c
commit a4b56c284a
5 changed files with 504 additions and 17 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

View File

@ -0,0 +1,259 @@
<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: [],
wgcs: [100,140,230,100,130],
wgje: [150,100,200,14,100],
year: [2020,2021,2022,2023,2024],
option: {},
bg: [0,0,0,0,0],
});
const chart = ref(); // DOM
const getOption = () => {
data.option = {
tooltip: {
trigger: "axis",
formatter: "{b0}<br />{a1}:{c1}次 <br />{a3}:{c3}万元 ",
},
legend: {
data: ["违规次数", "违规金额"],
top: "6%",
right: "11%",
textStyle: {
fontSize: 16,
color: "#ffffff",
},
},
grid: {
top: "23%",
left: "1%",
right: "10%",
bottom: "5%",
containLabel: true,
},
calculable: true,
xAxis: [
{
type: "category",
axisLabel: {
//
textStyle: {
color: "#ffffff",
fontSize: 16,
},
},
data: data.year,
},
{
axisTick: false,
type: "category",
data: data.year,
axisLabel: {
show: false,
},
},
],
yAxis: [
{
type: "value",
splitLine: {
show: true,
lineStyle: {
color: "rgba(226, 226, 226, 0.3)",
width: 1,
},
},
axisLabel: {
//
textStyle: {
color: "#ffffff",
fontSize: 16,
},
},
},
{
type: "value",
min: 0,
max: 100,
splitLine: {
show: false,
lineStyle: {
type: "solid",
color: "rgb(221, 242, 255,0.1)",
},
},
axisLine: {
show: false,
lineStyle: {
type: "dotted",
},
},
axisLabel: {
show: false,
fontSize: 16,
fontFamily: "MicrosoftYaHei",
color: "#ffffff",
lineHeight: 19,
},
},
],
series: [
{
z: 1,
name: "上部1",
type: "pictorialBar",
symbolPosition: "end",
data: data.wgcs,
symbol: "diamond",
symbolOffset: ["-55%", "-50%"],
symbolSize: [15, 10],
itemStyle: {
borderColor: "#2fffa4",
color: "rgba(142, 187, 255, 1)",
},
},
{
z: 1,
name: "违规次数",
type: "bar",
barGap: 0.3 /*多个并排柱子设置柱子之间的间距*/,
data: data.wgcs,
barWidth: "30%",
label: {
show: true,
color: "#ffffff",
position: "top",
},
itemStyle: {
color: {
type: "linear",
x: 0,
x2: 1,
y: 0,
y2: 0,
colorStops: [
{ offset: 0, color: "rgba(142, 187, 255, .7)" },
{ offset: 0.5, color: "rgba(142, 187, 255, .7)" },
{ offset: 0.5, color: "rgba(142, 187, 255, .3)" },
{ offset: 1, color: "rgba(142, 187, 255, .5)" },
],
},
},
},
{
z: 2,
name: "上部1",
type: "pictorialBar",
symbolPosition: "end",
data: data.wgje,
symbol: "diamond",
symbolOffset: ["62%", "-50%"],
symbolSize: [15, 10],
itemStyle: {
borderColor: "#32ffee",
color: "rgba(23, 237, 255, 1)",
},
},
{
z: 2,
name: "违规金额",
type: "bar",
barGap: 0.3 /*多个并排柱子设置柱子之间的间距*/,
data: data.wgje,
barWidth: "30%",
label: {
show: true,
color: "#ffffff",
position: "top",
formatter: function (data) {
return data.value + "万";
},
},
// itemStyle: {
// color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
// {
// offset: 0,
// color: "rgba(23, 237, 255, 1)",
// },
// {
// offset: 1,
// color: "rgba(23, 237, 255, 0.20)",
// },
// ]),
// },
itemStyle: {
color: {
type: "linear",
x: 0,
x2: 1,
y: 0,
y2: 0,
colorStops: [
{ offset: 0, color: "rgba(23, 237, 255, .7)" },
{ offset: 0.5, color: "rgba(23, 237, 255, .7)" },
{ offset: 0.5, color: "rgba(23, 237, 255, .3)" },
{ offset: 1, color: "rgba(23, 237, 255, .5)" },
],
},
},
},
{
type: "bar",
xAxisIndex: 1,
yAxisIndex: 1,
itemStyle: {
color: "rgba(221, 242, 255, 0.1)",
},
data: data.bg.map(() => 100),
barWidth: 40,
},
],
};
};
const setChart = () => {
// Vue3
var myChart = echarts.init(chart.value);
// 使
myChart.setOption(data.option);
};
onBeforeMount(() => {
setTimeout(() => {
// data.list = props.list;
// data.year = props.year;
// data.list.forEach((item) => {
// data.zgffrc.push((item.zgffrc / 10000).toFixed(0));
// data.cxffrc.push((item.cxffrc / 10000).toFixed(0));
// // data.bg.push("");
// });
// console.log(data.zgffrc,data.cxffrc);
getOption();
setChart();
}, 600);
});
</script>
<style scoped>
</style>

View File

@ -0,0 +1,161 @@
<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 chart = ref(); // DOM
const data = reactive({
list: [6280,5924,1824],
year: [2022,2023,2024],
bg:[0,0,0],
option: {},
});
const getOption = () => {
data.option = {
tooltip: {
trigger: "axis",
padding: [20, 10, 20, 10],
formatter: "{b0}<br />{a0}:{c0} ",
},
grid: {
top: "5%",
left: "1%",
right: "10%",
bottom: "3%",
containLabel: true,
},
xAxis: {
type: "category",
// boundaryGap: false,
data: data.year,
// splitArea: {
// show: true,
// interval: '10',
// areaStyle: {
// color: ["rgba(255, 255, 255, 0.10)"],
// width:10,
// },
// },
axisLabel: {
//
textStyle: {
color: "#ffffff",
fontSize: 16,
},
},
},
yAxis: {
type: "value",
splitLine: {
show: true,
lineStyle: {
color: "rgba(226, 226, 226, 0.3)",
width: 1,
},
},
axisLabel: {
//
textStyle: {
color: "#ffffff",
fontSize: 16,
},
},
},
series: [
{
name: "手工零星报销人数",
type: "line",
stack: "Total",
symbol: "emptyCircle",
symbolSize: 10,
label: {
show: true,
color: "#ffffff",
position:'top',
formatter: function (data) {
return data.value;
},
},
itemStyle: {
borderColor: "#00FCFF",
borderWidth: 1,
color: "#00FCFF",
},
// areaStyle: {
// color: "#F4F65B",
// normal: {
// //线4x0,y0,x2,y2(0~1);true
// color: new echarts.graphic.LinearGradient(
// 0,
// 0,
// 0,
// 1,
// [
// {
// offset: 0,
// // color: 'RGBA(184, 204, 241, 1)'
// color: "rgba(0, 252, 255, 0.50)",
// },
// {
// offset: 1,
// color: "rgba(0, 252, 255, 0)",
// },
// ],
// false
// ),
// shadowBlur: 0, //shadowBlurshadowColor,shadowOffsetX/Y,
// },
// },
data: data.list,
},
{
name: "背景",
type: "bar",
data: data.bg,
showBackground: true,
backgroundStyle: {
color: "rgba(180, 180, 180, 0.2)",
},
},
],
};
};
const setChart = () => {
// Vue3
var myChart = echarts.init(chart.value);
// 使
myChart.setOption(data.option);
};
onBeforeMount(() => {
setTimeout(() => {
// data.list = props.list;
// data.year = props.year;
getOption();
setChart();
}, 600);
});
</script>
<style scoped>
</style>

View File

@ -1,7 +1,7 @@
<template>
<div class="module">
<div class="displayFlex left_bg">
<div class="flex1" style="flex: 0.5">
<div class="flex1">
<div class="yd_title left_1">
<div class="animate-border">
<i></i>
@ -9,7 +9,7 @@
</div>
<span class="text">
<img
v-if="leftchoose.first == '1' "
v-if="leftchoose.first == '1'"
src="@/assets/images/hygiene/yb_1.png"
class="c"
style="width: 160px"
@ -44,19 +44,42 @@
:list="data.medicalInsurance.ffje"
:year="data.medicalInsurance.year"
></ePie2>
<div></div>
<div class="left_1_xia">
<!-- <div class="left_1_xia_item">
<ePie3
:list="data.medicalInsurance.ffrc"
:year="data.medicalInsurance.year"
></ePie3>
<div class="historyimg">医保基金监管</div>
</div> -->
<div class="left_1_xia_item">
<ePie4 :list="data.lmb.gxyrs" :year="data.lmb.year"></ePie4>
<div class="historyimg">手工零星报销人数</div>
</div>
</div>
</div>
<div class="flex1" style="margin-top: 10px">
<div class="yd_title left_3">
<div class="yd_title " :class="lmb=='糖尿病'? 'left_3': 'left_3_1'" @click="lmbqh">
<!-- <div class="qh" @click="lmbqh">{{ lmb }}</div> -->
<div class="animate-border">
<i></i>
<i></i>
</div>
</div>
<div class="sm_title_1"></div>
<tnb :list="data.lmb.tnbrs" :year="data.lmb.year" v-if="showEchart"></tnb>
<div class="sm_title_2"></div>
<gxy :list="data.lmb.gxyrs" :year="data.lmb.year" v-if="showEchart"></gxy>
<div class="sm_title_1" v-if="lmb != '糖尿病'"></div>
<tnb
:list="data.lmb.tnbrs"
:year="data.lmb.year"
v-if="showEchart && lmb != '糖尿病'"
></tnb>
<div class="sm_title_2" v-if="lmb != '高血压'"></div>
<gxy
:list="data.lmb.gxyrs"
:year="data.lmb.year"
v-if="showEchart && lmb != '高血压'"
></gxy>
</div>
</div>
<div class="displayFlex center_bg">
@ -177,7 +200,11 @@
<i></i>
</div>
</div>
<eP7 :list="data.jktj.jktjrs" :year="data.jktj.year" v-if="showEchart"></eP7>
<eP7
:list="data.jktj.jktjrs"
:year="data.jktj.year"
v-if="showEchart"
></eP7>
</div>
<div class="flex1">
<div class="yd_title last">
@ -205,6 +232,8 @@
<script setup>
import ePie from "./echarts_hygiene/pie.vue";
import ePie2 from "./echarts_hygiene/pie2.vue";
import ePie3 from "./echarts_hygiene/pie3.vue";
import ePie4 from "./echarts_hygiene/pie4.vue";
import eP2 from "./echarts_hygiene/eP2.vue";
import eP3 from "./echarts_hygiene/eP3.vue";
import eP7 from "./echarts_hygiene/eP7.vue";
@ -216,12 +245,21 @@ import tnb from "./echarts_hygiene/tnb.vue";
import gxy from "./echarts_hygiene/gxy.vue";
import { ref, reactive, onMounted, onBeforeMount } from "vue";
import http from "@/utils/request.js";
const showEchart=ref(false)
const lmb = ref("高血压");
const showEchart = ref(false);
const leftchoose = ref({
first: "1",
second: "1",
third: "1",
});
const lmbqh = () => {
if (lmb.value == "高血压") {
lmb.value = "糖尿病";
} else {
lmb.value = "高血压";
}
console.log(lmb.value);
};
const change = (name, index) => {
leftchoose.value[name] = index;
};
@ -272,9 +310,9 @@ onBeforeMount(async () => {
getData();
});
onMounted(() => {
setTimeout(()=>{
startAutoScroll();
},600)
setTimeout(() => {
startAutoScroll();
}, 600);
// console.log(
// mainRef.value.scrollTop,
@ -293,7 +331,7 @@ const getData = async () => {
data.fyglrs = res.data.fyglrs;
data.jktj = res.data.jktj;
data.jkhd = res.data.jkhd;
showEchart.value=true;
showEchart.value = true;
}
});
};
@ -419,7 +457,6 @@ const getData = async () => {
cursor: pointer;
}
}
@keyframes one {
0% {
left: -100%;
@ -550,7 +587,30 @@ const getData = async () => {
background-repeat: no-repeat;
background-size: 100% 100%;
}
.left_1_xia {
margin-top: 10px;
margin-bottom: 10px;
display: flex;
justify-content: space-between;
align-items: center;
.left_1_xia_item {
flex: 1;
display: flex;
flex-direction: column;
align-items: center;
.historyimg {
margin-top: 10px;
padding: 0 25px;
background-image: url(@/assets/images/hygiene/xtgl_1.png);
background-size: 100% 100%;
background-repeat: no-repeat;
font-size: 15px;
color: #ffffff;
line-height: 21px;
letter-spacing: 2px;
}
}
}
// .left_2 {
// background-image: url(@/assets/images/hygiene/left_title_2.png);
// background-repeat: no-repeat;
@ -558,9 +618,16 @@ const getData = async () => {
// }
.left_3 {
background-image: url(@/assets/images/hygiene/new_lmb.png);
background-image: url(@/assets/images/hygiene/gxy_new.png);
background-repeat: no-repeat;
background-size: 100% 100%;
cursor: pointer;
}
.left_3_1 {
background-image: url(@/assets/images/hygiene/tnb_new.png);
background-repeat: no-repeat;
background-size: 100% 100%;
cursor: pointer;
}
.center_1 {