fix(im): 迁移 Element UI 图标并修复 Vue 3 兼容问题

- 新增 migrate-legacy-icons 脚本,批量将旧图标替换为 legacy-el-icon 组件
- 多个组件中将 <i class="el-icon-*"> 统一改为 <legacy-el-icon name="el-icon-*">
- 将 size="mini"/"medium" 调整为 Element Plus 的 small/default
- 新增 legacy-el-icon 全局组件及图标映射逻辑
This commit is contained in:
田香琪
2026-07-22 13:36:44 +08:00
parent 12291ad4d5
commit 4bcaf14bad
39 changed files with 329 additions and 115 deletions

View File

@@ -2,9 +2,9 @@
<div class="audio-message">
<div class="videodisc">
<div class="disc" :class="{ play: isPlay }" @click="toPlay">
<i v-if="loading" class="el-icon-loading" />
<i v-else-if="isPlay" class="el-icon-video-pause" />
<i v-else class="el-icon-video-play" />
<legacy-el-icon v-if="loading" name="el-icon-loading" />
<legacy-el-icon v-else-if="isPlay" name="el-icon-video-pause" />
<legacy-el-icon v-else name="el-icon-video-play" />
<audio
ref="audio"
type="audio/mp3"
@@ -17,7 +17,7 @@
</div>
<div class="detail">
<div class="text">
<i class="el-icon-service" />
<legacy-el-icon name="el-icon-service" />
<span>{{ getCurrDuration }} / {{ getTotalDuration }}</span>
</div>
<div class="process">

View File

@@ -7,10 +7,14 @@
'full-screen': fullscreen,
}"
>
<legacy-el-icon
v-if="fullscreen"
name="el-icon-close"
@click="fullscreen = !fullscreen"
/>
<i
:class="
fullscreen ? 'el-icon-close' : 'iconfont icon-tubiao_chakangongyi'
"
v-else
class="iconfont icon-tubiao_chakangongyi"
@click="fullscreen = !fullscreen"
/>
<pre class="lum-scrollbar" v-html="formatCode(code, lang)" />

View File

@@ -9,7 +9,7 @@
</div>
<div class="tools flex-center">
<span class="flex-center pointer">
<i class="el-icon-plus" /> 加好友
<legacy-el-icon name="el-icon-plus" /> 加好友
</span>
</div>
</div>

View File

@@ -5,16 +5,13 @@
<div class="vheader">
<p>
{{ answer_mode == 1 ? "[多选投票]" : "[单选投票]" }}
<i
<legacy-el-icon
v-show="is_vote"
class="pointer"
:class="{
'el-icon-loading': refresh,
'el-icon-refresh': !refresh,
}"
:name="refresh ? 'el-icon-loading' : 'el-icon-refresh'"
title="刷新投票结果"
@click="loadRefresh"
></i>
/>
</p>
<p>{{ title }}</p>
</div>