Browse Source

治疗统计(治疗类型、治疗效果

newMaster
1747191978@qq.com 4 months ago
parent
commit
5b64c1d708
  1. 14
      acupuncture-前台/src/api/indexCom.js
  2. 6
      acupuncture-前台/src/views/index.vue
  3. 620
      acupuncture-前台/src/views/indexCom/XGZL.vue
  4. 157
      acupuncture-前台/src/views/indexCom/index.js

14
acupuncture-前台/src/api/indexCom.js

@ -122,4 +122,18 @@ export function zlInfo(data) {
}); });
} }
// 治疗类型 // 治疗类型
export function zlType(data) {
return request({
url: "/statistics/zlType",
method: "post",
data: data,
});
}
// 随访分布 // 随访分布
export function sffb(data) {
return request({
url: "/statistics/sffb",
method: "post",
data: data,
});
}

6
acupuncture-前台/src/views/index.vue

@ -23,17 +23,17 @@
</el-card> </el-card>
<JM ref="JM"></JM> <JM ref="JM"></JM>
</div> </div>
<!-- <div> <div>
<el-card shadow="always"> <el-card shadow="always">
<search <search
@radio-change="radioChange" @radio-change="radioChange"
@picker-change="pickerChage" @picker-change="pickerChage"
title="血管内治疗统计" title="治疗类型统计"
type="3" type="3"
></search> ></search>
</el-card> </el-card>
<XGZL ref="XGZL"></XGZL> <XGZL ref="XGZL"></XGZL>
</div> --> </div>
</div> </div>
</template> </template>

620
acupuncture-前台/src/views/indexCom/XGZL.vue

@ -1,324 +1,312 @@
<template> <template>
<div class="app-container"> <div>
<!-- 静脉溶栓 数据对比 --> <div class="app-container">
<div class="dis" style="width: 100%"> <div class="dis" style="width: 100%">
<div style="flex: 1"> <div style="flex: 1; margin-right: 20px">
<el-card shadow="always"> <el-card shadow="always">
<div class="dis title-box"> <div class="dis title-box">
<span class="header-title">血管内治疗率 </span> <span class="header-title">治疗类型分布</span>
</div> <div class="dis">
<!-- 统计图 --> <div class="dian-box dis">
<div style="height: 300px" v-loading="loading"> <div class="dian-box dis">
<div id="XGZL" style="width: 100%"></div> <span class="dian" style="background: #91CC75"></span>
</div> 中西医结合
</el-card> </div>
</div> <span class="dian" style="background: #5470C6"></span>
<div style="flex: 1; margin-left: 20px"> 纯中医
<el-card shadow="always"> </div>
<div class="dis title-box"> </div>
<span class="header-title">数据对比</span> </div>
<div class="dis"> <div style="height: 300px" v-loading="loading">
<div class="dian-box dis"> <div id="healType" style="width: 100%"></div>
<span class="dian" style="background: #00d1a1"></span> </div>
桥接治疗人数 </el-card>
</div> </div>
<div class="dian-box dis"> <div style="flex: 1">
<span class="dian" style="background: #4f8bff"></span> <el-card shadow="always">
非桥接治疗人数 <div class="dis title-box">
</div> <span class="header-title">病种方法分布</span>
</div> <div class="dis"></div>
</div> </div>
<!-- 统计图 --> <div style="height: 300px" v-loading="loading">
<div style="height: 300px" v-loading="loading"> <!-- <div id="diseaseMethod" style="width: 100%"></div> -->
<div id="SJDB" style="width: 100%"></div> </div>
</div> </el-card>
</el-card> </div>
</div> </div>
</div> </div>
<!-- DNT分布 sICH发生率 --> <div class="app-container">
<div class="dis" style="width: 100%"> <div class="dis" style="width: 100%">
<div style="flex: 1"> <div style="flex: 1; margin-right: 20px">
<el-card shadow="always"> <el-card shadow="always">
<div class="dis title-box"> <div class="dis title-box">
<span class="header-title">DPT</span> <span class="header-title">病种穴位分布</span>
<div class="dis"> <div class="dis">
<div class="dian-box dis"> </div>
<span class="dian" style="background: #00d1a1"></span> 60 min </div>
</div> <div style="height: 300px" v-loading="loading">
<div class="dian-box dis"> <!-- <div id="acupoint" style="width: 100%"></div> -->
<span class="dian" style="background: #ffcd6c"></span> 90 min </div>
</div> </el-card>
<div class="dian-box dis"> </div>
<span class="dian" style="background: #a794fe"></span> >90 min <div style="flex: 1">
</div> <el-card shadow="always">
</div> <div class="dis title-box">
</div> <span class="header-title">治疗效果</span>
<!-- 统计图 --> <div class="dis">
<div style="height: 300px" v-loading="loading"> <div class="dian-box dis">
<div id="DPT" style="width: 100%"></div> <div class="dian-box dis">
</div> <span class="dian" style="background: #5C7BD9"></span>
</el-card> 治愈
</div> </div>
<div style="flex: 1; margin-left: 20px"> <div class="dian-box dis">
<el-card shadow="always"> <span class="dian" style="background: #91CC75"></span>
<div class="dis title-box"> 显效
<span class="header-title">PRT</span> </div>
<div class="dis"> <div class="dian-box dis">
<div class="dian-box dis"> <span class="dian" style="background: #FAC858"></span>
<span class="dian" style="background: #a794fe"></span> 60 min 好转
</div> </div>
<div class="dian-box dis"> <div class="dian-box dis">
<span class="dian" style="background: #4f8bff"></span> 90 min <span class="dian" style="background: #EE6666"></span>
</div> 无效
<div class="dian-box dis"> </div>
<span class="dian" style="background: #ffcd6c"></span> >90 min </div>
</div> </div>
</div> </div>
</div> <div style="height: 300px" v-loading="loading">
<!-- 统计图 --> <div id="effect" style="width: 100%"></div>
<div style="height: 300px" v-loading="loading"> </div>
<div id="RPT" style="width: 100%"></div> </el-card>
</div> </div>
</el-card> </div>
</div> </div>
</div> </div>
</div>
</template> </template>
<script> <script>
import * as echarts from "echarts"; import * as echarts from "echarts";
require("echarts/theme/macarons"); // echarts theme require("echarts/theme/macarons"); // echarts theme
import resize from "@/views/dashboard/mixins/resize"; import resize from "@/views/dashboard/mixins/resize";
import { import {
queryDptResult, zlType
queryRptResult, } from "@/api/indexCom.js";
dataComparison, import {
queryXgzlLv, healTypeEcharts,
} from "@/api/indexCom.js"; diseaseMethodEcharts,
import { XGZL, XGSJDB, DPT, RPT } from "./index"; effectEcharts
export default { } from "./index";
name: "Post", export default {
props: ["title"], name: "Post",
mixins: [resize], props: ["title"],
data() { mixins: [resize],
return { data() {
loading: false, return {
DPTvalue: null, queryParams: {
RPTvalue: null, param: {
SJDBvalue: null, startTime: "",
XGZLvalue: null, endTime: "",
queryParams: { },
param: { },
timeType: 4, loading: false,
startTime: "", healTypeValue: null, //
endTime: "", diseaseMethod: null, //
}, effectValue: null, //
}, effectObj:{
}; "zy":"治愈",//
}, "xx":"显效",//
created() { "hz":"好转",//
// this.getData(); "wx":"无效"//
}, }
methods: { };
statistics(_data, _type) { },
this.initial(_data, _type); // created() {
this.loading = true; // this.Linepatient();
this.getData(); // this.getData();
}, },
// methods: {
async getData() { statistics(_data, _type) {
try { this.initial(_data, _type); //
// /DNT this.loading = true;
await queryDptResult(this.queryParams).then((res) => { this.getData(); //
this.DPTvalue = res.data; },
console.log("this.DPTvalue: ", this.DPTvalue); //
this.DPT(); async getData() {
}); try {
//RPT await zlType(this.queryParams).then((res) => {
await queryRptResult(this.queryParams).then((res) => { const {
this.RPTvalue = res.data; bzfffb,
this.RPT(); bzxwfb,
}); zlfy,
// zllxtj,
// await dataComparison(this.queryParams).then((res) => { zlxwfb
// console.log("dataComparison: ", dataComparison); } = res.data;
// this.SJDBvalue = res.date; //
// this.SJDB(); this.healTypeValue = [{
// }); value: zllxtj.zxyjh,
await dataComparison(this.queryParams).then((res) => { name: "中西医结合",
console.log("res1111: ", res); },
this.SJDBvalue = res.data; {
this.SJDB(); value: zllxtj.czy,
}); name: "纯中医",
await queryXgzlLv(this.queryParams).then((res) => { },
this.XGZLvalue = res.data; ]
this.XGZL(); this.handleHealType();
}); //
this.loading = false; // let diseaseMethod = []
} catch (e) { // let index = 0
console.log(e, "e"); // for(let i in bzfffb){
} // for(let k in bzfffb[i]){
}, // console.log(bzfffb[i][k])
// // }
SJDB(_statData) { // index ++
XGSJDB.series[0].data = this.SJDBvalue?.map((item) => { // }
return item.qiaojie; // // this.handleDiseaseMethod()
});
XGSJDB.series[1].data = this.SJDBvalue?.map((item) => { //
return item.falseQiaojie; // this.effectValue = [
}); {
XGSJDB.xAxis[0].data = this.SJDBvalue?.map((item) => { name: '治愈',
return item.date; //X value: zlxwfb.zy
}); },
this.$nextTick(() => { {
// domecharts name: '显效',
var myChart = echarts.init(document.getElementById("SJDB"), null, { value: zlxwfb.xx
height: 300, },
}); {
myChart.setOption(XGSJDB, true); name: '好转',
myChart.resize(); value: zlxwfb.hz
window.onresize = myChart.resize; },
}); {
}, name: '无效',
// value: zlxwfb.wx
XGZL() { }
XGZL.series[0].data = this.XGZLvalue?.map((item) => { ]
return item.decimal; // this.handleEffect()
}); });
XGZL.xAxis.data = this.XGZLvalue?.map((item) => { this.loading = false;
return item.date; //X } catch (e) {}
}); },
this.$nextTick(() => { //
// domecharts handleHealType() {
var myChart = echarts.init(document.getElementById("XGZL"), null, { healTypeEcharts.series[0].data = this.healTypeValue
height: 300, this.$nextTick(() => {
}); var myChart = echarts.init(document.getElementById("healType"), null, {
myChart.setOption(XGZL, true); height: 300,
myChart.resize(); });
window.onresize = myChart.resize; myChart.setOption(healTypeEcharts, true);
}); myChart.resize();
}, window.onresize = myChart.resize;
// DPT });
DPT() { },
DPT.series[0].data = this.DPTvalue?.map((item) => { //
return item.dy60; //<= 60 handleDiseaseMethod() {
}); // diseaseMethodEcharts.series[0].data = this.diseaseMethod
DPT.series[1].data = this.DPTvalue?.map((item) => { this.$nextTick(() => {
return item.dy90; //<= 90 var myChart = echarts.init(document.getElementById("diseaseMethod"), null, {
}); height: 300,
DPT.series[2].data = this.DPTvalue?.map((item) => { });
return item.other; //<= 90 myChart.setOption(diseaseMethodEcharts, true);
}); myChart.resize();
DPT.xAxis[0].data = this.DPTvalue?.map((item) => { window.onresize = myChart.resize;
return item.date; //X });
}); },
this.$nextTick(() => { //
// domecharts handleEffect() {
var myChart = echarts.init(document.getElementById("DPT"), null, { effectEcharts.series[0].data = this.effectValue
height: 300, this.$nextTick(() => {
}); var myChart = echarts.init(document.getElementById("effect"), null, {
myChart.setOption(DPT, true); height: 300,
myChart.resize(); });
window.onresize = myChart.resize; myChart.setOption(effectEcharts, true);
}); myChart.resize();
}, window.onresize = myChart.resize;
// RPT });
RPT(_statData) { },
RPT.series[0].data = this.RPTvalue?.map((item) => { //
return item.dy60; //<= 60 initial(_data, _type) {
}); _data[0] = this.$moment(_data[0]).format("YYYY-MM-DD");
RPT.series[1].data = this.RPTvalue?.map((item) => { _data[1] = this.$moment(_data[1]).format("YYYY-MM-DD");
return item.dy90; //<= 90 this.queryParams.param = {
}); startTime: _data[0] + " " + "00:00:00",
RPT.series[2].data = this.RPTvalue?.map((item) => { endTime: _data[1] + " " + "23:59:59",
return item.other; //> 90 };
}); },
RPT.xAxis[0].data = this.RPTvalue?.map((item) => { //
return item.date; //X getRenew() {
}); this.Linepatient();
this.$nextTick(() => { this.columnar();
// domecharts },
var myChart = echarts.init(document.getElementById("RPT"), null, { },
height: 300, };
});
myChart.setOption(RPT, true);
myChart.resize();
window.onresize = myChart.resize;
});
},
//
initial(_data, _type) {
_data[0] = this.$moment(_data[0]).format("YYYY-MM-DD");
_data[1] = this.$moment(_data[1]).format("YYYY-MM-DD");
this.queryParams.param = {
timeType: _type,
startTime: _data[0] + " " + "00:00:00",
endTime: _data[1] + " " + "23:59:59",
};
},
//
getRenew() {
this.SJDB(); //
this.XGZL(); //
this.DPT();
this.RPT();
},
},
};
</script> </script>
<style scoped src="@/assets/styles/common.css"></style> <style scoped src="@/assets/styles/common.css"></style>
<style scoped> <style scoped>
>>> .el-card__body { >>>.el-card__body {
padding: 10px 0 !important; padding: 10px 0 !important;
} }
.dis {
display: flex; .dis {
} display: flex;
.header-title { }
font-size: 18px;
} .header-title {
.title-box { font-size: 18px;
padding: 10px 20px; }
border-bottom: 1px solid #dfe6ec;
} .title-box {
.dian-box { padding: 10px 20px;
align-items: center; border-bottom: 1px solid #dfe6ec;
} }
.dian {
display: inline-block; .dian-box {
width: 16px; align-items: center;
height: 16px; }
border-radius: 50%;
margin: 0 10px; .dian {
} display: inline-block;
.title-box { width: 16px;
justify-content: space-between; height: 16px;
} border-radius: 50%;
. >>> .el-radio--small.is-bordered { margin: 0 10px;
margin-right: 20px !important; }
margin-left: 0 !important;
} .title-box {
>>> .el-radio__input { justify-content: space-between;
display: none; }
}
>>> .el-radio__label { .>>>.el-radio--small.is-bordered {
padding-left: 5px; margin-right: 20px !important;
} margin-left: 0 !important;
.app-container { }
padding: 0;
} >>>.el-radio__input {
.title { display: none;
display: flex; }
align-items: center;
font-size: 20px; >>>.el-radio__label {
font-weight: 600; padding-left: 5px;
} }
.title-bor {
display: inline-block; .app-container {
height: 20px; padding: 0;
width: 6px; display: flex;
background: #4f8bff; justify-content: space-between;
margin-right: 10px; }
border-radius: 8px;
} .title {
display: flex;
align-items: center;
font-size: 20px;
font-weight: 600;
}
.title-bor {
display: inline-block;
height: 20px;
width: 6px;
background: #4f8bff;
margin-right: 10px;
border-radius: 8px;
}
</style> </style>

157
acupuncture-前台/src/views/indexCom/index.js

@ -573,6 +573,163 @@ export const anxietyEcharts = {
], ],
}; };
// -------- 治疗类型 --------
// 治疗类型
export const healTypeEcharts = {
tooltip: {
trigger: "item",
},
title: {
text: "",
left: "center",
top: "40%",
textStyle: {
textAlign: "center",
color: "#393D4E",
fontSize: 40,
fontWeight: 600,
},
},
grid: {
top: "0%",
left: "0",
right: "0%",
bottom: "0%",
containLabel: true,
},
color: ["#91CC75", "#5470C6"],
series: [
{
type: "pie",
radius: "80%",
avoidLabelOverlap: false,
label: {
show: false,
position: "center",
},
labelLine: {
show: false,
},
data: [],
},
],
};
// 病种方法
export const diseaseMethodEcharts = {
tooltip: {
trigger: "axis",
axisPointer: {
type: "cross",
label: {
backgroundColor: "#6a7985",
},
},
formatter: function (params) {
let res1 = params[0].name;
for (var i = 0, l = params.length; i < l; i++) {
res1 +=
"<br/>" +
`<span style="background:${params[i].color};width:12px;display:inline-block;height:12px;border-radius:50%;margin-right:5px;"></span>` +
params[i].seriesName +
" : " +
params[i].value +
"个";
}
return res1;
},
},
xAxis: {
type: "category",
data: ['肥胖症', '失眠症','其他'],
},
grid: {
top: "12%",
left: "5%",
right: "2%",
bottom: "0%",
containLabel: true,
},
yAxis: {
name: "数量( 个 )",
type: "value",
minInterval: 1,
splitLine: {
show: true,
lineStyle: {
type: "dashed",
},
},
},
series: [
{
name: "数量1:",
data: [1,2],
type: "bar",
barMaxWidth: 24, //柱图宽度
itemStyle: {
normal: {
//这里设置柱形图圆角 [左上角,右上角,右下角,左下角]
barBorderRadius: [50, 50, 0, 0],
},
},
},
{
name: "数量2:",
data: [1,3],
type: "bar",
barMaxWidth: 24, //柱图宽度
itemStyle: {
normal: {
//这里设置柱形图圆角 [左上角,右上角,右下角,左下角]
barBorderRadius: [50, 50, 0, 0],
},
},
},
],
};
// 治疗效果
export const effectEcharts = {
tooltip: {
trigger: "item",
},
title: {
text: "",
left: "center",
top: "40%",
textStyle: {
textAlign: "center",
color: "#393D4E",
fontSize: 40,
fontWeight: 600,
},
},
grid: {
top: "0%",
left: "0",
right: "0%",
bottom: "0%",
containLabel: true,
},
color: ["#5C7BD9", "#91CC75",'#FAC858','#EE6666'],
series: [
{
type: "pie",
radius: "80%",
avoidLabelOverlap: false,
label: {
show: false,
position: "center",
},
labelLine: {
show: false,
},
data: [],
},
],
};
// 患者信息 - 数据分析 // 患者信息 - 数据分析
export const HZXXSJFX = { export const HZXXSJFX = {
tooltip: { tooltip: {

Loading…
Cancel
Save