档案页修改

This commit is contained in:
jingna 2025-08-06 19:26:41 +08:00
parent 52a387437f
commit 7dd5545ba0
6 changed files with 377 additions and 203 deletions

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="18px" height="20px" xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(1 0 0 1 -1758 -448 )">
<path d="M 0.922433035714286 0 L 11.0350864955357 0 C 11.2741777312329 0.0265979876876923 11.503892725468 0.118942562722911 11.6756417410714 0.284096575797872 L 17.7181222098214 6.09443567154255 C 17.8972184278233 6.26665022859307 17.9983236115259 6.50361568698034 18 6.75116356382979 L 18 19.0591755319149 C 17.9983258928571 19.5640791223404 17.5860770089286 19.9734042553191 17.0775669642857 20 L 0.922433035714286 20 C 0.413922991071429 19.9734042553191 0.00167410714285714 19.5640791223404 0 19.0591755319149 L 0 0.940824468085106 C 0.00167410714285714 0.435920877659574 0.413922991071429 0.0265957446808511 0.922433035714286 0 Z M 14.4995675223214 15.1944813829787 C 14.4995675223214 14.3338389295213 13.7968610491071 13.6361369680851 12.9300920758929 13.6361369680851 L 5.09087611607143 13.6361369680851 C 4.22406529017857 13.6361369680851 3.52140066964286 14.3338389295213 3.52140066964286 15.1944813829787 C 3.52140066964286 16.0551238364362 4.22406529017857 16.7528257978723 5.09087611607143 16.7528257978723 L 12.9300920758929 16.7528257978723 C 13.7968610491071 16.7528257978723 14.4995675223214 16.0551238364362 14.4995675223214 15.1944813829787 Z M 14.4995675223214 10 C 14.4995675223214 9.13935754654255 13.7968610491071 8.44165558510638 12.9300920758929 8.44165558510638 L 5.09087611607143 8.44165558510638 C 4.22406529017857 8.44165558510638 3.52140066964286 9.13935754654255 3.52140066964286 10 C 3.52140066964286 10.8606424534574 4.22406529017857 11.5583444148936 5.09087611607143 11.5583444148936 L 12.9300920758929 11.5583444148936 C 13.7968610491071 11.5583444148936 14.4995675223214 10.8606424534574 14.4995675223214 10 Z M 9.01046316964286 4.80551861702128 C 9.01046316964286 3.94487616356383 8.30775669642857 3.24717420212766 7.44098772321429 3.24717420212766 L 5.09087611607143 3.24717420212766 C 4.22406529017857 3.24717420212766 3.52140066964286 3.94487616356383 3.52140066964286 4.80551861702128 C 3.52140066964286 5.66616107047872 4.22406529017857 6.36386303191489 5.09087611607143 6.36386303191489 L 7.44098772321429 6.36386303191489 C 8.30775669642857 6.36386303191489 9.01046316964286 5.66616107047872 9.01046316964286 4.80551861702128 Z " fill-rule="nonzero" fill="#ffffff" stroke="none" transform="matrix(1 0 0 1 1758 448 )" />
</g>
</svg>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="18px" height="18px" xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(1 0 0 1 -1758 -474 )">
<path d="M 17.9999999999999 4.49999999999989 C 17.9999999999999 3.11928812542294 16.8807118745769 1.99999999999989 15.5 2 L 12.449 1.99999999999989 C 12.2114408432971 0.836202448393578 11.1877958746828 0.000232690439815997 10 0 L 7.99999999999994 0 C 6.81257983768819 0.000707623411813074 5.78948386378374 0.836570347189877 5.55200000000002 2 L 2.5 1.99999999999989 C 1.119288125423 1.99999999999989 0 3.11928812542294 0 4.5 C 0 4.77614237491537 0.223857625084577 5 0.5 5 L 2.5 5 L 2.5 16 C 2.5 17.1045694996616 3.39543050033842 18 4.5 18 L 13.5 18 C 14.6045694996616 18 15.5 17.1045694996616 15.5 16 L 15.5 5 L 17.5 5 C 17.7761423749154 5 18 4.77614237491537 18 4.5 Z M 6.584 2 C 6.79610970339127 1.40006172614665 7.36366998764606 0.999242316362142 8 1 L 10 1 C 10.6355961099298 1.000090495221 11.2021346343182 1.40075423241217 11.414 2 L 6.584 2 Z M 14.5 5 L 14.5 16 C 14.5 16.5522847498308 14.0522847498308 17 13.5 17 L 4.5 17 C 3.94771525016921 17 3.5 16.5522847498308 3.5 16 L 3.5 5 L 14.5 5 Z M 16.914 4 L 15.5 4 L 1.084 4 C 1.29598764058022 3.40040812919494 1.86303690347711 2.99966660064604 2.49900000000002 3 L 15.499 3 C 16.1349630965229 2.99966660064604 16.7020123594198 3.40040812919494 16.914 4 Z M 9 15 C 9.27614237491542 15 9.5 14.7761423749154 9.5 14.5 L 9.5 7.5 C 9.5 7.22385762508463 9.27614237491542 7 9 7 C 8.72385762508458 7 8.5 7.22385762508463 8.5 7.5 L 8.5 14.5 C 8.5 14.7761423749154 8.72385762508458 15 9 15 Z M 6 15 C 6.27614237491542 15 6.5 14.7761423749154 6.5 14.5 L 6.5 7.5 C 6.5 7.22385762508463 6.27614237491542 7 6 7 C 5.72385762508458 7 5.5 7.22385762508463 5.5 7.5 L 5.5 14.5 C 5.5 14.7761423749154 5.72385762508458 15 6 15 Z M 12 15 C 12.2761423749154 15 12.5 14.7761423749154 12.5 14.5 L 12.5 7.5 C 12.5 7.22385762508463 12.2761423749154 7 12 7 C 11.7238576250846 7 11.5 7.22385762508463 11.5 7.5 L 11.5 14.5 C 11.5 14.7761423749154 11.7238576250846 15 12 15 Z " fill-rule="nonzero" fill="#ffffff" stroke="none" transform="matrix(1 0 0 1 1758 474 )" />
</g>
</svg>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="32px" height="25px" xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(1 0 0 1 -1741 -10 )">
<path d="M 14.9237668161435 18.75 L 15.9282511210762 18.75 L 18.0089686098655 16.6903409090909 L 15.2825112107623 13.9914772727273 L 13.2017937219731 16.0511363636364 L 13.2017937219731 17.0454545454545 L 14.9237668161435 17.0454545454545 L 14.9237668161435 18.75 Z M 23.8026905829596 6.55184659090909 C 24.0059790732437 6.35061553030303 24.0119581464873 6.15530303030303 23.8206278026906 5.96590909090909 C 23.6292974588939 5.77651515151515 23.4319880418535 5.78243371212121 23.2286995515695 5.98366477272727 L 16.9506726457399 12.1981534090909 C 16.7473841554559 12.399384469697 16.7414050822123 12.594696969697 16.932735426009 12.7840909090909 C 17.1240657698057 12.9734848484848 17.321375186846 12.9675662878788 17.52466367713 12.7663352272727 L 23.8026905829596 6.55184659090909 Z M 24.8968609865471 15.9978693181818 C 25.136023916293 16.0925662878788 25.2556053811659 16.2642045454545 25.2556053811659 16.5127840909091 L 25.2556053811659 19.8863636363636 C 25.2556053811659 21.2949810606061 24.7503736920777 22.4994081439394 23.7399103139013 23.4996448863636 C 22.729446935725 24.4998816287879 21.5127055306428 25 20.0896860986547 25 L 5.16591928251121 25 C 3.74289985052317 25 2.52615844544096 24.4998816287879 1.51569506726457 23.4996448863636 C 0.505231689088191 22.4994081439394 0 21.2949810606061 0 19.8863636363636 L 0 5.11363636363637 C 0 3.70501893939394 0.505231689088191 2.50059185606061 1.51569506726457 1.50035511363636 C 2.52615844544096 0.500118371212119 3.74289985052317 0 5.16591928251121 0 L 20.0896860986547 0 C 20.8430493273543 0 21.542600896861 0.147964015151514 22.1883408071749 0.443892045454544 C 22.3677130044843 0.526751893939392 22.47533632287 0.662878787878787 22.5112107623318 0.852272727272727 C 22.5470852017937 1.05350378787879 22.4932735426009 1.22514204545454 22.3497757847534 1.3671875 L 21.4708520179372 2.23721590909091 C 21.3034379671151 2.40293560606061 21.1121076233184 2.45028409090909 20.8968609865471 2.37926136363636 C 20.6218236173393 2.30823863636364 20.3527653213752 2.27272727272727 20.0896860986547 2.27272727272727 L 5.16591928251121 2.27272727272727 C 4.37668161434978 2.27272727272727 3.70104633781764 2.55089962121212 3.1390134529148 3.10724431818182 C 2.57698056801196 3.66358901515151 2.29596412556054 4.33238636363637 2.29596412556054 5.11363636363637 L 2.29596412556054 19.8863636363636 C 2.29596412556054 20.6676136363636 2.57698056801196 21.3364109848485 3.1390134529148 21.8927556818182 C 3.70104633781764 22.4491003787879 4.37668161434978 22.7272727272727 5.16591928251121 22.7272727272727 L 20.0896860986547 22.7272727272727 C 20.8789237668161 22.7272727272727 21.5545590433483 22.4491003787879 22.1165919282511 21.8927556818182 C 22.678624813154 21.3364109848485 22.9596412556054 20.6676136363636 22.9596412556054 19.8863636363636 L 22.9596412556054 17.6491477272727 C 22.9596412556054 17.4952651515151 23.0134529147982 17.3650568181818 23.1210762331839 17.2585227272727 L 24.2690582959641 16.1221590909091 C 24.4484304932735 15.9446022727273 24.6576980568012 15.9031723484848 24.8968609865471 15.9978693181818 Z M 11.4798206278027 15.3409090909091 L 23.5336322869955 3.40909090909091 L 28.6995515695067 8.52272727272727 L 16.6457399103139 20.4545454545455 L 11.4798206278027 20.4545454545455 L 11.4798206278027 15.3409090909091 Z M 32 4.54545454545454 C 32 5.01893939393939 31.8325859491779 5.42140151515151 31.4977578475336 5.75284090909091 L 29.847533632287 7.38636363636363 L 24.6816143497758 2.27272727272727 L 26.3318385650224 0.639204545454544 C 26.6666666666667 0.307765151515149 27.0732436472347 0.142045454545456 27.5515695067265 0.142045454545456 C 28.0298953662182 0.142045454545456 28.4364723467863 0.307765151515149 28.7713004484305 0.639204545454544 L 31.4977578475336 3.33806818181818 C 31.8325859491779 3.66950757575757 32 4.0719696969697 32 4.54545454545454 Z " fill-rule="nonzero" fill="#ffffff" stroke="none" transform="matrix(1 0 0 1 1741 10 )" />
</g>
</svg>

View File

@ -33,7 +33,7 @@
</div>
</div>
<el-table ref="tableRef" :data="filteredPatients" style="width: 100%" border @cell-click="selectPatient"
highlight-current-row :header-cell-style="{color:'#000000 !important'}">
highlight-current-row>
<el-table-column prop="name" label="姓名" min-width="60" />
<el-table-column prop="id" label="测试者ID" min-width="60" />
<el-table-column prop="updated_at" label="最后一次检查时间" min-width="60" />
@ -768,10 +768,10 @@ function delClick(id) {
}
.section-header {
display: flex;
justify-content: space-between;
/* display: flex;
justify-content: space-between; */
align-items: center;
margin-bottom: 20px;
margin-bottom: 15px;
}
.section-header h2 {
@ -782,6 +782,7 @@ function delClick(id) {
.search-box {
width: 250px;
margin-top: 15px;
}
.patient-list {
@ -987,11 +988,11 @@ function delClick(id) {
.basic-info-text {
width: 33%;
text-align: center;
font-size: 13px;
font-size: 14px;
}
.basic-info-textcolor {
color: rgb(48, 205, 223);
color: #30F3FF;
padding-bottom: 8px;
}
@ -1084,12 +1085,15 @@ function delClick(id) {
border-color: rgba(215, 215, 215, 1);
color: #FFFFFF;
}
:deep(.el-table th){
color: #000000 !important;
:deep(.el-table th .cell){
color: #30F3FF ;
font-weight: 400;
font-size: 14px;
}
:deep(.el-table--border .el-table__inner-wrapper){
border-right: 1px solid #434343;
}
</style>
<style>
.dashboard-container.dashboard-container-home .el-table {
background: transparent !important;

View File

@ -364,7 +364,6 @@ const handleSaveAndDetect = async () => {
}
.form-container {
flex: 1;
overflow-y: auto;
padding: 20px 20px 0px;
width: 100%;

View File

@ -19,143 +19,68 @@
{{}}
</div> -->
<!-- 患者基本信息 -->
<div v-if="patient" class="patient-info-card">
<div class="card-header">
<h2>基本信息</h2>
<el-button link @click="editPatient">
<el-icon><Edit /></el-icon>
编辑
</el-button>
</div>
<div class="info-grid">
<div class="info-item">
<label>姓名</label>
<span>{{ patient.name }}</span>
</div>
<div class="info-item">
<label>性别</label>
<span>{{ patient.gender }}</span>
</div>
<div class="info-item">
<label>年龄</label>
<span>{{ patient.age }}</span>
</div>
<div class="info-item">
<label>出生日期</label>
<span>{{ formatDate(patient.birth_date) || '未设置' }}</span>
</div>
<div class="info-item">
<label>身高</label>
<span>{{ patient.height }}cm</span>
</div>
<div class="info-item">
<label>体重</label>
<span>{{ patient.weight }}kg</span>
</div>
<div class="info-item">
<label>鞋码</label>
<span>{{ patient.shoe_size || '未设置' }}</span>
</div>
<div class="info-item">
<label>联系电话</label>
<span>{{ patient.phone }}</span>
</div>
<div class="info-item">
<label>主治医生</label>
<span>{{ patient.doctor || '未设置' }}</span>
</div>
<div class="info-item">
<label>创建时间</label>
<span>{{ formatDate(patient.createdAt) }}</span>
</div>
</div>
</div>
<!-- 检测记录 -->
<div class="detection-records-card">
<div class="card-header">
<h2>检测记录</h2>
<div class="header-actions">
<el-input
v-model="searchKeyword"
placeholder="搜索记录"
prefix-icon="Search"
clearable
style="width: 200px; margin-right: 10px;"
/>
<el-button type="primary" @click="startDetection">
新建检测
</el-button>
</div>
<div v-for="(item, index) in profileInfo" :key="index" class="content-info">
<div class="content-left">
<el-checkbox v-model="item.checked" label=""/>
<div class="content-left-text1">{{index + 1}}</div>
<div class="content-left-text2">2025/04/01 14:35</div>
<div class="content-left-text3">初次就诊</div>
</div>
<div class="content-center">
<div class="records-list" v-if="filteredRecords.length > 0">
<div
v-for="record in filteredRecords"
:key="record.id"
class="record-item"
@click="viewRecord(record)"
>
<div class="record-header">
<div class="record-title">
<h4>检测记录 #{{ record.id }}</h4>
<el-tag :type="getRecordStatusType(record.status)">{{ record.status }}</el-tag>
</div>
<div class="record-time">{{ formatDate(record.createdAt) }}</div>
</div>
<div class="record-content">
<div class="record-stats">
<div class="stat-item">
<span class="stat-label">检测时长</span>
<span class="stat-value">{{ formatDuration(record.duration) }}</span>
</div>
<div class="stat-item">
<span class="stat-label">截图数量</span>
<span class="stat-value">{{ record.screenshots?.length || 0 }}</span>
</div>
<div class="stat-item">
<span class="stat-label">检测医生</span>
<span class="stat-value">{{ record.doctor || '未记录' }}</span>
</div>
<div class="content-right">
<div class="content-right-top">
<div class="content-right-top-title">
<div class="content-right-top-text">诊断信息</div>
<div style="display: flex;align-items: center;">
<div class="content-right-top-text2">未处理</div>
<div style="margin-left: 10px;" @click="editClick">
<img src="@/assets/svg/edit.svg" alt="">
</div>
</div>
</div>
<div class="record-actions">
<el-button link @click.stop="playVideo(record)">
<el-icon><VideoPlay /></el-icon>
回放视频
</el-button>
<el-button link @click.stop="viewScreenshots(record)">
<el-icon><Picture /></el-icon>
查看截图
</el-button>
<el-button link @click.stop="exportReport(record)">
<el-icon><Download /></el-icon>
导出报告
</el-button>
<div class="content-right-top-content">
<el-form :model="diagnosticForm" label-width="50px">
<el-form-item label="记录">
<el-input v-model="diagnosticForm.diagnosis_info" disabled :rows="6" type="textarea" placeholder="请输入" />
</el-form-item>
<el-form-item label="处理">
<el-input v-model="diagnosticForm.treatment_info" disabled :rows="6" type="textarea" placeholder="请输入" />
</el-form-item>
<el-form-item label="建议">
<el-input v-model="diagnosticForm.suggestion_info" disabled :rows="6" type="textarea" placeholder="请输入" />
</el-form-item>
</el-form>
</div>
</div>
<div class="content-right-bottom">
<div class="content-right-bottom-title">
<div class="content-right-bottom-text">保存数据列表</div>
</div>
<div class="content-right-bottom-content">
<div v-for="(item2, index2) in item.list" :key="index2" class="content-right-bottom-content-box">
<div class="content-right-bottom-img">截图</div>
<div>
<div>
<img src="@/assets/svg/datalist.svg" alt="">
</div>
<div>
<img src="@/assets/svg/del.svg" alt="">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<el-empty v-else description="暂无检测记录">
<el-button type="primary" @click="startDetection">开始首次检测</el-button>
</el-empty>
</div>
</div>
<!-- 视频播放对话框 -->
<el-dialog
v-model="videoDialogVisible"
title="检测视频回放"
width="80%"
:before-close="closeVideoDialog"
>
<el-dialog v-model="videoDialogVisible" title="检测视频回放" width="80%" :before-close="closeVideoDialog">
<div class="video-container" v-if="currentVideo">
<video
ref="videoPlayerRef"
:src="currentVideo.url"
controls
width="100%"
height="400"
>
<video ref="videoPlayerRef" :src="currentVideo.url" controls width="100%" height="400">
您的浏览器不支持视频播放
</video>
<div class="video-info">
@ -167,29 +92,24 @@
</el-dialog>
<!-- 截图查看对话框 -->
<el-dialog
v-model="screenshotDialogVisible"
title="检测截图"
width="90%"
:before-close="closeScreenshotDialog"
>
<el-dialog v-model="screenshotDialogVisible" title="检测截图" width="90%" :before-close="closeScreenshotDialog">
<div class="screenshot-container" v-if="currentScreenshots.length > 0">
<div class="screenshot-grid">
<div
v-for="(screenshot, index) in currentScreenshots"
:key="screenshot.id"
class="screenshot-item"
@click="previewScreenshotHandler(screenshot, index)"
>
<div v-for="(screenshot, index) in currentScreenshots" :key="screenshot.id" class="screenshot-item"
@click="previewScreenshotHandler(screenshot, index)">
<img :src="screenshot.thumbnail" :alt="`截图${index + 1}`" />
<div class="screenshot-overlay">
<div class="screenshot-time">{{ formatTime(screenshot.timestamp) }}</div>
<div class="screenshot-actions">
<el-button type="primary" size="small" @click.stop="downloadScreenshot(screenshot)">
<el-icon><Download /></el-icon>
<el-icon>
<Download />
</el-icon>
</el-button>
<el-button type="danger" size="small" @click.stop="deleteScreenshot(screenshot)">
<el-icon><Delete /></el-icon>
<el-icon>
<Delete />
</el-icon>
</el-button>
</div>
</div>
@ -200,12 +120,7 @@
</el-dialog>
<!-- 截图预览对话框 -->
<el-dialog
v-model="previewDialogVisible"
title="截图预览"
width="70%"
:before-close="closePreviewDialog"
>
<el-dialog v-model="previewDialogVisible" title="截图预览" width="70%" :before-close="closePreviewDialog">
<div class="preview-container" v-if="previewScreenshot">
<img :src="previewScreenshot.url" alt="截图预览" class="preview-image" />
<div class="preview-info">
@ -214,16 +129,88 @@
<div class="data-display" v-if="previewScreenshot.data">
<div class="data-item">
<span>头部姿态</span>
<span>Pitch: {{ previewScreenshot.data.pitch }}°, Yaw: {{ previewScreenshot.data.yaw }}°, Roll: {{ previewScreenshot.data.roll }}°</span>
<span>Pitch: {{ previewScreenshot.data.pitch }}°, Yaw: {{ previewScreenshot.data.yaw }}°, Roll: {{
previewScreenshot.data.roll }}°</span>
</div>
<div class="data-item">
<span>足底压力</span>
<span>左足: {{ previewScreenshot.data.leftPressure }}%, 右足: {{ previewScreenshot.data.rightPressure }}%</span>
<span>左足: {{ previewScreenshot.data.leftPressure }}%, 右足: {{ previewScreenshot.data.rightPressure
}}%</span>
</div>
</div>
</div>
</div>
</el-dialog>
<el-dialog v-model="dialogVisible" center title="诊断信息" width="600" :before-close="handleClose">
<div>
<div class="dialog-title">
<div class="dialog-title-item">
<div>用户ID:</div>{{ patient.sessionId }}
</div>
<div class="dialog-title-item">
<div>姓名:{{ patient.name }}</div>
</div>
</div>
<div>
<el-form :model="diagnosticForm" label-width="50px">
<el-form-item label="记录">
<el-input v-model="diagnosticForm.diagnosis_info" :rows="6" type="textarea" placeholder="请输入" />
</el-form-item>
<el-form-item label="处理">
<el-input v-model="diagnosticForm.treatment_info" :rows="6" type="textarea" placeholder="请输入" />
</el-form-item>
<el-form-item label="建议">
<el-input v-model="diagnosticForm.suggestion_info" :rows="6" type="textarea" placeholder="请输入" />
</el-form-item>
</el-form>
</div>
<div style="display: flex;justify-content: flex-end;color: #ffffff;">测试医生李四</div>
</div>
<template #footer>
<span class="dialog-footer">
<el-button @click="dialogVisible = false">取消</el-button>
<el-button @click="handleDiagnosticInfo('diagnosed')">暂存</el-button>
<el-button type="primary" @click="handleDiagnosticInfo('completed')">
保存
</el-button>
</span>
</template>
</el-dialog>
<el-dialog v-model="dialogVisible" center title="诊断信息" width="600" :before-close="handleClose">
<div>
<div class="dialog-title">
<div class="dialog-title-item">
<div>用户ID:</div>{{ patient.sessionId }}
</div>
<div class="dialog-title-item">
<div>姓名:{{ patient.name }}</div>
</div>
</div>
<div>
<el-form :model="diagnosticForm" label-width="50px">
<el-form-item label="记录">
<el-input v-model="diagnosticForm.diagnosis_info" :rows="6" type="textarea" placeholder="请输入" />
</el-form-item>
<el-form-item label="处理">
<el-input v-model="diagnosticForm.treatment_info" :rows="6" type="textarea" placeholder="请输入" />
</el-form-item>
<el-form-item label="建议">
<el-input v-model="diagnosticForm.suggestion_info" :rows="6" type="textarea" placeholder="请输入" />
</el-form-item>
</el-form>
</div>
<div style="display: flex;justify-content: flex-end;color: #ffffff;">测试医生李四</div>
</div>
<template #footer>
<span class="dialog-footer">
<el-button @click="dialogVisible = false">取消</el-button>
<el-button @click="handleDiagnosticInfo('diagnosed')">暂存</el-button>
<el-button type="primary" @click="handleDiagnosticInfo('completed')">
保存
</el-button>
</span>
</template>
</el-dialog>
</div>
</template>
@ -254,12 +241,22 @@ const filteredRecords = computed(() => {
if (!searchKeyword.value) {
return detectionRecords.value
}
return detectionRecords.value.filter(record =>
return detectionRecords.value.filter(record =>
record.id.toString().includes(searchKeyword.value) ||
record.doctor?.includes(searchKeyword.value) ||
formatDate(record.createdAt).includes(searchKeyword.value)
)
})
const profileInfo = ref([{list:[{},{}]}, {}])
const diagnosticForm = ref({
diagnosis_info:'',
treatment_info:'',
suggestion_info:''
})
const dialogVisible = ref(false)
const handleClose = () => {
dialogVisible.value = false
}
//
const goBack = () => {
@ -294,9 +291,9 @@ const viewScreenshots = (record) => {
}
const previewScreenshotHandler = (screenshot, index) => {
previewScreenshot.value = screenshot
previewDialogVisible.value = true
}
previewScreenshot.value = screenshot
previewDialogVisible.value = true
}
const downloadScreenshot = (screenshot) => {
//
@ -313,7 +310,7 @@ const deleteScreenshot = async (screenshot) => {
cancelButtonText: '取消',
type: 'warning'
})
//
ElMessage.success('截图已删除')
//
@ -477,7 +474,54 @@ const loadDetectionRecords = async () => {
]
}
}
function editClick(){
dialogVisible.value = true
}
async function handleDiagnosticInfo(status){
try {
// // ID
// if (!patientInfo.value.sessionId) {
// throw new Error('Id')
// }
// // API
// const response = await fetch(`${BACKEND_URL}/api/detection/${patientInfo.value.sessionId}/save-info`, {
// method: 'POST',
// headers: {
// 'Content-Type': 'application/json'
// },
// body: JSON.stringify({
// diagnosis_info:diagnosticForm.diagnosis_info,
// treatment_info:diagnosticForm.treatment_info,
// suggestion_info:diagnosticForm.suggestion_info,
// status:status,
// session_id:patientInfo.value.sessionId,
// })
// })
// if (!response.ok) {
// throw new Error(`HTTP ${response.status}: ${response.statusText}`)
// }
// const result = await response.json()
// if (result.success) {
// //
// ElMessage.success({
// message: status + '',
// duration: 5000
// })
// patientInfo.value.sessionId = null
// } else {
// throw new Error(result.message || '')
// }
} catch (error) {
// ElMessage.error({
// message: errorMessage,
// duration: 5000
// })
// patientInfo.value.sessionId = null
} finally {
// patientInfo.value.sessionId = null
}
}
//
onMounted(() => {
loadPatientInfo()
@ -486,12 +530,157 @@ onMounted(() => {
</script>
<style scoped>
.content-info {
display: flex;
padding: 10px 0px 10px 15px;
min-height: 700px;
}
.content-left {
width: 87px;
min-width: 87px;
height: 100%;
background: inherit;
background-color: rgba(85, 85, 85, 0.6);
font-family: 'Arial Negreta', 'Arial Normal', 'Arial', sans-serif;
font-weight: 700;
font-style: normal;
font-size: 15px;
color: #FFFFFF;
text-align: center;
display: flex;
flex-direction: column; /* 垂直排列子元素 */
justify-content: center; /* 垂直居中 */
align-items: center; /* 水平居中 */
}
.content-left-text1{
}
.content-left-text2{
}
.content-left-text3{
}
.content-center{
width: calc(100% - 327px);
margin: 0px 15px;
background-color: rgba(85, 85, 85, 0.6);
}
.content-right{
width: 260px;
min-width: 260px;
height: 100%;
/* background-color: rgba(85, 85, 85, 0.6); */
}
.content-right-top{
width: 100%;
height: 50%;
background-color: rgba(85, 85, 85, 0.6);
}
.content-right-top-title{
display: flex;
align-items: center;
justify-content: space-between;
color: #ffffff;
padding: 15px;
}
.content-right-top-text{
font-family: 'Arial Negreta', 'Arial Normal', 'Arial', sans-serif;
font-weight: 700;
font-style: normal;
font-size: 16px;
color: #FFFFFF;
}
.content-right-top-text2{
width: 62px;
height: 32px;
line-height: 32px;
background: rgba(230,162,60,0.1);
color: #E6A23C;
text-align: center;
border-radius: 5px;
}
.content-right-top-content{
height: calc(100% - 75px);
overflow: auto;
}
:deep(.el-textarea__inner) {
background: transparent;
color: #ffffff;
}
:deep(.el-form-item__label) {
color: #ffffff;
}
:deep(.el-textarea.is-disabled .el-textarea__inner){
background: transparent;
color: #ffffff;
}
.content-right-bottom{
margin-top: 10px;
width: 100%;
height: calc(50% - 10px);
background-color: rgba(85, 85, 85, 0.6);
}
.content-right-bottom-title{
display: flex;
align-items: center;
justify-content: space-between;
color: #ffffff;
padding: 15px 15px 0px;
}
.content-right-bottom-text{
font-family: 'Arial Negreta', 'Arial Normal', 'Arial', sans-serif;
font-weight: 700;
font-style: normal;
font-size: 16px;
color: #FFFFFF;
}
.content-right-bottom-content{
height: calc(100% - 75px);
overflow: auto;
padding: 0px 15px;
}
.content-right-bottom-content-box{
color: #ffffff;
display: flex;
justify-content: center;
margin-top: 10px;
}
.content-right-bottom-img{
width: 180px;
height: 74px;
border: 1px solid #434343;
margin-right: 10px;
}
.dialog-title {
display: flex;
justify-content: space-between;
margin-bottom: 20px;
color: #ffffff;
}
.dialog-title-item {
display: flex;
width: 200px;
color: #ffffff;
}
:deep(.el-dialog) {
background-color: #1D1b26;
}
:deep(.el-dialog__title) {
color: #ffffff;
}
.patient-profile-container {
height: 100vh;
display: flex;
flex-direction: column;
background: #000000;
}
.nav-container {
display: flex;
width: 100%;
@ -516,49 +705,12 @@ onMounted(() => {
color: #FFFFFF;
font-family: 'Arial Normal', 'Arial', sans-serif;
}
.header {
height: 60px;
background: #fff;
border-bottom: 1px solid #e4e7ed;
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 20px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
.header-left {
display: flex;
align-items: center;
gap: 15px;
}
.back-btn {
display: flex;
align-items: center;
gap: 5px;
color: #606266;
font-size: 14px;
}
.back-btn:hover {
color: #409eff;
}
.page-title {
font-size: 20px;
font-weight: 600;
color: #2c3e50;
margin: 0;
}
.main-content {
flex: 1;
overflow-y: auto;
padding: 20px;
padding: 10px;
display: flex;
flex-direction: column;
gap: 20px;
overflow: auto;
width: 100%;
}
.patient-info-card,
@ -787,6 +939,7 @@ onMounted(() => {
.data-item:last-child {
margin-bottom: 0;
}
.main-dashboard-top {
display: flex;
width: 100%;