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/patient/profile/index.vue | 1222 ++++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 798 insertions(+), 424 deletions(-)

diff --git a/src/views/patient/patient/profile/index.vue b/src/views/patient/patient/profile/index.vue
index 9427432..20af72e 100644
--- a/src/views/patient/patient/profile/index.vue
+++ b/src/views/patient/patient/profile/index.vue
@@ -1,35 +1,23 @@
 <template>
   <div class="app-container">
-    <!-- 澶撮儴鐩掑瓙 -->
-    <div class="personages">
-      <el-row :gutter="20">
-        <el-col :span="18">
-          <div class="headportrait">
-            <div class="text-center">
-              <img
-                v-imgError="require('@/assets/images/shoushuzhudaoyisheng.png')"
-                src=""
-              />
-            </div>
-            <div style="margin-left: 10px">{{ userform.name }}</div>
-            <div style="margin-left: 10px" class="text-title">
-              {{ userform.sex == 1 ? "鐢�" : "濂�" }}
-            </div>
-            <div style="margin-left: 10px" class="text-title">
-              {{ userform.age }}宀�
-            </div>
-            <div style="margin-left: 10px" class="text-title">
-              {{ userform.birthdate }}
-            </div>
-            <div style="margin-left: 10px" class="text-title">
-              {{ userform.nation }}
-            </div>
-            <div style="margin-left: 10px" class="text-title">
-              {{ userform.birthplace }}
-            </div>
-          </div></el-col
-        >
-      </el-row>
+    <!-- 鎮h�呬俊鎭ご閮� -->
+    <div class="profile-header">
+      <div class="profile-header__avatar">
+        <img
+          v-imgError="require('@/assets/images/shoushuzhudaoyisheng.png')"
+          src=""
+        />
+      </div>
+      <div class="profile-header__info">
+        <div class="profile-header__name">{{ userform.name }}</div>
+        <div class="profile-header__chips">
+          <span class="chip">{{ userform.sex == 1 ? "鐢�" : "濂�" }}</span>
+          <span class="chip">{{ userform.age }}宀�</span>
+          <span class="chip">{{ userform.birthdate }}</span>
+          <span class="chip">{{ userform.nation }}</span>
+          <span class="chip">{{ userform.birthplace }}</span>
+        </div>
+      </div>
     </div>
 
     <el-tabs type="border-card" v-model="activeName" @tab-click="handleClick">
@@ -42,25 +30,19 @@
         <span class="mulsz" slot="label"
           ><i class="el-icon-s-management"></i> 鍖荤枟妗f</span
         >
-        <el-tabs v-model="sonactiveName" @tab-click="handleClick">
+        <el-tabs v-model="sonactiveName" @tab-click="handleClickson">
           <el-tab-pane name="outpatient"
-            ><span class="mulsz" slot="label"
-              >闂ㄨ瘖({{ mznumber }})</span
-            ></el-tab-pane
+            ><span class="mulsz" slot="label">闂ㄨ瘖</span></el-tab-pane
           >
           <el-tab-pane name="inhospital"
-            ><span class="mulsz" slot="label"
-              >浣忛櫌({{ zynumber }})
-            </span></el-tab-pane
+            ><span class="mulsz" slot="label">鍦ㄩ櫌 </span></el-tab-pane
           >
           <el-tab-pane name="checkout"
-            ><span class="mulsz" slot="label"
-              >浣撴({{ jynumber }})
-            </span></el-tab-pane
+            ><span class="mulsz" slot="label">鍑洪櫌 </span></el-tab-pane
           >
         </el-tabs>
       </el-tab-pane>
-      <el-tab-pane name="monitor">
+      <!-- <el-tab-pane name="monitor">
         <span class="mulsz" slot="label"
           ><i class="el-icon-s-data"></i> 鍋ュ悍鐩戞祴</span
         >
@@ -97,7 +79,7 @@
             </span></el-tab-pane
           >
         </el-tabs></el-tab-pane
-      >
+      > -->
       <el-tab-pane name="serve">
         <span class="mulsz" slot="label"
           ><i class="el-icon-s-custom"></i> 鏈嶅姟璁板綍</span
@@ -107,133 +89,120 @@
 
     <!-- 鍋ュ悍妗f妯″潡 -->
     <div class="information-content" v-if="activeName == 'health'">
-      <div class="top-message">
-        <div class="headlines">
-          <div>鍩虹淇℃伅</div>
-          <el-button type="primary" @click="savefile">淇濆瓨鎮h�呮。妗�</el-button>
+      <div class="section-card">
+        <div class="section-card__header">
+          <span class="section-title">鍩虹淇℃伅</span>
+          <el-button type="primary" size="small" @click="savefile">淇濆瓨鎮h�呮。妗�</el-button>
         </div>
-        <div class="detailed">
-          <el-row :gutter="20">
-            <el-col :span="12"
-              ><div class="grid-content bg-purple">
-                鎮h�呭鍚嶏細<span class="spanvalue">{{ userform.name }}</span>
-              </div></el-col
-            >
-            <el-col :span="12"
-              ><div class="grid-content bg-purple">
-                鑱旂郴鐢佃瘽锛�<span class="spanvalue">{{ userform.telcode }}</span>
-              </div></el-col
-            >
-          </el-row>
-          <el-row :gutter="20">
-            <el-col :span="24"
-              ><div class="grid-content bg-purple">
-                鍑虹敓鍦帮細<span class="spanvalue">{{ userform.birthplace }}</span>
-              </div></el-col
-            >
-          </el-row>
-          <el-row :gutter="20">
-            <el-col :span="24"
-              ><div class="grid-content bg-purple">
-                灞呬綇鍦帮細<span class="spanvalue">{{
-                  userform.placeOfResidence
-                }}</span>
-              </div></el-col
-            >
-          </el-row>
-          <el-row :gutter="20">
-            <el-col :span="24"
-              ><div class="xinz-inf">
-                <el-tag
-                  :key="tag.tagname"
-                  type="success"
-                  v-for="tag in dynamicTags"
-                  closable
-                  :disable-transitions="false"
-                  @close="handleClose(tag)"
-                >
-                  {{ tag.tagname }}
-                </el-tag>
-                <el-select
-                  v-if="inputVisible"
-                  v-model="inputValue"
-                  @change="handleInputConfirm"
-                  filterable
-                  allow-create
-                  default-first-option
-                  placeholder="璇烽�夋嫨/鏌ヨ"
-                >
-                  <el-option
-                    v-for="item in options"
-                    :key="item.tagid"
-                    :label="item.tagname"
-                    :value="item.tagname"
-                  >
-                  </el-option>
-                </el-select>
-
-                <el-button
-                  v-else
-                  class="button-new-tag"
-                  size="small"
-                  @click="showInput"
-                  >+ 鏂板鏍囩</el-button
-                >
-              </div></el-col
-            >
-          </el-row>
+        <div class="section-card__body">
+          <el-form
+            ref="userform"
+            :model="userform"
+            :rules="rules"
+            label-width="110px"
+            class="profile-form"
+          >
+            <el-row :gutter="24">
+              <el-col :span="12">
+                <el-form-item label="鎮h�呭鍚�" prop="name">
+                  <el-input v-model="userform.name" placeholder="璇疯緭鍏ュ鍚�" maxlength="30"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="鑱旂郴鏂瑰紡" prop="telcode">
+                  <el-input v-model="userform.telcode" placeholder="璇疯緭鍏ヨ仈绯绘柟寮�" maxlength="30"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="浜插睘鑱旂郴鏂瑰紡" prop="name">
+                  <el-input v-model="userform.telcodewx" placeholder="璇疯緭鍏ュ鍚�" maxlength="30"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="24">
+                <el-form-item label="鍑虹敓鍦�" prop="birthplace">
+                  <el-input v-model="userform.birthplace" placeholder="鍥姐�佺渷銆佸湴甯傘�佸尯鍘裤�佽閬撶瓑璇︾粏淇℃伅" maxlength="50"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="24">
+                <el-form-item label="灞呬綇鍦�" prop="placeOfResidence">
+                  <el-input v-model="userform.placeOfResidence" placeholder="鍥姐�佺渷銆佸湴甯傘�佸尯鍘裤�佽閬撶瓑璇︾粏淇℃伅" maxlength="50"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="24">
+                <el-form-item label="鏍囩" prop="desc">
+                  <div class="xinz-inf">
+                    <el-tag
+                      :key="tag.tagname"
+                      type="success"
+                      v-for="tag in dynamicTags"
+                      v-if="tag.isoperation != 3"
+                      closable
+                      :disable-transitions="false"
+                      @close="handleClose(tag)"
+                    >
+                      {{ tag.tagname }}
+                    </el-tag>
+                    <el-select
+                      v-if="inputVisible"
+                      v-model="inputValue"
+                      @change="handleInputConfirm"
+                      filterable
+                      allow-create
+                      default-first-option
+                      placeholder="璇烽�夋嫨/鏌ヨ"
+                    >
+                      <el-option
+                        v-for="item in options"
+                        :key="item.tagid"
+                        :label="item.tagname"
+                        :value="item.tagname"
+                      >
+                      </el-option>
+                    </el-select>
+                    <el-button
+                      v-else
+                      class="button-new-tag"
+                      size="small"
+                      @click="showInput"
+                      >+ 鏂板鏍囩</el-button
+                    >
+                  </div>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </el-form>
         </div>
       </div>
-      <div class="top-message">
-        <div class="headline">鐥呭彶</div>
-        <div class="detailed">
-          <el-form ref="form" :model="form" label-width="100px">
-            <el-row>
+      <div class="section-card">
+        <div class="section-card__header">
+          <span class="section-title">鐥呭彶</span>
+        </div>
+        <div class="section-card__body">
+          <el-form :model="form" label-width="110px" class="profile-form">
+            <el-row :gutter="24">
               <el-col :span="8">
                 <el-form-item label="杩囧線鐤剧梾" prop="name">
-                  <el-input
-                    v-model="form.pastIllnesses"
-                    placeholder="璇疯緭鍏�"
-                    maxlength="30"
-                  />
+                  <el-input v-model="form.pastIllnesses" placeholder="璇疯緭鍏�" maxlength="30" />
                 </el-form-item>
               </el-col>
               <el-col :span="8">
                 <el-form-item label="鑽墿杩囨晱" prop="sex">
-                  <el-input
-                    v-model="form.drugAllergy"
-                    placeholder="璇疯緭鍏ュ叿浣撹嵂鐗�/鏃�"
-                    maxlength="30"
-                  />
+                  <el-input v-model="form.drugAllergy" placeholder="璇疯緭鍏ュ叿浣撹嵂鐗�/鏃�" maxlength="30" />
                 </el-form-item>
               </el-col>
               <el-col :span="8">
                 <el-form-item label="瀹舵棌鐥呭彶" prop="age">
-                  <el-input
-                    v-model="form.familyHistory"
-                    placeholder="璇疯緭鍏ュ叿浣撶柧鐥�/鏃�"
-                    maxlength="30"
-                  />
+                  <el-input v-model="form.familyHistory" placeholder="璇疯緭鍏ュ叿浣撶柧鐥�/鏃�" maxlength="30" />
                 </el-form-item>
               </el-col>
-            </el-row>
-            <el-row>
               <el-col :span="8">
                 <el-form-item label="鎵嬫湳鍙�" prop="name">
-                  <el-input
-                    v-model="form.surgicalHistory"
-                    placeholder="璇疯緭鍏ユ墜鏈�/鏃�"
-                    maxlength="30"
-                  />
+                  <el-input v-model="form.surgicalHistory" placeholder="璇疯緭鍏ユ墜鏈�/鏃�" maxlength="30" />
                 </el-form-item>
               </el-col>
               <el-col :span="8">
                 <el-form-item label="鐢熻偛鍙�" prop="age">
-                  <el-input
-                    v-model="form.reproductiveHistory"
-                    placeholder="璇疯緭鍏ヨ儙鏁�/鏃�"
-                    maxlength="30"
-                  />
+                  <el-input v-model="form.reproductiveHistory" placeholder="璇疯緭鍏ヨ儙鏁�/鏃�" maxlength="30" />
                 </el-form-item>
               </el-col>
               <el-col :span="8">
@@ -244,8 +213,6 @@
                   </el-radio-group>
                 </el-form-item>
               </el-col>
-            </el-row>
-            <el-row>
               <el-col :span="8">
                 <el-form-item label="鍚哥儫鎯呭喌" prop="smoking">
                   <el-radio-group v-model="form.smoking">
@@ -270,8 +237,6 @@
                   </el-radio-group>
                 </el-form-item>
               </el-col>
-            </el-row>
-            <el-row>
               <el-col :span="12">
                 <el-form-item label="楗鎯呭喌" prop="diet">
                   <el-radio-group v-model="form.diet">
@@ -279,8 +244,9 @@
                     <el-radio label="2">姝e父楗</el-radio>
                     <el-radio label="3">椋熸涓嶆尟</el-radio>
                   </el-radio-group>
-                </el-form-item> </el-col
-              ><el-col :span="12">
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
                 <el-form-item label="蹇冪悊鎯呭喌" prop="psychology">
                   <el-radio-group v-model="form.psychology">
                     <el-radio label="1">蹇冩儏鎰夋偊</el-radio>
@@ -293,21 +259,23 @@
           </el-form>
         </div>
       </div>
-      <!-- 鑱旂郴鐢佃瘽 -->
-      <div class="bottom-message">
-        <div class="headline">
-          鍙风爜缁存姢<span style="margin-right: 60px">&nbsp;&nbsp;</span>
-          <el-button type="primary" @click="addcompiletb">+鏂板</el-button>
+      <!-- 浜插睘鍙风爜缁存姢 -->
+      <div class="section-card">
+        <div class="section-card__header">
+          <span class="section-title">浜插睘鍙风爜缁存姢</span>
+          <el-button type="primary" size="small" icon="el-icon-plus" @click="addcompiletb">鏂板</el-button>
         </div>
-        <div class="Table-screen">
+        <div class="section-card__body">
           <el-table
             :data="tableData"
             style="width: 100%"
             :row-class-name="tableRowClassName"
+            stripe
+            border
           >
             <el-table-column prop="id" label="搴忓彿" width="180">
             </el-table-column>
-            <el-table-column prop="contactname" label="濮撳悕" width="180">
+            <el-table-column prop="contactname" label="濮撳悕" width="100">
             </el-table-column>
             <el-table-column prop="contactway" label="鑱旂郴鏂瑰紡" width="180">
             </el-table-column>
@@ -331,7 +299,6 @@
                   size="small"
                   >缂栬緫</el-button
                 >
-
                 <el-button @click="deltb(scope.row)" type="danger" size="small"
                   >鍒犻櫎</el-button
                 >
@@ -345,25 +312,85 @@
     <div class="medical-record" v-else-if="activeName == 'medical'">
       <!-- 闂ㄨ瘖 -->
       <div v-if="sonactiveName == 'outpatient'">
-        <el-table :data="serviceData" style="width: 100%">
-          <el-table-column prop="daya" label="灏辫瘖鏃ユ湡" width="180">
+        <el-table :data="serviceData" style="width: 100%" stripe border>
+          <el-table-column
+            label="灏辫瘖鏃堕棿"
+            align="center"
+            key="admitdate"
+            prop="admitdate"
+          >
+            <template slot-scope="scope">
+              <span>{{ formatTime(scope.row.admitdate) }}</span>
+            </template>
           </el-table-column>
-          <el-table-column prop="administrative" label="灏辫瘖绉戝" width="180">
-          </el-table-column>
-          <el-table-column prop="doctor" label="鍖荤敓"> </el-table-column>
-          <el-table-column prop="result" label="鐤剧梾璇婃柇"> </el-table-column>
-          <el-table-column prop="administrative" label="妫�楠�">
-          </el-table-column>
-          <el-table-column prop="administrative" label="妫�鏌�">
-          </el-table-column>
-          <el-table-column prop="administrative" label="鎵嬫湳">
-          </el-table-column>
-          <el-table-column prop="administrative" label="鐢ㄨ嵂">
-          </el-table-column>
-          <el-table-column prop="columcz" label="鍖诲槺" width="200">
-          </el-table-column>
-        </el-table>
 
+          <el-table-column
+            label="鐥呮鍙�"
+            width="100"
+            align="center"
+            key="outhospno"
+            prop="outhospno"
+          />
+          <el-table-column
+            label="濮撳悕"
+            width="100"
+            align="center"
+            key="patname"
+            prop="patname"
+          />
+
+          <el-table-column
+            label="鑱旂郴鐢佃瘽"
+            align="center"
+            key="telcode"
+            prop="telcode"
+            width="120"
+          />
+          <el-table-column
+            label="鍏ラ櫌璇婃柇"
+            align="center"
+            key="diagname"
+            prop="diagname"
+            width="190"
+          />
+          <el-table-column
+            label="鍑洪櫌璇婃柇"
+            align="center"
+            key="leavediagname"
+            prop="leavediagname"
+            width="190"
+          />
+
+          <el-table-column
+            label="灏辫瘖绉戝"
+            align="center"
+            key="deptname"
+            prop="deptname"
+            width="120"
+          />
+          <el-table-column
+            label="鎵�鍦ㄧ梾鍖�"
+            align="center"
+            key="leavehospitaldistrictname"
+            prop="leavehospitaldistrictname"
+            width="120"
+          />
+          <el-table-column
+            label="涓绘不鍖荤敓"
+            align="center"
+            key="drname"
+            prop="drname"
+            width="120"
+          />
+
+          <el-table-column
+            label="璐d换鎶ゅ+"
+            align="center"
+            key="nurseName"
+            prop="nurseName"
+            width="120"
+          />
+        </el-table>
         <pagination
           v-show="total > 0"
           :total="total"
@@ -374,121 +401,165 @@
       </div>
       <!-- 浣忛櫌 -->
       <div v-if="sonactiveName == 'inhospital'">
-        <el-table :data="serviceData" style="width: 100%">
-          <el-table-column prop="godaya" label="鍏ラ櫌鏃ユ湡"> </el-table-column>
-          <el-table-column prop="hospitalname" label="鍑洪櫌鏃堕棿">
-          </el-table-column>
-          <el-table-column prop="administrative" label="鐥呭尯">
-          </el-table-column>
-          <el-table-column prop="result" label="涓绘不鍖诲笀"> </el-table-column>
-          <el-table-column prop="bed" label="绠″簥鎶ゅ+"> </el-table-column>
-          <el-table-column prop="doctor" label="鍑洪櫌鐤剧梾璇婃柇">
-          </el-table-column>
-          <el-table-column prop="today" label="妫�楠�"> </el-table-column>
-          <el-table-column prop="administrative" label="妫�鏌�">
-          </el-table-column>
-          <el-table-column prop="administrative" label="鎵嬫湳">
-          </el-table-column>
-          <el-table-column prop="administrative" label="鐢ㄨ嵂">
-          </el-table-column>
-          <el-table-column prop="columcz" label="鍑洪櫌灏忕粨" width="200">
-          </el-table-column>
+        <el-table :data="serviceDatary" style="width: 100%" stripe border>
+          <el-table-column
+            label="浣忛櫌鍙�"
+            align="center"
+            key="inhospno"
+            prop="inhospno"
+            width="180"
+          />
+          <el-table-column
+            label="濮撳悕"
+            width="100"
+            align="center"
+            key="patname"
+            prop="patname"
+          />
+          <el-table-column
+            label="鑱旂郴鐢佃瘽"
+            align="center"
+            key="telcode"
+            prop="telcode"
+            width="120"
+          />
+          <el-table-column
+            label="鍏ラ櫌璇婃柇"
+            align="center"
+            key="diagname"
+            prop="diagname"
+            width="190"
+          />
+          <el-table-column
+            label="鍑洪櫌璇婃柇"
+            align="center"
+            key="leavediagname"
+            prop="leavediagname"
+            width="190"
+          />
+
+          <el-table-column
+            label="灏辫瘖绉戝"
+            align="center"
+            key="deptname"
+            prop="deptname"
+            width="120"
+          />
+          <el-table-column
+            label="鎵�鍦ㄧ梾鍖�"
+            align="center"
+            key="leavehospitaldistrictname"
+            prop="leavehospitaldistrictname"
+            width="120"
+          />
+          <el-table-column
+            label="涓绘不鍖荤敓"
+            align="center"
+            key="drname"
+            prop="drname"
+            width="120"
+          />
+
+          <el-table-column
+            label="璐d换鎶ゅ+"
+            align="center"
+            key="nurseName"
+            prop="nurseName"
+            width="120"
+          />
+          <el-table-column
+            label="搴婁綅鍙�"
+            align="center"
+            key="bedNo"
+            prop="bedNo"
+            width="120"
+          />
         </el-table>
       </div>
-      <!-- 浣撴 -->
+      <!-- 鍑洪櫌 -->
       <div v-if="sonactiveName == 'checkout'">
-        <el-table :data="serviceData" style="width: 100%">
-          <el-table-column prop="godaya" label="浣撴绫诲瀷"> </el-table-column>
-          <el-table-column prop="hospitalname" label="浣撴濂楅鍚嶇О">
-          </el-table-column>
-          <el-table-column prop="result" label="浣撴棰勭害鏃ユ湡">
-          </el-table-column>
-          <el-table-column prop="administrative" label="浣撴椤圭洰">
-          </el-table-column>
-          <el-table-column prop="administrative" label="浣撴鎶ュ憡鏃�">
-          </el-table-column>
-          <el-table-column prop="administrative" label="浣撴鎬绘鎶ュ憡">
-          </el-table-column>
+        <el-table :data="serviceDatacy" style="width: 100%" stripe border>
+          <el-table-column
+            label="浣忛櫌鍙�"
+            align="center"
+            key="inhospno"
+            prop="inhospno"
+            width="120"
+          />
+          <el-table-column
+            label="濮撳悕"
+            width="100"
+            align="center"
+            key="patname"
+            prop="patname"
+          />
+          <el-table-column
+            label="鑱旂郴鐢佃瘽"
+            align="center"
+            key="telcode"
+            prop="telcode"
+            width="120"
+          />
+          <el-table-column
+            label="鍏ラ櫌璇婃柇"
+            align="center"
+            key="diagname"
+            prop="diagname"
+            width="190"
+          />
+          <el-table-column
+            label="鍑洪櫌璇婃柇"
+            align="center"
+            key="leavediagname"
+            prop="leavediagname"
+            width="190"
+          />
+
+          <el-table-column
+            label="灏辫瘖绉戝"
+            align="center"
+            key="deptname"
+            prop="deptname"
+            width="120"
+          />
+          <el-table-column
+            label="鎵�鍦ㄧ梾鍖�"
+            align="center"
+            key="leavehospitaldistrictname"
+            prop="leavehospitaldistrictname"
+            width="120"
+          />
+          <el-table-column
+            label="涓绘不鍖荤敓"
+            align="center"
+            key="drname"
+            prop="drname"
+            width="120"
+          />
+
+          <el-table-column
+            label="璐d换鎶ゅ+"
+            align="center"
+            key="nurseName"
+            prop="nurseName"
+            width="120"
+          />
+
+          <el-table-column
+            label="搴婁綅鍙�"
+            align="center"
+            key="bedNo"
+            prop="bedNo"
+            width="120"
+          />
         </el-table>
       </div>
     </div>
 
     <!-- 鏈嶅姟璁板綍 -->
-    <div
-      class="medical-recordc"
-      style="margin-top: 20px; font-size: 20px !important"
-      v-else-if="activeName == 'serve'"
-    >
-      <div style="margin-bottom: 15px" v-for="item in record">
-        <el-card class="box-card">
-          <div
-            style="
-              font-size: 22px;
-              padding-left: 5px;
-              margin: 15px 0;
-              border-left: 4px solid rgb(190, 65, 134);
-            "
-          >
-            {{ item.name }}
-          </div>
-          <el-divider></el-divider>
-          <div style="margin-top: 10px">
-            {{ item.name }}鐘舵�侊細宸茬粓姝�<span style="color: #2775b6"
-              >锛堢粓姝㈠師鍥狅細鎮h�呯棅鎰堝洖璁跨粨鏉燂紝缁堟鏃堕棿锛�2023-12-18 12:00锛�</span
-            >
-          </div>
-          <div style="margin-top: 10px">
-            {{ item.name }}鍙戦�佹椂闂达細<span style="color: #2775b6"
-              >2023-11-23 12:00</span
-            >
-          </div>
-          <div style="margin-top: 10px">
-            {{ item.name }}瀹屾垚鏃堕棿锛�<span style="color: #2775b6"
-              >2023-12-18 12:00</span
-            >
-          </div>
-          <div style="margin-top: 10px">
-            鐤肩棝绋嬪害锛�<span style="color: #2775b6">涓害</span>
-          </div>
-          <div
-            style="
-              font-size: 20px;
-              padding-left: 5px;
-              margin: 15px 0;
-              border-left: 4px solid rgb(65, 161, 190);
-            "
-          >
-            浜哄伐{{ item.name }}璁板綍
-          </div>
-          <div style="margin-top: 10px">
-            <el-row :gutter="20">
-              <el-col :span="6"
-                >{{ item.name }}鏃ユ湡锛�
-                <span style="color: #2775b6">2023-11-22 11:22</span></el-col
-              >
-              <el-col :span="6"
-                >{{ item.name }}浜猴細
-                <span style="color: #2775b6">鍚村皬榫�</span></el-col
-              >
-              <el-col :span="6"
-                >鎮h�呴厤鍚堝害锛� <span style="color: #2775b6">楂�</span></el-col
-              >
-            </el-row>
-          </div>
-          <div style="margin-top: 10px">
-            {{ item.name }}缁撴灉锛�
-            <span style="color: #2775b6">鎮h�呯棅鎰堬紝韬綋鍊嶆</span>
-          </div>
-          <div style="margin-top: 10px">
-            {{ item.name }}澶囨敞锛�
-            <span style="color: #2775b6">鎻愰啋娉ㄦ剰楗鍋ュ悍</span>
-          </div>
-        </el-card>
-      </div>
-    </div>
+    <ServiceRecords v-else-if="activeName == 'serve'" :patid="id" />
     <!-- 鍋ュ悍鐩戞祴 -->
-    <div class="medical-record" v-show="activeName == 'monitor'">
-      <!-- 琛�鍘嬪浘鏍� -->
+    <!-- <div class="medical-record" v-show="activeName == 'monitor'">
       <div v-show="sontwoactiveName == 'blood'" style="display: flex">
         <div
           id="xyeCharts"
@@ -506,7 +577,6 @@
           </el-card>
         </div>
       </div>
-      <!-- 琛�绯� -->
       <div v-show="sontwoactiveName == 'glucose'" style="display: flex">
         <div
           id="xteCharts"
@@ -524,7 +594,6 @@
           </el-card>
         </div>
       </div>
-      <!-- 浣撻噸 -->
       <div v-show="sontwoactiveName == 'weight'" style="display: flex">
         <div
           id="tzeCharts"
@@ -542,7 +611,6 @@
           </el-card>
         </div>
       </div>
-      <!-- 蹇冪巼 -->
       <div v-show="sontwoactiveName == 'heartrate'" style="display: flex">
         <div
           id="xleCharts"
@@ -560,7 +628,6 @@
           </el-card>
         </div>
       </div>
-      <!-- 琛�姘� -->
       <div v-show="sontwoactiveName == 'bloodoxygen'" style="display: flex">
         <div
           id="xueyangeCharts"
@@ -578,7 +645,6 @@
           </el-card>
         </div>
       </div>
-      <!-- 浣撴俯 -->
       <div v-show="sontwoactiveName == 'animalheat'" style="display: flex">
         <div
           id="tweCharts"
@@ -596,15 +662,15 @@
           </el-card>
         </div>
       </div>
-    </div>
+    </div> -->
 
     <el-dialog :title="titletb" :visible.sync="AddanumberVisible">
       <el-form :model="numberform" label-width="100px">
-        <el-form-item label="濮撳悕">
+        <el-form-item label="濮撳悕" width="100">
           <el-input v-model="numberform.contactname"></el-input>
         </el-form-item>
         <el-form-item label="鑱旂郴鐢佃瘽">
-          <el-input v-model="numberform.contactway"></el-input>
+          <el-input v-model="numberform.telcode"></el-input>
         </el-form-item>
         <el-form-item label="鍏崇郴">
           <el-input v-model="numberform.relation"></el-input>
@@ -636,11 +702,17 @@
   delcontactinformation,
   listcontactinformation,
   alterpatient,
+  Patientclinic,
 } from "@/api/patient/homepage";
+
+import { getsearchrResults } from "@/api/AiCentre/index";
+import ServiceRecords from "@/views/patient/archives/components/ServiceRecords.vue";
+import { listPatouthosp } from "@/api/smartor/patouthosp";
+import { listpatient } from "@/api/patient/record";
 
 export default {
   name: "Profile",
-  components: { userAvatar, userInfo, resetPwd, SFtable },
+  components: { userAvatar, userInfo, resetPwd, SFtable, ServiceRecords },
   data() {
     return {
       userform: {},
@@ -659,19 +731,39 @@
       id: "",
       loading: false,
       activeName: "health", //涓�绫诲鑸�
-      sonactiveName: "outpatient", //鍋ュ悍鐩戞祴瀵艰埅
+      sonactiveName: "inhospital", //鍋ュ悍鐩戞祴瀵艰埅
       sontwoactiveName: "blood", //鍖荤枟妗f瀵艰埅
       dynamicTags: [],
       record: [
         {
           name: "瀹f暀浠诲姟",
+          serviceType: "4",
+          templatename: "绠¢ゲ瀹f暀涓�鏈�",
+          createTime: "2024-11-10",
+          finishtime: "2024-11-12",
+          createBy: "鐜嬫斂",
+          drname: "鍒樻槑",
+          nurseName: "寮犳窇鐞�",
+          excep: "0",
+          deptname: "鍛煎惛绉�",
+          leavehospitaldistrictname: "浜旂梾鍖�",
         },
         {
-          name: "閫氱煡浠诲姟",
+          name: "闅忚浠诲姟",
+          serviceType: "2",
+          templatename: "蹇冭绠¢殢璁夸竴鏈�",
+          createTime: "2024-11-11",
+          finishtime: "2024-11-14",
+          createBy: "绔犵▼",
+          drname: "鍒樻槑",
+          nurseName: "鏉庝附",
+          excep: "0",
+          deptname: "鍛煎惛绉�",
+          leavehospitaldistrictname: "浜旂梾鍖�",
         },
-        {
-          name: "闂嵎璋冩煡",
-        },
+        // {
+        //   name: "闂嵎璋冩煡",
+        // },
       ],
       inputVisible: false,
       AddanumberVisible: false,
@@ -709,15 +801,9 @@
           address: "89",
         },
       ],
-      serviceData: [
-        {
-          daya: "2023-12-12",
-          hospitalname: "鍗忓拰",
-          result: "闊у甫鎷変激",
-          administrative: "楠ㄧ",
-          doctor: "鍚村ぇ榫�",
-        },
-      ],
+      serviceData: [],
+      serviceDatary: [],
+      serviceDatacy: [],
       options: [
         {
           value: "1",
@@ -764,6 +850,39 @@
         { label: "娴嬮噺鏃堕棿", width: "", prop: "name" },
         { label: "浣撴俯", width: "", prop: "sex" },
       ],
+      // 琛ㄥ崟鏍¢獙
+      rules: {
+        name: [
+          { required: true, message: "鐢ㄦ埛鍚嶇О涓嶈兘涓虹┖", trigger: "blur" },
+          {
+            min: 2,
+            max: 20,
+            message: "鐢ㄦ埛鍚嶇О闀垮害蹇呴』浠嬩簬 2 鍜� 20 涔嬮棿",
+            trigger: "blur",
+          },
+        ],
+
+        sex: [{ required: true, message: "鎬у埆涓嶈兘涓虹┖", trigger: "blur" }],
+        age: [{ required: true, message: "骞撮緞涓嶈兘涓虹┖", trigger: "blur" }],
+        nation: [{ required: true, message: "姘戞棌涓嶈兘涓虹┖", trigger: "blur" }],
+        telcode: [
+          { required: true, message: "鑱旂郴鏂瑰紡涓嶈兘涓虹┖", trigger: "blur" },
+          {
+            pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
+            message: "璇疯緭鍏ユ纭殑鎵嬫満鍙风爜",
+            trigger: "blur",
+          },
+        ],
+        idcardtype: [
+          { required: true, message: "璇佷欢绫诲瀷涓嶈兘涓虹┖", trigger: "blur" },
+        ],
+        idcardno: [
+          { required: true, message: "璇佷欢鍙疯兘涓虹┖", trigger: "blur" },
+        ],
+        placeOfResidence: [
+          { required: true, message: "灞呬綇鍦颁笉鑳戒负绌�", trigger: "blur" },
+        ],
+      },
     };
   },
   created() {
@@ -788,13 +907,39 @@
   },
 
   methods: {
-    // 鏌ヨ妗f鍒楄〃淇℃伅
-    getList() {
+    // 鏌ヨ鍖荤枟妗f鍚勫垪琛ㄤ俊鎭�
+    getList(type) {
       this.loading = true;
+      if (type == 0) {
+        // 闂ㄨ瘖璁板綍
+        listPatouthosp({ patid: this.id }).then((response) => {
+          if (response.code == 200) {
+            this.serviceData = response.rows;
+            // this.serviceData = [];
+          }
+        });
+      } else if (type == 1) {
+        listpatient({ patid: this.id, cry: 0 }).then((response) => {
+          if (response.code == 200) {
+            this.serviceDatary = response.rows;
+          }
+        });
+      } else if (type == 2) {
+        listpatient({ patid: this.id, cry: 1 }).then((response) => {
+          if (response.code == 200) {
+            this.serviceDatacy = response.rows;
+            console.log(this.serviceDatacy);
+            this.$forceUpdate();
+          }
+        });
+      }
     },
     getcontactlist() {
       listcontactinformation({ patid: this.id }).then((response) => {
         this.tableData = response.rows;
+        if (this.tableData.length) {
+          this.userform.telcodewx = this.tableData[0].contactway;
+        }
       });
     },
     processElement(element) {
@@ -812,7 +957,7 @@
         this.userform = response.rows[0];
         // this.dynamicTags = response.rows[0].tagList;
         this.dynamicTags = response.rows[0].tagList.map(this.processElement);
-        console.log(this.dynamicTags);
+        this.getcontactlist();
       });
       // 鐥呭彶淇℃伅
       getmedicalhistory({ pid: this.id }).then((res) => {
@@ -821,21 +966,24 @@
         }
       });
       // 鑱旂郴淇℃伅
-      this.getcontactlist();
     },
     // 淇濆瓨鎮h�呮。妗�
     savefile() {
-      // this.userform.tagList = this.dynamicTags;
-      this.userform.isoperation = 2;
-      alterpatient(this.userform).then((res) => {
-        if (res.code == 200) {
-          this.$modal.msgSuccess("鍩虹淇℃伅淇濆瓨鎴愬姛");
-        } else {
-          this.$modal.msgError("鍩虹淇℃伅淇敼澶辫触");
+      this.$refs["userform"].validate((valid) => {
+        if (valid) {
+          this.userform.isoperation = 2;
+          this.userform.tagList = this.dynamicTags;
+          alterpatient(this.userform).then((res) => {
+            if (res.code == 200) {
+              this.$modal.msgSuccess("鍩虹淇℃伅淇濆瓨鎴愬姛");
+            } else {
+              this.$modal.msgError("鍩虹淇℃伅淇敼澶辫触");
+            }
+          });
+          // 鐥呭彶
+          this.medicalhistory();
         }
       });
-      // 鐥呭彶
-      this.medicalhistory();
     },
     // 鐥呭彶
     medicalhistory() {
@@ -943,7 +1091,13 @@
     },
     // tab鍒囨崲
     handleClick(tab, event) {
-      console.log(tab, event);
+      if (tab.index == "1") {
+        this.getList(1);
+      }
+    },
+    handleClickson(tab, event) {
+      console.log(tab, "son");
+      this.getList(tab.index);
     },
     // 鑱旂郴鏂瑰紡鏂板
     Addanumber() {},
@@ -952,7 +1106,7 @@
     gettabList() {
       const tagqueryParams = {
         pageNum: 1,
-        pageSize: 1000,
+        pageSize: 10000,
         tagcategoryid: "0",
       };
       listtag(tagqueryParams).then((response) => {
@@ -977,8 +1131,8 @@
     },
     handleClose(tag) {
       const lindex = this.dynamicTags.indexOf(tag);
-      this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1);
-      this.userform.tagList[lindex].isoperation = 3;
+      // this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1);
+      this.dynamicTags[lindex].isoperation = 3;
     },
 
     showInput() {
@@ -1006,7 +1160,7 @@
             };
           }
           console.log(tagvalue);
-          this.userform.tagList.push(tagvalue);
+          // this.userform.tagList.push(tagvalue);
           this.dynamicTags.push(tagvalue);
           console.log(this.userform.tagList);
           console.log(this.dynamicTags);
@@ -1473,134 +1627,354 @@
 </script>
 
 <style lang="scss" scoped>
-.personages {
-  height: 88px;
-  width: 100%;
-  background-color: #5e86f9;
-  border-radius: 5px;
-  padding: 20px;
-  margin-bottom: 10px;
-  line-height: 48px;
-  font-size: 25px;
-  font-weight: 600;
-  color: #ffffff;
-  .headportrait {
-    display: flex;
-    .text-center {
-      width: 55px;
-      height: 55px;
-      margin-right: 10px;
-      img {
-        width: 100%;
-        height: 100%;
-        border-radius: 50%;
-      }
+$primary: #3f6ef0;
+
+// ===== 鎮h�呬俊鎭ご閮� =====
+.profile-header {
+  position: relative;
+  display: flex;
+  align-items: center;
+  padding: 26px 32px;
+  margin-bottom: 16px;
+  border-radius: 14px;
+  overflow: hidden;
+  color: #fff;
+  background: linear-gradient(120deg, #3f6ef0 0%, #5b8cff 55%, #78a9ff 100%);
+  box-shadow: 0 8px 24px rgba(63, 110, 240, 0.26);
+
+  &::before {
+    content: "";
+    position: absolute;
+    right: -70px;
+    top: -90px;
+    width: 280px;
+    height: 280px;
+    border-radius: 50%;
+    background: rgba(255, 255, 255, 0.09);
+  }
+  &::after {
+    content: "";
+    position: absolute;
+    right: 90px;
+    bottom: -130px;
+    width: 230px;
+    height: 230px;
+    border-radius: 50%;
+    background: rgba(255, 255, 255, 0.06);
+  }
+
+  &__avatar {
+    position: relative;
+    z-index: 1;
+    width: 76px;
+    height: 76px;
+    flex-shrink: 0;
+    border-radius: 50%;
+    padding: 3px;
+    background: rgba(255, 255, 255, 0.4);
+    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.18);
+
+    img {
+      width: 100%;
+      height: 100%;
+      border-radius: 50%;
+      object-fit: cover;
+      background: #eef2fb;
     }
-    .text-title {
-      font-size: 20px;
+  }
+
+  &__info {
+    position: relative;
+    z-index: 1;
+    margin-left: 22px;
+    min-width: 0;
+  }
+
+  &__name {
+    font-size: 24px;
+    font-weight: 700;
+    letter-spacing: 1px;
+    line-height: 1.3;
+  }
+
+  &__chips {
+    display: flex;
+    flex-wrap: wrap;
+    gap: 10px;
+    margin-top: 12px;
+
+    .chip {
+      padding: 4px 14px;
+      font-size: 13px;
       font-weight: 500;
-      color: #ecfcfc;
+      border-radius: 999px;
+      background: rgba(255, 255, 255, 0.2);
+      border: 1px solid rgba(255, 255, 255, 0.3);
+      color: #f5f8ff;
+      line-height: 1.5;
     }
   }
 }
-.xinz-inf {
-  font-size: 18px;
-  // white-space: nowrap;
+
+// ===== Tabs =====
+::v-deep .el-tabs--border-card {
+  border: none;
+  border-radius: 12px;
+  box-shadow: 0 2px 12px rgba(0, 0, 0, 0.05);
   overflow: hidden;
-  text-overflow: ellipsis;
 
-  line-height: 48px;
+  > .el-tabs__header {
+    margin: 0;
+    background: #fff;
+    border-bottom: 1px solid #eef0f4;
 
-  .el-tag + .el-tag {
-    margin-left: 10px;
+    .el-tabs__nav {
+      border: none;
+
+      .el-tabs__item {
+        height: 54px;
+        line-height: 54px;
+        font-size: 15px;
+        color: #606266;
+        border: none !important;
+
+        .mulsz {
+          font-size: 15px;
+        }
+
+        &.is-active {
+          color: $primary;
+          font-weight: 600;
+          background: #f3f7ff;
+          box-shadow: inset 0 -3px 0 $primary;
+        }
+      }
+    }
   }
+
+  > .el-tabs__content {
+    padding: 0;
+  }
+}
+
+// ===== 鍋ュ悍妗f鍗$墖 =====
+.information-content {
+  margin-top: 16px;
+}
+
+.section-card {
+  margin-bottom: 16px;
+  background: #fff;
+  border-radius: 12px;
+  box-shadow: 0 2px 12px rgba(0, 0, 0, 0.05);
+  overflow: hidden;
+
+  &__header {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    padding: 16px 24px;
+    border-bottom: 1px solid #f0f2f5;
+
+    .section-title {
+      position: relative;
+      padding-left: 12px;
+      font-size: 16px;
+      font-weight: 600;
+      color: #303133;
+
+      &::before {
+        content: "";
+        position: absolute;
+        left: 0;
+        top: 50%;
+        transform: translateY(-50%);
+        width: 4px;
+        height: 16px;
+        border-radius: 2px;
+        background: $primary;
+      }
+    }
+  }
+
+  &__body {
+    padding: 20px 24px 4px;
+  }
+}
+
+// 琛ㄥ崟
+.profile-form {
+  .el-form-item {
+    margin-bottom: 18px;
+  }
+
+  ::v-deep .el-form-item__label {
+    color: #606266;
+    font-weight: 500;
+  }
+
+  ::v-deep .el-input__inner {
+    border-radius: 6px;
+  }
+}
+
+// 鏍囩
+.xinz-inf {
+  line-height: 40px;
+
+  .el-tag {
+    margin-bottom: 6px;
+    border-radius: 4px;
+
+    & + .el-tag {
+      margin-left: 8px;
+    }
+  }
+
   .button-new-tag {
-    margin-left: 10px;
+    margin-left: 8px;
     height: 32px;
     line-height: 30px;
     padding-top: 0;
     padding-bottom: 0;
   }
+
   .input-new-tag {
     width: 90px;
-    margin-left: 10px;
+    margin-left: 8px;
     vertical-align: bottom;
   }
 }
-.el-tabs--border-card {
-  // font-size: 25px;
-  .mulsz {
-    font-size: 25px;
-    margin-top: 20px;
+
+// ===== 鍖荤枟妗f琛ㄦ牸 =====
+.medical-record {
+  margin-top: 16px;
+  padding: 24px;
+  background: #fff;
+  border-radius: 12px;
+  box-shadow: 0 2px 12px rgba(0, 0, 0, 0.05);
+
+  ::v-deep .el-table {
+    th.el-table__cell {
+      background: #f5f7fb;
+      color: #303133;
+      font-weight: 600;
+    }
+
+    .el-table__row td {
+      padding: 10px 0;
+    }
+
+    .el-table__row--striped td {
+      background: #fafbfd;
+    }
+
+    .el-table__row:hover > td {
+      background: #f3f7ff !important;
+    }
   }
 }
-.information-content {
-  margin-top: 20px;
-  background: #ffffff;
-  border: 1px solid #dcdfe6;
-  -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
-    0 0 6px 0 rgba(0, 0, 0, 0.04);
-  .top-message {
-    margin-top: 25px;
-    margin-left: 100px;
-    .detailed {
-      width: 88%;
-      border-radius: 8px;
-      padding: 30px;
-      margin-bottom: 30px;
-      background-color: #ddf0f8;
-      .bg-purple {
-        margin-bottom: 20px;
-      }
-      .spanvalue {
-        display: inline-block;
-        min-width: 200px;
-        border-bottom: 1px solid rgb(172, 172, 172);
-      }
+
+// 鍗$墖鍐呰〃鏍硷紙浜插睘鍙风爜锛�
+.section-card__body {
+  ::v-deep .el-table {
+    th.el-table__cell {
+      background: #f5f7fb;
+      color: #303133;
+      font-weight: 600;
+    }
+  }
+}
+
+// ===== 鏈嶅姟璁板綍 =====
+.service-record {
+  margin-top: 16px;
+
+  .service-item {
+    margin-bottom: 16px;
+  }
+
+  .service-card {
+    border-radius: 12px;
+    box-shadow: 0 2px 12px rgba(0, 0, 0, 0.05);
+
+    ::v-deep .el-card__body {
+      padding: 20px 24px;
     }
   }
 
-  .headline {
-    font-size: 25px;
-    padding-left: 5px;
-    margin-bottom: 10px;
-    border-left: 8px solid rgb(65, 161, 190);
-  }
-  .headlines {
-    font-size: 25px;
+  .service-card__header {
     display: flex;
-    width: 88%;
+    align-items: center;
     justify-content: space-between;
-    padding-left: 5px;
-    margin-bottom: 10px;
-    border-left: 8px solid rgb(65, 161, 190);
+    padding-bottom: 14px;
+    border-bottom: 1px dashed #eef0f4;
   }
-  .bottom-message {
-    margin-bottom: 25px;
-    margin-left: 100px;
-    .Table-screen {
-      width: 88%;
-      padding: 30px;
-      margin-bottom: 30px;
-      border-radius: 8px;
-      background-color: #ddf0f8;
-      font-size: 20px !important;
+
+  .service-card__title {
+    display: flex;
+    align-items: center;
+    gap: 12px;
+  }
+
+  .service-badge {
+    display: inline-block;
+    padding: 4px 12px;
+    font-size: 13px;
+    font-weight: 600;
+    color: $primary;
+    background: #eef4ff;
+    border-radius: 6px;
+  }
+
+  .service-name {
+    font-size: 16px;
+    font-weight: 600;
+    color: #303133;
+  }
+
+  .service-status {
+    padding: 4px 12px;
+    font-size: 13px;
+    border-radius: 999px;
+
+    &.is-ok {
+      color: #12a182;
+      background: #e8f7f1;
+    }
+
+    &.is-bad {
+      color: #e0564c;
+      background: #fdeeee;
+    }
+  }
+
+  .service-grid {
+    display: grid;
+    grid-template-columns: repeat(4, 1fr);
+    gap: 18px 24px;
+    padding-top: 16px;
+  }
+
+  .service-cell {
+    display: flex;
+    flex-direction: column;
+    gap: 4px;
+
+    .s-label {
+      font-size: 12px;
+      color: #909399;
+    }
+
+    .s-value {
+      font-size: 14px;
+      color: #303133;
     }
   }
 }
-.medical-record {
-  margin-top: 20px;
-  margin: 20px;
-  padding: 30px;
-  background: #ffffff;
-  border: 1px solid #dcdfe6;
-  -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
-    0 0 6px 0 rgba(0, 0, 0, 0.04);
-}
-.sontwoactiveName {
-  margin: 0 auto;
-}
-::v-deep.el-table .warning-row {
-  background: oldlace;
+
+// 榛樿鑱旂郴鏂瑰紡楂樹寒琛�
+::v-deep .el-table .warning-row {
+  background: #fff7e6;
 }
 </style>

--
Gitblit v1.9.3