From 3ccdc954c26d539c0042b16544fc3dc9e0505ab5 Mon Sep 17 00:00:00 2001
From: wangdongbo <949818794@qq.com>
Date: Mon, 2 Feb 2026 13:27:48 +0800
Subject: [PATCH] no message
---
pages/case/medical-case-form.vue | 577 +++++++++---------
.../components/ai-assistant-buttons.vue | 13 +-
.../components/medical-case-progress.vue | 152 ++---
.../components/medical-case-type-selector.vue | 44 +-
pages/message/index.vue | 3 +-
5 files changed, 394 insertions(+), 395 deletions(-)
diff --git a/pages/case/medical-case-form.vue b/pages/case/medical-case-form.vue
index c650169..532e89b 100644
--- a/pages/case/medical-case-form.vue
+++ b/pages/case/medical-case-form.vue
@@ -1,214 +1,48 @@
-
-
-
- 就诊机构
-
-
-
-
- 就诊日期
-
-
- {{ formData.visitTime || '暂无' }}
-
-
-
-
-
- 门诊诊断
-
-
-
-
- 治疗方案
-
-
-
-
-
-
-
- 就诊机构
-
-
-
-
- 入院日期
-
-
- {{ formData.inhosDate || '暂无' }}
-
-
-
-
-
- 住院主诊断
-
-
-
-
- 手术名称
-
-
-
-
- 手术日期
-
-
- {{ formData.operationDate || '暂无' }}
-
-
-
-
-
- 治疗方案
-
-
-
-
-
-
-
- 就诊机构
-
-
-
-
- 体检日期
-
-
- {{ formData.inspectTime || '暂无' }}
-
-
-
-
-
- 体检小结
-
-
-
-
- 阳性发现及处理意见
-
-
-
-
-
-
-
- 主诉
-
-
-
-
- 现病史
-
-
-
-
- 既往史
-
-
-
-
-
-
- 1、门诊、住院病历记录生成,生成后支持医生在线编辑,并保存至档案,或者重新生成;
-
-
- 2、若未来集到有效信息则以模板字段中默认项写无内容生成,医生可以直接在存字段上进行编辑。
-
+
+
+ {{ field.label }}
+
+
+
+
+ {{ formData[field.key] || "暂无" }}
+
+
+
+
+
+
+
+
-
+
@@ -363,26 +349,26 @@ const getRequiredFields = () => {
min-height: 100vh;
background-color: #f5f5f5;
padding-bottom: 120rpx;
-
+
.form-container {
background-color: #ffffff;
padding: 32rpx;
-
+
.form-item {
margin-bottom: 32rpx;
-
+
&.required .item-label::before {
- content: '*';
+ content: "*";
color: #ff4d4f;
margin-right: 8rpx;
}
-
+
.item-label {
font-size: 28rpx;
color: #333333;
margin-bottom: 16rpx;
}
-
+
.item-input,
.picker-value {
width: 100%;
@@ -392,64 +378,65 @@ const getRequiredFields = () => {
border-radius: 8rpx;
font-size: 28rpx;
color: #333333;
-
+
&[disabled] {
color: #999999;
}
}
-
+
.picker-value {
display: flex;
align-items: center;
color: #999999;
}
-
+
.item-textarea {
width: 100%;
- min-height: 160rpx;
+ min-height: 100rpx;
padding: 20rpx 24rpx;
background-color: #f8f9fa;
border-radius: 8rpx;
font-size: 28rpx;
color: #333333;
-
+ height: 100px;
&[disabled] {
color: #999999;
}
}
}
-
+
.tips-box {
margin-top: 32rpx;
padding: 24rpx;
background-color: #fffbe6;
border-radius: 8rpx;
-
+
.tips-text {
display: block;
font-size: 24rpx;
color: #666666;
line-height: 1.6;
margin-bottom: 8rpx;
-
+
&:last-child {
margin-bottom: 0;
}
}
}
}
-
+
.footer-buttons {
position: fixed;
bottom: 0;
left: 0;
right: 0;
+ z-index: 100;
display: flex;
gap: 24rpx;
padding: 24rpx 32rpx;
background-color: #ffffff;
box-shadow: 0 -4rpx 16rpx rgba(0, 0, 0, 0.08);
-
+
.btn-regenerate,
.btn-save {
flex: 1;
@@ -458,25 +445,25 @@ const getRequiredFields = () => {
align-items: center;
justify-content: center;
border-radius: 44rpx;
-
+
.btn-text {
font-size: 32rpx;
font-weight: 500;
}
}
-
+
.btn-regenerate {
background-color: #ffffff;
border: 2rpx solid #1890ff;
-
+
.btn-text {
color: #1890ff;
}
}
-
+
.btn-save {
background-color: #1890ff;
-
+
.btn-text {
color: #ffffff;
}
diff --git a/pages/message/components/ai-assistant-buttons.vue b/pages/message/components/ai-assistant-buttons.vue
index 3ac4854..9c8f2a1 100644
--- a/pages/message/components/ai-assistant-buttons.vue
+++ b/pages/message/components/ai-assistant-buttons.vue
@@ -44,6 +44,10 @@ const props = defineProps({
type: String,
default: "",
},
+ patientId: {
+ type: String,
+ default: "",
+ },
corpId: {
type: String,
default: "",
@@ -333,12 +337,15 @@ const handleRegenerateFromProgress = (data) => {
// 处理从进度弹窗点击下一步
const handleNextFromProgress = (data) => {
+ // 根据病历类型动态构建表单数据
+ const extractedData = data.data?.extractedData || {};
+
// 跳转到病历填写页面
uni.navigateTo({
- url: `/pages/case/medical-case-form?caseType=${data.caseType}&customerId=${
- props.customerId || props.patientAccountId
+ url: `/pages/case/medical-case-form?caseType=${data.caseType}&patientId=${
+ props.patientId
}&groupId=${props.groupId}&formData=${encodeURIComponent(
- JSON.stringify(data.data?.extractedData || {})
+ JSON.stringify(extractedData)
)}`,
});
};
diff --git a/pages/message/components/medical-case-progress.vue b/pages/message/components/medical-case-progress.vue
index c1fb044..c2803ab 100644
--- a/pages/message/components/medical-case-progress.vue
+++ b/pages/message/components/medical-case-progress.vue
@@ -4,29 +4,32 @@
✕
-
+
{{ progressTitle }}
-
+
-
+
{{ progress }}%
-
-
+
+
检测到以下{{ caseTypeName }}信息:
-
✓
-
{{ item.label }}:{{ item.value }}
@@ -34,11 +37,11 @@
-
+
正在生成结构化{{ caseTypeName }}
-
+
@@ -54,48 +57,47 @@
@@ -183,7 +185,7 @@ defineExpose({
position: relative;
max-height: 80vh;
overflow-y: auto;
-
+
.close-btn {
position: absolute;
top: 20rpx;
@@ -194,13 +196,13 @@ defineExpose({
align-items: center;
justify-content: center;
z-index: 10;
-
+
.close-icon {
font-size: 40rpx;
color: #999999;
}
}
-
+
.progress-content {
.progress-title {
font-size: 32rpx;
@@ -209,27 +211,27 @@ defineExpose({
margin-bottom: 32rpx;
text-align: center;
}
-
+
.progress-bar-wrapper {
display: flex;
align-items: center;
gap: 16rpx;
margin-bottom: 32rpx;
-
+
.progress-bar {
flex: 1;
height: 16rpx;
background-color: #e5e5e5;
border-radius: 8rpx;
overflow: hidden;
-
+
.progress-fill {
height: 100%;
background: linear-gradient(90deg, #1890ff 0%, #40a9ff 100%);
transition: width 0.5s ease;
}
}
-
+
.progress-text {
font-size: 28rpx;
color: #1890ff;
@@ -238,21 +240,21 @@ defineExpose({
text-align: right;
}
}
-
+
.detected-info {
margin-bottom: 24rpx;
-
+
.detected-title {
font-size: 28rpx;
color: #666666;
display: block;
margin-bottom: 16rpx;
}
-
+
.info-list {
max-height: 400rpx;
overflow-y: auto;
-
+
.info-item {
display: flex;
align-items: flex-start;
@@ -260,25 +262,25 @@ defineExpose({
margin-bottom: 12rpx;
opacity: 0;
transform: translateX(-20rpx);
-
+
&.fade-in {
animation: fadeInSlide 0.4s ease forwards;
}
-
+
.check-icon {
font-size: 28rpx;
color: #52c41a;
font-weight: bold;
margin-top: 2rpx;
}
-
+
.info-text {
flex: 1;
font-size: 26rpx;
color: #333333;
line-height: 1.6;
word-break: break-all;
-
+
// 暂无数据的样式
&.empty-value {
color: #999999;
@@ -287,24 +289,24 @@ defineExpose({
}
}
}
-
+
.generating-text {
font-size: 28rpx;
color: #1890ff;
text-align: center;
padding: 16rpx 0;
-
+
.dot-animation::after {
- content: '...';
+ content: "...";
animation: dots 1.5s steps(4, end) infinite;
}
}
-
+
.action-buttons {
display: flex;
gap: 16rpx;
margin-top: 32rpx;
-
+
.action-button {
flex: 1;
height: 80rpx;
@@ -313,34 +315,34 @@ defineExpose({
align-items: center;
justify-content: center;
transition: all 0.3s ease;
-
+
&.primary {
background: linear-gradient(90deg, #1890ff 0%, #40a9ff 100%);
-
+
.button-text {
color: #ffffff;
}
-
+
&:active {
opacity: 0.8;
transform: scale(0.98);
}
}
-
+
&.secondary {
background-color: #ffffff;
border: 2rpx solid #d9d9d9;
-
+
.button-text {
color: #666666;
}
-
+
&:active {
background-color: #f5f5f5;
transform: scale(0.98);
}
}
-
+
.button-text {
font-size: 30rpx;
font-weight: 500;
@@ -358,17 +360,19 @@ defineExpose({
}
@keyframes dots {
- 0%, 20% {
- content: '';
+ 0%,
+ 20% {
+ content: "";
}
40% {
- content: '.';
+ content: ".";
}
60% {
- content: '..';
+ content: "..";
}
- 80%, 100% {
- content: '...';
+ 80%,
+ 100% {
+ content: "...";
}
}
diff --git a/pages/message/components/medical-case-type-selector.vue b/pages/message/components/medical-case-type-selector.vue
index 9b696a2..6c5cab6 100644
--- a/pages/message/components/medical-case-type-selector.vue
+++ b/pages/message/components/medical-case-type-selector.vue
@@ -7,7 +7,7 @@
✕
-
+
@@ -73,38 +73,38 @@ defineExpose({
background-color: #ffffff;
border-radius: 24rpx;
padding: 40rpx;
-
+
.selector-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 40rpx;
-
+
.header-title {
font-size: 36rpx;
font-weight: 600;
color: #333333;
}
-
+
.close-btn {
width: 48rpx;
height: 48rpx;
display: flex;
align-items: center;
justify-content: center;
-
+
.close-icon {
font-size: 40rpx;
color: #999999;
}
}
}
-
+
.case-type-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 24rpx;
-
+
.case-type-item {
display: flex;
flex-direction: column;
@@ -115,13 +115,13 @@ defineExpose({
border: 2rpx solid #e5e5e5;
border-radius: 16rpx;
transition: all 0.3s ease;
-
+
&:active {
background-color: #e8f4ff;
border-color: #1890ff;
transform: scale(0.98);
}
-
+
.type-name {
font-size: 30rpx;
color: #333333;
diff --git a/pages/message/index.vue b/pages/message/index.vue
index b8d2aa8..f817983 100644
--- a/pages/message/index.vue
+++ b/pages/message/index.vue
@@ -149,6 +149,7 @@
"
:groupId="groupId"
:patientAccountId="chatInfo.userID || ''"
+ :patientId="patientId"
:corpId="corpId"
@streamText="handleStreamText"
@clearInput="handleClearInput"
@@ -1048,4 +1049,4 @@ uni.$on("sendSurvey", async (data) => {
+
\ No newline at end of file