From 9135933a27832ec2234b5e074d88192fb4bf52d1 Mon Sep 17 00:00:00 2001
From: zhangchen <1652267879@qq.com>
Date: 星期四, 24 七月 2025 00:48:01 +0800
Subject: [PATCH] ID1825-治疗中暂存
---
src/views/mobile/bedsideAuxiliaryScreen/components/DoctorAdvice/type.ts | 375 +++++++++++++++
src/views/mobile/bedsideAuxiliaryScreen/components/ProgressBar.vue | 45 +
src/store/type/bedsideAuxiliaryScreen.type.ts | 124 +++--
src/views/mobile/bedsideAuxiliaryScreen/components/DoctorAdvice/index.vue | 184 +++++++
src/views/mobile/bedsideAuxiliaryScreen/pages/UnderTreatment.vue | 691 +++++++++++++++++++++++++++-
src/img/add.png | 0
6 files changed, 1,339 insertions(+), 80 deletions(-)
diff --git a/src/img/add.png b/src/img/add.png
new file mode 100644
index 0000000..f3fcd48
--- /dev/null
+++ b/src/img/add.png
Binary files differ
diff --git a/src/store/type/bedsideAuxiliaryScreen.type.ts b/src/store/type/bedsideAuxiliaryScreen.type.ts
index e6c18f8..13631fa 100644
--- a/src/store/type/bedsideAuxiliaryScreen.type.ts
+++ b/src/store/type/bedsideAuxiliaryScreen.type.ts
@@ -32,6 +32,11 @@
type PushType = "床旁血压计" | "中央监控大屏信息";
+export interface KtvItem {
+ 时间: string;
+ ktv: string;
+}
+
export interface DialysisStatus {
clientCode: string;
deviceHospitalCode: string;
@@ -39,9 +44,11 @@
iot_当前脱水量: number | null;
iot_脱水目标量: number | null;
iot_脱水速率: number | null;
+ iot_透析液流速: number | null;
iot_跨膜压: number | null;
iot_透析时间: number | null;
iot_静脉压: number | null;
+ iot_血流量: number | null;
sortOrder: number | null;
txTime: number | null;
上次透后称重: number | null;
@@ -50,7 +57,7 @@
分区编号: string;
处方脱水量: number | null;
实时ktv: string;
- 实时ktv计算结果列表: null | string[];
+ 实时ktv计算结果列表: null | { realTimeKtvCalcDetailResultInfo: KtvItem[], 透析单编号: string };
实时脱水量: number | null;
干体重: number | null;
年龄: number | null;
@@ -109,6 +116,8 @@
透析液列表: any[];
透析状态: string; // '0.0'这种格式的,得格式化一下
透析结束时间: number | null;
+ 透析处方备注: string;
+ 最近最大脱水量透析时长: string
}
export interface VascularAccess {
@@ -314,9 +323,9 @@
monitoringRecord: MonitoringRecord[]; // 监测记录列表
doctorAdvice: any[]; // 透析单医嘱列表
bloodFlow: string; // 血流量
- bloodVolumeMonitoring: string; // 血容量监测
- dialysisFluidFlowRate: string; // 透析液流速
- ktvList: string[]; // 实时ktv计算结果列表
+ bloodVolumeMonitoring: number | null; // 血容量监测
+ dialysisFluidFlowRate: number | null; // 透析液流量
+ ktvList: KtvItem[]; // 实时ktv计算结果列表
}
interface MonitoringRecord {
@@ -350,8 +359,8 @@
monitoringRecord: [],
doctorAdvice: [],
bloodFlow: "",
- bloodVolumeMonitoring: "",
- dialysisFluidFlowRate: "",
+ bloodVolumeMonitoring: null,
+ dialysisFluidFlowRate: null,
ktvList: [],
};
};
@@ -395,7 +404,7 @@
if (seeMsg.透析状态 === null || !seeMsg.透析状态) {
result.pageType = EPageType.UNPLANNED_SCHEDULE;
result.consumablesCollection =
- seeMsg?.使用耗材字典 || defaultconsumablesCollection();
+ seeMsg?.使用耗材字典 ?? defaultconsumablesCollection();
} else {
const treatmentStatus = tryConvertToInt(
seeMsg.透析状态?.透析状态
@@ -416,14 +425,14 @@
if (treatmentStatus === EMedStatus.NOT_CHECKED_IN) {
result.pageType = EPageType.NOT_SIGNED_IN;
const notSignedIn = defalutNotSignedIn();
- notSignedIn.dialysisMode = seeMsg.透析状态?.透析方案 || "";
- notSignedIn.dialyzerList = seeMsg.透析状态?.透析器列表 || [];
- notSignedIn.pipingList = seeMsg.透析状态?.管路列表 || [];
- notSignedIn.dialysateList = seeMsg.透析状态?.透析液列表 || [];
- notSignedIn.carePackage = seeMsg.透析状态?.护理包列表 || [];
- notSignedIn.punctureNeedle = seeMsg.透析状态?.穿刺针列表 || [];
- notSignedIn.vascularAccess = seeMsg.透析状态?.血管通路列表 || [];
- notSignedIn.anticoagulant = seeMsg.透析状态?.抗凝剂列表 || [];
+ notSignedIn.dialysisMode = seeMsg.透析状态?.透析方案 ?? "";
+ notSignedIn.dialyzerList = seeMsg.透析状态?.透析器列表 ?? [];
+ notSignedIn.pipingList = seeMsg.透析状态?.管路列表 ?? [];
+ notSignedIn.dialysateList = seeMsg.透析状态?.透析液列表 ?? [];
+ notSignedIn.carePackage = seeMsg.透析状态?.护理包列表 ?? [];
+ notSignedIn.punctureNeedle = seeMsg.透析状态?.穿刺针列表 ?? [];
+ notSignedIn.vascularAccess = seeMsg.透析状态?.血管通路列表 ?? [];
+ notSignedIn.anticoagulant = seeMsg.透析状态?.抗凝剂列表 ?? [];
result.notSignedIn = notSignedIn;
}
@@ -431,21 +440,21 @@
else if (treatmentStatus === EMedStatus.SIGNED_IN) {
result.pageType = EPageType.SIGNED_IN;
const signedIn = defaultSignedIn();
- signedIn.abnormalItems = seeMsg.透析状态?.异常检验指标 || [];
- signedIn.dialysisPlan = seeMsg.透析状态?.透析方案 || "";
+ signedIn.abnormalItems = seeMsg.透析状态?.异常检验指标 ?? [];
+ signedIn.dialysisPlan = seeMsg.透析状态?.透析方案 ?? "";
signedIn.prescriptionDehydrationVolume =
- seeMsg.透析状态?.处方脱水量 || null;
- signedIn.dialyzer = seeMsg.透析状态?.透析器 || "";
- signedIn.averageDehydrationRate = seeMsg.透析状态?.最近平均脱水量 || "";
+ seeMsg.透析状态?.处方脱水量 ?? null;
+ signedIn.dialyzer = seeMsg.透析状态?.透析器 ?? "";
+ signedIn.averageDehydrationRate = seeMsg.透析状态?.最近平均脱水量 ?? "";
signedIn.maximumDehydrationCapacity =
- seeMsg.透析状态?.最近最大脱水量 || "";
+ seeMsg.透析状态?.最近最大脱水量 ?? "";
signedIn.maximumDehydrationCapacityDate =
- seeMsg.透析状态?.最近最大脱水量日期 || "";
- signedIn.dryWeight = seeMsg.透析状态?.干体重 || null;
- signedIn.preDialysisWeight = seeMsg.透析状态?.透前称重 || null;
- signedIn.weightAfterLastDialysis = seeMsg.透析状态?.上次透后称重 || null;
- signedIn.weightIncrease = seeMsg.透析状态?.体重增加 || null;
- signedIn.weightIncreaseRate = seeMsg.透析状态?.体重增长率 || null;
+ seeMsg.透析状态?.最近最大脱水量日期 ?? "";
+ signedIn.dryWeight = seeMsg.透析状态?.干体重 ?? null;
+ signedIn.preDialysisWeight = seeMsg.透析状态?.透前称重 ?? null;
+ signedIn.weightAfterLastDialysis = seeMsg.透析状态?.上次透后称重 ?? null;
+ signedIn.weightIncrease = seeMsg.透析状态?.体重增加 ?? null;
+ signedIn.weightIncreaseRate = seeMsg.透析状态?.体重增长率 ?? null;
result.signedIn = signedIn;
}
@@ -453,42 +462,43 @@
else {
result.pageType = EPageType.DURING_DIALYSIS;
const underTreatment = defaultUnderTreatment();
- underTreatment.substituteMode = seeMsg.透析状态?.置换方式 || "";
- underTreatment.dialysisPlan = seeMsg.透析状态?.透析方案 || "";
- underTreatment.dialyzer = seeMsg.透析状态?.透析器 || "";
+ underTreatment.substituteMode = seeMsg.透析状态?.置换方式 ?? "";
+ underTreatment.dialysisPlan = seeMsg.透析状态?.透析方案 ?? "";
+ underTreatment.dialyzer = seeMsg.透析状态?.透析器 ?? "";
underTreatment.averageDehydrationRate =
- seeMsg.透析状态?.最近平均脱水量 || "";
+ seeMsg.透析状态?.最近平均脱水量 ?? "";
underTreatment.maximumDehydrationCapacity =
- seeMsg.透析状态?.最近最大脱水量 || "";
+ seeMsg.透析状态?.最近最大脱水量 ?? "";
underTreatment.maximumDehydrationCapacityDate =
- seeMsg.透析状态?.最近最大脱水量日期 || "";
- underTreatment.maximumDehydrationDuration = "";
- underTreatment.prescriptionRemarks = seeMsg.透析状态?.处方备注 || "";
- underTreatment.abnormalItems = seeMsg.透析状态?.异常检验指标 || [];
+ seeMsg.透析状态?.最近最大脱水量日期 ?? "";
+ underTreatment.maximumDehydrationDuration = seeMsg.透析状态?.最近最大脱水量透析时长 ?? "";
+ underTreatment.prescriptionRemarks = seeMsg.透析状态?.透析处方备注 ?? "";
+ underTreatment.abnormalItems = seeMsg.透析状态?.异常检验指标 ?? [];
underTreatment.prescriptionDialysisDuration =
- seeMsg.透析状态?.透析处方的时长_小时 || "";
+ seeMsg.透析状态?.透析处方的时长_小时 ?? "";
underTreatment.dialysisStartTime =
- seeMsg.透析状态?.透析开始时间 || null;
- underTreatment.dialysisEndTime = seeMsg.透析状态?.透析结束时间 || null;
- underTreatment.dialysisDuration = seeMsg.透析状态?.iot_透析时间 || null;
+ seeMsg.透析状态?.透析开始时间 ?? null;
+ underTreatment.dialysisEndTime = seeMsg.透析状态?.透析结束时间 ?? null;
+ underTreatment.dialysisDuration = seeMsg.透析状态?.iot_透析时间 ?? null;
underTreatment.prescriptionDehydrationVolume =
- seeMsg.透析状态?.处方脱水量 || null;
+ seeMsg.透析状态?.处方脱水量 ?? null;
underTreatment.currentDehydrationVolume =
- seeMsg.透析状态?.实时脱水量 || null;
+ seeMsg.透析状态?.实时脱水量 ?? null;
underTreatment.currentUltrafiltrationRate =
- seeMsg.透析状态?.iot_脱水速率 || null;
+ seeMsg.透析状态?.iot_脱水速率 ?? null;
underTreatment.currentBloodTemperature =
- seeMsg.透析状态?.当前血温 || null;
- underTreatment.venousPressure = seeMsg.透析状态?.iot_静脉压 || null;
+ seeMsg.透析状态?.当前血温 ?? null;
+ underTreatment.venousPressure = seeMsg.透析状态?.iot_静脉压 ?? null;
underTreatment.transmembranePressure =
- seeMsg.透析状态?.iot_跨膜压 || null;
- underTreatment.ktv = seeMsg.透析状态?.实时ktv || "";
- underTreatment.monitoringRecord = seeMsg.透析状态?.监测记录列表 || [];
- underTreatment.doctorAdvice = seeMsg.透析状态?.透析单医嘱列表 || [];
+ seeMsg.透析状态?.iot_跨膜压 ?? null;
+ underTreatment.ktv = seeMsg.透析状态?.实时ktv ?? "";
+ underTreatment.monitoringRecord = seeMsg.透析状态?.监测记录列表 ?? [];
+ underTreatment.doctorAdvice = seeMsg.透析状态?.透析单医嘱列表 ?? [];
underTreatment.bloodFlow = "";
- underTreatment.dialysisFluidFlowRate = "";
- underTreatment.bloodVolumeMonitoring = "";
- underTreatment.ktvList = seeMsg.透析状态?.实时ktv计算结果列表 || [];
+ underTreatment.dialysisFluidFlowRate = seeMsg.透析状态?.iot_血流量 ?? null;
+ underTreatment.bloodVolumeMonitoring = seeMsg.透析状态?.iot_透析液流速 ?? null;
+ underTreatment.ktvList = seeMsg.透析状态?.实时ktv计算结果列表?.realTimeKtvCalcDetailResultInfo ?? [];
+ result.underTreatment = underTreatment;
}
}
}
@@ -542,3 +552,13 @@
return "";
}
};
+
+export const formatSubstituteMode = (mode: string) => {
+ let result = "";
+ if (mode === '前置换') {
+ result = '前'
+ } else if (mode === '后置换') {
+ result = '后'
+ }
+ return result;
+}
diff --git a/src/views/mobile/bedsideAuxiliaryScreen/components/DoctorAdvice/index.vue b/src/views/mobile/bedsideAuxiliaryScreen/components/DoctorAdvice/index.vue
new file mode 100644
index 0000000..a193436
--- /dev/null
+++ b/src/views/mobile/bedsideAuxiliaryScreen/components/DoctorAdvice/index.vue
@@ -0,0 +1,184 @@
+<template>
+ <div class="doctor_advice_container" :style="{ height: height }">
+ <div class="doctor_advice_list">
+ <div
+ v-for="(item, index) in drugOrders"
+ :key="index"
+ class="doctor_advice_item"
+ >
+ <div class="doctor_advice_item_name">{{ item.name }}</div>
+ <template v-if="item?.children && item.children.length > 0">
+ <div
+ v-for="(child, childIndex) in item.children"
+ :key="childIndex"
+ class="doctor_advice_item_sub"
+ >
+ <img :src="trunImgSrc" alt="" />
+ <span>{{ child }}</span>
+ </div>
+ </template>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script lang="ts">
+import { PropType, computed } from "vue";
+import type { Order } from "./type"
+import trunImgSrc from "@/assets/turn.png";
+
+export default {
+ name: "DoctorAdvice",
+ props: {
+ // 容器的高度
+ height: {
+ type: String,
+ default: '100%',
+ required: false,
+ },
+ // 医嘱列表
+ list: {
+ type: Array as PropType<Order[]>,
+ default: () => [],
+ },
+ },
+ setup(props) {
+ const drugOrders = computed(() => {
+ // 格式化主医嘱数据(浅拷贝)
+ const formatList = props.list
+ .filter((e) => e.orderIsSub !== 1)
+ .map((e) => ({ ...e }));
+
+ // 处理子医嘱并挂载到对应主医嘱上
+ props.list.forEach((e) => {
+ if (e.orderIsSub === 1) {
+ const i = formatList.findIndex((v) => v.code === e.orderMainCode);
+ if (i !== -1) {
+ if (!formatList[i].subDrugOrders) {
+ formatList[i].subDrugOrders = [];
+ }
+ formatList[i].subDrugOrders.push(e);
+ }
+ }
+ });
+
+ // 构建显示用的 name 和子医嘱 children
+ return formatList.map((order) => {
+ let name = "";
+
+ if (order.orderNameInfo) {
+ name = order.orderNameInfo.itemName || "";
+ const drugSpec = order.orderNameInfo.feeDrugInfo?.drugSpec;
+ if (drugSpec) {
+ name += ` (${drugSpec})`;
+ }
+ }
+
+ if (order.orderUsage && order.orderUsage !== 0) {
+ name += ` ${order.orderUsage}${
+ order.orderNameInfo?.feeDrugInfo?.drugUnitName || ""
+ }`;
+ }
+
+ if (order.orderCount) {
+ name += ` ${order.orderCount}`;
+ const pkgUnit = order.orderNameInfo?.feeDrugInfo?.drugPackageUnitName;
+ if (pkgUnit) {
+ name += pkgUnit;
+ }
+ }
+
+ if (order.orderFromInfo?.dictText) {
+ name += ` ${order.orderFromInfo.dictText}`;
+ }
+
+ if (order.orderFreqInfo?.dictText) {
+ name += ` ${order.orderFreqInfo.dictText}`;
+ }
+
+ const children: string[] = [];
+
+ if (order.subDrugOrders?.length) {
+ order.subDrugOrders.forEach((child: any) => {
+ let subName = child.orderNameInfo?.itemName || "";
+
+ const childSpec = child.orderNameInfo?.feeDrugInfo?.drugSpec;
+ if (childSpec) {
+ subName += ` (${childSpec})`;
+ }
+
+ if (child.orderUsage) {
+ const unit = child.orderNameInfo?.feeDrugInfo?.drugUnitName || "";
+ subName += ` ${child.orderUsage}${unit}`;
+ }
+
+ if (child.orderCount) {
+ const pkgUnit =
+ child.orderNameInfo?.feeDrugInfo?.drugPackageUnitName;
+ if (pkgUnit) {
+ subName += ` ${child.orderCount}${pkgUnit}`;
+ }
+ }
+
+ children.push(subName);
+ });
+ }
+
+ return {
+ name,
+ children,
+ };
+ });
+ });
+
+ return {
+ drugOrders,
+ trunImgSrc,
+ };
+ },
+};
+</script>
+
+<style scoped>
+.doctor_advice_container {
+ box-sizing: border-box;
+}
+.doctor_advice_container .doctor_advice_list {
+ box-sizing: border-box;
+ height: 100%;
+ background: #ffffff;
+ overflow: hidden;
+ overflow-y: auto;
+}
+.doctor_advice_container .doctor_advice_item {
+ box-sizing: border-box;
+ border-bottom: 1px solid #e6e5e5;
+}
+.doctor_advice_container .doctor_advice_item:last-child {
+ /* box-sizing: border-box;
+ border-bottom: none; */
+}
+.doctor_advice_container .doctor_advice_item .doctor_advice_item_name {
+ box-sizing: border-box;
+ font-weight: 400;
+ font-size: 5px;
+ color: #333333;
+ line-height: 12px;
+ text-align: left;
+ font-style: normal;
+}
+.doctor_advice_container .doctor_advice_item_sub {
+ padding-left: 1px;
+ font-weight: 400;
+ font-size: 5px;
+ color: #777777;
+ line-height: 12px;
+ text-align: left;
+ font-style: normal;
+}
+.doctor_advice_container .doctor_advice_item_sub img {
+ width: 7px;
+ height: 7px;
+ margin-right: 2px;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/mobile/bedsideAuxiliaryScreen/components/DoctorAdvice/type.ts b/src/views/mobile/bedsideAuxiliaryScreen/components/DoctorAdvice/type.ts
new file mode 100644
index 0000000..7808a58
--- /dev/null
+++ b/src/views/mobile/bedsideAuxiliaryScreen/components/DoctorAdvice/type.ts
@@ -0,0 +1,375 @@
+export interface Order {
+ orderType: number;
+ code: string;
+ orderFreq: string;
+ orderDoctor: string;
+ confirmUserInfo: any | null;
+ remark: string | null;
+ isConfirm: number;
+ isDeleted: number;
+ orderExecuteCheckUser: any | null;
+ orderIsSub: number;
+ orderExecuteTime: any | null;
+ id: number;
+ recordCode: string;
+ deletedTime: any | null;
+ orderExecutePatient: any | null;
+ orderExecuteUser: any | null;
+ orderName: string;
+ orderExecuteCheckUserInfo: any | null;
+ subDrugOrders: any | null;
+ orderSort: number;
+ orderCount: number;
+ hisOrderNo: string | null;
+ updateUser: any | null;
+ confirmTime: any | null;
+ confirmUser: any | null;
+ updateTime: number;
+ orderDoctorInfo: UserDoctorInfo;
+ orderMainCode: string | null;
+ createTime: number;
+ orderFreqInfo: OrderFreqInfo;
+ orderNameInfo: OrderNameInfo;
+ createUser: any | null;
+ orderFrom: string;
+ orderUsage: number;
+ orderIsSpin: number;
+ orderExecuteUserInfo: any | null;
+ orderFromInfo: OrderFromInfo;
+ orderStartTime: number;
+}
+
+interface UserDoctorInfo {
+ isRecvAlarmEmail: number;
+ prepareWorkMedicineStat: any | null;
+ userDegree: any | null;
+ isRecvAlarmWechat: number;
+ listReadyRows: any | null;
+ selectedFieldsInInventory2OutPage: any | null;
+ currentClientInfo: any | null;
+ signedInCountByDa: any | null;
+ selectFieldsInShangjiCanshuPage: any | null;
+ relatedClients: any | null;
+ userWorkState: any | null;
+ userIdentityCode: any | null;
+ clientInfos: any | null;
+ userMobile: string;
+ id: number;
+ loginWechatMpId: any | null;
+ userIsTongluDoctor: number;
+ canModifyHistoryHms: boolean;
+ 是否自动出库至二级默认仓库: any | null;
+ userGoDepartment: any | null;
+ userRfid: any | null;
+ userGraduateTime: any | null;
+ 管理员能看到的客户列表: any | null;
+ userSortOrder: number;
+ userCustomSetting: string;
+ hisCode: any | null;
+ isRecvAlarm: any | null;
+ selectedFieldsInCleanStatPage: any | null;
+ 排班时段选择项: any | null;
+ userVsRoleList: any | null;
+ userPassword: string;
+ code: string;
+ userSignPicUrl: any | null;
+ userFromDepartment: any | null;
+ roles: any | null;
+ userAvatar: any | null;
+ userNo: string;
+ admin: boolean;
+ remark: string;
+ userAdmin: boolean;
+ checkVersionCode: string;
+ selectedFieldsInMedStat2: any | null;
+ userTitle: string;
+ isDeleted: number;
+ nurse: boolean;
+ canDeleteHistoryHms: boolean;
+ userEmail: string;
+ deletedTime: any | null;
+ userWorkTimeFrom: any | null;
+ prepareWorkMedicine: any | null;
+ clientVsUserList: any | null;
+ isValid: number;
+ teamState: any | null;
+ updateUser: number;
+ updateTime: number;
+ 隐藏自备药: any | null;
+ userName: string;
+ selectFieldsInTodayOrderPage: any | null;
+ isShow: number;
+ doctor: boolean;
+ isValidForClient: number;
+ loginWechatUnionId: any | null;
+ userGoDate: any | null;
+ createTime: number;
+ userInDate: any | null;
+ clientCode: any | null;
+ selectedFieldsInInventory2QueryPage: any | null;
+ signedInCountByStatistics: any | null;
+ createUser: number;
+ userGender: number;
+ userPinyin: string;
+ listStatInfo: any | null;
+}
+
+interface OrderFreqInfo {
+ code: string;
+ dictIsCustom: number;
+ updateUser: any | null;
+ remark: any | null;
+ updateTime: number;
+ dictNo: string;
+ dictType: string;
+ dictIsEnable: number;
+ isDeleted: number;
+ createTime: number;
+ hisCode: any | null;
+ sortOrder: number;
+ createUser: number;
+ id: number;
+ deletedTime: any | null;
+ dictText: string;
+}
+
+interface OrderNameInfo {
+ itemAgent: any | null;
+ itemPermissionCode: any | null;
+ inventoryItemTypeInfo: InventoryItemTypeInfo;
+ itemIsUse: number;
+ itemIsRestrictUse: number;
+ itemCode: string;
+ itemHisType: any | null;
+ itemUnit: any | null;
+ suntopItemCode: any | null;
+ itemOutPrice: number;
+ itemFactoryInfo: any | null;
+ itemName: string;
+ itemCommonUseInBothSide: any | null;
+ id: number;
+ 当前使用量: any | null;
+ 剩余总量: any | null;
+ storageCode: any | null;
+ 入库总量: any | null;
+ 透析器国网上报: DialyzerReport;
+ hisCode: any | null;
+ itemIsOutToPatient: number;
+ itemSalePrice: number;
+ itemIsReUse: number;
+ itemPackageUnit: any | null;
+ inStorageCountInfo: any | null;
+ itemPackageUnitName: string;
+ itemIsFavor: number;
+ itemSpec: string;
+ itemYibaoPrice: any | null;
+ inventoryTypeCode: string;
+ code: string;
+ itemLicenseCode: any | null;
+ itemAgentInfo: any | null;
+ itemOperator: any | null;
+ remark: any | null;
+ 批号对象列表: any | null;
+ isDeleted: number;
+ itemIsEnableManage: number;
+ deletedTime: any | null;
+ itemIsUseAsXt: number;
+ itemName2: string;
+ inventoryItemType: number;
+ itemMoMaterial: any | null;
+ itemMoArea: number;
+ itemPinyin: string;
+ itemTxqCleanRate: any | null;
+ inventoryTypeName: any | null;
+ itemSortOrder: number;
+ updateUser: any | null;
+ updateTime: number;
+ 结存: any | null;
+ isShow: number;
+ itemFactory: any | null;
+ feeDrugInfo: FeeDrugInfo;
+ itemOperatorInfo: any | null;
+ itemPackageCount: any | null;
+ createTime: number;
+ clientCode: string;
+ itemExtendJson: string;
+ itemPeriodAlarmDays: number;
+ itemRestrictUseRemark: any | null;
+ createUser: number;
+ itemUnitInfo: any | null;
+ itemInPrice: number;
+ itemInventoryAlarmCount: number;
+ itemYibaoCode: any | null;
+}
+
+interface InventoryItemTypeInfo {
+ code: string;
+ typeName: string;
+ updateUser: any | null;
+ remark: any | null;
+ updateTime: number;
+ typeCategory: number;
+ isShow: boolean;
+ isDeleted: number;
+ isEditable: number;
+ createTime: number;
+ clientCode: any | null;
+ sortOrder: number;
+ createUser: any | null;
+ id: number;
+ deletedTime: any | null;
+}
+
+interface DialyzerReport {
+ eSA_促红素种类: string;
+ 抗凝剂_低分子肝素首剂量_IU: string;
+ 抗凝剂_总剂量: string;
+ 透析器透析膜: string;
+ 铁剂_其它静脉种类: string;
+ eSA_用药方式: any[]; // 根据实际元素类型替换 any
+ eSA_静脉剂量单位: string;
+ 铁剂_静脉剂量周: string;
+ 抗凝剂_枸橼酸钠速率每小时_ml: string;
+ 抗凝剂_阿加曲班追加速率_IU每小时: string;
+ 抗凝剂_肝素追加速率_mg每小时: string;
+ 透析器使用: string;
+ 抗凝剂_低分子肝素单位: string;
+ 抗凝剂_肝素首剂量_mg: string;
+ 抗凝剂_枸橼酸钠_其它钠浓度: string;
+ 抗凝剂_追加剂量: string;
+ 抗凝剂_其它抗凝剂: string;
+ 透析器类型: string;
+ 抗凝剂_阿加曲班_追加时间小时: string;
+ 抗凝剂_阿加曲班追加速率_mg每小时: string;
+ 抗凝剂_低分子肝素首剂量_mg: string;
+ 抗凝剂_阿加曲班首剂量_mg: string;
+ 透析器通量: string;
+ 抗凝剂_肝素首剂量_IU: string;
+ 铁剂_静脉种类: string;
+ 药品类型: string;
+ eSA_皮下剂量: string;
+ 铁剂_口服剂量日: string;
+ eSA_静脉剂量: string;
+ 抗凝剂_种类: string;
+ 抗凝剂_阿加曲班_追加时间分钟: string;
+ eSA_促红素名称: string;
+ 抗凝剂_低分子肝素类型: string;
+ 铁剂_给药方式: string;
+ 抗凝剂_首剂量: string;
+ 抗凝剂_低分子肝素总剂量: string;
+ 抗凝剂_低分子肝素追加时间: string;
+ 抗凝剂_低分子肝素追加剂量_mg: string;
+ 抗凝剂_肝素_追加时间小时: string;
+ 铁剂_其它口服种类: string;
+ 抗凝剂_阿加曲班首剂量_IU: string;
+ 抗凝剂_枸橼酸钠_使用时间小时: string;
+ 抗凝剂_肝素_追加时间分钟: string;
+ 抗凝剂_枸橼酸钠浓度百分比: string;
+ 抗凝剂_肝素单位: string;
+ 抗凝剂_阿加曲班单位: string;
+ eSA_皮下剂量单位: string;
+ 抗高血压药_分类: any[];
+ 抗凝剂_枸橼酸钠_使用时间分钟: string;
+ 抗凝剂_肝素追加速率_IU每小时: string;
+ 铁剂_口服种类: string;
+ 透析器膜面积: string;
+ 抗凝剂_是否使用华法林: string;
+ 抗凝剂_低分子肝素追加剂量_IU: string;
+ eSA_其它促红素说明: string;
+ 铁剂_口服剂量单位: string;
+ 铁剂_静脉剂量单位: string;
+}
+
+interface FeeDrugInfo {
+ drugBarcode: string;
+ drugIsNeedTest: number;
+ drugUsePeriodName: string;
+ drugProduceLocation: string;
+ drugPriceYibao: number;
+ drugUseTypeName: string;
+ drugPermissionCode: string;
+ drugCategory: number;
+ drugPackageType: number;
+ drugPackageUnitAlias: string;
+ drugSpec: string;
+ drugAntibioticLevel: number;
+ drugJixing: string;
+ drugHisCode: any | null;
+ drugInventoryPackageTypeName: any | null;
+ drugBenweiCode: string;
+ id: number;
+ drugUseMethodName: string;
+ drugIsFavor: number;
+ drugPackageUnitName: string;
+ drugPackageSum: number;
+ drugSortOrder: number;
+ drugYibaoCode: string;
+ inventoryItemDetailCode: string;
+ drugName2: string;
+ drugUseUnitName: string;
+ drugUnit: string;
+ drugUsePeriod: string;
+ drugInventoryPackageCount: number;
+ drugUseMethod: string;
+ drugName: string;
+ drugUseUnit: string;
+ drugInventoryPackageType: string;
+ drugUseOnetime: string;
+ code: string;
+ drugCode: string;
+ drugPackageUnit: string;
+ drugProduceFactoryName: any | null;
+ drugYlCode: string;
+ remark: string;
+ drugLimitUseText: string;
+ drugProduceFactory: string;
+ drugUnitName: string;
+ isDeleted: number;
+ drugInventoryAlertDays: number;
+ drugPriceIn: number;
+ drugStatus: number;
+ drugPriceCategory: number;
+ drugVsDiagnoseName: any | null;
+ drugSyncPrice: number;
+ deletedTime: any | null;
+ drugPackageUnitAliasName: string;
+ drugPinyin: string;
+ drugVsDiagnose: string;
+ drugGansuUseLimit: any | null;
+ drugProperty: string;
+ drugJixingName: string;
+ drugPriceSale: number;
+ updateUser: any | null;
+ drugTransfer1: any | null;
+ updateTime: number;
+ drugTransfer2: any | null;
+ drugUseType: string;
+ drugLimitUseType: number;
+ drugInventoryAlertValidDays: number;
+ createTime: number;
+ createUser: any | null;
+ drugMonitorCode: string;
+ drugPlusPercent: number;
+ drugInHospitalUseType: number;
+ drugSpecialProperty: number;
+ drugBaseType: number;
+}
+
+interface OrderFromInfo {
+ code: string;
+ dictIsCustom: number;
+ updateUser: any | null;
+ remark: any | null;
+ updateTime: number;
+ dictNo: string;
+ dictType: string;
+ dictIsEnable: number;
+ isDeleted: number;
+ createTime: number;
+ hisCode: any | null;
+ sortOrder: number;
+ createUser: any | null;
+ id: number;
+ deletedTime: any | null;
+ dictText: string;
+}
\ No newline at end of file
diff --git a/src/views/mobile/bedsideAuxiliaryScreen/components/ProgressBar.vue b/src/views/mobile/bedsideAuxiliaryScreen/components/ProgressBar.vue
new file mode 100644
index 0000000..c92f52f
--- /dev/null
+++ b/src/views/mobile/bedsideAuxiliaryScreen/components/ProgressBar.vue
@@ -0,0 +1,45 @@
+<template>
+ <div class="progress-container" :style="{ backgroundColor: props.backgroundColor || '#d6def1' }">
+ <div
+ class="progress-bar"
+ :style="{
+ width: computedWidth,
+ backgroundColor: color,
+ borderRadius: '0 999px 999px 0',
+ }"
+ ></div>
+ </div>
+</template>
+
+<script setup lang="ts">
+import { computed } from "vue";
+
+interface Props {
+ percent: number; // 0 ~ 100
+ color?: string;
+ backgroundColor?: string;
+ borderRadius?: string;
+}
+
+const props = defineProps<Props>();
+
+const computedWidth = computed(
+ () => Math.min(Math.max(props.percent, 0), 100) + "%"
+);
+</script>
+
+<style scoped>
+.progress-container {
+ width: 46px;
+ height: 6px;
+ background: #d6def1;
+ border-radius: 999px;
+ overflow: hidden;
+}
+
+.progress-bar {
+ height: 100%;
+ transition: width 0.3s ease;
+ border-radius: 0 999px 999px 0;
+}
+</style>
diff --git a/src/views/mobile/bedsideAuxiliaryScreen/pages/UnderTreatment.vue b/src/views/mobile/bedsideAuxiliaryScreen/pages/UnderTreatment.vue
index 44678c7..93b8d55 100644
--- a/src/views/mobile/bedsideAuxiliaryScreen/pages/UnderTreatment.vue
+++ b/src/views/mobile/bedsideAuxiliaryScreen/pages/UnderTreatment.vue
@@ -12,21 +12,318 @@
</template>
</el-image>
</div>
- <div class="left-row1-col2"></div>
- <div class="left-row1-col3"></div>
+ <div class="left-row1-col2">
+ <Card
+ title="治疗模式"
+ :icon="zlmsImg"
+ background-color="#ffffff"
+ class="mini-card left-row1-col2-row1"
+ header-class-name="mihi-header"
+ >
+ <div class="item-box dialysis-mode-content">
+ <div class="dialysis-mode-content-box">
+ <span class="mini-text">{{
+ formatSubstituteMode(pageData.substituteMode)
+ }}</span>
+ <span class="text">{{ pageData.dialysisPlan }}</span>
+ </div>
+ </div>
+ </Card>
+ <Card
+ title="处方备注"
+ :icon="zlmsImg"
+ background-color="#ffffff"
+ class="mini-card left-row1-col2-item-row2"
+ header-class-name="mihi-header"
+ >
+ <div class="prescription-remarks">
+ {{ pageData.prescriptionRemarks }}
+ </div>
+ </Card>
+ </div>
+ <div class="left-row1-col3">
+ <Card
+ title="透析器"
+ :icon="zlmsImg"
+ background-color="#ffffff"
+ class="mini-card left-row1-col3-row1"
+ header-class-name="mihi-header"
+ >
+ <div class="item-box prescription-ehydration-olume">
+ <span class="text">{{ pageData.dialyzer }}</span>
+ </div>
+ </Card>
+ <Card
+ title="异常指标"
+ :icon="zlmsImg"
+ background-color="#ffffff"
+ class="mini-card left-row1-col3-row2"
+ header-class-name="mihi-header"
+ >
+ <div class="dialysis-mode-content">
+ <span
+ v-for="(item, index) in pageData.abnormalItems"
+ :key="index"
+ class="abnormal-indicator"
+ :style="{ color: formatTestColr(item.结果标记) }"
+ >
+ {{ getItemName(item.项目名称) }}
+ {{ formatTestFlag(item.结果标记) }}
+ </span>
+ </div>
+ </Card>
+ </div>
</div>
- <div class="left-row2"></div>
- <div class="left-row3"></div>
- <div class="left-row4"></div>
+ <div class="left-row2">
+ <Card
+ title="血温监测"
+ :icon="zlmsImg"
+ background-color="#ffffff"
+ class="mini-card left-row2-col1"
+ header-class-name="mihi-header"
+ >
+ <div class="item-box current-lood0emperature">
+ <span class="text">{{ pageData.currentBloodTemperature }}</span>
+ </div>
+ </Card>
+ <Card
+ title="血压监测"
+ :icon="zlmsImg"
+ background-color="#ffffff"
+ class="mini-card left-row2-col2"
+ header-class-name="mihi-header"
+ >
+ <div class="item-box venous-pressure">
+ <span class="text"
+ >{{ pageData.venousPressure }}/{{
+ pageData.transmembranePressure
+ }}</span
+ >
+ </div>
+ </Card>
+ <Card
+ title="血压脉搏趋势图"
+ :icon="zlmsImg"
+ background-color="#ffffff"
+ class="mini-card left-row2-col3"
+ header-class-name="mihi-header"
+ >
+ <div class=""></div>
+ </Card>
+ </div>
+ <div class="left-row3">
+ <Card
+ title="血容量监测"
+ :icon="zlmsImg"
+ background-color="#ffffff"
+ class="mini-card left-row3-col1"
+ header-class-name="mihi-header"
+ >
+ <div class="item-box current-lood0emperature">
+ <span class="text">{{ pageData.bloodVolumeMonitoring }}</span>
+ </div>
+ </Card>
+ <Card
+ title="KTV监测"
+ :icon="zlmsImg"
+ background-color="#ffffff"
+ class="mini-card left-row3-col2"
+ header-class-name="mihi-header"
+ >
+ <div class="item-box venous-pressure">
+ <span class="text">{{ pageData.ktv }}</span>
+ </div>
+ </Card>
+ <Card
+ title="KTV趋势图"
+ :icon="zlmsImg"
+ background-color="#ffffff"
+ class="mini-card ktv-card left-row3-col3"
+ header-class-name="mihi-header"
+ >
+ <div style="height: 100%">
+ <div ref="ktvListEchartRef" style="width: 100%; height: 100%"></div>
+ </div>
+ </Card>
+ </div>
+ <div class="left-row4">
+ <Card
+ title="血流量"
+ :icon="zlmsImg"
+ background-color="#ffffff"
+ class="mini-card left-row4-col"
+ header-class-name="mihi-header"
+ >
+ <div class="item-box current-lood0emperature">
+ <span class="text">{{ pageData.bloodFlow }}</span>
+ </div>
+ </Card>
+ <Card
+ title="透析液流量"
+ :icon="zlmsImg"
+ background-color="#ffffff"
+ class="mini-card left-row4-col"
+ header-class-name="mihi-header"
+ >
+ <div class="item-box current-lood0emperature">
+ <span class="text">{{ pageData.dialysisFluidFlowRate }}</span>
+ </div>
+ </Card>
+ </div>
</div>
- <div class="right-box"></div>
+ <div class="right-box">
+ <div class="right-box-row1">
+ <Card
+ title="治疗状态"
+ :icon="zlmsImg"
+ background-color="#ffffff"
+ class="mini-card right-box-row1-col1"
+ header-class-name="mini-header"
+ >
+ <div class="item-box treatment-status">
+ <span class="text">{{ treatmentStatusText }}</span>
+ </div>
+ </Card>
+ <Card
+ title="脱水量详情"
+ :icon="zlmsImg"
+ background-color="#ffffff"
+ class="mini-card right-box-row1-col2"
+ header-class-name="mini-header"
+ >
+ <div class="dehydrated-level">
+ <div class="dehydrated-level-item">
+ <span class="item-left"
+ >平均脱水量:{{ pageData.averageDehydrationRate }} L</span
+ >
+ <span class="item-right">(最近3周9次)</span>
+ </div>
+ <div class="dehydrated-level-item">
+ <div class="item-left">
+ <span
+ >最大脱水量:{{ pageData.maximumDehydrationCapacity }} L</span
+ >
+ <template v-if="pageData.maximumDehydrationDuration"
+ >/
+ <span class="level-dete">{{
+ pageData.maximumDehydrationDuration
+ }}</span>
+ </template>
+ </div>
+ <span class="item-right"
+ >({{ pageData.maximumDehydrationCapacityDate }})</span
+ >
+ </div>
+ </div>
+ </Card>
+ </div>
+ <div class="right-box-row2">
+ <Card
+ title="时间进度"
+ :icon="zlmsImg"
+ background-color="#ffffff"
+ class="mini-card right-box-row2-item"
+ header-class-name="mini-header"
+ >
+ <div class="item-box">
+ <div class="item-num"></div>
+ </div>
+ </Card>
+ <Card
+ title="超滤进度"
+ :icon="zlmsImg"
+ background-color="#ffffff"
+ class="mini-card right-box-row2-item"
+ header-class-name="mini-header"
+ >
+ <div class="progress-box">
+ <div class="item-num">
+ {{ pageData.currentDehydrationVolume }}/{{
+ pageData.currentDehydrationVolume
+ }}({{ pageData.currentUltrafiltrationRate }})
+ </div>
+ <ProgressBar
+ :percent="
+ (pageData.currentDehydrationVolume /
+ pageData.currentDehydrationVolume) *
+ 100
+ "
+ color="#70CAAE"
+ backgroundColor="#D6DEF1"
+ borderRadius="50%"
+ />
+ </div>
+ </Card>
+ </div>
+ <div class="right-box-row3">
+ <Card
+ title="临时医嘱"
+ :icon="zlmsImg"
+ background-color="#ffffff"
+ class="mini-card right-box-row2-item"
+ header-class-name="mini-header"
+ >
+ <DoctorAdvice :list="pageData.doctorAdvice" />
+ </Card>
+ </div>
+ <div class="right-box-row4">
+ <BlockBotttom
+ :icon="dingShiImg"
+ text="定时任务"
+ backgroundColor="#20C6B6"
+ @click="() => onScheduledTasksClick()"
+ class="btn"
+ />
+ <BlockBotttom
+ :icon="jiaoHaoImg"
+ text="叫号"
+ backgroundColor="#20C6B6"
+ @click="() => onCallBumberClick()"
+ class="btn"
+ />
+ <BlockBotttom
+ :icon="addImg"
+ text="添加记录"
+ backgroundColor="#409EFF"
+ @click="() => onAddRecordClick()"
+ class="btn"
+ />
+ <BlockBotttom
+ :icon="kaiShiImg"
+ text="j结束透析"
+ backgroundColor="#E6A23C"
+ @click="() => onEndClick()"
+ class="btn"
+ />
+ </div>
+ </div>
</div>
</template>
<script lang="ts" setup name="UnderTreatment">
-import { computed } from "vue";
+import { computed, ref, onMounted, onBeforeUnmount } from "vue";
+import * as echarts from "echarts";
// @ts-ignore
import Card from "../components/Card.vue";
+// @ts-ignore
+import ProgressBar from "../components/ProgressBar.vue";
+import DoctorAdvice from "../components/DoctorAdvice/index.vue";
+// @ts-ignore
+import BlockBotttom from "../components/BlockBotttom.vue";
import { useBedsideAuxiliaryScreenStore } from "@/store/bedsideAuxiliaryScreen";
+import {
+ formatSubstituteMode,
+ formatTestColr,
+ getItemName,
+ formatTestFlag,
+ EMedStatus,
+} from "@/store/type/bedsideAuxiliaryScreen.type";
+import type { KtvItem } from "@/store/type/bedsideAuxiliaryScreen.type";
+import { formatDate } from "@/utils/formatTime";
+import zlmsImg from "@/img/zlms.png";
+import dingShiImg from "@/img/dingshi2.png";
+import jiaoHaoImg from "@/img/jiaoHao.png";
+import kaiShiImg from "@/img/kaiShi.png";
+import addImg from "@/img/add.png";
interface Props {
height: number;
@@ -35,10 +332,109 @@
const bedsideAuxiliaryScreenStore = useBedsideAuxiliaryScreenStore();
+// ktv趋势图的
+const ktvListEchartRef = ref<HTMLElement | null>(null);
+
const pageData = computed(() => {
return Object.assign(bedsideAuxiliaryScreenStore.deviceData.underTreatment, {
patientPhone: bedsideAuxiliaryScreenStore.deviceData.patientPhone,
});
+});
+
+const treatmentStatusText = computed(() => {
+ const status = bedsideAuxiliaryScreenStore.deviceData.treatmentStatus;
+ if (status === EMedStatus.NOT_CHECKED_IN) return "未签到";
+ if (status === EMedStatus.SIGNED_IN) return "已签到";
+ if (status === EMedStatus.DURING_DIALYSIS) return "透析中";
+ if (status === EMedStatus.END) return "已结束";
+ if (status === EMedStatus.CHECKED) return "已检查";
+ if (status === EMedStatus.ARCHIVED) return "已归档";
+ return "未知状态";
+});
+
+// const;
+
+/** 生成ktv趋势图 */
+const generateKtvListEchart = (ktvList: KtvItem[]) => {
+ if (!ktvListEchartRef.value) return;
+ if (!ktvList || ktvList.length === 0) return;
+
+ // 检查是否已经有实例
+ let chart = echarts.getInstanceByDom(ktvListEchartRef.value);
+ if (!chart) {
+ chart = echarts.init(ktvListEchartRef.value);
+ }
+
+ const option = {
+ xAxis: {
+ type: "category",
+ data: ktvList.map((item) => formatDate(new Date(item.时间), "HH:mm")),
+ axisLine: { show: true },
+ axisTick: { show: true },
+ // axisLabel: {
+ // margin: 5, // 控制文字与轴的距离,尽量小
+ // fontSize: 12,
+ // },
+ },
+ yAxis: {
+ type: "value",
+ axisLine: { show: true },
+ axisTick: { show: true },
+ // axisLabel: {
+ // margin: 5,
+ // fontSize: 12,
+ // },
+ splitLine: { show: true },
+ },
+ series: [
+ {
+ data: ktvList.map((item) => item.ktv),
+ type: "line",
+ smooth: false,
+ symbol: "circle",
+ symbolSize: 6,
+ lineStyle: {
+ width: 2,
+ color: "#70CAAE",
+ },
+ itemStyle: {
+ color: "#70CAAE",
+ },
+ },
+ ],
+ tooltip: {
+ trigger: "axis",
+ },
+ };
+
+ chart.setOption(option, true); // 第二个参数为 true 表示全量更新
+};
+
+/** 定时任务 */
+const onScheduledTasksClick = () => {};
+
+/** 叫号 */
+const onCallBumberClick = () => {};
+
+/** 添加记录 */
+const onAddRecordClick = () => {};
+
+/** 结束透析 */
+const onEndClick = () => {};
+
+onMounted(() => {
+ // 生成ktv趋势图
+ generateKtvListEchart(pageData.value.ktvList);
+});
+
+onBeforeUnmount(() => {
+ // 销毁图表实例
+ if (ktvListEchartRef.value) {
+ const chart = echarts.getInstanceByDom(ktvListEchartRef.value);
+ if (chart) {
+ chart.dispose();
+ }
+ }
});
</script>
@@ -55,48 +451,287 @@
padding-bottom: 2px;
overflow: hidden;
.left-box {
- flex: 0 0 58.25%;
- height: calc(100% - 12px);
+ width: 58.25%;
+ height: 100%;
display: flex;
- align-items: flex-start;
flex-direction: column;
gap: 4px;
- div {
- width: 100%;
- }
+
.left-row1 {
- flex: 0 0 41.99%;
- // width: calc(100% - 8px);
- gap: 4px;
+ width: 100%;
+ height: 38.97%;
display: flex;
- background: blue;
+ gap: 4px;
+
+ .left-row1-col1,
+ .left-row1-col2,
+ .left-row1-col3 {
+ height: 100%;
+ }
+
.left-row1-col1 {
- flex: 0 0 26.94%;
+ width: 26.94%;
+ border-radius: 2px;
+ overflow: hidden;
}
.left-row1-col2 {
- flex: 0 0 26.42%;
+ width: 26.43%;
+ display: flex;
+ flex-direction: column;
+ gap: 4px;
+ .left-row1-col2-row1 {
+ height: 36.62%;
+ }
+
+ .left-row1-col2-item-row2 {
+ height: 63.38%;
+ }
}
.left-row1-col3 {
- flex: 0 0 46.63%;
+ width: 46.63%;
+ display: flex;
+ flex-direction: column;
+ gap: 4px;
+ .left-row1-col3-row1 {
+ height: 36.62%;
+ }
+ .left-row1-col3-row2 {
+ height: 63.38%;
+ .dialysis-mode-content {
+ height: 100%;
+ .abnormal-indicator {
+ display: inline-block;
+ margin-right: 6px;
+ margin-bottom: 4px;
+ font-family: PingFangSC, PingFang SC;
+ font-weight: 600;
+ font-size: 5px;
+ line-height: 6px;
+ text-align: left;
+ font-style: normal;
+ }
+ }
+ }
}
}
.left-row2 {
- flex: 0 0 22.65%;
- background: yellow;
+ width: 100%;
+ height: 21.03%;
+ display: flex;
+ gap: 4px;
+ .left-row2-col1 {
+ width: 26.94%;
+ }
+ .left-row2-col2 {
+ width: 26.43%;
+ }
+ .left-row2-col3 {
+ width: 46.62%;
+ }
}
.left-row3 {
- flex: 0 0 22.65%;
- background: orange;
+ width: 100%;
+ height: 21.03%;
+ display: flex;
+ gap: 4px;
+ .left-row3-col1 {
+ width: 26.94%;
+ }
+ .left-row3-col2 {
+ width: 26.43%;
+ }
+ .left-row3-col3 {
+ width: 46.62%;
+ }
}
.left-row4 {
- flex: 0 0 12.71%;
- background: purple;
+ width: 100%;
+ height: 11.79%;
+ display: flex;
+ gap: 4px;
+ .left-row4-col {
+ width: 50%;
+ }
}
}
.right-box {
- flex: 0 0 41.75%;
+ width: 41.75%;
height: 100%;
- background: green;
+ display: flex;
+ flex-direction: column;
+ gap: 4px;
+ .right-box-row1,
+ .right-box-row2,
+ .right-box-row3 .right-box-row4 {
+ width: 100%;
+ }
+ .right-box-row1 {
+ height: 14.44%;
+ display: flex;
+ gap: 4px;
+ .right-box-row1-col1 {
+ width: 36.17%;
+ }
+ .right-box-row1-col2 {
+ width: 63.83%;
+ }
+ }
+ .right-box-row2 {
+ height: 25%;
+ display: flex;
+ gap: 4px;
+ .right-box-row2-item {
+ width: 50%;
+ }
+ }
+ .right-box-row3 {
+ height: 47.78%;
+ }
+
+ .right-box-row4 {
+ height: 12.78%;
+ background: #ffffff;
+ border-radius: 2px;
+ display: flex;
+ align-items: center;
+ justify-content: flex-end;
+ padding-right: 13px;
+ .btn {
+ margin-left: 9px;
+ }
+ }
+ }
+
+ .progress-box {
+ display: flex;
+ align-items: center;
+ flex-direction: column;
+ .item-num {
+ margin-bottom: 4px;
+ font-family: PingFangSC, PingFang SC;
+ font-weight: 600;
+ font-size: 8px;
+ color: #333333;
+ text-align: left;
+ font-style: normal;
+ }
+ }
+
+ .item-box {
+ height: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-family: PingFangSC, PingFang SC;
+ font-weight: 600;
+ font-size: 8px;
+ color: #70a3dd;
+ text-align: center;
+ font-style: normal;
+ &.dialysis-mode-content {
+ color: #d58e56;
+ display: flex;
+ align-items: center;
+ // align-items: baseline;
+ .dialysis-mode-content-box {
+ display: flex;
+ align-items: flex-end;
+ line-height: 1;
+ .mini-text {
+ margin-right: 1px;
+ font-size: 5px;
+ color: #c9a589;
+ }
+ }
+ }
+ &.treatment-status {
+ color: #70a3dd;
+ }
+ &.prescription-ehydration-olume {
+ color: #8079cb;
+ }
+ &.current-lood0emperature {
+ color: #70a3dd;
+ font-size: 9px;
+ }
+ &.venous-pressure {
+ color: #70a3dd;
+ font-size: 9px;
+ }
+ }
+ .prescription-remarks {
+ font-family: PingFangSC, PingFang SC;
+ font-weight: 500;
+ font-size: 5px;
+ color: #d58e56;
+ line-height: 7px;
+ text-align: left;
+ font-style: normal;
+ }
+ .dehydrated-level {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: space-between;
+ .dehydrated-level-item {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ .item-left {
+ flex: 1;
+ font-family: PingFangSC, PingFang SC;
+ font-weight: 600;
+ font-size: 4px;
+ color: #333333;
+ line-height: 6px;
+ font-style: normal;
+ .level-dete {
+ font-family: PingFangSC, PingFang SC;
+ font-weight: 600;
+ font-size: 4px;
+ color: #d58e56;
+ text-align: left;
+ font-style: normal;
+ }
+ }
+ .item-right {
+ font-family: PingFangSC, PingFang SC;
+ font-weight: 600;
+ font-size: 4px;
+ color: #777777;
+ line-height: 6px;
+ font-style: normal;
+ }
+ }
+ }
+ // card header class
+ .mini-card {
+ padding: 2px;
+ }
+ .ktv-card {
+ .card-header {
+ margin-bottom: 0px;
+ }
+ }
+ :deep(.mihi-header) {
+ flex: 0 0 4px;
+ .card-icon {
+ width: 4px;
+ height: 4px;
+ }
+ .card-title {
+ font-size: 4px;
+ }
+ }
+ :deep(.big-header) {
+ flex: 0 0 9px;
+ .card-icon {
+ width: 9px;
+ height: 9px;
+ }
+ .card-title {
+ font-size: 5px;
+ }
}
}
</style>
--
Gitblit v1.8.0