diff --git a/pages/message/chat.scss b/pages/message/chat.scss index 8a15f48..1c7f0eb 100644 --- a/pages/message/chat.scss +++ b/pages/message/chat.scss @@ -418,6 +418,25 @@ $primary-color: #0877F1; background: #2456c7; } +.disabled-btn { + background: #ccc; + color: #fff; + font-size: 28rpx; + font-weight: 600; + border: none; + border-radius: 40rpx; + height: 56rpx; + min-width: 112rpx; + padding: 0 32rpx; + box-shadow: 0 2rpx 8rpx rgba(200, 200, 200, 0.08); + display: flex; + align-items: center; + justify-content: center; + flex-shrink: 0; + white-space: nowrap; + cursor: not-allowed; +} + .input-area { flex: 1; margin: 0 8rpx; diff --git a/pages/message/components/ai-assistant-buttons.vue b/pages/message/components/ai-assistant-buttons.vue index 9c8f2a1..aa8900b 100644 --- a/pages/message/components/ai-assistant-buttons.vue +++ b/pages/message/components/ai-assistant-buttons.vue @@ -57,10 +57,12 @@ const props = defineProps({ default: "", }, }); -const emit = defineEmits(["streamText", "clearInput"]); +const emit = defineEmits(["streamText", "clearInput", "generatingStateChange"]); const typeSelectorRef = ref(null); const progressRef = ref(null); +const isGenerating = ref(false); + const buttons = ref([ { id: "followUp", @@ -183,6 +185,8 @@ const streamTextToInput = (text) => { // 先清空输入框 emit("clearInput"); + isGenerating.value = true; + emit("generatingStateChange", true); let currentIndex = 0; const speed = 50; // 每个字符的延迟时间(毫秒) @@ -196,6 +200,8 @@ const streamTextToInput = (text) => { currentIndex++; } else { clearInterval(streamInterval); + isGenerating.value = false; + emit("generatingStateChange", false); } }, speed); }, 100); @@ -363,6 +369,11 @@ const handleRegenerateMedicalCase = (data) => { const type = { id: data.caseType }; handleCaseTypeSelect(type); }; + +// 暴露生成状态给父组件 +defineExpose({ + isGenerating, +});