From 475a352a4bfd7ac3a81e8c7c92d3bb64e2e01037 Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期五, 27 二月 2026 15:48:37 +0800
Subject: [PATCH] 青岛维护提交
---
src/views/business/maintain/components/LiverKidneyPanel.vue | 242 ++++++++++++++++++++++++------------------------
1 files changed, 121 insertions(+), 121 deletions(-)
diff --git a/src/views/business/maintain/components/LiverKidneyPanel.vue b/src/views/business/maintain/components/LiverKidneyPanel.vue
index a485fed..beb903a 100644
--- a/src/views/business/maintain/components/LiverKidneyPanel.vue
+++ b/src/views/business/maintain/components/LiverKidneyPanel.vue
@@ -30,7 +30,7 @@
class-name="leave-alone"
>
<template #default="scope">
- <span :class="{'required-item': scope.row.required}">
+ <span :class="{ 'required-item': scope.row.required }">
{{ scope.row.itemName }}
</span>
</template>
@@ -54,8 +54,11 @@
class="value-input"
/>
<span v-else class="value-display">
- {{ scope.row.values[index] || '-' }}
- <span v-if="scope.row.values[index] && scope.row.unit" class="unit">
+ {{ scope.row.values[index] || "-" }}
+ <span
+ v-if="scope.row.values[index] && scope.row.unit"
+ class="unit"
+ >
{{ scope.row.unit }}
</span>
</span>
@@ -65,8 +68,6 @@
</div>
</template>
</el-table-column>
-
-
</el-table>
<!-- 闄勪欢涓婁紶鍖哄煙 -->
@@ -95,7 +96,9 @@
<el-form-item
label="鏃ユ湡"
prop="date"
- :rules="[{ required: true, message: '璇烽�夋嫨鏃ユ湡', trigger: 'change' }]"
+ :rules="[
+ { required: true, message: '璇烽�夋嫨鏃ユ湡', trigger: 'change' }
+ ]"
>
<el-date-picker
v-model="columnForm.date"
@@ -108,7 +111,9 @@
<el-form-item
label="鏃堕棿"
prop="time"
- :rules="[{ required: true, message: '璇烽�夋嫨鏃堕棿', trigger: 'change' }]"
+ :rules="[
+ { required: true, message: '璇烽�夋嫨鏃堕棿', trigger: 'change' }
+ ]"
>
<el-time-picker
v-model="columnForm.time"
@@ -130,65 +135,58 @@
import UploadAttachment from "@/components/UploadAttachment";
export default {
- name: 'LiverKidneyPanel',
+ name: "LiverKidneyPanel",
components: {
- UploadAttachment,
+ UploadAttachment
},
props: {
isEditing: {
type: Boolean,
default: false
},
+ // 淇敼 prop 瀹氫箟锛屾敮鎸佸璞℃牸寮忕殑鍒濆鏁版嵁
initialData: {
- type: Array,
- default: () => []
+ type: Object,
+ default: () => ({})
}
},
data() {
return {
tableData: [],
- dynamicColumns: [
- {
- label: '2024-12-27\n08:00',
- key: 'time1',
- date: '2024-12-27',
- time: '08:00'
- },
- {
- label: '2024-12-27\n14:00',
- key: 'time2',
- date: '2024-12-27',
- time: '14:00'
- }
- ],
+ dynamicColumns: [],
attachments: [],
columnDialogVisible: false,
columnForm: {
- date: '',
- time: ''
+ date: "",
+ time: ""
},
- tableKey: 0 // 鐢ㄤ簬寮哄埗閲嶆柊娓叉煋琛ㄦ牸
+ tableKey: 0,
+ // 鍐呴儴鏁版嵁鐘舵��
+ internalData: {}
};
},
watch: {
+ // 鐩戝惉 initialData 鍙樺寲锛岀‘淇濇暟鎹纭帴鏀� [5](@ref)
+ initialData: {
+ handler(newData) {
+ if (newData && Object.keys(newData).length > 0) {
+ this.internalData = { ...newData };
+ this.initFromExternalData();
+ }
+ },
+ immediate: true,
+ deep: true
+ },
isEditing(newVal) {
if (!newVal) {
- // 淇濆瓨鏁版嵁
- this.$emit('data-change', {
- type: 'liver_kidney',
- data: this.tableData,
- columns: this.dynamicColumns,
- attachments: this.attachments
- });
+ this.saveData();
}
- // 缂栬緫妯″紡鍒囨崲鏃堕噸鏂拌绠楀垪瀹�
this.$nextTick(() => {
this.forceTableLayout();
});
},
dynamicColumns: {
handler() {
- // 鍒楀彉鍖栨椂閲嶆柊璁$畻甯冨眬
this.$nextTick(() => {
this.forceTableLayout();
});
@@ -197,94 +195,99 @@
}
},
methods: {
+ // 浠庡閮ㄦ暟鎹垵濮嬪寲缁勪欢 [9](@ref)
+ initFromExternalData() {
+ if (this.internalData.data && this.internalData.columns) {
+ // 浣跨敤澶栭儴鏁版嵁鍒濆鍖栬〃鏍�
+ this.tableData = this.internalData.data.map(item => ({
+ ...item,
+ values:
+ item.values || new Array(this.internalData.columns.length).fill("")
+ }));
+ this.dynamicColumns = [...this.internalData.columns];
+ } else {
+ // 濡傛灉娌℃湁澶栭儴鏁版嵁锛屼娇鐢ㄩ粯璁ゅ垵濮嬪寲
+ this.initTableData();
+ }
+
+ // 鍒濆鍖栭檮浠�
+ if (this.internalData.attachments) {
+ this.attachments = [...this.internalData.attachments];
+ }
+ },
+
+ // 鍒濆鍖栭粯璁よ〃鏍兼暟鎹�
initTableData() {
const medicalItems = [
{
- itemName: '琛�閽�',
- unit: 'mmol/L',
+ itemName: "琛�閽�",
+ unit: "mmol/L",
required: true,
- reference: '135-145'
+ reference: "135-145"
},
{
- itemName: '琛�閽�',
- unit: 'mmol/L',
+ itemName: "琛�閽�",
+ unit: "mmol/L",
required: true,
- reference: '3.5-5.5'
+ reference: "3.5-5.5"
},
+ { itemName: "BUN", unit: "mg/dL", required: true, reference: "<20" },
+ { itemName: "鑲岄厫", unit: "渭mol/L", required: true, reference: "<100" },
{
- itemName: 'BUN',
- unit: 'mg/dL',
+ itemName: "鎬昏儐绾㈢礌",
+ unit: "渭mol/L",
required: true,
- reference: '<20'
+ reference: "<21"
},
- {
- itemName: '鑲岄厫',
- unit: '渭mol/L',
- required: true,
- reference: '<100'
- },
- {
- itemName: '鎬昏儐绾㈢礌',
- unit: '渭mol/L',
- required: true,
- reference: '<21'
- },
- {
- itemName: 'ALT',
- unit: 'U/L',
- required: true,
- reference: '<50'
- },
- {
- itemName: 'AST',
- unit: 'U/L',
- required: true,
- reference: '<40'
- },
- {
- itemName: 'GGT',
- unit: 'U/L',
- required: true,
- reference: '<57'
- },
- {
- itemName: 'ALP',
- unit: 'U/L',
- required: true,
- reference: '<120'
- },
- {
- itemName: 'PT',
- unit: '绉�',
- required: true,
- reference: '9.4-12.5'
- },
- {
- itemName: 'INR',
- unit: '',
- required: true,
- reference: '0.85-1.15'
- }
+ { itemName: "ALT", unit: "U/L", required: true, reference: "<50" },
+ { itemName: "AST", unit: "U/L", required: true, reference: "<40" },
+ { itemName: "GGT", unit: "U/L", required: true, reference: "<57" },
+ { itemName: "ALP", unit: "U/L", required: true, reference: "<120" },
+ { itemName: "PT", unit: "绉�", required: true, reference: "9.4-12.5" },
+ { itemName: "INR", unit: "", required: true, reference: "0.85-1.15" }
];
+
+ // 濡傛灉娌℃湁鍔ㄦ�佸垪锛屽垵濮嬪寲榛樿鍒�
+ if (this.dynamicColumns.length === 0) {
+ this.dynamicColumns = [
+ {
+ label: `${new Date().toISOString().split("T")[0]}\n08:00`,
+ key: "time1",
+ date: new Date().toISOString().split("T")[0],
+ time: "08:00"
+ }
+ ];
+ }
this.tableData = medicalItems.map(item => ({
...item,
- values: new Array(this.dynamicColumns.length).fill('')
+ values: new Array(this.dynamicColumns.length).fill("")
}));
+ },
+
+ // 淇濆瓨鏁版嵁鍒扮埗缁勪欢 [2](@ref)
+ saveData() {
+ const dataToEmit = {
+ type: "liver_kidney",
+ data: this.tableData,
+ columns: this.dynamicColumns,
+ attachments: this.attachments
+ };
+ this.$emit("data-change", dataToEmit);
},
addColumn() {
this.columnForm = {
- date: new Date().toISOString().split('T')[0],
- time: '08:00'
+ date: new Date().toISOString().split("T")[0],
+ time: "08:00"
};
this.columnDialogVisible = true;
},
confirmAddColumn() {
- this.$refs.columnForm.validate((valid) => {
+ this.$refs.columnForm.validate(valid => {
if (!valid) {
- this.$message.warning('璇峰畬鍠勬椂闂寸偣淇℃伅');
+ this.$message.warning("璇峰畬鍠勬椂闂寸偣淇℃伅");
return;
}
@@ -295,64 +298,60 @@
date: this.columnForm.date,
time: this.columnForm.time
};
+ this.internalData.columns.push(newColumn);
this.dynamicColumns.push(newColumn);
// 涓烘墍鏈夎鏂板涓�涓┖鍊�
this.tableData.forEach(row => {
- row.values.push('');
+ if (!row.values) {
+ row.values = [];
+ }
+ row.values.push("");
});
this.columnDialogVisible = false;
- this.$message.success('鏃堕棿鐐规坊鍔犳垚鍔�');
-
- // 寮哄埗琛ㄦ牸閲嶆柊娓叉煋
+ this.$message.success("鏃堕棿鐐规坊鍔犳垚鍔�");
this.tableKey += 1;
});
},
handleDialogClosed() {
this.columnForm = {
- date: '',
- time: ''
+ date: "",
+ time: ""
};
this.$refs.columnForm && this.$refs.columnForm.clearValidate();
},
handleValueChange(row, columnIndex) {
- this.$emit('data-change', {
- type: 'liver_kidney',
- data: this.tableData,
- columns: this.dynamicColumns
- });
+ this.saveData();
},
handleAttachmentChange(fileList) {
this.attachments = fileList;
- this.$emit('attachment-change', {
- type: 'liver_kidney',
+ this.$emit("attachment-change", {
+ type: "liver_kidney",
attachments: fileList
});
},
- // 寮哄埗琛ㄦ牸閲嶆柊甯冨眬[1,3](@ref)
forceTableLayout() {
this.$nextTick(() => {
- const table = this.$el.querySelector('.el-table');
- if (table && table.querySelector('colgroup')) {
- // 瑙﹀彂琛ㄦ牸閲嶆柊璁$畻甯冨眬
+ const table = this.$el.querySelector(".el-table");
+ if (table && table.querySelector("colgroup")) {
this.$nextTick(() => {
- window.dispatchEvent(new Event('resize'));
+ window.dispatchEvent(new Event("resize"));
});
}
});
},
handleHeaderDragEnd() {
- // 鍒楀鎷栨嫿缁撴潫鍚庨噸鏂拌绠楀竷灞�
this.forceTableLayout();
},
+ // 鎻愪緵鏁版嵁瀵煎嚭鏂规硶渚涚埗缁勪欢璋冪敤
exportData() {
return {
tableData: this.tableData,
@@ -363,9 +362,11 @@
}
},
mounted() {
- this.initTableData();
- // 鍒濆娓叉煋鍚庤绠楀垪瀹�
+ // 纭繚缁勪欢姝g‘鎸傝浇鍚庡垵濮嬪寲鏁版嵁 [1](@ref)
this.$nextTick(() => {
+ if (Object.keys(this.internalData).length === 0) {
+ this.initTableData();
+ }
this.forceTableLayout();
});
}
@@ -464,7 +465,6 @@
font-weight: normal;
}
-/* 鍝嶅簲寮忚璁� */
@media (max-width: 768px) {
.medical-panel {
padding: 10px;
--
Gitblit v1.9.3