From 36b71fe0d55eba005dafcb171afdd77b7cb32757 Mon Sep 17 00:00:00 2001 From: chenjiale Date: Wed, 24 Dec 2025 10:21:33 +0800 Subject: [PATCH] =?UTF-8?q?```=20feat(vite):=20=E9=85=8D=E7=BD=AEpurge-ico?= =?UTF-8?q?ns=E6=8F=92=E4=BB=B6=E6=94=AF=E6=8C=81=E6=9C=AC=E5=9C=B0?= =?UTF-8?q?=E5=9B=BE=E6=A0=87=E5=92=8C=E5=AE=89=E5=85=A8=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 导入iconify安全列表配置 - 配置purgeIcons插件使用本地图标源 - 添加included配置项以包含安全列表中的图标 fix(icon): 优化图标组件错误处理逻辑 - 简化图标加载失败时的DOM创建逻辑 - 统一错误状态下的图标显示方式 chore(icons): 替换项目中的图标为Ant Design图标 - 将模型列表页面的状态图标从Material Symbols替换为Ant Design图标 - 将日历图标从Solar替换为Ant Design图标 - 将通知页面的按钮图标从Solar替换为Ant Design图标 ``` --- build/vite/plugin/index.ts | 6 +++++- src/assets/iconify/safelist.ts | 3 +++ src/components/Icon/src/Icon.vue | 14 +++++++------- src/views/model/list/ModelCard.vue | 4 ++-- src/views/system/notify/my/index.vue | 4 ++-- 5 files changed, 19 insertions(+), 12 deletions(-) create mode 100644 src/assets/iconify/safelist.ts diff --git a/build/vite/plugin/index.ts b/build/vite/plugin/index.ts index 2da4059..bf75bf1 100644 --- a/build/vite/plugin/index.ts +++ b/build/vite/plugin/index.ts @@ -10,6 +10,7 @@ import { configHtmlPlugin } from './html' import { configCompressPlugin } from './compress' import { configVisualizerConfig } from './visualizer' import { configSvgIconsPlugin } from './svgSprite' +import { iconifySafelist } from '../../src/assets/iconify/safelist' export function createVitePlugins(viteEnv: ViteEnv, isBuild: boolean) { const { VITE_BUILD_COMPRESS, VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE } = viteEnv @@ -35,7 +36,10 @@ export function createVitePlugins(viteEnv: ViteEnv, isBuild: boolean) { vitePlugins.push(configSvgIconsPlugin(isBuild)) // vite-plugin-purge-icons - vitePlugins.push(purgeIcons()) + vitePlugins.push(purgeIcons({ + iconSource: 'local', + included: iconifySafelist, + })) // rollup-plugin-visualizer vitePlugins.push(configVisualizerConfig()) diff --git a/src/assets/iconify/safelist.ts b/src/assets/iconify/safelist.ts new file mode 100644 index 0000000..8956900 --- /dev/null +++ b/src/assets/iconify/safelist.ts @@ -0,0 +1,3 @@ +export const iconifySafelist: string[] = [ + // Add backend menu icon names here to keep them in offline builds. +] diff --git a/src/components/Icon/src/Icon.vue b/src/components/Icon/src/Icon.vue index b650884..6bbd134 100644 --- a/src/components/Icon/src/Icon.vue +++ b/src/components/Icon/src/Icon.vue @@ -47,14 +47,14 @@ async function update() { if (svg) { el.textContent = '' el.appendChild(svg) + return } - else { - const span = document.createElement('span') - span.className = 'iconify-missing' - span.title = icon - el.textContent = '' - el.appendChild(span) - } + + const span = document.createElement('span') + span.className = 'iconify-missing' + span.title = icon + el.textContent = '' + el.appendChild(span) } const getWrapStyle = computed((): CSSProperties => { diff --git a/src/views/model/list/ModelCard.vue b/src/views/model/list/ModelCard.vue index e886eef..29ce180 100644 --- a/src/views/model/list/ModelCard.vue +++ b/src/views/model/list/ModelCard.vue @@ -37,7 +37,7 @@ const modelCardList = ref>([]) const lastQuery = ref(null) const colors = ['#8dc63f', '#dbb09e'] const statusStr = ['未下装', '已下装'] -const statusIcons = ['material-symbols:lock-open', 'material-symbols:lock'] +const statusIcons = ['ant-design:unlock-outlined', 'ant-design:lock-outlined'] function buildQuery(value: any): ModelQueryParams { return { @@ -134,7 +134,7 @@ function goCreateModel() { {{ item.creator || '未知' }} - + {{ item.createTime || '--' }} diff --git a/src/views/system/notify/my/index.vue b/src/views/system/notify/my/index.vue index f6a29d0..aa25de3 100644 --- a/src/views/system/notify/my/index.vue +++ b/src/views/system/notify/my/index.vue @@ -91,10 +91,10 @@ function handleInfo(record: any) {