fix(mobile): replace emoji glyphs with uni-icons and flex centering app-wide

- ChatComposer panel contract: callers now pass uni-icons type names
  (image/sound/list/help/checkmark) instead of emoji
- voice playback buttons: sound icon + pulse animation, no more 🔊/◼ chars
- practice recent list: rare symbols ⌕⌁◉ (tofu risk) -> wallet/gear/chatbubble
- sop resource icon ▶/文 -> 视/文 character badges
- back arrows: 22 char-based ← -> uni-icons back across 21 pages
- line-height centering -> flex in 8 spots (back buttons, media-remove,
  turn-voice capsule, option-marker, text-button, play-question)
This commit is contained in:
2026-07-19 20:16:05 +08:00
parent 925b48e436
commit c47bf748cb
25 changed files with 101 additions and 56 deletions
+21 -4
View File
@@ -52,7 +52,13 @@
:class="{ playing: isVoicePlaying(msg) }"
@click="playVoice(msg)"
>
<text class="voice-icon">{{ isVoicePlaying(msg) ? '◼' : '🔊' }}</text>
<uni-icons
class="voice-icon"
:class="{ playing: isVoicePlaying(msg) }"
type="sound"
size="17"
:color="isVoicePlaying(msg) ? '#e70014' : '#5a6270'"
/>
<text class="voice-duration">{{ voiceLabel(msg) }}</text>
</view>
<view v-if="msg.unread" class="voice-dot" />
@@ -139,7 +145,7 @@
:class="{ video: resource.type === 'VIDEO' }"
@click="openKnowledgeResource(resource)"
>
<view class="resource-icon">{{ resource.type === 'VIDEO' ? '▶' : '文' }}</view>
<view class="resource-icon">{{ resource.type === 'VIDEO' ? '视' : '文' }}</view>
<view class="resource-copy">
<text class="resource-title">{{ resource.title }}</text>
<text class="resource-meta">
@@ -1989,16 +1995,19 @@ onUnload(() => {
}
.media-remove {
display: flex;
width: 32px;
min-width: 32px;
height: 32px;
min-height: 32px;
align-items: center;
justify-content: center;
padding: 0;
border-radius: 50%;
background: #ffffff;
color: var(--employee-muted);
font-size: 21px;
line-height: 32px;
line-height: 1;
}
.answer-title-row {
@@ -2467,10 +2476,18 @@ onUnload(() => {
}
.voice-icon {
font-size: 15px;
line-height: 1;
}
.voice-icon.playing {
animation: voice-icon-pulse 1s ease-in-out infinite;
}
@keyframes voice-icon-pulse {
0%, 100% { opacity: 1; }
50% { opacity: 0.4; }
}
.voice-duration {
color: #232a33;
font-size: 15px;