检验申请
This commit is contained in:
parent
fe7bc00f03
commit
2f88d8356b
@ -311,8 +311,10 @@ const saveHandle = () => {
|
||||
amount: item.amount,
|
||||
applyid: labpat.value.applyid,
|
||||
uid: item.uid
|
||||
}))
|
||||
})),
|
||||
barCodeList: [...new Set(sqxmCzList.value.map(item => item.barcode).filter(Boolean))]
|
||||
}
|
||||
|
||||
saveLoading.value = true
|
||||
saveReqInfo(data).then(res => {
|
||||
if (res.code == 0) {
|
||||
|
||||
@ -220,6 +220,9 @@
|
||||
height: 68vh;
|
||||
} */
|
||||
|
||||
.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_pai ul li {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_pai ul li .liIn {
|
||||
display: flex;
|
||||
@ -228,7 +231,6 @@
|
||||
color: #fff;
|
||||
font-size: 1.125rem;
|
||||
font-weight: 700;
|
||||
height: 2.5rem;
|
||||
}
|
||||
|
||||
.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_pai ul li .liIn .liIn_left {
|
||||
@ -250,25 +252,7 @@
|
||||
margin: auto 0;
|
||||
}
|
||||
|
||||
.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_pai ul li .liIn2 .liIn_left .bot {
|
||||
background: #e7feb8;
|
||||
}
|
||||
|
||||
.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_pai ul li .liIn3 .liIn_left .bot {
|
||||
background: #fdea8a;
|
||||
}
|
||||
|
||||
.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_pai ul li .liIn4 .liIn_left .bot {
|
||||
background: #8ff9f8;
|
||||
}
|
||||
|
||||
.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_pai ul li .liIn5 .liIn_left .bot {
|
||||
background: #d890fa;
|
||||
}
|
||||
|
||||
.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_pai ul li .liIn6 .liIn_left .bot {
|
||||
background: #05d1fc;
|
||||
}
|
||||
|
||||
.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_pai ul li .liIn .liIn_left zi {}
|
||||
|
||||
@ -289,36 +273,30 @@
|
||||
-webkit-animation: widthMove1 2s ease-in-out;
|
||||
}
|
||||
|
||||
.leftMain_middle .line_lineIn_sy {
|
||||
width: 100%;
|
||||
height: 1.25rem;
|
||||
background: #fcae05;
|
||||
border-radius: 125rem;
|
||||
-webkit-animation: widthMove2 2s ease-in-out;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.line_lineIn .per {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 50%;
|
||||
}
|
||||
|
||||
.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_pai ul li .liIn2 .liIn_line .line_lineIn {
|
||||
background: #e7feb8;
|
||||
-webkit-animation: widthMove2 2s ease-in-out;
|
||||
.line_lineIn_sy .per {
|
||||
position: absolute;
|
||||
top: -1px;
|
||||
left: 30%;
|
||||
font-size: 17px;
|
||||
}
|
||||
|
||||
.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_pai ul li .liIn3 .liIn_line .line_lineIn {
|
||||
background: #fdea8a;
|
||||
-webkit-animation: widthMove3 2s ease-in-out;
|
||||
}
|
||||
|
||||
.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_pai ul li .liIn4 .liIn_line .line_lineIn {
|
||||
background: #8ff9f8;
|
||||
-webkit-animation: widthMove4 2s ease-in-out;
|
||||
}
|
||||
|
||||
.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_pai ul li .liIn5 .liIn_line .line_lineIn {
|
||||
background: #d890fa;
|
||||
-webkit-animation: widthMove5 2s ease-in-out;
|
||||
}
|
||||
|
||||
.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_pai ul li .liIn6 .liIn_line .line_lineIn {
|
||||
background: #05d1fc;
|
||||
-webkit-animation: widthMove6 2s ease-in-out;
|
||||
}
|
||||
|
||||
@-webkit-keyframes widthMove1 {
|
||||
0% {
|
||||
@ -326,17 +304,17 @@
|
||||
}
|
||||
|
||||
100% {
|
||||
width: 98.5%;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
@-webkit-keyframes widthMove2 {
|
||||
0% {
|
||||
width: 0%;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
100% {
|
||||
width: 88.5%;
|
||||
width: 0%;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -51,7 +51,7 @@
|
||||
<span class="border_bg_rightBottom"></span>
|
||||
</div>
|
||||
<div class="leftMain_middle_leftIn leftMain_middle_leftIn_zhe">
|
||||
<h3>近一年送检标本数量趋势图</h3>
|
||||
<h3>当年送检标本数量趋势图</h3>
|
||||
<div class="biaoge" style="width:100%; " ref="chartmain_zhe" id="chartmain_zhe"></div>
|
||||
<span class="border_bg_leftTop"></span>
|
||||
<span class="border_bg_rightTop"></span>
|
||||
@ -77,6 +77,16 @@
|
||||
</div>
|
||||
<p class="num">{{ item.sl }}</p>
|
||||
</div>
|
||||
|
||||
<div class="liIn" v-if="item.flag">
|
||||
<div class="liIn_left"> </div>
|
||||
<div class="liIn_line">
|
||||
<div class="line_lineIn_sy" :style="{ width: ` ${item.remainPer}` }">
|
||||
<div class="per">剩余 {{ item.remain }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<p class="num"> </p>
|
||||
</div>
|
||||
</li>
|
||||
<!-- </Vue3SeamlessScroll> -->
|
||||
</ul>
|
||||
@ -140,14 +150,14 @@ const sourceYear = ref([
|
||||
|
||||
|
||||
const dayCounts = ref([
|
||||
{ dict_name: '检验申请', sl: 0, percent: '0%' },
|
||||
{ dict_name: '标本采集', sl: 0, percent: '0%' },
|
||||
{ dict_name: '标本签收', sl: 0, percent: '0%' },
|
||||
{ dict_name: '标本送检', sl: 0, percent: '0%' },
|
||||
{ dict_name: '上机检测', sl: 0, percent: '0%' },
|
||||
{ dict_name: '结果审核', sl: 0, percent: '0%' },
|
||||
{ dict_name: '申请作废', sl: 0, percent: '0%' },
|
||||
{ dict_name: '标本退回', sl: 0, percent: '0%' },
|
||||
{ dict_name: '检验申请', sl: 0, percent: '0%', flag: false },
|
||||
{ dict_name: '标本采集', sl: 0, percent: '0%', remain: 0, remainPer: '0%', flag: true },
|
||||
{ dict_name: '标本送检', sl: 0, percent: '0%', remain: 0, remainPer: '0%', flag: true },
|
||||
{ dict_name: '标本签收', sl: 0, percent: '0%', remain: 0, remainPer: '0%', flag: true },
|
||||
{ dict_name: '上机检测', sl: 0, percent: '0%', remain: 0, remainPer: '0%', flag: true },
|
||||
{ dict_name: '结果审核', sl: 0, percent: '0%', remain: 0, remainPer: '0%', flag: true },
|
||||
{ dict_name: '申请作废', sl: 0, percent: '0%', flag: false },
|
||||
{ dict_name: '标本退回', sl: 0, percent: '0%', flag: false },
|
||||
])
|
||||
|
||||
const listData: any = ref([])
|
||||
@ -277,6 +287,33 @@ const getEcharts3 = (data) => {
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis', // 或 'item',根据图表类型选择
|
||||
formatter: function (params: any[]) {
|
||||
let total = 0;
|
||||
params.forEach(p => {
|
||||
// 兼容 null / undefined,全部转为0参与求和
|
||||
const val = p.value ?? 0;
|
||||
const num = Number(val);
|
||||
if (!isNaN(num)) {
|
||||
total += num;
|
||||
}
|
||||
})
|
||||
// 头部:月份居左,总数居右
|
||||
let res = `<div style="display:flex;justify-content:space-between;color:#333;font-weight:700;margin-bottom:4px">
|
||||
<span>${params[0].axisValue}</span>
|
||||
<span>总数:${total}</span>
|
||||
</div>`;
|
||||
|
||||
params.forEach(p => {
|
||||
const val = p.value;
|
||||
// null / undefined 显示 "-",否则显示原始数值
|
||||
const showVal = (val === null || val === undefined) ? '0' : val;
|
||||
res += `<div style="display:flex;justify-content:space-between;margin:3px 0;color:#333">
|
||||
<span>${p.marker}${p.seriesName}</span>
|
||||
<span style="margin-left: 45px;">${showVal}</span>
|
||||
</div>`;
|
||||
})
|
||||
return res;
|
||||
}
|
||||
},
|
||||
legend: {
|
||||
type: 'scroll', // 开启滚动
|
||||
@ -377,29 +414,33 @@ const getDataInfo = () => {
|
||||
// 当日送检样本情况
|
||||
// 匹配流程数量&百分比
|
||||
const baseNum = res.data.regStatStatusTotal['检验申请'] || 0
|
||||
// dayCounts.value = Object.entries(res.data.regStatStatusTotal).map(([dict_name, sl]) => {
|
||||
// if (dict_name === '检验申请') {
|
||||
// return { dict_name, sl, percent: '100%' }
|
||||
// }
|
||||
// let p = 0
|
||||
// if (baseNum > 0) {
|
||||
// p = (sl as number) / baseNum * 100
|
||||
// }
|
||||
// return {
|
||||
// dict_name,
|
||||
// sl,
|
||||
// percent: p.toFixed(2) + '%'
|
||||
// }
|
||||
// })
|
||||
|
||||
dayCounts.value.forEach(item => {
|
||||
item.sl = res.data.regStatStatusTotal[item.dict_name] || 0
|
||||
//检验申请占比显示100%
|
||||
if (item.dict_name == '检验申请') {
|
||||
item.percent = '100%'
|
||||
return
|
||||
}
|
||||
item.percent = (item.sl / baseNum * 100).toFixed(2) + '%'
|
||||
if (item.percent.endsWith('.00%')) {
|
||||
item.percent = item.percent.replace('.00%', '%')
|
||||
}
|
||||
})
|
||||
const flowOrder = dayCounts.value.map(item => item.dict_name).filter(name => name !== '申请作废' && name !== '标本退回');
|
||||
//初始化全部remain=0
|
||||
dayCounts.value.forEach(d => d.remain = 0);
|
||||
for (let i = 1; i < flowOrder.length; i++) {
|
||||
const prevName = flowOrder[i - 1];
|
||||
const currName = flowOrder[i];
|
||||
const prevItem = dayCounts.value.find(x => x.dict_name === prevName);
|
||||
const currItem = dayCounts.value.find(x => x.dict_name === currName);
|
||||
if (prevItem && currItem) {
|
||||
currItem.remain = prevItem.sl - currItem.sl;
|
||||
if (currItem.remain < 0) currItem.remain = 0;
|
||||
|
||||
if (prevItem.sl > 0) {
|
||||
currItem.remainPer = (currItem.remain / prevItem.sl * 100).toFixed(2) + '%';
|
||||
} else {
|
||||
currItem.remainPer = "0%";
|
||||
}
|
||||
}
|
||||
}
|
||||
getEcharts1(res.data.regStatMonth || [])
|
||||
getEcharts3(res.data.regStatHospYear || [])
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user