From a9d2b856e0f6be6475319c2dc36bf405c2f908fc Mon Sep 17 00:00:00 2001
From: WXL (wul) <wl_5969728@163.com>
Date: 星期二, 22 九月 2026 14:04:52 +0800
Subject: [PATCH] 测试完成
---
src/views/patient/archives/childHealth/detail.vue | 153 +++++++++++++++++++++++++++++++++-----------------
1 files changed, 101 insertions(+), 52 deletions(-)
diff --git a/src/views/patient/archives/childHealth/detail.vue b/src/views/patient/archives/childHealth/detail.vue
index 9505e80..be662b4 100644
--- a/src/views/patient/archives/childHealth/detail.vue
+++ b/src/views/patient/archives/childHealth/detail.vue
@@ -3,9 +3,18 @@
<template v-if="archive">
<div class="action-bar">
<el-button @click="$router.go(-1)" icon="el-icon-back">杩斿洖</el-button>
- <el-button :type="editing ? 'success' : 'primary'" :icon="editing ? 'el-icon-check' : 'el-icon-edit'" @click="toggleEdit">{{ editing ? '淇濆瓨' : '缂栬緫' }}</el-button>
- <el-tag :type="subTypeTag(archive.subType)" style="margin-left:12px">{{ archive.subTypeLabel }}</el-tag>
+ <el-button :type="editing ? 'success' : 'primary'" :icon="editing ? 'el-icon-check' : 'el-icon-edit'" @click="toggleEdit">
+ {{ editing ? '淇濆瓨' : '缂栬緫' }}
+ </el-button>
+ <el-button v-if="archive.closeStatus != 1" type="danger" plain icon="el-icon-circle-close" @click="handleCloseCase">缁撴</el-button>
+ <el-tag :type="archive.closeStatus == 1 ? 'info' : 'success'" style="margin-left:12px">
+ {{ archive.closeStatus == 1 ? '宸茬粨妗�' : '鏈粨妗�' }}
+ </el-tag>
+ <el-tag :type="subTypeTag(archive.subType)" style="margin-left:8px">{{ archive.subTypeLabel }}</el-tag>
</div>
+
+ <el-tabs v-model="mainTab" type="border-card">
+ <el-tab-pane label="妗f璇︽儏" name="detail">
<!-- 鎮h�呭熀鏈俊鎭� -->
<el-card class="info-card" shadow="never">
@@ -19,7 +28,6 @@
<el-row :gutter="20" style="margin-top:10px">
<el-col :span="6"><InfoField label="绉戝" :value="archive.deptname" /></el-col>
<el-col :span="6"><InfoField label="璇婃柇" :value="archive.diagname" /></el-col>
- <el-col :span="6"><InfoField label="涓绘不鍖荤敓" :value="archive.drname" /></el-col>
<el-col :span="6"><InfoField label="鏉ユ簮" :value="sourceLabel" /></el-col>
</el-row>
</el-card>
@@ -27,43 +35,54 @@
<!-- 瀹堕暱淇℃伅 -->
<el-card class="info-card" shadow="never" style="margin-top:14px">
<div slot="header" class="card-header"><span>瀹堕暱/鐩戞姢浜轰俊鎭�</span></div>
- <el-row :gutter="20">
- <el-col :span="6">
- <InfoField label="瀹堕暱濮撳悕" :value="parentInfo.parentName" :editing="editing" v-model="parentInfo.parentName" />
- </el-col>
- <el-col :span="6">
- <InfoField label="涓庡効绔ュ叧绯�" :value="relationLabel" :editing="editing" type="select" :options="relationOptions" @change="v => parentInfo.relation = v" />
- </el-col>
- <el-col :span="6">
- <InfoField label="鑱旂郴鐢佃瘽" :value="parentInfo.parentPhone" :editing="editing" v-model="parentInfo.parentPhone" />
- </el-col>
- <el-col :span="6">
- <InfoField label="韬唤璇佸彿" :value="parentInfo.parentIdCard" :editing="editing" v-model="parentInfo.parentIdCard" />
- </el-col>
- </el-row>
- <el-row :gutter="20" style="margin-top:10px">
- <el-col :span="12">
- <InfoField label="鑱旂郴鍦板潃" :value="parentInfo.address" :editing="editing" v-model="parentInfo.address" />
- </el-col>
- </el-row>
+ <el-form :model="parentInfo" label-width="110px" size="small" :disabled="!editing">
+ <el-row :gutter="20">
+ <el-col :span="8"><el-form-item label="瀹堕暱濮撳悕"><el-input v-model="parentInfo.parentName" class="w-sm" /></el-form-item></el-col>
+ <el-col :span="8"><el-form-item label="涓庡効绔ュ叧绯�">
+ <el-select v-model="parentInfo.relation" class="w-sm">
+ <el-option v-for="o in relationOptions" :key="o.value" :label="o.label" :value="o.value" />
+ </el-select>
+ </el-form-item></el-col>
+ <el-col :span="8"><el-form-item label="鑱旂郴鐢佃瘽"><el-input v-model="parentInfo.parentPhone" class="w-sm" /></el-form-item></el-col>
+ </el-row>
+ <el-row :gutter="20">
+ <el-col :span="8"><el-form-item label="韬唤璇佸彿"><el-input v-model="parentInfo.parentIdCard" class="w-md" /></el-form-item></el-col>
+ <el-col :span="16"><el-form-item label="鑱旂郴鍦板潃"><el-input v-model="parentInfo.address" class="w-full" /></el-form-item></el-col>
+ </el-row>
+ </el-form>
</el-card>
- <!-- 妗f鍩烘湰淇℃伅 -->
+ <!-- 妗f淇℃伅锛堝彲缂栬緫锛� -->
<el-card class="info-card" shadow="never" style="margin-top:14px">
<div slot="header" class="card-header">
- <span>妗f鍩烘湰淇℃伅</span>
+ <span>妗f淇℃伅</span>
<span class="header-sub">{{ archive.createTime ? archive.createTime.substring(0,10) : '-' }} 寤烘。</span>
</div>
- <el-row :gutter="20">
- <el-col :span="8"><InfoField label="寤烘。绫诲瀷" :value="archive.subTypeLabel" /></el-col>
- <el-col :span="8"><InfoField label="寤烘。鍖荤敓" :value="archive.archiveForm.doctorName" :editing="editing" v-model="archive.archiveForm.doctorName" /></el-col>
- <el-col :span="8"><InfoField label="寤烘。鏃堕棿" :value="archive.createTime" /></el-col>
- </el-row>
+ <el-form :model="archive" label-width="110px" size="small" :disabled="!editing">
+ <el-row :gutter="20">
+ <el-col :span="8"><el-form-item label="鍑虹敓鏃ユ湡"><el-date-picker v-model="archive.birthday" value-format="yyyy-MM-dd" class="w-md" /></el-form-item></el-col>
+ <el-col :span="8"><el-form-item label="鍑虹敓浣撻噸"><el-input v-model="archive.birthWeight" class="w-xs" /></el-form-item></el-col>
+ <el-col :span="8"><el-form-item label="鍑虹敓瀛曞懆"><el-input v-model="archive.gestationalWeek" class="w-xs" /></el-form-item></el-col>
+ </el-row>
+ <el-row :gutter="20">
+ <el-col :span="8"><el-form-item label="璇婃柇鏃ユ湡"><el-date-picker v-model="archive.diagnosisDate" value-format="yyyy-MM-dd" class="w-md" /></el-form-item></el-col>
+ <el-col :span="8"><el-form-item label="涓绘不鍖荤敓"><el-input v-model="archive.attendingDoctor" class="w-sm" /></el-form-item></el-col>
+ <el-col :span="8"><el-form-item label="缁忕鍖荤敓"><el-input v-model="archive.managingDoctor" class="w-sm" /></el-form-item></el-col>
+ </el-row>
+ <el-row :gutter="20">
+ <el-col :span="8"><el-form-item label="鐧昏浜哄憳"><el-input v-model="archive.registrant" class="w-sm" /></el-form-item></el-col>
+ </el-row>
+ </el-form>
</el-card>
<!-- 楂樺嵄鍎夸笓妗� 鈫� 鍙紪杈戣〃鏍� -->
<el-card v-if="archive.subType === 'highRisk'" class="info-card" shadow="never" style="margin-top:14px">
<div slot="header" class="card-header"><span>楂樺嵄鍎夸笓妗堢鐞�</span></div>
+ <el-form :model="archive" label-width="110px" size="small" :disabled="!editing" inline>
+ <el-form-item label="楂樺嵄鍎垮垎绫�"><el-input v-model="archive.highRiskCategory" class="w-md" /></el-form-item>
+ <el-form-item label="楂樺嵄鍎垮悕绉�"><el-input v-model="archive.highRiskName" class="w-lg" /></el-form-item>
+ <el-form-item label="鎷熼殢璁挎棩鏈�"><el-date-picker v-model="archive.followupDate" value-format="yyyy-MM-dd" class="w-md" /></el-form-item>
+ </el-form>
<el-tabs v-model="activeTab" type="border-card">
<el-tab-pane label="鐢熼暱鍙戣偛鐩戞祴" name="growth">
<EditableTable :data.sync="growthData" :editing="editing" :columns="growthColumns" />
@@ -80,6 +99,9 @@
<!-- 钀ュ吇鎬х柧鐥呬笓妗� 鈫� 鍙紪杈戣〃鏍� -->
<el-card v-if="archive.subType === 'nutrition'" class="info-card" shadow="never" style="margin-top:14px">
<div slot="header" class="card-header"><span>钀ュ吇鎬х柧鐥呬笓妗堢鐞�</span></div>
+ <el-form :model="archive" label-width="130px" size="small" :disabled="!editing" inline>
+ <el-form-item label="钀ュ吇鎬х柧鐥呭悕绉�"><el-input v-model="archive.nutritionName" class="w-lg" /></el-form-item>
+ </el-form>
<el-tabs v-model="activeTab" type="border-card">
<el-tab-pane label="浣撴牸娴嬮噺" name="measure">
<EditableTable :data.sync="measureData" :editing="editing" :columns="measureColumns" />
@@ -96,23 +118,26 @@
<!-- 瀛︿範鍥伴毦涓撴 鈫� 鍗曚竴琛ㄥ崟 -->
<el-card v-if="archive.subType === 'learning'" class="info-card" shadow="never" style="margin-top:14px">
<div slot="header" class="card-header"><span>瀛︿範鍥伴毦涓撴绠$悊</span></div>
+ <el-form :model="archive" label-width="110px" size="small" :disabled="!editing" inline>
+ <el-form-item label="棰勭害鎯呭喌"><el-input v-model="archive.appointmentStatus" class="w-lg" /></el-form-item>
+ </el-form>
<el-form :model="form" label-width="130px" size="small" :disabled="!editing">
<el-divider content-position="left">瀛︿範鑳藉姏璇勪及</el-divider>
<el-row :gutter="20">
- <el-col :span="8"><el-form-item label="璇勪及鏃ユ湡"><el-date-picker v-model="form.assessDate" value-format="yyyy-MM-dd" style="width:100%" /></el-form-item></el-col>
- <el-col :span="8"><el-form-item label="娴嬭瘎宸ュ叿"><el-input v-model="form.testName" /></el-form-item></el-col>
+ <el-col :span="8"><el-form-item label="璇勪及鏃ユ湡"><el-date-picker v-model="form.assessDate" value-format="yyyy-MM-dd" class="w-md" /></el-form-item></el-col>
+ <el-col :span="8"><el-form-item label="娴嬭瘎宸ュ叿"><el-input v-model="form.testName" class="w-sm" /></el-form-item></el-col>
<el-col :span="8"><el-form-item label="鏅哄晢(IQ)"><el-input-number v-model="form.iq" :min="40" :max="160" /></el-form-item></el-col>
</el-row>
<el-row :gutter="20">
- <el-col :span="8"><el-form-item label="闃呰鑳藉姏"><el-select v-model="form.reading" style="width:100%"><el-option v-for="o in gradeOptions" :key="o" :label="o" :value="o" /></el-select></el-form-item></el-col>
- <el-col :span="8"><el-form-item label="涔﹀啓鑳藉姏"><el-select v-model="form.writing" style="width:100%"><el-option v-for="o in gradeOptions" :key="o" :label="o" :value="o" /></el-select></el-form-item></el-col>
- <el-col :span="8"><el-form-item label="璁$畻鑳藉姏"><el-select v-model="form.math" style="width:100%"><el-option v-for="o in gradeOptions" :key="o" :label="o" :value="o" /></el-select></el-form-item></el-col>
+ <el-col :span="8"><el-form-item label="闃呰鑳藉姏"><el-select v-model="form.reading" class="w-sm"><el-option v-for="o in gradeOptions" :key="o" :label="o" :value="o" /></el-select></el-form-item></el-col>
+ <el-col :span="8"><el-form-item label="涔﹀啓鑳藉姏"><el-select v-model="form.writing" class="w-sm"><el-option v-for="o in gradeOptions" :key="o" :label="o" :value="o" /></el-select></el-form-item></el-col>
+ <el-col :span="8"><el-form-item label="璁$畻鑳藉姏"><el-select v-model="form.math" class="w-sm"><el-option v-for="o in gradeOptions" :key="o" :label="o" :value="o" /></el-select></el-form-item></el-col>
</el-row>
<el-form-item label="缁煎悎缁撹"><el-input v-model="form.result" type="textarea" :rows="2" /></el-form-item>
<el-divider content-position="left">琛屼负璇勪及</el-divider>
<el-row :gutter="20">
- <el-col :span="8"><el-form-item label="璇勪及鏃ユ湡"><el-date-picker v-model="form.behaviorDate" value-format="yyyy-MM-dd" style="width:100%" /></el-form-item></el-col>
+ <el-col :span="8"><el-form-item label="璇勪及鏃ユ湡"><el-date-picker v-model="form.behaviorDate" value-format="yyyy-MM-dd" class="w-md" /></el-form-item></el-col>
<el-col :span="4"><el-form-item label="娉ㄦ剰鍔�"><el-input-number v-model="form.attention" :min="0" :max="36" /></el-form-item></el-col>
<el-col :span="4"><el-form-item label="澶氬姩"><el-input-number v-model="form.hyperactivity" :min="0" :max="36" /></el-form-item></el-col>
<el-col :span="4"><el-form-item label="鍐插姩"><el-input-number v-model="form.impulsivity" :min="0" :max="36" /></el-form-item></el-col>
@@ -120,22 +145,29 @@
</el-row>
<el-row :gutter="20">
<el-col :span="8"><el-form-item label="鎬诲垎"><el-input-number v-model="form.totalScore" disabled /></el-form-item></el-col>
- <el-col :span="8"><el-form-item label="璇勪环"><el-select v-model="form.evaluation" style="width:100%"><el-option label="姝e父鑼冨洿" value="姝e父鑼冨洿" /><el-option label="杞诲害寮傚父" value="杞诲害寮傚父" /><el-option label="涓害寮傚父" value="涓害寮傚父" /></el-select></el-form-item></el-col>
+ <el-col :span="8"><el-form-item label="璇勪环"><el-select v-model="form.evaluation" class="w-sm"><el-option label="姝e父鑼冨洿" value="姝e父鑼冨洿" /><el-option label="杞诲害寮傚父" value="杞诲害寮傚父" /><el-option label="涓害寮傚父" value="涓害寮傚父" /></el-select></el-form-item></el-col>
</el-row>
<el-divider content-position="left">骞查璁粌璁板綍</el-divider>
<el-row :gutter="20">
- <el-col :span="8"><el-form-item label="璁粌鏃ユ湡"><el-date-picker v-model="form.trainDate" value-format="yyyy-MM-dd" style="width:100%" /></el-form-item></el-col>
- <el-col :span="8"><el-form-item label="璁粌绫诲瀷"><el-input v-model="form.trainingType" /></el-form-item></el-col>
+ <el-col :span="8"><el-form-item label="璁粌鏃ユ湡"><el-date-picker v-model="form.trainDate" value-format="yyyy-MM-dd" class="w-md" /></el-form-item></el-col>
+ <el-col :span="8"><el-form-item label="璁粌绫诲瀷"><el-input v-model="form.trainingType" class="w-sm" /></el-form-item></el-col>
<el-col :span="8"><el-form-item label="鏃堕暱(鍒嗛挓)"><el-input-number v-model="form.duration" :min="10" :max="120" /></el-form-item></el-col>
</el-row>
<el-form-item label="璁粌鍐呭"><el-input v-model="form.trainContent" type="textarea" :rows="2" /></el-form-item>
<el-row :gutter="20">
- <el-col :span="8"><el-form-item label="璁粌甯�"><el-input v-model="form.trainer" /></el-form-item></el-col>
- <el-col :span="8"><el-form-item label="杩涘睍"><el-select v-model="form.progress" style="width:100%"><el-option label="鑹ソ" value="鑹ソ" /><el-option label="涓�鑸�" value="涓�鑸�" /><el-option label="缂撴參" value="缂撴參" /></el-select></el-form-item></el-col>
+ <el-col :span="8"><el-form-item label="璁粌甯�"><el-input v-model="form.trainer" class="w-sm" /></el-form-item></el-col>
+ <el-col :span="8"><el-form-item label="杩涘睍"><el-select v-model="form.progress" class="w-sm"><el-option label="鑹ソ" value="鑹ソ" /><el-option label="涓�鑸�" value="涓�鑸�" /><el-option label="缂撴參" value="缂撴參" /></el-select></el-form-item></el-col>
</el-row>
</el-form>
</el-card>
+
+ </el-tab-pane>
+
+ <el-tab-pane label="鏈嶅姟璁板綍" name="service">
+ <ServiceRecords :patid="archive.patid" />
+ </el-tab-pane>
+ </el-tabs>
</template>
<div v-else class="empty-wrap">妗f涓嶅瓨鍦ㄦ垨宸插垹闄�</div>
</div>
@@ -144,13 +176,15 @@
<script>
import EditableTable from "../components/EditableTable.vue";
import InfoField from "./InfoField.vue";
+import ServiceRecords from "../components/ServiceRecords.vue";
+import { loadArchives, saveArchives } from "../types";
export default {
name: "ChildHealthArchiveDetail",
- components: { EditableTable, InfoField },
+ components: { EditableTable, InfoField, ServiceRecords },
data() {
return {
- loading: false, archive: null, editing: false, activeTab: "growth",
+ loading: false, archive: null, editing: true, activeTab: "growth", mainTab: "detail",
relationOptions: [
{ label:"鐖朵翰", value:"father" },{ label:"姣嶄翰", value:"mother" },{ label:"绁栫埗", value:"grandfather" },{ label:"绁栨瘝", value:"grandmother" },{ label:"鍏朵粬", value:"other" },
],
@@ -203,21 +237,17 @@
const map = { standalone:"鐙珛寤烘。", outpatient:"闂ㄨ瘖璁板綍", inpatient:"鍦ㄩ櫌璁板綍" };
return map[this.archive?.sourcePage] || this.archive?.sourcePage || "-";
},
- relationLabel() {
- const r = this.relationOptions.find(o => o.value === (this.archive?.parentInfo?.relation));
- return r ? r.label : "-";
- },
},
created() {
const id = this.$route.query.id;
- if (id) this.loadArchive(id);
+ if (id) this.loadArchive(id, this.$route.query.edit == 1);
},
methods: {
- loadArchive(id) {
+ loadArchive(id, autoEdit) {
this.loading = true;
- const all = JSON.parse(localStorage.getItem("patientArchives") || "[]");
- this.archive = all.find(item => item.id === id) || null;
+ this.archive = loadArchives().find((item) => item.id === id) || null;
if (this.archive) {
+ if (!this.archive.parentInfo) this.archive.parentInfo = {};
if (this.archive.subType === 'highRisk') {
this.activeTab = "growth";
this.growthData = this.archive.growthData || getDefaultGrowthData();
@@ -232,6 +262,7 @@
Object.assign(this.form, this.archive.archiveForm.learningData);
}
}
+ if (autoEdit) this.editing = true;
this.loading = false;
},
toggleEdit() {
@@ -251,13 +282,24 @@
this.archive.planData = JSON.parse(JSON.stringify(this.planData));
}
this.archive.updateTime = new Date().toISOString().replace("T"," ").substring(0,19);
- const all = JSON.parse(localStorage.getItem("patientArchives") || "[]");
+ const all = loadArchives();
const idx = all.findIndex(item => item.id === this.archive.id);
if (idx >= 0) all[idx] = JSON.parse(JSON.stringify(this.archive));
- localStorage.setItem("patientArchives", JSON.stringify(all));
+ saveArchives(all);
this.$message.success("淇濆瓨鎴愬姛");
}
this.editing = !this.editing;
+ },
+ handleCloseCase() {
+ this.$modal.confirm("纭灏嗚妗f缁撴锛�").then(() => {
+ this.archive.closeStatus = 1;
+ this.archive.updateTime = new Date().toISOString().replace("T"," ").substring(0,19);
+ const all = loadArchives();
+ const idx = all.findIndex(item => item.id === this.archive.id);
+ if (idx >= 0) all[idx] = JSON.parse(JSON.stringify(this.archive));
+ saveArchives(all);
+ this.$message.success("宸茬粨妗�");
+ }).catch(() => {});
},
subTypeTag(type) { const m={highRisk:"danger",nutrition:"warning",learning:"info"}; return m[type]||""; },
},
@@ -297,6 +339,13 @@
</script>
<style lang="scss" scoped>
+// 杈撳叆妗嗗搴︼紙鎸夊瓧娈甸暱鐭尯鍒嗭級
+.w-xs { width: 90px; }
+.w-sm { width: 150px; }
+.w-md { width: 200px; }
+.w-lg { width: 280px; }
+.w-full { width: 100%; }
+
.action-bar { margin-bottom: 16px; }
.info-card { margin-bottom: 0; }
.card-header { display: flex; justify-content: space-between; align-items: center; font-size: 16px; font-weight: 600; }
--
Gitblit v1.9.3