fix(phase2e-2): 修复刷新后重入会失败 + 聊天输入区布局防御

问题
- 刷新会议页面被踢回 join 页,再次加入报"已在会议中"
- 极窄聊天面板下,发送按钮在 uni-app H5 渲染为 uni-button 时可能被默认
  width:100% 样式撑满导致"竖排变形"

修复
1. meeting store: joinAndEnter / createAndEnter 捕获 staleMeetingHint 时自动
   调用 cleanupStaleMeetings 清理后端残留的僵尸活跃成员记录,并重试一次;
   日志链路:加入失败 → 检测僵尸 → 自动清理 → 重试加入
2. ChatPanel: input-area 显式声明 flex-direction:row + flex-wrap:nowrap;
   .btn-send 追加 width:auto / line-height:1 / box-sizing,并通过 ::v-deep
   复位 uni-app 内部 <uni-button> 默认 width,彻底避免按钮独占一行变形

验证
- Playwright 刷新 room 页 → 回 join → 预览 → 加入会议:日志显示自动清理僵尸
  "581-702-753"、重试加入 "925-409-354" 成功,MediaEngine 正常建立
- 1024x576 视口下 toolbar 完整可见,聊天面板并排无右侧留白,发送按钮在
  输入框右侧

Made-with: Cursor
This commit is contained in:
bujinyuan
2026-04-22 15:45:56 +08:00
parent 16225c413d
commit 0c9f0483e5
2 changed files with 30 additions and 4 deletions

View File

@@ -350,6 +350,8 @@ const close = () => emit('close')
.input-area {
display: flex;
flex-direction: row;
flex-wrap: nowrap;
align-items: flex-end;
gap: 12rpx;
padding: 16rpx 24rpx calc(16rpx + env(safe-area-inset-bottom));
@@ -375,6 +377,7 @@ const close = () => emit('close')
}
.btn-send {
/* 覆盖 uni-app <uni-button> 默认 width:100% / border / margin */
all: unset;
cursor: pointer;
display: inline-flex;
@@ -388,7 +391,16 @@ const close = () => emit('close')
box-shadow: 0 4rpx 14rpx rgba(59, 130, 246, 0.35);
transition: background-color 0.15s ease, transform 0.08s ease, box-shadow 0.15s ease;
flex-shrink: 0;
width: auto;
min-height: 64rpx;
line-height: 1;
box-sizing: border-box;
}
/* 防御 uni-app H5 <uni-button> 内部嵌套 <button> 的全宽/默认边框 */
.btn-send::after { border: none !important; }
.input-area ::v-deep(uni-button.btn-send) {
width: auto;
margin: 0;
}
.btn-send svg { display: block; }
.btn-send .btn-send-label { font-size: 26rpx; font-weight: 600; }